issue_comments
8,358 rows where author_association = "OWNER" sorted by issue descending
This data as json, CSV (advanced)
Suggested facets: reactions, created_at (date)
issue >30
- Show column metadata plus links for foreign keys on arbitrary query results 51
- Redesign default .json format 50
- ?_extra= support (draft) 48
- Rethink how .ext formats (v.s. ?_format=) works before 1.0 47
- Updated Dockerfile with SpatiaLite version 5.0 45
- Complete refactor of TableView and table.html template 45
- Port Datasette to ASGI 38
- Authentication (and permissions) as a core concept 38
- JavaScript plugin hooks mechanism similar to pluggy 38
- invoke_startup() is not run in some conditions, e.g. gunicorn/uvicorn workers, breaking lots of things 35
- await datasette.client.get(path) mechanism for executing internal requests 33
- Maintain an in-memory SQLite table of connected databases and their tables 31
- Deploy a live instance of demos/apache-proxy 31
- Server hang on parallel execution of queries to named in-memory databases 30
- Ability to sort (and paginate) by column 29
- Research: demonstrate if parallel SQL queries are worthwhile 29
- Default API token authentication mechanism 29
- Port as many tests as possible to async def tests against ds_client 28
- Add ?_extra= mechanism for requesting extra properties in JSON 27
- Export to CSV 27
- Optimize all those calls to index_list and foreign_key_list 27
- Ability for a canned query to write to the database 26
- table.transform() method for advanced alter table 26
- Upgrade to CodeMirror 6, add SQL autocomplete 26
- Proof of concept for Datasette on AWS Lambda with EFS 25
- New pattern for views that return either JSON or HTML, available for plugins 25
- DeprecationWarning: pkg_resources is deprecated as an API 25
- Support cross-database joins 24
- Redesign register_output_renderer callback 24
- "datasette insert" command and plugin hook 23
- …
user 1
- simonw 8,358
id | html_url | issue_url | node_id | user | created_at | updated_at | author_association | body | reactions | issue ▲ | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1843579184 | https://github.com/simonw/sqlite-utils/issues/606#issuecomment-1843579184 | https://api.github.com/repos/simonw/sqlite-utils/issues/606 | IC_kwDOCGYnMM5t4skw | simonw 9599 | 2023-12-06T19:43:55Z | 2023-12-06T19:43:55Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
str and int as aliases for text and integer 2029161033 | ||
1843465748 | https://github.com/simonw/sqlite-utils/issues/606#issuecomment-1843465748 | https://api.github.com/repos/simonw/sqlite-utils/issues/606 | IC_kwDOCGYnMM5t4Q4U | simonw 9599 | 2023-12-06T18:36:51Z | 2023-12-06T18:36:51Z | OWNER | I'll add |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
str and int as aliases for text and integer 2029161033 | |
1846554637 | https://github.com/simonw/sqlite-utils/issues/605#issuecomment-1846554637 | https://api.github.com/repos/simonw/sqlite-utils/issues/605 | IC_kwDOCGYnMM5uEDAN | simonw 9599 | 2023-12-08T05:07:54Z | 2023-12-08T05:07:54Z | OWNER | Thanks for opening an issue - this should help future Google searchers figure out what's going on here. Another approach here could be to store large integers as Both storing as |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Insert fails with `Error: Python int too large to convert to SQLite INTEGER`; can we use `NUMERIC` here? 2007893839 | |
1846560096 | https://github.com/simonw/sqlite-utils/pull/604#issuecomment-1846560096 | https://api.github.com/repos/simonw/sqlite-utils/issues/604 | IC_kwDOCGYnMM5uEEVg | simonw 9599 | 2023-12-08T05:16:44Z | 2023-12-08T05:17:20Z | OWNER | Also tested this manually like so:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add more STRICT table support 2001006157 | |
1843586503 | https://github.com/simonw/sqlite-utils/pull/604#issuecomment-1843586503 | https://api.github.com/repos/simonw/sqlite-utils/issues/604 | IC_kwDOCGYnMM5t4uXH | simonw 9599 | 2023-12-06T19:49:10Z | 2023-12-06T19:49:29Z | OWNER | This looks really great on first glance - design is good, implementation is solid, tests and documentation look great. Looks like a couple of ``` mypy sqlite_utils tests sqlite_utils/db.py:543: error: Incompatible types in assignment (expression has type "type[Table]", variable has type "type[View]") [assignment] tests/test_lookup.py:156: error: Name "test_lookup_new_table" already defined on line 5 [no-redef] Found 2 errors in 2 files (checked 54 source files) Error: Process completed with exit code 1. ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add more STRICT table support 2001006157 | |
1846555822 | https://github.com/simonw/sqlite-utils/issues/603#issuecomment-1846555822 | https://api.github.com/repos/simonw/sqlite-utils/issues/603 | IC_kwDOCGYnMM5uEDSu | simonw 9599 | 2023-12-08T05:09:55Z | 2023-12-08T05:10:31Z | OWNER | I'm unable to replicate this issue. This is with a fresh install of <Table foo (bar)> >>> import sys >>> sys.version '3.12.0 (v3.12.0:0fb18b02c8, Oct 2 2023, 09:45:56) [Clang 13.0.0 (clang-1300.0.29.30)]' ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Pyhton 3.12 Bug report 1988525411 | |
1794054390 | https://github.com/simonw/datasette/issues/2205#issuecomment-1794054390 | https://api.github.com/repos/simonw/datasette/issues/2205 | IC_kwDOBm6k_c5q7xj2 | simonw 9599 | 2023-11-06T04:09:43Z | 2023-11-06T04:10:34Z | OWNER | That Commit message:
Relevant test: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
request.post_vars() method obliterates form keys with multiple values 1978023780 | |
1794052079 | https://github.com/simonw/datasette/issues/2205#issuecomment-1794052079 | https://api.github.com/repos/simonw/datasette/issues/2205 | IC_kwDOBm6k_c5q7w_v | simonw 9599 | 2023-11-06T04:06:05Z | 2023-11-06T04:08:50Z | OWNER | It should return a https://github.com/simonw/datasette/blob/452a587e236ef642cbc6ae345b58767ea8420cb5/datasette/utils/init.py#L900-L917 Change needs to be made before 1.0.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
request.post_vars() method obliterates form keys with multiple values 1978023780 | |
1793880738 | https://github.com/simonw/datasette/issues/2205#issuecomment-1793880738 | https://api.github.com/repos/simonw/datasette/issues/2205 | IC_kwDOBm6k_c5q7HKi | simonw 9599 | 2023-11-05T23:26:14Z | 2023-11-05T23:26:14Z | OWNER | I found this problem while trying to use WTForms with this pattern: ```python choices = [(col, col) for col in await db.table_columns(table)] class ConfigForm(Form): template = TextAreaField("Template") api_token = PasswordField("OpenAI API token") columns = MultiCheckboxField('Columns', choices=choices) ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
request.post_vars() method obliterates form keys with multiple values 1978023780 | |
1793269219 | https://github.com/simonw/sqlite-utils/pull/600#issuecomment-1793269219 | https://api.github.com/repos/simonw/sqlite-utils/issues/600 | IC_kwDOCGYnMM5q4x3j | simonw 9599 | 2023-11-04T00:34:33Z | 2023-11-04T00:34:33Z | OWNER | The GIS tests now pass in that container too:
tests/test_gis.py ............ [100%] ========================= 12 passed in 0.48s ========================= ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add spatialite arm64 linux path 1977004379 | |
1793268126 | https://github.com/simonw/sqlite-utils/pull/600#issuecomment-1793268126 | https://api.github.com/repos/simonw/sqlite-utils/issues/600 | IC_kwDOCGYnMM5q4xme | simonw 9599 | 2023-11-04T00:31:34Z | 2023-11-04T00:31:34Z | OWNER | Testing this manually on macOS using Docker Desk top like this:
Then:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add spatialite arm64 linux path 1977004379 | |
1793265952 | https://github.com/simonw/sqlite-utils/pull/600#issuecomment-1793265952 | https://api.github.com/repos/simonw/sqlite-utils/issues/600 | IC_kwDOCGYnMM5q4xEg | simonw 9599 | 2023-11-04T00:25:34Z | 2023-11-04T00:25:34Z | OWNER | The tests failed because they found a spelling mistake in a completely unrelated area of the code - not sure why that had not been caught before. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add spatialite arm64 linux path 1977004379 | |
1793263638 | https://github.com/simonw/sqlite-utils/pull/600#issuecomment-1793263638 | https://api.github.com/repos/simonw/sqlite-utils/issues/600 | IC_kwDOCGYnMM5q4wgW | simonw 9599 | 2023-11-04T00:19:58Z | 2023-11-04T00:19:58Z | OWNER | Thanks for this! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add spatialite arm64 linux path 1977004379 | |
1793268750 | https://github.com/simonw/sqlite-utils/issues/599#issuecomment-1793268750 | https://api.github.com/repos/simonw/sqlite-utils/issues/599 | IC_kwDOCGYnMM5q4xwO | simonw 9599 | 2023-11-04T00:33:25Z | 2023-11-04T00:33:25Z | OWNER | See details of how I tested this here: - https://github.com/simonw/sqlite-utils/pull/600#issuecomment-1793268126 Short version: having applied this fix, the following command (on simulated |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cannot find spatialite on arm64 linux 1976986318 | |
1760441535 | https://github.com/simonw/datasette/issues/2199#issuecomment-1760441535 | https://api.github.com/repos/simonw/datasette/issues/2199 | IC_kwDOBm6k_c5o7jS_ | simonw 9599 | 2023-10-12T22:08:42Z | 2023-10-12T22:08:42Z | OWNER | Pushed that incomplete code here: https://github.com/datasette/datasette-upgrade |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detailed upgrade instructions for metadata.yaml -> datasette.yaml 1940346034 | |
1760413191 | https://github.com/simonw/datasette/issues/2199#issuecomment-1760413191 | https://api.github.com/repos/simonw/datasette/issues/2199 | IC_kwDOBm6k_c5o7cYH | simonw 9599 | 2023-10-12T21:52:25Z | 2023-10-12T21:52:25Z | OWNER | Demo of that logic:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detailed upgrade instructions for metadata.yaml -> datasette.yaml 1940346034 | |
1760412424 | https://github.com/simonw/datasette/issues/2199#issuecomment-1760412424 | https://api.github.com/repos/simonw/datasette/issues/2199 | IC_kwDOBm6k_c5o7cMI | simonw 9599 | 2023-10-12T21:51:44Z | 2023-10-12T21:51:44Z | OWNER | Started playing with this plugin idea, now tearing myself away to work on something more important: ```python from datasette import hookimpl import click import pathlib @hookimpl def register_commands(cli): @cli.group() def upgrade(): """ Apply configuration upgrades to an existing Datasette instance """ pass
def pick_filename(base, output_dir): options = ["{}.yaml".format(base), "{}-new.yaml".format(base)] i = 0 while True: option = options.pop(0) option_path = output_dir / option if not option_path.exists(): return option_path # If we ran out if not options: i += 1 options = ["{}-new-{}.yaml".format(base, i)] ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detailed upgrade instructions for metadata.yaml -> datasette.yaml 1940346034 | |
1760411937 | https://github.com/simonw/datasette/issues/2199#issuecomment-1760411937 | https://api.github.com/repos/simonw/datasette/issues/2199 | IC_kwDOBm6k_c5o7cEh | simonw 9599 | 2023-10-12T21:51:16Z | 2023-10-12T21:51:16Z | OWNER | I think I'm OK with not preserving comments, just because it adds a level of complexity to the tool which I don't think is worth the value it provides. If people want to keep their comments I'm happy to leave them to copy those over by hand. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detailed upgrade instructions for metadata.yaml -> datasette.yaml 1940346034 | |
1760396195 | https://github.com/simonw/datasette/issues/2199#issuecomment-1760396195 | https://api.github.com/repos/simonw/datasette/issues/2199 | IC_kwDOBm6k_c5o7YOj | simonw 9599 | 2023-10-12T21:36:25Z | 2023-10-12T21:36:25Z | OWNER | Related idea: how about a Maybe something like this:
The command would tell you what it did: ``` Your metadata.json file has been rewritten as two files:
Start Datasette like this to try them out:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detailed upgrade instructions for metadata.yaml -> datasette.yaml 1940346034 | |
1759952247 | https://github.com/simonw/datasette/issues/2199#issuecomment-1759952247 | https://api.github.com/repos/simonw/datasette/issues/2199 | IC_kwDOBm6k_c5o5r13 | simonw 9599 | 2023-10-12T16:23:10Z | 2023-10-12T16:23:10Z | OWNER | Some options for where this could go: - Directly in the release notes? I'm not sure about that, those are getting pretty long already. I think the release notes should link to relevant upgrade guides. - On a new page? We could have a "upgrade instructions" page in the documentation. - At the bottom of the new https://docs.datasette.io/en/latest/configuration.html page I'm leaning towards the third option at the moment. But... we may also need to provide upgrade instructions for plugin authors. Those could live in a separate area of the documentation though, since issues affecting end-users who configure Datasette and issues affecting plugin authors are unlikely to overlap much. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detailed upgrade instructions for metadata.yaml -> datasette.yaml 1940346034 | |
1752096661 | https://github.com/simonw/datasette/issues/2197#issuecomment-1752096661 | https://api.github.com/repos/simonw/datasette/issues/2197 | IC_kwDOBm6k_c5obt-V | simonw 9599 | 2023-10-08T16:17:04Z | 2023-10-08T16:17:29Z | OWNER | https://lite.datasette.io/?install=datasette-packages#/-/packages confirms that Datasette Lite still works ( |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
click-default-group-wheel dependency conflict 1930008379 | |
1752095961 | https://github.com/simonw/datasette/issues/2197#issuecomment-1752095961 | https://api.github.com/repos/simonw/datasette/issues/2197 | IC_kwDOBm6k_c5obtzZ | simonw 9599 | 2023-10-08T16:13:42Z | 2023-10-08T16:14:39Z | OWNER | Confirmed - I ran this in a fresh virtual environment:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
click-default-group-wheel dependency conflict 1930008379 | |
1752093039 | https://github.com/simonw/datasette/issues/2197#issuecomment-1752093039 | https://api.github.com/repos/simonw/datasette/issues/2197 | IC_kwDOBm6k_c5obtFv | simonw 9599 | 2023-10-08T15:59:53Z | 2023-10-08T15:59:53Z | OWNER | Replicated this myself:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
click-default-group-wheel dependency conflict 1930008379 | |
1793274485 | https://github.com/simonw/sqlite-utils/pull/598#issuecomment-1793274485 | https://api.github.com/repos/simonw/sqlite-utils/issues/598 | IC_kwDOCGYnMM5q4zJ1 | simonw 9599 | 2023-11-04T00:46:55Z | 2023-11-04T00:46:55Z | OWNER | Manually tested. Before: After: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fixed issue #433 - CLI eats cursor 1926729132 | |
1793272429 | https://github.com/simonw/sqlite-utils/pull/598#issuecomment-1793272429 | https://api.github.com/repos/simonw/sqlite-utils/issues/598 | IC_kwDOCGYnMM5q4ypt | simonw 9599 | 2023-11-04T00:40:34Z | 2023-11-04T00:40:34Z | OWNER | Thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fixed issue #433 - CLI eats cursor 1926729132 | |
1793274869 | https://github.com/simonw/sqlite-utils/pull/596#issuecomment-1793274869 | https://api.github.com/repos/simonw/sqlite-utils/issues/596 | IC_kwDOCGYnMM5q4zP1 | simonw 9599 | 2023-11-04T00:47:55Z | 2023-11-04T00:47:55Z | OWNER | Thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fixes mapping for time fields related to mysql, closes #522 1919296686 | |
1760417555 | https://github.com/simonw/datasette/issues/2196#issuecomment-1760417555 | https://api.github.com/repos/simonw/datasette/issues/2196 | IC_kwDOBm6k_c5o7dcT | simonw 9599 | 2023-10-12T21:54:52Z | 2023-10-12T21:54:52Z | OWNER | I can't replicate this bug. Closing, but please re-open if it's still happening. As an aside, the link I promote is https://datasette.io/discord which redirects:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Discord invite link returns 401 1910269679 | |
1730458954 | https://github.com/simonw/datasette/issues/2195#issuecomment-1730458954 | https://api.github.com/repos/simonw/datasette/issues/2195 | IC_kwDOBm6k_c5nJLVK | simonw 9599 | 2023-09-21T22:57:39Z | 2023-09-21T22:57:48Z | OWNER | Worth noting that it already sets https://github.com/simonw/datasette/blob/d97e82df3c8a3f2e97038d7080167be9bb74a68d/datasette/utils/init.py#L374-L374 I wonder if that's actually surprising behaviour that we should change before 1.0. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish` needs support for the new config/metadata split 1907765514 | |
1730457374 | https://github.com/simonw/datasette/issues/2195#issuecomment-1730457374 | https://api.github.com/repos/simonw/datasette/issues/2195 | IC_kwDOBm6k_c5nJK8e | simonw 9599 | 2023-09-21T22:56:18Z | 2023-09-21T22:56:18Z | OWNER | Maybe I should add |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish` needs support for the new config/metadata split 1907765514 | |
1730446937 | https://github.com/simonw/datasette/issues/2195#issuecomment-1730446937 | https://api.github.com/repos/simonw/datasette/issues/2195 | IC_kwDOBm6k_c5nJIZZ | simonw 9599 | 2023-09-21T22:46:42Z | 2023-09-21T22:46:52Z | OWNER | Found more when I searched for YAML. Here's the most interesting: https://github.com/labordata/warehouse/blob/0029a72fc1ceae9091932da6566f891167179012/.github/workflows/build.yml#L59
Uses both |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish` needs support for the new config/metadata split 1907765514 | |
1730441613 | https://github.com/simonw/datasette/issues/2195#issuecomment-1730441613 | https://api.github.com/repos/simonw/datasette/issues/2195 | IC_kwDOBm6k_c5nJHGN | simonw 9599 | 2023-09-21T22:42:12Z | 2023-09-21T22:42:12Z | OWNER | https://github.com/search?q=datasette+publish+extra-options+language%3AShell&type=code&l=Shell shows 17 matches, I'll copy in illustrative examples here:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish` needs support for the new config/metadata split 1907765514 | |
1730438503 | https://github.com/simonw/datasette/issues/2195#issuecomment-1730438503 | https://api.github.com/repos/simonw/datasette/issues/2195 | IC_kwDOBm6k_c5nJGVn | simonw 9599 | 2023-09-21T22:38:10Z | 2023-09-21T22:38:10Z | OWNER | I'd really like to remove Maybe it doesn't. You still need |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish` needs support for the new config/metadata split 1907765514 | |
1730437934 | https://github.com/simonw/datasette/issues/2195#issuecomment-1730437934 | https://api.github.com/repos/simonw/datasette/issues/2195 | IC_kwDOBm6k_c5nJGMu | simonw 9599 | 2023-09-21T22:37:22Z | 2023-09-21T22:37:22Z | OWNER | Here's the full help for Cloud Run at the moment:
Publish databases to Datasette running on Cloud Run Options: -m, --metadata FILENAME Path to JSON/YAML file containing metadata to publish --extra-options TEXT Extra options to pass to datasette serve --branch TEXT Install datasette from a GitHub branch e.g. main --template-dir DIRECTORY Path to directory containing custom templates --plugins-dir DIRECTORY Path to directory containing custom plugins --static MOUNT:DIRECTORY Serve static files from this directory at /MOUNT/... --install TEXT Additional packages (e.g. plugins) to install --plugin-secret <TEXT TEXT TEXT>... Secrets to pass to plugins, e.g. --plugin- secret datasette-auth-github client_id xxx --version-note TEXT Additional note to show on /-/versions --secret TEXT Secret used for signing secure values, such as signed cookies --title TEXT Title for metadata --license TEXT License label for metadata --license_url TEXT License URL for metadata --source TEXT Source label for metadata --source_url TEXT Source URL for metadata --about TEXT About label for metadata --about_url TEXT About URL for metadata -n, --name TEXT Application name to use when building --service TEXT Cloud Run service to deploy (or over-write) --spatialite Enable SpatialLite extension --show-files Output the generated Dockerfile and metadata.json --memory TEXT Memory to allocate in Cloud Run, e.g. 1Gi --cpu [1|2|4] Number of vCPUs to allocate in Cloud Run --timeout INTEGER Build timeout in seconds --apt-get-install TEXT Additional packages to apt-get install --max-instances INTEGER Maximum Cloud Run instances --min-instances INTEGER Minimum Cloud Run instances --help Show this message and exit. ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish` needs support for the new config/metadata split 1907765514 | |
1730437237 | https://github.com/simonw/datasette/issues/2195#issuecomment-1730437237 | https://api.github.com/repos/simonw/datasette/issues/2195 | IC_kwDOBm6k_c5nJGB1 | simonw 9599 | 2023-09-21T22:36:22Z | 2023-09-21T22:36:22Z | OWNER | I think the actual design of this is pretty simple. Current help starts like this: ``` Usage: datasette publish cloudrun [OPTIONS] [FILES]... Publish databases to Datasette running on Cloud Run Options:
-m, --metadata FILENAME Path to JSON/YAML file containing metadata
to publish
--extra-options TEXT Extra options to pass to datasette serve
So I think Here's the relevant help section from |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish` needs support for the new config/metadata split 1907765514 | |
1730313565 | https://github.com/simonw/datasette/issues/2195#issuecomment-1730313565 | https://api.github.com/repos/simonw/datasette/issues/2195 | IC_kwDOBm6k_c5nIn1d | simonw 9599 | 2023-09-21T21:16:31Z | 2023-09-21T21:16:31Z | OWNER | The I want to deprecate it and switch to a different, better design to address the same problem. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish` needs support for the new config/metadata split 1907765514 | |
1730312128 | https://github.com/simonw/datasette/issues/2195#issuecomment-1730312128 | https://api.github.com/repos/simonw/datasette/issues/2195 | IC_kwDOBm6k_c5nInfA | simonw 9599 | 2023-09-21T21:15:11Z | 2023-09-21T21:15:11Z | OWNER | As soon as Which should fix this broken demo from https://simonwillison.net/2022/Dec/2/datasette-write-api/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish` needs support for the new config/metadata split 1907765514 | |
1730362441 | https://github.com/simonw/datasette/issues/2194#issuecomment-1730362441 | https://api.github.com/repos/simonw/datasette/issues/2194 | IC_kwDOBm6k_c5nIzxJ | simonw 9599 | 2023-09-21T22:08:19Z | 2023-09-21T22:08:19Z | OWNER | That worked https://github.com/simonw/datasette/commit/e4f868801a6633400045f59584cfe650961c3fa6 is the latest commit right now and https://latest.datasette.io/-/versions shows that as the deployed version. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy failing with "plugins/alternative_route.py: Not a directory" 1907695234 | |
1730305920 | https://github.com/simonw/datasette/issues/2194#issuecomment-1730305920 | https://api.github.com/repos/simonw/datasette/issues/2194 | IC_kwDOBm6k_c5nIl-A | simonw 9599 | 2023-09-21T21:09:21Z | 2023-09-21T21:09:21Z | OWNER | I'm going to disable this bit of the deploy for the moment, which will break the demo linked to from https://simonwillison.net/2022/Dec/2/datasette-write-api/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy failing with "plugins/alternative_route.py: Not a directory" 1907695234 | |
1730259871 | https://github.com/simonw/datasette/issues/2194#issuecomment-1730259871 | https://api.github.com/repos/simonw/datasette/issues/2194 | IC_kwDOBm6k_c5nIauf | simonw 9599 | 2023-09-21T20:34:09Z | 2023-09-21T20:34:09Z | OWNER | ... which raises the challenge that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy failing with "plugins/alternative_route.py: Not a directory" 1907695234 | |
1730258302 | https://github.com/simonw/datasette/issues/2194#issuecomment-1730258302 | https://api.github.com/repos/simonw/datasette/issues/2194 | IC_kwDOBm6k_c5nIaV- | simonw 9599 | 2023-09-21T20:32:53Z | 2023-09-21T20:33:02Z | OWNER | Correct usage is now:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy failing with "plugins/alternative_route.py: Not a directory" 1907695234 | |
1730256435 | https://github.com/simonw/datasette/issues/2194#issuecomment-1730256435 | https://api.github.com/repos/simonw/datasette/issues/2194 | IC_kwDOBm6k_c5nIZ4z | simonw 9599 | 2023-09-21T20:31:22Z | 2023-09-21T20:31:31Z | OWNER | New error: "Error: Metadata should end with .json" https://github.com/simonw/datasette/actions/runs/6266720924/job/17018265851 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy failing with "plugins/alternative_route.py: Not a directory" 1907695234 | |
1730245204 | https://github.com/simonw/datasette/issues/2194#issuecomment-1730245204 | https://api.github.com/repos/simonw/datasette/issues/2194 | IC_kwDOBm6k_c5nIXJU | simonw 9599 | 2023-09-21T20:21:42Z | 2023-09-21T20:21:42Z | OWNER | I think I see the problem - it's from here: https://github.com/simonw/datasette/commit/b2ec8717c3619260a1b535eea20e618bf95aa30b#diff-5dbc88d6e5c3615caf10e32a9d6fc6ff683f5b5814948928cb84c3ab91c038b6L770 The |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy failing with "plugins/alternative_route.py: Not a directory" 1907695234 | |
1730242734 | https://github.com/simonw/datasette/issues/2194#issuecomment-1730242734 | https://api.github.com/repos/simonw/datasette/issues/2194 | IC_kwDOBm6k_c5nIWiu | simonw 9599 | 2023-09-21T20:19:29Z | 2023-09-21T20:19:29Z | OWNER | Maybe |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy failing with "plugins/alternative_route.py: Not a directory" 1907695234 | |
1730241813 | https://github.com/simonw/datasette/issues/2194#issuecomment-1730241813 | https://api.github.com/repos/simonw/datasette/issues/2194 | IC_kwDOBm6k_c5nIWUV | simonw 9599 | 2023-09-21T20:18:40Z | 2023-09-21T20:18:40Z | OWNER | This looks to be the step that is failing: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Deploy failing with "plugins/alternative_route.py: Not a directory" 1907695234 | |
1730353006 | https://github.com/simonw/datasette/issues/2193#issuecomment-1730353006 | https://api.github.com/repos/simonw/datasette/issues/2193 | IC_kwDOBm6k_c5nIxdu | simonw 9599 | 2023-09-21T21:56:43Z | 2023-09-21T21:56:43Z | OWNER | The test fails as expected now. Closing this issue, will solve the remaining problems in: - #2057 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Test DATASETTE_LOAD_PLUGINS" test shows errors but did not fail the CI run 1907655261 | |
1730352111 | https://github.com/simonw/datasette/issues/2193#issuecomment-1730352111 | https://api.github.com/repos/simonw/datasette/issues/2193 | IC_kwDOBm6k_c5nIxPv | simonw 9599 | 2023-09-21T21:55:41Z | 2023-09-21T21:55:41Z | OWNER | https://github.com/simonw/datasette/actions/runs/6267146158/job/17019594849 failed on 3.9 this time.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Test DATASETTE_LOAD_PLUGINS" test shows errors but did not fail the CI run 1907655261 | |
1730208566 | https://github.com/simonw/datasette/issues/2193#issuecomment-1730208566 | https://api.github.com/repos/simonw/datasette/issues/2193 | IC_kwDOBm6k_c5nIOM2 | simonw 9599 | 2023-09-21T19:55:19Z | 2023-09-21T19:55:19Z | OWNER | Yes, the new script seems to work. On Python 3.11:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Test DATASETTE_LOAD_PLUGINS" test shows errors but did not fail the CI run 1907655261 | |
1730206629 | https://github.com/simonw/datasette/issues/2193#issuecomment-1730206629 | https://api.github.com/repos/simonw/datasette/issues/2193 | IC_kwDOBm6k_c5nINul | simonw 9599 | 2023-09-21T19:53:39Z | 2023-09-21T19:53:39Z | OWNER |
It suggested doing this instead: ```bash !/bin/bashPLUGINS=$(datasette plugins) if ! echo "$PLUGINS" | jq 'any(.[]; .name == "datasette-json-html")' | grep -q true; then echo "Test failed: datasette-json-html not found" exit 1 fi PLUGINS2=$(DATASETTE_LOAD_PLUGINS=datasette-init datasette plugins) if ! echo "$PLUGINS2" | jq 'any(.[]; .name == "datasette-json-html")' | grep -q false; then echo "Test failed: datasette-json-html should not have been loaded" exit 1 fi if ! echo "$PLUGINS2" | jq 'any(.[]; .name == "datasette-init")' | grep -q true; then echo "Test failed: datasette-init should have been loaded" exit 1 fi PLUGINS3=$(DATASETTE_LOAD_PLUGINS='' datasette plugins) if ! echo "$PLUGINS3" | grep -q '[]'; then echo "Test failed: datasette plugins should have returned []" exit 1 fi ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Test DATASETTE_LOAD_PLUGINS" test shows errors but did not fail the CI run 1907655261 | |
1730203356 | https://github.com/simonw/datasette/issues/2193#issuecomment-1730203356 | https://api.github.com/repos/simonw/datasette/issues/2193 | IC_kwDOBm6k_c5nIM7c | simonw 9599 | 2023-09-21T19:51:04Z | 2023-09-21T19:51:04Z | OWNER | The script: I'm not sure why those |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Test DATASETTE_LOAD_PLUGINS" test shows errors but did not fail the CI run 1907655261 | |
1730202533 | https://github.com/simonw/datasette/issues/2193#issuecomment-1730202533 | https://api.github.com/repos/simonw/datasette/issues/2193 | IC_kwDOBm6k_c5nIMul | simonw 9599 | 2023-09-21T19:50:22Z | 2023-09-21T19:50:22Z | OWNER | Here's the failure in CI, which did not cause the workflow to fail even though it should have: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Test DATASETTE_LOAD_PLUGINS" test shows errors but did not fail the CI run 1907655261 | |
1728504633 | https://github.com/simonw/datasette/pull/2191#issuecomment-1728504633 | https://api.github.com/repos/simonw/datasette/issues/2191 | IC_kwDOBm6k_c5nBuM5 | simonw 9599 | 2023-09-20T22:24:51Z | 2023-09-20T22:25:16Z | OWNER | The |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move `permissions`, `allow` blocks, canned queries and more out of `metadata.yaml` and into `datasette.yaml` 1901768721 | |
1728503623 | https://github.com/simonw/datasette/pull/2191#issuecomment-1728503623 | https://api.github.com/repos/simonw/datasette/issues/2191 | IC_kwDOBm6k_c5nBt9H | simonw 9599 | 2023-09-20T22:23:33Z | 2023-09-20T22:24:10Z | OWNER | This is one of the most interesting illustrative examples in the new code: Interesting to note that it now has canned queries in it, which include this bit: It looks like metadata, but in this case it's configuration. That blur between metadata and configuration at the canned query level still feels a little bit odd to me, but I still think we're going in the right direction with it. Also interesting, from that same file: There are a few things in that metadata block that are arguably configuration, not metadata - for example: I think Most of that stuff is arguably configuration too, with the exception of the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move `permissions`, `allow` blocks, canned queries and more out of `metadata.yaml` and into `datasette.yaml` 1901768721 | |
1728498221 | https://github.com/simonw/datasette/pull/2191#issuecomment-1728498221 | https://api.github.com/repos/simonw/datasette/issues/2191 | IC_kwDOBm6k_c5nBsot | simonw 9599 | 2023-09-20T22:17:26Z | 2023-09-20T22:17:26Z | OWNER | I tested this locally for permissions like this.
http://127.0.0.1:8001/-/metadata returned |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Move `permissions`, `allow` blocks, canned queries and more out of `metadata.yaml` and into `datasette.yaml` 1901768721 | |
1759948683 | https://github.com/simonw/datasette/pull/2190#issuecomment-1759948683 | https://api.github.com/repos/simonw/datasette/issues/2190 | IC_kwDOBm6k_c5o5q-L | simonw 9599 | 2023-10-12T16:20:41Z | 2023-10-12T16:20:41Z | OWNER | I'm going to land this and open a new issue for the upgrade instructions. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Raise an exception if a "plugins" block exists in metadata.json 1901483874 | |
1759947534 | https://github.com/simonw/datasette/pull/2190#issuecomment-1759947534 | https://api.github.com/repos/simonw/datasette/issues/2190 | IC_kwDOBm6k_c5o5qsO | simonw 9599 | 2023-10-12T16:19:59Z | 2023-10-12T16:19:59Z | OWNER | It would be nice if we could catch that and turn that into a less intimidating Click exception too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Raise an exception if a "plugins" block exists in metadata.json 1901483874 | |
1759947021 | https://github.com/simonw/datasette/pull/2190#issuecomment-1759947021 | https://api.github.com/repos/simonw/datasette/issues/2190 | IC_kwDOBm6k_c5o5qkN | simonw 9599 | 2023-10-12T16:19:38Z | 2023-10-12T16:19:38Z | OWNER | This looks good and works well. The error from this currently looks like:
I think we should link directly to documentation that tells people how to perform this upgrade. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Raise an exception if a "plugins" block exists in metadata.json 1901483874 | |
1730388418 | https://github.com/simonw/datasette/issues/2189#issuecomment-1730388418 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5nI6HC | simonw 9599 | 2023-09-21T22:26:19Z | 2023-09-21T22:26:19Z | OWNER | 1.0a7 is out with this fix as well now: https://docs.datasette.io/en/1.0a7/changelog.html#a7-2023-09-21 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1730232308 | https://github.com/simonw/datasette/issues/2189#issuecomment-1730232308 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5nIT_0 | simonw 9599 | 2023-09-21T20:11:16Z | 2023-09-21T20:11:16Z | OWNER | We're planning a breaking change in Since that's a breaking change I'm going to ship 1.0a7 right now with this fix, then ship that breaking change as |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1730231404 | https://github.com/simonw/datasette/issues/2189#issuecomment-1730231404 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5nITxs | simonw 9599 | 2023-09-21T20:10:28Z | 2023-09-21T20:10:28Z | OWNER | Release 0.64.4: https://docs.datasette.io/en/stable/changelog.html#v0-64-4 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1730162283 | https://github.com/simonw/datasette/issues/2189#issuecomment-1730162283 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5nIC5r | simonw 9599 | 2023-09-21T19:19:47Z | 2023-09-21T19:19:47Z | OWNER | I'm going to release this in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1726749355 | https://github.com/simonw/datasette/issues/2189#issuecomment-1726749355 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5m7Bqr | simonw 9599 | 2023-09-20T01:28:16Z | 2023-09-20T01:28:16Z | OWNER | Added a note to that example in the documentation: https://github.com/simonw/datasette/blob/4e6a34179eaedec44c1263275d7592fd83d7e2ac/docs/internals.rst?plain=1#L1320 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724325068 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724325068 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxxzM | simonw 9599 | 2023-09-18T20:29:41Z | 2023-09-18T20:29:41Z | OWNER | The one other thing affected by this change is this documentation, which suggests a not-actually-safe pattern: https://github.com/simonw/datasette/blob/6ed7908580fa2ba9297c3225d85c56f8b08b9937/docs/internals.rst#L1292-L1321 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724317367 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724317367 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxv63 | simonw 9599 | 2023-09-18T20:25:44Z | 2023-09-18T20:25:44Z | OWNER | My current hunch is that SQLite gets unhappy if multiple threads access the same underlying C object - which sometimes happens with in-memory connections and Datasette presumably because they are faster than file-backed databases. I'm going to remove the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724315591 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724315591 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxvfH | simonw 9599 | 2023-09-18T20:24:30Z | 2023-09-18T20:24:30Z | OWNER | Using SQLite In Multi-Threaded Applications That indicates that there's a SQLite option for "Serialized" mode where it's safe to access anything SQLite provides from multiple threads, but as far as I can tell Python doesn't give you an option to turn that mode on or off for a connection - you can read On my Mac |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724305169 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724305169 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxs8R | simonw 9599 | 2023-09-18T20:16:22Z | 2023-09-18T20:16:36Z | OWNER | Looking again at this code:
Python docs at https://docs.python.org/3/library/sqlite3.html
I think I'm playing with fire by allowing multiple threads to access the same connection without doing my own serialization of those requests. I do do that using the write connection - and in this particular case the bug isn't coming from write queries, it's coming from read queries - but perhaps SQLite has issues with threading for reads, too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724298817 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724298817 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxrZB | simonw 9599 | 2023-09-18T20:11:26Z | 2023-09-18T20:11:26Z | OWNER | Now that I've confirmed that parallel query execution of the kind introduced in https://github.com/simonw/datasette/commit/942411ef946e9a34a2094944d3423cddad27efd3 can cause hangs (presumably some kind of locking issue) against in-memory databases, some options:
The parallel execution work is something I was playing with last year in the hope of speeding up Datasette pages like the table page which need to execute a bunch of queries - one for each facet, plus one for each column to see if it should be suggested as a facet. I wrote about this at the time here: https://simonwillison.net/2022/May/6/weeknotes/ My hope was that despite Python's GIL this optimization would still help, because the SQLite C module releases the GIL once it gets to SQLite. But... that didn't hold up. It looked like enough work was happening in Python land with the GIL that the optimization didn't improve things. Running the ... which it now has! But it will still be a year or two before it fully lands: https://discuss.python.org/t/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional-in-cpython/30474 So I'm not particularly concerned about dropping the parallel execution. If I do drop it though do I leave the potentially complex code in that relates to it? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724281824 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724281824 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxnPg | simonw 9599 | 2023-09-18T19:58:06Z | 2023-09-18T19:58:06Z | OWNER | I also confirmed that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724278386 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724278386 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxmZy | simonw 9599 | 2023-09-18T19:55:32Z | 2023-09-18T19:55:32Z | OWNER | OK it looks like it found it! ``` 942411ef946e9a34a2094944d3423cddad27efd3 is the first bad commit commit Author: Simon Willison swillison@gmail.com Date: Tue Apr 26 15:48:56 2022 -0700
datasette/views/table.py | 93 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 26 deletions(-) bisect found first bad commit ``` https://github.com/simonw/datasette/commit/942411ef946e9a34a2094944d3423cddad27efd3 does look like the cause of this problem. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724276917 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724276917 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxmC1 | simonw 9599 | 2023-09-18T19:54:23Z | 2023-09-18T19:54:23Z | OWNER | Turned out I wasn't running the FIxed that with Now I'm seeing some passes, which look like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724263390 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724263390 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxive | simonw 9599 | 2023-09-18T19:44:03Z | 2023-09-18T19:44:03Z | OWNER | I knocked it down to 1 retry just to see what happened. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724259229 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724259229 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxhud | simonw 9599 | 2023-09-18T19:40:56Z | 2023-09-18T19:40:56Z | OWNER | I tried it with a path of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724258279 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724258279 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxhfn | simonw 9599 | 2023-09-18T19:40:13Z | 2023-09-18T19:40:13Z | OWNER | Output while it is running looks like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724257290 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724257290 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxhQK | simonw 9599 | 2023-09-18T19:39:27Z | 2023-09-18T19:44:26Z | OWNER | I'm now trying this test script: ```bash !/bin/bashport=8064 Start datasette server in the background and get its PIDdatasette pottery2.db -p $port & server_pid=$! Wait for a moment to ensure the server has time to start upsleep 2 Initialize counters and parametersretry_count=0 max_retries=3 success_count=0 path="/airtable_refs/airtable_refs" Function to run curl with a timeoutfunction test_curl { # Run the curl command with a timeout of 3 seconds timeout 3s curl -s "http://localhost:${port}${path}" > /dev/null if [ $? -eq 0 ]; then # Curl was successful ((success_count++)) fi } Try three parallel curl requestswhile [[ $retry_count -lt $max_retries ]]; do # Reset the success counter success_count=0
done Kill the datasette serverecho "Killing datasette server with PID $server_pid" kill -9 $server_pid sleep 2 Print resultif [[ $success_count -eq 3 ]]; then
echo "All three curls succeeded."
exit 0
else
echo "Error: Not all curls succeeded after $retry_count attempts."
exit 1
fi
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724159882 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724159882 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxJeK | simonw 9599 | 2023-09-18T18:32:29Z | 2023-09-18T18:32:29Z | OWNER | This worked, including on macOS even though GPT-4 thought !/bin/bashRun the command with a timeout of 5 secondstimeout 5s datasette pottery2.db -p 8045 --get /airtable_refs/airtable_refs Check the exit code from timeoutif [ $? -eq 124 ]; then echo "Error: Command timed out after 5 seconds." exit 1 fi ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724157182 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724157182 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mxIz- | simonw 9599 | 2023-09-18T18:30:30Z | 2023-09-18T18:30:30Z | OWNER | OK, I can trigger the bug like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724089666 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724089666 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mw4VC | simonw 9599 | 2023-09-18T17:49:24Z | 2023-09-18T17:49:24Z | OWNER | I switched that particular implementation to using an on-disk database instead of an in-memory database and could no longer recreate the bug. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724084199 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724084199 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mw2_n | simonw 9599 | 2023-09-18T17:47:01Z | 2023-09-18T17:47:01Z | OWNER | I managed to trigger it by loading |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724083324 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724083324 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mw2x8 | simonw 9599 | 2023-09-18T17:46:21Z | 2023-09-18T17:46:21Z | OWNER | Sometimes it takes a few clicks for the bug to occur, but it does seem to always be within the in-memory database. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724081909 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724081909 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mw2b1 | simonw 9599 | 2023-09-18T17:45:27Z | 2023-09-18T17:45:27Z | OWNER | Maybe it's not related to faceting - I just got it on a hit to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724072390 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724072390 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mw0HG | simonw 9599 | 2023-09-18T17:39:06Z | 2023-09-18T17:39:06Z | OWNER | Landing a version of that test anyway. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724064440 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724064440 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mwyK4 | simonw 9599 | 2023-09-18T17:36:00Z | 2023-09-18T17:36:00Z | OWNER | I wrote this test, but it passes:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724055823 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724055823 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mwwEP | simonw 9599 | 2023-09-18T17:31:10Z | 2023-09-18T17:31:10Z | OWNER | That line was added in https://github.com/simonw/datasette/commit/942411ef946e9a34a2094944d3423cddad27efd3 which first shipped in 0.62a0. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724051886 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724051886 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mwvGu | simonw 9599 | 2023-09-18T17:28:20Z | 2023-09-18T17:30:30Z | OWNER | The bug exhibits when I try to add a facet. I think it's caused by the parallel query execution I added to facets at some point. http://127.0.0.1:8045/airtable_refs/airtable_refs - no error http://127.0.0.1:8045/airtable_refs/airtable_refs?_facet=table_name#facet-table_name - hangs the server Crucial line in the traceback:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724049538 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724049538 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mwuiC | simonw 9599 | 2023-09-18T17:26:44Z | 2023-09-18T17:26:44Z | OWNER | Just managed to get this exception trace:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724048314 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724048314 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mwuO6 | simonw 9599 | 2023-09-18T17:25:55Z | 2023-09-18T17:25:55Z | OWNER | The good news is that this bug is currently unlikely to affect most users since named in-memory databases (created using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1724045748 | https://github.com/simonw/datasette/issues/2189#issuecomment-1724045748 | https://api.github.com/repos/simonw/datasette/issues/2189 | IC_kwDOBm6k_c5mwtm0 | simonw 9599 | 2023-09-18T17:24:07Z | 2023-09-18T17:24:07Z | OWNER | I need reliable steps to reproduce, then I can bisect and figure out which exact version of Datasette introduced the problem. I have a hunch that it relates to changes made to the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Server hang on parallel execution of queries to named in-memory databases 1901416155 | |
1722662413 | https://github.com/simonw/datasette/issues/2188#issuecomment-1722662413 | https://api.github.com/repos/simonw/datasette/issues/2188 | IC_kwDOBm6k_c5mrb4N | simonw 9599 | 2023-09-18T02:01:34Z | 2023-09-18T02:01:34Z | OWNER | I'm not interested in these in Datasette core itself, but I think they have a ton of potential for plugins. I wonder what the best way to handle that would be? Right now it's possible to write a plugin that adds extra routes, so someone could build a If this could return JSON, they could add JavaScript to the Something that could make that more ergonomic might be the plugin hook that allows plugins to add extra HTML to different core database pages - e.g. adding a "Query this database using PRQL" button or link or even a full form at the top of that database page. That's this issue here:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin Hooks for "compile to SQL" languages 1900026059 | |
1721742055 | https://github.com/simonw/datasette/issues/2186#issuecomment-1721742055 | https://api.github.com/repos/simonw/datasette/issues/2186 | IC_kwDOBm6k_c5mn7Ln | simonw 9599 | 2023-09-15T19:27:59Z | 2023-09-15T19:27:59Z | OWNER | This feels like it might be quite a nice pattern generally - providing optional arguments to plugins and views that can be |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for register_output_renderer hooks to access full count 1898927976 | |
1721740872 | https://github.com/simonw/datasette/issues/2186#issuecomment-1721740872 | https://api.github.com/repos/simonw/datasette/issues/2186 | IC_kwDOBm6k_c5mn65I | simonw 9599 | 2023-09-15T19:26:51Z | 2023-09-15T19:27:19Z | OWNER | Here's where it's called at the moment: https://github.com/simonw/datasette/blob/16f0b6d8222d06682a31b904d0a402c391ae1c1c/datasette/views/base.py#L297-L313 And the docs: https://github.com/simonw/datasette/blob/1.0a6/docs/plugin_hooks.rst#register-output-renderer-datasette I'm tempted to add a
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for register_output_renderer hooks to access full count 1898927976 | |
1714920708 | https://github.com/simonw/sqlite-utils/issues/594#issuecomment-1714920708 | https://api.github.com/repos/simonw/sqlite-utils/issues/594 | IC_kwDOCGYnMM5mN50E | simonw 9599 | 2023-09-12T03:51:13Z | 2023-09-12T03:51:13Z | OWNER | Changing this without breaking backwards compatibility (and forcing a 4.0 release) will be tricky, because I could swap it out for a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Represent compound foreign keys in table.foreign_keys output 1891614971 | |
1714919806 | https://github.com/simonw/sqlite-utils/issues/594#issuecomment-1714919806 | https://api.github.com/repos/simonw/sqlite-utils/issues/594 | IC_kwDOCGYnMM5mN5l- | simonw 9599 | 2023-09-12T03:49:41Z | 2023-09-12T03:49:41Z | OWNER | Digging in a bit more: ```pycon
Right now I ignore those columns entirely: https://github.com/simonw/sqlite-utils/blob/622c3a5a7dd53a09c029e2af40c2643fe7579340/sqlite_utils/db.py#L1523-L1540 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Represent compound foreign keys in table.foreign_keys output 1891614971 | |
1718316733 | https://github.com/simonw/datasette/pull/2183#issuecomment-1718316733 | https://api.github.com/repos/simonw/datasette/issues/2183 | IC_kwDOBm6k_c5ma269 | simonw 9599 | 2023-09-13T21:05:36Z | 2023-09-13T21:05:36Z | OWNER | I'm going to land this and make any further documentation tweaks on |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette.yaml` plugin support 1891212159 | |
1714699724 | https://github.com/simonw/datasette/pull/2183#issuecomment-1714699724 | https://api.github.com/repos/simonw/datasette/issues/2183 | IC_kwDOBm6k_c5mND3M | simonw 9599 | 2023-09-11T23:01:36Z | 2023-09-11T23:02:30Z | OWNER | On thinking about this further, I'm fine releasing it as another alpha provided it causes Datasette to error loudly with an explanatory message if you attempt to load Something like this:
For added usability points, let's have it suggest |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette.yaml` plugin support 1891212159 | |
1711054840 | https://github.com/simonw/datasette/pull/2181#issuecomment-1711054840 | https://api.github.com/repos/simonw/datasette/issues/2181 | IC_kwDOBm6k_c5l_J_4 | simonw 9599 | 2023-09-08T04:23:47Z | 2023-09-08T04:23:47Z | OWNER | I've implemented this hook once now in: - https://github.com/datasette/datasette-remote-actors And built and tested a debug tool for it in: - https://github.com/datasette/datasette-debug-actors-from-ids I'm now confident in the design of this plugin hook, I'm going to land it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
actors_from_ids plugin hook and datasette.actors_from_ids() method 1886812002 | |
1710969448 | https://github.com/simonw/datasette/pull/2181#issuecomment-1710969448 | https://api.github.com/repos/simonw/datasette/issues/2181 | IC_kwDOBm6k_c5l-1Jo | simonw 9599 | 2023-09-08T01:53:27Z | 2023-09-08T01:53:27Z | OWNER | Documentation preview: - https://datasette--2181.org.readthedocs.build/en/2181/internals.html#await-actors-from-ids-actor-ids - https://datasette--2181.org.readthedocs.build/en/2181/plugin_hooks.html#plugin-hook-actors-from-ids |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
actors_from_ids plugin hook and datasette.actors_from_ids() method 1886812002 | |
1712895084 | https://github.com/simonw/datasette/issues/2180#issuecomment-1712895084 | https://api.github.com/repos/simonw/datasette/issues/2180 | IC_kwDOBm6k_c5mGLRs | simonw 9599 | 2023-09-10T17:44:14Z | 2023-09-10T17:44:14Z | OWNER | Used by |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook: `actors_from_ids()` 1886791100 | |
1711057080 | https://github.com/simonw/datasette/issues/2180#issuecomment-1711057080 | https://api.github.com/repos/simonw/datasette/issues/2180 | IC_kwDOBm6k_c5l_Ki4 | simonw 9599 | 2023-09-08T04:28:03Z | 2023-09-08T04:28:03Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook: `actors_from_ids()` 1886791100 | ||
1711054624 | https://github.com/simonw/datasette/issues/2180#issuecomment-1711054624 | https://api.github.com/repos/simonw/datasette/issues/2180 | IC_kwDOBm6k_c5l_J8g | simonw 9599 | 2023-09-08T04:23:23Z | 2023-09-08T04:23:23Z | OWNER | I've implemented this hook once now in: - https://github.com/datasette/datasette-remote-actors And built and tested a debug tool for it in: - https://github.com/datasette/datasette-debug-actors-from-ids I'm now confident in the design of this plugin hook, I'm going to land it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook: `actors_from_ids()` 1886791100 | |
1711028355 | https://github.com/simonw/datasette/issues/2180#issuecomment-1711028355 | https://api.github.com/repos/simonw/datasette/issues/2180 | IC_kwDOBm6k_c5l_DiD | simonw 9599 | 2023-09-08T03:36:02Z | 2023-09-08T03:36:02Z | OWNER | I shipped the first version of When I land this plugin in a Datasette release I need to update that repo to depend on the new alpha. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook: `actors_from_ids()` 1886791100 | |
1710969339 | https://github.com/simonw/datasette/issues/2180#issuecomment-1710969339 | https://api.github.com/repos/simonw/datasette/issues/2180 | IC_kwDOBm6k_c5l-1H7 | simonw 9599 | 2023-09-08T01:53:16Z | 2023-09-08T01:53:16Z | OWNER | Documentation preview: - https://datasette--2181.org.readthedocs.build/en/2181/internals.html#await-actors-from-ids-actor-ids - https://datasette--2181.org.readthedocs.build/en/2181/plugin_hooks.html#plugin-hook-actors-from-ids |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook: `actors_from_ids()` 1886791100 |
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]);
updated_at (date) >30 ✖