html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,issue,performed_via_github_app https://github.com/simonw/datasette/issues/1802#issuecomment-1237537205,https://api.github.com/repos/simonw/datasette/issues/1802,1237537205,IC_kwDOBm6k_c5Jw1G1,9599,2022-09-06T00:08:03Z,2022-09-06T00:08:46Z,OWNER,"I'm suspicious that this hack here may be hurting me: https://github.com/simonw/datasette/blob/b91e17280c05bbb9cf97432081bdcea8665879f9/tests/test_cli.py#L25-L29 I added that two years ago in https://github.com/simonw/datasette/commit/3159263f05ac4baf968929d59384d9223a539071","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1362402998, https://github.com/simonw/datasette/issues/1802#issuecomment-1237540231,https://api.github.com/repos/simonw/datasette/issues/1802,1237540231,IC_kwDOBm6k_c5Jw12H,9599,2022-09-06T00:16:10Z,2022-09-06T00:16:10Z,OWNER,Removing the `ensure_eventloop()` hack produced the exact same test failure: https://github.com/simonw/datasette/runs/8197570109?check_suite_focus=true,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1362402998, https://github.com/simonw/datasette/issues/1802#issuecomment-1237542508,https://api.github.com/repos/simonw/datasette/issues/1802,1237542508,IC_kwDOBm6k_c5Jw2Zs,9599,2022-09-06T00:22:37Z,2022-09-06T00:22:37Z,OWNER,"The code that I control that shows up in the trace is this: https://github.com/simonw/datasette/blob/fd1086c6867f3e3582b1eca456e4ea95f6cecf8b/datasette/app.py#L234","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1362402998, https://github.com/simonw/datasette/issues/1802#issuecomment-1237542803,https://api.github.com/repos/simonw/datasette/issues/1802,1237542803,IC_kwDOBm6k_c5Jw2eT,9599,2022-09-06T00:23:27Z,2022-09-06T00:23:27Z,OWNER,"Trying this fix: ```diff diff --git a/datasette/app.py b/datasette/app.py index f2a6763a5..b17888a07 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -231,7 +231,13 @@ def __init__( self.inspect_data = inspect_data self.immutables = set(immutables or []) self.databases = collections.OrderedDict() - self._refresh_schemas_lock = asyncio.Lock() + try: + self._refresh_schemas_lock = asyncio.Lock() + except RuntimeError as rex: + if ""There is no current event loop in thread"" in str(rex): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + self._refresh_schemas_lock = asyncio.Lock() self.crossdb = crossdb self.nolock = nolock if memory or crossdb or not self.files: ``` This is mainly superstition at this point! I found that recipe on https://techoverflow.net/2020/10/01/how-to-fix-python-asyncio-runtimeerror-there-is-no-current-event-loop-in-thread/","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1362402998, https://github.com/simonw/datasette/issues/1802#issuecomment-1237545794,https://api.github.com/repos/simonw/datasette/issues/1802,1237545794,IC_kwDOBm6k_c5Jw3NC,9599,2022-09-06T00:31:31Z,2022-09-06T00:31:31Z,OWNER,"Well I'm not proud of it, but that did seem to do the trick!","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1362402998, https://github.com/simonw/datasette/pull/1793#issuecomment-1237549678,https://api.github.com/repos/simonw/datasette/issues/1793,1237549678,IC_kwDOBm6k_c5Jw4Ju,9599,2022-09-06T00:41:24Z,2022-09-06T00:41:24Z,OWNER,I don't agree with the pros and cons listed in that article.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1351949898, https://github.com/simonw/datasette/pull/1794#issuecomment-1237551309,https://api.github.com/repos/simonw/datasette/issues/1794,1237551309,IC_kwDOBm6k_c5Jw4jN,9599,2022-09-06T00:45:26Z,2022-09-06T00:45:26Z,OWNER,Thanks for this - I've seen this issue too. Good fix.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1352931076, https://github.com/simonw/datasette/pull/1757#issuecomment-1237553237,https://api.github.com/repos/simonw/datasette/issues/1757,1237553237,IC_kwDOBm6k_c5Jw5BV,9599,2022-09-06T00:51:21Z,2022-09-06T00:51:21Z,OWNER,"Interesting feature idea. It's a weird edge-case, but it's the kind of thing I worry about: what if the user has a column called `*`? This is technically allowed in SQLite, even though it's vastly unlikely. On that basis, I think `?_json_all=1` would be a better design here than `?_json=*` - since it removes any possible ambiguity.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1268121674, https://github.com/simonw/datasette/issues/1804#issuecomment-1238308213,https://api.github.com/repos/simonw/datasette/issues/1804,1238308213,IC_kwDOBm6k_c5JzxV1,9599,2022-09-06T15:27:31Z,2022-09-06T15:27:31Z,OWNER,"Relevant example from https://docs.datasette.io/en/stable/metadata.html#per-database-and-per-table-metadata ```json { ""databases"": { ""database1"": { ""tables"": { ""example_table"": { ""sortable_columns"": [ ""height"", ""weight"" ] } } } } } ``` I think this becomes `""facet_size"": ""...""` at the table level, to match the name of the `?_facet_size=100` querystring parameter.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1363440999, https://github.com/simonw/datasette/issues/1804#issuecomment-1238309481,https://api.github.com/repos/simonw/datasette/issues/1804,1238309481,IC_kwDOBm6k_c5Jzxpp,9599,2022-09-06T15:28:35Z,2022-09-06T15:28:35Z,OWNER,"I'm going to do this just at the table level - if you want it at the database level I would imagine usually you would be OK running `--setting default_facet_size 10` instead, since most Datasette instances only expose a single database. I may reconsider this in the future.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1363440999, https://github.com/simonw/datasette/issues/1804#issuecomment-1238311565,https://api.github.com/repos/simonw/datasette/issues/1804,1238311565,IC_kwDOBm6k_c5JzyKN,9599,2022-09-06T15:30:19Z,2022-09-06T15:30:19Z,OWNER,Relevant code: https://github.com/simonw/datasette/blob/c9d1943aede436fa3413fd49bc56335cbda4ad07/datasette/facets.py#L102-L110,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1363440999, https://github.com/simonw/datasette/issues/1804#issuecomment-1238313314,https://api.github.com/repos/simonw/datasette/issues/1804,1238313314,IC_kwDOBm6k_c5Jzyli,9599,2022-09-06T15:31:36Z,2022-09-06T15:31:36Z,OWNER,"In that code `self.table` is the name of the current table, but can also be `None` if the faceting is being run against a custom SQL query instead (a future feature). `self.database` is the name of the current database. So reading metadata via `self.ds` should work fine.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1363440999, https://github.com/simonw/datasette/issues/1804#issuecomment-1238347451,https://api.github.com/repos/simonw/datasette/issues/1804,1238347451,IC_kwDOBm6k_c5Jz667,9599,2022-09-06T15:59:26Z,2022-09-06T15:59:26Z,OWNER,Still needs documentation.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1363440999, https://github.com/simonw/datasette/issues/1805#issuecomment-1238491632,https://api.github.com/repos/simonw/datasette/issues/1805,1238491632,IC_kwDOBm6k_c5J0eHw,9599,2022-09-06T18:10:14Z,2022-09-06T18:10:14Z,OWNER,"I like the idea of defaulting this to the `truncate_cells_html` setting. It could be alternatively customized using a custom Render Cell plugin, but having Datasette do this by default makes sense to me.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1363552780, https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1238607591,https://api.github.com/repos/simonw/sqlite-utils/issues/484,1238607591,IC_kwDOCGYnMM5J06bn,9599,2022-09-06T20:16:39Z,2022-09-06T20:16:39Z,OWNER,"Here's the implementation for recipes at the moment: https://github.com/simonw/sqlite-utils/blob/5b969273f1244b1bcf3e4dc071cdf17dab35d5f8/sqlite_utils/utils.py#L434-L441 And here's the `--functions` implementation that doesn't expose them: https://github.com/simonw/sqlite-utils/blob/5b969273f1244b1bcf3e4dc071cdf17dab35d5f8/sqlite_utils/cli.py#L3029-L3040","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1363766973, https://github.com/simonw/sqlite-utils/issues/477#issuecomment-1238608921,https://api.github.com/repos/simonw/sqlite-utils/issues/477,1238608921,IC_kwDOCGYnMM5J06wZ,9599,2022-09-06T20:18:12Z,2022-09-06T20:18:12Z,OWNER,"Hi @thewchan - thanks for that! Yes I'm interested, can you invite `swillison` @ Google's email provider please?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1353441389, https://github.com/simonw/datasette/issues/1805#issuecomment-1238760255,https://api.github.com/repos/simonw/datasette/issues/1805,1238760255,IC_kwDOBm6k_c5J1fs_,9599,2022-09-06T23:55:37Z,2022-09-06T23:55:37Z,OWNER,"While working on this I noticed that the arbitrary query page doesn't currently obey truncation, when it should do.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1363552780,