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/2127#issuecomment-1667011607,https://api.github.com/repos/simonw/datasette/issues/2127,1667011607,IC_kwDOBm6k_c5jXJQX,9599,2023-08-07T00:02:49Z,2023-08-07T00:02:49Z,OWNER,"This is pretty neat: https://github.com/simonw/datasette/blob/2f9038a831a3510d4c9ab39a12d96259b3a55bc7/datasette/views/database.py#L157-L206","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1838469176, https://github.com/simonw/datasette/issues/2129#issuecomment-1668690232,https://api.github.com/repos/simonw/datasette/issues/2129,1668690232,IC_kwDOBm6k_c5jdjE4,9599,2023-08-07T23:13:24Z,2023-08-07T23:13:24Z,OWNER,This may end up being a renderer plugin hook design question too.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1840324765, https://github.com/simonw/datasette/issues/2130#issuecomment-1668695958,https://api.github.com/repos/simonw/datasette/issues/2130,1668695958,IC_kwDOBm6k_c5jdkeW,9599,2023-08-07T23:21:07Z,2023-08-07T23:21:16Z,OWNER,"Main place the code needs updating is here: https://github.com/simonw/datasette/blob/5139c0886a7f6bb94d317ba0665aa6e728716028/datasette/views/base.py#L301-L310 Plus the documentation.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1840329615, https://github.com/simonw/datasette/pull/2098#issuecomment-1668186815,https://api.github.com/repos/simonw/datasette/issues/2098,1668186815,IC_kwDOBm6k_c5jboK_,49699333,2023-08-07T16:20:18Z,2023-08-07T16:20:18Z,CONTRIBUTOR,"Looks like blacken-docs is up-to-date now, so this is no longer needed.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1796830110, https://github.com/simonw/datasette/pull/2118#issuecomment-1668568445,https://api.github.com/repos/simonw/datasette/issues/2118,1668568445,IC_kwDOBm6k_c5jdFV9,9599,2023-08-07T20:57:46Z,2023-08-07T20:57:46Z,OWNER,17 failing tests now.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1823352380, https://github.com/simonw/datasette/pull/2118#issuecomment-1668578107,https://api.github.com/repos/simonw/datasette/issues/2118,1668578107,IC_kwDOBm6k_c5jdHs7,9599,2023-08-07T21:06:50Z,2023-08-07T21:06:50Z,OWNER,"15: ``` =========================================================================================== short test summary info ============================================================================================ FAILED tests/test_cli.py::test_sql_errors_logged_to_stderr - assert 0 == 1 FAILED tests/test_html.py::test_show_hide_sql_query - AssertionError: assert False FAILED tests/test_canned_queries.py::test_magic_parameters_cannot_be_used_in_arbitrary_queries - assert 400 == 200 FAILED tests/test_html.py::test_templates_considered[/fixtures-database-fixtures.html, *database.html] - assert '' in '\n\n\n fixtures\n CSV' in '\n\n\n fixtures: select 1\n ' in '\n\n\n fixtures: select * from... FAILED tests/test_plugins.py::test_hook_extra_css_urls[/fixtures-expected_decoded_object1] - AssertionError: assert equals failed FAILED tests/test_plugins.py::test_view_names[/fixtures-database] - AssertionError: assert equals failed FAILED tests/test_plugins.py::test_view_names[/fixtures?sql=select+1-database] - AssertionError: assert equals failed FAILED tests/test_plugins.py::test_hook_extra_body_script[/fixtures-expected_extra_body_script1] - AssertionError: assert equals failed FAILED tests/test_html.py::test_base_url_config[False-/fixtures?sql=select+1] - AssertionError: { FAILED tests/test_table_api.py::test_max_returned_rows - KeyError: 'query' FAILED tests/test_html.py::test_alternate_url_json[/fixtures-http://localhost/fixtures.json] - KeyError: 'link' ============================================================================ 15 failed, 1297 passed, 2 skipped, 1 xfailed in 58.15s ============================================================================ ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1823352380, https://github.com/simonw/datasette/pull/2118#issuecomment-1668687891,https://api.github.com/repos/simonw/datasette/issues/2118,1668687891,IC_kwDOBm6k_c5jdigT,9599,2023-08-07T23:11:04Z,2023-08-07T23:14:34Z,OWNER,"One of the failing tests is because this URL on my local environment returns this: http://127.0.0.1:8001/_memory.json?sql=select+blah ```json {""rows"": [], ""columns"": [], ""truncated"": false} ``` With a 200 status code. It should be an error. https://latest.datasette.io/_memory.json?sql=select+blah returns a 400 status code with the following JSON: ```json { ""ok"": false, ""database"": ""_memory"", ""query_name"": null, ""rows"": [], ""truncated"": false, ""columns"": [], ""query"": { ""sql"": ""select blah"", ""params"": {} }, ""error"": ""no such column: blah"", ""private"": false, ""allow_execute_sql"": true, ""query_ms"": 2.68310698447749, ""source"": ""tests/fixtures.py"", ""source_url"": ""https://github.com/simonw/datasette/blob/main/tests/fixtures.py"", ""license"": ""Apache License 2.0"", ""license_url"": ""https://github.com/simonw/datasette/blob/main/LICENSE"" } ``` So I need a design for what this should look like for the error case. I should consider what errors look like for alternative formats too.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1823352380, https://github.com/simonw/datasette/pull/2118#issuecomment-1668688947,https://api.github.com/repos/simonw/datasette/issues/2118,1668688947,IC_kwDOBm6k_c5jdiwz,9599,2023-08-07T23:12:37Z,2023-08-07T23:12:37Z,OWNER,"https://latest.datasette.io/_memory.csv?sql=select+blah is a blank page right now: ```bash curl -I 'https://latest.datasette.io/_memory.csv?sql=select+blah' ``` ``` HTTP/2 200 access-control-allow-origin: * access-control-allow-headers: Authorization, Content-Type access-control-expose-headers: Link access-control-allow-methods: GET, POST, HEAD, OPTIONS access-control-max-age: 3600 content-type: text/plain; charset=utf-8 x-databases: _memory, _internal, fixtures, fixtures2, extra_database, ephemeral date: Mon, 07 Aug 2023 23:12:15 GMT server: Google Frontend ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1823352380, https://github.com/simonw/datasette/pull/2118#issuecomment-1668691898,https://api.github.com/repos/simonw/datasette/issues/2118,1668691898,IC_kwDOBm6k_c5jdje6,9599,2023-08-07T23:15:14Z,2023-08-07T23:16:28Z,OWNER,"New error design: ```json {""ok"": false, ""error"": ""Error message here"", ""rows"": [], ""columns"": [], ""truncated"": false} ``` I guess that means I need to add `""ok"": true` to the default format as well - which makes sense because table JSON has that already: https://latest.datasette.io/fixtures/facetable.json ```json { ""ok"": true, ""next"": null, ""rows"": [...] } ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1823352380, https://github.com/simonw/datasette/pull/2118#issuecomment-1668715803,https://api.github.com/repos/simonw/datasette/issues/2118,1668715803,IC_kwDOBm6k_c5jdpUb,9599,2023-08-07T23:50:26Z,2023-08-08T01:41:53Z,OWNER,"This bit needs some more work: https://github.com/simonw/datasette/blob/a791115e31e64e9bbd1d36f4d46887b3e42e752a/datasette/views/database.py#L514-L518 The original logic for that is from here, I need to figure out how to replicate it: https://github.com/simonw/datasette/blob/5139c0886a7f6bb94d317ba0665aa6e728716028/datasette/views/base.py#L368 https://github.com/simonw/datasette/blob/5139c0886a7f6bb94d317ba0665aa6e728716028/datasette/views/base.py#L342-L344 UPDATE: Fixed the `_size=max` bit, but I've not replicated the behaviour where it adds `?_labels=on` if there are expandable columns yet.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1823352380, https://github.com/simonw/datasette/pull/2118#issuecomment-1668720671,https://api.github.com/repos/simonw/datasette/issues/2118,1668720671,IC_kwDOBm6k_c5jdqgf,9599,2023-08-07T23:58:21Z,2023-08-07T23:58:21Z,OWNER,"11 tests left: ``` FAILED tests/test_html.py::test_alternate_url_json[/fixtures-http://localhost/fixtures.json] - KeyError: 'link' FAILED tests/test_html.py::test_alternate_url_json[/fixtures?sql=select+*+from+facetable-http://localhost/fixtures.json?sql=select+*+from+facetable] - assert '<link rel=""alternate"" type=""application/json+datasette"" href=""http://localhost/fixtures.json?sql=select+*+from+facetable"">' in '<!DOCTYPE html>\n<html>\n<head>\n <title>fixtures: select * from... FAILED tests/test_html.py::test_query_page_truncates - assert equals failed FAILED tests/test_html.py::test_templates_considered[/fixtures-database-fixtures.html, *database.html] - assert '<!-- Templates considered: database-fixtures.html, *database.html -->' in '<!DOCTYPE html>\n<html>\n<head>\n <title>fixtures\n CSV' in '\n\n\n fixtures: select 1\n Comparison is base [(`adf54f5`)](https://app.codecov.io/gh/simonw/datasette/commit/adf54f5c808c16e9ad812c3a4376f35cf829a93c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) 92.38% compared to head [(`935d336`)](https://app.codecov.io/gh/simonw/datasette/pull/2128?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) 92.38%.
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #2128 +/- ## ======================================= Coverage 92.38% 92.38% ======================================= Files 39 39 Lines 5803 5803 ======================================= Hits 5361 5361 Misses 442 442 ```
[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/simonw/datasette/pull/2128?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). :loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1839766197, https://github.com/simonw/sqlite-utils/issues/578#issuecomment-1668113177,https://api.github.com/repos/simonw/sqlite-utils/issues/578,1668113177,IC_kwDOCGYnMM5jbWMZ,25778,2023-08-07T15:41:49Z,2023-08-07T15:41:49Z,CONTRIBUTOR,I wonder if this should be two hooks: input and output. The current `--csv` (and `--tsv`) options apply to both. Haven't looked at how it's implemented. Or maybe it's one hook that returns a format for reading and for writing.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",1818838294,