{"id": 1392480869, "node_id": "PR_kwDOBm6k_c5S_5Jl", "number": 2083, "state": "closed", "locked": 0, "title": "Bump blacken-docs from 1.13.0 to 1.14.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [blacken-docs](https://github.com/asottile/blacken-docs) from 1.13.0 to 1.14.0.\n
\nChangelog\n

Sourced from blacken-docs's changelog.

\n
\n

1.14.0 (2023-06-13)

\n\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=blacken-docs&package-manager=pip&previous-version=1.13.0&new-version=1.14.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2083.org.readthedocs.build/en/2083/\n\r\n", "created_at": "2023-06-14T13:57:52Z", "updated_at": "2023-06-29T14:31:55Z", "closed_at": "2023-06-29T14:31:54Z", "merged_at": "2023-06-29T14:31:54Z", "merge_commit_sha": "ede62036180993dbd9d4e5d280fc21c183cda1c3", "assignee": null, "milestone": null, "draft": 0, "head": "caee23e9ca8cbd4d189070188f90eabf97008b59", "base": "dda99fc09fb0b5523948f6d481c6c051c1c7b5de", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2083", "merged_by": null, "auto_merge": null} {"id": 1406821147, "node_id": "PR_kwDOCGYnMM5T2mMb", "number": 560, "state": "closed", "locked": 0, "title": "Use sqlean if available in environment", "user": {"value": 9599, "label": "simonw"}, "body": "Refs:\r\n- #559 \r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--560.org.readthedocs.build/en/560/\n\r\n", "created_at": "2023-06-25T19:48:48Z", "updated_at": "2023-06-26T08:21:00Z", "closed_at": "2023-06-25T23:25:51Z", "merged_at": "2023-06-25T23:25:51Z", "merge_commit_sha": "f5c63088e1454811ce8361208b72297408eb5237", "assignee": null, "milestone": null, "draft": 0, "head": "5e7d27e5df024ce1f45e3a850c4e0f65e765cccd", "base": "2747257a3334d55e890b40ec58fada57ae8cfbfd", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/560", "merged_by": null, "auto_merge": null} {"id": 1365439700, "node_id": "PR_kwDOBm6k_c5RYvTU", "number": 2080, "state": "closed", "locked": 0, "title": "New View base class", "user": {"value": 9599, "label": "simonw"}, "body": "Refs:\r\n\r\n- #2078\r\n\r\nTODO:\r\n\r\n- [x] Teach router layer how to handle this\r\n- [x] Use it for something\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://datasette--2080.org.readthedocs.build/en/2080/\r\n\r\n", "created_at": "2023-05-25T23:22:55Z", "updated_at": "2023-05-26T00:18:45Z", "closed_at": "2023-05-26T00:18:44Z", "merged_at": "2023-05-26T00:18:44Z", "merge_commit_sha": "dda99fc09fb0b5523948f6d481c6c051c1c7b5de", "assignee": null, "milestone": null, "draft": 0, "head": "e990fbc00ef36c022986432e7706b3ad1c9c68a1", "base": "b49fa446d683ddcaf6faf2944dacc0d866bf2d70", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2080", "merged_by": null, "auto_merge": null} {"id": 1358321208, "node_id": "PR_kwDOCGYnMM5Q9lY4", "number": 553, "state": "closed", "locked": 0, "title": "Reformatted CLI examples in docs", "user": {"value": 9599, "label": "simonw"}, "body": "Refs:\r\n- #551\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--553.org.readthedocs.build/en/553/\n\r\n", "created_at": "2023-05-21T20:44:34Z", "updated_at": "2023-05-21T20:57:27Z", "closed_at": "2023-05-21T20:57:23Z", "merged_at": "2023-05-21T20:57:22Z", "merge_commit_sha": "d8fe1b0d899faaaa3d4714a39328f4c24932278f", "assignee": null, "milestone": null, "draft": 0, "head": "21036a5084a2c846a05feb6bced3111d849bbe3c", "base": "e240133b11588d31dc22c632f7a7ca636c72978d", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/553", "merged_by": null, "auto_merge": null} {"id": 1358282799, "node_id": "PR_kwDOCGYnMM5Q9cAv", "number": 549, "state": "closed", "locked": 0, "title": "TUI powered by Trogon", "user": {"value": 9599, "label": "simonw"}, "body": "Refs:\r\n- #545\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--549.org.readthedocs.build/en/549/\n\r\n", "created_at": "2023-05-21T17:55:42Z", "updated_at": "2023-05-21T18:42:00Z", "closed_at": "2023-05-21T18:41:56Z", "merged_at": "2023-05-21T18:41:56Z", "merge_commit_sha": "718b0cba9b32d97a41bcf9757c97fe1d058da81c", "assignee": null, "milestone": null, "draft": 0, "head": "948692a94b22852b3147abebac9d719b69320b57", "base": "e8c5b042e49c627aefd620c8d4b1c84eb8677f73", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/549", "merged_by": null, "auto_merge": null} {"id": 1358254580, "node_id": "PR_kwDOCGYnMM5Q9VH0", "number": 546, "state": "closed", "locked": 0, "title": "Analyze tables options: --common-limit, --no-most, --no-least", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #544\r\n\r\n- [x] Documentation for CLI options\r\n- [x] Documentation for new Python API parameters: `most_common: bool` and `least_common: bool`\r\n- [x] Tests for CLI\r\n- [x] Tests for Python API", "created_at": "2023-05-21T15:54:39Z", "updated_at": "2023-05-21T16:19:30Z", "closed_at": "2023-05-21T16:19:30Z", "merged_at": "2023-05-21T16:19:30Z", "merge_commit_sha": "d2a7b15b2b930fe384e1f1715fc4af23386f4935", "assignee": null, "milestone": null, "draft": 0, "head": "2eca17d46eca2cff52c78553085ec64d9029c969", "base": "e047cc32e9d5de7025d4d3c16554d4290f4bd3d1", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/546", "merged_by": null, "auto_merge": null} {"id": 1333843584, "node_id": "PR_kwDOBm6k_c5PgNaA", "number": 2068, "state": "closed", "locked": 0, "title": "Bump sphinx from 6.1.3 to 7.0.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 6.1.3 to 7.0.0.\n
\nRelease notes\n

Sourced from sphinx's releases.

\n
\n

v7.0.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v7.0.0rc1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.2.1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.2.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n
\n
\n
\nChangelog\n

Sourced from sphinx's changelog.

\n
\n

Release 7.0.0 (released Apr 29, 2023)

\n

Incompatible changes

\n\n

Release 6.2.1 (released Apr 25, 2023)

\n

Bugs fixed

\n\n

Release 6.2.0 (released Apr 23, 2023)

\n

Dependencies

\n\n

Incompatible changes

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sphinx&package-manager=pip&previous-version=6.1.3&new-version=7.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2068.org.readthedocs.build/en/2068/\n\r\n", "created_at": "2023-05-01T13:58:46Z", "updated_at": "2023-05-15T13:59:38Z", "closed_at": "2023-05-15T13:59:36Z", "merged_at": null, "merge_commit_sha": "262233b5f387ea64f6f71587eb14d3a4025a474c", "assignee": null, "milestone": null, "draft": 0, "head": "379a597e4e813ace6ffd032c6e9a40a682e05a7f", "base": "55c526a5373aa41c76a3f052624f92e7add59cc8", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2068", "merged_by": null, "auto_merge": null} {"id": 1234321667, "node_id": "PR_kwDOCGYnMM5JkkED", "number": 526, "state": "closed", "locked": 0, "title": "Fix repeated calls to `Table.convert()`", "user": {"value": 167893, "label": "mcarpenter"}, "body": "Fixes #525. All tests pass.\r\n\r\nThere's perhaps a better way to name lambdas? There could be a collision if a caller passes a function with name like `lambda_123456`.\r\n\r\nSQLite [documentation](https://www.sqlite.org/appfunc.html) is a little, ah, lite on function name specs. If there is a character that can be used in place of underscore in a SQLite function name that is not permitted in a Python function identifier then that could be a good way to prevent accidental collisions. (I tried dash, colon, dot, no joy).\r\n\r\nOtherwise, there is little chance of this happening and if it should happen the risk is mitigated by now throwing an exception in the case of a (name, arity) collision without `replace=True`.\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://sqlite-utils--526.org.readthedocs.build/en/526/\r\n\r\n", "created_at": "2023-02-09T00:14:49Z", "updated_at": "2023-05-08T21:56:05Z", "closed_at": "2023-05-08T21:53:58Z", "merged_at": "2023-05-08T21:53:58Z", "merge_commit_sha": "02f5c4d69d7b4baebde015c56e5bc62923f33314", "assignee": null, "milestone": null, "draft": 0, "head": "486e0cc1cd67e98c22d1f125403144cdedfa3d58", "base": "fc221f9b62ed8624b1d2098e564f525c84497969", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/526", "merged_by": null, "auto_merge": null} {"id": 1136499802, "node_id": "PR_kwDOCGYnMM5DvZxa", "number": 515, "state": "closed", "locked": 0, "title": "upsert new rows with constraints, fixes #514", "user": {"value": 193185, "label": "cldellow"}, "body": "This fixes #514 by making the initial insert for upserts include all columns, so that new rows can be added to tables with non-pkey columns that have constraints.\r\n\r\n(aside: I'm not a python programmer. `pip`? `pipenv`? `venv`? These are mystical incantations to me. The process to set up this repo for local development and testing was _so easy_. Thank you for the excellent contributing documentation!)\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://sqlite-utils--515.org.readthedocs.build/en/515/\r\n\r\n", "created_at": "2022-11-26T16:15:21Z", "updated_at": "2023-05-08T21:27:11Z", "closed_at": "2023-05-08T21:27:10Z", "merged_at": null, "merge_commit_sha": "c3713ef6944cbeacf36e462712cecac2176db692", "assignee": null, "milestone": null, "draft": 0, "head": "32f8173a8fe830c224e39a0a514cd12e78de7028", "base": "965ca0d5f5bffe06cc02cd7741344d1ddddf9d56", "author_association": "NONE", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/515", "merged_by": null, "auto_merge": null} {"id": 1173049178, "node_id": "PR_kwDOCGYnMM5F609a", "number": 519, "state": "closed", "locked": 0, "title": "Fixes breaking DEFAULT values", "user": {"value": 13819005, "label": "rhoboro"}, "body": "Fixes #509, Fixes #336\r\n\r\nThanks for the great library!\r\nI fixed a bug that `sqlite-utils transform` breaks DEFAULT values.\r\nAll tests already present passed with no changes, and I added some tests for this PR.\r\n\r\nIn #509 case, fixed here.\r\n\r\n```shell\r\n$ sqlite3 test.db << EOF\r\nCREATE TABLE mytable (\r\n col1 TEXT DEFAULT 'foo',\r\n col2 TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'))\r\n)\r\nEOF\r\n\r\n$ sqlite3 test.db \"SELECT sql FROM sqlite_master WHERE name = 'mytable';\"\r\nCREATE TABLE mytable (\r\n col1 TEXT DEFAULT 'foo',\r\n col2 TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'))\r\n)\r\n\r\n$ sqlite3 test.db \"INSERT INTO mytable DEFAULT VALUES; SELECT * FROM mytable;\"\r\nfoo|2022-12-21 01:15:39.669\r\n\r\n$ sqlite-utils transform test.db mytable --rename col1 renamedcol1\r\n$ sqlite3 test.db \"SELECT sql FROM sqlite_master WHERE name = 'mytable';\"\r\nCREATE TABLE \"mytable\" (\r\n [renamedcol1] TEXT DEFAULT 'foo',\r\n [col2] TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')) # \u2190 Non-String Value\r\n)\r\n\r\n$ sqlite3 test.db \"INSERT INTO mytable DEFAULT VALUES; SELECT * FROM mytable;\"\r\nfoo|2022-12-21 01:15:39.669\r\nfoo|2022-12-21 01:15:56.432\r\n```\r\n\r\nAnd #336 case also fixed.\r\nSpecial values are described [here](https://www.sqlite.org/lang_createtable.html).\r\n\r\n> 3.2. The DEFAULT clause\r\n> ... A default value may also be one of the special case-independent keywords CURRENT_TIME, CURRENT_DATE or CURRENT_TIMESTAMP.\r\n\r\n```shell\r\n$ echo 'create table bar (baz text, created_at timestamp default CURRENT_TIMESTAMP)' | sqlite3 foo.db\r\n$ sqlite3 foo.db\r\nSQLite version 3.39.5 2022-10-14 20:58:05\r\nEnter \".help\" for usage hints.\r\nsqlite> .schema bar\r\nCREATE TABLE bar (baz text, created_at timestamp default CURRENT_TIMESTAMP);\r\nsqlite> .exit\r\n\r\n$ sqlite-utils transform foo.db bar --column-order baz\r\n$ sqlite3 foo.db\r\nSQLite version 3.39.5 2022-10-14 20:58:05\r\nEnter \".help\" for usage hints.\r\nsqlite> .schema bar\r\nCREATE TABLE IF NOT EXISTS \"bar\" (\r\n [baz] TEXT,\r\n [created_at] FLOAT DEFAULT CURRENT_TIMESTAMP\r\n);\r\nsqlite> .exit\r\n\r\n$ sqlite-utils transform foo.db bar --column-order baz\r\n$ sqlite3 foo.db\r\nSQLite version 3.39.5 2022-10-14 20:58:05\r\nEnter \".help\" for usage hints.\r\nsqlite> .schema bar\r\nCREATE TABLE IF NOT EXISTS \"bar\" (\r\n [baz] TEXT,\r\n [created_at] FLOAT DEFAULT CURRENT_TIMESTAMP # \u2190 Non-String Value\r\n);\r\n```\r\n\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--519.org.readthedocs.build/en/519/\n\r\n", "created_at": "2022-12-21T01:27:52Z", "updated_at": "2023-05-08T21:13:37Z", "closed_at": "2023-05-08T21:13:37Z", "merged_at": "2023-05-08T21:13:37Z", "merge_commit_sha": "6500fed8b2085869b9714ce3a08c30f61dc829ad", "assignee": null, "milestone": null, "draft": 0, "head": "5e5c262fab69eb3c470afa57fc52d3d7d8beee7a", "base": "fc221f9b62ed8624b1d2098e564f525c84497969", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/519", "merged_by": null, "auto_merge": null} {"id": 1311438738, "node_id": "PR_kwDOCGYnMM5OKveS", "number": 537, "state": "closed", "locked": 0, "title": "Support self-referencing FKs in `Table.create`", "user": {"value": 544011, "label": "numist"}, "body": "\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--537.org.readthedocs.build/en/537/\n\r\n", "created_at": "2023-04-12T20:26:58Z", "updated_at": "2023-05-08T22:45:33Z", "closed_at": "2023-05-08T21:10:01Z", "merged_at": "2023-05-08T21:10:01Z", "merge_commit_sha": "39ef137e6760d385dc48d03eccf9b89943636fc7", "assignee": null, "milestone": null, "draft": 0, "head": "a75abeb61b91a28650d3b9933e7ec80ad0d92529", "base": "c0251cc9271260de73b4227859a51fab9b4cb745", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/537", "merged_by": null, "auto_merge": null} {"id": 1235909998, "node_id": "PR_kwDOCGYnMM5Jqn1u", "number": 528, "state": "closed", "locked": 0, "title": "Enable `Table.convert()` on falsey values", "user": {"value": 167893, "label": "mcarpenter"}, "body": "Fixes #527\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--528.org.readthedocs.build/en/528/\n\r\n", "created_at": "2023-02-10T00:04:09Z", "updated_at": "2023-05-08T21:08:23Z", "closed_at": "2023-05-08T21:08:23Z", "merged_at": null, "merge_commit_sha": "279fb2c85c6b3fc7b593aaf4245bd3a038bff5f0", "assignee": null, "milestone": null, "draft": 0, "head": "a09df3844ab91b70cebb7b888fc07cb21dffd01c", "base": "fc221f9b62ed8624b1d2098e564f525c84497969", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/528", "merged_by": null, "auto_merge": null} {"id": 1327188997, "node_id": "PR_kwDOBm6k_c5PG0wF", "number": 2064, "state": "closed", "locked": 0, "title": "Bump sphinx from 6.1.3 to 6.2.1", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 6.1.3 to 6.2.1.\n
\nRelease notes\n

Sourced from sphinx's releases.

\n
\n

v6.2.1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.2.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n
\n
\n
\nChangelog\n

Sourced from sphinx's changelog.

\n
\n

Release 6.2.1 (released Apr 25, 2023)

\n

Bugs fixed

\n\n

Release 6.2.0 (released Apr 23, 2023)

\n

Dependencies

\n\n

Incompatible changes

\n\n

Deprecated

\n\n

Features added

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sphinx&package-manager=pip&previous-version=6.1.3&new-version=6.2.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2064.org.readthedocs.build/en/2064/\n\r\n", "created_at": "2023-04-25T13:57:49Z", "updated_at": "2023-05-01T13:58:53Z", "closed_at": "2023-05-01T13:58:52Z", "merged_at": null, "merge_commit_sha": "52cecfdbe83c2ee73b7e4dd90e296b48dbaf3db2", "assignee": null, "milestone": null, "draft": 0, "head": "7711a4af20ede9908867437d0baf3604281fd99f", "base": "5890a20c374fb0812d88c9b0ef26a838bfa06c76", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2064", "merged_by": null, "auto_merge": null} {"id": 1325515181, "node_id": "PR_kwDOBm6k_c5PAcGt", "number": 2063, "state": "closed", "locked": 0, "title": "Bump sphinx from 6.1.3 to 6.2.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 6.1.3 to 6.2.0.\n
\nRelease notes\n

Sourced from sphinx's releases.

\n
\n

v6.2.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n
\n
\n
\nChangelog\n

Sourced from sphinx's changelog.

\n
\n

Release 6.2.0 (released Apr 23, 2023)

\n

Dependencies

\n\n

Incompatible changes

\n\n

Deprecated

\n\n

Features added

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sphinx&package-manager=pip&previous-version=6.1.3&new-version=6.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2063.org.readthedocs.build/en/2063/\n\r\n", "created_at": "2023-04-24T13:58:21Z", "updated_at": "2023-04-25T13:57:55Z", "closed_at": "2023-04-25T13:57:53Z", "merged_at": null, "merge_commit_sha": "e621c970bc64b2c90b801a9fc1e300b9452f6a5f", "assignee": null, "milestone": null, "draft": 0, "head": "9838c5839d591332dc9a8ffd6255918e0ac78f05", "base": "5890a20c374fb0812d88c9b0ef26a838bfa06c76", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2063", "merged_by": null, "auto_merge": null} {"id": 1306498393, "node_id": "PR_kwDOCGYnMM5N35VZ", "number": 536, "state": "closed", "locked": 0, "title": "Add paths for homebrew on Apple silicon", "user": {"value": 25778, "label": "eyeseast"}, "body": "Does what it says and nothing else. This is the same set of paths as Datasette uses.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--536.org.readthedocs.build/en/536/\n\r\n", "created_at": "2023-04-08T13:34:21Z", "updated_at": "2023-04-13T01:44:43Z", "closed_at": "2023-04-13T01:44:43Z", "merged_at": "2023-04-13T01:44:43Z", "merge_commit_sha": "8f9a729e8aff972cb18de25b40f4113e26bbc758", "assignee": null, "milestone": null, "draft": 0, "head": "cea05dc5eab8d10fbd8943e615d2ab0dceff863c", "base": "c0251cc9271260de73b4227859a51fab9b4cb745", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/536", "merged_by": null, "auto_merge": null} {"id": 1272169404, "node_id": "PR_kwDOCGYnMM5L08O8", "number": 531, "state": "closed", "locked": 0, "title": "Add paths for homebrew on Apple silicon", "user": {"value": 25778, "label": "eyeseast"}, "body": "This also passes in the extension path when specified in GIS methods. Wherever we know an extension path, we use `db.init_spatialite(find_spatialite() or load_extension)`.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--531.org.readthedocs.build/en/531/\n\r\n", "created_at": "2023-03-11T22:27:52Z", "updated_at": "2023-04-09T01:49:44Z", "closed_at": "2023-04-09T01:49:43Z", "merged_at": null, "merge_commit_sha": "24f3eb082b98b8d676bab2eab4f763cd9b50fe96", "assignee": null, "milestone": null, "draft": 0, "head": "afdf6187716b19fce8692f6887a1d45c85477fee", "base": "c0251cc9271260de73b4227859a51fab9b4cb745", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/531", "merged_by": null, "auto_merge": null} {"id": 1294011106, "node_id": "PR_kwDOBm6k_c5NIQri", "number": 2047, "state": "closed", "locked": 0, "title": "Bump black from 22.12.0 to 23.3.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 22.12.0 to 23.3.0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

23.3.0

\n

Highlights

\n

This release fixes a longstanding confusing behavior in Black's GitHub action, where the\nversion of the action did not determine the version of Black being run (issue #3382). In\naddition, there is a small bug fix around imports and a number of improvements to the\npreview style.

\n

Please try out the\npreview style\nwith black --preview and tell us your feedback. All changes in the preview style are\nexpected to become part of Black's stable style in January 2024.

\n

Stable style

\n\n

Preview style

\n\n

Parser

\n\n

Integrations

\n\n

Documentation

\n\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

23.3.0

\n

Highlights

\n

This release fixes a longstanding confusing behavior in Black's GitHub action, where the\nversion of the action did not determine the version of Black being run (issue #3382). In\naddition, there is a small bug fix around imports and a number of improvements to the\npreview style.

\n

Please try out the\npreview style\nwith black --preview and tell us your feedback. All changes in the preview style are\nexpected to become part of Black's stable style in January 2024.

\n

Stable style

\n\n

Preview style

\n\n

Parser

\n\n

Integrations

\n\n

Documentation

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=22.12.0&new-version=23.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2047.org.readthedocs.build/en/2047/\n\r\n", "created_at": "2023-03-29T06:09:06Z", "updated_at": "2023-03-29T06:12:21Z", "closed_at": "2023-03-29T06:12:05Z", "merged_at": "2023-03-29T06:12:05Z", "merge_commit_sha": "30c88e3570ba3febf232c7ad429d7045ea8a9915", "assignee": null, "milestone": null, "draft": 0, "head": "dff8cf08625bbf4526b400f53da9f3ceba62fa97", "base": "bbd5489dbc440c67c69396e7f752584a32d2cfbe", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2047", "merged_by": null, "auto_merge": null} {"id": 1198982240, "node_id": "PR_kwDOBm6k_c5HdwRg", "number": 1992, "state": "closed", "locked": 0, "title": "Bump blacken-docs from 1.12.1 to 1.13.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [blacken-docs](https://github.com/asottile/blacken-docs) from 1.12.1 to 1.13.0.\n
\nChangelog\n

Sourced from blacken-docs's changelog.

\n
\n

1.13.0 (2023-01-16)

\n\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=blacken-docs&package-manager=pip&previous-version=1.12.1&new-version=1.13.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1992.org.readthedocs.build/en/1992/\n\r\n", "created_at": "2023-01-16T13:05:05Z", "updated_at": "2023-03-29T06:11:35Z", "closed_at": "2023-03-29T06:11:34Z", "merged_at": "2023-03-29T06:11:34Z", "merge_commit_sha": "bbd5489dbc440c67c69396e7f752584a32d2cfbe", "assignee": null, "milestone": null, "draft": 0, "head": "64dd698df1d38903a5791f876c7c01e7dd6d04f4", "base": "d52402447ea5eb5a3f084e4f85a45675d34eb4da", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1992", "merged_by": null, "auto_merge": null} {"id": 1193778792, "node_id": "PR_kwDOBm6k_c5HJ55o", "number": 1986, "state": "closed", "locked": 0, "title": "Bump sphinx from 6.1.2 to 6.1.3", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 6.1.2 to 6.1.3.\n
\nRelease notes\n

Sourced from sphinx's releases.

\n
\n

v6.1.3

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n
\n
\n
\nChangelog\n

Sourced from sphinx's changelog.

\n
\n

Release 6.1.3 (released Jan 10, 2023)

\n

Bugs fixed

\n\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sphinx&package-manager=pip&previous-version=6.1.2&new-version=6.1.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1986.org.readthedocs.build/en/1986/\n\r\n", "created_at": "2023-01-11T13:02:36Z", "updated_at": "2023-03-29T06:09:50Z", "closed_at": "2023-03-29T06:09:49Z", "merged_at": "2023-03-29T06:09:49Z", "merge_commit_sha": "d52402447ea5eb5a3f084e4f85a45675d34eb4da", "assignee": null, "milestone": null, "draft": 0, "head": "82983b6c69c687f76e1ced0a07e0d590c3a97574", "base": "848a9a420de9b50a7c862db7fb34d930835bee89", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1986", "merged_by": null, "auto_merge": null} {"id": 1224851890, "node_id": "PR_kwDOBm6k_c5JAcGy", "number": 2014, "state": "closed", "locked": 0, "title": "Bump black from 22.12.0 to 23.1.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 22.12.0 to 23.1.0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

23.1.0

\n

Highlights

\n

This is the first release of 2023, and following our stability policy, it comes with a number of improvements to our stable style, notably improvements to empty line handling and the removal of redundant parentheses in several contexts.

\n

There are also many changes to the preview style; try out black --preview and give us feedback to help us set the stable style for next year.

\n

In addition to style changes, Black now automatically infers the supported Python versions from your pyproject.toml file, removing the need to set Black's target versions separately.

\n

Stable style

\n\n\n

Preview style

\n\n\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

23.1.0

\n

Highlights

\n

This is the first release of 2023, and following our\nstability policy,\nit comes with a number of improvements to our stable style, including improvements to\nempty line handling, removal of redundant parentheses in several contexts, and output\nthat highlights implicitly concatenated strings better.

\n

There are also many changes to the preview style; try out black --preview and give us\nfeedback to help us set the stable style for next year.

\n

In addition to style changes, Black now automatically infers the supported Python\nversions from your pyproject.toml file, removing the need to set Black's target\nversions separately.

\n

Stable style

\n\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=22.12.0&new-version=23.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2014.org.readthedocs.build/en/2014/\n\r\n", "created_at": "2023-02-01T13:06:16Z", "updated_at": "2023-03-29T06:09:14Z", "closed_at": "2023-03-29T06:09:12Z", "merged_at": null, "merge_commit_sha": "38f5695c85ee073f2405dfe89d6ff798b01222f8", "assignee": null, "milestone": null, "draft": 0, "head": "c631684bc7bde78f77a564b337d2e2e6e87cfa7e", "base": "0b4a28691468b5c758df74fa1d72a823813c96bf", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2014", "merged_by": null, "auto_merge": null} {"id": 1293066318, "node_id": "PR_kwDOBm6k_c5NEqBO", "number": 2046, "state": "closed", "locked": 0, "title": "Bump furo from 2022.12.7 to 2023.3.27", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [furo](https://github.com/pradyunsg/furo) from 2022.12.7 to 2023.3.27.\n
\nChangelog\n

Sourced from furo's changelog.

\n
\n

Changelog

\n\n

2023.03.27 -- Tasty Tangerine

\n\n

2023.03.23 -- Sassy Saffron

\n\n

2022.12.07 -- Reverent Raspberry

\n\n

2022.09.29 -- Quaint Quartz

\n\n

2022.09.15 -- Pragmatic Pistachio

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=furo&package-manager=pip&previous-version=2022.12.7&new-version=2023.3.27)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2046.org.readthedocs.build/en/2046/\n\r\n", "created_at": "2023-03-28T13:58:14Z", "updated_at": "2023-03-29T06:08:02Z", "closed_at": "2023-03-29T06:08:01Z", "merged_at": "2023-03-29T06:08:01Z", "merge_commit_sha": "848a9a420de9b50a7c862db7fb34d930835bee89", "assignee": null, "milestone": null, "draft": 0, "head": "a8166e96eecbab1064ef7a373699320415d839a5", "base": "c025b0180fe344e4f28177ecd7cf388d492d3064", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2046", "merged_by": null, "auto_merge": null} {"id": 1289104584, "node_id": "PR_kwDOBm6k_c5M1izI", "number": 2043, "state": "closed", "locked": 0, "title": "Bump furo from 2022.12.7 to 2023.3.23", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [furo](https://github.com/pradyunsg/furo) from 2022.12.7 to 2023.3.23.\n
\nChangelog\n

Sourced from furo's changelog.

\n
\n

Changelog

\n\n

2023.03.23 -- Sassy Saffron

\n\n

2022.12.07 -- Reverent Raspberry

\n\n

2022.09.29 -- Quaint Quartz

\n\n

2022.09.15 -- Pragmatic Pistachio

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=furo&package-manager=pip&previous-version=2022.12.7&new-version=2023.3.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2043.org.readthedocs.build/en/2043/\n\r\n", "created_at": "2023-03-24T13:58:08Z", "updated_at": "2023-03-28T13:58:24Z", "closed_at": "2023-03-28T13:58:21Z", "merged_at": null, "merge_commit_sha": "eb0601c965ebb12162c76259d89fb9fe6549bcc0", "assignee": null, "milestone": null, "draft": 0, "head": "85b9e5139980b0e802b6f0bcfaa2f7c975c30970", "base": "3feed1f66e2b746f349ee56970a62246a18bb164", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2043", "merged_by": null, "auto_merge": null} {"id": 1212277427, "node_id": "PR_kwDOBm6k_c5IQeKz", "number": 1999, "state": "closed", "locked": 0, "title": "?_extra= support (draft)", "user": {"value": 9599, "label": "simonw"}, "body": "Refs:\r\n- #262\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1999.org.readthedocs.build/en/1999/\n\r\n", "created_at": "2023-01-21T04:55:18Z", "updated_at": "2023-03-22T22:49:41Z", "closed_at": "2023-03-22T22:49:40Z", "merged_at": "2023-03-22T22:49:40Z", "merge_commit_sha": "d97e82df3c8a3f2e97038d7080167be9bb74a68d", "assignee": null, "milestone": null, "draft": 0, "head": "69a31cd5b61f0b62938efdeec5972090f1a1a508", "base": "56b0758a5fbf85d01ff80a40c9b028469d7bb65f", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1999", "merged_by": null, "auto_merge": null} {"id": 1246416723, "node_id": "PR_kwDOBm6k_c5KSs9T", "number": 2028, "state": "closed", "locked": 0, "title": "add Python 3.11 classifier", "user": {"value": 614233, "label": "dtrodrigues"}, "body": "Python 3.11 is tested in CI and is used in the docker image, so add the Python 3.11 Trove classifier.\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://datasette--2028.org.readthedocs.build/en/2028/\r\n\r\n", "created_at": "2023-02-19T20:16:03Z", "updated_at": "2023-03-06T21:01:20Z", "closed_at": "2023-03-06T21:01:19Z", "merged_at": "2023-03-06T21:01:19Z", "merge_commit_sha": "a53b893c46453f35decc8c145c138671cee6140c", "assignee": null, "milestone": null, "draft": 0, "head": "a8dde133f996099be9bc927c013d853dd10cd54f", "base": "0b4a28691468b5c758df74fa1d72a823813c96bf", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2028", "merged_by": null, "auto_merge": null} {"id": 1190763280, "node_id": "PR_kwDOBm6k_c5G-ZsQ", "number": 1982, "state": "closed", "locked": 0, "title": "Bump sphinx from 5.3.0 to 6.1.2", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 5.3.0 to 6.1.2.\n
\nRelease notes\n

Sourced from sphinx's releases.

\n
\n

v6.1.2

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.1.1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.1.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0b2

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0b1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n
\n
\n
\nChangelog\n

Sourced from sphinx's changelog.

\n
\n

Release 6.1.2 (released Jan 07, 2023)

\n

Bugs fixed

\n\n

Release 6.1.1 (released Jan 05, 2023)

\n

Bugs fixed

\n\n

Release 6.1.0 (released Jan 05, 2023)

\n

Dependencies

\n\n

Incompatible changes

\n\n

Deprecated

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sphinx&package-manager=pip&previous-version=5.3.0&new-version=6.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1982.org.readthedocs.build/en/1982/\n\r\n", "created_at": "2023-01-09T13:06:11Z", "updated_at": "2023-01-10T02:03:21Z", "closed_at": "2023-01-10T02:03:19Z", "merged_at": null, "merge_commit_sha": "8e25eb9553a34438663c16a75d921f2ffe11b353", "assignee": null, "milestone": null, "draft": 0, "head": "700a12848da52e1f28a892d424319364e001ed6f", "base": "7b48664d751e59222c01c97a2739d53d6363bdda", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1982", "merged_by": null, "auto_merge": null} {"id": 1191716406, "node_id": "PR_kwDOBm6k_c5HCCY2", "number": 1984, "state": "closed", "locked": 0, "title": "Upgrade Sphinx", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1971\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1984.org.readthedocs.build/en/1984/\n\r\n", "created_at": "2023-01-10T02:00:40Z", "updated_at": "2023-01-10T02:02:33Z", "closed_at": "2023-01-10T02:02:33Z", "merged_at": "2023-01-10T02:02:32Z", "merge_commit_sha": "8e7073404379d79a2d269167a12bbb58439edd39", "assignee": null, "milestone": null, "draft": 0, "head": "0c8b3f5ca1385c804c696f1fa61c24de29ae4755", "base": "4880638f13c3a1abc53f395cde39ac848daf416d", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1984", "merged_by": null, "auto_merge": null} {"id": 1188133959, "node_id": "PR_kwDOBm6k_c5G0XxH", "number": 1977, "state": "closed", "locked": 0, "title": "Bump sphinx from 5.3.0 to 6.1.1", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 5.3.0 to 6.1.1.\n
\nRelease notes\n

Sourced from sphinx's releases.

\n
\n

v6.1.1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.1.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0b2

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0b1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n
\n
\n
\nChangelog\n

Sourced from sphinx's changelog.

\n
\n

Release 6.1.1 (released Jan 05, 2023)

\n

Bugs fixed

\n\n

Release 6.1.0 (released Jan 05, 2023)

\n

Dependencies

\n\n

Incompatible changes

\n\n

Deprecated

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sphinx&package-manager=pip&previous-version=5.3.0&new-version=6.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1977.org.readthedocs.build/en/1977/\n\r\n", "created_at": "2023-01-06T13:02:12Z", "updated_at": "2023-01-09T13:06:17Z", "closed_at": "2023-01-09T13:06:14Z", "merged_at": null, "merge_commit_sha": "23faad99fb4d7282f6170742fa7e5ef2bbd935af", "assignee": null, "milestone": null, "draft": 0, "head": "a4eebeecd723ed9bc5517fd2f05320c11df3d749", "base": "c41278b46f7936b4b1a8a14bf285bed82c81c609", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1977", "merged_by": null, "auto_merge": null} {"id": 1186476109, "node_id": "PR_kwDOBm6k_c5GuDBN", "number": 1976, "state": "closed", "locked": 0, "title": "Bump sphinx from 5.3.0 to 6.1.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 5.3.0 to 6.1.0.\n
\nRelease notes\n

Sourced from sphinx's releases.

\n
\n

v6.1.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0b2

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0b1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n
\n
\n
\nChangelog\n

Sourced from sphinx's changelog.

\n
\n

Release 6.1.0 (released Jan 05, 2023)

\n

Dependencies

\n\n

Incompatible changes

\n\n

Deprecated

\n\n

Features added

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sphinx&package-manager=pip&previous-version=5.3.0&new-version=6.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1976.org.readthedocs.build/en/1976/\n\r\n", "created_at": "2023-01-05T13:02:37Z", "updated_at": "2023-01-06T13:02:17Z", "closed_at": "2023-01-06T13:02:15Z", "merged_at": null, "merge_commit_sha": "21d3f3f92f1c902ba7acb267022b1c2b38a59bf3", "assignee": null, "milestone": null, "draft": 0, "head": "af76abcf2e9a6645e3d85acbc0da1f69d04e377c", "base": "c41278b46f7936b4b1a8a14bf285bed82c81c609", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1976", "merged_by": null, "auto_merge": null} {"id": 1182593611, "node_id": "PR_kwDOBm6k_c5GfPJL", "number": 1974, "state": "closed", "locked": 0, "title": "Bump sphinx from 5.3.0 to 6.0.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 5.3.0 to 6.0.0.\n
\nRelease notes\n

Sourced from sphinx's releases.

\n
\n

v6.0.0

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0b2

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n

v6.0.0b1

\n

Changelog: https://www.sphinx-doc.org/en/master/changes.html

\n
\n
\n
\nChangelog\n

Sourced from sphinx's changelog.

\n
\n

Release 6.0.0 (released Dec 29, 2022)

\n

Dependencies

\n\n

Incompatible changes

\n\n

Features added

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sphinx&package-manager=pip&previous-version=5.3.0&new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1974.org.readthedocs.build/en/1974/\n\r\n", "created_at": "2023-01-02T13:04:26Z", "updated_at": "2023-01-05T13:02:42Z", "closed_at": "2023-01-05T13:02:40Z", "merged_at": null, "merge_commit_sha": "302502126c106d20af29005bbd3bc7e86ca69052", "assignee": null, "milestone": null, "draft": 0, "head": "1e213a39f9582f881c626888d704dd3f196f6ae7", "base": "572bdb5b8095bbdc5ec2aa95400055e49ea028cb", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1974", "merged_by": null, "auto_merge": null} {"id": 1170816476, "node_id": "PR_kwDOBm6k_c5FyT3c", "number": 1967, "state": "closed", "locked": 0, "title": "Add favicon to documentation", "user": {"value": 1839645, "label": "choldgraf"}, "body": "I've been browsing the datasette documentation and found it hard to quickly locate tabs with many of them open, because it does not ship a favicon. So this PR:\r\n\r\n- Grabs the favicon `.png` from datasette itself[^1]\r\n- Adds it to the `_static/` folder\r\n- Sets `html_favicon` to load it in the docs\r\n\r\n[^1]: I also learned that Chrome can fetch favicons as an internal service! See `chrome://favicon/https://datasette.io/tools/github-to-sqlite`.\r\n", "created_at": "2022-12-19T14:01:04Z", "updated_at": "2022-12-31T19:15:51Z", "closed_at": "2022-12-31T19:00:31Z", "merged_at": "2022-12-31T19:00:31Z", "merge_commit_sha": "994ce46ed4a5d680bee58242efd95181946c25e9", "assignee": null, "milestone": null, "draft": 0, "head": "ac64f6fe6aeb1941d01f862999a8b9d4e95f4991", "base": "e03aed00026cc2e59c09ca41f69a247e1a85cc89", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1967", "merged_by": null, "auto_merge": null} {"id": 737050557, "node_id": "PR_kwDOCGYnMM4r7n-9", "number": 327, "state": "closed", "locked": 0, "title": "Extract expand: Support JSON Arrays", "user": {"value": 101753, "label": "phaer"}, "body": "Hi,\r\n\r\nI needed to extract data in JSON Arrays to normalize data imports. I've quickly hacked the following together based on #241 which refers to #239 where you, @simonw, wrote:\r\n\r\n> Could this handle lists of objects too? That would be pretty amazing - if the column has a [{...}, {...}] list in it could turn that into a many-to-many.\r\n\r\nThey way this works in my work is that many-to-many relationships are created for anything that maps to an dictionary in a list, and many-to-one relations for everything else (assumed to be scalar values). Not sure what the best approach here would be? Are many-to-one relationships are at all useful here?\r\n\r\nWhat do you think about this approach? I could try to add it to the cli interface and documentation if wanted.\r\n\r\nThanks for this awesome piece of software in any case! :sun_with_face: ", "created_at": "2021-09-19T10:34:30Z", "updated_at": "2022-12-29T09:05:36Z", "closed_at": "2022-12-29T09:05:36Z", "merged_at": null, "merge_commit_sha": "f0105cde23452cb4c8a15fc6096154b15d9b7c5a", "assignee": null, "milestone": null, "draft": 0, "head": "2840c697aa9817462d864ed5f8a7696d749fe039", "base": "8d641ab08ac449081e96f3e25bd6c0226870948a", "author_association": "NONE", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/327", "merged_by": null, "auto_merge": null} {"id": 1169793638, "node_id": "PR_kwDOBm6k_c5FuaJm", "number": 1965, "state": "closed", "locked": 0, "title": "Detect server start/stop more reliably.", "user": {"value": 11321, "label": "janl"}, "body": "This is useful, especially in testing, since your test hosts might not reliabliy start the server within two seconds, so we do a definite check before progressing.\r\n\r\nBy the same token, after `kill $server_pid` wait for the pid to be gone from the process list.\r\n\r\nSince now the script can end prematurely, I also added a cleanup function to make sure the temporary certs are removed in any case.\r\n\r\nn.b. this could also be done with the use of `trap 'fn' ERR` but that felt like a bit too much magic for this short a script.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1965.org.readthedocs.build/en/1965/\n\r\n", "created_at": "2022-12-18T10:03:42Z", "updated_at": "2022-12-20T19:08:26Z", "closed_at": "2022-12-18T16:01:51Z", "merged_at": "2022-12-18T16:01:51Z", "merge_commit_sha": "e03aed00026cc2e59c09ca41f69a247e1a85cc89", "assignee": null, "milestone": null, "draft": 0, "head": "6a58fc71d481d27ef28a75b026b47713ca88eeec", "base": "a21c00b54dd6e0ecb17c60024fb1b55729c5d21e", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1965", "merged_by": null, "auto_merge": null} {"id": 1167432070, "node_id": "PR_kwDOBm6k_c5FlZmG", "number": 1960, "state": "closed", "locked": 0, "title": "Port as many tests as possible to async def tests against ds_client", "user": {"value": 9599, "label": "simonw"}, "body": "Refs:\r\n- #1959\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1960.org.readthedocs.build/en/1960/\n\r\n", "created_at": "2022-12-15T21:45:53Z", "updated_at": "2022-12-17T21:47:56Z", "closed_at": "2022-12-17T21:47:55Z", "merged_at": "2022-12-17T21:47:55Z", "merge_commit_sha": "89cffcf14cda830871c8ee81742eaa1e2dff017b", "assignee": null, "milestone": null, "draft": 0, "head": "f42bca8fc2657cecde05eca644c28fac7c28101f", "base": "0b68996cc511b3a801f0cd0157bd66332d75f46f", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1960", "merged_by": null, "auto_merge": null} {"id": 1167644140, "node_id": "PR_kwDOBm6k_c5FmNXs", "number": 1961, "state": "closed", "locked": 0, "title": "Use click.echo() instead of print() for --root option", "user": {"value": 9599, "label": "simonw"}, "body": "This ensures the URL is output correctly when running under Docker.\r\n\r\nCloses #1958\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1961.org.readthedocs.build/en/1961/\n\r\n", "created_at": "2022-12-16T00:54:56Z", "updated_at": "2022-12-16T00:55:19Z", "closed_at": "2022-12-16T00:55:18Z", "merged_at": "2022-12-16T00:55:18Z", "merge_commit_sha": "013496862f4d4b441ab61255242b838b24287607", "assignee": null, "milestone": null, "draft": 0, "head": "06d20c792f8c872118edd84973308fb3e5137b5e", "base": "0b68996cc511b3a801f0cd0157bd66332d75f46f", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1961", "merged_by": null, "auto_merge": null} {"id": 1160815750, "node_id": "PR_kwDOBm6k_c5FMKSG", "number": 1944, "state": "closed", "locked": 0, "title": "Bump black from 22.10.0 to 22.12.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 22.10.0 to 22.12.0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

22.12.0

\n

Preview style

\n\n\n

Configuration

\n\n\n

Parser

\n\n\n

Integrations

\n\n\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

22.12.0

\n

Preview style

\n\n\n

Configuration

\n\n\n

Parser

\n\n\n

Integrations

\n\n\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=22.10.0&new-version=22.12.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-12-12T13:05:11Z", "updated_at": "2022-12-13T05:23:31Z", "closed_at": "2022-12-13T05:23:30Z", "merged_at": "2022-12-13T05:23:30Z", "merge_commit_sha": "d4b98d3924dec625a99236e65b1b169ff957381f", "assignee": null, "milestone": null, "draft": 0, "head": "ac7a52436638ae85f1db0556a382845863546b3d", "base": "e539c1c024bc62d88df91d9107cbe37e7f0fe55f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1944", "merged_by": null, "auto_merge": null} {"id": 1154884166, "node_id": "PR_kwDOBm6k_c5E1iJG", "number": 1938, "state": "closed", "locked": 0, "title": "\"permissions\" blocks in metadata.json/yaml", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1636\r\n\r\n- [x] Documentation\r\n- [ ] Implementation\r\n- [ ] Validate metadata to check there are no nonsensical permissions (like `debug-menu` set at the table level)\r\n- [ ] Tests\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://datasette--1938.org.readthedocs.build/en/1938/\r\n\r\n", "created_at": "2022-12-08T22:07:36Z", "updated_at": "2022-12-13T05:23:19Z", "closed_at": "2022-12-13T05:23:18Z", "merged_at": null, "merge_commit_sha": "271ea3ae0c858de2d392b61a1a4a9f5837cbddf8", "assignee": null, "milestone": {"value": 8711695, "label": " Datasette 1.0a2"}, "draft": 0, "head": "6e35a6b4f7ea9ba3fb6f02f45452eeb41de69786", "base": "e539c1c024bc62d88df91d9107cbe37e7f0fe55f", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1938", "merged_by": null, "auto_merge": null} {"id": 1155365505, "node_id": "PR_kwDOBm6k_c5E3XqB", "number": 1940, "state": "closed", "locked": 0, "title": "register_permissions() plugin hook", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1939\r\n\r\nFrom this comment: https://github.com/simonw/datasette/issues/1939#issuecomment-1343872168\r\n\r\n- [x] Unit test for the registration plugin hook itself\r\n- [x] Use them in `check_permission_actions_are_documented` test in `conftest.py`\r\n- [x] Add description field to `Permissions` (and update tests and docs)\r\n- [x] Documentation for `datasette.permissions` dictionary\r\n- [x] If no `default=` provided in call to `permission_allowed()` then use default from `datasette.permissions` list\r\n- [x] Remove `default=` from a bunch of places\r\n- [x] Throw an error if two permissions are registered with the same name or abbreviation (but other attributes differ)\r\n- [x] Update authentication and permissions documentation to explain that permissions are now registered and have a registered default\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://datasette--1940.org.readthedocs.build/en/1940/\r\n\r\n", "created_at": "2022-12-09T05:09:28Z", "updated_at": "2022-12-13T02:05:55Z", "closed_at": "2022-12-13T02:05:54Z", "merged_at": "2022-12-13T02:05:54Z", "merge_commit_sha": "8bf06a76b51bc9ace7cf72cf0cca8f1da7704ea7", "assignee": null, "milestone": {"value": 8711695, "label": " Datasette 1.0a2"}, "draft": 0, "head": "94e5c75397a96b86a3349123808cd02cb20f7440", "base": "e539c1c024bc62d88df91d9107cbe37e7f0fe55f", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1940", "merged_by": null, "auto_merge": null} {"id": 1143946542, "node_id": "PR_kwDOBm6k_c5ELz0u", "number": 1930, "state": "closed", "locked": 0, "title": "Typo in JSON API `Updating a row` documentation", "user": {"value": 3556, "label": "davidbgk"}, "body": "\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1930.org.readthedocs.build/en/1930/\n\r\n", "created_at": "2022-12-03T02:22:31Z", "updated_at": "2022-12-08T21:12:35Z", "closed_at": "2022-12-08T21:12:35Z", "merged_at": "2022-12-08T21:12:35Z", "merge_commit_sha": "e539c1c024bc62d88df91d9107cbe37e7f0fe55f", "assignee": null, "milestone": null, "draft": 0, "head": "9928ff17b47443f6b51e570ae6116fd472756096", "base": "cab5b60e09e94aca820dbec5308446a88c99ea3d", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1930", "merged_by": null, "auto_merge": null} {"id": 1151526508, "node_id": "PR_kwDOBm6k_c5EouZs", "number": 1935, "state": "closed", "locked": 0, "title": "Bump furo from 2022.9.29 to 2022.12.7", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [furo](https://github.com/pradyunsg/furo) from 2022.9.29 to 2022.12.7.\n
\nChangelog\n

Sourced from furo's changelog.

\n
\n

Changelog

\n\n

2022.12.07 -- Reverent Raspberry

\n\n

2022.09.29 -- Quaint Quartz

\n\n

2022.09.15 -- Pragmatic Pistachio

\n\n

2022.06.21 -- Opulent Opal

\n\n

2022.06.04.1 -- Naughty Nickel bugfix

\n\n

2022.06.04 -- Naughty Nickel

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=furo&package-manager=pip&previous-version=2022.9.29&new-version=2022.12.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1935.org.readthedocs.build/en/1935/\n\r\n", "created_at": "2022-12-07T13:02:57Z", "updated_at": "2022-12-08T21:12:08Z", "closed_at": "2022-12-08T21:12:07Z", "merged_at": "2022-12-08T21:12:07Z", "merge_commit_sha": "bffefc7db0c25acb03e3b44ff357d50bb7f04dd7", "assignee": null, "milestone": null, "draft": 0, "head": "e8ae41e27c5ec3b0738deb536fc206bd4b9ce823", "base": "93ababe6f7150454d2cf278dae08569e505d2a5b", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1935", "merged_by": null, "auto_merge": null} {"id": 1144085408, "node_id": "PR_kwDOBm6k_c5EMVug", "number": 1931, "state": "closed", "locked": 0, "title": "/db/table/-/upsert", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1878\r\n\r\nStill todo:\r\n- [x] Support `\"return\": true` properly for upserts (with tests)\r\n- [x] Require both `insert-row` and `update-row` permissions\r\n- [x] Tests are going to need to cover both rowid-only and compound primary key tables, including all of the error states\r\n- [x] Documentation\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://datasette--1931.org.readthedocs.build/en/1931/\r\n\r\n", "created_at": "2022-12-03T07:01:44Z", "updated_at": "2022-12-08T01:12:17Z", "closed_at": "2022-12-08T01:12:16Z", "merged_at": "2022-12-08T01:12:16Z", "merge_commit_sha": "272982e8a6f45700ff93c3917b4688a86de0e672", "assignee": null, "milestone": {"value": 8711695, "label": " Datasette 1.0a2"}, "draft": 0, "head": "7cd6fd9f76913196d4f99a194a30e406f33aa363", "base": "93ababe6f7150454d2cf278dae08569e505d2a5b", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1931", "merged_by": null, "auto_merge": null} {"id": 1139440836, "node_id": "PR_kwDOBm6k_c5D6nzE", "number": 1912, "state": "closed", "locked": 0, "title": "Merge 1.0-dev (with initial write API) back into main", "user": {"value": 9599, "label": "simonw"}, "body": "See:\r\n- #1892\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1912.org.readthedocs.build/en/1912/\n\r\n", "created_at": "2022-11-29T19:31:21Z", "updated_at": "2022-11-29T19:39:37Z", "closed_at": "2022-11-29T19:39:36Z", "merged_at": "2022-11-29T19:39:36Z", "merge_commit_sha": "07aad511769da9242260c850e8d975cbd8c29552", "assignee": null, "milestone": null, "draft": 0, "head": "b8fc8e2cd755b9cfc66838bdc1ca9ee87afdce8a", "base": "21f8aab53164a4f096737743d8cc624d2186327a", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1912", "merged_by": null, "auto_merge": null} {"id": 1125261188, "node_id": "PR_kwDOBm6k_c5DEh-E", "number": 1898, "state": "closed", "locked": 0, "title": "Use DOMContentLoaded instead of load event for CodeMirror initialization", "user": {"value": 95570, "label": "bgrins"}, "body": " Closes #1894\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1898.org.readthedocs.build/en/1898/\n\r\n", "created_at": "2022-11-17T00:19:21Z", "updated_at": "2022-11-18T07:29:01Z", "closed_at": "2022-11-18T07:29:01Z", "merged_at": "2022-11-18T07:29:01Z", "merge_commit_sha": "3ecd131e57add427d847b614c920c9624bb2e66b", "assignee": null, "milestone": null, "draft": 0, "head": "5eb4ea45ce6cdc7003fc7c5175977b025b0f111e", "base": "00e233d7a7f6443cb95fb5227c23580c48551cad", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1898", "merged_by": null, "auto_merge": null} {"id": 1123392399, "node_id": "PR_kwDOBm6k_c5C9ZuP", "number": 1893, "state": "closed", "locked": 0, "title": "Upgrade to CodeMirror 6, add SQL autocomplete", "user": {"value": 95570, "label": "bgrins"}, "body": "In an effort to get closer to table / column autocomplete I took a shot at https://github.com/simonw/datasette/issues/1796. I haven't done a lot of testing but would be curious if this fixes some of the concerns raised in https://github.com/simonw/datasette/issues/1796#issue-1355148385 for example.\r\n\r\nDone:\r\n* Changed to bundling using rollup as per https://codemirror.net/examples/bundle/\r\n* Restored a fromTextArea-like function from https://codemirror.net/docs/migration/\r\n* Removed old JS and CSS files (no external CSS needed anymore as per https://codemirror.net/examples/styling/)\r\n* Updated instructions for building the bundle\r\n\r\nNot done:\r\n* cmResize had an error, so commented out the resize handle\r\n* Add extraKeys option for shift+enter and tab\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1893.org.readthedocs.build/en/1893/\n\r\n", "created_at": "2022-11-15T20:52:35Z", "updated_at": "2022-11-16T23:54:02Z", "closed_at": "2022-11-16T23:49:06Z", "merged_at": "2022-11-16T23:49:06Z", "merge_commit_sha": "ae11fa5887e03376704c22e5d0969c1e0642d8d8", "assignee": null, "milestone": null, "draft": 0, "head": "f254be4b38936e95e7a7f25866e7c6b0520db96f", "base": "6f610e1d94b7b8ec605b5b7fcb01537f6adf9c5b", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1893", "merged_by": null, "auto_merge": null} {"id": 1105985162, "node_id": "PR_kwDOCGYnMM5B6_6K", "number": 508, "state": "closed", "locked": 0, "title": "Allow surrogates in parameters", "user": {"value": 7908073, "label": "chapmanjacobd"}, "body": "closes #507\r\n\r\nhttps://dwheeler.com/essays/fixing-unix-linux-filenames.html\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--508.org.readthedocs.build/en/508/\n\r\n", "created_at": "2022-10-31T22:11:49Z", "updated_at": "2022-11-17T15:11:16Z", "closed_at": "2022-10-31T22:55:36Z", "merged_at": null, "merge_commit_sha": "3b551597240d9a6058b1c3c720073120db213678", "assignee": null, "milestone": null, "draft": 0, "head": "43a8c4c91fc22fb6bea07846f144072b0d047f4e", "base": "529110e7d8c4a6b1bbf5fb61f2e29d72aa95a611", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/508", "merged_by": null, "auto_merge": null} {"id": 1080343782, "node_id": "PR_kwDOBm6k_c5AZLzm", "number": 1839, "state": "closed", "locked": 0, "title": "Bump black from 22.8.0 to 22.10.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 22.8.0 to 22.10.0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

22.10.0

\n

Highlights

\n\n

Stable style

\n\n

Preview style

\n\n

Configuration

\n\n

Packaging

\n\n

Blackd

\n\n

Integrations

\n\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

22.10.0

\n

Highlights

\n\n

Stable style

\n\n

Preview style

\n\n

Configuration

\n\n

Packaging

\n\n

Blackd

\n\n

Integrations

\n\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=22.8.0&new-version=22.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1839.org.readthedocs.build/en/1839/\n\r\n", "created_at": "2022-10-07T13:13:41Z", "updated_at": "2022-10-27T20:51:46Z", "closed_at": "2022-10-27T20:51:45Z", "merged_at": "2022-10-27T20:51:45Z", "merge_commit_sha": "2c36e45447494cd7505440943367e29ec57c8e72", "assignee": null, "milestone": null, "draft": 0, "head": "21da9bebfc4811314a49140b0c31e86b9d05009f", "base": "d2ca13b699d441a201c55cb72ff96919d3cd22bf", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1839", "merged_by": null, "auto_merge": null} {"id": 1079714826, "node_id": "PR_kwDOBm6k_c5AWyQK", "number": 1837, "state": "closed", "locked": 0, "title": "Make hash and size a lazy property", "user": {"value": 536941, "label": "fgregg"}, "body": "Many apologies, @simonw. My previous PR #1835 did not really solve the problem because the name of the database is often not known to database object in the init method.\r\n\r\nI took a cue from how you dealt with this issue and made hash a lazy property and did something similar with size.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1837.org.readthedocs.build/en/1837/\n\r\n", "created_at": "2022-10-06T23:51:22Z", "updated_at": "2022-10-27T20:51:21Z", "closed_at": "2022-10-27T20:51:20Z", "merged_at": "2022-10-27T20:51:20Z", "merge_commit_sha": "b912d92b651c4f0b5137da924d135654511f0fe0", "assignee": null, "milestone": null, "draft": 0, "head": "c12447e484036ace9a685bd04b9f0e1fa66541c8", "base": "eff112498ecc499323c26612d707908831446d25", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1837", "merged_by": null, "auto_merge": null} {"id": 1086765659, "node_id": "PR_kwDOBm6k_c5Axrpb", "number": 1842, "state": "closed", "locked": 0, "title": "check_visibility can now take multiple permissions into account", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1829\r\n\r\n- [x] Fix table page\r\n- [x] Fix database page\r\n- [x] Fix query page\r\n- [x] Fix row page\r\n- [x] Tests\r\n- [x] Updated documentation for `check_visibility` method, to cover the new `permissions=` keyword argument\r\n\r\nAlso this fix is currently only applied on the table page - needs to be applied on database, row and query pages too.\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://datasette--1842.org.readthedocs.build/en/1842/\r\n\r\n", "created_at": "2022-10-14T00:06:04Z", "updated_at": "2022-10-24T02:11:36Z", "closed_at": "2022-10-24T02:11:36Z", "merged_at": "2022-10-24T02:11:34Z", "merge_commit_sha": "78dad236df730212aa7172f885fd8ec575f0d3ad", "assignee": null, "milestone": null, "draft": 0, "head": "362347574e3283d637243906af7d5e028e100180", "base": "79aa0de083d38a9975915d5a4cc68ca6c74fbe3d", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1842", "merged_by": null, "auto_merge": null} {"id": 1082769953, "node_id": "PR_kwDOCGYnMM5AicIh", "number": 498, "state": "closed", "locked": 0, "title": "fix: enable-fts permanently save triggers", "user": {"value": 7908073, "label": "chapmanjacobd"}, "body": "I was wondering why my all my databases were giving wild search results. Turns out create_trigger was not sticking!\r\n\r\nRunning `sqlite-utils triggers x.db` shows `[]` after running `enable-fts` using the python api. Looking at the counts trigger it seems that is the right way to save triggers. triggers show up now\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--498.org.readthedocs.build/en/498/\n\r\n", "created_at": "2022-10-11T05:10:51Z", "updated_at": "2022-10-15T04:33:08Z", "closed_at": "2022-10-11T06:34:31Z", "merged_at": null, "merge_commit_sha": "ab24d21e9c2aa9c514c3b65f05cfc0bafa7621c1", "assignee": null, "milestone": null, "draft": 0, "head": "75577e595d9177177a48030a1c39573af010df51", "base": "d792dad1cf5f16525da81b1e162fb71d469995f3", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/498", "merged_by": null, "auto_merge": null} {"id": 1081550456, "node_id": "PR_kwDOBm6k_c5AdyZ4", "number": 1840, "state": "closed", "locked": 0, "title": "test commit", "user": {"value": 102635518, "label": "7lingyuan"}, "body": "lalalalalalala\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1840.org.readthedocs.build/en/1840/\n\r\n", "created_at": "2022-10-10T05:15:26Z", "updated_at": "2022-10-10T09:11:50Z", "closed_at": "2022-10-10T09:11:50Z", "merged_at": null, "merge_commit_sha": null, "assignee": null, "milestone": null, "draft": 0, "head": "304ce7a516a0b361ae9f5f0059ce02eb675f69aa", "base": "b7fec7f9020b79c1fe60cc5a2def86b50eeb5af9", "author_association": "NONE", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1840", "merged_by": null, "auto_merge": null} {"id": 1067479608, "node_id": "PR_kwDOBm6k_c4_oHI4", "number": 1820, "state": "closed", "locked": 0, "title": "[SPIKE] Don't truncate query CSVs", "user": {"value": 536941, "label": "fgregg"}, "body": "Relates to #526 \r\n\r\nThis is a minimal set of changes needed for having *query* CSVs attempt to download all the rows. \r\n\r\nWhat's good about it is the minimalism.\r\n\r\nWhat's bad about it:\r\n\r\n1. We are abusing the `_size` argument to indicate we don't want truncation, which isn't the most obvious thing. Additionally, there are various checks that make sure the \"_size\" URL parameter is a positive integer, which we are relying on to prevent overloading.\r\n2. The default CSV on a table page will use the max_returned_rows argument. Changing this could be a breaking change, since that's currently a place that has some facilities for pagination. Additionally, i think there's a limit under the hood somewhere which if we removed could lead to sql timeouts\r\n3. There are similar reasons for leaving the current streaming method alone, as the current methods could allow for downloading very large files that could have a sql timeout if we tried to get them in one go.\r\n\r\n\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://datasette--1820.org.readthedocs.build/en/1820/\r\n\r\n", "created_at": "2022-09-26T17:27:01Z", "updated_at": "2022-10-07T16:12:17Z", "closed_at": "2022-10-07T16:12:17Z", "merged_at": null, "merge_commit_sha": "bd62037d5cdf72c06fd4d78da162cbc1526c1ab6", "assignee": null, "milestone": null, "draft": 1, "head": "9bead2a95b74f3a2e0be2a9f1cb1f624aec22c2f", "base": "eff112498ecc499323c26612d707908831446d25", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1820", "merged_by": null, "auto_merge": null} {"id": 1079769381, "node_id": "PR_kwDOBm6k_c5AW_kl", "number": 1838, "state": "closed", "locked": 0, "title": "Open Datasette link in new tab", "user": {"value": 4399499, "label": "ocdtrekkie"}, "body": "This is technically a Sandstorm-specific fix (as external links do not work inside the grain frame), however, I think it is an improvement to the upstream project, so I wanted to propose it here rather than patching it in our package.\r\n\r\nThere's much opinions on the Internet about whether external links should open in a new tab by default or not, but I'd argue very few people who might click a \"powered by\" link intend to complete their interaction with the source page (a Datasette). And furthermore, users may be working within various queries or loading visualizations (navigating away when trying to plot a million GPS coordinates pretty much just resets your progress!), so linking away within the tab might be a frustrating or destructive act to one's work, even inadvertently.\r\n\r\noriginal report: https://github.com/ocdtrekkie/datasette-sandstorm/issues/1\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1838.org.readthedocs.build/en/1838/\n\r\n", "created_at": "2022-10-07T01:12:20Z", "updated_at": "2022-10-07T16:28:41Z", "closed_at": "2022-10-07T02:01:07Z", "merged_at": null, "merge_commit_sha": "9a7745ceef270893fa76a10ee70546f62d5110bd", "assignee": null, "milestone": null, "draft": 0, "head": "7f2a3376c348e9dd9ea926ab94ae6b610194e6c1", "base": "eff112498ecc499323c26612d707908831446d25", "author_association": "NONE", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1838", "merged_by": null, "auto_merge": null} {"id": 1079437524, "node_id": "PR_kwDOBm6k_c5AVujU", "number": 1835, "state": "closed", "locked": 0, "title": "use inspect data for hash and file size", "user": {"value": 536941, "label": "fgregg"}, "body": "`inspect_data` should already include the hash and the db file size, so this PR takes advantage of using those instead of always recalculating. should help a lot on startup with large DBs.\r\n\r\ncloses #1834 ", "created_at": "2022-10-06T18:25:24Z", "updated_at": "2022-10-27T20:51:30Z", "closed_at": "2022-10-06T20:06:07Z", "merged_at": "2022-10-06T20:06:07Z", "merge_commit_sha": "eff112498ecc499323c26612d707908831446d25", "assignee": null, "milestone": null, "draft": 0, "head": "b4b92df38c8ca8a6faeec4daaf803cee80e0dbed", "base": "bbf33a763537a1d913180b22bd3b5fe4a5e5b252", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1835", "merged_by": null, "auto_merge": null} {"id": 1072698114, "node_id": "PR_kwDOBm6k_c4_8BMC", "number": 1827, "state": "closed", "locked": 0, "title": "Bump furo from 2022.9.15 to 2022.9.29", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [furo](https://github.com/pradyunsg/furo) from 2022.9.15 to 2022.9.29.\n
\nChangelog\n

Sourced from furo's changelog.

\n
\n

Changelog

\n\n

2022.09.29 -- Quaint Quartz

\n\n

2022.09.15 -- Pragmatic Pistachio

\n\n

2022.06.21 -- Opulent Opal

\n\n

2022.06.04.1 -- Naughty Nickel bugfix

\n\n

2022.06.04 -- Naughty Nickel

\n\n

2022.04.07 -- Magical Mauve

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=furo&package-manager=pip&previous-version=2022.9.15&new-version=2022.9.29)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1827.org.readthedocs.build/en/1827/\n\r\n", "created_at": "2022-09-30T13:15:35Z", "updated_at": "2022-09-30T17:55:42Z", "closed_at": "2022-09-30T17:55:41Z", "merged_at": "2022-09-30T17:55:41Z", "merge_commit_sha": "c92c4318e9892101f75fa158410c0a12c1d80b6e", "assignee": null, "milestone": null, "draft": 0, "head": "1f0c557ef96d3e2e7a41598af8f9dece2d3fbcfc", "base": "34defdc10aa293294ca01cfab70780755447e1d7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1827", "merged_by": null, "auto_merge": null} {"id": 1069033742, "node_id": "PR_kwDOBm6k_c4_uCkO", "number": 1825, "state": "closed", "locked": 0, "title": "Add documentation for serving via OpenRC", "user": {"value": 1048831, "label": "asimpson"}, "body": "I also removed a few lines which felt redundant given the following section dedicated to running behind a nginx proxy.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1825.org.readthedocs.build/en/1825/\n\r\n", "created_at": "2022-09-27T19:00:56Z", "updated_at": "2022-09-28T04:21:37Z", "closed_at": "2022-09-28T04:21:37Z", "merged_at": "2022-09-28T04:21:37Z", "merge_commit_sha": "984b1df12cf19a6731889fc0665bb5f622e07b7c", "assignee": null, "milestone": null, "draft": 0, "head": "e7e96dc2ef2b76338786f1b911a9753bb8bfc297", "base": "5f9f567acbc58c9fcd88af440e68034510fb5d2b", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1825", "merged_by": null, "auto_merge": null} {"id": 1058623570, "node_id": "PR_kwDOBm6k_c4_GVBS", "number": 1812, "state": "closed", "locked": 0, "title": "Bump furo from 2022.6.21 to 2022.9.15", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [furo](https://github.com/pradyunsg/furo) from 2022.6.21 to 2022.9.15.\n
\nChangelog\n

Sourced from furo's changelog.

\n
\n

Changelog

\n\n

2022.09.15 -- Pragmatic Pistachio

\n\n

2022.06.21 -- Opulent Opal

\n\n

2022.06.04.1 -- Naughty Nickel bugfix

\n\n

2022.06.04 -- Naughty Nickel

\n\n

2022.04.07 -- Magical Mauve

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=furo&package-manager=pip&previous-version=2022.6.21&new-version=2022.9.15)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1812.org.readthedocs.build/en/1812/\n\r\n", "created_at": "2022-09-16T13:10:45Z", "updated_at": "2022-09-16T19:50:53Z", "closed_at": "2022-09-16T19:50:52Z", "merged_at": "2022-09-16T19:50:52Z", "merge_commit_sha": "2ebcffe2226ece2a5a86722790d486a480338632", "assignee": null, "milestone": null, "draft": 0, "head": "b3855e7b57d2f2354296b23e8c12df82e9af729e", "base": "b40872f5e5ae5dad331c58f75451e2d206565196", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1812", "merged_by": null, "auto_merge": null} {"id": 1050417981, "node_id": "PR_kwDOCGYnMM4-nBs9", "number": 486, "state": "closed", "locked": 0, "title": "progressbar for inserts/upserts of all fileformats, closes #485", "user": {"value": 99098079, "label": "MischaU8"}, "body": "\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--486.org.readthedocs.build/en/486/\n\r\n", "created_at": "2022-09-08T14:58:02Z", "updated_at": "2022-09-15T20:40:03Z", "closed_at": "2022-09-15T20:37:51Z", "merged_at": "2022-09-15T20:37:51Z", "merge_commit_sha": "0b315d3fa83c1584eaeec32f24912898621e437a", "assignee": null, "milestone": null, "draft": 0, "head": "d5db749480aaf8518e611ff55da186cadf6c63bc", "base": "d9b9e075f07a20f1137cd2e34ed5d3f1a3db4ad8", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/486", "merged_by": null, "auto_merge": null} {"id": 1038547954, "node_id": "PR_kwDOBm6k_c495vvy", "number": 1794, "state": "closed", "locked": 0, "title": "fix word break in facets by adding ul.tight-bullets li word-break: break-all", "user": {"value": 128286, "label": "dmr"}, "body": "I noticed that long words break the layout of facets:\r\n\r\n![image](https://user-images.githubusercontent.com/128286/187013146-fb2bbb60-a225-441b-ba8e-b9e74fb04f93.png)\r\n\r\nSo I added CSS to add a line break. This is how the result looks now:\r\n\r\n![image](https://user-images.githubusercontent.com/128286/187013175-a706fc72-9e69-4a75-9bdf-bdaa34a0cf51.png)\r\n\r\nI don't know enough about facet edge cases to decide if this change might break other things but it looks better for me so maybe this is helpful.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1794.org.readthedocs.build/en/1794/\n\r\n", "created_at": "2022-08-27T03:47:25Z", "updated_at": "2022-09-06T00:45:41Z", "closed_at": "2022-09-06T00:45:41Z", "merged_at": "2022-09-06T00:45:41Z", "merge_commit_sha": "c9d1943aede436fa3413fd49bc56335cbda4ad07", "assignee": null, "milestone": null, "draft": 0, "head": "3b8e005a5cf15e0639b460f7d2ab71790c9b4ef5", "base": "ba35105eee2d3ba620e4f230028a02b2e2571df2", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1794", "merged_by": null, "auto_merge": null} {"id": 1037685744, "node_id": "PR_kwDOBm6k_c492dPw", "number": 1793, "state": "closed", "locked": 0, "title": "Added a useful resource", "user": {"value": 111973926, "label": "MobiWancode"}, "body": "Have added a useful resource about the types of databases in SQL i.e SQLite, PostgreSQL, MySQL &, etc from the scaler topics.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1793.org.readthedocs.build/en/1793/\n\r\n", "created_at": "2022-08-26T08:41:26Z", "updated_at": "2022-09-06T00:41:25Z", "closed_at": "2022-09-06T00:41:24Z", "merged_at": null, "merge_commit_sha": "40c948ac58afa155bbceaff70c43e85e58434188", "assignee": null, "milestone": null, "draft": 0, "head": "32a9224b7e107016e5ba0fc90ff86cfafad93b2f", "base": "ba35105eee2d3ba620e4f230028a02b2e2571df2", "author_association": "NONE", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1793", "merged_by": null, "auto_merge": null} {"id": 1046943107, "node_id": "PR_kwDOBm6k_c4-ZxWD", "number": 1803, "state": "closed", "locked": 0, "title": "Workaround for test failure: RuntimeError: There is no current event loop", "user": {"value": 9599, "label": "simonw"}, "body": "Closes #1802\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1803.org.readthedocs.build/en/1803/\n\r\n", "created_at": "2022-09-06T00:31:06Z", "updated_at": "2022-09-06T00:40:19Z", "closed_at": "2022-09-06T00:40:19Z", "merged_at": "2022-09-06T00:40:19Z", "merge_commit_sha": "64288d827f7ff97f825e10f714da3f781ecf9345", "assignee": null, "milestone": null, "draft": 0, "head": "7b6a2b48408697905bd93504b7f5554f4a7627ef", "base": "1c29b925d300d1ee17047504473f2517767aa05b", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1803", "merged_by": null, "auto_merge": null} {"id": 1043733712, "node_id": "PR_kwDOBm6k_c4-NhzQ", "number": 1797, "state": "closed", "locked": 0, "title": "Bump black from 22.6.0 to 22.8.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 22.6.0 to 22.8.0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

22.8.0

\n

Highlights

\n\n

Stable style

\n\n

Preview style

\n\n

Blackd

\n\n

Configuration

\n\n

Documentation

\n\n

Integrations

\n\n

Output

\n\n

Parser

\n\n

Performance

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

22.8.0

\n

Highlights

\n\n

Stable style

\n\n

Preview style

\n\n

Blackd

\n\n

Configuration

\n\n

Documentation

\n\n

Integrations

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=22.6.0&new-version=22.8.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1797.org.readthedocs.build/en/1797/\n\r\n", "created_at": "2022-09-01T13:25:14Z", "updated_at": "2022-09-05T18:51:52Z", "closed_at": "2022-09-05T18:51:52Z", "merged_at": "2022-09-05T18:51:52Z", "merge_commit_sha": "294ecd45f7801971dbeef383d0c5456ee95ab839", "assignee": null, "milestone": null, "draft": 0, "head": "84f9d32109bc92abb609b920ea4f5bef5fb558b9", "base": "51030df1869b3b574dd3584d1563415776b9cd4e", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1797", "merged_by": null, "auto_merge": null} {"id": 889476515, "node_id": "PR_kwDOBm6k_c41BFWj", "number": 1685, "state": "closed", "locked": 0, "title": "Update jinja2 requirement from <3.1.0,>=2.10.3 to >=2.10.3,<3.2.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [jinja2](https://github.com/pallets/jinja) to permit the latest version.\n
\nRelease notes\n

Sourced from jinja2's releases.

\n
\n

3.1.0

\n

This is a feature release, which includes new features and removes previously deprecated features. The 3.1.x branch is now the supported bugfix branch, the 3.0.x branch has become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades. We also encourage upgrading to MarkupSafe 2.1.1, the latest version at this time.

\n\n
\n
\n
\nChangelog\n

Sourced from jinja2's changelog.

\n
\n

Version 3.1.0

\n

Released 2022-03-24

\n\n

Version 3.0.3

\n

Released 2021-11-09

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-03-25T13:12:13Z", "updated_at": "2022-09-05T18:36:49Z", "closed_at": "2022-09-05T18:36:48Z", "merged_at": null, "merge_commit_sha": "0a1124217cbfa997ae6b8976b3fc76fc443225fb", "assignee": null, "milestone": null, "draft": 0, "head": "933ce474aef535de92d89968816cbdde77c48c64", "base": "c496f2b663ff0cef908ffaaa68b8cb63111fb5f2", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1685", "merged_by": null, "auto_merge": null} {"id": 1046652968, "node_id": "PR_kwDOBm6k_c4-Yqgo", "number": 1799, "state": "closed", "locked": 0, "title": "Update aiofiles requirement from <0.9,>=0.4 to >=0.4,<22.2", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [aiofiles](https://github.com/Tinche/aiofiles) to permit the latest version.\n
\nCommits\n\n
\n
\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1799.org.readthedocs.build/en/1799/\n\r\n", "created_at": "2022-09-05T16:13:48Z", "updated_at": "2022-09-05T18:36:44Z", "closed_at": "2022-09-05T18:36:43Z", "merged_at": null, "merge_commit_sha": "1f3d29c2db5cbd793cd6224049cb3fe1f4a74b7e", "assignee": null, "milestone": null, "draft": 0, "head": "5abd55a273fedfb700f76b97dc88f5cc2620446e", "base": "ba35105eee2d3ba620e4f230028a02b2e2571df2", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1799", "merged_by": null, "auto_merge": null} {"id": 1046767034, "node_id": "PR_kwDOBm6k_c4-ZGW6", "number": 1801, "state": "closed", "locked": 0, "title": "Don't use upper bound dependencies, refs #1800", "user": {"value": 9599, "label": "simonw"}, "body": "See https://iscinumpy.dev/post/bound-version-constraints/\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1801.org.readthedocs.build/en/1801/\n\r\n", "created_at": "2022-09-05T18:29:28Z", "updated_at": "2022-09-05T18:35:41Z", "closed_at": "2022-09-05T18:35:41Z", "merged_at": "2022-09-05T18:35:41Z", "merge_commit_sha": "51030df1869b3b574dd3584d1563415776b9cd4e", "assignee": null, "milestone": null, "draft": 0, "head": "3f24edd6b29e7deff37d0e45827133fc5a9e5387", "base": "ba35105eee2d3ba620e4f230028a02b2e2571df2", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1801", "merged_by": null, "auto_merge": null} {"id": 1040691996, "node_id": "PR_kwDOCGYnMM4-B7Mc", "number": 480, "state": "closed", "locked": 0, "title": "search_sql add include_rank option", "user": {"value": 7908073, "label": "chapmanjacobd"}, "body": "I haven't tested this yet but wanted to get a heads-up whether this kind of change would be useful or if I should just duplicate the function and tweak it within my code\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--480.org.readthedocs.build/en/480/\n\r\n", "created_at": "2022-08-30T09:10:29Z", "updated_at": "2022-08-31T03:40:35Z", "closed_at": "2022-08-31T03:40:35Z", "merged_at": "2022-08-31T03:40:35Z", "merge_commit_sha": "ecf1d40112e52a8f4e509c39b98caae996b7bc36", "assignee": null, "milestone": null, "draft": 0, "head": "3dbfca6fdd878ba381f83157fdae2042eeaed371", "base": "087753cd42c406f1e060c1822dcd9b5fda3d60f4", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/480", "merged_by": null, "auto_merge": null} {"id": 1034485141, "node_id": "PR_kwDOCGYnMM49qP2V", "number": 468, "state": "closed", "locked": 0, "title": "db[table].create(..., transform=True) and create-table --transform", "user": {"value": 9599, "label": "simonw"}, "body": "Work in progress. Still needs documentation and tests (and to cover more cases of things that might have changed).\r\n\r\nRefs:\r\n- #467\r\n\r\n\r\n----\r\n:books: Documentation preview :books:: https://sqlite-utils--468.org.readthedocs.build/en/468/\r\n\r\n", "created_at": "2022-08-23T17:27:58Z", "updated_at": "2022-08-27T23:17:55Z", "closed_at": "2022-08-27T23:17:55Z", "merged_at": "2022-08-27T23:17:55Z", "merge_commit_sha": "104f37fa4d2e7e5999c1d829267b62c737f74d3e", "assignee": null, "milestone": {"value": 8355157, "label": "3.29"}, "draft": 0, "head": "2f6a64f61d561df821d737719941c678dcb1a03c", "base": "c5f8a2eb1a81a18b52825cc649112f71fe419b12", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/468", "merged_by": null, "auto_merge": null} {"id": 1000800283, "node_id": "PR_kwDOCGYnMM47pwAb", "number": 455, "state": "closed", "locked": 0, "title": "in extract code, check equality with IS instead of = for nulls", "user": {"value": 536941, "label": "fgregg"}, "body": "sqlite \"IS\" is equivalent to SQL \"IS NOT DISTINCT FROM\"\r\n\r\ncloses #423", "created_at": "2022-07-19T13:40:25Z", "updated_at": "2022-08-27T14:45:03Z", "closed_at": "2022-08-27T14:45:03Z", "merged_at": "2022-08-27T14:45:03Z", "merge_commit_sha": "c5f8a2eb1a81a18b52825cc649112f71fe419b12", "assignee": null, "milestone": null, "draft": 0, "head": "1b35a92e3ede76f0f29f6f8dcd899f44b2abbb02", "base": "855bce8c3823718def13e0b8928c58bf857e41b2", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/455", "merged_by": null, "auto_merge": null} {"id": 1038565427, "node_id": "PR_kwDOCGYnMM4950Az", "number": 473, "state": "closed", "locked": 0, "title": "Support entrypoints for `--load-extension`", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #470\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--473.org.readthedocs.build/en/473/\n\r\n", "created_at": "2022-08-27T05:53:59Z", "updated_at": "2022-08-27T05:55:52Z", "closed_at": "2022-08-27T05:55:47Z", "merged_at": "2022-08-27T05:55:47Z", "merge_commit_sha": "19dd077944429c1365b513d80cc71c605ae3bed3", "assignee": null, "milestone": null, "draft": 0, "head": "72db599ae03fabe2e9f999999e258edc1a99ed59", "base": "a46a5e3a9e03dcdd8c84a92e4a5dbfa02ba461fa", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/473", "merged_by": null, "auto_merge": null} {"id": 1034576054, "node_id": "PR_kwDOBm6k_c49qmC2", "number": 1792, "state": "closed", "locked": 0, "title": "Test `--load-extension` in GitHub Actions", "user": {"value": 9599, "label": "simonw"}, "body": "Refs:\r\n- #1789\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1792.org.readthedocs.build/en/1792/\n\r\n", "created_at": "2022-08-23T18:43:29Z", "updated_at": "2022-08-24T00:11:46Z", "closed_at": "2022-08-24T00:11:45Z", "merged_at": "2022-08-24T00:11:45Z", "merge_commit_sha": "ba35105eee2d3ba620e4f230028a02b2e2571df2", "assignee": null, "milestone": null, "draft": 0, "head": "f61cfb77056e2ee39ae827889c005b1e44c81165", "base": "456dc155d491a009942ace71a4e1827cddc6b93d", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1792", "merged_by": null, "auto_merge": null} {"id": 1031503844, "node_id": "PR_kwDOBm6k_c49e3_k", "number": 1789, "state": "closed", "locked": 0, "title": "Add new entrypoint option to `--load-extension`", "user": {"value": 15178711, "label": "asg017"}, "body": "Closes #1784 \r\n\r\nThe `--load-extension` flag can now accept an optional \"entrypoint\" value, to specify which entrypoint SQLite should load from the given extension. \r\n\r\n```bash\r\n# would load default entrypoint like before\r\ndatasette data.db --load-extension ext\r\n\r\n# loads the extensions with the \"sqlite3_foo_init\" entrpoint\r\ndatasette data.db --load-extension ext:sqlite3_foo_init\r\n\r\n# loads the extensions with the \"sqlite3_bar_init\" entrpoint\r\ndatasette data.db --load-extension ext:sqlite3_bar_init\r\n```\r\n\r\nFor testing, I added a small SQLite extension in C at `tests/ext.c`. If compiled, then pytest will run the unit tests in `test_load_extensions.py`to verify that Datasette loads in extensions correctly (and loads the correct entrypoints). Compiling the extension requires a C compiler, I compiled it on my Mac with:\r\n\r\n```\r\ngcc ext.c -I path/to/sqlite -fPIC -shared -o ext.dylib\r\n```\r\n\r\nWhere `path/to/sqlite` is a directory that contains the SQLite amalgamation header files.\r\n\r\nRe documentation: I added a bit to the help text for `--load-extension` (which I believe should auto-add to documentation?), and the existing extension documentation is spatialite specific. Let me know if a new extensions documentation page would be helpful!", "created_at": "2022-08-19T19:27:47Z", "updated_at": "2022-08-23T18:42:52Z", "closed_at": "2022-08-23T18:34:30Z", "merged_at": "2022-08-23T18:34:30Z", "merge_commit_sha": "1d64c9a8dac45b9a3452acf8e76dfadea2b0bc49", "assignee": null, "milestone": null, "draft": 0, "head": "5a2a05f2cea7b55b1c3bb1df043c0a454eca6563", "base": "663ac431fe7202c85967568d82b2034f92b9aa43", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1789", "merged_by": null, "auto_merge": null} {"id": 526847823, "node_id": "MDExOlB1bGxSZXF1ZXN0NTI2ODQ3ODIz", "number": 7, "state": "closed", "locked": 0, "title": "Fixed conflicting CLI flags", "user": {"value": 8944, "label": "tlockney"}, "body": "The `-a` used for the auth credentials and the shortened form of the `--all` flags were in conflict on the `fetch` command. To be consistent with other `-to-sqlite` libraries in the Dogsheep ecosystem, I removed the shortened form of the `--all` flag.", "created_at": "2020-11-24T23:25:12Z", "updated_at": "2022-08-21T21:11:56Z", "closed_at": "2022-08-21T21:11:56Z", "merged_at": "2022-08-21T21:11:56Z", "merge_commit_sha": "4d88c84a66a501e4cb0dd2de9949072b8d42b859", "assignee": null, "milestone": null, "draft": 0, "head": "02576f9b1c234128c6a3d52123761af8486beb57", "base": "b956a01464007fe227895fe6eb6c942ed71298c8", "author_association": "CONTRIBUTOR", "repo": {"value": 213286752, "label": "pocket-to-sqlite"}, "url": "https://github.com/dogsheep/pocket-to-sqlite/pull/7", "merged_by": null, "auto_merge": null} {"id": 1022524090, "node_id": "PR_kwDOBm6k_c488nq6", "number": 1778, "state": "closed", "locked": 0, "title": "Use Read the Docs action v1", "user": {"value": 244656, "label": "humitos"}, "body": "Read the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1`\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1778.org.readthedocs.build/en/1778/\n\r\n", "created_at": "2022-08-10T10:30:50Z", "updated_at": "2022-08-20T00:04:17Z", "closed_at": "2022-08-20T00:04:17Z", "merged_at": "2022-08-20T00:04:17Z", "merge_commit_sha": "663ac431fe7202c85967568d82b2034f92b9aa43", "assignee": null, "milestone": null, "draft": 0, "head": "003ac653b0bbd9dd30f0f7855e6ecfc9a045d486", "base": "8cfc72336878dd846d149658e99cc598e835b661", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1778", "merged_by": null, "auto_merge": null} {"id": 1015320511, "node_id": "PR_kwDOCGYnMM48hI-_", "number": 460, "state": "closed", "locked": 0, "title": "Cross-link CLI to Python docs", "user": {"value": 9599, "label": "simonw"}, "body": "Work in progress, partly to test the ReadTheDocs preview link action.\r\n\r\nRefs:\r\n- #426\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://readthedocs-preview--460.org.readthedocs.build/en/460/\n\r\n", "created_at": "2022-08-02T16:18:28Z", "updated_at": "2022-08-18T21:58:10Z", "closed_at": "2022-08-18T21:58:07Z", "merged_at": "2022-08-18T21:58:07Z", "merge_commit_sha": "f4fb78fa95057fbc86c734020835a3155695297f", "assignee": null, "milestone": null, "draft": 0, "head": "f21f4ccf7197e7a0ac8c2eb5086659fc3eb5bc05", "base": "1856002e3c0fcc9f09f72ab7d97ad8c75f6de7df", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/460", "merged_by": null, "auto_merge": null} {"id": 1029360106, "node_id": "PR_kwDOCGYnMM49Wsnq", "number": 465, "state": "closed", "locked": 0, "title": "beanbag-docutils>=2.0", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #464", "created_at": "2022-08-17T22:41:39Z", "updated_at": "2022-08-17T23:38:07Z", "closed_at": "2022-08-17T23:38:02Z", "merged_at": "2022-08-17T23:38:02Z", "merge_commit_sha": "f8ffac8787e299a62c99ed1ce914cd5ace84ad94", "assignee": null, "milestone": null, "draft": 0, "head": "bb90d3326815a041512b40bf0cf53b3ace06cd67", "base": "45e24deffea042b5db7ab84cd1eb63b3ed9bb9da", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/465", "merged_by": null, "auto_merge": null} {"id": 1029373779, "node_id": "PR_kwDOCGYnMM49Wv9T", "number": 466, "state": "closed", "locked": 0, "title": "Use Read the Docs action v1 (#463)", "user": {"value": 9599, "label": "simonw"}, "body": "Read the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1`", "created_at": "2022-08-17T23:11:50Z", "updated_at": "2022-08-17T23:11:54Z", "closed_at": "2022-08-17T23:11:54Z", "merged_at": "2022-08-17T23:11:54Z", "merge_commit_sha": "bb90d3326815a041512b40bf0cf53b3ace06cd67", "assignee": null, "milestone": null, "draft": 0, "head": "83e7339255e811c62e6db8498c483c44a84d0f28", "base": "72655adabc596a9eed43cc11c07177a390791068", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/466", "merged_by": null, "auto_merge": null} {"id": 1022525059, "node_id": "PR_kwDOCGYnMM488n6D", "number": 463, "state": "closed", "locked": 0, "title": "Use Read the Docs action v1", "user": {"value": 244656, "label": "humitos"}, "body": "Read the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1`\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--463.org.readthedocs.build/en/463/\n\r\n", "created_at": "2022-08-10T10:31:47Z", "updated_at": "2022-08-18T08:30:14Z", "closed_at": "2022-08-17T23:11:16Z", "merged_at": "2022-08-17T23:11:16Z", "merge_commit_sha": "83e7339255e811c62e6db8498c483c44a84d0f28", "assignee": null, "milestone": null, "draft": 0, "head": "364110b97bd1c6e0d2bc841730e5dc1a595e537d", "base": "271433fdd18e436b0a527ab899cb6f6fa67f23d0", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/463", "merged_by": null, "auto_merge": null} {"id": 806136219, "node_id": "PR_kwDOBm6k_c4wDKmb", "number": 1574, "state": "closed", "locked": 0, "title": "introduce new option for datasette package to use a slim base image", "user": {"value": 33631, "label": "fs111"}, "body": "The official python images on docker hub come with a slim variant that is significantly smaller than the default. The diff does not change the default, but allows to switch to the `slim` variant with commandline switch (`--slim-base-image`)\r\n\r\nSize comparison:\r\n\r\n```\r\n$ datasette package some.db -t fat --install \"datasette-basemap datasette-cluster-map\"\r\n\r\n$ datasette package some.db -t slim --slim-base-image --install \"datasette-basemap datasette-cluster-map\"\r\n\r\n$ docker images\r\nREPOSITORY TAG IMAGE ID CREATED SIZE\r\nfat latest 807b393ace0d 9 seconds ago 978MB\r\nslim latest 31bc5e63505c 8 minutes ago 191MB\r\n\r\n```", "created_at": "2021-12-19T21:18:19Z", "updated_at": "2022-08-15T08:49:31Z", "closed_at": "2022-08-15T08:49:31Z", "merged_at": null, "merge_commit_sha": "92ca4a2a9fb44e4cffc71444196753ad4a75a5c8", "assignee": null, "milestone": null, "draft": 0, "head": "8561f0343b2b4213416ca84c8071a5a290f15a42", "base": "8c401ee0f054de2f568c3a8302c9223555146407", "author_association": "NONE", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1574", "merged_by": null, "auto_merge": null} {"id": 1015591301, "node_id": "PR_kwDOCGYnMM48iLGF", "number": 462, "state": "closed", "locked": 0, "title": "Discord badge", "user": {"value": 9599, "label": "simonw"}, "body": "Also testing fix for:\r\n- https://github.com/readthedocs/readthedocs-preview/issues/10\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://sqlite-utils--462.org.readthedocs.build/en/462/\n\r\n", "created_at": "2022-08-02T20:56:04Z", "updated_at": "2022-08-02T21:15:57Z", "closed_at": "2022-08-02T21:15:52Z", "merged_at": "2022-08-02T21:15:52Z", "merge_commit_sha": "271433fdd18e436b0a527ab899cb6f6fa67f23d0", "assignee": null, "milestone": null, "draft": 0, "head": "0a14a031385f2647be0b9d15d96c1d44d05c2296", "base": "98a28cbfe6cea67f6334b42b74f35b0ddd309561", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/462", "merged_by": null, "auto_merge": null} {"id": 1009936222, "node_id": "PR_kwDOCGYnMM48Mmde", "number": 457, "state": "closed", "locked": 0, "title": "Link to installation instructions", "user": {"value": 9599, "label": "simonw"}, "body": "Also testing https://docs.readthedocs.io/en/stable/pull-requests.html", "created_at": "2022-07-27T17:38:36Z", "updated_at": "2022-08-27T03:55:52Z", "closed_at": "2022-07-27T17:57:50Z", "merged_at": "2022-07-27T17:57:50Z", "merge_commit_sha": "77ca051d4f5ddbd42fd6250749efac7ea85ea094", "assignee": null, "milestone": {"value": 8355157, "label": "3.29"}, "draft": 0, "head": "80b3907471f724aeecae75796663815c87731e77", "base": "9e6cceac1c0e086429e2d308b700e59cc53a1991", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/457", "merged_by": null, "auto_merge": null} {"id": 959140599, "node_id": "PR_kwDODFdgUs45K1L3", "number": 73, "state": "closed", "locked": 0, "title": "Fixing 'NoneType' object has no attribute 'items'", "user": {"value": 1224205, "label": "empjustine"}, "body": "Under some conditions, GitHub caches removed starred repositories and ends up leaving dangling `None` user references.\r\n\r\n Traceback (most recent call last):\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/bin/github-to-sqlite\", line 8, in \r\n sys.exit(cli())\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 1130, in __call__\r\n return self.main(*args, **kwargs)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 1055, in main\r\n rv = self.invoke(ctx)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 1657, in invoke\r\n return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 1404, in invoke\r\n return ctx.invoke(self.callback, **ctx.params)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 760, in invoke\r\n return __callback(*args, **kwargs)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/cli.py\", line 181, in starred\r\n utils.save_stars(db, user, stars)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/utils.py\", line 494, in save_stars\r\n repo_id = save_repo(db, repo)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/utils.py\", line 308, in save_repo\r\n to_save[\"owner\"] = save_user(db, to_save[\"owner\"])\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/utils.py\", line 229, in save_user\r\n for key, value in user.items()\r\n AttributeError: 'NoneType' object has no attribute 'items'", "created_at": "2022-06-06T13:58:11Z", "updated_at": "2022-07-18T19:40:12Z", "closed_at": "2022-07-18T19:40:12Z", "merged_at": "2022-07-18T19:40:12Z", "merge_commit_sha": "dbac2e5dd8a562b45d8255a265859cf8020ca22a", "assignee": null, "milestone": null, "draft": 0, "head": "d7c06886f3bb95085a3af3b2a21547e41556cc6e", "base": "a6e237f75a4b86963d91dcb5c9582e3a1b3349d6", "author_association": "CONTRIBUTOR", "repo": {"value": 207052882, "label": "github-to-sqlite"}, "url": "https://github.com/dogsheep/github-to-sqlite/pull/73", "merged_by": null, "auto_merge": null} {"id": 985781142, "node_id": "PR_kwDOBm6k_c46wdOW", "number": 1766, "state": "closed", "locked": 0, "title": "Keep track of config_dir", "user": {"value": 25778, "label": "eyeseast"}, "body": "Closes #1764 \r\n\r\nSmall change that adds `self.config_dir = config_dir` to `Datasette.__init__`. This will let plugins also use `config_dir`, if available.", "created_at": "2022-07-03T17:37:02Z", "updated_at": "2022-07-18T01:12:45Z", "closed_at": "2022-07-18T01:12:45Z", "merged_at": "2022-07-18T01:12:45Z", "merge_commit_sha": "01369176b0a8943ab45292ffc6f9c929b80a00e8", "assignee": null, "milestone": null, "draft": 0, "head": "257fd240975abf9647217f5d22ccadbecd6ec9f2", "base": "9f1eb0d4eac483b953392157bd9fd6cc4df37de7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1766", "merged_by": null, "auto_merge": null} {"id": 997743473, "node_id": "PR_kwDOBm6k_c47eFtx", "number": 1769, "state": "closed", "locked": 0, "title": "Update pytest-asyncio requirement from <0.19,>=0.17 to >=0.17,<0.20", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.\n
\nRelease notes\n

Sourced from pytest-asyncio's releases.

\n
\n

pytest-asyncio 0.19.0

\n
\n

title: 'pytest-asyncio: pytest support for asyncio'

\n

\"image\"

\n

\"image\"

\n

\"image\"

\n

\"Supported

\n

\"image\"

\n

pytest-asyncio is an Apache2 licensed library, written in Python, for\ntesting asyncio code with pytest.

\n

asyncio code is usually written in the form of coroutines, which makes\nit slightly more difficult to test using normal testing tools.\npytest-asyncio provides useful fixtures and markers to make testing\neasier.

\n
@pytest.mark.asyncio\nasync def test_some_asyncio_code():\n    res = await library.do_something()\n    assert b"expected result" == res\n
\n

pytest-asyncio has been strongly influenced by\npytest-tornado.

\n

Features

\n
    \n
  • fixtures for creating and injecting versions of the asyncio event\nloop
  • \n
  • fixtures for injecting unused tcp/udp ports
  • \n
  • pytest markers for treating tests as asyncio coroutines
  • \n
  • easy testing with non-default event loops
  • \n
  • support for [async def]{.title-ref} fixtures and async generator\nfixtures
  • \n
  • support auto mode to handle all async fixtures and tests\nautomatically by asyncio; provide strict mode if a test suite\nshould work with different async frameworks simultaneously, e.g.\nasyncio and trio.
  • \n
\n

Installation

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from pytest-asyncio's changelog.

\n
\n

0.19.0 (22-07-13)

\n
    \n
  • BREAKING: The default asyncio_mode is now strict. [#293](https://github.com/pytest-dev/pytest-asyncio/issues/293) <https://github.com/pytest-dev/pytest-asyncio/issues/293>_
  • \n
  • Removes setup.py since all relevant configuration is present setup.cfg. Users requiring an editable installation of pytest-asyncio need to use pip v21.1 or newer. [#283](https://github.com/pytest-dev/pytest-asyncio/issues/283) <https://github.com/pytest-dev/pytest-asyncio/issues/283>_
  • \n
  • Declare support for Python 3.11.
  • \n
\n

0.18.3 (22-03-25)

\n
    \n
  • Adds pytest-trio <https://pypi.org/project/pytest-trio/>_ to the test dependencies
  • \n
  • Fixes a bug that caused pytest-asyncio to try to set up async pytest_trio fixtures in strict mode. [#298](https://github.com/pytest-dev/pytest-asyncio/issues/298) <https://github.com/pytest-dev/pytest-asyncio/issues/298>_
  • \n
\n

0.18.2 (22-03-03)

\n
    \n
  • Fix asyncio auto mode not marking static methods. [#295](https://github.com/pytest-dev/pytest-asyncio/issues/295) <https://github.com/pytest-dev/pytest-asyncio/issues/295>_
  • \n
  • Fix a compatibility issue with Hypothesis 6.39.0. [#302](https://github.com/pytest-dev/pytest-asyncio/issues/302) <https://github.com/pytest-dev/pytest-asyncio/issues/302>_
  • \n
\n

0.18.1 (22-02-10)

\n
    \n
  • Fixes a regression that prevented async fixtures from working in synchronous tests. [#286](https://github.com/pytest-dev/pytest-asyncio/issues/286) <https://github.com/pytest-dev/pytest-asyncio/issues/286>_
  • \n
\n

0.18.0 (22-02-07)

\n
    \n
  • Raise a warning if @\u200bpytest.mark.asyncio is applied to non-async function. [#275](https://github.com/pytest-dev/pytest-asyncio/issues/275) <https://github.com/pytest-dev/pytest-asyncio/issues/275>_
  • \n
  • Support parametrized event_loop fixture. [#278](https://github.com/pytest-dev/pytest-asyncio/issues/278) <https://github.com/pytest-dev/pytest-asyncio/issues/278>_
  • \n
\n

0.17.2 (22-01-17)

\n
    \n
  • Require typing-extensions on Python`_
  • \n
  • Fix a regression in tests collection introduced by 0.17.1, the plugin works fine with non-python tests again. [#267](https://github.com/pytest-dev/pytest-asyncio/issues/267) <https://github.com/pytest-dev/pytest-asyncio/issues/267>_
  • \n
\n

0.17.1 (22-01-16)

\n
    \n
  • Fixes a bug that prevents async Hypothesis tests from working without explicit asyncio marker when --asyncio-mode=auto is set. [#258](https://github.com/pytest-dev/pytest-asyncio/issues/258) <https://github.com/pytest-dev/pytest-asyncio/issues/258>_
  • \n
  • Fixed a bug that closes the default event loop if the loop doesn't exist [#257](https://github.com/pytest-dev/pytest-asyncio/issues/257) <https://github.com/pytest-dev/pytest-asyncio/issues/257>_
  • \n
  • Added type annotations. [#198](https://github.com/pytest-dev/pytest-asyncio/issues/198) <https://github.com/pytest-dev/pytest-asyncio/issues/198>_
  • \n
  • Show asyncio mode in pytest report headers. [#266](https://github.com/pytest-dev/pytest-asyncio/issues/266) <https://github.com/pytest-dev/pytest-asyncio/issues/266>_
  • \n
  • Relax asyncio_mode type definition; it allows to support pytest 6.1+. [#262](https://github.com/pytest-dev/pytest-asyncio/issues/262) <https://github.com/pytest-dev/pytest-asyncio/issues/262>_
  • \n
\n

0.17.0 (22-01-13)

\n
    \n
  • pytest-asyncio no longer alters existing event loop policies. [#168](https://github.com/pytest-dev/pytest-asyncio/issues/168) <https://github.com/pytest-dev/pytest-asyncio/issues/168>, [#188](https://github.com/pytest-dev/pytest-asyncio/issues/188) <https://github.com/pytest-dev/pytest-asyncio/issues/168>
  • \n
  • Drop support for Python 3.6
  • \n
  • Fixed an issue when pytest-asyncio was used in combination with flaky or inherited asynchronous Hypothesis tests. [#178](https://github.com/pytest-dev/pytest-asyncio/issues/178) <https://github.com/pytest-dev/pytest-asyncio/issues/178>_ [#231](https://github.com/pytest-dev/pytest-asyncio/issues/231) <https://github.com/pytest-dev/pytest-asyncio/issues/231>_
  • \n
  • Added flaky <https://pypi.org/project/flaky/>_ to test dependencies
  • \n
  • Added unused_udp_port and unused_udp_port_factory fixtures (similar to unused_tcp_port and unused_tcp_port_factory counterparts. [#99](https://github.com/pytest-dev/pytest-asyncio/issues/99) <https://github.com/pytest-dev/pytest-asyncio/issues/99>_
  • \n
  • Added the plugin modes: strict, auto, and legacy. See documentation <https://github.com/pytest-dev/pytest-asyncio#modes>_ for details. [#125](https://github.com/pytest-dev/pytest-asyncio/issues/125) <https://github.com/pytest-dev/pytest-asyncio/issues/125>_
  • \n
  • Correctly process KeyboardInterrupt during async fixture setup phase [#219](https://github.com/pytest-dev/pytest-asyncio/issues/219) <https://github.com/pytest-dev/pytest-asyncio/issues/219>_
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-07-15T13:10:15Z", "updated_at": "2022-07-18T01:06:38Z", "closed_at": "2022-07-18T01:06:38Z", "merged_at": "2022-07-18T01:06:38Z", "merge_commit_sha": "22354c48ce4d514d7a1b321e5651c7f1340e3f5e", "assignee": null, "milestone": null, "draft": 0, "head": "bb3c6105164165432e2e72cc17d3ad71a1ba5b9b", "base": "950cc7677f65aa2543067b3bbfc2b6acb98b62c8", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1769", "merged_by": null, "auto_merge": null} {"id": 975096803, "node_id": "PR_kwDOBm6k_c46Hsvj", "number": 1760, "state": "closed", "locked": 0, "title": "Bump furo from 2022.4.7 to 2022.6.21", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [furo](https://github.com/pradyunsg/furo) from 2022.4.7 to 2022.6.21.\n
\nChangelog\n

Sourced from furo's changelog.

\n
\n

Changelog

\n\n

2022.06.21 -- Opulent Opal

\n
    \n
  • Fix docutils <= 0.17.x compatibility
  • \n
  • Bump to the latest Node.js LTS
  • \n
\n

2022.06.04.1 -- Naughty Nickel bugfix

\n
    \n
  • Fix the URL used in the "Edit this page" for Read the Docs builds.
  • \n
\n

2022.06.04 -- Naughty Nickel

\n
    \n
  • \u2728 Advertise Sphinx 5 compatibility.
  • \n
  • \u2728 Change to basic-ng as the base theme (from {pypi}sphinx-basic-ng).
  • \n
  • Document site-wide announcement banners.
  • \n
  • Drop the pin on pygments.
  • \n
  • Improve edit button, using basic-ng's edit-this-page component.
  • \n
  • Tweak headings to better match what users expect.
  • \n
  • Tweak how Sphinx's default HTML is rendered, using docutils post-transforms (this replaces parsing+modifying it with BeautifulSoup).
  • \n
  • When built with docutils 0.18, footnotes are rendered differently and stylised differently in Furo.
  • \n
\n

2022.04.07 -- Magical Mauve

\n
    \n
  • \u2728 Make sphinx-copybutton look better.
  • \n
  • Add margin to indentations in line blocks.
  • \n
  • Add styling for non-arabic list styles
  • \n
  • Add support for html_baseurl.
  • \n
  • Improve "Edit this page" icon to be more accessible.
  • \n
  • Improve html_sidebars example.
  • \n
  • Tweak positioning of back to top on desktop.
  • \n
\n

2022.03.04 -- Lucent Lilac

\n
    \n
  • Improve support for print media.
  • \n
  • Reduce heading sizes for h3 and below.
  • \n
  • Don't allow selecting headerlink content.
  • \n
  • Improve how overflow wrapping is handled.
  • \n
  • Add a reference from the configuration variables to the color customisation page.
  • \n
\n

2022.02.23 -- Keen Kobi

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=furo&package-manager=pip&previous-version=2022.4.7&new-version=2022.6.21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-06-22T13:22:31Z", "updated_at": "2022-07-18T01:06:27Z", "closed_at": "2022-07-18T01:06:27Z", "merged_at": "2022-07-18T01:06:27Z", "merge_commit_sha": "ea6161f8475d9fa41c4879049511c58f692cce04", "assignee": null, "milestone": null, "draft": 0, "head": "69951eedb7ca7f1284ba29f3890bef917d59a655", "base": "00e59ec461dc0150772b999c7cc15fcb9b507d58", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1760", "merged_by": null, "auto_merge": null} {"id": 992299943, "node_id": "PR_kwDOCGYnMM47JUun", "number": 452, "state": "closed", "locked": 0, "title": "Add duplicate table feature", "user": {"value": 1690072, "label": "davidleejy"}, "body": "This PR addresses a feature request raised in issue #449. Specifically this PR adds a functionality that lets users duplicate a table via:\r\n\r\n```python\r\ntable_new = db[\"my_table\"].duplicate(\"new_table\")\r\n```\r\n\r\nTest added in file `tests/test_duplicate.py`.\r\n\r\nHappy to make changes to meet maintainers' feedback, if any. ", "created_at": "2022-07-09T20:24:31Z", "updated_at": "2022-07-15T21:21:37Z", "closed_at": "2022-07-15T21:21:36Z", "merged_at": "2022-07-15T21:21:36Z", "merge_commit_sha": "b366e68deb0780048a23610c279552f8529d4726", "assignee": null, "milestone": null, "draft": 0, "head": "eef350fe543c6301c61b257c5f708e0e16ed5a34", "base": "42440d6345c242ee39778045e29143fb550bd2c2", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/452", "merged_by": null, "auto_merge": null} {"id": 981389800, "node_id": "PR_kwDOBm6k_c46ftHo", "number": 1763, "state": "closed", "locked": 0, "title": "Bump black from 22.1.0 to 22.6.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 22.1.0 to 22.6.0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

22.6.0

\n

Style

\n
    \n
  • Fix unstable formatting involving #fmt: skip and # fmt:skip comments (notice the lack of spaces) (#2970)
  • \n
\n

Preview style

\n
    \n
  • Docstring quotes are no longer moved if it would violate the line length limit (#3044)
  • \n
  • Parentheses around return annotations are now managed (#2990)
  • \n
  • Remove unnecessary parentheses around awaited objects (#2991)
  • \n
  • Remove unnecessary parentheses in with statements (#2926)
  • \n
  • Remove trailing newlines after code block open (#3035)
  • \n
\n

Integrations

\n
    \n
  • Add scripts/migrate-black.py script to ease introduction of Black to a Git project (#3038)
  • \n
\n

Output

\n
    \n
  • Output Python version and implementation as part of --version flag (#2997)
  • \n
\n

Packaging

\n
    \n
  • Use tomli instead of tomllib on Python 3.11 builds where tomllib is not available (#2987)
  • \n
\n

Parser

\n
    \n
  • PEP 654 syntax (for example, except *ExceptionGroup:) is now supported (#3016)
  • \n
  • PEP 646 syntax (for example, Array[Batch, *Shape] or def fn(*args: *T) -> None) is now supported (#3071)
  • \n
\n

Vim Plugin

\n
    \n
  • Fix strtobool function. It didn't parse true/on/false/off. (#3025)
  • \n
\n

Full Changelog: https://github.com/psf/black/compare/22.3.0...22.6.0

\n
\n

Thank you!

\n
    \n
  • @\u200bjpy-git for improving our parentheses formatting significantly
  • \n
  • @\u200bsiuryan for fixing a fmt: skip bug, making it a little less annoying to use :)
  • \n
  • @\u200bisidentical for implementing support for PEP 654 and 646 syntax
  • \n
  • @\u200bdefntvdm for fixing our vim plugin, especially as we (the maintainers) don't really know vim script sadly
  • \n
  • @\u200bidorrington92 for fixing the docstring bug where Black would move the closing quotes causing it to violate the line length limit (whoops!)
  • \n
  • @\u200bhbrunn for contributing the migrate-black script
  • \n
  • @\u200bsaroad2 for improving newline handling after code blocks and test infrastructure improvements
  • \n
\n

... and everyone else who contributed documentation, tests, or other improvements to the Black project!

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

22.6.0

\n

Style

\n
    \n
  • Fix unstable formatting involving #fmt: skip and # fmt:skip comments (notice the\nlack of spaces) (#2970)
  • \n
\n

Preview style

\n
    \n
  • Docstring quotes are no longer moved if it would violate the line length limit (#3044)
  • \n
  • Parentheses around return annotations are now managed (#2990)
  • \n
  • Remove unnecessary parentheses around awaited objects (#2991)
  • \n
  • Remove unnecessary parentheses in with statements (#2926)
  • \n
  • Remove trailing newlines after code block open (#3035)
  • \n
\n

Integrations

\n
    \n
  • Add scripts/migrate-black.py script to ease introduction of Black to a Git project\n(#3038)
  • \n
\n

Output

\n
    \n
  • Output Python version and implementation as part of --version flag (#2997)
  • \n
\n

Packaging

\n
    \n
  • Use tomli instead of tomllib on Python 3.11 builds where tomllib is not\navailable (#2987)
  • \n
\n

Parser

\n
    \n
  • PEP 654 syntax (for example,\nexcept *ExceptionGroup:) is now supported (#3016)
  • \n
  • PEP 646 syntax (for example,\nArray[Batch, *Shape] or def fn(*args: *T) -> None) is now supported (#3071)
  • \n
\n

Vim Plugin

\n
    \n
  • Fix strtobool function. It didn't parse true/on/false/off. (#3025)
  • \n
\n

22.3.0

\n

Preview style

\n
    \n
  • Code cell separators #%% are now standardised to # %% (#2919)
  • \n
  • Remove unnecessary parentheses from except statements (#2939)
  • \n
  • Remove unnecessary parentheses from tuple unpacking in for loops (#2945)
  • \n
  • Avoid magic-trailing-comma in single-element subscripts (#2942)
  • \n
\n

Configuration

\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=22.1.0&new-version=22.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-06-28T13:11:32Z", "updated_at": "2022-06-28T17:40:25Z", "closed_at": "2022-06-28T17:40:25Z", "merged_at": "2022-06-28T17:40:24Z", "merge_commit_sha": "9f1eb0d4eac483b953392157bd9fd6cc4df37de7", "assignee": null, "milestone": null, "draft": 0, "head": "fd6a817de499053c10c62139872486ef1698a481", "base": "00e59ec461dc0150772b999c7cc15fcb9b507d58", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1763", "merged_by": null, "auto_merge": null} {"id": 893039755, "node_id": "PR_kwDOBm6k_c41OrSL", "number": 1693, "state": "closed", "locked": 0, "title": "Bump black from 22.1.0 to 22.3.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 22.1.0 to 22.3.0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

22.3.0

\n

Preview style

\n
    \n
  • Code cell separators #%% are now standardised to # %% (#2919)
  • \n
  • Remove unnecessary parentheses from except statements (#2939)
  • \n
  • Remove unnecessary parentheses from tuple unpacking in for loops (#2945)
  • \n
  • Avoid magic-trailing-comma in single-element subscripts (#2942)
  • \n
\n

Configuration

\n
    \n
  • Do not format __pypackages__ directories by default (#2836)
  • \n
  • Add support for specifying stable version with --required-version (#2832).
  • \n
  • Avoid crashing when the user has no homedir (#2814)
  • \n
  • Avoid crashing when md5 is not available (#2905)
  • \n
  • Fix handling of directory junctions on Windows (#2904)
  • \n
\n

Documentation

\n
    \n
  • Update pylint config documentation (#2931)
  • \n
\n

Integrations

\n
    \n
  • Move test to disable plugin in Vim/Neovim, which speeds up loading (#2896)
  • \n
\n

Output

\n
    \n
  • In verbose, mode, log when Black is using user-level config (#2861)
  • \n
\n

Packaging

\n
    \n
  • Fix Black to work with Click 8.1.0 (#2966)
  • \n
  • On Python 3.11 and newer, use the standard library's tomllib instead of tomli\n(#2903)
  • \n
  • black-primer, the deprecated internal devtool, has been removed and copied to a\nseparate repository (#2924)
  • \n
\n

Parser

\n
    \n
  • Black can now parse starred expressions in the target of for and async for\nstatements, e.g for item in *items_1, *items_2: pass (#2879).
  • \n
\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

22.3.0

\n

Preview style

\n
    \n
  • Code cell separators #%% are now standardised to # %% (#2919)
  • \n
  • Remove unnecessary parentheses from except statements (#2939)
  • \n
  • Remove unnecessary parentheses from tuple unpacking in for loops (#2945)
  • \n
  • Avoid magic-trailing-comma in single-element subscripts (#2942)
  • \n
\n

Configuration

\n
    \n
  • Do not format __pypackages__ directories by default (#2836)
  • \n
  • Add support for specifying stable version with --required-version (#2832).
  • \n
  • Avoid crashing when the user has no homedir (#2814)
  • \n
  • Avoid crashing when md5 is not available (#2905)
  • \n
  • Fix handling of directory junctions on Windows (#2904)
  • \n
\n

Documentation

\n
    \n
  • Update pylint config documentation (#2931)
  • \n
\n

Integrations

\n
    \n
  • Move test to disable plugin in Vim/Neovim, which speeds up loading (#2896)
  • \n
\n

Output

\n
    \n
  • In verbose, mode, log when Black is using user-level config (#2861)
  • \n
\n

Packaging

\n
    \n
  • Fix Black to work with Click 8.1.0 (#2966)
  • \n
  • On Python 3.11 and newer, use the standard library's tomllib instead of tomli\n(#2903)
  • \n
  • black-primer, the deprecated internal devtool, has been removed and copied to a\nseparate repository (#2924)
  • \n
\n

Parser

\n
    \n
  • Black can now parse starred expressions in the target of for and async for\nstatements, e.g for item in *items_1, *items_2: pass (#2879).
  • \n
\n
\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=22.1.0&new-version=22.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-03-29T13:11:09Z", "updated_at": "2022-06-28T13:11:38Z", "closed_at": "2022-06-28T13:11:36Z", "merged_at": null, "merge_commit_sha": "17e058e286104e9b9180df72c61eb9218f376c4d", "assignee": null, "milestone": null, "draft": 0, "head": "ec2d1e47dc39dd1db2048cd0a001aa9e4be20812", "base": "1d33fd03b3c211e0f48a8f3bde83880af89e4e69", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1693", "merged_by": null, "auto_merge": null} {"id": 959088871, "node_id": "PR_kwDOBm6k_c45Kojn", "number": 1753, "state": "closed", "locked": 0, "title": "Bump furo from 2022.4.7 to 2022.6.4.1", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [furo](https://github.com/pradyunsg/furo) from 2022.4.7 to 2022.6.4.1.\n
\nChangelog\n

Sourced from furo's changelog.

\n
\n

Changelog

\n\n

2022.06.04.1 -- Naughty Nickel bugfix

\n
    \n
  • Fix the URL used in the "Edit this page" for Read the Docs builds.
  • \n
\n

2022.06.04 -- Naughty Nickel

\n
    \n
  • \u2728 Advertise Sphinx 5 compatibility.
  • \n
  • \u2728 Change to basic-ng as the base theme (from {pypi}sphinx-basic-ng).
  • \n
  • Document site-wide announcement banners.
  • \n
  • Drop the pin on pygments.
  • \n
  • Improve edit button, using basic-ng's edit-this-page component.
  • \n
  • Tweak headings to better match what users expect.
  • \n
  • Tweak how Sphinx's default HTML is rendered, using docutils post-transforms (this replaces parsing+modifying it with BeautifulSoup).
  • \n
  • When built with docutils 0.18, footnotes are rendered differently and stylised differently in Furo.
  • \n
\n

2022.04.07 -- Magical Mauve

\n
    \n
  • \u2728 Make sphinx-copybutton look better.
  • \n
  • Add margin to indentations in line blocks.
  • \n
  • Add styling for non-arabic list styles
  • \n
  • Add support for html_baseurl.
  • \n
  • Improve "Edit this page" icon to be more accessible.
  • \n
  • Improve html_sidebars example.
  • \n
  • Tweak positioning of back to top on desktop.
  • \n
\n

2022.03.04 -- Lucent Lilac

\n
    \n
  • Improve support for print media.
  • \n
  • Reduce heading sizes for h3 and below.
  • \n
  • Don't allow selecting headerlink content.
  • \n
  • Improve how overflow wrapping is handled.
  • \n
  • Add a reference from the configuration variables to the color customisation page.
  • \n
\n

2022.02.23 -- Keen Kobi

\n
    \n
  • \u2728 Add a "Back to Top" button that shows up when scrolling up.
  • \n
  • Add a URL to GitHub in Project-URLs.
  • \n
  • Break long words in the prev/next buttons.
  • \n
  • Fix includes in Kitchen sink.
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=furo&package-manager=pip&previous-version=2022.4.7&new-version=2022.6.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-06-06T13:10:22Z", "updated_at": "2022-06-22T13:22:37Z", "closed_at": "2022-06-22T13:22:35Z", "merged_at": null, "merge_commit_sha": "7a9d91728ac8d15d558ffa4201ac3907f9e93905", "assignee": null, "milestone": null, "draft": 0, "head": "23a85154e276c001f920eacb9ad266cb227f7eab", "base": "2e9751672d4fe329b3c359d5b7b1992283185820", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1753", "merged_by": null, "auto_merge": null} {"id": 971057476, "node_id": "PR_kwDOBm6k_c454SlE", "number": 1759, "state": "closed", "locked": 0, "title": "Extract facet portions of table.html out into included templates", "user": {"value": 19872, "label": "nsmgr8"}, "body": "To allow users customise the facet content as they would prefer such as sorting of facet results. ordering of suggested facets etc.", "created_at": "2022-06-17T22:04:04Z", "updated_at": "2022-06-20T18:05:45Z", "closed_at": "2022-06-20T18:05:45Z", "merged_at": "2022-06-20T18:05:45Z", "merge_commit_sha": "00e59ec461dc0150772b999c7cc15fcb9b507d58", "assignee": null, "milestone": null, "draft": 0, "head": "b901bb0a8eb50bc966c3e1712d73c0822edf3861", "base": "2e9751672d4fe329b3c359d5b7b1992283185820", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1759", "merged_by": null, "auto_merge": null} {"id": 928210171, "node_id": "PR_kwDOBm6k_c43U1z7", "number": 1740, "state": "closed", "locked": 0, "title": "chore: Set permissions for GitHub actions", "user": {"value": 172697, "label": "naveensrinivasan"}, "body": " Restrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won\u2019t be able to do much.\n\n- Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions\n\nhttps://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions\n\nhttps://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs\n\n[Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)\n\nSigned-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>\n", "created_at": "2022-05-05T01:03:08Z", "updated_at": "2022-05-31T19:28:41Z", "closed_at": "2022-05-31T19:28:40Z", "merged_at": "2022-05-31T19:28:40Z", "merge_commit_sha": "2e9751672d4fe329b3c359d5b7b1992283185820", "assignee": null, "milestone": null, "draft": 0, "head": "f76fce5fd2bacadf2f46656e32093c6d639270c9", "base": "280ff372ab30df244f6c54f6f3002da57334b3d7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1740", "merged_by": null, "auto_merge": null} {"id": 943686022, "node_id": "PR_kwDOCGYnMM44P4GG", "number": 437, "state": "closed", "locked": 0, "title": "docs to dogs", "user": {"value": 114388, "label": "yurivish"}, "body": "Fixes a typo.", "created_at": "2022-05-22T15:50:33Z", "updated_at": "2022-05-30T21:32:41Z", "closed_at": "2022-05-30T21:32:41Z", "merged_at": "2022-05-30T21:32:41Z", "merge_commit_sha": "9fedfc69d7239ac49900051e1c48ee9cdd470d9e", "assignee": null, "milestone": null, "draft": 0, "head": "9e540417821385939db0fdd2d0a859f85be377e6", "base": "59be60c471fd7a2c4be7f75e8911163e618ff5ca", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/437", "merged_by": null, "auto_merge": null} {"id": 925926708, "node_id": "PR_kwDOBm6k_c43MIU0", "number": 1736, "state": "closed", "locked": 0, "title": "Clean up compatibility with Pyodide", "user": {"value": 9599, "label": "simonw"}, "body": "Closes #1735, closes #1733", "created_at": "2022-05-02T20:14:38Z", "updated_at": "2022-05-02T20:15:28Z", "closed_at": "2022-05-02T20:15:27Z", "merged_at": "2022-05-02T20:15:27Z", "merge_commit_sha": "3f00a29141bdea5be747f6d1c93871ccdb792167", "assignee": null, "milestone": null, "draft": 0, "head": "784fe6a245a051ef6b42e153d3fae9cce7b0b148", "base": "a29c1277896b6a7905ef5441c42a37bc15f67599", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1736", "merged_by": null, "auto_merge": null} {"id": 925807233, "node_id": "PR_kwDOCGYnMM43LrKB", "number": 429, "state": "closed", "locked": 0, "title": "Depend on click-default-group-wheel", "user": {"value": 9599, "label": "simonw"}, "body": "Trying to get this to work with Pyodide.\r\n\r\nRefs: https://github.com/simonw/click-default-group-wheel/issues/3", "created_at": "2022-05-02T18:03:10Z", "updated_at": "2022-05-02T18:52:42Z", "closed_at": "2022-05-02T18:05:00Z", "merged_at": "2022-05-02T18:05:00Z", "merge_commit_sha": "ed6fd516082e8cc83b199798f62dd67728a6974f", "assignee": null, "milestone": null, "draft": 0, "head": "4a02dcf265702a4f11eed943bf8feaa502c590d5", "base": "e3a14c33a033b0c2fc00f2470666caaf9027e446", "author_association": "OWNER", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/429", "merged_by": null, "auto_merge": null} {"id": 917185800, "node_id": "PR_kwDOBm6k_c42qyUI", "number": 1717, "state": "closed", "locked": 0, "title": "Add timeout option to Cloudrun build", "user": {"value": 127565, "label": "wragge"}, "body": "I've found that the Cloudrun build phase often hits a timeout limit with large databases. I believe the default timeout is 10 minutes. This pull request just adds a `--timeout` option to the cloudrun `publish` command and passes the value on to the build step.", "created_at": "2022-04-23T11:51:21Z", "updated_at": "2022-04-24T14:03:08Z", "closed_at": "2022-04-24T14:03:08Z", "merged_at": "2022-04-24T14:03:08Z", "merge_commit_sha": "3001e1e394b6cb605c2cd81eed671a7da419c1b3", "assignee": null, "milestone": null, "draft": 0, "head": "9b9a314a84453cec5ad6c886351ef3df9d47a5a4", "base": "d57c347f35bcd8cff15f913da851b4b8eb030867", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1717", "merged_by": null, "auto_merge": null} {"id": 893040042, "node_id": "PR_kwDOBm6k_c41OrWq", "number": 1694, "state": "closed", "locked": 0, "title": "Update click requirement from <8.1.0,>=7.1.1 to >=7.1.1,<8.2.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [click](https://github.com/pallets/click) to permit the latest version.\n
\nRelease notes\n

Sourced from click's releases.

\n
\n

8.1.0

\n

This is a feature release, which includes new features and removes previously deprecated features. The 8.1.x branch is now the supported bugfix branch, the 8.0.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades.

\n\n
\n
\n
\nChangelog\n

Sourced from click's changelog.

\n
\n

Version 8.1.0

\n

Released 2022-03-28

\n
    \n
  • \n

    Drop support for Python 3.6. :pr:2129

    \n
  • \n
  • \n

    Remove previously deprecated code. :pr:2130

    \n
      \n
    • Group.resultcallback is renamed to result_callback.
    • \n
    • autocompletion parameter to Command is renamed to\nshell_complete.
    • \n
    • get_terminal_size is removed, use\nshutil.get_terminal_size instead.
    • \n
    • get_os_args is removed, use sys.argv[1:] instead.
    • \n
    \n
  • \n
  • \n

    Rely on :pep:538 and :pep:540 to handle selecting UTF-8 encoding\ninstead of ASCII. Click's locale encoding detection is removed.\n:issue:2198

    \n
  • \n
  • \n

    Single options boolean flags with show_default=True only show\nthe default if it is True. :issue:1971

    \n
  • \n
  • \n

    The command and group decorators can be applied with or\nwithout parentheses. :issue:1359

    \n
  • \n
  • \n

    The Path type can check whether the target is executable.\n:issue:1961

    \n
  • \n
  • \n

    Command.show_default overrides Context.show_default, instead\nof the other way around. :issue:1963

    \n
  • \n
  • \n

    Parameter decorators and @group handles cls=None the same as\nnot passing cls. @option handles help=None the same as\nnot passing help. :issue:[#1959](https://github.com/pallets/click/issues/1959)

    \n
  • \n
  • \n

    A flag option with required=True requires that the flag is\npassed instead of choosing the implicit default value. :issue:1978

    \n
  • \n
  • \n

    Indentation in help text passed to Option and Command is\ncleaned the same as using the @option and @command\ndecorators does. A command's epilog and short_help are also\nprocessed. :issue:1985

    \n
  • \n
  • \n

    Store unprocessed Command.help, epilog and short_help\nstrings. Processing is only done when formatting help text for\noutput. :issue:2149

    \n
  • \n
  • \n

    Allow empty str input for prompt() when\nconfirmation_prompt=True and default="". :issue:2157

    \n
  • \n
  • \n

    Windows glob pattern expansion doesn't fail if a value is an invalid\npattern. :issue:2195

    \n
  • \n
  • \n

    It's possible to pass a list of params to @command. Any\nparams defined with decorators are appended to the passed params.\n:issue:2131.

    \n
  • \n
  • \n

    @command decorator is annotated as returning the correct type if\na cls argument is used. :issue:2211

    \n
  • \n
  • \n

    A Group with invoke_without_command=True and chain=False\nwill invoke its result callback with the group function's return\nvalue. :issue:2124

    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-03-29T13:11:23Z", "updated_at": "2022-04-08T23:05:10Z", "closed_at": "2022-04-08T23:05:09Z", "merged_at": "2022-04-08T23:05:09Z", "merge_commit_sha": "138e4d9a53e3982137294ba383303c3a848cfca4", "assignee": null, "milestone": null, "draft": 0, "head": "83ff96792fd670ed32a1a61d38529959170c7309", "base": "e73fa72917ca28c152208d62d07a490c81cadf52", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1694", "merged_by": null, "auto_merge": null} {"id": 903832393, "node_id": "PR_kwDOBm6k_c4132NJ", "number": 1703, "state": "closed", "locked": 0, "title": "Update beautifulsoup4 requirement from <4.11.0,>=4.8.1 to >=4.8.1,<4.12.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-04-08T13:08:53Z", "updated_at": "2022-04-08T22:51:05Z", "closed_at": "2022-04-08T22:51:05Z", "merged_at": "2022-04-08T22:51:05Z", "merge_commit_sha": "247e460e08bf823142f7b84058fe44e43626787f", "assignee": null, "milestone": null, "draft": 0, "head": "73aabe6c4222500745be8ca324431295b727d335", "base": "90d1be9952db9aaddc21a536e4d00a8de44765d7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1703", "merged_by": null, "auto_merge": null} {"id": 887534558, "node_id": "PR_kwDOCGYnMM405rPe", "number": 419, "state": "closed", "locked": 0, "title": "Ignore common generated files", "user": {"value": 25778, "label": "eyeseast"}, "body": "Closes #418 \r\n\r\nThis adds four files to `.gitignore`:\r\n\r\n\t.hypothesis/\r\n\tPipfile\r\n\tPipfile.lock\r\n\tpyproject.toml\r\n\r\nThose are all generated in the course of development and testing.", "created_at": "2022-03-23T18:06:22Z", "updated_at": "2022-03-24T21:01:44Z", "closed_at": "2022-03-24T21:01:44Z", "merged_at": "2022-03-24T21:01:44Z", "merge_commit_sha": "396f80fcc60da8dd844577114f7920830a2e5403", "assignee": null, "milestone": null, "draft": 0, "head": "228f73615cf993dd3caf3c240682c00392832bb8", "base": "93fa79d30b1531bea281d0eb6b925c4e61bc1aa6", "author_association": "CONTRIBUTOR", "repo": {"value": 140912432, "label": "sqlite-utils"}, "url": "https://github.com/simonw/sqlite-utils/pull/419", "merged_by": null, "auto_merge": null} {"id": 811088967, "node_id": "PR_kwDOBm6k_c4wWDxH", "number": 1582, "state": "closed", "locked": 0, "title": "don't set far expiry if hash is '000'", "user": {"value": 536941, "label": "fgregg"}, "body": "This will close #1581.\r\n\r\nI couldn't find any unit tests related to the testing hashed urls, and I know that you want to break that code out of the core application (#1561), so I'm not quite sure what you would like me to for testing.", "created_at": "2021-12-28T18:16:13Z", "updated_at": "2022-03-24T04:07:58Z", "closed_at": "2022-03-24T04:07:58Z", "merged_at": null, "merge_commit_sha": "e7249b52558b4ddcd92e68a13bd02fb54a2b92f8", "assignee": null, "milestone": null, "draft": 0, "head": "216f3b32b88d85b33e45937ed89ac919d82c23b4", "base": "8c401ee0f054de2f568c3a8302c9223555146407", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1582", "merged_by": null, "auto_merge": null} {"id": 883644303, "node_id": "PR_kwDOBm6k_c40q1eP", "number": 1665, "state": "closed", "locked": 0, "title": "Pin setup-gcloud to v0 instead of master", "user": {"value": 408570, "label": "sethvargo"}, "body": "setup-gcloud will be updating the branch name from master to main in\r\na future release. Even though GitHub will establish redirects, this\r\nwill break any GitHub Actions workflows that pin to master. This PR\r\nupdates your GitHub Actions workflows to pin to v0, which is the\r\nrecommended best practice.", "created_at": "2022-03-18T17:17:22Z", "updated_at": "2022-03-23T19:31:10Z", "closed_at": "2022-03-23T17:55:39Z", "merged_at": null, "merge_commit_sha": "5bd51d8eda65b25ce639a841944eb6b522768b2b", "assignee": null, "milestone": null, "draft": 0, "head": "c811c2181e298a48fdf50523525813c37f99e592", "base": "30e5f0e67c38054a8087a2a4eae3fc4d1779af90", "author_association": "NONE", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1665", "merged_by": null, "auto_merge": null} {"id": 882973374, "node_id": "PR_kwDOBm6k_c40oRq-", "number": 1664, "state": "closed", "locked": 0, "title": "Remove hashed URL mode", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1661.", "created_at": "2022-03-17T23:19:10Z", "updated_at": "2022-03-19T00:12:04Z", "closed_at": "2022-03-19T00:12:04Z", "merged_at": "2022-03-19T00:12:03Z", "merge_commit_sha": "d4f60c2388c01ddce1b16f95c16d310e037c9912", "assignee": null, "milestone": null, "draft": 0, "head": "eae91fe8c2934c8674f5202b2d9f85b6f674c410", "base": "30e5f0e67c38054a8087a2a4eae3fc4d1779af90", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1664", "merged_by": null, "auto_merge": null} {"id": 879038656, "node_id": "PR_kwDOBm6k_c40ZRDA", "number": 1656, "state": "closed", "locked": 0, "title": "Update pytest requirement from <7.1.0,>=5.2.2 to >=5.2.2,<7.2.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.\n
\nRelease notes\n

Sourced from pytest's releases.

\n
\n

7.1.0

\n

pytest 7.1.0 (2022-03-13)

\n

Breaking Changes

\n
    \n
  • \n

    #8838: As per our policy, the following features have been deprecated in the 6.X series and are now\nremoved:

    \n
      \n
    • pytest._fillfuncargs function.
    • \n
    • pytest_warning_captured hook - use pytest_warning_recorded instead.
    • \n
    • -k -foobar syntax - use -k 'not foobar' instead.
    • \n
    • -k foobar: syntax.
    • \n
    • pytest.collect module - import from pytest directly.
    • \n
    \n

    For more information consult\nDeprecations and Removals in the docs.

    \n
  • \n
  • \n

    #9437: Dropped support for Python 3.6, which reached end-of-life at 2021-12-23.

    \n
  • \n
\n

Improvements

\n
    \n
  • \n

    #5192: Fixed test output for some data types where -v would show less information.

    \n

    Also, when showing diffs for sequences, -q would produce full diffs instead of the expected diff.

    \n
  • \n
  • \n

    #9362: pytest now avoids specialized assert formatting when it is detected that the default __eq__ is overridden in attrs or dataclasses.

    \n
  • \n
  • \n

    #9536: When -vv is given on command line, show skipping and xfail reasons in full instead of truncating them to fit the terminal width.

    \n
  • \n
  • \n

    #9644: More information about the location of resources that led Python to raise ResourceWarning{.interpreted-text role="class"} can now\nbe obtained by enabling tracemalloc{.interpreted-text role="mod"}.

    \n

    See resource-warnings{.interpreted-text role="ref"} for more information.

    \n
  • \n
  • \n

    #9678: More types are now accepted in the ids argument to @pytest.mark.parametrize.\nPreviously only [str]{.title-ref}, [float]{.title-ref}, [int]{.title-ref} and [bool]{.title-ref} were accepted;\nnow [bytes]{.title-ref}, [complex]{.title-ref}, [re.Pattern]{.title-ref}, [Enum]{.title-ref} and anything with a [__name__]{.title-ref} are also accepted.

    \n
  • \n
  • \n

    #9692: pytest.approx{.interpreted-text role="func"} now raises a TypeError{.interpreted-text role="class"} when given an unordered sequence (such as set{.interpreted-text role="class"}).

    \n

    Note that this implies that custom classes which only implement __iter__ and __len__ are no longer supported as they don't guarantee order.

    \n
  • \n
\n

Bug Fixes

\n
    \n
  • #8242: The deprecation of raising unittest.SkipTest{.interpreted-text role="class"} to skip collection of\ntests during the pytest collection phase is reverted - this is now a supported\nfeature again.
  • \n
  • #9493: Symbolic link components are no longer resolved in conftest paths.\nThis means that if a conftest appears twice in collection tree, using symlinks, it will be executed twice.
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2022-03-14T13:11:53Z", "updated_at": "2022-03-15T18:03:03Z", "closed_at": "2022-03-15T18:03:02Z", "merged_at": "2022-03-15T18:03:01Z", "merge_commit_sha": "77a904fea14f743560af9cc668146339bdbbd0a9", "assignee": null, "milestone": null, "draft": 0, "head": "5d9883fcbb5ce00c50fd58aacfcf6e0e2d39ba48", "base": "c10cd48baf106659bf3f129ad7bfb2226be73821", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1656", "merged_by": null, "auto_merge": null} {"id": 880373442, "node_id": "PR_kwDOBm6k_c40eW7C", "number": 1659, "state": "closed", "locked": 0, "title": "Tilde encoding", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1657", "created_at": "2022-03-15T16:19:07Z", "updated_at": "2022-03-15T18:01:58Z", "closed_at": "2022-03-15T18:01:57Z", "merged_at": "2022-03-15T18:01:57Z", "merge_commit_sha": "a35393b29cfb5b8abdc6a94e577af1c9a5c13652", "assignee": null, "milestone": null, "draft": 0, "head": "99b8263806e81028af169f400352c26e5473ab44", "base": "c10cd48baf106659bf3f129ad7bfb2226be73821", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1659", "merged_by": null, "auto_merge": null}