{"html_url": "https://github.com/simonw/datasette/issues/1442#issuecomment-902191150", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1442", "id": 902191150, "node_id": "IC_kwDOBm6k_c41xlgu", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-19T19:43:05Z", "updated_at": "2021-08-19T19:43:59Z", "author_association": "OWNER", "body": "Maybe as simple as teaching https://github.com/simonw/datasette/blob/main/.github/workflows/deploy-latest.yml to run on pushes to ALL branches:\r\n\r\nhttps://github.com/simonw/datasette/blob/adb5b70de5cec3c3dd37184defe606a082c232cf/.github/workflows/deploy-latest.yml#L3-L6\r\n\r\nAnd then quit early if the branch is not in some allow-list.\r\n\r\nIf it IS in the allow-list, use the name of the branch to dynamically construct the name of the Cloud Run service here: https://github.com/simonw/datasette/blob/adb5b70de5cec3c3dd37184defe606a082c232cf/.github/workflows/deploy-latest.yml#L60\r\n\r\nNeed to skip the documentation build and deployment stuff for other branches though.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 974987856, "label": "Mechanism to cause specific branches to deploy their own demos"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1293#issuecomment-901475812", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1293", "id": 901475812, "node_id": "IC_kwDOBm6k_c41u23k", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T22:41:19Z", "updated_at": "2021-08-18T22:41:19Z", "author_association": "OWNER", "body": "> Maybe I split this out into a separate Python library that gets tested against _every_ SQLite release I can possibly try it against, and then bakes out the supported release versions into the library code itself?\r\n\r\nI'm going to do this, and call the Python library `sqlite-explain`.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 849978964, "label": "Show column metadata plus links for foreign keys on arbitrary query results"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/37#issuecomment-901452199", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/37", "id": 901452199, "node_id": "IC_kwDOCGYnMM41uxGn", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T21:48:57Z", "updated_at": "2021-08-18T21:48:57Z", "author_association": "OWNER", "body": "I did a bunch of work on this in #266. The library is now pretty thoroughly typed, and I even found a couple of bugs using `mypy` along the way: #313 and #315.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 465815372, "label": "Experiment with type hints"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/318#issuecomment-901440752", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/318", "id": 901440752, "node_id": "IC_kwDOCGYnMM41uuTw", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T21:25:30Z", "updated_at": "2021-08-18T21:25:30Z", "author_association": "OWNER", "body": "Some questions:\r\n\r\n- Should this support compression formats other than gzip?\r\n- Should `memory` learn to auto-detect gzipped data?", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 974067156, "label": "Research: handle gzipped CSV directly"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/318#issuecomment-901440207", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/318", "id": 901440207, "node_id": "IC_kwDOCGYnMM41uuLP", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T21:24:28Z", "updated_at": "2021-08-18T21:24:49Z", "author_association": "OWNER", "body": "Something like this then:\r\n\r\n sqlite-utils file.db \"select * from t\" --csv --gz > t.csv.gz\r\n\r\nMaybe add a `-o t.csv.gz` option too so you don't have to use a `>`.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 974067156, "label": "Research: handle gzipped CSV directly"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/295#issuecomment-901403298", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/295", "id": 901403298, "node_id": "IC_kwDOCGYnMM41ulKi", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T20:19:04Z", "updated_at": "2021-08-18T20:19:04Z", "author_association": "OWNER", "body": "Thanks, this was a bug.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 934123448, "label": "Insert with --tsv and --no-headers give error about --nl arguments"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/296#issuecomment-901399139", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/296", "id": 901399139, "node_id": "IC_kwDOCGYnMM41ukJj", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T20:12:34Z", "updated_at": "2021-08-18T20:13:12Z", "author_association": "OWNER", "body": "Documentation for `table.search(..., quote=True)`: https://sqlite-utils.datasette.io/en/latest/python-api.html#searching-with-table-search\r\n\r\nIn the API reference: https://sqlite-utils.datasette.io/en/latest/reference.html#sqlite_utils.db.Table.search\r\n\r\nAnd for the CLI `--quote` option: https://sqlite-utils.datasette.io/en/latest/cli.html#executing-searches", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 944326512, "label": "`table.search(..., quote=True)` parameter and `sqlite-utils search --quote` option"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/296#issuecomment-901398216", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/296", "id": 901398216, "node_id": "IC_kwDOCGYnMM41uj7I", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T20:11:01Z", "updated_at": "2021-08-18T20:11:01Z", "author_association": "OWNER", "body": "```\r\n% sqlite-utils search fixtures.db searchable 'dog\"'\r\nError: malformed MATCH expression: [dog\"]\r\n\r\nTry running this again with the --quote option\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 944326512, "label": "`table.search(..., quote=True)` parameter and `sqlite-utils search --quote` option"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/296#issuecomment-901390635", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/296", "id": 901390635, "node_id": "IC_kwDOCGYnMM41uiEr", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T19:58:53Z", "updated_at": "2021-08-18T19:58:53Z", "author_association": "OWNER", "body": "```\r\nsqlite-utils search fixtures.db searchable 'dog\"'\r\nError: malformed MATCH expression: [dog\"]\r\n```\r\nThis error message could suggest retrying with `--quote`.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 944326512, "label": "`table.search(..., quote=True)` parameter and `sqlite-utils search --quote` option"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/296#issuecomment-901379930", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/296", "id": 901379930, "node_id": "IC_kwDOCGYnMM41ufda", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T19:40:38Z", "updated_at": "2021-08-18T19:40:38Z", "author_association": "OWNER", "body": "Also add `sqlite-utils search ... --quote` option.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 944326512, "label": "`table.search(..., quote=True)` parameter and `sqlite-utils search --quote` option"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/246#issuecomment-901353345", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/246", "id": 901353345, "node_id": "IC_kwDOCGYnMM41uY-B", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T18:57:13Z", "updated_at": "2021-08-18T18:57:13Z", "author_association": "OWNER", "body": "More documentation: https://sqlite-utils.datasette.io/en/latest/python-api.html#quoting-characters-for-use-in-search", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 831751367, "label": "Escaping FTS search strings"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/296#issuecomment-901338841", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/296", "id": 901338841, "node_id": "IC_kwDOCGYnMM41uVbZ", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T18:33:26Z", "updated_at": "2021-08-18T18:45:12Z", "author_association": "OWNER", "body": "I think I'll do this as an optional `table.search(..., escape=True)` parameter.\r\n\r\nActually I'll do `quote=True` for consistency with the new `db.quote_fts()` method.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 944326512, "label": "`table.search(..., quote=True)` parameter and `sqlite-utils search --quote` option"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/246#issuecomment-901345800", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/246", "id": 901345800, "node_id": "IC_kwDOCGYnMM41uXII", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-08-18T18:44:48Z", "updated_at": "2021-08-18T18:44:48Z", "author_association": "OWNER", "body": "The `db.quote_fts(value)` method from #247 can now be used for this - documentation here: https://sqlite-utils.datasette.io/en/latest/reference.html#sqlite_utils.db.Database.quote_fts\r\n\r\nI'll be adding further improvements relating to this (a `table.search(q, quote=True)` parameter) in #296.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 831751367, "label": "Escaping FTS search strings"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/pull/247#issuecomment-901344634", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/247", "id": 901344634, "node_id": "IC_kwDOCGYnMM41uW16", "user": {"value": 22429695, "label": "codecov[bot]"}, "created_at": "2021-08-18T18:42:54Z", "updated_at": "2021-08-18T18:42:54Z", "author_association": "NONE", "body": "# [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/247?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report\n> Merging [#247](https://codecov.io/gh/simonw/sqlite-utils/pull/247?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (af989af) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/1fe73c898b44695052f1a9ca832818d50cecf662?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (1fe73c8) will **decrease** coverage by `0.03%`.\n> The diff coverage is `85.71%`.\n\n[![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/247/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/247?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)\n\n```diff\n@@ Coverage Diff @@\n## main #247 +/- ##\n==========================================\n- Coverage 96.28% 96.24% -0.04% \n==========================================\n Files 5 5 \n Lines 2179 2186 +7 \n==========================================\n+ Hits 2098 2104 +6 \n- Misses 81 82 +1 \n```\n\n\n| [Impacted Files](https://codecov.io/gh/simonw/sqlite-utils/pull/247?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://codecov.io/gh/simonw/sqlite-utils/pull/247/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2RiLnB5) | `97.84% <85.71%> (-0.08%)` | :arrow_down: |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/247?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)\n> `\u0394 = absolute This data as\r\n json, \r\n ...\r\n CSV\r\n
This data as {% for name, url in renderers.items() %}{{ name }}{{ \", \" if not loop.last }}{% endfor %}, CSV
\r\n