This demonstrates basic LIKE search\r\n```", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1855885427, "label": "De-tangling Metadata before Datasette 1.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/2143#issuecomment-1685260624", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2143", "id": 1685260624, "node_id": "IC_kwDOBm6k_c5kcwlQ", "user": {"value": 11784304, "label": "dvizard"}, "created_at": "2023-08-20T11:31:16Z", "updated_at": "2023-08-20T11:31:16Z", "author_association": "NONE", "body": "https://pypi.org/project/deep-chainmap/", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1855885427, "label": "De-tangling Metadata before Datasette 1.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/2143#issuecomment-1685260244", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2143", "id": 1685260244, "node_id": "IC_kwDOBm6k_c5kcwfU", "user": {"value": 11784304, "label": "dvizard"}, "created_at": "2023-08-20T11:29:00Z", "updated_at": "2023-08-20T11:29:00Z", "author_association": "NONE", "body": "https://docs.python.org/3/library/collections.html#collections.ChainMap", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1855885427, "label": "De-tangling Metadata before Datasette 1.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/2143#issuecomment-1685259985", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2143", "id": 1685259985, "node_id": "IC_kwDOBm6k_c5kcwbR", "user": {"value": 11784304, "label": "dvizard"}, "created_at": "2023-08-20T11:27:21Z", "updated_at": "2023-08-20T11:27:21Z", "author_association": "NONE", "body": "To chime in from a poweruser perspective: I'm worried that this is an overengineering trap. Yes, the current solution is somewhat messy. But there are datasette-wide settings, there are database-scope settings, there are table-scope settings etc, but then there are database-scope metadata and table-scope metadata. Trying to cleanly separate \"settings\" from \"configuration\" is, I believe, an uphill fight. Even separating db/table-scope settings from pure descriptive metadata is not always easy. Like, do canned queries belong to database metadata or to settings? Do I need two separate files for this?\r\n\r\nOne pragmatic solution I used in a project is stacking yaml configuration files. Basically, have an arbitrary number of yaml or json settings files that you load in a specified order. Every file adds to the corresponding settings in the earlier-loaded file (if it already existed). I implemented this myself but found later that there is an existing Python \"cascading dict\" type of thing, I forget what it's called. There is a bit of a challenge deciding whether there is \"replacement\" or \"addition\" (I think I pragmatically ran `update` on the second level of the dict but better solutions are certainly possible). \r\n\r\nThis way, one allows separation of settings into different blocks, while not imposing a specific idea of what belongs where that might not apply equally to all cases.\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1855885427, "label": "De-tangling Metadata before Datasette 1.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/pull/2144#issuecomment-1683963463", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2144", "id": 1683963463, "node_id": "IC_kwDOBm6k_c5kXz5H", "user": {"value": 22429695, "label": "codecov[bot]"}, "created_at": "2023-08-18T13:58:39Z", "updated_at": "2023-08-18T13:58:39Z", "author_association": "NONE", "body": "## [Codecov](https://app.codecov.io/gh/simonw/datasette/pull/2144?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report\nPatch and project coverage have no change.\n> Comparison is base [(`943df09`)](https://app.codecov.io/gh/simonw/datasette/commit/943df09dcca93c3b9861b8c96277a01320db8662?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) 92.06% compared to head [(`3a97755`)](https://app.codecov.io/gh/simonw/datasette/pull/2144?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) 92.06%.\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2144 +/- ##\n=======================================\n Coverage 92.06% 92.06% \n=======================================\n Files 40 40 \n Lines 5937 5937 \n=======================================\n Hits 5466 5466 \n Misses 471 471 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #584 +/- ##\n==========================================\n- Coverage 95.82% 95.76% -0.07% \n==========================================\n Files 8 8 \n Lines 2829 2834 +5 \n==========================================\n+ Hits 2711 2714 +3 \n- Misses 118 120 +2 \n```\n\n\n| [Files Changed](https://app.codecov.io/gh/simonw/sqlite-utils/pull/584?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage \u0394 | |\n|---|---|---|\n| [sqlite\\_utils/db.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/584?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2RiLnB5) | `97.22% <92.85%> (-0.15%)` | :arrow_down: |\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2142 +/- ##\n=======================================\n Coverage 92.06% 92.06% \n=======================================\n Files 40 40 \n Lines 5937 5937 \n=======================================\n Hits 5466 5466 \n Misses 471 471 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2141 +/- ##\n=======================================\n Coverage 92.06% 92.06% \n=======================================\n Files 40 40 \n Lines 5937 5937 \n=======================================\n Hits 5466 5466 \n Misses 471 471 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2128 +/- ##\n=======================================\n Coverage 92.38% 92.38% \n=======================================\n Files 39 39 \n Lines 5803 5803 \n=======================================\n Hits 5361 5361 \n Misses 442 442 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2125 +/- ##\n=======================================\n Coverage 92.38% 92.38% \n=======================================\n Files 39 39 \n Lines 5803 5803 \n=======================================\n Hits 5361 5361 \n Misses 442 442 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2124 +/- ##\n=======================================\n Coverage 92.38% 92.38% \n=======================================\n Files 39 39 \n Lines 5803 5803 \n=======================================\n Hits 5361 5361 \n Misses 442 442 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2121 +/- ##\n=======================================\n Coverage 92.38% 92.38% \n=======================================\n Files 39 39 \n Lines 5803 5803 \n=======================================\n Hits 5361 5361 \n Misses 442 442 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2107 +/- ##\n=======================================\n Coverage 92.38% 92.38% \n=======================================\n Files 39 39 \n Lines 5805 5805 \n=======================================\n Hits 5363 5363 \n Misses 442 442 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #573 +/- ##\n==========================================\n+ Coverage 96.09% 96.12% +0.03% \n==========================================\n Files 8 8 \n Lines 2794 2816 +22 \n==========================================\n+ Hits 2685 2707 +22 \n Misses 109 109 \n```\n\n\n| [Impacted Files](https://app.codecov.io/gh/simonw/sqlite-utils/pull/573?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage \u0394 | |\n|---|---|---|\n| [sqlite\\_utils/\\_\\_init\\_\\_.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/573?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL19faW5pdF9fLnB5) | `100.00% <100.00%> (\u00f8)` | |\n| [sqlite\\_utils/db.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/573?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2RiLnB5) | `97.36% <100.00%> (+0.01%)` | :arrow_up: |\n| [sqlite\\_utils/hookspecs.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/573?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2hvb2tzcGVjcy5weQ==) | `100.00% <100.00%> (\u00f8)` | |\n\n... and [1 file with indirect coverage changes](https://app.codecov.io/gh/simonw/sqlite-utils/pull/573/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2098 +/- ##\n=======================================\n Coverage 92.39% 92.39% \n=======================================\n Files 39 39 \n Lines 5802 5802 \n=======================================\n Hits 5361 5361 \n Misses 441 441 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2077 +/- ##\n=======================================\n Coverage 92.40% 92.40% \n=======================================\n Files 39 39 \n Lines 5803 5803 \n=======================================\n Hits 5362 5362 \n Misses 441 441 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #560 +/- ##\n==========================================\n- Coverage 96.36% 96.22% -0.15% \n==========================================\n Files 6 6 \n Lines 2726 2752 +26 \n==========================================\n+ Hits 2627 2648 +21 \n- Misses 99 104 +5 \n```\n\n\n| [Impacted Files](https://app.codecov.io/gh/simonw/sqlite-utils/pull/560?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage \u0394 | |\n|---|---|---|\n| [sqlite\\_utils/utils.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/560?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL3V0aWxzLnB5) | `94.56% <63.63%> (-0.62%)` | :arrow_down: |\n| [sqlite\\_utils/db.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/560?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2RiLnB5) | `97.33% <86.36%> (-0.20%)` | :arrow_down: |\n| [sqlite\\_utils/cli.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/560?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2NsaS5weQ==) | `95.22% <100.00%> (\u00f8)` | |\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2080 +/- ##\n==========================================\n+ Coverage 92.40% 92.41% +0.01% \n==========================================\n Files 39 39 \n Lines 5768 5790 +22 \n==========================================\n+ Hits 5330 5351 +21 \n- Misses 438 439 +1 \n```\n\n\n| [Impacted Files](https://app.codecov.io/gh/simonw/datasette/pull/2080?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage \u0394 | |\n|---|---|---|\n| [datasette/views/base.py](https://app.codecov.io/gh/simonw/datasette/pull/2080?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL3ZpZXdzL2Jhc2UucHk=) | `92.97% <95.45%> (+0.18%)` | :arrow_up: |\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #553 +/- ##\n=======================================\n Coverage 96.36% 96.36% \n=======================================\n Files 6 6 \n Lines 2726 2726 \n=======================================\n Hits 2627 2627 \n Misses 99 99 \n```\n\n\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #549 +/- ##\n==========================================\n+ Coverage 96.30% 96.36% +0.06% \n==========================================\n Files 6 6 \n Lines 2707 2726 +19 \n==========================================\n+ Hits 2607 2627 +20 \n+ Misses 100 99 -1 \n```\n\n\n| [Impacted Files](https://app.codecov.io/gh/simonw/sqlite-utils/pull/549?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage \u0394 | |\n|---|---|---|\n| [sqlite\\_utils/cli.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/549?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2NsaS5weQ==) | `95.22% <83.33%> (-0.03%)` | :arrow_down: |\n\n... and [1 file with indirect coverage changes](https://app.codecov.io/gh/simonw/sqlite-utils/pull/549/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #546 +/- ##\n=======================================\n Coverage 96.30% 96.31% \n=======================================\n Files 6 6 \n Lines 2707 2712 +5 \n=======================================\n+ Hits 2607 2612 +5 \n Misses 100 100 \n```\n\n\n| [Impacted Files](https://app.codecov.io/gh/simonw/sqlite-utils/pull/546?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage \u0394 | |\n|---|---|---|\n| [sqlite\\_utils/db.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/546?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2RiLnB5) | `97.37% <90.90%> (+<0.01%)` | :arrow_up: |\n| [sqlite\\_utils/cli.py](https://app.codecov.io/gh/simonw/sqlite-utils/pull/546?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2NsaS5weQ==) | `95.26% <100.00%> (+0.01%)` | :arrow_up: |\n\n\nAdditional details and impacted files
\n\n\n```diff\n@@ Coverage Diff @@\n## main #2075 +/- ##\n=======================================\n Coverage 92.40% 92.40% \n=======================================\n Files 38 38 \n Lines 5751 5751 \n=======================================\n Hits 5314 5314 \n Misses 437 437 \n```\n\n\n\n\n