issue_comments
10,495 rows sorted by updated_at descending
This data as json, CSV (advanced)
issue >30
- Port Datasette to ASGI 42
- Authentication (and permissions) as a core concept 40
- await datasette.client.get(path) mechanism for executing internal requests 33
- Maintain an in-memory SQLite table of connected databases and their tables 32
- Ability to sort (and paginate) by column 31
- link_or_copy_directory() error - Invalid cross-device link 28
- Export to CSV 27
- base_url configuration setting 27
- Documentation with recommendations on running Datasette in production without using Docker 27
- Ability for a canned query to write to the database 26
- table.transform() method for advanced alter table 26
- Proof of concept for Datasette on AWS Lambda with EFS 25
- Redesign register_output_renderer callback 24
- Datasette Plugins 22
- "datasette insert" command and plugin hook 22
- table.extract(...) method and "sqlite-utils extract" command 21
- Redesign default .json format 21
- JavaScript plugin hooks mechanism similar to pluggy 21
- Handle spatialite geometry columns better 20
- "flash messages" mechanism 20
- Move CI to GitHub Issues 20
- load_template hook doesn't work for include/extends 20
- ?sort=colname~numeric to sort by by column cast to real 19
- Better way of representing binary data in .csv output 19
- Introspect if table is FTS4 or FTS5 19
- Ability to ship alpha and beta releases 18
- Magic parameters for canned queries 18
- datasette.client internal requests mechanism 18
- Facets 16
- Support "allow" block on root, databases and tables, not just queries 16
- …
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
752760054 | https://github.com/simonw/datasette/issues/983#issuecomment-752760054 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc2MDA1NA== | simonw 9599 | 2020-12-30T21:12:36Z | 2020-12-30T21:14:05Z | OWNER | I gotta admit that 262 byte version is pretty tempting, if it's going to end up in the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752759885 | https://github.com/simonw/datasette/issues/983#issuecomment-752759885 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc1OTg4NQ== | simonw 9599 | 2020-12-30T21:11:52Z | 2020-12-30T21:14:00Z | OWNER | 262 bytes if I remove the parameter introspection code, instead requiring plugin authors to specify the arguments they take:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752758802 | https://github.com/simonw/datasette/issues/983#issuecomment-752758802 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc1ODgwMg== | simonw 9599 | 2020-12-30T21:07:33Z | 2020-12-30T21:10:10Z | OWNER | Removing the
})();
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752757910 | https://github.com/simonw/datasette/issues/1165#issuecomment-752757910 | https://api.github.com/repos/simonw/datasette/issues/1165 | MDEyOklzc3VlQ29tbWVudDc1Mjc1NzkxMA== | simonw 9599 | 2020-12-30T21:04:18Z | 2020-12-30T21:04:18Z | OWNER | https://jestjs.io/ looks worth trying here. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for executing JavaScript unit tests 776635426 | |
752757289 | https://github.com/simonw/datasette/issues/983#issuecomment-752757289 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc1NzI4OQ== | simonw 9599 | 2020-12-30T21:02:20Z | 2020-12-30T21:02:20Z | OWNER | I'm going to need to add JavaScript unit tests for this new plugin system. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752757075 | https://github.com/simonw/datasette/issues/1164#issuecomment-752757075 | https://api.github.com/repos/simonw/datasette/issues/1164 | MDEyOklzc3VlQ29tbWVudDc1Mjc1NzA3NQ== | simonw 9599 | 2020-12-30T21:01:27Z | 2020-12-30T21:01:27Z | OWNER | I don't want Datasette contributors to need a working Node.js install to run the tests or work on Datasette unless they are explicitly working on the JavaScript. I think I'm going to do this with a unit test that runs only if That way if anyone checks in a change to JavaScript but forgets to run the minifier the tests will fail in CI. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for minifying JavaScript that ships with Datasette 776634318 | |
752756612 | https://github.com/simonw/datasette/issues/1164#issuecomment-752756612 | https://api.github.com/repos/simonw/datasette/issues/1164 | MDEyOklzc3VlQ29tbWVudDc1Mjc1NjYxMg== | simonw 9599 | 2020-12-30T20:59:54Z | 2020-12-30T20:59:54Z | OWNER | I tried a few different pure-Python JavaScript minifying libraries and none of them produced results as good as https://www.npmjs.com/package/uglify-js for the plugin code I'm considering in #983. So I think I'll need to rely on a Node.js tool for this. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for minifying JavaScript that ships with Datasette 776634318 | |
752750551 | https://github.com/simonw/datasette/issues/983#issuecomment-752750551 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc1MDU1MQ== | simonw 9599 | 2020-12-30T20:36:38Z | 2020-12-30T20:37:48Z | OWNER | This version minifies to 702 characters: ```javascript window.datasette = window.datasette || {}; window.datasette.plugins = (() => { var registry = {}; var definitions = {}; var stringify = JSON.stringify;
})(); ``` Or 701 characters using https://skalman.github.io/UglifyJS-online/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752749189 | https://github.com/simonw/datasette/issues/983#issuecomment-752749189 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc0OTE4OQ== | simonw 9599 | 2020-12-30T20:31:28Z | 2020-12-30T20:31:28Z | OWNER | Using raw string exceptions, |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752748496 | https://github.com/simonw/datasette/issues/983#issuecomment-752748496 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc0ODQ5Ng== | simonw 9599 | 2020-12-30T20:28:48Z | 2020-12-30T20:28:48Z | OWNER | If I'm going to minify it I'll need to figure out a build step in Datasette itself so that I can easily work on that minified version. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752747999 | https://github.com/simonw/datasette/issues/983#issuecomment-752747999 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc0Nzk5OQ== | simonw 9599 | 2020-12-30T20:27:00Z | 2020-12-30T20:27:00Z | OWNER | I need to decide how this code is going to be loaded. Putting it in a blocking Running it through https://javascript-minifier.com/ produces this, which is 855 characters - so maybe I could inline that into the header of the page?
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752747169 | https://github.com/simonw/datasette/issues/983#issuecomment-752747169 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc0NzE2OQ== | simonw 9599 | 2020-12-30T20:24:07Z | 2020-12-30T20:24:07Z | OWNER | This version adds
})();
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752744311 | https://github.com/simonw/datasette/issues/983#issuecomment-752744311 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc0NDMxMQ== | simonw 9599 | 2020-12-30T20:12:50Z | 2020-12-30T20:13:02Z | OWNER | This could work to define a plugin hook:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752744195 | https://github.com/simonw/datasette/issues/983#issuecomment-752744195 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc0NDE5NQ== | simonw 9599 | 2020-12-30T20:12:26Z | 2020-12-30T20:12:26Z | OWNER | This implementation doesn't have an equivalent of "hookspecs" which can identify if a registered plugin implementation matches a known signature. I should add that, it will provide a better developer experience if someone has a typo. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752742669 | https://github.com/simonw/datasette/issues/983#issuecomment-752742669 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1Mjc0MjY2OQ== | simonw 9599 | 2020-12-30T20:07:05Z | 2020-12-30T20:07:18Z | OWNER | Initial prototype: ```javascript window.datasette = {}; window.datasette.plugins = (function() { var registry = {};
})();
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752729035 | https://github.com/simonw/datasette/issues/983#issuecomment-752729035 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MjcyOTAzNQ== | simonw 9599 | 2020-12-30T19:15:56Z | 2020-12-30T19:16:44Z | OWNER | The
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752722863 | https://github.com/simonw/datasette/issues/983#issuecomment-752722863 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MjcyMjg2Mw== | simonw 9599 | 2020-12-30T18:52:39Z | 2020-12-30T18:52:39Z | OWNER | Then to call the plugins:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752721840 | https://github.com/simonw/datasette/issues/983#issuecomment-752721840 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MjcyMTg0MA== | simonw 9599 | 2020-12-30T18:48:53Z | 2020-12-30T18:51:51Z | OWNER | Potential design:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752721069 | https://github.com/simonw/datasette/issues/983#issuecomment-752721069 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MjcyMTA2OQ== | simonw 9599 | 2020-12-30T18:46:10Z | 2020-12-30T18:46:10Z | OWNER | Pluggy does dependency injection by introspecting the named arguments to the Python function, which I really like. That's tricker in JavaScript. It looks like the only way to introspect a function is to look at the Even more challenging: JavaScript developers love minifying their code, and minification can shorten the function parameter names. From https://code-maven.com/dependency-injection-in-angularjs it looks like Angular.js does dependency injection and solves this by letting you optionally provide a separate list of the arguments your function uses:
I can copy that approach: I'll introspect by default, but provide a documented mechanism for explicitly listing your parameter names so that if you know your plugin code will be minified you can use that instead. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752715412 | https://github.com/simonw/datasette/issues/983#issuecomment-752715412 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MjcxNTQxMg== | simonw 9599 | 2020-12-30T18:25:31Z | 2020-12-30T18:25:31Z | OWNER | I'm going to introduce a global |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752715236 | https://github.com/simonw/datasette/issues/983#issuecomment-752715236 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDc1MjcxNTIzNg== | simonw 9599 | 2020-12-30T18:24:54Z | 2020-12-30T18:24:54Z | OWNER | I think I'm going to try building a very lightweight clone of the core API design of Pluggy - not the advanced features, just the idea that plugins can register and a call to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
752714747 | https://github.com/simonw/datasette/issues/987#issuecomment-752714747 | https://api.github.com/repos/simonw/datasette/issues/987 | MDEyOklzc3VlQ29tbWVudDc1MjcxNDc0Nw== | simonw 9599 | 2020-12-30T18:23:08Z | 2020-12-30T18:23:20Z | OWNER | In terms of "places to put your plugin content", the simplest solution I can think of is something like this: ```html ``` Alternative designs:
I think the original option - an empty |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented HTML hooks for JavaScript plugin authors 712984738 | |
752697279 | https://github.com/simonw/datasette/issues/987#issuecomment-752697279 | https://api.github.com/repos/simonw/datasette/issues/987 | MDEyOklzc3VlQ29tbWVudDc1MjY5NzI3OQ== | simonw 9599 | 2020-12-30T17:23:27Z | 2020-12-30T17:23:32Z | OWNER | Related problem: right now if you're writing custom template it's not at all obvious how to write them such that visualization plugins like |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented HTML hooks for JavaScript plugin authors 712984738 | |
752696499 | https://github.com/simonw/datasette/issues/987#issuecomment-752696499 | https://api.github.com/repos/simonw/datasette/issues/987 | MDEyOklzc3VlQ29tbWVudDc1MjY5NjQ5OQ== | simonw 9599 | 2020-12-30T17:21:08Z | 2020-12-30T17:21:08Z | OWNER | More generally, I need to document certain areas of the page that JavaScript plugins are invited to append their content to - such that plugin authors can use them and feel confident that future changes to the Datasette templates won't break their plugins. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented HTML hooks for JavaScript plugin authors 712984738 | |
752275611 | https://github.com/simonw/datasette/issues/1160#issuecomment-752275611 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI3NTYxMQ== | simonw 9599 | 2020-12-29T23:32:04Z | 2020-12-29T23:32:04Z | OWNER | If I can get this working for CSV, TSV, JSON and JSON-NL that should be enough to exercise the API design pretty well across both streaming and non-streaming formats. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752274509 | https://github.com/simonw/datasette/issues/1160#issuecomment-752274509 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI3NDUwOQ== | simonw 9599 | 2020-12-29T23:26:02Z | 2020-12-29T23:26:02Z | OWNER | The documentation for this plugin hook is going to be pretty detailed, since it involves writing custom classes. I'll stick it all on the existing hooks page for the moment, but I should think about breaking up the plugin hook documentation into a page-per-hook in the future. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752274340 | https://github.com/simonw/datasette/issues/1163#issuecomment-752274340 | https://api.github.com/repos/simonw/datasette/issues/1163 | MDEyOklzc3VlQ29tbWVudDc1MjI3NDM0MA== | simonw 9599 | 2020-12-29T23:25:02Z | 2020-12-29T23:25:02Z | OWNER | This will be built on top of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert data.db url-to-csv" 776128565 | |
752274078 | https://github.com/simonw/datasette/issues/1160#issuecomment-752274078 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI3NDA3OA== | simonw 9599 | 2020-12-29T23:23:39Z | 2020-12-29T23:23:39Z | OWNER | If I design this right I can ship a full version of the command-line |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752273873 | https://github.com/simonw/datasette/issues/1160#issuecomment-752273873 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI3Mzg3Mw== | simonw 9599 | 2020-12-29T23:22:30Z | 2020-12-29T23:22:30Z | OWNER | How much of this should I get done in a branch before merging into The challenge here is the plugin hook design: ideally I don't want an incomplete plugin hook design in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752273400 | https://github.com/simonw/datasette/issues/1160#issuecomment-752273400 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI3MzQwMA== | simonw 9599 | 2020-12-29T23:19:46Z | 2020-12-29T23:19:46Z | OWNER | I'm going to break out some separate tickets. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752273306 | https://github.com/simonw/datasette/issues/1160#issuecomment-752273306 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI3MzMwNg== | simonw 9599 | 2020-12-29T23:19:15Z | 2020-12-29T23:19:15Z | OWNER | It would be nice if this abstraction could support progress bars as well. These won't necessarily work for every format - or they might work for things loaded from files but not things loaded over URLs (if the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752267905 | https://github.com/simonw/datasette/issues/1160#issuecomment-752267905 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI2NzkwNQ== | simonw 9599 | 2020-12-29T22:52:09Z | 2020-12-29T22:52:09Z | OWNER | What's the simplest thing that could possible work? I think it's |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752266076 | https://github.com/simonw/datasette/issues/1160#issuecomment-752266076 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI2NjA3Ng== | simonw 9599 | 2020-12-29T22:42:23Z | 2020-12-29T22:42:59Z | OWNER | Aside: maybe This would be useful for import mechanisms that are likely to need their own custom set of command-line options unique to that source. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752265600 | https://github.com/simonw/datasette/issues/1160#issuecomment-752265600 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI2NTYwMA== | simonw 9599 | 2020-12-29T22:39:56Z | 2020-12-29T22:39:56Z | OWNER | Does it definitely make sense to break this operation up into the code that turns the incoming format into a iterator of dictionaries, then the code that inserts those into the database using That seems right for simple imports, where the incoming file represents a sequence of records in a single table. But what about more complex formats? What if a format needs to be represented as multiple tables? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752259345 | https://github.com/simonw/datasette/issues/1160#issuecomment-752259345 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI1OTM0NQ== | simonw 9599 | 2020-12-29T22:11:54Z | 2020-12-29T22:11:54Z | OWNER | Important detail from https://docs.python.org/3/library/csv.html#csv.reader
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752257666 | https://github.com/simonw/datasette/issues/1160#issuecomment-752257666 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjI1NzY2Ng== | simonw 9599 | 2020-12-29T22:09:18Z | 2020-12-29T22:09:18Z | OWNER | Figuring out the API designI want to be able to support different formats, and be able to parse them into tables either streaming or in one go depending on if the format supports that. Ideally I want to be able to pull the first 1,024 bytes for the purpose of detecting the format, then replay those bytes again later. I'm considering this a stretch goal though. CSV is easy to parse as a stream - here’s how sqlite-utils does it:
Problem: using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752253095 | https://github.com/simonw/datasette/issues/1161#issuecomment-752253095 | https://api.github.com/repos/simonw/datasette/issues/1161 | MDEyOklzc3VlQ29tbWVudDc1MjI1MzA5NQ== | simonw 9599 | 2020-12-29T21:49:57Z | 2020-12-29T21:49:57Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update a whole bunch of links to datasette.io instead of datasette.readthedocs.io 776101101 | ||
752236520 | https://github.com/simonw/datasette/issues/1160#issuecomment-752236520 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjIzNjUyMA== | simonw 9599 | 2020-12-29T20:48:51Z | 2020-12-29T20:48:51Z | OWNER | It would be neat if |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
751925934 | https://github.com/simonw/datasette/issues/1160#issuecomment-751925934 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MTkyNTkzNA== | simonw 9599 | 2020-12-29T02:40:13Z | 2020-12-29T20:25:57Z | OWNER | Basic command design:
The options can include:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752208036 | https://github.com/simonw/datasette/issues/1160#issuecomment-752208036 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjIwODAzNg== | simonw 9599 | 2020-12-29T19:06:35Z | 2020-12-29T19:06:35Z | OWNER | If I'm going to execute 1000s of writes in an https://stackoverflow.com/a/36648102 and https://github.com/python/asyncio/issues/284 confirm that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752203909 | https://github.com/simonw/datasette/issues/1160#issuecomment-752203909 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MjIwMzkwOQ== | simonw 9599 | 2020-12-29T18:54:19Z | 2020-12-29T18:54:19Z | OWNER | More thoughts on this: the key mechanism that populates the tables needs to be an |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
752098906 | https://github.com/simonw/datasette/issues/417#issuecomment-752098906 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDc1MjA5ODkwNg== | psychemedia 82988 | 2020-12-29T14:34:30Z | 2020-12-29T14:34:50Z | CONTRIBUTOR | FWIW, I had a look at Not a production thing, just an experiment trying to explore what might be possible... |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
751947991 | https://github.com/simonw/datasette/issues/1160#issuecomment-751947991 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MTk0Nzk5MQ== | simonw 9599 | 2020-12-29T05:06:50Z | 2020-12-29T05:07:03Z | OWNER | Given the URL option could it be possible for plugins to "subscribe" to URLs that keep on streaming?
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
751946262 | https://github.com/simonw/datasette/issues/1160#issuecomment-751946262 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MTk0NjI2Mg== | simonw 9599 | 2020-12-29T04:56:12Z | 2020-12-29T04:56:32Z | OWNER | Potential design for this: a
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
751945094 | https://github.com/simonw/datasette/issues/1160#issuecomment-751945094 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MTk0NTA5NA== | simonw 9599 | 2020-12-29T04:48:11Z | 2020-12-29T04:48:11Z | OWNER | It would be pretty cool if you could launch Datasette directly against an insert-compatible file or URL without first having to load it into a SQLite database file. Or imagine being able to tail a log file and like that directly into a new Datasette process, which then runs a web server with the UI while simultaneously continuing to load new entries from that log into the in-memory SQLite database that it is serving... Not quite sure what that CLI interface would look like. Maybe treat that as a future stretch goal for the moment. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
751943837 | https://github.com/simonw/datasette/issues/1160#issuecomment-751943837 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MTk0MzgzNw== | simonw 9599 | 2020-12-29T04:40:30Z | 2020-12-29T04:40:30Z | OWNER | The It should accept more than one file name at a time for bulk inserts. if using a URL that URL will be passed to the method that decides if a plugin implementation can handle the import or not. This will allow plugins to register themselves for specific websites. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
751926437 | https://github.com/simonw/datasette/issues/1160#issuecomment-751926437 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MTkyNjQzNw== | simonw 9599 | 2020-12-29T02:43:21Z | 2020-12-29T02:43:37Z | OWNER | Default formats to support:
Each of these will be implemented as a default plugin. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
751926218 | https://github.com/simonw/datasette/issues/1160#issuecomment-751926218 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MTkyNjIxOA== | simonw 9599 | 2020-12-29T02:41:57Z | 2020-12-29T02:41:57Z | OWNER | Other names I considered:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
751926095 | https://github.com/simonw/datasette/issues/1160#issuecomment-751926095 | https://api.github.com/repos/simonw/datasette/issues/1160 | MDEyOklzc3VlQ29tbWVudDc1MTkyNjA5NQ== | simonw 9599 | 2020-12-29T02:41:15Z | 2020-12-29T02:41:15Z | OWNER | The UI can live at
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette insert" command and plugin hook 775666296 | |
751826749 | https://github.com/simonw/datasette/issues/675#issuecomment-751826749 | https://api.github.com/repos/simonw/datasette/issues/675 | MDEyOklzc3VlQ29tbWVudDc1MTgyNjc0OQ== | simonw 9599 | 2020-12-28T18:49:21Z | 2020-12-28T18:49:21Z | OWNER | That |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
--cp option for datasette publish and datasette package for shipping additional files and directories 567902704 | |
751826621 | https://github.com/simonw/datasette/issues/675#issuecomment-751826621 | https://api.github.com/repos/simonw/datasette/issues/675 | MDEyOklzc3VlQ29tbWVudDc1MTgyNjYyMQ== | simonw 9599 | 2020-12-28T18:48:51Z | 2020-12-28T18:48:51Z | OWNER | I could make
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
--cp option for datasette publish and datasette package for shipping additional files and directories 567902704 | |
751504136 | https://github.com/simonw/datasette/issues/417#issuecomment-751504136 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDc1MTUwNDEzNg== | drewda 212369 | 2020-12-27T19:02:06Z | 2020-12-27T19:02:06Z | NONE | Very much looking forward to seeing this functionality come together. This is probably out-of-scope for an initial release, but in the future it could be useful to also think of how to run this is a container'ized context. For example, an immutable datasette container that points to an S3 bucket of SQLite DBs or CSVs. Or an immutable datasette container pointing to a NFS volume elsewhere on a Kubernetes cluster. |
{ "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
751476406 | https://github.com/simonw/datasette/issues/1150#issuecomment-751476406 | https://api.github.com/repos/simonw/datasette/issues/1150 | MDEyOklzc3VlQ29tbWVudDc1MTQ3NjQwNg== | noklam 18221871 | 2020-12-27T14:51:39Z | 2020-12-27T14:51:39Z | NONE | I like the idea of _internal, it's a nice way to get a data catalog quickly. I wonder if this trick applies to db other than SQLite. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Maintain an in-memory SQLite table of connected databases and their tables 770436876 | |
751375487 | https://github.com/dogsheep/github-to-sqlite/pull/59#issuecomment-751375487 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/59 | MDEyOklzc3VlQ29tbWVudDc1MTM3NTQ4Nw== | frosencrantz 631242 | 2020-12-26T17:08:44Z | 2020-12-26T17:08:44Z | CONTRIBUTOR | Hi @simonw, do I need to do anything else for this PR to be considered to be included? I've tried using this project and it is quite nice to be able to explore a repository, but noticed that a couple commands don't allow you to use authorization from the environment variable. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Remove unneeded exists=True for -a/--auth flag. 771872303 | |
751127485 | https://github.com/simonw/datasette/issues/417#issuecomment-751127485 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDc1MTEyNzQ4NQ== | simonw 9599 | 2020-12-24T22:58:05Z | 2020-12-24T22:58:05Z | OWNER | That's a great idea. I'd ruled that out because working with the different operating system versions of those is tricky, but if |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
751127384 | https://github.com/simonw/datasette/issues/417#issuecomment-751127384 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDc1MTEyNzM4NA== | dyllan-to-you 1279360 | 2020-12-24T22:56:48Z | 2020-12-24T22:56:48Z | NONE | Instead of scanning the directory every 10s, have you considered listening for the native system events to notify you of updates? I think python has a nice module to do this for you called watchdog |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
751125270 | https://github.com/dogsheep/dogsheep-photos/issues/28#issuecomment-751125270 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/28 | MDEyOklzc3VlQ29tbWVudDc1MTEyNTI3MA== | jmelloy 129786 | 2020-12-24T22:26:22Z | 2020-12-24T22:26:22Z | NONE | This comes around if you’ve run the photo export without running an s3 upload. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Invalid SQL no such table: main.uploads 624490929 | |
750849460 | https://github.com/simonw/datasette/pull/1159#issuecomment-750849460 | https://api.github.com/repos/simonw/datasette/issues/1159 | MDEyOklzc3VlQ29tbWVudDc1MDg0OTQ2MA== | codecov[bot] 22429695 | 2020-12-24T11:07:35Z | 2020-12-24T11:29:21Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1159 +/-=======================================
Coverage 91.55% 91.55% Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve the display of facets information 774332247 | |
750390741 | https://github.com/simonw/datasette/pull/1158#issuecomment-750390741 | https://api.github.com/repos/simonw/datasette/issues/1158 | MDEyOklzc3VlQ29tbWVudDc1MDM5MDc0MQ== | simonw 9599 | 2020-12-23T17:05:32Z | 2020-12-23T17:05:32Z | OWNER | Thanks for this! I'm fine keeping the |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Modernize code to Python 3.6+ 773913793 | |
750389683 | https://github.com/simonw/datasette/pull/1158#issuecomment-750389683 | https://api.github.com/repos/simonw/datasette/issues/1158 | MDEyOklzc3VlQ29tbWVudDc1MDM4OTY4Mw== | eumiro 6774676 | 2020-12-23T17:02:50Z | 2020-12-23T17:02:50Z | CONTRIBUTOR | The dict/set suggestion comes from The rest comes from PyCharm's Inspect code function. I reviewed all the suggestions and fixed a thing or two, such as leading/trailing spaces in the docstrings or turned around the chained conditions. Then I tried to convert all |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Modernize code to Python 3.6+ 773913793 | |
750373603 | https://github.com/simonw/datasette/pull/1158#issuecomment-750373603 | https://api.github.com/repos/simonw/datasette/issues/1158 | MDEyOklzc3VlQ29tbWVudDc1MDM3MzYwMw== | simonw 9599 | 2020-12-23T16:26:21Z | 2020-12-23T16:26:21Z | OWNER | Did you use a tool to find these or are they all from manual code inspection? They look good - I particularly like the set/dict literals. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Modernize code to Python 3.6+ 773913793 | |
750373496 | https://github.com/simonw/datasette/pull/1158#issuecomment-750373496 | https://api.github.com/repos/simonw/datasette/issues/1158 | MDEyOklzc3VlQ29tbWVudDc1MDM3MzQ5Ng== | codecov[bot] 22429695 | 2020-12-23T16:26:06Z | 2020-12-23T16:26:06Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1158 +/-=======================================
Coverage 91.55% 91.55% | Impacted Files | Coverage Δ | |
|---|---|---|
| datasette/cli.py | Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Modernize code to Python 3.6+ 773913793 | |
749845797 | https://github.com/simonw/datasette/issues/1099#issuecomment-749845797 | https://api.github.com/repos/simonw/datasette/issues/1099 | MDEyOklzc3VlQ29tbWVudDc0OTg0NTc5Nw== | simonw 9599 | 2020-12-23T00:13:29Z | 2020-12-23T00:14:25Z | OWNER | Also need to solve displaying these links in the opposite direction: https://latest.datasette.io/_internal/tables/fixtures,facet_cities That page should link to lists of records in columns, foreign_keys and indexes - like this example: https://latest.datasette.io/fixtures/roadside_attractions/1 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support linking to compound foreign keys 743371103 | |
748206874 | https://github.com/simonw/datasette/issues/1152#issuecomment-748206874 | https://api.github.com/repos/simonw/datasette/issues/1152 | MDEyOklzc3VlQ29tbWVudDc0ODIwNjg3NA== | simonw 9599 | 2020-12-18T17:03:00Z | 2020-12-22T23:58:04Z | OWNER | Another permissions thought: what if ALL Datasette permissions were default-deny, and plugins could only grant permission to things, not block permission? Right now a plugin can reply If everything in Datasette was default-deny then the user could use More importantly: plugins could return SQL statements that select a list of databases/tables the user is allowed access to. These could then be combined with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Efficiently calculate list of databases/tables a user can view 770598024 | |
747920515 | https://github.com/simonw/datasette/issues/1152#issuecomment-747920515 | https://api.github.com/repos/simonw/datasette/issues/1152 | MDEyOklzc3VlQ29tbWVudDc0NzkyMDUxNQ== | simonw 9599 | 2020-12-18T07:29:21Z | 2020-12-22T23:57:29Z | OWNER | Could I solve this using a configured canned query against the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Efficiently calculate list of databases/tables a user can view 770598024 | |
749771231 | https://github.com/simonw/datasette/issues/1099#issuecomment-749771231 | https://api.github.com/repos/simonw/datasette/issues/1099 | MDEyOklzc3VlQ29tbWVudDc0OTc3MTIzMQ== | simonw 9599 | 2020-12-22T20:54:25Z | 2020-12-22T20:54:25Z | OWNER | https://latest.datasette.io/_internal/foreign_keys (use https://latest.datasette.io/login-as-root first) is now a compound foreign key table:
My original idea for compound foreign keys was to turn both of those columns into links, but that doesn't fit here because |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support linking to compound foreign keys 743371103 | |
749750995 | https://github.com/simonw/datasette/issues/1152#issuecomment-749750995 | https://api.github.com/repos/simonw/datasette/issues/1152 | MDEyOklzc3VlQ29tbWVudDc0OTc1MDk5NQ== | simonw 9599 | 2020-12-22T20:05:30Z | 2020-12-22T20:05:30Z | OWNER | 1150 is landed now, which means there's a new, hidden |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Efficiently calculate list of databases/tables a user can view 770598024 | |
749749948 | https://github.com/simonw/datasette/issues/509#issuecomment-749749948 | https://api.github.com/repos/simonw/datasette/issues/509 | MDEyOklzc3VlQ29tbWVudDc0OTc0OTk0OA== | simonw 9599 | 2020-12-22T20:03:10Z | 2020-12-22T20:03:10Z | OWNER | If you open multiple files with the same filename, e.g. like this:
You'll now get this: |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 } |
Support opening multiple databases with the same stem 456568880 | |
749738241 | https://github.com/simonw/datasette/issues/509#issuecomment-749738241 | https://api.github.com/repos/simonw/datasette/issues/509 | MDEyOklzc3VlQ29tbWVudDc0OTczODI0MQ== | simonw 9599 | 2020-12-22T19:38:14Z | 2020-12-22T19:38:14Z | OWNER | I'm fixing this in #1155. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support opening multiple databases with the same stem 456568880 | |
749723557 | https://github.com/simonw/datasette/issues/1155#issuecomment-749723557 | https://api.github.com/repos/simonw/datasette/issues/1155 | MDEyOklzc3VlQ29tbWVudDc0OTcyMzU1Nw== | simonw 9599 | 2020-12-22T19:08:27Z | 2020-12-22T19:08:27Z | OWNER | I'm going to have the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better internal database_name for _internal database 771216293 | |
748356492 | https://github.com/simonw/datasette/issues/1155#issuecomment-748356492 | https://api.github.com/repos/simonw/datasette/issues/1155 | MDEyOklzc3VlQ29tbWVudDc0ODM1NjQ5Mg== | simonw 9599 | 2020-12-18T22:49:32Z | 2020-12-22T01:13:05Z | OWNER | There's some messy code that needs fixing here. The While fixing this I should fix the issue where Datasette gets confused by multiple databases with the same stem: https://github.com/simonw/datasette/issues/509 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better internal database_name for _internal database 771216293 | |
749179460 | https://github.com/simonw/datasette/issues/1157#issuecomment-749179460 | https://api.github.com/repos/simonw/datasette/issues/1157 | MDEyOklzc3VlQ29tbWVudDc0OTE3OTQ2MA== | simonw 9599 | 2020-12-21T20:24:19Z | 2020-12-21T20:24:19Z | OWNER | Three places to fix: https://github.com/simonw/datasette/blob/dcdfb2c301341d45b66683e3e3be72f9c7585b2f/datasette/utils/init.py#L139-L152 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use time.perf_counter() instead of time.time() to measure performance 772438273 | |
749176936 | https://github.com/simonw/datasette/issues/1155#issuecomment-749176936 | https://api.github.com/repos/simonw/datasette/issues/1155 | MDEyOklzc3VlQ29tbWVudDc0OTE3NjkzNg== | simonw 9599 | 2020-12-21T20:18:15Z | 2020-12-21T20:18:15Z | OWNER | Fun query:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better internal database_name for _internal database 771216293 | |
749170608 | https://github.com/simonw/datasette/issues/1155#issuecomment-749170608 | https://api.github.com/repos/simonw/datasette/issues/1155 | MDEyOklzc3VlQ29tbWVudDc0OTE3MDYwOA== | simonw 9599 | 2020-12-21T20:01:47Z | 2020-12-21T20:01:47Z | OWNER | I removed that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better internal database_name for _internal database 771216293 | |
749158111 | https://github.com/simonw/datasette/issues/1156#issuecomment-749158111 | https://api.github.com/repos/simonw/datasette/issues/1156 | MDEyOklzc3VlQ29tbWVudDc0OTE1ODExMQ== | simonw 9599 | 2020-12-21T19:33:45Z | 2020-12-21T19:33:45Z | OWNER | One reason for this change: it means I can use that database for more stuff. I've been thinking about moving metadata storage there for example, which fits a database called |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename _schemas to _internal 772408750 | |
748562330 | https://github.com/dogsheep/dogsheep-photos/pull/31#issuecomment-748562330 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/31 | MDEyOklzc3VlQ29tbWVudDc0ODU2MjMzMA== | RhetTbull 41546558 | 2020-12-20T04:45:08Z | 2020-12-20T04:45:08Z | CONTRIBUTOR | Fixes the issue mentioned here: https://github.com/dogsheep/dogsheep-photos/issues/15#issuecomment-748436115 |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update for Big Sur 771511344 | |
748562288 | https://github.com/dogsheep/dogsheep-photos/issues/15#issuecomment-748562288 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/15 | MDEyOklzc3VlQ29tbWVudDc0ODU2MjI4OA== | RhetTbull 41546558 | 2020-12-20T04:44:22Z | 2020-12-20T04:44:22Z | CONTRIBUTOR | @nickvazz @simonw I opened a PR that replaces the SQL for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose scores from ZCOMPUTEDASSETATTRIBUTES 612151767 | |
748436779 | https://github.com/dogsheep/dogsheep-photos/issues/15#issuecomment-748436779 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/15 | MDEyOklzc3VlQ29tbWVudDc0ODQzNjc3OQ== | RhetTbull 41546558 | 2020-12-19T07:49:00Z | 2020-12-19T07:49:00Z | CONTRIBUTOR | @nickvazz ZGENERICASSET changed to ZASSET in Big Sur. Here's a list of other changes to the schema in Big Sur: https://github.com/RhetTbull/osxphotos/wiki/Changes-in-Photos-6---Big-Sur |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose scores from ZCOMPUTEDASSETATTRIBUTES 612151767 | |
748436115 | https://github.com/dogsheep/dogsheep-photos/issues/15#issuecomment-748436115 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/15 | MDEyOklzc3VlQ29tbWVudDc0ODQzNjExNQ== | nickvazz 8573886 | 2020-12-19T07:43:38Z | 2020-12-19T07:47:36Z | NONE | Hey Simon! I really enjoy datasette so far, just started trying it out today following your iPhone photos example. I am not sure if you had run into this or not, but it seems like they might have changed one of the column names from
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose scores from ZCOMPUTEDASSETATTRIBUTES 612151767 | |
748436453 | https://github.com/dogsheep/twitter-to-sqlite/issues/53#issuecomment-748436453 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/53 | MDEyOklzc3VlQ29tbWVudDc0ODQzNjQ1Mw== | anotherjesse 27 | 2020-12-19T07:47:01Z | 2020-12-19T07:47:01Z | NONE | I think this should probably be closed as won't fix. Attempting to make a patch for this I realized that the since_id would limit to tweets posted since that since_id, not when it was favorited. So favoriting something in the older would be missed if you used Better to just use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
--since support for favorites 771324837 | |
748436195 | https://github.com/dogsheep/dogsheep-photos/issues/21#issuecomment-748436195 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/21 | MDEyOklzc3VlQ29tbWVudDc0ODQzNjE5NQ== | nickvazz 8573886 | 2020-12-19T07:44:32Z | 2020-12-19T07:44:49Z | NONE | I have also run into this a bit, would it be possible to post your |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
bpylist.archiver.CircularReference: archive has a cycle with uid(13) 615474990 | |
748426877 | https://github.com/dogsheep/dogsheep-beta/issues/31#issuecomment-748426877 | https://api.github.com/repos/dogsheep/dogsheep-beta/issues/31 | MDEyOklzc3VlQ29tbWVudDc0ODQyNjg3Nw== | simonw 9599 | 2020-12-19T06:16:11Z | 2020-12-19T06:16:11Z | MEMBER | Here's why:
But the error being raised here is:
I'm going to attempt the escaped on on every error. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Searching for "github-to-sqlite" throws an error 771316301 | |
748426663 | https://github.com/dogsheep/dogsheep-beta/issues/31#issuecomment-748426663 | https://api.github.com/repos/dogsheep/dogsheep-beta/issues/31 | MDEyOklzc3VlQ29tbWVudDc0ODQyNjY2Mw== | simonw 9599 | 2020-12-19T06:14:06Z | 2020-12-19T06:14:06Z | MEMBER | Looks like I already do that here: https://github.com/dogsheep/dogsheep-beta/blob/9ba4401017ac24ffa3bc1db38e0910ea49de7616/dogsheep_beta/init.py#L141-L146 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Searching for "github-to-sqlite" throws an error 771316301 | |
748426581 | https://github.com/dogsheep/dogsheep-beta/issues/31#issuecomment-748426581 | https://api.github.com/repos/dogsheep/dogsheep-beta/issues/31 | MDEyOklzc3VlQ29tbWVudDc0ODQyNjU4MQ== | simonw 9599 | 2020-12-19T06:13:17Z | 2020-12-19T06:13:17Z | MEMBER | One fix for this could be to try running the raw query, but if it throws an error run it again with the query escaped. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Searching for "github-to-sqlite" throws an error 771316301 | |
748426501 | https://github.com/dogsheep/dogsheep-beta/issues/31#issuecomment-748426501 | https://api.github.com/repos/dogsheep/dogsheep-beta/issues/31 | MDEyOklzc3VlQ29tbWVudDc0ODQyNjUwMQ== | simonw 9599 | 2020-12-19T06:12:22Z | 2020-12-19T06:12:22Z | MEMBER | I deliberately added support for advanced FTS in https://github.com/dogsheep/dogsheep-beta/commit/cbb2491b85d7ff416d6d429b60109e6c2d6d50b9 for #13 but that's the cause of this bug. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Searching for "github-to-sqlite" throws an error 771316301 | |
748397998 | https://github.com/simonw/datasette/issues/1155#issuecomment-748397998 | https://api.github.com/repos/simonw/datasette/issues/1155 | MDEyOklzc3VlQ29tbWVudDc0ODM5Nzk5OA== | simonw 9599 | 2020-12-19T01:28:18Z | 2020-12-19T01:28:18Z | OWNER |
On the console:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better internal database_name for _internal database 771216293 | |
748368660 | https://github.com/simonw/datasette/issues/1155#issuecomment-748368660 | https://api.github.com/repos/simonw/datasette/issues/1155 | MDEyOklzc3VlQ29tbWVudDc0ODM2ODY2MA== | simonw 9599 | 2020-12-18T23:18:04Z | 2020-12-19T01:12:00Z | OWNER | A |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better internal database_name for _internal database 771216293 | |
748368938 | https://github.com/simonw/datasette/issues/1155#issuecomment-748368938 | https://api.github.com/repos/simonw/datasette/issues/1155 | MDEyOklzc3VlQ29tbWVudDc0ODM2ODkzOA== | simonw 9599 | 2020-12-18T23:19:04Z | 2020-12-18T23:19:04Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better internal database_name for _internal database 771216293 | |
748368384 | https://github.com/simonw/datasette/issues/1155#issuecomment-748368384 | https://api.github.com/repos/simonw/datasette/issues/1155 | MDEyOklzc3VlQ29tbWVudDc0ODM2ODM4NA== | simonw 9599 | 2020-12-18T23:17:00Z | 2020-12-18T23:17:00Z | OWNER | Here's the commit where I added it. https://github.com/simonw/datasette/commit/9743e1d91b5f0a2b3c1c0bd6ffce8739341f43c4 - I didn't yet have the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better internal database_name for _internal database 771216293 | |
748367922 | https://github.com/simonw/datasette/issues/1155#issuecomment-748367922 | https://api.github.com/repos/simonw/datasette/issues/1155 | MDEyOklzc3VlQ29tbWVudDc0ODM2NzkyMg== | simonw 9599 | 2020-12-18T23:15:24Z | 2020-12-18T23:15:24Z | OWNER | The code for building up that I'm not sure why I wrote it this way, instead of just calling |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better internal database_name for _internal database 771216293 | |
748356637 | https://github.com/simonw/datasette/issues/509#issuecomment-748356637 | https://api.github.com/repos/simonw/datasette/issues/509 | MDEyOklzc3VlQ29tbWVudDc0ODM1NjYzNw== | simonw 9599 | 2020-12-18T22:50:03Z | 2020-12-18T22:50:03Z | OWNER | Related problem caused by the new |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support opening multiple databases with the same stem 456568880 | |
748354841 | https://github.com/simonw/datasette/issues/1150#issuecomment-748354841 | https://api.github.com/repos/simonw/datasette/issues/1150 | MDEyOklzc3VlQ29tbWVudDc0ODM1NDg0MQ== | simonw 9599 | 2020-12-18T22:43:49Z | 2020-12-18T22:43:49Z | OWNER | For a demo, visit https://latest.datasette.io/login-as-root and then hit https://latest.datasette.io/_schemas |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Maintain an in-memory SQLite table of connected databases and their tables 770436876 | |
748352106 | https://github.com/simonw/datasette/issues/1150#issuecomment-748352106 | https://api.github.com/repos/simonw/datasette/issues/1150 | MDEyOklzc3VlQ29tbWVudDc0ODM1MjEwNg== | simonw 9599 | 2020-12-18T22:34:40Z | 2020-12-18T22:34:40Z | OWNER | Needs documentation, but I can wait to write that until I've tested out the feature a bit more. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Maintain an in-memory SQLite table of connected databases and their tables 770436876 | |
748351350 | https://github.com/simonw/datasette/issues/1150#issuecomment-748351350 | https://api.github.com/repos/simonw/datasette/issues/1150 | MDEyOklzc3VlQ29tbWVudDc0ODM1MTM1MA== | simonw 9599 | 2020-12-18T22:32:13Z | 2020-12-18T22:32:13Z | OWNER | Getting all the tests to pass is tricky because this adds a whole extra database to Datasette - and there's various code that loops through |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Maintain an in-memory SQLite table of connected databases and their tables 770436876 | |
748305976 | https://github.com/simonw/datasette/issues/493#issuecomment-748305976 | https://api.github.com/repos/simonw/datasette/issues/493 | MDEyOklzc3VlQ29tbWVudDc0ODMwNTk3Ng== | jefftriplett 50527 | 2020-12-18T20:34:39Z | 2020-12-18T20:34:39Z | CONTRIBUTOR | I can't keep up with the renaming contexts, but I like having the ability to run datasette+ datasette-ripgrep against different configs:
I have one for all of my code and one per client who has lots of code. So as long as I can point to datasette to something, it's easy to work with. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename metadata.json to config.json 449886319 | |
748260875 | https://github.com/simonw/datasette/issues/1150#issuecomment-748260875 | https://api.github.com/repos/simonw/datasette/issues/1150 | MDEyOklzc3VlQ29tbWVudDc0ODI2MDg3NQ== | simonw 9599 | 2020-12-18T18:55:12Z | 2020-12-18T18:55:12Z | OWNER | I'm going to move the code into a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Maintain an in-memory SQLite table of connected databases and their tables 770436876 | |
748260118 | https://github.com/simonw/datasette/issues/1150#issuecomment-748260118 | https://api.github.com/repos/simonw/datasette/issues/1150 | MDEyOklzc3VlQ29tbWVudDc0ODI2MDExOA== | simonw 9599 | 2020-12-18T18:54:12Z | 2020-12-18T18:54:12Z | OWNER | I'm going to tidy this up and land it. A couple of additional decisions:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Maintain an in-memory SQLite table of connected databases and their tables 770436876 | |
747966232 | https://github.com/simonw/datasette/issues/493#issuecomment-747966232 | https://api.github.com/repos/simonw/datasette/issues/493 | MDEyOklzc3VlQ29tbWVudDc0Nzk2NjIzMg== | simonw 9599 | 2020-12-18T09:19:41Z | 2020-12-18T09:19:41Z | OWNER | Is there any reason to keep |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename metadata.json to config.json 449886319 | |
747921195 | https://github.com/simonw/datasette/issues/1152#issuecomment-747921195 | https://api.github.com/repos/simonw/datasette/issues/1152 | MDEyOklzc3VlQ29tbWVudDc0NzkyMTE5NQ== | simonw 9599 | 2020-12-18T07:31:25Z | 2020-12-18T07:31:25Z | OWNER | It's also a really good fit for the new mechanism that's coming together in #1150. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Efficiently calculate list of databases/tables a user can view 770598024 | |
747920852 | https://github.com/simonw/datasette/issues/1152#issuecomment-747920852 | https://api.github.com/repos/simonw/datasette/issues/1152 | MDEyOklzc3VlQ29tbWVudDc0NzkyMDg1Mg== | simonw 9599 | 2020-12-18T07:30:22Z | 2020-12-18T07:30:22Z | OWNER | Redefining all Datasette permissions in terms of SQL queries that return the set of databases and tables that the user is allowed to interact with does feel VERY Datasette-y. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Efficiently calculate list of databases/tables a user can view 770598024 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
user >30