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
- 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 26
- Ability for a canned query to write to the database 26
- Proof of concept for Datasette on AWS Lambda with EFS 25
- Redesign register_output_renderer callback 24
- Datasette Plugins 22
- "flash messages" mechanism 20
- Move CI to GitHub Issues 20
- Handle spatialite geometry columns better 19
- Ability to ship alpha and beta releases 18
- Magic parameters for canned queries 18
- await datasette.client.get(path) mechanism for executing internal requests 17
- Facets 16
- Support "allow" block on root, databases and tables, not just queries 16
- Database page loads too slowly with many large tables (due to table counts) 16
- Bug: Sort by column with NULL in next_page URL 15
- Support cross-database joins 15
- The ".upsert()" method is misnamed 15
- --dirs option for scanning directories for SQLite databases 15
- Document (and reconsider design of) Database.execute() and Database.execute_against_connection_in_thread() 15
- latest.datasette.io is no longer updating 15
- Ability to customize presentation of specific columns in HTML view 14
- Allow plugins to define additional URL routes and views 14
- Mechanism for customizing the SQL used to select specific columns in the table view 14
- .execute_write() and .execute_write_fn() methods on Database 14
- …
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
693004572 | https://github.com/simonw/datasette/issues/943#issuecomment-693004572 | https://api.github.com/repos/simonw/datasette/issues/943 | MDEyOklzc3VlQ29tbWVudDY5MzAwNDU3Mg== | simonw 9599 | 2020-09-15T22:05:39Z | 2020-09-15T22:05:39Z | OWNER | Maybe these methods become the way most Datasette tests are written, replacing the existing |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
await datasette.client.get(path) mechanism for executing internal requests 681375466 | |
693004296 | https://github.com/simonw/datasette/issues/943#issuecomment-693004296 | https://api.github.com/repos/simonw/datasette/issues/943 | MDEyOklzc3VlQ29tbWVudDY5MzAwNDI5Ng== | simonw 9599 | 2020-09-15T22:04:54Z | 2020-09-15T22:04:54Z | OWNER | So what should I do about streaming responses? I could deliberately ignore them - through an exception if you attempt to run I could load the entire response into memory and return it as a wrapped object. I could support some kind of asynchronous iterator mechanism. This would be pretty elegant if I could decide the right syntax for it - it would allow plugins to take advantage of other internal URLs that return streaming content without needing to load that content entirely into memory in order to process it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
await datasette.client.get(path) mechanism for executing internal requests 681375466 | |
693003652 | https://github.com/simonw/datasette/issues/943#issuecomment-693003652 | https://api.github.com/repos/simonw/datasette/issues/943 | MDEyOklzc3VlQ29tbWVudDY5MzAwMzY1Mg== | simonw 9599 | 2020-09-15T22:03:08Z | 2020-09-15T22:03:08Z | OWNER | I'm not going to mess around with formats - you'll get back the exact response that a web client would receive. Question: what should the response object look like? e.g. if you do:
What should I could reuse the Datasette |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
await datasette.client.get(path) mechanism for executing internal requests 681375466 | |
693001937 | https://github.com/simonw/datasette/issues/891#issuecomment-693001937 | https://api.github.com/repos/simonw/datasette/issues/891 | MDEyOklzc3VlQ29tbWVudDY5MzAwMTkzNw== | simonw 9599 | 2020-09-15T21:58:56Z | 2020-09-15T21:58:56Z | OWNER | Here's what that looks like:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider using enable_callback_tracebacks(True) 653529088 | |
693000522 | https://github.com/simonw/datasette/issues/891#issuecomment-693000522 | https://api.github.com/repos/simonw/datasette/issues/891 | MDEyOklzc3VlQ29tbWVudDY5MzAwMDUyMg== | simonw 9599 | 2020-09-15T21:55:11Z | 2020-09-15T21:55:11Z | OWNER | I'm going to turn this on. If people complain about it I can turn it off again (or make it a configuration setting). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider using enable_callback_tracebacks(True) 653529088 | |
692999893 | https://github.com/simonw/datasette/issues/891#issuecomment-692999893 | https://api.github.com/repos/simonw/datasette/issues/891 | MDEyOklzc3VlQ29tbWVudDY5Mjk5OTg5Mw== | simonw 9599 | 2020-09-15T21:53:36Z | 2020-09-15T21:53:36Z | OWNER | Here's the commit (from 15 years ago) where
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider using enable_callback_tracebacks(True) 653529088 | |
692998061 | https://github.com/simonw/datasette/issues/891#issuecomment-692998061 | https://api.github.com/repos/simonw/datasette/issues/891 | MDEyOklzc3VlQ29tbWVudDY5Mjk5ODA2MQ== | simonw 9599 | 2020-09-15T21:49:03Z | 2020-09-15T21:49:03Z | OWNER | I've been trying to figure out why this is an optional setting that defaults to off. I think it's because it writes directly to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider using enable_callback_tracebacks(True) 653529088 | |
692968792 | https://github.com/simonw/datasette/issues/891#issuecomment-692968792 | https://api.github.com/repos/simonw/datasette/issues/891 | MDEyOklzc3VlQ29tbWVudDY5Mjk2ODc5Mg== | simonw 9599 | 2020-09-15T20:44:15Z | 2020-09-15T20:44:15Z | OWNER | https://github.com/peter-wangxu/persist-queue/issues/74 warns that this might not work with PyPy. I could solve that with:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider using enable_callback_tracebacks(True) 653529088 | |
692967733 | https://github.com/simonw/datasette/issues/877#issuecomment-692967733 | https://api.github.com/repos/simonw/datasette/issues/877 | MDEyOklzc3VlQ29tbWVudDY5Mjk2NzczMw== | simonw 9599 | 2020-09-15T20:42:04Z | 2020-09-15T20:42:04Z | OWNER | I'm not going to drop CSRF protection - it's still needed for older browsers - but I have relaxed the circumstances under which it is applied. It only applies to requests that include cookies for example, so API clients that don't send cookies don't need to worry about it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider dropping explicit CSRF protection entirely? 648421105 | |
692967123 | https://github.com/simonw/datasette/issues/889#issuecomment-692967123 | https://api.github.com/repos/simonw/datasette/issues/889 | MDEyOklzc3VlQ29tbWVudDY5Mjk2NzEyMw== | simonw 9599 | 2020-09-15T20:40:52Z | 2020-09-15T20:40:52Z | OWNER | Thanks - I've fixed this in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
asgi_wrapper plugin hook is crashing at startup 649907676 | |
692966625 | https://github.com/simonw/datasette/issues/888#issuecomment-692966625 | https://api.github.com/repos/simonw/datasette/issues/888 | MDEyOklzc3VlQ29tbWVudDY5Mjk2NjYyNQ== | simonw 9599 | 2020-09-15T20:39:49Z | 2020-09-15T20:39:49Z | OWNER | Thanks, I've fixed that now. It only affected the GitHub release notes - the ones at https://docs.datasette.io/en/stable/changelog.html#v0-45 had the correct links. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
URLs in release notes point to 127.0.0.1 649702801 | |
692965761 | https://github.com/simonw/datasette/issues/634#issuecomment-692965761 | https://api.github.com/repos/simonw/datasette/issues/634 | MDEyOklzc3VlQ29tbWVudDY5Mjk2NTc2MQ== | simonw 9599 | 2020-09-15T20:37:58Z | 2020-09-15T20:37:58Z | OWNER | I fixed this in 5e0b72247ecab4ce0fcec599b77a83d73a480872 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Don't run tests twice when releasing a tag 522352520 | |
692965391 | https://github.com/simonw/datasette/issues/849#issuecomment-692965391 | https://api.github.com/repos/simonw/datasette/issues/849 | MDEyOklzc3VlQ29tbWVudDY5Mjk2NTM5MQ== | simonw 9599 | 2020-09-15T20:37:14Z | 2020-09-15T20:37:14Z | OWNER | I've been running on |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename master branch to main 639072811 | |
692965022 | https://github.com/simonw/datasette/issues/956#issuecomment-692965022 | https://api.github.com/repos/simonw/datasette/issues/956 | MDEyOklzc3VlQ29tbWVudDY5Mjk2NTAyMg== | simonw 9599 | 2020-09-15T20:36:34Z | 2020-09-15T20:36:34Z | OWNER | https://hub.docker.com/r/datasetteproject/datasette/tags - 0.49.1 was successfully pushed to Docker Hub by https://github.com/simonw/datasette/runs/1119815175?check_suite_focus=true |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Push to Docker Hub failed - but it shouldn't run for alpha releases anyway 688427751 | |
692955850 | https://github.com/simonw/datasette/issues/956#issuecomment-692955850 | https://api.github.com/repos/simonw/datasette/issues/956 | MDEyOklzc3VlQ29tbWVudDY5Mjk1NTg1MA== | simonw 9599 | 2020-09-15T20:17:49Z | 2020-09-15T20:17:49Z | OWNER | I think I've fixed this with recent changes I made as part of #941 - but I won't know until I release the next version. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Push to Docker Hub failed - but it shouldn't run for alpha releases anyway 688427751 | |
692955379 | https://github.com/simonw/datasette/issues/946#issuecomment-692955379 | https://api.github.com/repos/simonw/datasette/issues/946 | MDEyOklzc3VlQ29tbWVudDY5Mjk1NTM3OQ== | simonw 9599 | 2020-09-15T20:16:50Z | 2020-09-15T20:16:50Z | OWNER | Can't reproduce this bug now. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Exception in tracing code 682184050 | |
692953174 | https://github.com/simonw/datasette/issues/492#issuecomment-692953174 | https://api.github.com/repos/simonw/datasette/issues/492 | MDEyOklzc3VlQ29tbWVudDY5Mjk1MzE3NA== | simonw 9599 | 2020-09-15T20:12:29Z | 2020-09-15T20:12:29Z | OWNER | I fixed this in ea340cf320a2566d24517fb4a0c9852c5059e771 for #963 (a duplicate of this issue). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Facets not correctly persisted in hidden form fields 449854604 | |
692951144 | https://github.com/simonw/datasette/issues/967#issuecomment-692951144 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5Mjk1MTE0NA== | simonw 9599 | 2020-09-15T20:08:12Z | 2020-09-15T20:08:12Z | OWNER | I think the easiest fix is for me to ensure that calls to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692946616 | https://github.com/simonw/datasette/issues/967#issuecomment-692946616 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5Mjk0NjYxNg== | simonw 9599 | 2020-09-15T19:59:21Z | 2020-09-15T19:59:21Z | OWNER | I wish I could call https://www.sqlite.org/c3ref/bind_parameter_count.html and https://www.sqlite.org/c3ref/bind_parameter_name.html from Python. Might be possible to do that using
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692945504 | https://github.com/simonw/datasette/issues/967#issuecomment-692945504 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5Mjk0NTUwNA== | simonw 9599 | 2020-09-15T19:57:10Z | 2020-09-15T19:57:10Z | OWNER | So the problem actually occurs when the Relevant code: And: I'm passing a special magic parameters dictionary for the Python I tracked down the relevant C code: ```c Py_BEGIN_ALLOW_THREADS num_params_needed = sqlite3_bind_parameter_count(self->st); Py_END_ALLOW_THREADS
``` It looks to me like this should fail if the number of keys known to be in the dictionary differs from the number of named parameters in the query. But if those numbers fail to match it still works as far as I can tell - it's only dictionary length of 0 that is causing the problems. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692940375 | https://github.com/simonw/datasette/issues/967#issuecomment-692940375 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5Mjk0MDM3NQ== | simonw 9599 | 2020-09-15T19:47:09Z | 2020-09-15T19:47:09Z | OWNER | Yes! The tests all pass if I update the test function to do this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692938935 | https://github.com/simonw/datasette/issues/967#issuecomment-692938935 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5MjkzODkzNQ== | simonw 9599 | 2020-09-15T19:44:21Z | 2020-09-15T19:44:41Z | OWNER | While I'm running the above test, in the rounds that work the In the rounds that fails it returns So it looks like the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692937150 | https://github.com/simonw/datasette/issues/967#issuecomment-692937150 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5MjkzNzE1MA== | simonw 9599 | 2020-09-15T19:42:57Z | 2020-09-15T19:42:57Z | OWNER | New (failing) test:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692927867 | https://github.com/simonw/datasette/issues/967#issuecomment-692927867 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5MjkyNzg2Nw== | simonw 9599 | 2020-09-15T19:25:23Z | 2020-09-15T19:25:23Z | OWNER | Hunch: I think the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692835066 | https://github.com/simonw/datasette/issues/967#issuecomment-692835066 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5MjgzNTA2Ng== | simonw 9599 | 2020-09-15T16:40:12Z | 2020-09-15T16:40:12Z | OWNER | Is the bug here that magic parameters are incompatible with CSRF-exempt requests (e.g. request with no cookies)? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692834670 | https://github.com/simonw/datasette/issues/967#issuecomment-692834670 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5MjgzNDY3MA== | simonw 9599 | 2020-09-15T16:39:29Z | 2020-09-15T16:39:29Z | OWNER | Relevant code: https://github.com/simonw/datasette/blob/853c5fc37011a7bc09ca3a1af287102f00827c82/datasette/views/database.py#L222-L236 This issue may not be about |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692834064 | https://github.com/simonw/datasette/issues/967#issuecomment-692834064 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5MjgzNDA2NA== | simonw 9599 | 2020-09-15T16:38:21Z | 2020-09-15T16:38:21Z | OWNER | So the mystery here is why does omitting |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692832113 | https://github.com/simonw/datasette/issues/967#issuecomment-692832113 | https://api.github.com/repos/simonw/datasette/issues/967 | MDEyOklzc3VlQ29tbWVudDY5MjgzMjExMw== | simonw 9599 | 2020-09-15T16:34:53Z | 2020-09-15T16:37:43Z | OWNER | This is so weird. In the test I wrote for this the following passed:
But without the
Here's the test I wrote:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Writable canned queries with magic parameters fail if POST body is empty 702069429 | |
692340275 | https://github.com/simonw/datasette/issues/940#issuecomment-692340275 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MjM0MDI3NQ== | simonw 9599 | 2020-09-14T22:09:35Z | 2020-09-14T22:09:35Z | OWNER | I'm going to cross my fingers and hope that this works - I don't want to leave this issue open until Datasette 0.50. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
692339645 | https://github.com/simonw/datasette/issues/940#issuecomment-692339645 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MjMzOTY0NQ== | simonw 9599 | 2020-09-14T22:07:58Z | 2020-09-14T22:07:58Z | OWNER | I shipped the Docker build manually by running the following in a tmate session:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
692337397 | https://github.com/simonw/datasette/issues/940#issuecomment-692337397 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MjMzNzM5Nw== | simonw 9599 | 2020-09-14T22:01:56Z | 2020-09-14T22:01:56Z | OWNER | I'm going to switch to using this logic to decide if I should ship to Docker: https://github.community/t/release-prerelease-action-triggers/17275/2
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
692336564 | https://github.com/simonw/datasette/issues/940#issuecomment-692336564 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MjMzNjU2NA== | simonw 9599 | 2020-09-14T21:59:40Z | 2020-09-14T21:59:40Z | OWNER | Using https://github.com/marketplace/actions/debugging-with-tmate to manually submit a new build from within an interactive GitHub Actions session. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
692332430 | https://github.com/simonw/datasette/issues/940#issuecomment-692332430 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MjMzMjQzMA== | simonw 9599 | 2020-09-14T21:48:59Z | 2020-09-14T21:48:59Z | OWNER | So now I've released Datasette 0.49 but failed to push a new Docker image. This is bad, and I need to fix it. I'd like to push to Docker from GitHub Actions, so I think I'm going to create a one-off workflow task for doing that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
692331919 | https://github.com/simonw/datasette/issues/940#issuecomment-692331919 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MjMzMTkxOQ== | simonw 9599 | 2020-09-14T21:47:39Z | 2020-09-14T21:47:39Z | OWNER | I bet that's because the
And the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
692331349 | https://github.com/simonw/datasette/issues/940#issuecomment-692331349 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MjMzMTM0OQ== | simonw 9599 | 2020-09-14T21:46:11Z | 2020-09-14T21:46:11Z | OWNER | Just release Datasette 0.49 - which shipped to PyPI just fine but skipped the Docker step for some reason! https://github.com/simonw/datasette/runs/1114585275?check_suite_focus=true |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
692324230 | https://github.com/simonw/datasette/issues/880#issuecomment-692324230 | https://api.github.com/repos/simonw/datasette/issues/880 | MDEyOklzc3VlQ29tbWVudDY5MjMyNDIzMA== | simonw 9599 | 2020-09-14T21:28:15Z | 2020-09-14T21:28:21Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
POST to /db/canned-query that returns JSON should be supported (for API clients) 648637666 | ||
692299770 | https://github.com/simonw/datasette/issues/880#issuecomment-692299770 | https://api.github.com/repos/simonw/datasette/issues/880 | MDEyOklzc3VlQ29tbWVudDY5MjI5OTc3MA== | simonw 9599 | 2020-09-14T20:36:40Z | 2020-09-14T20:36:40Z | OWNER | The JSON response will look like this:
The |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
POST to /db/canned-query that returns JSON should be supported (for API clients) 648637666 | |
692298011 | https://github.com/simonw/datasette/issues/880#issuecomment-692298011 | https://api.github.com/repos/simonw/datasette/issues/880 | MDEyOklzc3VlQ29tbWVudDY5MjI5ODAxMQ== | simonw 9599 | 2020-09-14T20:33:13Z | 2020-09-14T20:33:13Z | OWNER | I'm going to support several ways of indicating that you would like a JSON response instead of getting a HTTP redirect from your writable canned query submission:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
POST to /db/canned-query that returns JSON should be supported (for API clients) 648637666 | |
692272860 | https://github.com/simonw/datasette/issues/880#issuecomment-692272860 | https://api.github.com/repos/simonw/datasette/issues/880 | MDEyOklzc3VlQ29tbWVudDY5MjI3Mjg2MA== | simonw 9599 | 2020-09-14T19:43:47Z | 2020-09-14T19:43:47Z | OWNER | I'm going to add support for POST content that is sent as a JSON document, in addition to the existing support for key=value encoded POST bodies. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
POST to /db/canned-query that returns JSON should be supported (for API clients) 648637666 | |
692271804 | https://github.com/simonw/datasette/issues/880#issuecomment-692271804 | https://api.github.com/repos/simonw/datasette/issues/880 | MDEyOklzc3VlQ29tbWVudDY5MjI3MTgwNA== | simonw 9599 | 2020-09-14T19:41:37Z | 2020-09-14T19:41:37Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
POST to /db/canned-query that returns JSON should be supported (for API clients) 648637666 | ||
692244252 | https://github.com/simonw/datasette/issues/965#issuecomment-692244252 | https://api.github.com/repos/simonw/datasette/issues/965 | MDEyOklzc3VlQ29tbWVudDY5MjI0NDI1Mg== | simonw 9599 | 2020-09-14T18:49:48Z | 2020-09-14T18:49:48Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation for 404.html, 500.html templates 701294727 | ||
692231257 | https://github.com/simonw/datasette/issues/965#issuecomment-692231257 | https://api.github.com/repos/simonw/datasette/issues/965 | MDEyOklzc3VlQ29tbWVudDY5MjIzMTI1Nw== | simonw 9599 | 2020-09-14T18:25:04Z | 2020-09-14T18:25:04Z | OWNER | In documenting this I realized that it's confusing that the default |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation for 404.html, 500.html templates 701294727 | |
692212641 | https://github.com/simonw/datasette/issues/964#issuecomment-692212641 | https://api.github.com/repos/simonw/datasette/issues/964 | MDEyOklzc3VlQ29tbWVudDY5MjIxMjY0MQ== | simonw 9599 | 2020-09-14T17:49:44Z | 2020-09-14T17:49:44Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
raise_404 mechanism for custom templates 700728217 | ||
692207341 | https://github.com/simonw/datasette/issues/965#issuecomment-692207341 | https://api.github.com/repos/simonw/datasette/issues/965 | MDEyOklzc3VlQ29tbWVudDY5MjIwNzM0MQ== | simonw 9599 | 2020-09-14T17:40:05Z | 2020-09-14T17:40:05Z | OWNER | Also link to these from the docs added in #964. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation for 404.html, 500.html templates 701294727 | |
691788478 | https://github.com/simonw/datasette/issues/944#issuecomment-691788478 | https://api.github.com/repos/simonw/datasette/issues/944 | MDEyOklzc3VlQ29tbWVudDY5MTc4ODQ3OA== | simonw 9599 | 2020-09-14T03:21:45Z | 2020-09-14T03:21:45Z | OWNER | Having tried this out I think it does need a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Path parameters for custom pages 681516976 | |
691785692 | https://github.com/simonw/datasette/issues/880#issuecomment-691785692 | https://api.github.com/repos/simonw/datasette/issues/880 | MDEyOklzc3VlQ29tbWVudDY5MTc4NTY5Mg== | simonw 9599 | 2020-09-14T03:10:11Z | 2020-09-14T03:10:11Z | OWNER | Answer: no, it's not safe to skip CSRF if there's an |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
POST to /db/canned-query that returns JSON should be supported (for API clients) 648637666 | |
691781345 | https://github.com/simonw/datasette/issues/940#issuecomment-691781345 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MTc4MTM0NQ== | simonw 9599 | 2020-09-14T02:53:25Z | 2020-09-14T02:53:49Z | OWNER | That worked: https://github.com/simonw/datasette/runs/1110040212?check_suite_focus=true ran and deployed https://pypi.org/project/datasette/0.49a1/ to PyPI but it skipped the push to Docker step because there was an "a" in the tag. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
691779693 | https://github.com/simonw/datasette/issues/940#issuecomment-691779693 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MTc3OTY5Mw== | simonw 9599 | 2020-09-14T02:46:39Z | 2020-09-14T02:46:39Z | OWNER | I think those should be single quoted. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
691779510 | https://github.com/simonw/datasette/issues/940#issuecomment-691779510 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MTc3OTUxMA== | simonw 9599 | 2020-09-14T02:45:53Z | 2020-09-14T02:45:53Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | ||
691779361 | https://github.com/simonw/datasette/issues/940#issuecomment-691779361 | https://api.github.com/repos/simonw/datasette/issues/940 | MDEyOklzc3VlQ29tbWVudDY5MTc3OTM2MQ== | simonw 9599 | 2020-09-14T02:45:04Z | 2020-09-14T02:45:04Z | OWNER | Package deploys are still broken, just got this error trying to ship 0.49a1: https://github.com/simonw/datasette/actions/runs/253099665
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move CI to GitHub Issues 679808124 | |
691774262 | https://github.com/simonw/datasette/issues/944#issuecomment-691774262 | https://api.github.com/repos/simonw/datasette/issues/944 | MDEyOklzc3VlQ29tbWVudDY5MTc3NDI2Mg== | simonw 9599 | 2020-09-14T02:24:08Z | 2020-09-14T02:24:08Z | OWNER | Actually don't need |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Path parameters for custom pages 681516976 | |
691769222 | https://github.com/simonw/datasette/issues/944#issuecomment-691769222 | https://api.github.com/repos/simonw/datasette/issues/944 | MDEyOklzc3VlQ29tbWVudDY5MTc2OTIyMg== | simonw 9599 | 2020-09-14T02:01:33Z | 2020-09-14T02:01:33Z | OWNER | I'm going to cache the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Path parameters for custom pages 681516976 | |
691566247 | https://github.com/simonw/datasette/issues/519#issuecomment-691566247 | https://api.github.com/repos/simonw/datasette/issues/519 | MDEyOklzc3VlQ29tbWVudDY5MTU2NjI0Nw== | simonw 9599 | 2020-09-12T22:48:53Z | 2020-09-12T22:48:53Z | OWNER | I think I've figured out what to do about stability of the HTML and the default templates with respect to semantic versioning. I'm going to announce that the JSON API - including the variables made available to templates - should be considered stable according to semver. I will only break backwards compatibility at that level in a major version release. The template HTML (and default CSS) will not be considered a stable interface. They won't change on bug fix releases but they may change (albeit described in the release notes) on minor version bumps. Since the template inputs are stable, you can run your own copy of the previous version's templates if something breaks. This means users (and plugin authors) who make changes to the default Datasette UI will have to test their changes against every minor release. I think that's OK. If you write plugins that don't affect the Datasette HTML UI you will be able to expect stability across minor version releases. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Decide what goes into Datasette 1.0 459590021 | |
691558387 | https://github.com/simonw/datasette/issues/880#issuecomment-691558387 | https://api.github.com/repos/simonw/datasette/issues/880 | MDEyOklzc3VlQ29tbWVudDY5MTU1ODM4Nw== | simonw 9599 | 2020-09-12T22:04:48Z | 2020-09-12T22:04:48Z | OWNER | Is it safe to skip CSRF checks if the incoming request has I'm not sure that matters since |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
POST to /db/canned-query that returns JSON should be supported (for API clients) 648637666 | |
691557675 | https://github.com/simonw/datasette/issues/880#issuecomment-691557675 | https://api.github.com/repos/simonw/datasette/issues/880 | MDEyOklzc3VlQ29tbWVudDY5MTU1NzY3NQ== | simonw 9599 | 2020-09-12T22:01:02Z | 2020-09-12T22:01:11Z | OWNER | Maybe POST to Could be a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
POST to /db/canned-query that returns JSON should be supported (for API clients) 648637666 | |
691557429 | https://github.com/simonw/datasette/issues/880#issuecomment-691557429 | https://api.github.com/repos/simonw/datasette/issues/880 | MDEyOklzc3VlQ29tbWVudDY5MTU1NzQyOQ== | simonw 9599 | 2020-09-12T21:59:39Z | 2020-09-12T21:59:39Z | OWNER | What should happen when something does a POST to an extension that was registered by a plugin, e.g. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
POST to /db/canned-query that returns JSON should be supported (for API clients) 648637666 | |
691554088 | https://github.com/simonw/datasette/issues/782#issuecomment-691554088 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDY5MTU1NDA4OA== | simonw 9599 | 2020-09-12T21:39:03Z | 2020-09-12T21:39:03Z | OWNER | Plan: release a new release of Datasette (probably 0.49) with the new JSON API design, but provide a plugin called something like Anyone who has built applications against 0.48 can install that plugin. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
691526975 | https://github.com/simonw/datasette/issues/262#issuecomment-691526975 | https://api.github.com/repos/simonw/datasette/issues/262 | MDEyOklzc3VlQ29tbWVudDY5MTUyNjk3NQ== | simonw 9599 | 2020-09-12T18:22:44Z | 2020-09-12T18:22:44Z | OWNER | Are there any interesting use-cases for a plugin hook that allows plugins to define their own |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
691526878 | https://github.com/simonw/datasette/issues/782#issuecomment-691526878 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDY5MTUyNjg3OA== | simonw 9599 | 2020-09-12T18:21:41Z | 2020-09-12T18:22:20Z | OWNER | Would it be so bad if the default format had a A default format that's an object rather than array also gives something for the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
691526762 | https://github.com/simonw/datasette/issues/782#issuecomment-691526762 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDY5MTUyNjc2Mg== | simonw 9599 | 2020-09-12T18:20:19Z | 2020-09-12T18:20:19Z | OWNER | I'd like to revisit the idea of using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
691526719 | https://github.com/simonw/datasette/issues/262#issuecomment-691526719 | https://api.github.com/repos/simonw/datasette/issues/262 | MDEyOklzc3VlQ29tbWVudDY5MTUyNjcxOQ== | simonw 9599 | 2020-09-12T18:19:50Z | 2020-09-12T18:19:50Z | OWNER |
I built a version of that a while ago as the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
389702480 | https://github.com/simonw/datasette/issues/262#issuecomment-389702480 | https://api.github.com/repos/simonw/datasette/issues/262 | MDEyOklzc3VlQ29tbWVudDM4OTcwMjQ4MA== | simonw 9599 | 2018-05-17T00:00:39Z | 2020-09-12T18:19:30Z | OWNER | Idea: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
691526635 | https://github.com/simonw/datasette/issues/680#issuecomment-691526635 | https://api.github.com/repos/simonw/datasette/issues/680 | MDEyOklzc3VlQ29tbWVudDY5MTUyNjYzNQ== | simonw 9599 | 2020-09-12T18:18:50Z | 2020-09-12T18:18:50Z | OWNER | I'm happy with the not-quite-automated way I'm doing this, so I'm going to close this issue. That's documented here https://docs.datasette.io/en/0.48/contributing.html#release-process - I use https://euangoddard.github.io/clipboard2markdown/ to create the GitHub releases markdown version. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Release automation: automate the bit that posts the GitHub release 569275763 | |
691526489 | https://github.com/simonw/datasette/issues/782#issuecomment-691526489 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDY5MTUyNjQ4OQ== | simonw 9599 | 2020-09-12T18:17:16Z | 2020-09-12T18:17:16Z | OWNER | (I think I may have been over-thinking the details of this is for a couple of years now.) |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
691526416 | https://github.com/simonw/datasette/issues/782#issuecomment-691526416 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDY5MTUyNjQxNg== | simonw 9599 | 2020-09-12T18:16:36Z | 2020-09-12T18:16:36Z | OWNER | I'm going to hack together a preview of this in a branch and deploy it somewhere so people can see what I've got planned. Much easier to evaluate a working prototype than static examples. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
691501132 | https://github.com/dogsheep/twitter-to-sqlite/issues/50#issuecomment-691501132 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/50 | MDEyOklzc3VlQ29tbWVudDY5MTUwMTEzMg== | bcongdon 706257 | 2020-09-12T14:48:10Z | 2020-09-12T14:48:10Z | NONE | This seems to be an issue even with larger values of
|
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
favorites --stop_after=N stops after min(N, 200) 698791218 | |
691379980 | https://github.com/simonw/datasette/issues/963#issuecomment-691379980 | https://api.github.com/repos/simonw/datasette/issues/963 | MDEyOklzc3VlQ29tbWVudDY5MTM3OTk4MA== | simonw 9599 | 2020-09-12T01:50:56Z | 2020-09-12T01:50:56Z | OWNER | Good bug - looks like a problem with the hidden form fields. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Currently selected array facets are not correctly persisted through hidden form fields 699947574 | |
691323302 | https://github.com/simonw/datasette/issues/782#issuecomment-691323302 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDY5MTMyMzMwMg== | simonw 9599 | 2020-09-11T21:38:27Z | 2020-09-11T21:40:04Z | OWNER | Another idea: the default output could be the list of dicts:
``` ~ % curl -s -i 'https://api.github.com/repos/simonw/datasette/commits' | head -n 40 HTTP/1.1 200 OK server: GitHub.com date: Fri, 11 Sep 2020 21:37:46 GMT content-type: application/json; charset=utf-8 status: 200 OK cache-control: public, max-age=60, s-maxage=60 vary: Accept, Accept-Encoding, Accept, X-Requested-With etag: W/"71c99379743513394e880c6306b66bf9" last-modified: Fri, 11 Sep 2020 21:32:54 GMT x-github-media-type: github.v3; format=json link: https://api.github.com/repositories/107914493/commits?page=2; rel="next", https://api.github.com/repositories/107914493/commits?page=44; rel="last" access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset access-control-allow-origin: * strict-transport-security: max-age=31536000; includeSubdomains; preload x-frame-options: deny x-content-type-options: nosniff x-xss-protection: 1; mode=block referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin content-security-policy: default-src 'none' X-Ratelimit-Limit: 60 X-Ratelimit-Remaining: 55 X-Ratelimit-Reset: 1599863850 X-Ratelimit-Used: 5 Accept-Ranges: bytes Content-Length: 118240 X-GitHub-Request-Id: EC76:0EAD:313F40:5291A4:5F5BEE37 [ { "sha": "d02f6151dae073135a22d0123e8abdc6cbef7c50", "node_id": "MDY6Q29tbWl0MTA3OTE0NDkzOmQwMmY2MTUxZGFlMDczMTM1YTIyZDAxMjNlOGFiZGM2Y2JlZjdjNTA=", "commit": { ``` Alternative shapes would provide the pagination information (and other extensions) in the JSON, e.g.:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
691318133 | https://github.com/simonw/datasette/issues/947#issuecomment-691318133 | https://api.github.com/repos/simonw/datasette/issues/947 | MDEyOklzc3VlQ29tbWVudDY5MTMxODEzMw== | simonw 9599 | 2020-09-11T21:23:40Z | 2020-09-11T21:23:40Z | OWNER | I'm going to use exit code 1 for any errors, be they 500 or 404. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette --get exit code should reflect HTTP errors 684111953 | |
691250299 | https://github.com/simonw/datasette/issues/962#issuecomment-691250299 | https://api.github.com/repos/simonw/datasette/issues/962 | MDEyOklzc3VlQ29tbWVudDY5MTI1MDI5OQ== | simonw 9599 | 2020-09-11T18:33:50Z | 2020-09-11T18:33:50Z | OWNER | Since this is purely a debugging option I'm going to allow myself not to write a unit test for it! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette --pdb option for debugging errors 699622046 | |
690860653 | https://github.com/dogsheep/twitter-to-sqlite/issues/50#issuecomment-690860653 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/50 | MDEyOklzc3VlQ29tbWVudDY5MDg2MDY1Mw== | mikepqr 370930 | 2020-09-11T04:04:08Z | 2020-09-11T04:04:08Z | CONTRIBUTOR | There's probably a nicer way of doing (hence this is a comment rather than a PR), but this appears to fix it:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
favorites --stop_after=N stops after min(N, 200) 698791218 | |
689850509 | https://github.com/simonw/sqlite-utils/issues/157#issuecomment-689850509 | https://api.github.com/repos/simonw/sqlite-utils/issues/157 | MDEyOklzc3VlQ29tbWVudDY4OTg1MDUwOQ== | simonw 9599 | 2020-09-09T22:14:49Z | 2020-09-09T22:14:49Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils add-foreign-keys command 697179806 | ||
689850289 | https://github.com/simonw/sqlite-utils/issues/157#issuecomment-689850289 | https://api.github.com/repos/simonw/sqlite-utils/issues/157 | MDEyOklzc3VlQ29tbWVudDY4OTg1MDI4OQ== | simonw 9599 | 2020-09-09T22:14:19Z | 2020-09-09T22:14:19Z | OWNER | This can accept four arguments: table, column, other_table, other_column:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils add-foreign-keys command 697179806 | |
689735140 | https://github.com/simonw/sqlite-utils/pull/156#issuecomment-689735140 | https://api.github.com/repos/simonw/sqlite-utils/issues/156 | MDEyOklzc3VlQ29tbWVudDY4OTczNTE0MA== | simonw 9599 | 2020-09-09T18:21:06Z | 2020-09-09T18:21:06Z | OWNER | Good spot, thanks. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Typos in tests 697030843 | |
689635754 | https://github.com/simonw/datasette/issues/961#issuecomment-689635754 | https://api.github.com/repos/simonw/datasette/issues/961 | MDEyOklzc3VlQ29tbWVudDY4OTYzNTc1NA== | simonw 9599 | 2020-09-09T15:24:31Z | 2020-09-09T15:24:31Z | OWNER | I thought about checking that every database in the I could treat those as warnings and output a warning to standard out when the server starts instead. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Verification checks for metadata.json on startup 696908389 | |
689635094 | https://github.com/simonw/datasette/issues/961#issuecomment-689635094 | https://api.github.com/repos/simonw/datasette/issues/961 | MDEyOklzc3VlQ29tbWVudDY4OTYzNTA5NA== | simonw 9599 | 2020-09-09T15:23:24Z | 2020-09-09T15:23:24Z | OWNER | Checks can include:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Verification checks for metadata.json on startup 696908389 | |
689226390 | https://github.com/dogsheep/dogsheep-beta/issues/17#issuecomment-689226390 | https://api.github.com/repos/dogsheep/dogsheep-beta/issues/17 | MDEyOklzc3VlQ29tbWVudDY4OTIyNjM5MA== | simonw 9599 | 2020-09-09T00:36:07Z | 2020-09-09T00:36:07Z | MEMBER | Alternative names:
I think |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename "table" to "type" 694500679 | |
689186423 | https://github.com/simonw/sqlite-utils/issues/145#issuecomment-689186423 | https://api.github.com/repos/simonw/sqlite-utils/issues/145 | MDEyOklzc3VlQ29tbWVudDY4OTE4NjQyMw== | simonw 9599 | 2020-09-08T23:21:23Z | 2020-09-08T23:21:23Z | OWNER | Fixed in PR #146. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bug when first record contains fewer columns than subsequent records 688659182 | |
689185393 | https://github.com/simonw/sqlite-utils/pull/146#issuecomment-689185393 | https://api.github.com/repos/simonw/sqlite-utils/issues/146 | MDEyOklzc3VlQ29tbWVudDY4OTE4NTM5Mw== | simonw 9599 | 2020-09-08T23:17:42Z | 2020-09-08T23:17:42Z | OWNER | That seems like a reasonable approach to me, especially since this is going to be a pretty rare edge-case. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Handle case where subsequent records (after first batch) include extra columns 688668680 | |
689166404 | https://github.com/simonw/sqlite-utils/issues/155#issuecomment-689166404 | https://api.github.com/repos/simonw/sqlite-utils/issues/155 | MDEyOklzc3VlQ29tbWVudDY4OTE2NjQwNA== | simonw 9599 | 2020-09-08T22:20:03Z | 2020-09-08T22:20:03Z | OWNER | I'm going to update |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
rebuild-fts command and table.rebuild_fts() method 696045581 | |
689165985 | https://github.com/simonw/sqlite-utils/issues/153#issuecomment-689165985 | https://api.github.com/repos/simonw/sqlite-utils/issues/153 | MDEyOklzc3VlQ29tbWVudDY4OTE2NTk4NQ== | simonw 9599 | 2020-09-08T22:18:52Z | 2020-09-08T22:18:52Z | OWNER | I've reverted this change again, because it turns out using the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.optimize() should delete junk rows from *_fts_docsize 695377804 | |
689163158 | https://github.com/simonw/sqlite-utils/issues/155#issuecomment-689163158 | https://api.github.com/repos/simonw/sqlite-utils/issues/155 | MDEyOklzc3VlQ29tbWVudDY4OTE2MzE1OA== | simonw 9599 | 2020-09-08T22:10:27Z | 2020-09-08T22:10:27Z | OWNER | For the command version:
This will rebuild all detected FTS tables. You can also specify one or more explicit tables:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
rebuild-fts command and table.rebuild_fts() method 696045581 | |
688626037 | https://github.com/dogsheep/dogsheep-beta/issues/19#issuecomment-688626037 | https://api.github.com/repos/dogsheep/dogsheep-beta/issues/19 | MDEyOklzc3VlQ29tbWVudDY4ODYyNjAzNw== | simonw 9599 | 2020-09-08T05:27:07Z | 2020-09-08T05:27:07Z | MEMBER | A really clever way to do this would be with triggers. The indexer script would add triggers to each of the database tables that it is indexing - each in their own database. Those triggers would then maintain a This would add a small amount of overhead to insert/update/delete queries run against the table. My hunch is that the overhead would be miniscule, but I could still allow people to opt-out for tables that are so high traffic that this would matter. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out incremental re-indexing 695556681 | |
688625430 | https://github.com/dogsheep/dogsheep-beta/issues/19#issuecomment-688625430 | https://api.github.com/repos/dogsheep/dogsheep-beta/issues/19 | MDEyOklzc3VlQ29tbWVudDY4ODYyNTQzMA== | simonw 9599 | 2020-09-08T05:24:50Z | 2020-09-08T05:24:50Z | MEMBER | I thought about allowing tables to define a incremental indexing SQL query - maybe something that can return just records touched in the past hour, or records since a recorded "last indexed record" value. The problem with this is deletes - if you delete a record, how does the indexer know to remove it? See #18 - that's already caused problems. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out incremental re-indexing 695556681 | |
688623097 | https://github.com/dogsheep/dogsheep-beta/issues/18#issuecomment-688623097 | https://api.github.com/repos/dogsheep/dogsheep-beta/issues/18 | MDEyOklzc3VlQ29tbWVudDY4ODYyMzA5Nw== | simonw 9599 | 2020-09-08T05:15:51Z | 2020-09-08T05:15:51Z | MEMBER | I'm inclined to go with the first, simpler option. I have longer term plans for efficient incremental index updates based on clever trickery with triggers. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deleted records stay in the search index 695553522 | |
688622995 | https://github.com/dogsheep/dogsheep-beta/issues/18#issuecomment-688622995 | https://api.github.com/repos/dogsheep/dogsheep-beta/issues/18 | MDEyOklzc3VlQ29tbWVudDY4ODYyMjk5NQ== | simonw 9599 | 2020-09-08T05:15:21Z | 2020-09-08T05:15:21Z | MEMBER | Alternatively it could run as it does now but add a I'm not sure which would be more efficient. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deleted records stay in the search index 695553522 | |
688573964 | https://github.com/simonw/sqlite-utils/pull/146#issuecomment-688573964 | https://api.github.com/repos/simonw/sqlite-utils/issues/146 | MDEyOklzc3VlQ29tbWVudDY4ODU3Mzk2NA== | simonwiles 96218 | 2020-09-08T01:55:07Z | 2020-09-08T01:55:07Z | CONTRIBUTOR | Okay, I've rewritten this PR to preserve the batching behaviour but still fix #145, and rebased the branch to account for the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Handle case where subsequent records (after first batch) include extra columns 688668680 | |
688544156 | https://github.com/simonw/sqlite-utils/issues/154#issuecomment-688544156 | https://api.github.com/repos/simonw/sqlite-utils/issues/154 | MDEyOklzc3VlQ29tbWVudDY4ODU0NDE1Ng== | simonw 9599 | 2020-09-07T23:47:10Z | 2020-09-07T23:47:10Z | OWNER | This is already covered in the tests though: https://github.com/simonw/sqlite-utils/blob/deb2eb013ff85bbc828ebc244a9654f0d9c3139e/tests/test_cli.py#L1300-L1328 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OperationalError: cannot change into wal mode from within a transaction 695441530 | |
688543128 | https://github.com/simonw/sqlite-utils/issues/154#issuecomment-688543128 | https://api.github.com/repos/simonw/sqlite-utils/issues/154 | MDEyOklzc3VlQ29tbWVudDY4ODU0MzEyOA== | simonw 9599 | 2020-09-07T23:43:10Z | 2020-09-07T23:43:10Z | OWNER | Running this against the same file works:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OperationalError: cannot change into wal mode from within a transaction 695441530 | |
688500704 | https://github.com/simonw/sqlite-utils/issues/152#issuecomment-688500704 | https://api.github.com/repos/simonw/sqlite-utils/issues/152 | MDEyOklzc3VlQ29tbWVudDY4ODUwMDcwNA== | simonw 9599 | 2020-09-07T20:28:45Z | 2020-09-07T21:17:48Z | OWNER | The principle reason to turn these on - at least so far - is that without it weird things happen where FTS tables (in particular |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Turn on recursive_triggers by default 695376054 | |
688511161 | https://github.com/simonw/sqlite-utils/issues/153#issuecomment-688511161 | https://api.github.com/repos/simonw/sqlite-utils/issues/153 | MDEyOklzc3VlQ29tbWVudDY4ODUxMTE2MQ== | simonw 9599 | 2020-09-07T21:07:20Z | 2020-09-07T21:07:29Z | OWNER | FTS4 uses a different column name here: https://datasette-sqlite-fts4.datasette.io/24ways-fts4/articles_fts_docsize
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.optimize() should delete junk rows from *_fts_docsize 695377804 | |
688508510 | https://github.com/simonw/sqlite-utils/pull/146#issuecomment-688508510 | https://api.github.com/repos/simonw/sqlite-utils/issues/146 | MDEyOklzc3VlQ29tbWVudDY4ODUwODUxMA== | simonw 9599 | 2020-09-07T20:56:03Z | 2020-09-07T20:56:24Z | OWNER | The problem with this approach is that it requires us to consume the entire iterator before we can start inserting rows into the table - here on line 1052: I designed the
So we need to solve this issue without consuming the entire iterator with a I think one way to do this is to execute each chunk one at a time and watch out for an exception that indicates that we sent too many parameters - then adjust the chunk size down and try again. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Handle case where subsequent records (after first batch) include extra columns 688668680 | |
688506015 | https://github.com/simonw/sqlite-utils/issues/153#issuecomment-688506015 | https://api.github.com/repos/simonw/sqlite-utils/issues/153 | MDEyOklzc3VlQ29tbWVudDY4ODUwNjAxNQ== | simonw 9599 | 2020-09-07T20:46:58Z | 2020-09-07T20:46:58Z | OWNER | Writing a test for this will be a tiny bit tricky. I think I'll use a test that replicates the bug in #149. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.optimize() should delete junk rows from *_fts_docsize 695377804 | |
688501064 | https://github.com/simonw/sqlite-utils/issues/149#issuecomment-688501064 | https://api.github.com/repos/simonw/sqlite-utils/issues/149 | MDEyOklzc3VlQ29tbWVudDY4ODUwMTA2NA== | simonw 9599 | 2020-09-07T20:30:15Z | 2020-09-07T20:30:38Z | OWNER | The second challenge here is cleaning up all of those junk rows in existing |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
FTS table with 7 rows has _fts_docsize table with 9,141 rows 695319258 | |
688500294 | https://github.com/simonw/sqlite-utils/issues/152#issuecomment-688500294 | https://api.github.com/repos/simonw/sqlite-utils/issues/152 | MDEyOklzc3VlQ29tbWVudDY4ODUwMDI5NA== | simonw 9599 | 2020-09-07T20:27:07Z | 2020-09-07T20:27:07Z | OWNER | I'm going to make this an argument to the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Turn on recursive_triggers by default 695376054 | |
688499924 | https://github.com/simonw/sqlite-utils/issues/149#issuecomment-688499924 | https://api.github.com/repos/simonw/sqlite-utils/issues/149 | MDEyOklzc3VlQ29tbWVudDY4ODQ5OTkyNA== | simonw 9599 | 2020-09-07T20:25:40Z | 2020-09-07T20:25:50Z | OWNER | https://www.sqlite.org/pragma.html#pragma_recursive_triggers says:
So I think the fix is to turn on |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
FTS table with 7 rows has _fts_docsize table with 9,141 rows 695319258 | |
688499650 | https://github.com/simonw/sqlite-utils/issues/149#issuecomment-688499650 | https://api.github.com/repos/simonw/sqlite-utils/issues/149 | MDEyOklzc3VlQ29tbWVudDY4ODQ5OTY1MA== | simonw 9599 | 2020-09-07T20:24:35Z | 2020-09-07T20:24:35Z | OWNER | This replicates the problem:
The number went up by ten. I used tracing from #151 to show that the following SQL executed ten times:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
FTS table with 7 rows has _fts_docsize table with 9,141 rows 695319258 | |
688482355 | https://github.com/simonw/sqlite-utils/issues/149#issuecomment-688482355 | https://api.github.com/repos/simonw/sqlite-utils/issues/149 | MDEyOklzc3VlQ29tbWVudDY4ODQ4MjM1NQ== | simonw 9599 | 2020-09-07T19:22:51Z | 2020-09-07T19:22:51Z | OWNER | And the SQLite documentation says:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
FTS table with 7 rows has _fts_docsize table with 9,141 rows 695319258 | |
688482055 | https://github.com/simonw/sqlite-utils/issues/149#issuecomment-688482055 | https://api.github.com/repos/simonw/sqlite-utils/issues/149 | MDEyOklzc3VlQ29tbWVudDY4ODQ4MjA1NQ== | simonw 9599 | 2020-09-07T19:21:42Z | 2020-09-07T19:21:42Z | OWNER | Using
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
FTS table with 7 rows has _fts_docsize table with 9,141 rows 695319258 | |
688481374 | https://github.com/simonw/sqlite-utils/issues/149#issuecomment-688481374 | https://api.github.com/repos/simonw/sqlite-utils/issues/149 | MDEyOklzc3VlQ29tbWVudDY4ODQ4MTM3NA== | simonw 9599 | 2020-09-07T19:19:08Z | 2020-09-07T19:19:08Z | OWNER | reading through the code for
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
FTS table with 7 rows has _fts_docsize table with 9,141 rows 695319258 |
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