{"html_url": "https://github.com/simonw/datasette/issues/1890#issuecomment-1316242752", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1890", "id": 1316242752, "node_id": "IC_kwDOBm6k_c5OdEVA", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T03:10:52Z", "updated_at": "2022-11-16T03:12:47Z", "author_association": "OWNER", "body": "https://bugs.webkit.org/show_bug.cgi?id=201768 - \" Datalist option's label not used\" - marked as RESOLVED FIXED on March 31st 2020.\r\n\r\nThe commit: https://trac.webkit.org/changeset/259330/webkit\r\n\r\nAnd here's the test mirrored on GitHub: https://cs.github.com/qtwebkit/webkit-mirror/blob/cc3fcd0b4bad1f7cf77c26e34aa01d16618d6d5e/LayoutTests/fast/forms/datalist/datalist-option-labels.html?q=datalist-option-labels.html", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1448143294, "label": "Autocomplete text entry for filter values that correspond to facets"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/512#issuecomment-1316437748", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/512", "id": 1316437748, "node_id": "IC_kwDOCGYnMM5Odz70", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T06:24:31Z", "updated_at": "2022-11-16T06:24:31Z", "author_association": "OWNER", "body": "```\r\nsqlite-utils % pipx run no_implicit_optional .\r\nCalculating full-repo metadata...\r\nExecuting codemod...\r\n11.43s 98% complete, 0.24s estimated for 5 files to go...\r\n```\r\nThen:\r\n```\r\nFinished codemodding 239 files!\r\n - Transformed 239 files successfully.\r\n - Skipped 0 files.\r\n - Failed to codemod 0 files.\r\n - 0 warnings were generated.\r\n```\r\nHere's the diff:\r\n```diff\r\n diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py\r\nindex a06f4b7..e819d17 100644\r\n--- a/sqlite_utils/db.py\r\n+++ b/sqlite_utils/db.py\r\n@@ -297,12 +297,12 @@ class Database:\r\n \r\n def __init__(\r\n self,\r\n- filename_or_conn: Union[str, pathlib.Path, sqlite3.Connection] = None,\r\n+ filename_or_conn: Optional[Union[str, pathlib.Path, sqlite3.Connection]] = None,\r\n memory: bool = False,\r\n- memory_name: str = None,\r\n+ memory_name: Optional[str] = None,\r\n recreate: bool = False,\r\n recursive_triggers: bool = True,\r\n- tracer: Callable = None,\r\n+ tracer: Optional[Callable] = None,\r\n use_counts_table: bool = False,\r\n ):\r\n assert (filename_or_conn is not None and (not memory and not memory_name)) or (\r\n@@ -341,7 +341,7 @@ class Database:\r\n self.conn.close()\r\n \r\n @contextlib.contextmanager\r\n- def tracer(self, tracer: Callable = None):\r\n+ def tracer(self, tracer: Optional[Callable] = None):\r\n \"\"\"\r\n Context manager to temporarily set a tracer function - all executed SQL queries will\r\n be passed to this.\r\n@@ -378,7 +378,7 @@ class Database:\r\n \r\n def register_function(\r\n self,\r\n- fn: Callable = None,\r\n+ fn: Optional[Callable] = None,\r\n deterministic: bool = False,\r\n replace: bool = False,\r\n name: Optional[str] = None,\r\n@@ -879,7 +879,7 @@ class Database:\r\n pk: Optional[Any] = None,\r\n foreign_keys: Optional[ForeignKeysType] = None,\r\n column_order: Optional[List[str]] = None,\r\n- not_null: Iterable[str] = None,\r\n+ not_null: Optional[Iterable[str]] = None,\r\n defaults: Optional[Dict[str, Any]] = None,\r\n hash_id: Optional[str] = None,\r\n hash_id_columns: Optional[Iterable[str]] = None,\r\n@@ -1129,7 +1129,7 @@ class Database:\r\n sql += \" [{}]\".format(name)\r\n self.execute(sql)\r\n \r\n- def init_spatialite(self, path: str = None) -> bool:\r\n+ def init_spatialite(self, path: Optional[str] = None) -> bool:\r\n \"\"\"\r\n The ``init_spatialite`` method will load and initialize the SpatiaLite extension.\r\n The ``path`` argument should be an absolute path to the compiled extension, which\r\n@@ -1182,7 +1182,7 @@ class Queryable:\r\n \r\n def count_where(\r\n self,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n ) -> int:\r\n \"\"\"\r\n@@ -1213,12 +1213,12 @@ class Queryable:\r\n \r\n def rows_where(\r\n self,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n- order_by: str = None,\r\n+ order_by: Optional[str] = None,\r\n select: str = \"*\",\r\n- limit: int = None,\r\n- offset: int = None,\r\n+ limit: Optional[int] = None,\r\n+ offset: Optional[int] = None,\r\n ) -> Generator[dict, None, None]:\r\n \"\"\"\r\n Iterate over every row in this table or view that matches the specified where clause.\r\n@@ -1251,11 +1251,11 @@ class Queryable:\r\n \r\n def pks_and_rows_where(\r\n self,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n- order_by: str = None,\r\n- limit: int = None,\r\n- offset: int = None,\r\n+ order_by: Optional[str] = None,\r\n+ limit: Optional[int] = None,\r\n+ offset: Optional[int] = None,\r\n ) -> Generator[Tuple[Any, Dict], None, None]:\r\n \"\"\"\r\n Like ``.rows_where()`` but returns ``(pk, row)`` pairs - ``pk`` can be a single value or tuple.\r\n@@ -1345,7 +1345,7 @@ class Table(Queryable):\r\n pk: Optional[Any] = None,\r\n foreign_keys: Optional[ForeignKeysType] = None,\r\n column_order: Optional[List[str]] = None,\r\n- not_null: Iterable[str] = None,\r\n+ not_null: Optional[Iterable[str]] = None,\r\n defaults: Optional[Dict[str, Any]] = None,\r\n batch_size: int = 100,\r\n hash_id: Optional[str] = None,\r\n@@ -1545,7 +1545,7 @@ class Table(Queryable):\r\n pk: Optional[Any] = None,\r\n foreign_keys: Optional[ForeignKeysType] = None,\r\n column_order: Optional[List[str]] = None,\r\n- not_null: Iterable[str] = None,\r\n+ not_null: Optional[Iterable[str]] = None,\r\n defaults: Optional[Dict[str, Any]] = None,\r\n hash_id: Optional[str] = None,\r\n hash_id_columns: Optional[Iterable[str]] = None,\r\n@@ -2464,7 +2464,7 @@ class Table(Queryable):\r\n columns: Optional[Iterable[str]] = None,\r\n limit: Optional[int] = None,\r\n offset: Optional[int] = None,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n quote: bool = False,\r\n ) -> Generator[dict, None, None]:\r\n@@ -2527,7 +2527,7 @@ class Table(Queryable):\r\n \r\n def delete_where(\r\n self,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n analyze: bool = False,\r\n ) -> \"Table\":\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450952393, "label": "mypy failures in CI"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1316253186", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1316253186, "node_id": "IC_kwDOBm6k_c5OdG4C", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T03:16:36Z", "updated_at": "2022-11-16T03:16:36Z", "author_association": "OWNER", "body": "Yeah I haven't written this down anywhere but Datasette definitely has an undocumented preference for lower-case SQL.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1317314064", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1317314064, "node_id": "IC_kwDOBm6k_c5OhJ4Q", "user": {"value": 95570, "label": "bgrins"}, "created_at": "2022-11-16T16:36:46Z", "updated_at": "2022-11-16T16:36:46Z", "author_association": "CONTRIBUTOR", "body": "With\r\n\r\n```patch\r\ndiff --git a/datasette/templates/_codemirror_foot.html b/datasette/templates/_codemirror_foot.html\r\nindex ed709b3..74fe18e 100644\r\n--- a/datasette/templates/_codemirror_foot.html\r\n+++ b/datasette/templates/_codemirror_foot.html\r\n@@ -7,7 +7,11 @@\r\n sqlFormat.hidden = false;\r\n }\r\n if (sqlInput) {\r\n- var editor = (window.editor = cm.editorFromTextArea(sqlInput));\r\n+ var editor = (window.editor = cm.editorFromTextArea(sqlInput, {\r\n+ schema: {\r\n+ compound_three_primary_keys: [\"pk1\", \"pk2\", \"pk3\", \"content\"],\r\n+ },\r\n+ }));\r\n```\r\n\r\nwe get table autocompletion and column completion if you name the table in the query (see screencast). I do see bugs with escaped table names like `\"'123_starts_with_digits'\": [\"col1\", \"col2\"]` or `\"[123_starts_with_digits]\": [\"col1\", \"col2\"]` where it doesn't seem to pick up the column names though. I think it needs some further testing and debugging. \r\n\r\nhttps://user-images.githubusercontent.com/95570/202238521-e613b4e2-ba92-4418-9068-fc022edaee93.mp4\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1316243602", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1316243602, "node_id": "IC_kwDOBm6k_c5OdEiS", "user": {"value": 95570, "label": "bgrins"}, "created_at": "2022-11-16T03:11:46Z", "updated_at": "2022-11-16T03:11:46Z", "author_association": "CONTRIBUTOR", "body": "Was just reviewing the SQL options and there's an [upperCaseKeywords](https://github.com/codemirror/lang-sql#user-content-sqlconfig.uppercasekeywords) if we'd rather have SELECT vs select. Datasette seems to prefer lowercase so probably best to keep it as-is", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1317456909", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1317456909, "node_id": "IC_kwDOBm6k_c5OhswN", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T18:17:39Z", "updated_at": "2022-11-16T18:17:39Z", "author_association": "OWNER", "body": "Tiny feature request (since you're in this code already) - I keep hitting Command+Enter on my macOS keyboard to submit the query, but the correct shortcut is Shift+Enter. Would be great if both worked!", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1316231560", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1316231560, "node_id": "IC_kwDOBm6k_c5OdBmI", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T02:59:00Z", "updated_at": "2022-11-16T02:59:00Z", "author_association": "OWNER", "body": "The resize handle doesn't appear on Mobile Safari on iPhone - I don't think that particularly matters though.\r\n\r\nThe textarea does get a weird border around it when focused on iPhone though.\r\n\r\nFocused:\r\n\r\n![BF34E8FB-E35C-4CAB-9BFB-8EEF7E29B16C_1_201_a](https://user-images.githubusercontent.com/9599/202072748-c85bab94-a039-4ed6-8185-3cac25c78ed3.jpeg)\r\n\r\nNot focused:\r\n\r\n![31A5CF38-D540-4A1A-8A7D-E29453D150F4_1_201_a](https://user-images.githubusercontent.com/9599/202072744-d9f0ea62-13b7-46ff-afe1-6d88d7fb8b53.jpeg)\r\n\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/512#issuecomment-1316530539", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/512", "id": 1316530539, "node_id": "IC_kwDOCGYnMM5OeKlr", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T07:49:50Z", "updated_at": "2022-11-16T07:49:50Z", "author_association": "OWNER", "body": "Tests passed.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450952393, "label": "mypy failures in CI"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/512#issuecomment-1316447182", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/512", "id": 1316447182, "node_id": "IC_kwDOCGYnMM5Od2PO", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T06:32:31Z", "updated_at": "2022-11-16T06:32:31Z", "author_association": "OWNER", "body": "Test failed again: https://github.com/simonw/sqlite-utils/actions/runs/3476950474/jobs/5812663096\r\n\r\n`E: Failed to fetch http://azure.archive.ubuntu.com/ubuntu/pool/universe/s/spatialite/libsqlite3-mod-spatialite_4.3.0a-6build1_amd64.deb Unable to connect to azure.archive.ubuntu.com:http:`\r\n\r\nThat looks like an intermittent error. I'll try running it again in the morning.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450952393, "label": "mypy failures in CI"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1896#issuecomment-1317757112", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1896", "id": 1317757112, "node_id": "IC_kwDOBm6k_c5Oi2C4", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T22:26:52Z", "updated_at": "2022-11-16T22:33:13Z", "author_association": "OWNER", "body": "Some ideas from walking the dog:\r\n\r\nChallenge: standard URL routing of request to database/table/row\r\n\r\nStandardize on the named components of the URL patterns - `database`, `table`, `pks`\r\n\r\nAsync function that takes the request and the Datasette instance and returns a Resolved instance with:\r\n```\r\n.level - database or table or row (better name?)\r\n.database - the name of the database\r\n.db - the database object\r\n.table - the name of the table (or view)\r\n.is_view perhaps?\r\n.pk_values if it's a row\r\n```\r\nShould this attempt to resolve names queries too?\r\n```\r\n.where_sql - the where fragment you use\r\n.where_params - accompanying dictionary\r\n\r\nawait datasette.resolve_request(request)\r\n```\r\nOr even better three methods: \r\n```python\r\ndatasette.resolve_database(request)\r\ndatasette.resolve_table(request)\r\ndatasette.resolve_row(request)\r\n```\r\nThese can be typed correctly\r\n\r\nMethods raise `NotFound` if not found", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1452364777, "label": "Extract logic for resolving a URL to a database / table / row"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1316401895", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1316401895, "node_id": "IC_kwDOBm6k_c5OdrLn", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T05:50:40Z", "updated_at": "2022-11-16T05:50:40Z", "author_association": "OWNER", "body": "So I think our dialect (at least to start with) should be:\r\n\r\n```\r\n keywords:\r\n \"and as asc between by case cast current current_date current_time current_timestamp desc distinct each else escape except exists explain filter first for from full generated group having if in index inner intersect into isnull join last left like limit not null or order outer over pragma primary query raise range regexp right rollback row select set table temp temporary then to union unique using values view virtual when where\",\r\n // https://www.sqlite.org/datatype3.html\r\n types: \"null integer real text blob\",\r\n builtin:\r\n \"\"\r\n```\r\nI left `builtin` blank here because I don't think we need any of those things at all.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1317834838", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1317834838, "node_id": "IC_kwDOBm6k_c5OjJBW", "user": {"value": 95570, "label": "bgrins"}, "created_at": "2022-11-16T23:50:58Z", "updated_at": "2022-11-16T23:50:58Z", "author_association": "CONTRIBUTOR", "body": "Should we empty out the fixture schema to avoid fixture autocomplete showing up on live databases in the interim, or are you planning to tackle #1897 shortly?", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1316412234", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1316412234, "node_id": "IC_kwDOBm6k_c5OdttK", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T06:00:39Z", "updated_at": "2022-11-16T06:01:36Z", "author_association": "OWNER", "body": "Should note though that this is a classic example of GPT-3 making stuff up in places.\r\n\r\n> current: Returns the current date, time, or timestamp\r\n\r\n`select current` throws an error for me: https://latest.datasette.io/_memory?sql=select+current\r\n\r\n`select current_date, current_time, current_timestamp` works though: https://latest.datasette.io/_memory?sql=select+current_date%2C+current_time%2C+current_timestamp\r\n\r\nSo let's drop `current` from the list. I'm OK with it though, I think it's likely good enough for the first attempt at this.\r\n\r\nWe should drop `temp` and `temporary` too.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1316141764", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1316141764, "node_id": "IC_kwDOBm6k_c5OcrrE", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T01:26:59Z", "updated_at": "2022-11-16T01:26:59Z", "author_association": "OWNER", "body": "Resizing works great for me - and the page automatically sizes the editor to fit an existing query, e.g. on https://datasette-pr-1893.vercel.app/fixtures?sql=select+id%2C+content%2C+content2%0D%0A++from+primary_key_multiple_columns_explicit_label%0D%0A++order+by+id%0D%0A++limit+101", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1317522323", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1317522323, "node_id": "IC_kwDOBm6k_c5Oh8uT", "user": {"value": 95570, "label": "bgrins"}, "created_at": "2022-11-16T18:59:49Z", "updated_at": "2022-11-16T18:59:49Z", "author_association": "CONTRIBUTOR", "body": "Or I guess you could return only the escaped table name and then we could derive the unescaped from the client side (removing the outer `[]` when present)", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1896#issuecomment-1317757949", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1896", "id": 1317757949, "node_id": "IC_kwDOBm6k_c5Oi2P9", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T22:27:47Z", "updated_at": "2022-11-18T21:48:29Z", "author_association": "OWNER", "body": "Open question: should `resolve_table()` know how to identify named canned queries too?\r\n\r\nI think not, at least for the moment. Feels a bit too specialist to expose in a documented API.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1452364777, "label": "Extract logic for resolving a URL to a database / table / row"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1316232588", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1316232588, "node_id": "IC_kwDOBm6k_c5OdB2M", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T03:00:04Z", "updated_at": "2022-11-16T03:00:04Z", "author_association": "OWNER", "body": "Oops, the tests are failing because of a test failure I introduced here:\r\n- #1890", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1890#issuecomment-1316233532", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1890", "id": 1316233532, "node_id": "IC_kwDOBm6k_c5OdCE8", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T03:00:58Z", "updated_at": "2022-11-16T03:00:58Z", "author_association": "OWNER", "body": "Oops, introduced a test failure: \r\n\r\n```\r\n def test_table_html_foreign_key_facets(app_client):\r\n response = app_client.get(\r\n \"/fixtures/foreign_key_references?_facet=foreign_key_with_blank_label\"\r\n )\r\n assert response.status == 200\r\n> assert (\r\n '