{"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": 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": 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": 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": 323983732, "node_id": "MDExOlB1bGxSZXF1ZXN0MzIzOTgzNzMy", "number": 579, "state": "open", "locked": 0, "title": "New connection pooling", "user": {"value": 9599, "label": "simonw"}, "body": "See #569", "created_at": "2019-10-02T23:22:19Z", "updated_at": "2019-11-15T22:57:21Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "025b4024b1b43ea034b7fd331c30740165ff75f2", "assignee": null, "milestone": null, "draft": 0, "head": "32cbfd2acd28bcefb97c442ac8e3ee2c07401e19", "base": "a9909c29ccac771c23c2ef22b89d10697b5256b9", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/579", "merged_by": null, "auto_merge": null} {"id": 545264436, "node_id": "MDExOlB1bGxSZXF1ZXN0NTQ1MjY0NDM2", "number": 1159, "state": "open", "locked": 0, "title": "Improve the display of facets information", "user": {"value": 552629, "label": "lovasoa"}, "body": "This PR changes the display of facets to hopefully make them more readable.\r\n\r\nBefore | After\r\n---|---\r\n![image](https://user-images.githubusercontent.com/552629/103084609-b1ec2980-45df-11eb-85bc-68ab8df3e8d9.png) | ![image](https://user-images.githubusercontent.com/552629/103085220-620e6200-45e1-11eb-8189-5dd5d3e2569e.png)\r\n", "created_at": "2020-12-24T11:01:47Z", "updated_at": "2023-07-31T18:57:59Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "0276c5609da34bfb660f65212e1a367e637979d7", "assignee": null, "milestone": {"value": 3268330, "label": "Datasette 1.0"}, "draft": 0, "head": "c820abd0bcb34d1ea5a03be64a2158ae7c42920c", "base": "a882d679626438ba0d809944f06f239bcba8ee96", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1159", "merged_by": null, "auto_merge": null} {"id": 658991404, "node_id": "MDExOlB1bGxSZXF1ZXN0NjU4OTkxNDA0", "number": 1352, "state": "closed", "locked": 0, "title": "Bump black from 21.5b1 to 21.5b2", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 21.5b1 to 21.5b2.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

21.5b2

\n

Black

\n\n

Blackd

\n\n

Packaging

\n\n

Documentation

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

Sourced from black's changelog.

\n
\n

21.5b2

\n

Black

\n\n

Blackd

\n\n

Integrations

\n\n

Packaging

\n\n

Documentation

\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=21.5b1&new-version=21.5b2)](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": "2021-06-01T13:08:52Z", "updated_at": "2021-06-02T02:56:45Z", "closed_at": "2021-06-02T02:56:44Z", "merged_at": "2021-06-02T02:56:44Z", "merge_commit_sha": "03b35d70e281ea48bd9b8058738ed87b13cea2de", "assignee": null, "milestone": null, "draft": 0, "head": "6921552c80854d6ea73203fe2f9ab46bac6d5644", "base": "a18e8641bc33e51b265855bc6e8a1939597b3a76", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1352", "merged_by": null, "auto_merge": null} {"id": 760452915, "node_id": "PR_kwDOBm6k_c4tU5cz", "number": 1494, "state": "closed", "locked": 0, "title": "Update pytest-asyncio requirement from <0.16,>=0.10 to >=0.10,<0.17", "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
\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": "2021-10-18T13:14:17Z", "updated_at": "2021-10-24T22:22:40Z", "closed_at": "2021-10-24T22:22:39Z", "merged_at": "2021-10-24T22:22:39Z", "merge_commit_sha": "03cc697b6b3d0983618c29ee75b45b5e0ac91139", "assignee": null, "milestone": null, "draft": 0, "head": "7a3e3c355695d95b002a2ec6a68b0c27c7089ed6", "base": "ff9ccfb0310501a3b4b4ca24d73246a8eb3e7914", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1494", "merged_by": null, "auto_merge": null} {"id": 817942693, "node_id": "PR_kwDOBm6k_c4wwNCl", "number": 1589, "state": "closed", "locked": 0, "title": "Typo in docs about default redirect status code", "user": {"value": 3556, "label": "davidbgk"}, "body": null, "created_at": "2022-01-10T19:14:36Z", "updated_at": "2022-03-06T02:27:49Z", "closed_at": "2022-03-06T01:58:32Z", "merged_at": "2022-03-06T01:58:32Z", "merge_commit_sha": "0499f174c063283aa9b589d475a32077aaf7adc5", "assignee": null, "milestone": null, "draft": 0, "head": "d95bd658748172d88b04330950ef8f8d18b726c7", "base": "8c401ee0f054de2f568c3a8302c9223555146407", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1589", "merged_by": null, "auto_merge": null} {"id": 1503774871, "node_id": "PR_kwDOBm6k_c5ZociX", "number": 2173, "state": "closed", "locked": 0, "title": "click-default-group>=1.2.3", "user": {"value": 9599, "label": "simonw"}, "body": "Now available as a wheel:\r\n- https://github.com/click-contrib/click-default-group/issues/21\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2173.org.readthedocs.build/en/2173/\n\r\n", "created_at": "2023-09-06T02:33:28Z", "updated_at": "2023-09-06T02:50:10Z", "closed_at": "2023-09-06T02:50:10Z", "merged_at": "2023-09-06T02:50:10Z", "merge_commit_sha": "05707aa16b5c6c39fbe48b3176b85a8ffe493938", "assignee": null, "milestone": null, "draft": 0, "head": "a481ebd495d0f87ebd6dcf360a9cff25a6e148d7", "base": "fd083e37ec53e7e625111168d324a572344a3b19", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2173", "merged_by": null, "auto_merge": null} {"id": 729704537, "node_id": "MDExOlB1bGxSZXF1ZXN0NzI5NzA0NTM3", "number": 1465, "state": "open", "locked": 0, "title": "add support for -o --get /path", "user": {"value": 51016, "label": "ctb"}, "body": "Fixes https://github.com/simonw/datasette/issues/1459\r\n\r\nAdds support for `--open --get /path` to be used in combination.\r\n\r\nIf `--open` is provided alone, datasette will open a web page to a default URL.\r\nIf `--get ` is provided alone, datasette will output the result of doing a GET to that URL and then exit.\r\nIf `--open --get ` are provided together, datasette will open a web page to that URL.\r\n\r\nTODO items:\r\n- [ ] update documentation\r\n- [ ] print out error message when `--root --open --get ` is used\r\n- [ ] adjust code to require that `` start with a `/` when `-o --get ` is used\r\n- [ ] add test(s)\r\n\r\nnote, '@CTB' is used in this PR to flag code that needs revisiting.", "created_at": "2021-09-08T14:30:42Z", "updated_at": "2021-09-08T14:31:45Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "064e9511923fc4e50566bf9430b4a5b26f169357", "assignee": null, "milestone": null, "draft": 1, "head": "9b66a7d9ba55bad8a3b409ede8855f4b4fff1f88", "base": "d57ab156b35ec642549fb69d08279850065027d2", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1465", "merged_by": null, "auto_merge": null} {"id": 152360740, "node_id": "MDExOlB1bGxSZXF1ZXN0MTUyMzYwNzQw", "number": 81, "state": "closed", "locked": 0, "title": ":fire: Removes DS_Store", "user": {"value": 50527, "label": "jefftriplett"}, "body": "", "created_at": "2017-11-13T22:07:52Z", "updated_at": "2017-11-14T02:24:54Z", "closed_at": "2017-11-13T22:16:55Z", "merged_at": "2017-11-13T22:16:55Z", "merge_commit_sha": "06a826c3188af82f27bb6b4e09cc89b782d30bd6", "assignee": null, "milestone": null, "draft": 0, "head": "c66d297eac556a7f4fd4dcdb15cfb9466fddac77", "base": "d75f423b6fcfc074b7c6f8f7679da8876f181edd", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/81", "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": 1452025020, "node_id": "PR_kwDOBm6k_c5WjCS8", "number": 2121, "state": "closed", "locked": 0, "title": "Bump furo from 2023.3.27 to 2023.7.26", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [furo](https://github.com/pradyunsg/furo) from 2023.3.27 to 2023.7.26.\n
\nChangelog\n

Sourced from furo's changelog.

\n
\n

Changelog

\n\n

2023.07.26 -- Vigilant Volt

\n
    \n
  • Fix compatiblity with Sphinx 7.1.
  • \n
  • Improve how content overflow is handled.
  • \n
  • Improve how literal blocks containing inline code are handled.
  • \n
\n

2023.05.20 -- Unassuming Ultramarine

\n
    \n
  • \u2728 Add support for Sphinx 7.
  • \n
  • Drop support for Sphinx 5.
  • \n
  • Improve the screen-reader label for sidebar collapse.
  • \n
  • Make it easier to create derived themes from Furo.
  • \n
  • Bump all JS dependencies (NodeJS and npm packages).
  • \n
\n

2023.03.27 -- Tasty Tangerine

\n
    \n
  • Regenerate with newer version of sphinx-theme-builder, to fix RECORD hashes.
  • \n
  • Add missing class to Font Awesome examples
  • \n
\n

2023.03.23 -- Sassy Saffron

\n
    \n
  • Update Python version classifiers.
  • \n
  • Increase the icon size in mobile header.
  • \n
  • Increase admonition title bg opacity.
  • \n
  • Change the default API background to transparent.
  • \n
  • Transition the API background change.
  • \n
  • Remove the "indent" of API entries which have a background.
  • \n
  • Break long inline code literals.
  • \n
\n

2022.12.07 -- Reverent Raspberry

\n
    \n
  • \u2728 Add support for Sphinx 6.
  • \n
  • \u2728 Improve footnote presentation with docutils 0.18+.
  • \n
  • Drop support for Sphinx 4.
  • \n
  • Improve documentation about what the edit button does.
  • \n
  • Improve handling of empty-flexboxes for better print experience on Chrome.
  • \n
  • Improve styling for inline signatures.
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 35f5307 Prepare release: 2023.07.26
  • \n
  • 0a8bedc Update changelog
  • \n
  • a92dd0c Make _add_asset_hashes a no-op with Sphinx 7.1
  • \n
  • f8db95b Improve literals with inline code are handled
  • \n
  • 1680dbe Document the use of figclass with figure directive
  • \n
  • beebd7e Increase the specificity of the admonition title selector
  • \n
  • 834e951 Setup uploads to Percy
  • \n
  • 27bf2c0 [pre-commit.ci] pre-commit autoupdate (#672)
  • \n
  • c8b51d0 Fix how content overflow is handled
  • \n
  • 80afa27 [pre-commit.ci] pre-commit autoupdate (#652)
  • \n
  • Additional commits viewable in compare view
  • \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=2023.3.27&new-version=2023.7.26)](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--2121.org.readthedocs.build/en/2121/\n\r\n", "created_at": "2023-07-27T13:40:48Z", "updated_at": "2023-08-07T16:20:23Z", "closed_at": "2023-08-07T16:20:20Z", "merged_at": null, "merge_commit_sha": "07e16b8e61eec383455354cbf06d651982cfbaa6", "assignee": null, "milestone": null, "draft": 0, "head": "3aca01f4eefc9d3ee542f86c62d645cbfc921a36", "base": "08181823990a71ffa5a1b57b37259198eaa43e06", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2121", "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
  • \n

    Drop support for Python 3.6. :pr:1534

    \n
  • \n
  • \n

    Remove previously deprecated code. :pr:1544

    \n
      \n
    • WithExtension and AutoEscapeExtension are built-in now.
    • \n
    • contextfilter and contextfunction are replaced by\npass_context. evalcontextfilter and\nevalcontextfunction are replaced by pass_eval_context.\nenvironmentfilter and environmentfunction are replaced\nby pass_environment.
    • \n
    • Markup and escape should be imported from MarkupSafe.
    • \n
    • Compiled templates from very old Jinja versions may need to be\nrecompiled.
    • \n
    • Legacy resolve mode for Context subclasses is no longer\nsupported. Override resolve_or_missing instead of\nresolve.
    • \n
    • unicode_urlencode is renamed to url_quote.
    • \n
    \n
  • \n
  • \n

    Add support for native types in macros. :issue:1510

    \n
  • \n
  • \n

    The {% trans %} tag can use pgettext and npgettext by\npassing a context string as the first token in the tag, like\n{% trans "title" %}. :issue:1430

    \n
  • \n
  • \n

    Update valid identifier characters from Python 3.6 to 3.7.\n:pr:1571

    \n
  • \n
  • \n

    Filters and tests decorated with @async_variant are pickleable.\n:pr:1612

    \n
  • \n
  • \n

    Add items filter. :issue:1561

    \n
  • \n
  • \n

    Subscriptions ([0], etc.) can be used after filters, tests, and\ncalls when the environment is in async mode. :issue:1573

    \n
  • \n
  • \n

    The groupby filter is case-insensitive by default, matching\nother comparison filters. Added the case_sensitive parameter to\ncontrol this. :issue:1463

    \n
  • \n
  • \n

    Windows drive-relative path segments in template names will not\nresult in FileSystemLoader and PackageLoader loading from\ndrive-relative paths. :pr:1621

    \n
  • \n
\n

Version 3.0.3

\n

Released 2021-11-09

\n
    \n
  • Fix traceback rewriting internals for Python 3.10 and 3.11.\n:issue:1535
  • \n
  • Fix how the native environment treats leading and trailing spaces\nwhen parsing values on Python 3.10. :pr:1537
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 84c0e2c Merge pull request #1625 from pallets/release-3.1.0
  • \n
  • 7b0c47f release version 3.1.0
  • \n
  • ede0f98 Merge pull request #1621 from pallets/template-safe-path
  • \n
  • 040088a use posixpath.join when loading template names
  • \n
  • a292075 Merge pull request #1620 from janfilips/patch-1
  • \n
  • 6e4df02 Fix formatting in tricks.rst
  • \n
  • 3a050b1 Merge pull request #1617 from pallets/docs-prose
  • \n
  • 4b63cd8 rewrite include statement section
  • \n
  • a98d482 clean up faq, move technical discussions
  • \n
  • 9de99f8 clean up engine comparisons
  • \n
  • Additional commits viewable in compare view
  • \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": 608323028, "node_id": "MDExOlB1bGxSZXF1ZXN0NjA4MzIzMDI4", "number": 1290, "state": "closed", "locked": 0, "title": "Use pytest-xdist to speed up tests", "user": {"value": 9599, "label": "simonw"}, "body": "Closes #1289, refs #1212.", "created_at": "2021-04-03T03:34:36Z", "updated_at": "2021-04-03T03:42:29Z", "closed_at": "2021-04-03T03:42:28Z", "merged_at": "2021-04-03T03:42:28Z", "merge_commit_sha": "0a7621f96f8ad14da17e7172e8a7bce24ef78966", "assignee": null, "milestone": null, "draft": 0, "head": "2fb1e4284f1f0f6aaba7e889a6713c0f96e802e1", "base": "59ef4a20cba1533bc347378415f4ffcd025f32c8", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1290", "merged_by": null, "auto_merge": null} {"id": 179108961, "node_id": "MDExOlB1bGxSZXF1ZXN0MTc5MTA4OTYx", "number": 192, "state": "closed", "locked": 0, "title": "New ?_shape=objects/object/lists param for JSON API", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #122", "created_at": "2018-04-03T14:02:58Z", "updated_at": "2018-04-03T14:53:00Z", "closed_at": "2018-04-03T14:52:55Z", "merged_at": "2018-04-03T14:52:55Z", "merge_commit_sha": "0abd3abacb309a2bd5913a7a2df4e9256585b1bb", "assignee": null, "milestone": null, "draft": 0, "head": "a759e09e8599e2cf54f6c5ab4d1cf8adf8608793", "base": "dd0566ff8eda7fa2f0d92e51809581fae62cffed", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/192", "merged_by": null, "auto_merge": null} {"id": 560831638, "node_id": "MDExOlB1bGxSZXF1ZXN0NTYwODMxNjM4", "number": 1206, "state": "closed", "locked": 0, "title": "Release 0.54", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1201", "created_at": "2021-01-25T06:45:47Z", "updated_at": "2021-01-25T17:33:30Z", "closed_at": "2021-01-25T17:33:29Z", "merged_at": "2021-01-25T17:33:29Z", "merge_commit_sha": "0b9ac1b2e9c855f1b823a06a898891da87c720ef", "assignee": null, "milestone": null, "draft": 0, "head": "571476d2cf8f7d7eac6098de8557264e69cac43f", "base": "a5ede3cdd455e2bb1a1fb2f4e1b5a9855caf5179", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1206", "merged_by": null, "auto_merge": null} {"id": 189860052, "node_id": "MDExOlB1bGxSZXF1ZXN0MTg5ODYwMDUy", "number": 281, "state": "closed", "locked": 0, "title": "Reduces image size using Alpine + Multistage (re: #278)", "user": {"value": 487897, "label": "iMerica"}, "body": "Hey Simon! \r\n\r\nI got the image size down from 256MB to 110MB. \r\n\r\nSeems to be working okay, but you might want to test it a bit more.\r\n\r\nExample output of `docker run --rm -it datasette`\r\n```\r\nServe! files=() on port 8001\r\n[2018-05-23 05:23:08 +0000] [1] [INFO] Goin' Fast @ http://127.0.0.1:8001\r\n[2018-05-23 05:23:08 +0000] [1] [INFO] Starting worker [1]\r\n```\r\n\r\nRelated: https://github.com/simonw/datasette/issues/278\r\n", "created_at": "2018-05-23T05:27:05Z", "updated_at": "2018-05-26T02:10:38Z", "closed_at": "2018-05-26T02:10:38Z", "merged_at": null, "merge_commit_sha": "0d6c8fa841ae5d28e151e4ba43370289d1e2e22c", "assignee": null, "milestone": null, "draft": 0, "head": "3af65075c430d94647f8a1b1f215e82f563bc46f", "base": "49f317752cfe89c5641165a490eef49e025752a7", "author_association": "NONE", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/281", "merged_by": null, "auto_merge": null} {"id": 375180832, "node_id": "MDExOlB1bGxSZXF1ZXN0Mzc1MTgwODMy", "number": 672, "state": "open", "locked": 0, "title": "--dirs option for scanning directories for SQLite databases", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #417.", "created_at": "2020-02-14T02:25:52Z", "updated_at": "2020-03-27T01:03:53Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "0e0e544f1f23451f04d7ca576ace5b18ce168e6f", "assignee": null, "milestone": null, "draft": 0, "head": "ee718b98b793df2a15b125cbf20816c9864bf7e9", "base": "6aa516d82dea9885cb4db8d56ec2ccfd4cd9b840", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/672", "merged_by": null, "auto_merge": null} {"id": 1220379312, "node_id": "PR_kwDOBm6k_c5IvYKw", "number": 2008, "state": "open", "locked": 0, "title": "array facet: don't materialize unnecessary columns", "user": {"value": 193185, "label": "cldellow"}, "body": "The presence of `inner.*` causes SQLite to materialize a row with all the columns. Those columns will be discarded later.\r\n\r\nInstead, we can select only the column we'll use. This lets SQLite's optimizer realize that the other columns in the CTE definition aren't needed.\r\n\r\nOn a test table with 278K rows, 98K of which had an array, this speeds up the facet calculation from 4 sec to 1 sec.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2008.org.readthedocs.build/en/2008/\n\r\n", "created_at": "2023-01-28T19:33:40Z", "updated_at": "2023-01-29T18:17:40Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "0eda5a57ead9bda8be4c9e5cd2fdb9f22e69222e", "assignee": null, "milestone": null, "draft": 0, "head": "f529a3001d35a114d2e622dcc7913c4c25a95ed8", "base": "0b4a28691468b5c758df74fa1d72a823813c96bf", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2008", "merged_by": null, "auto_merge": null} {"id": 621117978, "node_id": "MDExOlB1bGxSZXF1ZXN0NjIxMTE3OTc4", "number": 1306, "state": "closed", "locked": 0, "title": "Avoid error sorting by relationships if related tables are not allowed", "user": {"value": 416374, "label": "gfrmin"}, "body": "Refs #1305", "created_at": "2021-04-22T13:53:17Z", "updated_at": "2021-06-02T04:27:00Z", "closed_at": "2021-06-02T04:25:28Z", "merged_at": "2021-06-02T04:25:28Z", "merge_commit_sha": "0f41db1ba8a8a49a4adc1046a25ccf32790e863f", "assignee": null, "milestone": null, "draft": 0, "head": "115332ce76c0e867d9936406aaf4bcee6b1ef3cb", "base": "6ed9238178a56da5fb019f37fb1e1e15886be1d1", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1306", "merged_by": null, "auto_merge": null} {"id": 1504915653, "node_id": "PR_kwDOBm6k_c5ZszDF", "number": 2174, "state": "open", "locked": 0, "title": "Use $DATASETTE_INTERNAL in absence of --internal", "user": {"value": 15178711, "label": "asg017"}, "body": "#refs 2157, specifically [this comment](https://github.com/simonw/datasette/issues/2157#issuecomment-1700291967)\r\n\r\nPassing in `--internal my_internal.db` over and over again can get repetitive. \r\n\r\nThis PR adds a new configurable env variable `DATASETTE_INTERNAL_DB_PATH`. If it's defined, then it takes place as the path to the internal database. Users can still overwrite this behavior by passing in their own `--internal internal.db` flag.\r\n\r\nIn draft mode for now, needs tests and documentation. \r\n\r\nSide note: Maybe we can have a sections in the docs that lists all the \"configuration environment variables\" that Datasette respects? I did a quick grep and found:\r\n\r\n- `DATASETTE_LOAD_PLUGINS`\r\n- `DATASETTE_SECRETS`\r\n\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2174.org.readthedocs.build/en/2174/\n\r\n", "created_at": "2023-09-06T16:07:15Z", "updated_at": "2023-09-08T00:46:13Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "0fc2896ffc5b49adba967a3d0ab8ac9ca119ba0e", "assignee": null, "milestone": null, "draft": 0, "head": "d75b51950f6836d6e5a58accb48b1d7687dbdd1c", "base": "05707aa16b5c6c39fbe48b3176b85a8ffe493938", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2174", "merged_by": null, "auto_merge": null} {"id": 727436404, "node_id": "MDExOlB1bGxSZXF1ZXN0NzI3NDM2NDA0", "number": 1458, "state": "closed", "locked": 0, "title": "Rework the `--static` documentation a bit", "user": {"value": 51016, "label": "ctb"}, "body": "Per https://github.com/simonw/datasette/issues/1457, I was confused by the current docs and took a few minutes to sort out what the right combination of locations was.\r\n\r\nThis is a PR that differentiates the docs to split out `/static/` in URL from `--static` option and `./static/` path.\r\n\r\nNot wedded to the details in any way, happy to change to suit.\r\n\r\nFixes #1457.", "created_at": "2021-09-05T17:08:48Z", "updated_at": "2021-10-15T13:24:29Z", "closed_at": "2021-10-14T18:39:55Z", "merged_at": "2021-10-14T18:39:55Z", "merge_commit_sha": "0fdbf004843850f200e077a3c87427fe16c18b85", "assignee": null, "milestone": null, "draft": 0, "head": "e00c3a274d073c09707f4b6edd2ed652efe03918", "base": "d57ab156b35ec642549fb69d08279850065027d2", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1458", "merged_by": null, "auto_merge": null} {"id": 407929128, "node_id": "MDExOlB1bGxSZXF1ZXN0NDA3OTI5MTI4", "number": 734, "state": "closed", "locked": 0, "title": "Update janus requirement from ~=0.4.0 to >=0.4,<0.6", "user": {"value": 27856297, "label": "dependabot-preview[bot]"}, "body": "Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version.\n
\nChangelog\n

Sourced from janus's changelog.

\n
\n

0.5.0 (2020-04-23)

\n
    \n
  • Remove explicit loop arguments and forbid creating queues outside event loops #246
  • \n
\n

0.4.0 (2018-07-28)

\n
    \n
  • Add py.typed macro #89
  • \n
  • Drop python 3.4 support and fix minimal version python3.5.3 #88
  • \n
  • Add property with that indicates if queue is closed #86
  • \n
\n

0.3.2 (2018-07-06)

\n
    \n
  • Fixed python 3.7 support #97
  • \n
\n

0.3.1 (2018-01-30)

\n
    \n
  • Fixed bug with join() in case tasks are added by sync_q.put() #75
  • \n
\n

0.3.0 (2017-02-21)

\n
    \n
  • Expose unfinished_tasks property #34
  • \n
\n

0.2.4 (2016-12-05)

\n
    \n
  • Restore tarball deploying
  • \n
\n

0.2.3 (2016-07-12)

\n
    \n
  • Fix exception type
  • \n
\n

0.2.2 (2016-07-11)

\n
    \n
  • Update asyncio.async() to use asyncio.ensure_future() #6
  • \n
\n

0.2.1 (2016-03-24)

\n
    \n
  • Fix python setup.py test command #4
  • \n
\n

0.2.0 (2015-09-20)

\n ... (truncated)\n
\n
\n
\nCommits\n
    \n
  • 8e89b45 Bump to 0.5.0
  • \n
  • ec8592b Fix up Python 3.8 loop argument warnings (#246)
  • \n
  • 2543af6 Bump coverage from 5.0.4 to 5.1
  • \n
  • 03d1b36 Bump tox from 3.14.5 to 3.14.6
  • \n
  • 8219c38 Bump coverage from 5.0.3 to 5.0.4
  • \n
  • 85ec71d Bump pytest from 5.4.0 to 5.4.1
  • \n
  • 3b974c9 Bump pytest from 5.3.5 to 5.4.0
  • \n
  • 282dc12 Bump mypy from 0.761 to 0.770
  • \n
  • 1364fb3 Bump tox from 3.14.4 to 3.14.5
  • \n
  • dc519bb Bump tox from 3.14.3 to 3.14.4
  • \n
  • Additional commits viewable in compare view
  • \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- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language\n- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language\n- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language\n- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language\n- `@dependabot badge me` will comment on this PR with code to add a \"Dependabot enabled\" badge to your readme\n\nAdditionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):\n- Update frequency (including time of day and day of week)\n- Pull request limits (per update run and/or open at any time)\n- Out-of-range updates (receive only lockfile updates, if desired)\n- Security updates (receive only security updates, if desired)\n\n\n\n
", "created_at": "2020-04-23T13:43:45Z", "updated_at": "2020-05-04T16:48:14Z", "closed_at": "2020-05-04T16:48:04Z", "merged_at": "2020-05-04T16:48:04Z", "merge_commit_sha": "109c5a430d53fe38b1300e0daa20f5cef047a08e", "assignee": null, "milestone": null, "draft": 0, "head": "281b2c1acf1a2ef39c784dc73f1eb184d898d369", "base": "e232f77055880b38cc0b738607cd50cde9188eaf", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/734", "merged_by": null, "auto_merge": null} {"id": 624635440, "node_id": "MDExOlB1bGxSZXF1ZXN0NjI0NjM1NDQw", "number": 1309, "state": "closed", "locked": 0, "title": "Bump black from 20.8b1 to 21.4b0", "user": {"value": 27856297, "label": "dependabot-preview[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 20.8b1 to 21.4b0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

21.4b0

\n

Black

\n
    \n
  • \n

    Fixed a rare but annoying formatting instability created by the combination of\noptional trailing commas inserted by Black and optional parentheses looking at\npre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many\nduplicates. (#2126)

    \n
  • \n
  • \n

    Black now processes one-line docstrings by stripping leading and trailing spaces,\nand adding a padding space when needed to break up """". (#1740)

    \n
  • \n
  • \n

    Black now cleans up leading non-breaking spaces in comments (#2092)

    \n
  • \n
  • \n

    Black now respects --skip-string-normalization when normalizing multiline\ndocstring quotes (#1637)

    \n
  • \n
  • \n

    Black no longer removes all empty lines between non-function code and decorators\nwhen formatting typing stubs. Now Black enforces a single empty line. (#1646)

    \n
  • \n
  • \n

    Black no longer adds an incorrect space after a parenthesized assignment expression\nin if/while statements (#1655)

    \n
  • \n
  • \n

    Added --skip-magic-trailing-comma / -C to avoid using trailing commas as a reason\nto split lines (#1824)

    \n
  • \n
  • \n

    fixed a crash when PWD=/ on POSIX (#1631)

    \n
  • \n
  • \n

    fixed "I/O operation on closed file" when using --diff (#1664)

    \n
  • \n
  • \n

    Prevent coloured diff output being interleaved with multiple files (#1673)

    \n
  • \n
  • \n

    Added support for PEP 614 relaxed decorator syntax on python 3.9 (#1711)

    \n
  • \n
  • \n

    Added parsing support for unparenthesized tuples and yield expressions in annotated\nassignments (#1835)

    \n
  • \n
  • \n

    use lowercase hex strings (#1692)

    \n
  • \n
  • \n

    added --extend-exclude argument (PR #2005)

    \n
  • \n
  • \n

    speed up caching by avoiding pathlib (#1950)

    \n
  • \n
  • \n

    --diff correctly indicates when a file doesn't end in a newline (#1662)

    \n
  • \n
  • \n

    Added --stdin-filename argument to allow stdin to respect --force-exclude rules\n(#1780)

    \n
  • \n
  • \n

    Lines ending with fmt: skip will now be not formatted (#1800)

    \n
  • \n
  • \n

    PR #2053: Black no longer relies on typed-ast for Python 3.8 and higher

    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

21.4b0

\n

Black

\n
    \n
  • \n

    Fixed a rare but annoying formatting instability created by the combination of\noptional trailing commas inserted by Black and optional parentheses looking at\npre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many\nduplicates. (#2126)

    \n
  • \n
  • \n

    Black now processes one-line docstrings by stripping leading and trailing spaces,\nand adding a padding space when needed to break up """". (#1740)

    \n
  • \n
  • \n

    Black now cleans up leading non-breaking spaces in comments (#2092)

    \n
  • \n
  • \n

    Black now respects --skip-string-normalization when normalizing multiline\ndocstring quotes (#1637)

    \n
  • \n
  • \n

    Black no longer removes all empty lines between non-function code and decorators\nwhen formatting typing stubs. Now Black enforces a single empty line. (#1646)

    \n
  • \n
  • \n

    Black no longer adds an incorrect space after a parenthesized assignment expression\nin if/while statements (#1655)

    \n
  • \n
  • \n

    Added --skip-magic-trailing-comma / -C to avoid using trailing commas as a reason\nto split lines (#1824)

    \n
  • \n
  • \n

    fixed a crash when PWD=/ on POSIX (#1631)

    \n
  • \n
  • \n

    fixed "I/O operation on closed file" when using --diff (#1664)

    \n
  • \n
  • \n

    Prevent coloured diff output being interleaved with multiple files (#1673)

    \n
  • \n
  • \n

    Added support for PEP 614 relaxed decorator syntax on python 3.9 (#1711)

    \n
  • \n
  • \n

    Added parsing support for unparenthesized tuples and yield expressions in annotated\nassignments (#1835)

    \n
  • \n
  • \n

    added --extend-exclude argument (PR #2005)

    \n
  • \n
  • \n

    speed up caching by avoiding pathlib (#1950)

    \n
  • \n
  • \n

    --diff correctly indicates when a file doesn't end in a newline (#1662)

    \n
  • \n
  • \n

    Added --stdin-filename argument to allow stdin to respect --force-exclude rules\n(#1780)

    \n
  • \n
  • \n

    Lines ending with fmt: skip will now be not formatted (#1800)

    \n
  • \n
  • \n

    PR #2053: Black no longer relies on typed-ast for Python 3.8 and higher

    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=20.8b1&new-version=21.4b0)](https://dependabot.com/compatibility-score/?dependency-name=black&package-manager=pip&previous-version=20.8b1&new-version=21.4b0)\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- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language\n- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language\n- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language\n- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language\n- `@dependabot badge me` will comment on this PR with code to add a \"Dependabot enabled\" badge to your readme\n\nAdditionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):\n- Update frequency (including time of day and day of week)\n- Pull request limits (per update run and/or open at any time)\n- Out-of-range updates (receive only lockfile updates, if desired)\n- Security updates (receive only security updates, if desired)\n\n\n\n
", "created_at": "2021-04-27T20:28:11Z", "updated_at": "2021-04-28T18:26:06Z", "closed_at": "2021-04-28T18:26:04Z", "merged_at": null, "merge_commit_sha": "1220c60d8a6bb8e621543ef78d669a2bccc2a3c8", "assignee": null, "milestone": null, "draft": 0, "head": "20fc3fe2797b81a23cd464c1450d13086d53ea7f", "base": "a4bb2abce0764d49d255e5379f9e9c70981834ca", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1309", "merged_by": null, "auto_merge": null} {"id": 505453900, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA1NDUzOTAw", "number": 1030, "state": "open", "locked": 0, "title": "Make `package` command deal with a configuration directory argument", "user": {"value": 299380, "label": "frankier"}, "body": "Currently if we run `datasette package` on a configuration directory we'll get an exception when we try to hard link to the directory. This PR copies the tree and makes the Dockerfile run inspect on all *.db files.", "created_at": "2020-10-18T11:07:02Z", "updated_at": "2020-10-19T08:01:51Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "124142e4d2710525b09ff2bd2a7a787cbed163a4", "assignee": null, "milestone": null, "draft": 0, "head": "e0825334692967fec195e104cb6aa11095807a8e", "base": "c37a0a93ecb847e66cfe7b6f9452ba210fcae91b", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1030", "merged_by": null, "auto_merge": null} {"id": 327169748, "node_id": "MDExOlB1bGxSZXF1ZXN0MzI3MTY5NzQ4", "number": 589, "state": "closed", "locked": 0, "title": "Display metadata footer on custom SQL queries", "user": {"value": 2657547, "label": "rixx"}, "body": "Closes #408", "created_at": "2019-10-11T12:10:28Z", "updated_at": "2019-10-14T08:58:23Z", "closed_at": "2019-10-14T03:53:22Z", "merged_at": "2019-10-14T03:53:22Z", "merge_commit_sha": "12cec411cae73ba7211429da12cd32c551fe17b1", "assignee": null, "milestone": null, "draft": 0, "head": "5627fe8d58e791e004b89b5614007d5e64a5c8e2", "base": "fffd69ec031b83f46680f192ba57a27f0d1f0b8a", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/589", "merged_by": null, "auto_merge": null} {"id": 181247568, "node_id": "MDExOlB1bGxSZXF1ZXN0MTgxMjQ3NTY4", "number": 202, "state": "closed", "locked": 0, "title": "Raise 404 on nonexistent table URLs", "user": {"value": 45057, "label": "russss"}, "body": "Currently they just 500. Also cleaned the logic up a bit, I hope I didn't miss anything.\r\n\r\nThis is issue #184.", "created_at": "2018-04-12T15:47:06Z", "updated_at": "2018-04-13T19:22:56Z", "closed_at": "2018-04-13T18:19:15Z", "merged_at": null, "merge_commit_sha": "134150933ade84327cfd97a88d536f5bff37a136", "assignee": null, "milestone": null, "draft": 0, "head": "71bbf4e4be8a9ab7bcc4ddfb33760c7d902f4a34", "base": "bfb4e45a7bcb880758dbc18f66258de26c1d1904", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/202", "merged_by": null, "auto_merge": null} {"id": 181723303, "node_id": "MDExOlB1bGxSZXF1ZXN0MTgxNzIzMzAz", "number": 209, "state": "closed", "locked": 0, "title": " Don't duplicate simple primary keys in the link column", "user": {"value": 45057, "label": "russss"}, "body": "When there's a simple (single-column) primary key, it looks weird to duplicate it in the link column.\r\n\r\nThis change removes the second PK column and treats the link column as if it were the PK column from a header/sorting perspective. \r\n\r\nThis might make it a bit more difficult to tell what the link for the row is, I'm not sure yet. I feel like the alternative is to change the link column to just have the text \"view\" or something, instead of repeating the PK. (I doubt it makes much more sense with compound PKs.)\r\n\r\nBonus change in this PR: fix urlencoding of links in the displayed HTML.\r\n\r\nBefore:\r\n![image](https://user-images.githubusercontent.com/45057/38783830-e2ababb4-40ff-11e8-97fb-25e286a8c920.png)\r\n\r\nAfter:\r\n![image](https://user-images.githubusercontent.com/45057/38783835-ebf6b48e-40ff-11e8-8c47-6a864cf21ccc.png)", "created_at": "2018-04-15T21:56:15Z", "updated_at": "2018-04-18T08:40:37Z", "closed_at": "2018-04-18T01:13:04Z", "merged_at": "2018-04-18T01:13:04Z", "merge_commit_sha": "136a70d88741e2a5892c3de437064a9d14494d66", "assignee": null, "milestone": null, "draft": 0, "head": "4acde4e187795214af6fc86f46af48982ec5de46", "base": "bf5ec2d61148f9852441934dd206b3b1c07a512f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/209", "merged_by": null, "auto_merge": null} {"id": 1451100029, "node_id": "PR_kwDOBm6k_c5Wfgd9", "number": 2118, "state": "closed", "locked": 0, "title": "New JSON design for query views", "user": {"value": 9599, "label": "simonw"}, "body": "WIP. Refs:\r\n- #2109 \r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2118.org.readthedocs.build/en/2118/\n\r\n", "created_at": "2023-07-26T23:29:21Z", "updated_at": "2023-08-08T01:47:40Z", "closed_at": "2023-08-08T01:47:39Z", "merged_at": "2023-08-08T01:47:39Z", "merge_commit_sha": "1377a290cd85ba8d3338b1da47c4665ed4c6c625", "assignee": null, "milestone": {"value": 9700784, "label": "Datasette 1.0a3"}, "draft": 0, "head": "8b1dea3c0994d5875e372965eb5ca388ea08fe6a", "base": "08181823990a71ffa5a1b57b37259198eaa43e06", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2118", "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
  • e4aceee Merge pull request #2224 from pallets/release-8.1.0
  • \n
  • f8d811e release version 8.1.0
  • \n
  • 20c88f0 Merge pull request #2223 from pallets/env-var
  • \n
  • 8d7f03d treat empty auto_envvar as None
  • \n
  • ef11be6 Merge pull request #2041 from spanglerco/shell-completion-option-values
  • \n
  • f2e579a shell completion prioritizes option values over new options
  • \n
  • d251cb0 Merge pull request #2219 from pallets/paramtype-name
  • \n
  • e003331 fix ParamType.to_info_dict() with no name
  • \n
  • 19be092 Merge pull request #2217 from pallets/group-return
  • \n
  • 7d3a871 group without command passes return value to result callback
  • \n
  • Additional commits viewable in compare view
  • \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": 730020867, "node_id": "MDExOlB1bGxSZXF1ZXN0NzMwMDIwODY3", "number": 1467, "state": "closed", "locked": 0, "title": "Add Authorization header when CORS flag is set", "user": {"value": 3058200, "label": "jameslittle230"}, "body": "This PR adds the [`Access-Control-Allow-Headers`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers) flag when CORS mode is enabled.\r\n\r\nThis would fix https://github.com/simonw/datasette-auth-tokens/issues/4. When making cross-origin requests, the server must respond with all allowable HTTP headers. A Datasette instance using auth tokens must accept the `Authorization` HTTP header in order for cross-origin authenticated requests to take place.\r\n\r\nPlease let me know if there's a better way of doing this! I couldn't figure out a way to change the app's response from the plugin itself, so I'm starting here. If you'd rather this logic live in the plugin, I'd love any guidance you're able to give.", "created_at": "2021-09-08T22:14:41Z", "updated_at": "2021-10-17T02:29:07Z", "closed_at": "2021-10-14T18:54:18Z", "merged_at": null, "merge_commit_sha": "15f258735ddee555028a075c09e1e8f74069be70", "assignee": null, "milestone": null, "draft": 0, "head": "05109e8d61dedd477c4cedfb89b1da65610f70d1", "base": "d57ab156b35ec642549fb69d08279850065027d2", "author_association": "NONE", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1467", "merged_by": null, "auto_merge": null} {"id": 1289476973, "node_id": "PR_kwDOBm6k_c5M29tt", "number": 2044, "state": "open", "locked": 0, "title": "Expand labels in row view as well (patch for 0.64.x branch)", "user": {"value": 82332573, "label": "tmcl-it"}, "body": "This is a version of #2031 for the 0.64.x branch.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2044.org.readthedocs.build/en/2044/\n\r\n", "created_at": "2023-03-24T18:44:44Z", "updated_at": "2023-03-24T18:44:57Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "175202f5238c23fc6b76a0119d3ce9917d1570d1", "assignee": null, "milestone": null, "draft": 0, "head": "c039d23a730448a7d82f9239cfb445aa1f7a4f16", "base": "2a0a94fe972e4b1556e73026dc381d297bc906bc", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2044", "merged_by": null, "auto_merge": null} {"id": 529887861, "node_id": "MDExOlB1bGxSZXF1ZXN0NTI5ODg3ODYx", "number": 1120, "state": "closed", "locked": 0, "title": "generated_columns table in fixtures.py", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1119", "created_at": "2020-12-01T00:17:19Z", "updated_at": "2020-12-01T00:28:03Z", "closed_at": "2020-12-01T00:28:02Z", "merged_at": "2020-12-01T00:28:02Z", "merge_commit_sha": "17cbbb1f7f230b39650afac62dd16476626001b5", "assignee": null, "milestone": null, "draft": 0, "head": "ddad8db2cc952eaf4f66f42324ccece115627b02", "base": "461670a0b87efa953141b449a9a261919864ceb3", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1120", "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": 1485078422, "node_id": "PR_kwDOBm6k_c5YhH-W", "number": 2149, "state": "closed", "locked": 0, "title": "Start a new `datasette.yaml` configuration file, with settings support", "user": {"value": 15178711, "label": "asg017"}, "body": "refs #2093 #2143 \r\n\r\nThis is the first step to implementing the new `datasette.yaml`/`datasette.json` configuration file. \r\n\r\n- The old `--config` argument is now back, and is the path to a `datasette.yaml` file. Acts like the `--metadata` flag.\r\n- The old `settings.json` behavior has been removed.\r\n- The `\"settings\"` key inside `datasette.yaml` defines the same `--settings` flags\r\n- Values passed in `--settings` will over-write values in `datasette.yaml`\r\n\r\nDocs for the Config file is pretty light, not much to add until we add more config to the file.\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2149.org.readthedocs.build/en/2149/\n\r\n", "created_at": "2023-08-22T16:24:16Z", "updated_at": "2023-08-23T01:26:11Z", "closed_at": "2023-08-23T01:26:11Z", "merged_at": "2023-08-23T01:26:11Z", "merge_commit_sha": "17ec309e14f9c2e90035ba33f2f38ecc5afba2fa", "assignee": null, "milestone": null, "draft": 0, "head": "db720cd603def51f1d0f074a16d186779a962ea7", "base": "943df09dcca93c3b9861b8c96277a01320db8662", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2149", "merged_by": null, "auto_merge": null} {"id": 512736705, "node_id": "MDExOlB1bGxSZXF1ZXN0NTEyNzM2NzA1", "number": 1065, "state": "closed", "locked": 0, "title": "Nav menu plus menu_links() hook", "user": {"value": 9599, "label": "simonw"}, "body": "Closes #1064, refs #690.", "created_at": "2020-10-30T03:40:18Z", "updated_at": "2020-10-30T03:45:17Z", "closed_at": "2020-10-30T03:45:16Z", "merged_at": "2020-10-30T03:45:16Z", "merge_commit_sha": "18a64fbb29271ce607937110bbdb55488c43f4e0", "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "draft": 0, "head": "5f118b56afbeff5348acd50a8b87537210e731ee", "base": "1a861be19e326e0c88230a711a1b6536366697d7", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1065", "merged_by": null, "auto_merge": null} {"id": 250628275, "node_id": "MDExOlB1bGxSZXF1ZXN0MjUwNjI4Mjc1", "number": 407, "state": "closed", "locked": 0, "title": "Heroku --include-vcs-ignore", "user": {"value": 9599, "label": "simonw"}, "body": "Should mean `datasette publish heroku` can work under Travis, unlike this failure:\r\n\r\nhttps://travis-ci.org/simonw/fivethirtyeight-datasette/builds/488047550\r\n\r\n```\r\n2.25s$ datasette publish heroku fivethirtyeight.db -m metadata.json -n fivethirtyeight-datasette\r\ntar: unrecognized option '--exclude-vcs-ignores'\r\nTry 'tar --help' or 'tar --usage' for more information.\r\n \u25b8 Command failed: tar cz -C /tmp/tmpuaxm7i8f --exclude-vcs-ignores --exclude\r\n \u25b8 .git --exclude .gitmodules . >\r\n \u25b8 /tmp/f49440e0-1bf3-4d3f-9eb0-fbc2967d1fd4.tar.gz\r\n \u25b8 tar: unrecognized option '--exclude-vcs-ignores'\r\n \u25b8 Try 'tar --help' or 'tar --usage' for more information.\r\n \u25b8 \r\nThe command \"datasette publish heroku fivethirtyeight.db -m metadata.json -n fivethirtyeight-datasette\" exited with 0.\r\n```\r\n\r\nThe fix for that issue is to call the heroku command like this:\r\n\r\n heroku builds:create -a app_name --include-vcs-ignore\r\n\r\n", "created_at": "2019-02-06T04:06:20Z", "updated_at": "2019-02-06T04:31:30Z", "closed_at": "2019-02-06T04:15:47Z", "merged_at": "2019-02-06T04:15:46Z", "merge_commit_sha": "195a5b36349d0d24a6bbb758cebb719b6de303b6", "assignee": null, "milestone": null, "draft": 0, "head": "01978ddb9682c828cafddaf9ca625e08ba3ba3a4", "base": "436b8bc1d17c2ab415800ab209204f94e7f7929e", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/407", "merged_by": null, "auto_merge": null} {"id": 285698310, "node_id": "MDExOlB1bGxSZXF1ZXN0Mjg1Njk4MzEw", "number": 501, "state": "closed", "locked": 0, "title": "Test against Python 3.8-dev using Travis", "user": {"value": 9599, "label": "simonw"}, "body": "", "created_at": "2019-06-06T08:37:53Z", "updated_at": "2019-11-11T03:23:29Z", "closed_at": "2019-11-11T03:23:29Z", "merged_at": null, "merge_commit_sha": "1aac0cf0ab962060dd5cff19b8b179bb7fa0f00b", "assignee": null, "milestone": null, "draft": 0, "head": "a5defb684fcc734f6325ca08beef9f49c3e7a298", "base": "5e8fbf7f6fbc0b63d0479da3806dd9ccd6aaa945", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/501", "merged_by": null, "auto_merge": null} {"id": 837498489, "node_id": "PR_kwDOBm6k_c4x6zZ5", "number": 1617, "state": "closed", "locked": 0, "title": "Ensure template_path always uses \"/\" to match jinja", "user": {"value": 3526913, "label": "cb160"}, "body": "This PR shoudl fix #1545 \r\n\r\nThe existing code substituted / for \\, assuming this was the right behaviour for windows. But on Windows, Jinja still uses / for the template list - See https://github.com/pallets/jinja/blob/896a62135bcc151f2997e028c5125bec2cb2431f/src/jinja2/loaders.py#L225", "created_at": "2022-02-01T17:20:30Z", "updated_at": "2022-02-03T01:58:35Z", "closed_at": "2022-02-03T01:58:35Z", "merged_at": "2022-02-03T01:58:35Z", "merge_commit_sha": "1af1041f91a9b91b321078d354132d1df5204660", "assignee": null, "milestone": null, "draft": 0, "head": "af293c960e67b14ebd8ec7517b698803606fae96", "base": "2aa686c6554bf6b8230eb5b3019574df6cc99225", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1617", "merged_by": null, "auto_merge": null} {"id": 153432045, "node_id": "MDExOlB1bGxSZXF1ZXN0MTUzNDMyMDQ1", "number": 118, "state": "closed", "locked": 0, "title": "Foreign key information on row and table pages", "user": {"value": 9599, "label": "simonw"}, "body": "", "created_at": "2017-11-18T03:13:27Z", "updated_at": "2017-11-18T03:15:57Z", "closed_at": "2017-11-18T03:15:50Z", "merged_at": "2017-11-18T03:15:50Z", "merge_commit_sha": "1b04662585ea1539014bfbd616a8112b650d5699", "assignee": null, "milestone": null, "draft": 0, "head": "2fa60bc5e3c9d75c19e21a2384f52b58e1872fa8", "base": "6d39429daa4655e3cf7a6a7671493292a20a30a1", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/118", "merged_by": null, "auto_merge": null} {"id": 626130135, "node_id": "MDExOlB1bGxSZXF1ZXN0NjI2MTMwMTM1", "number": 1313, "state": "closed", "locked": 0, "title": "Bump black from 20.8b1 to 21.4b2", "user": {"value": 27856297, "label": "dependabot-preview[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 20.8b1 to 21.4b2.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

21.4b2

\n

Black

\n
    \n
  • \n

    Fix crash if the user configuration directory is inaccessible. (#2158)

    \n
  • \n
  • \n

    Clarify\ncircumstances\nin which Black may change the AST (#2159)

    \n
  • \n
\n

Packaging

\n
    \n
  • Install primer.json (used by black-primer by default) with black. (#2154)
  • \n
\n

21.4b1

\n

Black

\n
    \n
  • \n

    Fix crash on docstrings ending with "\\ ". (#2142)

    \n
  • \n
  • \n

    Fix crash when atypical whitespace is cleaned out of dostrings (#2120)

    \n
  • \n
  • \n

    Reflect the --skip-magic-trailing-comma and --experimental-string-processing flags\nin the name of the cache file. Without this fix, changes in these flags would not take\neffect if the cache had already been populated. (#2131)

    \n
  • \n
  • \n

    Don't remove necessary parentheses from assignment expression containing assert /\nreturn statements. (#2143)

    \n
  • \n
\n

Packaging

\n
    \n
  • Bump pathspec to >= 0.8.1 to solve invalid .gitignore exclusion handling
  • \n
\n

21.4b0

\n

Black

\n
    \n
  • \n

    Fixed a rare but annoying formatting instability created by the combination of\noptional trailing commas inserted by Black and optional parentheses looking at\npre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many\nduplicates. (#2126)

    \n
  • \n
  • \n

    Black now processes one-line docstrings by stripping leading and trailing spaces,\nand adding a padding space when needed to break up """". (#1740)

    \n
  • \n
  • \n

    Black now cleans up leading non-breaking spaces in comments (#2092)

    \n
  • \n
  • \n

    Black now respects --skip-string-normalization when normalizing multiline\ndocstring quotes (#1637)

    \n
  • \n
  • \n

    Black no longer removes all empty lines between non-function code and decorators\nwhen formatting typing stubs. Now Black enforces a single empty line. (#1646)

    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

21.4b2

\n

Black

\n
    \n
  • \n

    Fix crash if the user configuration directory is inaccessible. (#2158)

    \n
  • \n
  • \n

    Clarify\ncircumstances\nin which Black may change the AST (#2159)

    \n
  • \n
\n

Packaging

\n
    \n
  • Install primer.json (used by black-primer by default) with black. (#2154)
  • \n
\n

21.4b1

\n

Black

\n
    \n
  • \n

    Fix crash on docstrings ending with "\\ ". (#2142)

    \n
  • \n
  • \n

    Fix crash when atypical whitespace is cleaned out of dostrings (#2120)

    \n
  • \n
  • \n

    Reflect the --skip-magic-trailing-comma and --experimental-string-processing flags\nin the name of the cache file. Without this fix, changes in these flags would not take\neffect if the cache had already been populated. (#2131)

    \n
  • \n
  • \n

    Don't remove necessary parentheses from assignment expression containing assert /\nreturn statements. (#2143)

    \n
  • \n
\n

Packaging

\n
    \n
  • Bump pathspec to >= 0.8.1 to solve invalid .gitignore exclusion handling
  • \n
\n

21.4b0

\n

Black

\n
    \n
  • \n

    Fixed a rare but annoying formatting instability created by the combination of\noptional trailing commas inserted by Black and optional parentheses looking at\npre-existing "magic" trailing commas. This fixes issue #1629 and all of its many many\nduplicates. (#2126)

    \n
  • \n
  • \n

    Black now processes one-line docstrings by stripping leading and trailing spaces,\nand adding a padding space when needed to break up """". (#1740)

    \n
  • \n
  • \n

    Black now cleans up leading non-breaking spaces in comments (#2092)

    \n
  • \n
  • \n

    Black now respects --skip-string-normalization when normalizing multiline\ndocstring quotes (#1637)

    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\n[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=20.8b1&new-version=21.4b2)](https://dependabot.com/compatibility-score/?dependency-name=black&package-manager=pip&previous-version=20.8b1&new-version=21.4b2)\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- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language\n- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language\n- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language\n- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language\n- `@dependabot badge me` will comment on this PR with code to add a \"Dependabot enabled\" badge to your readme\n\nAdditionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):\n- Update frequency (including time of day and day of week)\n- Pull request limits (per update run and/or open at any time)\n- Out-of-range updates (receive only lockfile updates, if desired)\n- Security updates (receive only security updates, if desired)\n\n\n\n
", "created_at": "2021-04-29T13:58:06Z", "updated_at": "2021-04-29T15:47:50Z", "closed_at": "2021-04-29T15:47:49Z", "merged_at": "2021-04-29T15:47:49Z", "merge_commit_sha": "1b697539f5b53cec3fe13c0f4ada13ba655c88c7", "assignee": null, "milestone": null, "draft": 0, "head": "3cd7ad429944d47147c5d408f546c429e0a0019a", "base": "a4bb2abce0764d49d255e5379f9e9c70981834ca", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1313", "merged_by": null, "auto_merge": null} {"id": 872324754, "node_id": "PR_kwDOBm6k_c4z_p6S", "number": 1648, "state": "closed", "locked": 0, "title": "Use dash encoding for table names and row primary keys in URLs", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1439.\r\n\r\n- [x] Build `dash_encode` / `dash_decode` functions\r\n- [x] Use dash encoding for row primary keys\r\n- [x] Use dash encoding for `?_next=` pagination tokens\r\n- [x] Use dash encoding for table names in URLs\r\n- [x] Use dash encoding for database name\r\n- ~~Implement redirects from previous `%` URLs that replace those with `-`~~ - separate issue: #1650", "created_at": "2022-03-05T19:50:45Z", "updated_at": "2022-03-07T15:38:30Z", "closed_at": "2022-03-07T15:38:30Z", "merged_at": "2022-03-07T15:38:29Z", "merge_commit_sha": "1baa030eca375f839f3471237547ab403523e643", "assignee": null, "milestone": null, "draft": 0, "head": "32548b88fdb413429d960966decba8f6b3889190", "base": "5010d1359b9e9db90a5a69a3ca22d12862893e00", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1648", "merged_by": null, "auto_merge": null} {"id": 439203808, "node_id": "MDExOlB1bGxSZXF1ZXN0NDM5MjAzODA4", "number": 866, "state": "closed", "locked": 0, "title": "Update pytest-asyncio requirement from <0.13,>=0.10 to >=0.10,<0.15", "user": {"value": 27856297, "label": "dependabot-preview[bot]"}, "body": "Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.\n
\nCommits\n
    \n
  • 53f3da7 Prepare for release
  • \n
  • e99569d A line is added to the changelog.
  • \n
  • 4099b63 One import is not needed
  • \n
  • 68513b3 Clarify names and comments, according to yanlend comments 26 May
  • \n
  • 907e8f2 FIX new test_cases on python 3.5 & 3.6
  • \n
  • 51d986c To solve test cases that fail:
  • \n
  • f97e900 1) Test case (test_async_fixtures_with_finalizer) refactoring to pass on pyth...
  • \n
  • c1131f8 1) A new test case that fails with 0.12.0, and pass with this commit.
  • \n
  • 7a255bc 0.13.0 open for business
  • \n
  • b8e2a45 0.12.0
  • \n
  • Additional commits viewable in compare view
  • \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- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language\n- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language\n- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language\n- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language\n- `@dependabot badge me` will comment on this PR with code to add a \"Dependabot enabled\" badge to your readme\n\nAdditionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):\n- Update frequency (including time of day and day of week)\n- Pull request limits (per update run and/or open at any time)\n- Out-of-range updates (receive only lockfile updates, if desired)\n- Security updates (receive only security updates, if desired)\n\n\n\n
", "created_at": "2020-06-24T13:21:47Z", "updated_at": "2020-06-24T18:50:57Z", "closed_at": "2020-06-24T18:50:56Z", "merged_at": "2020-06-24T18:50:56Z", "merge_commit_sha": "1bb33dab49fd25f77b9f8e7ab7ee23b3d64c123c", "assignee": null, "milestone": null, "draft": 0, "head": "fb64dda76dda7354a77cb50c5864aff67a6fef8d", "base": "1a5b7d318fa923edfcefd3df8f64dae2e9c49d3f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/866", "merged_by": null, "auto_merge": null} {"id": 216651317, "node_id": "MDExOlB1bGxSZXF1ZXN0MjE2NjUxMzE3", "number": 365, "state": "closed", "locked": 0, "title": "fix small doc typo", "user": {"value": 418191, "label": "jaywgraves"}, "body": "", "created_at": "2018-09-19T14:02:02Z", "updated_at": "2019-12-19T02:30:33Z", "closed_at": "2018-09-19T17:15:43Z", "merged_at": "2018-09-19T17:15:43Z", "merge_commit_sha": "1bcd54a834a2f9730d21095df855f6708c85c200", "assignee": null, "milestone": null, "draft": 0, "head": "d3fb6a80c5878c73befa2a35e11a9ce28a6e1ab6", "base": "b7257a21bf3dfa7353980f343c83a616da44daa7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/365", "merged_by": null, "auto_merge": null} {"id": 790665890, "node_id": "PR_kwDOBm6k_c4vIJqi", "number": 1537, "state": "closed", "locked": 0, "title": "Update aiofiles requirement from <0.8,>=0.4 to >=0.4,<0.9", "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
", "created_at": "2021-11-29T13:13:52Z", "updated_at": "2021-11-30T02:29:55Z", "closed_at": "2021-11-30T02:29:54Z", "merged_at": "2021-11-30T02:29:54Z", "merge_commit_sha": "1beb7d939999da79bb77c4d3c777657c8a16bcd9", "assignee": null, "milestone": null, "draft": 0, "head": "fcfaec1793ed4b1f5d0f9a43f392f598a41f4ad2", "base": "48f11998b73350057b74fe6ab464d4ac3071637c", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1537", "merged_by": null, "auto_merge": null} {"id": 339236647, "node_id": "MDExOlB1bGxSZXF1ZXN0MzM5MjM2NjQ3", "number": 623, "state": "closed", "locked": 0, "title": "Test against Python 3.8 in Travis", "user": {"value": 9599, "label": "simonw"}, "body": "Needed for #622", "created_at": "2019-11-11T03:24:54Z", "updated_at": "2019-11-11T03:45:35Z", "closed_at": "2019-11-11T03:45:35Z", "merged_at": "2019-11-11T03:45:35Z", "merge_commit_sha": "1c063fae9dba70f70244db010d55a18846640f07", "assignee": null, "milestone": null, "draft": 0, "head": "877dda2d287ed3b1772f051dffd295a69c3ecd27", "base": "28c4a6db5b5e512db630d7ba6127196185de67c7", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/623", "merged_by": null, "auto_merge": null} {"id": 181644805, "node_id": "MDExOlB1bGxSZXF1ZXN0MTgxNjQ0ODA1", "number": 206, "state": "closed", "locked": 0, "title": "Fix sqlite error when loading rows with no incoming FKs", "user": {"value": 45057, "label": "russss"}, "body": "This fixes `ERROR: conn=, sql\r\n= 'select ', params = {'id': '1'}` caused by an invalid query loading incoming FKs when none exist.\r\n\r\nThe error was ignored due to async but it still got printed to the console.", "created_at": "2018-04-14T12:08:17Z", "updated_at": "2018-04-14T14:32:42Z", "closed_at": "2018-04-14T14:24:25Z", "merged_at": "2018-04-14T14:24:25Z", "merge_commit_sha": "1cc5161089e559c8b16049b20f7a5b3a43290c21", "assignee": null, "milestone": null, "draft": 0, "head": "93b038e2469bee07d36ae8a943aab8b9d8610c1d", "base": "ec6abc81e433c9bac1b9f085111785fc227e9e34", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/206", "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": 494146043, "node_id": "MDExOlB1bGxSZXF1ZXN0NDk0MTQ2MDQz", "number": 977, "state": "closed", "locked": 0, "title": "Update pytest requirement from <6.1.0,>=5.2.2 to >=5.2.2,<6.2.0", "user": {"value": 27856297, "label": "dependabot-preview[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

6.1.0

\n

pytest 6.1.0 (2020-09-26)

\n

Breaking Changes

\n
    \n
  • \n

    #5585: As per our policy, the following features which have been deprecated in the 5.X series are now\nremoved:

    \n
      \n
    • The funcargnames read-only property of FixtureRequest, Metafunc, and Function classes. Use fixturenames attribute.
    • \n
    • @pytest.fixture no longer supports positional arguments, pass all arguments by keyword instead.
    • \n
    • Direct construction of Node subclasses now raise an error, use from_parent instead.
    • \n
    • The default value for junit_family has changed to xunit2. If you require the old format, add junit_family=xunit1 to your configuration file.
    • \n
    • The TerminalReporter no longer has a writer attribute. Plugin authors may use the public functions of the TerminalReporter instead of accessing the TerminalWriter object directly.
    • \n
    • The --result-log option has been removed. Users are recommended to use the pytest-reportlog plugin instead.
    • \n
    \n

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

    \n
  • \n
\n

Deprecations

\n
    \n
  • \n

    #6981: The pytest.collect module is deprecated: all its names can be imported from pytest directly.

    \n
  • \n
  • \n

    #7097: The pytest._fillfuncargs function is deprecated. This function was kept\nfor backward compatibility with an older plugin.

    \n

    It's functionality is not meant to be used directly, but if you must replace\nit, use function._request._fillfixtures() instead, though note this is not\na public API and may break in the future.

    \n
  • \n
  • \n

    #7210: The special -k '-expr' syntax to -k is deprecated. Use -k 'not expr'\ninstead.

    \n

    The special -k 'expr:' syntax to -k is deprecated. Please open an issue\nif you use this and want a replacement.

    \n
  • \n
  • \n

    #7255: The pytest_warning_captured <_pytest.hookspec.pytest_warning_captured> hook is deprecated in favor\nof pytest_warning_recorded <_pytest.hookspec.pytest_warning_recorded>, and will be removed in a future version.

    \n
  • \n
  • \n

    #7648: The gethookproxy() and isinitpath() methods of FSCollector and Package are deprecated;\nuse self.session.gethookproxy() and self.session.isinitpath() instead.\nThis should work on all pytest versions.

    \n
  • \n
\n

Features

\n
    \n
  • #7667: New --durations-min command-line flag controls the minimal duration for inclusion in the slowest list of tests shown by --durations. Previously this was hard-coded to 0.005s.
  • \n
\n

Improvements

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

Sourced from pytest's changelog.

\n
\n
\nCommits\n
    \n
  • 868bc00 Prepare release version 6.1.0
  • \n
  • 0b327cc Merge pull request #7796 from bluetech/changelog-cleanups
  • \n
  • d3c746e changelog: some consistency cleanups
  • \n
  • d3f47bf Improved 'Declaring new hooks' section in docs. (#7782)
  • \n
  • 3db2489 Merge pull request #7784 from nicoddemus/use-new-pip-solver-7783
  • \n
  • 8215625 Use new pip resolver in plugins tox env
  • \n
  • 5cfd7c0 Merge pull request #7780 from bluetech/final
  • \n
  • a99ca87 Mark some public and to-be-public classes as @final
  • \n
  • 050c2df Use multiple issue template types and mention Discussions (#7739)
  • \n
  • cdfdb3a Add docs about reusing fixtures from other projects (#7772)
  • \n
  • Additional commits viewable in compare view
  • \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- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language\n- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language\n- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language\n- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language\n- `@dependabot badge me` will comment on this PR with code to add a \"Dependabot enabled\" badge to your readme\n\nAdditionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):\n- Update frequency (including time of day and day of week)\n- Pull request limits (per update run and/or open at any time)\n- Out-of-range updates (receive only lockfile updates, if desired)\n- Security updates (receive only security updates, if desired)\n\n\n\n
", "created_at": "2020-09-28T13:33:05Z", "updated_at": "2020-09-28T22:16:36Z", "closed_at": "2020-09-28T22:16:35Z", "merged_at": "2020-09-28T22:16:35Z", "merge_commit_sha": "1f021c37110fc9019b0ef70062c28c335e568ae2", "assignee": null, "milestone": null, "draft": 0, "head": "5c01344a0ee3e0e7ad59e1cd8b0e63c976be71ee", "base": "9a6d0dce282e7fb58c5610e24c74098c923abfdc", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/977", "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": 1488782498, "node_id": "PR_kwDOBm6k_c5YvQSi", "number": 2158, "state": "open", "locked": 0, "title": "add brand option to metadata.json.", "user": {"value": 52261150, "label": "publicmatt"}, "body": "This adds a brand link to the top navbar if 'brand' key is populated in metadata.json. The link will be either '#' or use the contents of 'brand_url' in metadata.json for href.\r\n\r\nI was able to get this done on my own site by replacing `templates/_crumbs.html` with a custom version, but I thought it would be nice to incorporate this in the tool directly.\r\n\r\n![image](https://github.com/simonw/datasette/assets/52261150/fdfe9bb5-fee4-466c-8074-6132071d94e6)\r\n\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2158.org.readthedocs.build/en/2158/\n\r\n", "created_at": "2023-08-24T22:37:41Z", "updated_at": "2023-08-24T22:37:57Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "20fad9361ea7173a3543fa16e4b6913a3a0f4b9e", "assignee": null, "milestone": null, "draft": 0, "head": "0d89c4bd19732487232ab2637cf5e8632f48986b", "base": "527cec66b0403e689c8fb71fc8b381a1d7a46516", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2158", "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
  • #10979: gettext: Removed support for pluralisation in get_translation.\nThis was unused and complicated other changes to sphinx.locale.
  • \n
\n

Deprecated

\n
    \n
  • \n

    sphinx.util functions:

    \n
      \n
    • Renamed sphinx.util.typing.stringify()\nto sphinx.util.typing.stringify_annotation()
    • \n
    • Moved sphinx.util.xmlname_checker()\nto sphinx.builders.epub3._XML_NAME_PATTERN
    • \n
    \n

    Moved to sphinx.util.display:

    \n
      \n
    • sphinx.util.status_iterator
    • \n
    • sphinx.util.display_chunk
    • \n
    • sphinx.util.SkipProgressMessage
    • \n
    • sphinx.util.progress_message
    • \n
    \n

    Moved to sphinx.util.http_date:

    \n
      \n
    • sphinx.util.epoch_to_rfc1123
    • \n
    • sphinx.util.rfc1123_to_epoch
    • \n
    \n

    Moved to sphinx.util.exceptions:

    \n
      \n
    • sphinx.util.save_traceback
    • \n
    • sphinx.util.format_exception_cut_frames
    • \n
    \n
  • \n
\n

Features added

\n
    \n
  • Cache doctrees in the build environment during the writing phase.
  • \n
  • Make all writing phase tasks support parallel execution.
  • \n
  • #11072: Use PEP 604 (X | Y) display conventions for typing.Optional\nand typing.Optional types within the Python domain and autodoc.
  • \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": 702422263, "node_id": "MDExOlB1bGxSZXF1ZXN0NzAyNDIyMjYz", "number": 1418, "state": "closed", "locked": 0, "title": "Spelling corrections plus CI job for codespell", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1417.", "created_at": "2021-08-03T16:21:19Z", "updated_at": "2021-08-03T16:36:39Z", "closed_at": "2021-08-03T16:36:38Z", "merged_at": "2021-08-03T16:36:38Z", "merge_commit_sha": "2208c3c68e552d343e6a2872ff6e559fca9d1b38", "assignee": null, "milestone": null, "draft": 0, "head": "532170fc606df04986104aacbd67b920c5fa0af9", "base": "54b6e96ee8aa553b6671e341a1944f93f3fb89c3", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1418", "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
  • 2da33c4 docs: Prepare v0.19.0 release. (#385)
  • \n
  • 07beb80 opt into strict mode by default (#380)
  • \n
  • 25c54a5 Clarify documentation of event_loop fixture (#375)
  • \n
  • 49f07a4 Bump typing-extensions from 4.2.0 to 4.3.0 in /dependencies/default (#382)
  • \n
  • 739198b Bump hypothesis from 6.48.0 to 6.48.3 in /dependencies/default (#381)
  • \n
  • db72f25 Bump importlib-metadata from 4.11.4 to 4.12.0 in /dependencies/default (#378)
  • \n
  • 4cf16cf Bump hypothesis from 6.47.3 to 6.48.0 in /dependencies/default (#377)
  • \n
  • f13c85f docs: Fix typo in README.
  • \n
  • b463f72 Python 3.11 support (#370)
  • \n
  • 860ff51 Bump hypothesis from 6.47.2 to 6.47.3 in /dependencies/default (#373)
  • \n
  • Additional commits viewable in compare view
  • \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": 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
  • #11091: Fix util.nodes.apply_source_workaround for literal_block nodes\nwith no source information in the node or the node's parents.
  • \n
\n

Release 6.1.0 (released Jan 05, 2023)

\n

Dependencies

\n\n

Incompatible changes

\n
    \n
  • #10979: gettext: Removed support for pluralisation in get_translation.\nThis was unused and complicated other changes to sphinx.locale.
  • \n
\n

Deprecated

\n
    \n
  • \n

    sphinx.util functions:

    \n
      \n
    • Renamed sphinx.util.typing.stringify()\nto sphinx.util.typing.stringify_annotation()
    • \n
    • Moved sphinx.util.xmlname_checker()\nto sphinx.builders.epub3._XML_NAME_PATTERN
    • \n
    \n

    Moved to sphinx.util.display:

    \n
      \n
    • sphinx.util.status_iterator
    • \n
    • sphinx.util.display_chunk
    • \n
    • sphinx.util.SkipProgressMessage
    • \n
    • sphinx.util.progress_message
    • \n
    \n

    Moved to sphinx.util.http_date:

    \n
      \n
    • sphinx.util.epoch_to_rfc1123
    • \n
    • sphinx.util.rfc1123_to_epoch
    • \n
    \n

    Moved to sphinx.util.exceptions:

    \n
      \n
    • sphinx.util.save_traceback
    • \n
    \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=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": 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": 409153870, "node_id": "MDExOlB1bGxSZXF1ZXN0NDA5MTUzODcw", "number": 739, "state": "closed", "locked": 0, "title": "Configuration directory mode", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #731\r\n\r\nTODO:\r\n\r\n- [x] Decide how to combine explicit command-line options with items detected from the directory structure\r\n- [x] Add unit tests\r\n- [x] Implement `inspect-data.json` mechanism for populating `immutables`\r\n- [x] Add documentation", "created_at": "2020-04-26T20:37:46Z", "updated_at": "2020-04-27T16:30:25Z", "closed_at": "2020-04-27T16:30:25Z", "merged_at": "2020-04-27T16:30:25Z", "merge_commit_sha": "25014ca25eb70b4c1217558ebd14db2845973bfb", "assignee": null, "milestone": null, "draft": 0, "head": "0d8fa53fab672fcf16b6a75aa55b07ccd243fb96", "base": "1b7b66c465e44025ec73421bd69752e42f108321", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/739", "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
  • #11359: Remove long-deprecated aliases for MecabSplitter and\nDefaultSplitter in sphinx.search.ja.
  • \n
  • #11360: Remove deprecated make_old_id functions in domain object\ndescription classes.
  • \n
  • #11363: Remove the Setuptools integration (build_sphinx hook in\nsetup.py).
  • \n
  • #11364: Remove deprecated sphinx.ext.napoleon.iterators module.
  • \n
  • #11365: Remove support for the jsdump format in sphinx.search.
  • \n
  • #11366: Make locale a required argument to\nsphinx.util.i18n.format_date().
  • \n
  • #11370: Remove deprecated sphinx.util.stemmer module.
  • \n
  • #11371: Remove deprecated sphinx.pycode.ast.parse() function.
  • \n
  • #11372: Remove deprecated sphinx.io.read_doc() function.
  • \n
  • #11373: Removed deprecated sphinx.util.get_matching_files() function.
  • \n
  • #11378: Remove deprecated sphinx.util.docutils.is_html5_writer_available()\nfunction.
  • \n
  • #11379: Make the env argument to Builder subclasses required.
  • \n
  • #11380: autosummary: Always emit grouped import exceptions.
  • \n
  • #11381: Remove deprecated style key for HTML templates.
  • \n
  • #11382: Remove deprecated sphinx.writers.latex.LaTeXTranslator.docclasses\nattribute.
  • \n
  • #11383: Remove deprecated sphinx.builders.html.html5_ready and\nsphinx.builders.html.HTMLTranslator attributes.
  • \n
  • #11385: Remove support for HTML 4 output.
  • \n
\n

Release 6.2.1 (released Apr 25, 2023)

\n

Bugs fixed

\n
    \n
  • #11355: Revert the default type of :confval:nitpick_ignore and\n:confval:nitpick_ignore_regex to list.
  • \n
\n

Release 6.2.0 (released Apr 23, 2023)

\n

Dependencies

\n
    \n
  • Require Docutils 0.18.1 or greater.
  • \n
\n

Incompatible changes

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • d568b2f Bump to 7.0.0 final
  • \n
  • ff79edf Remove jsdump references post removal
  • \n
  • 1a5133a Bump to 7.0.0rc1 final
  • \n
  • 5795fc7 Update sphinx.deprecation for Sphinx 7.0 (#11386)
  • \n
  • 6202087 Add a note to CHANGES for PR 11385
  • \n
  • ad47373 Remove HTML 4 support (#11385)
  • \n
  • 3e3251d Remove HTMLTranslator and html5_ready from sphinx.builders.html (...
  • \n
  • 77fd819 Remove deprecated LaTeXTranslator.docclasses attribute (#11382)
  • \n
  • 4be56f3 Remove deprecated style key for HTML templates (#11381)
  • \n
  • 49027a9 Autosummary: Always emit grouped ImportError exceptions (#11380)
  • \n
  • Additional commits viewable in compare view
  • \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": 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": 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": 298962551, "node_id": "MDExOlB1bGxSZXF1ZXN0Mjk4OTYyNTUx", "number": 561, "state": "closed", "locked": 0, "title": "Fix typos", "user": {"value": 15278512, "label": "minho42"}, "body": "", "created_at": "2019-07-18T15:13:35Z", "updated_at": "2019-07-26T10:25:45Z", "closed_at": "2019-07-26T10:25:45Z", "merged_at": "2019-07-26T10:25:45Z", "merge_commit_sha": "27cb29365c9f5f6f1492968d1268497193ed75a2", "assignee": null, "milestone": null, "draft": 0, "head": "41341195075adc5093d33633d980657ecdac043c", "base": "a9453c4dda70bbf5122835e68f63db6ecbe1a6fc", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/561", "merged_by": null, "auto_merge": null} {"id": 1067890893, "node_id": "PR_kwDOBm6k_c4_prjN", "number": 1823, "state": "open", "locked": 0, "title": "Keyword-only arguments for a bunch of internal methods", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1822\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--1823.org.readthedocs.build/en/1823/\n\r\n", "created_at": "2022-09-27T00:44:59Z", "updated_at": "2022-10-05T04:37:54Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "28068a62ad6a8b76a1c9223c4ca78099cfd2ece5", "assignee": null, "milestone": null, "draft": 0, "head": "b545b6a04ed7b407331f991adce107691ac3ab97", "base": "5f9f567acbc58c9fcd88af440e68034510fb5d2b", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1823", "merged_by": null, "auto_merge": null} {"id": 1448446507, "node_id": "PR_kwDOBm6k_c5WVYor", "number": 2107, "state": "closed", "locked": 0, "title": "Bump sphinx from 6.1.3 to 7.1.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 6.1.3 to 7.1.0.\n
\nRelease notes\n

Sourced from sphinx's releases.

\n
\n

Sphinx 7.1.0

\n

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

\n

v7.0.1

\n

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

\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.1.0 (released Jul 24, 2023)

\n

Incompatible changes

\n\n

Deprecated

\n
    \n
  • #11412: Emit warnings on using a deprecated Python-specific index entry type\n(namely, module, keyword, operator, object, exception,\nstatement, and builtin) in the :rst:dir:index directive, and\nset the removal version to Sphinx 9. Patch by Adam Turner.
  • \n
\n

Features added

\n
    \n
  • #11415: Add a checksum to JavaScript and CSS asset URIs included within\ngenerated HTML, using the CRC32 algorithm.
  • \n
  • :meth:~sphinx.application.Sphinx.require_sphinx now allows the version\nrequirement to be specified as (major, minor).
  • \n
  • #11011: Allow configuring a line-length limit for object signatures, via\n:confval:maximum_signature_line_length and the domain-specific variants.\nIf the length of the signature (in characters) is greater than the configured\nlimit, each parameter in the signature will be split to its own logical line.\nThis behaviour may also be controlled by options on object description\ndirectives, for example :rst:dir:py:function:single-line-parameter-list.\nPatch by Thomas Louf, Adam Turner, and Jean-Fran\u00e7ois B.
  • \n
  • #10983: Support for multiline copyright statements in the footer block.\nPatch by Stefanie Molin
  • \n
  • sphinx.util.display.status_iterator now clears the current line\nwith ANSI control codes, rather than overprinting with space characters.
  • \n
  • #11431: linkcheck: Treat SSL failures as broken links.\nPatch by B\u00e9n\u00e9dikt Tran
  • \n
  • #11157: Keep the translated attribute on translated nodes.
  • \n
  • #11451: Improve the traceback displayed when using :option:sphinx-build -T\nin parallel builds. Patch by B\u00e9n\u00e9dikt Tran
  • \n
  • #11324: linkcheck: Use session-basd HTTP requests.
  • \n
  • #11438: Add support for the :rst:dir:py:class and :rst:dir:py:function\ndirectives for PEP 695 (generic classes and functions declarations) and\nPEP 696 (default type parameters). Multi-line support (#11011) is enabled\nfor type parameters list and can be locally controlled on object description\ndirectives, e.g., :rst:dir:py:function:single-line-type-parameter-list.\nPatch by B\u00e9n\u00e9dikt Tran.
  • \n
  • #11484: linkcheck: Allow HTML anchors to be ignored on a per-URL basis\nvia :confval:linkcheck_anchors_ignore_for_url while
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • e560f63 Bump to 7.1.0 final
  • \n
  • 066e0fa Add translation progress information (#11509)
  • \n
  • 0882914 Target PyPI in create-release.yml
  • \n
  • 21fbee5 Fix OIDC token payload
  • \n
  • 1a403e4 Add informational log messaging
  • \n
  • 258b0ea Revert "Switch to using github.request"
  • \n
  • f9c89e5 Switch to using github.request
  • \n
  • 52c7f66 Use the correct token minting URL for TestPyPI
  • \n
  • 6079f28 Install twine in PyPI publish workflow
  • \n
  • 3d43b9e Fix github-script syntax in create-release.yml
  • \n
  • Additional commits viewable in compare view
  • \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.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--2107.org.readthedocs.build/en/2107/\n\r\n", "created_at": "2023-07-25T13:28:30Z", "updated_at": "2023-07-28T13:23:19Z", "closed_at": "2023-07-28T13:23:17Z", "merged_at": null, "merge_commit_sha": "290cfa2c8d0d673922da161bd993dd406ed5ce3f", "assignee": null, "milestone": null, "draft": 0, "head": "7fc79bace8283024fdd61b9fb69e1053797ce41e", "base": "278ac91a4d68da333a6ed74a2c75b3ec9db8bd19", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2107", "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
  • Python 3.11 is now supported, except for blackd as aiohttp does not support 3.11 as of publishing (#3234)
  • \n
  • This is the last release that supports running Black on Python 3.6 (formatting 3.6 code will continue to be supported until further notice)
  • \n
  • Reword the stability policy to say that we may, in rare cases, make changes that affect code that was not previously formatted by Black (#3155)
  • \n
\n

Stable style

\n
    \n
  • Fix an infinite loop when using # fmt: on/off in the middle of an expression or code block (#3158)
  • \n
  • Fix incorrect handling of # fmt: skip on colon (:) lines (#3148)
  • \n
  • Comments are no longer deleted when a line had spaces removed around power operators (#2874)
  • \n
\n

Preview style

\n
    \n
  • Single-character closing docstring quotes are no longer moved to their own line as this is invalid. This was a bug introduced in version 22.6.0. (#3166)
  • \n
  • --skip-string-normalization / -S now prevents docstring prefixes from being normalized as expected (#3168)
  • \n
  • When using --skip-magic-trailing-comma or -C, trailing commas are stripped from subscript expressions with more than 1 element (#3209)
  • \n
  • Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside parentheses (#3162)
  • \n
  • Fix a string merging/split issue when a comment is present in the middle of implicitly concatenated strings on its own line (#3227)
  • \n
\n

Blackd

\n
    \n
  • blackd now supports enabling the preview style via the X-Preview header (#3217)
  • \n
\n

Configuration

\n
    \n
  • Black now uses the presence of debug f-strings to detect target version (#3215)
  • \n
  • Fix misdetection of project root and verbose logging of sources in cases involving --stdin-filename (#3216)
  • \n
  • Immediate .gitignore files in source directories given on the command line are now also respected, previously only .gitignore files in the project root and automatically discovered directories were respected (#3237)
  • \n
\n

Documentation

\n
    \n
  • Recommend using BlackConnect in IntelliJ IDEs (#3150)
  • \n
\n

Integrations

\n
    \n
  • Vim plugin: prefix messages with Black: so it's clear they come from Black (#3194)
  • \n
  • Docker: changed to a /opt/venv installation + added to PATH to be available to non-root users (#3202)
  • \n
\n

Output

\n
    \n
  • Change from deprecated asyncio.get_event_loop() to create our event loop which removes DeprecationWarning (#3164)
  • \n
  • Remove logging from internal blib2to3 library since it regularly emits error logs about failed caching that can and should be ignored (#3193)
  • \n
\n

Parser

\n
    \n
  • Type comments are now included in the AST equivalence check consistently so accidental deletion raises an error. Though type comments can't be tracked when running on PyPy 3.7 due to standard library limitations. (#2874)
  • \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
  • Python 3.11 is now supported, except for blackd as aiohttp does not support 3.11 as\nof publishing (#3234)
  • \n
  • This is the last release that supports running Black on Python 3.6 (formatting 3.6\ncode will continue to be supported until further notice)
  • \n
  • Reword the stability policy to say that we may, in rare cases, make changes that\naffect code that was not previously formatted by Black (#3155)
  • \n
\n

Stable style

\n
    \n
  • Fix an infinite loop when using # fmt: on/off in the middle of an expression or code\nblock (#3158)
  • \n
  • Fix incorrect handling of # fmt: skip on colon (:) lines (#3148)
  • \n
  • Comments are no longer deleted when a line had spaces removed around power operators\n(#2874)
  • \n
\n

Preview style

\n
    \n
  • Single-character closing docstring quotes are no longer moved to their own line as\nthis is invalid. This was a bug introduced in version 22.6.0. (#3166)
  • \n
  • --skip-string-normalization / -S now prevents docstring prefixes from being\nnormalized as expected (#3168)
  • \n
  • When using --skip-magic-trailing-comma or -C, trailing commas are stripped from\nsubscript expressions with more than 1 element (#3209)
  • \n
  • Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside\nparentheses (#3162)
  • \n
  • Fix a string merging/split issue when a comment is present in the middle of implicitly\nconcatenated strings on its own line (#3227)
  • \n
\n

Blackd

\n
    \n
  • blackd now supports enabling the preview style via the X-Preview header (#3217)
  • \n
\n

Configuration

\n
    \n
  • Black now uses the presence of debug f-strings to detect target version (#3215)
  • \n
  • Fix misdetection of project root and verbose logging of sources in cases involving\n--stdin-filename (#3216)
  • \n
  • Immediate .gitignore files in source directories given on the command line are now\nalso respected, previously only .gitignore files in the project root and\nautomatically discovered directories were respected (#3237)
  • \n
\n

Documentation

\n
    \n
  • Recommend using BlackConnect in IntelliJ IDEs (#3150)
  • \n
\n

Integrations

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 2018e66 Prepare docs for release 22.8.0 (#3248)
  • \n
  • 0019261 Update stable branch after publishing to PyPI (#3223)
  • \n
  • 7757078 Improve & update release process to reflect recent changes (#3242)
  • \n
  • 767604e Use .gitignore files in the initial source directories (#3237)
  • \n
  • 2c90480 Use strict mypy checking (#3222)
  • \n
  • ba618a3 Add parens around implicit string concatenations where it increases readabili...
  • \n
  • c0cc19b Delay worker count determination
  • \n
  • afed2c0 Load .gitignore and exclude regex at time of use
  • \n
  • e269f44 Lazily import parallelized format modules
  • \n
  • c47b91f Fix misdetection of project root with --stdin-filename (#3216)
  • \n
  • Additional commits viewable in compare view
  • \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": 729632643, "node_id": "MDExOlB1bGxSZXF1ZXN0NzI5NjMyNjQz", "number": 1463, "state": "closed", "locked": 0, "title": "Update beautifulsoup4 requirement from <4.10.0,>=4.8.1 to >=4.8.1,<4.11.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [beautifulsoup4](http://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": "2021-09-08T13:09:38Z", "updated_at": "2021-10-13T22:35:37Z", "closed_at": "2021-10-13T22:35:36Z", "merged_at": "2021-10-13T22:35:36Z", "merge_commit_sha": "2a8c6690399ee832ee62aafdede1794f5945d911", "assignee": null, "milestone": null, "draft": 0, "head": "481212cdfc5fa372423e5e67047a3febaa8941b6", "base": "e1012e7098056734d9c90f081493991009253390", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1463", "merged_by": null, "auto_merge": null} {"id": 187668890, "node_id": "MDExOlB1bGxSZXF1ZXN0MTg3NjY4ODkw", "number": 257, "state": "closed", "locked": 0, "title": "Refactor views", "user": {"value": 9599, "label": "simonw"}, "body": "* Split out view classes from main `app.py`\r\n* Run [black](https://github.com/ambv/black) against resulting code to apply opinionated source code formatting\r\n* Run [isort](https://github.com/timothycrosley/isort) to re-order my imports\r\n\r\nRefs #256 ", "created_at": "2018-05-13T13:00:50Z", "updated_at": "2018-05-14T03:04:25Z", "closed_at": "2018-05-14T03:04:24Z", "merged_at": "2018-05-14T03:04:24Z", "merge_commit_sha": "2b79f2bdeb1efa86e0756e741292d625f91cb93d", "assignee": null, "milestone": null, "draft": 0, "head": "0e2b41f3fa38456af32548c536f955c48c7637e8", "base": "4301a8f3ac69f2f54916e73cc90fcf216a9a3746", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/257", "merged_by": null, "auto_merge": null} {"id": 613178968, "node_id": "MDExOlB1bGxSZXF1ZXN0NjEzMTc4OTY4", "number": 1296, "state": "open", "locked": 0, "title": "Dockerfile: use Ubuntu 20.10 as base", "user": {"value": 82332573, "label": "tmcl-it"}, "body": "This PR changes the main Dockerfile to use ubuntu:20.10 as base image instead of python:3.9.2-slim-buster (itself based on debian:buster-slim).\r\n\r\nThe Dockerfile is essentially the one from https://github.com/simonw/datasette/issues/1249#issuecomment-803698983 with some additional cleanups to slim it down.\r\n\r\nThis fixes a couple of issues:\r\n1. The SQLite version in Debian Buster (2.6.0) doesn't support generated columns\r\n2. Installing SpatiaLite from the Debian sid repositories has the side effect of also installing updates to libc and libstdc++ from sid.\r\n\r\nAs a bonus, the Docker image becomes smaller:\r\n\r\n\r\n```\r\n$ docker image ls\r\nREPOSITORY TAG IMAGE ID CREATED SIZE\r\ndatasette 0.56-ubuntu f7aca255140a 5 hours ago 212MB\r\ndatasetteproject/datasette 0.56 efb3b282f390 13 days ago 258MB\r\n```\r\n\r\n### Reproduction of the first issue\r\n\r\n```\r\n$ curl -O https://latest.datasette.io/fixtures.db\r\n % Total % Received % Xferd Average Speed Time Time Time Current\r\n Dload Upload Total Spent Left Speed\r\n100 260k 0 260k 0 0 489k 0 --:--:-- --:--:-- --:--:-- 489k\r\n\r\n$ docker run -v `pwd`:/mnt datasetteproject/datasette:0.56 datasette /mnt/fixtures.db\r\nTraceback (most recent call last):\r\n File \"/usr/local/bin/datasette\", line 8, in \r\n sys.exit(cli())\r\n File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 829, in __call__\r\n return self.main(*args, **kwargs)\r\n File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 782, in main\r\n rv = self.invoke(ctx)\r\n File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 1259, in invoke\r\n return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 1066, in invoke\r\n return ctx.invoke(self.callback, **ctx.params)\r\n File \"/usr/local/lib/python3.9/site-packages/click/core.py\", line 610, in invoke\r\n return callback(*args, **kwargs)\r\n File \"/usr/local/lib/python3.9/site-packages/datasette/cli.py\", line 544, in serve\r\n asyncio.get_event_loop().run_until_complete(check_databases(ds))\r\n File \"/usr/local/lib/python3.9/asyncio/base_events.py\", line 642, in run_until_complete\r\n return future.result()\r\n File \"/usr/local/lib/python3.9/site-packages/datasette/cli.py\", line 584, in check_databases\r\n await database.execute_fn(check_connection)\r\n File \"/usr/local/lib/python3.9/site-packages/datasette/database.py\", line 155, in execute_fn\r\n return await asyncio.get_event_loop().run_in_executor(\r\n File \"/usr/local/lib/python3.9/concurrent/futures/thread.py\", line 52, in run\r\n result = self.fn(*self.args, **self.kwargs)\r\n File \"/usr/local/lib/python3.9/site-packages/datasette/database.py\", line 153, in in_thread\r\n return fn(conn)\r\n File \"/usr/local/lib/python3.9/site-packages/datasette/utils/__init__.py\", line 892, in check_connection\r\n for r in conn.execute(\r\nsqlite3.DatabaseError: malformed database schema (generated_columns) - near \"AS\": syntax error\r\n```\r\n\r\nHere is the SQLite version:\r\n\r\n```\r\n$ docker run -v `pwd`:/mnt -it datasetteproject/datasette:0.56 /bin/bash\r\nroot@d9220d3b95dd:/# python3\r\nPython 3.9.2 (default, Mar 27 2021, 02:50:26) \r\n[GCC 8.3.0] on linux\r\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n>>> import sqlite3\r\n>>> sqlite3.version\r\n'2.6.0'\r\n```\r\n\r\n### Reproduction of the second issue\r\n\r\n```\r\n$ docker build . -t datasette --build-arg VERSION=0.55\r\n[...snip...]\r\nThe following packages will be upgraded:\r\n libc-bin libc6 libstdc++6\r\n[...snip...]\r\nUnpacking libc6:amd64 (2.31-11) over (2.28-10) ...\r\n[...snip...]\r\nUnpacking libstdc++6:amd64 (10.2.1-6) over (8.3.0-6) ...\r\n[...snip...]\r\n```\r\n\r\nBoth libc and libstdc++ are backwards compatible, so the image still works, but it will result in a combination of libraries and Python versions that exists only in the Datasette image, so it's likely untested. In addition, since Debian sid is an always-changing rolling-release, the versions of libc, libstdc++, Spatialite, and their dependencies change frequently, so the library versions in the Datasette image will depend on the day when it was built.\r\n", "created_at": "2021-04-12T00:23:32Z", "updated_at": "2021-07-20T08:52:13Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "2ba522dbd7168a104a33621598c5a2460aae3e74", "assignee": null, "milestone": null, "draft": 0, "head": "8f00c312f6b8ab5cecbb8a698ab4ad659aabf4ef", "base": "c73af5dd72305f6a01ea94a2c76d52e5e26de38b", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1296", "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
  • Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be\nsupported until further notice.
  • \n
\n

Stable style

\n
    \n
  • Fix a crash when # fmt: on is used on a different block level than # fmt: off\n(#3281)
  • \n
\n

Preview style

\n
    \n
  • Fix a crash when formatting some dicts with parenthesis-wrapped long string keys\n(#3262)
  • \n
\n

Configuration

\n
    \n
  • .ipynb_checkpoints directories are now excluded by default (#3293)
  • \n
  • Add --skip-source-first-line / -x option to ignore the first line of source code\nwhile formatting (#3299)
  • \n
\n

Packaging

\n
    \n
  • Executables made with PyInstaller will no longer crash when formatting several files\nat once on macOS. Native x86-64 executables for macOS are available once again.\n(#3275)
  • \n
  • Hatchling is now used as the build backend. This will not have any effect for users\nwho install Black with its wheels from PyPI. (#3233)
  • \n
  • Faster compiled wheels are now available for CPython 3.11 (#3276)
  • \n
\n

Blackd

\n
    \n
  • Windows style (CRLF) newlines will be preserved (#3257).
  • \n
\n

Integrations

\n
    \n
  • Vim plugin: add flag (g:black_preview) to enable/disable the preview style (#3246)
  • \n
  • Update GitHub Action to support formatting of Jupyter Notebook files via a jupyter\noption (#3282)
  • \n
  • Update GitHub Action to support use of version specifiers (e.g. <23) for Black\nversion (#3265)
  • \n
\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

22.10.0

\n

Highlights

\n
    \n
  • Runtime support for Python 3.6 has been removed. Formatting 3.6 code will still be\nsupported until further notice.
  • \n
\n

Stable style

\n
    \n
  • Fix a crash when # fmt: on is used on a different block level than # fmt: off\n(#3281)
  • \n
\n

Preview style

\n
    \n
  • Fix a crash when formatting some dicts with parenthesis-wrapped long string keys\n(#3262)
  • \n
\n

Configuration

\n
    \n
  • .ipynb_checkpoints directories are now excluded by default (#3293)
  • \n
  • Add --skip-source-first-line / -x option to ignore the first line of source code\nwhile formatting (#3299)
  • \n
\n

Packaging

\n
    \n
  • Executables made with PyInstaller will no longer crash when formatting several files\nat once on macOS. Native x86-64 executables for macOS are available once again.\n(#3275)
  • \n
  • Hatchling is now used as the build backend. This will not have any effect for users\nwho install Black with its wheels from PyPI. (#3233)
  • \n
  • Faster compiled wheels are now available for CPython 3.11 (#3276)
  • \n
\n

Blackd

\n
    \n
  • Windows style (CRLF) newlines will be preserved (#3257).
  • \n
\n

Integrations

\n
    \n
  • Vim plugin: add flag (g:black_preview) to enable/disable the preview style (#3246)
  • \n
  • Update GitHub Action to support formatting of Jupyter Notebook files via a jupyter\noption (#3282)
  • \n
  • Update GitHub Action to support use of version specifiers (e.g. <23) for Black\nversion (#3265)
  • \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": 424032445, "node_id": "MDExOlB1bGxSZXF1ZXN0NDI0MDMyNDQ1", "number": 769, "state": "closed", "locked": 0, "title": "Backport of Python 3.8 shutil.copytree", "user": {"value": 9599, "label": "simonw"}, "body": "Closes #744", "created_at": "2020-05-27T18:17:15Z", "updated_at": "2020-05-27T20:21:56Z", "closed_at": "2020-05-27T18:17:44Z", "merged_at": "2020-05-27T18:17:44Z", "merge_commit_sha": "2d099ad9c657d2cab59de91cdb8bfed2da236ef6", "assignee": null, "milestone": {"value": 5471110, "label": "Datasette 0.43"}, "draft": 0, "head": "6f80757f27e4651e6533856ea87b676dbc0d9c37", "base": "cee671a58f417f827d1735b1abaa40716534ea67", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/769", "merged_by": null, "auto_merge": null} {"id": 453890292, "node_id": "MDExOlB1bGxSZXF1ZXN0NDUzODkwMjky", "number": 901, "state": "closed", "locked": 0, "title": "Use None as a default arg", "user": {"value": 56323389, "label": "Alyetama"}, "body": "When passing a mutable value as a default argument in a function, the default argument is mutated anytime that value is mutated. This poses a bug risk. Instead, use None as a default and assign the mutable value inside the function.", "created_at": "2020-07-20T22:18:38Z", "updated_at": "2020-07-31T18:42:39Z", "closed_at": "2020-07-31T18:42:39Z", "merged_at": "2020-07-31T18:42:39Z", "merge_commit_sha": "2d7fa8b9058dfbf9c7c371cdeec115d32a177dc9", "assignee": null, "milestone": null, "draft": 0, "head": "1285f28d82d9ca97e7543bb87fc6ff462855debe", "base": "d9a5ef1c32a4390e398653ebfd570f8e1a03d93e", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/901", "merged_by": null, "auto_merge": null} {"id": 313384926, "node_id": "MDExOlB1bGxSZXF1ZXN0MzEzMzg0OTI2", "number": 571, "state": "closed", "locked": 0, "title": "detect_fts now works with alternative table escaping", "user": {"value": 9599, "label": "simonw"}, "body": "Fixes #570", "created_at": "2019-09-03T00:23:39Z", "updated_at": "2019-09-03T00:32:28Z", "closed_at": "2019-09-03T00:32:28Z", "merged_at": "2019-09-03T00:32:28Z", "merge_commit_sha": "2dc5c8dc259a0606162673d394ba8cc1c6f54428", "assignee": null, "milestone": null, "draft": 0, "head": "a85239f69261c10f1a9f90514c8b5d113cb94585", "base": "f04deebec4f3842f7bd610cd5859de529f77d50e", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/571", "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": 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
  • Add a minimum version constraint on pygments.
  • \n
  • Add an explicit dependency on sass.
  • \n
  • Change right sidebar title from "Contents" to "On this page".
  • \n
  • Correctly position sidebars on small screens.
  • \n
  • Correctly select only Furo's own svg in related pages nav.
  • \n
  • Make numpy-style documentation headers consistent.
  • \n
  • Retitle the reference section.
  • \n
  • Update npm dependencies.
  • \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
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 08e6b38 Prepare release: 2022.09.15
  • \n
  • 9de7613 Update changelog
  • \n
  • a064929 Tweak changelog content style
  • \n
  • 46f4adc Revert "Add initial theme.conf content for eventual ablog support"
  • \n
  • 45b839b Set a minimum constraint on pygments
  • \n
  • a4af988 [pre-commit.ci] pre-commit autoupdate (#518)
  • \n
  • a72186f [pre-commit.ci] pre-commit autoupdate (#504)
  • \n
  • 9f41ee6 Add initial theme.conf content for eventual ablog support
  • \n
  • 75e0361 Make numpy-style documentation headers consistent
  • \n
  • 9d280e6 [pre-commit.ci] pre-commit autoupdate (#487)
  • \n
  • Additional commits viewable in compare view
  • \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": 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": 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
  • #10468: Drop Python 3.6 support
  • \n
  • #10470: Drop Python 3.7, Docutils 0.14, Docutils 0.15, Docutils 0.16, and\nDocutils 0.17 support. Patch by Adam Turner
  • \n
\n

Incompatible changes

\n
    \n
  • \n

    #7405: Removed the jQuery and underscore.js JavaScript frameworks.

    \n

    These frameworks are no longer be automatically injected into themes from\nSphinx 6.0. If you develop a theme or extension that uses the\njQuery, $, or $u global objects, you need to update your\nJavaScript to modern standards, or use the mitigation below.

    \n

    The first option is to use the sphinxcontrib.jquery_ extension, which has been\ndeveloped by the Sphinx team and contributors. To use this, add\nsphinxcontrib.jquery to the extensions list in conf.py, or call\napp.setup_extension("sphinxcontrib.jquery") if you develop a Sphinx theme\nor extension.

    \n

    The second option is to manually ensure that the frameworks are present.\nTo re-add jQuery and underscore.js, you will need to copy jquery.js and\nunderscore.js from the Sphinx repository_ to your static directory,\nand add the following to your layout.html:

    \n

    .. code-block:: html+jinja

    \n

    {%- block scripts %}\n\n\n{{ super() }}\n{%- endblock %}

    \n

    .. _sphinxcontrib.jquery: https://github.com/sphinx-contrib/jquery/

    \n

    Patch by Adam Turner.

    \n
  • \n
  • \n

    #10471, #10565: Removed deprecated APIs scheduled for removal in Sphinx 6.0. See\n:ref:dev-deprecated-apis for details. Patch by Adam Turner.

    \n
  • \n
  • \n

    #10901: C Domain: Remove support for parsing pre-v3 style type directives and\nroles. Also remove associated configuration variables c_allow_pre_v3 and\nc_warn_on_allowed_pre_v3. Patch by Adam Turner.

    \n
  • \n
\n

Features added

\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • 5b56a23 Bump to 6.0.0 final
  • \n
  • f1d1e9c Update coverage workflow for Tox 4
  • \n
  • 66a738c Update coverage workflow for new configuration location
  • \n
  • 041e5f8 Add test coverage for 'today_fmt' reference substitution (#10980)
  • \n
  • da25145 Remove unnecessary conditional import in sphinx.ext.napoleon (#11043)
  • \n
  • 45a0ea9 Migrate coveragepy config into pyproject.toml (#11025)
  • \n
  • 3ec54f1 Create a pydata_sphinx_theme section in usage examples (#11046)
  • \n
  • 32bce8f Copy edit the tutorial (#11049)
  • \n
  • 9844162 Fix example using add_config_value (#10937)
  • \n
  • bf4a626 RTD builder: add graphviz depedendency (#11040)
  • \n
  • Additional commits viewable in compare view
  • \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": 372763906, "node_id": "MDExOlB1bGxSZXF1ZXN0MzcyNzYzOTA2", "number": 666, "state": "closed", "locked": 0, "title": "Use inspect-file, if possible, for total row count", "user": {"value": 13896256, "label": "kevindkeogh"}, "body": "For large tables, counting the number of rows in the table can take a\r\nsignficant amount of time. Instead, where an inspect-file is provided\r\nfor an immutable database, look up the row-count for a plain count(*).", "created_at": "2020-02-08T22:10:35Z", "updated_at": "2020-03-09T02:47:15Z", "closed_at": "2020-02-25T20:19:29Z", "merged_at": "2020-02-25T20:19:29Z", "merge_commit_sha": "3041c6b6412bbe317f8b9afd6529a15954f2c47e", "assignee": null, "milestone": null, "draft": 0, "head": "8947a60404b8242a03f9ebabc5f957d75f4dfe04", "base": "b031fe97636b80b05fec409ee1dffb7d044fd4e9", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/666", "merged_by": null, "auto_merge": null} {"id": 409123897, "node_id": "MDExOlB1bGxSZXF1ZXN0NDA5MTIzODk3", "number": 737, "state": "closed", "locked": 0, "title": "Custom pages mechanism, refs #648", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #648. TODO:\r\n- [x] Pass a `view_name` to `render_template()`\r\n- [x] Mechanism for custom status code / headers / redirect\r\n- [x] Documentation", "created_at": "2020-04-26T17:31:41Z", "updated_at": "2020-04-26T18:46:43Z", "closed_at": "2020-04-26T18:46:43Z", "merged_at": "2020-04-26T18:46:43Z", "merge_commit_sha": "304e7b1d9fd904ae1c35600bc03662eb90eeeae0", "assignee": null, "milestone": null, "draft": 0, "head": "b5bbf1bd88f67a26eb34902bc11f2da7692c7af2", "base": "227bb3e91fe34811a9374150798643a5af98ed79", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/737", "merged_by": null, "auto_merge": null} {"id": 548271472, "node_id": "MDExOlB1bGxSZXF1ZXN0NTQ4MjcxNDcy", "number": 1170, "state": "closed", "locked": 0, "title": "Install Prettier via package.json", "user": {"value": 3637, "label": "benpickles"}, "body": "This adds a package.json with Prettier and means that developers/CI will use the same version. It also ensures that NPM packages are cached on GitHub Actions which fixes #1169.", "created_at": "2021-01-04T14:18:03Z", "updated_at": "2021-01-24T21:21:01Z", "closed_at": "2021-01-04T19:52:34Z", "merged_at": "2021-01-04T19:52:33Z", "merge_commit_sha": "3054e0f7307da4c31850b74bd73238b33d6c750a", "assignee": null, "milestone": {"value": 6346396, "label": "Datasette 0.54"}, "draft": 0, "head": "a5761ccb8676ef1b98d95d8174211c98f140e3de", "base": "1e8fa3ac7cb2d6e516c47c306c86ed2334fc3dc0", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1170", "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
  • Import lines with # fmt: skip and # fmt: off no longer have an extra blank line\nadded when they are right after another import line (#3610)
  • \n
\n

Preview style

\n
    \n
  • Add trailing commas to collection literals even if there's a comment after the last\nentry (#3393)
  • \n
  • async def, async for, and async with statements are now formatted consistently\ncompared to their non-async version. (#3609)
  • \n
  • with statements that contain two context managers will be consistently wrapped in\nparentheses (#3589)
  • \n
  • Let string splitters respect East Asian Width\n(#3445)
  • \n
  • Now long string literals can be split after East Asian commas and periods (\u3001 U+3001\nIDEOGRAPHIC COMMA, \u3002 U+3002 IDEOGRAPHIC FULL STOP, & \uff0c U+FF0C FULLWIDTH COMMA)\nbesides before spaces (#3445)
  • \n
  • For stubs, enforce one blank line after a nested class with a body other than just\n... (#3564)
  • \n
  • Improve handling of multiline strings by changing line split behavior (#1879)
  • \n
\n

Parser

\n
    \n
  • Added support for formatting files with invalid type comments (#3594)
  • \n
\n

Integrations

\n
    \n
  • Update GitHub Action to use the version of Black equivalent to action's version if\nversion input is not specified (#3543)
  • \n
  • Fix missing Python binary path in autoload script for vim (#3508)
  • \n
\n

Documentation

\n
    \n
  • Document that only the most recent release is supported for security issues;\nvulnerabilities should be reported through Tidelift (#3612)
  • \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
  • Import lines with # fmt: skip and # fmt: off no longer have an extra blank line\nadded when they are right after another import line (#3610)
  • \n
\n

Preview style

\n
    \n
  • Add trailing commas to collection literals even if there's a comment after the last\nentry (#3393)
  • \n
  • async def, async for, and async with statements are now formatted consistently\ncompared to their non-async version. (#3609)
  • \n
  • with statements that contain two context managers will be consistently wrapped in\nparentheses (#3589)
  • \n
  • Let string splitters respect East Asian Width\n(#3445)
  • \n
  • Now long string literals can be split after East Asian commas and periods (\u3001 U+3001\nIDEOGRAPHIC COMMA, \u3002 U+3002 IDEOGRAPHIC FULL STOP, & \uff0c U+FF0C FULLWIDTH COMMA)\nbesides before spaces (#3445)
  • \n
  • For stubs, enforce one blank line after a nested class with a body other than just\n... (#3564)
  • \n
  • Improve handling of multiline strings by changing line split behavior (#1879)
  • \n
\n

Parser

\n
    \n
  • Added support for formatting files with invalid type comments (#3594)
  • \n
\n

Integrations

\n
    \n
  • Update GitHub Action to use the version of Black equivalent to action's version if\nversion input is not specified (#3543)
  • \n
  • Fix missing Python binary path in autoload script for vim (#3508)
  • \n
\n

Documentation

\n
    \n
  • Document that only the most recent release is supported for security issues;\nvulnerabilities should be reported through Tidelift (#3612)
  • \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": 521276296, "node_id": "MDExOlB1bGxSZXF1ZXN0NTIxMjc2Mjk2", "number": 1097, "state": "closed", "locked": 0, "title": "Use f-strings", "user": {"value": 9599, "label": "simonw"}, "body": "Since Datasette now requires Python 3.6, how about some f-strings?\r\n\r\nI ran this in the `datasette` root checkout:\r\n```\r\npip install flynt\r\nflynt .\r\nblack .\r\n```", "created_at": "2020-11-15T23:12:36Z", "updated_at": "2020-11-15T23:24:24Z", "closed_at": "2020-11-15T23:24:23Z", "merged_at": "2020-11-15T23:24:23Z", "merge_commit_sha": "30e64c8d3b3728a86c3ca42a75322cc3feb5b0c8", "assignee": null, "milestone": null, "draft": 0, "head": "e89211d21eebb7a2e4588b06927da84416e3a555", "base": "6fd35be64de221eba4945ca24e8e1678f6142a73", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1097", "merged_by": null, "auto_merge": null} {"id": 737420528, "node_id": "PR_kwDOBm6k_c4r9CTw", "number": 1474, "state": "closed", "locked": 0, "title": "Update full_text_search.rst", "user": {"value": 72577720, "label": "MichaelTiemannOSC"}, "body": "Change \"above\" to \"below\" to correct correspondence of reference to example.", "created_at": "2021-09-20T09:59:45Z", "updated_at": "2021-10-13T21:10:23Z", "closed_at": "2021-10-13T21:10:23Z", "merged_at": "2021-10-13T21:10:23Z", "merge_commit_sha": "31352914c427162f785d2610222a54a426d5215f", "assignee": null, "milestone": null, "draft": 0, "head": "cbccacfd3f501e3f4bae6cc42dcbbdd9635ae509", "base": "b28b6cd2fe97f7e193a235877abeec2c8eb0a821", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1474", "merged_by": null, "auto_merge": null} {"id": 692557381, "node_id": "MDExOlB1bGxSZXF1ZXN0NjkyNTU3Mzgx", "number": 1399, "state": "open", "locked": 0, "title": "Multiple sort", "user": {"value": 87192257, "label": "jgryko5"}, "body": "Closes #197.\r\nI have added support for sorting by multiple parameters as mentioned in the issue above, and together with that, a suggestion on how to implement such sorting in the user interface.", "created_at": "2021-07-19T12:20:14Z", "updated_at": "2021-07-19T12:20:14Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "3161cd1202824921054cf78d82c1d8c07b140451", "assignee": null, "milestone": null, "draft": 0, "head": "739697660382e4d2974619b4a5605baef87d233a", "base": "c73af5dd72305f6a01ea94a2c76d52e5e26de38b", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1399", "merged_by": null, "auto_merge": null} {"id": 201075532, "node_id": "MDExOlB1bGxSZXF1ZXN0MjAxMDc1NTMy", "number": 341, "state": "closed", "locked": 0, "title": "Bump aiohttp to fix compatibility with Python 3.7", "user": {"value": 9599, "label": "simonw"}, "body": "Tests failed here: https://travis-ci.org/simonw/datasette/jobs/403223333", "created_at": "2018-07-12T17:41:24Z", "updated_at": "2018-07-12T18:07:38Z", "closed_at": "2018-07-12T18:07:38Z", "merged_at": "2018-07-12T18:07:38Z", "merge_commit_sha": "31a5d8fa77be68d4f837f0a80a611675dce49f4b", "assignee": null, "milestone": null, "draft": 0, "head": "8d34ed776168dcac530859c51f22e8b48829a513", "base": "130dc8823ebdcc1834fc7c4a03c996b13fc1e444", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/341", "merged_by": null, "auto_merge": null} {"id": 780684583, "node_id": "PR_kwDOBm6k_c4uiE0n", "number": 1508, "state": "closed", "locked": 0, "title": "Update docutils requirement from <0.18 to <0.19", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [docutils](http://docutils.sourceforge.net/) 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": "2021-11-15T13:15:47Z", "updated_at": "2021-11-30T02:35:19Z", "closed_at": "2021-11-30T02:35:19Z", "merged_at": "2021-11-30T02:35:19Z", "merge_commit_sha": "3303514a52b7170f2f1e598cd9c5f82c22f26e6c", "assignee": null, "milestone": null, "draft": 0, "head": "299774b795915870c987c7b2841925a6106d98a2", "base": "502c02fa6dde6a8bb840af6c4c8cf858aa1db687", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1508", "merged_by": null, "auto_merge": null} {"id": 356004242, "node_id": "MDExOlB1bGxSZXF1ZXN0MzU2MDA0MjQy", "number": 653, "state": "closed", "locked": 0, "title": "allow leading comments in SQL input field", "user": {"value": 418191, "label": "jaywgraves"}, "body": "this changes the SQL validation to allow for lines that are commented out\r\n\r\nmy main use case for this is that I like to write a succession of queries when trying to solve a problem.\r\nIn most native SQL clients there is a key binding that will run just the current highlighted query or the program is smart enough to run just the query that the cursor is in if it's properly delimited with a ';'.\r\nTypically my workflow will start with a single simple query and I'll copy/paste it to a new query below when I want to make big changes while debugging. This makes it easy to go back to a working version above when the query doesn't work.\r\nSince datasette sends the whole query to the DB I have to comment out the older queries by prefixing each line with `--`. This gets caught by the validators when I use my typical strategy of copy/pasting each successive query below the last one. \r\nso this is just a simple fix to allow for a query to be sent to the DB with leading comments.\r\n", "created_at": "2019-12-21T14:19:52Z", "updated_at": "2020-02-05T02:35:41Z", "closed_at": "2020-02-05T02:13:25Z", "merged_at": "2020-02-05T02:13:25Z", "merge_commit_sha": "33a12c8ae526afb40a7819c9ca411c9d3c41219b", "assignee": null, "milestone": null, "draft": 0, "head": "3a4cb551b9a217d5798e3e9ad5d4b06234a81885", "base": "d6b6c9171f3fd945c4e5e4144923ac831c43c208", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/653", "merged_by": null, "auto_merge": null} {"id": 181731956, "node_id": "MDExOlB1bGxSZXF1ZXN0MTgxNzMxOTU2", "number": 210, "state": "closed", "locked": 0, "title": "Start of the plugin system, based on pluggy", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #14", "created_at": "2018-04-16T00:51:30Z", "updated_at": "2018-04-16T00:56:16Z", "closed_at": "2018-04-16T00:56:16Z", "merged_at": "2018-04-16T00:56:16Z", "merge_commit_sha": "33c7c53ff87c25445c68088ede49d062d9c31fe8", "assignee": null, "milestone": null, "draft": 0, "head": "d75e57060d9ef4ef6ebab3600e542885b7467272", "base": "efbb4e83374a2c795e436c72fa79f70da72309b8", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/210", "merged_by": null, "auto_merge": null} {"id": 782713972, "node_id": "PR_kwDOBm6k_c4up0R0", "number": 1514, "state": "closed", "locked": 0, "title": "Bump black from 21.9b0 to 21.11b0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 21.9b0 to 21.11b0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

21.11b0

\n

Black

\n
    \n
  • Warn about Python 2 deprecation in more cases by improving Python 2 only syntax\ndetection (#2592)
  • \n
  • Add experimental PyPy support (#2559)
  • \n
  • Add partial support for the match statement. As it's experimental, it's only enabled\nwhen --target-version py310 is explicitly specified (#2586)
  • \n
  • Add support for parenthesized with (#2586)
  • \n
  • Declare support for Python 3.10 for running Black (#2562)
  • \n
\n

Integrations

\n
    \n
  • Fixed vim plugin with Python 3.10 by removing deprecated distutils import (#2610)
  • \n
  • The vim plugin now parses skip_magic_trailing_comma from pyproject.toml (#2613)
  • \n
\n

21.10b0

\n

Black

\n
    \n
  • Document stability policy, that will apply for non-beta releases (#2529)
  • \n
  • Add new --workers parameter (#2514)
  • \n
  • Fixed feature detection for positional-only arguments in lambdas (#2532)
  • \n
  • Bumped typed-ast version minimum to 1.4.3 for 3.10 compatiblity (#2519)
  • \n
  • Fixed a Python 3.10 compatibility issue where the loop argument was still being passed\neven though it has been removed (#2580)
  • \n
  • Deprecate Python 2 formatting support (#2523)
  • \n
\n

Blackd

\n
    \n
  • Remove dependency on aiohttp-cors (#2500)
  • \n
  • Bump required aiohttp version to 3.7.4 (#2509)
  • \n
\n

Black-Primer

\n
    \n
  • Add primer support for --projects (#2555)
  • \n
  • Print primer summary after individual failures (#2570)
  • \n
\n

Integrations

\n
    \n
  • Allow to pass target_version in the vim plugin (#1319)
  • \n
  • Install build tools in docker file and use multi-stage build to keep the image size\ndown (#2582)
  • \n
\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

21.11b0

\n

Black

\n
    \n
  • Warn about Python 2 deprecation in more cases by improving Python 2 only syntax\ndetection (#2592)
  • \n
  • Add experimental PyPy support (#2559)
  • \n
  • Add partial support for the match statement. As it's experimental, it's only enabled\nwhen --target-version py310 is explicitly specified (#2586)
  • \n
  • Add support for parenthesized with (#2586)
  • \n
  • Declare support for Python 3.10 for running Black (#2562)
  • \n
\n

Integrations

\n
    \n
  • Fixed vim plugin with Python 3.10 by removing deprecated distutils import (#2610)
  • \n
  • The vim plugin now parses skip_magic_trailing_comma from pyproject.toml (#2613)
  • \n
\n

21.10b0

\n

Black

\n
    \n
  • Document stability policy, that will apply for non-beta releases (#2529)
  • \n
  • Add new --workers parameter (#2514)
  • \n
  • Fixed feature detection for positional-only arguments in lambdas (#2532)
  • \n
  • Bumped typed-ast version minimum to 1.4.3 for 3.10 compatibility (#2519)
  • \n
  • Fixed a Python 3.10 compatibility issue where the loop argument was still being passed\neven though it has been removed (#2580)
  • \n
  • Deprecate Python 2 formatting support (#2523)
  • \n
\n

Blackd

\n
    \n
  • Remove dependency on aiohttp-cors (#2500)
  • \n
  • Bump required aiohttp version to 3.7.4 (#2509)
  • \n
\n

Black-Primer

\n
    \n
  • Add primer support for --projects (#2555)
  • \n
  • Print primer summary after individual failures (#2570)
  • \n
\n

Integrations

\n
    \n
  • Allow to pass target_version in the vim plugin (#1319)
  • \n
  • Install build tools in docker file and use multi-stage build to keep the image size\ndown (#2582)
  • \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=21.9b0&new-version=21.11b0)](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": "2021-11-17T13:13:55Z", "updated_at": "2021-11-18T13:11:17Z", "closed_at": "2021-11-18T13:11:15Z", "merged_at": null, "merge_commit_sha": "348147b356cdd38cfdce412675a1d0865b93b3b1", "assignee": null, "milestone": null, "draft": 0, "head": "b02c35a00e2036ded2944890b04485213df4c8f4", "base": "0156c6b5e52d541e93f0d68e9245f20ae83bc933", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1514", "merged_by": null, "auto_merge": null} {"id": 365218391, "node_id": "MDExOlB1bGxSZXF1ZXN0MzY1MjE4Mzkx", "number": 660, "state": "closed", "locked": 0, "title": "gcloud run is now GA, s/beta//", "user": {"value": 813732, "label": "glasnt"}, "body": "", "created_at": "2020-01-21T10:08:38Z", "updated_at": "2020-01-22T03:41:09Z", "closed_at": "2020-01-21T23:28:12Z", "merged_at": "2020-01-21T23:28:12Z", "merge_commit_sha": "34d77d780f68b778fd9d6ebbaf69f250436f055f", "assignee": null, "milestone": null, "draft": 0, "head": "894e96026b838288f926f62914123a1f86139793", "base": "3c861f363df02a59a67c59036278338e4760d2ed", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/660", "merged_by": null, "auto_merge": null} {"id": 805356220, "node_id": "PR_kwDOBm6k_c4wAMK8", "number": 1562, "state": "closed", "locked": 0, "title": "Update janus requirement from <0.8,>=0.6.2 to >=0.6.2,<1.1", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version.\n
\nRelease notes\n

Sourced from janus's releases.

\n
\n

janus 1.0.0 release

\n
    \n
  • Dropped Python 3.6 support
  • \n
  • Janus is marked as stable, no API changes was made for years
  • \n
\n
\n
\n
\nChangelog\n

Sourced from janus's changelog.

\n
\n

1.0.0 (2021-12-17)

\n
    \n
  • Drop Python 3.6 support
  • \n
\n

0.7.0 (2021-11-24)

\n
    \n
  • Add SyncQueue and AsyncQueue Protocols to provide type hints for sync and async queues #374
  • \n
\n

0.6.2 (2021-10-24)

\n
    \n
  • Fix Python 3.10 compatibility #358
  • \n
\n

0.6.1 (2020-10-26)

\n
    \n
  • \n

    Raise RuntimeError on queue.join() after queue closing. #295

    \n
  • \n
  • \n

    Replace timeout type from Optional[int] to Optional[float] #267

    \n
  • \n
\n

0.6.0 (2020-10-10)

\n
    \n
  • \n

    Drop Python 3.5, the minimal supported version is Python 3.6

    \n
  • \n
  • \n

    Support Python 3.9

    \n
  • \n
  • \n

    Refomat with black

    \n
  • \n
\n

0.5.0 (2020-04-23)

\n
    \n
  • Remove explicit loop arguments and forbid creating queues outside event loops #246
  • \n
\n

0.4.0 (2018-07-28)

\n
    \n
  • \n

    Add py.typed macro #89

    \n
  • \n
  • \n

    Drop python 3.4 support and fix minimal version python3.5.3 #88

    \n
  • \n
  • \n

    Add property with that indicates if queue is closed #86

    \n
  • \n
\n

0.3.2 (2018-07-06)

\n
    \n
  • Fixed python 3.7 support #97
  • \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": "2021-12-17T13:11:10Z", "updated_at": "2021-12-17T23:08:29Z", "closed_at": "2021-12-17T23:08:28Z", "merged_at": "2021-12-17T23:08:28Z", "merge_commit_sha": "35cba9e85a574cebf2986b64107fa84d02bd86ad", "assignee": null, "milestone": null, "draft": 0, "head": "2f008e88820d940facf6219c224def7729c81df1", "base": "0663d5525cc41e9260ac7d1f6386d3a6eb5ad2a9", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1562", "merged_by": null, "auto_merge": null} {"id": 275861559, "node_id": "MDExOlB1bGxSZXF1ZXN0Mjc1ODYxNTU5", "number": 449, "state": "closed", "locked": 0, "title": "Apply black to everything", "user": {"value": 9599, "label": "simonw"}, "body": "I've been hesitating on this for literally months, because I'm not at all excited about the giant diff that will result. But I've been using black on many of my other projects (most actively [sqlite-utils](https://github.com/simonw/sqlite-utils)) and the productivity boost is undeniable: I don't have to spend a single second thinking about code formatting any more!\r\n\r\nSo it's worth swallowing the one-off pain and moving on in a new, black-enabled world.", "created_at": "2019-05-03T21:57:26Z", "updated_at": "2019-05-04T02:17:14Z", "closed_at": "2019-05-04T02:15:15Z", "merged_at": "2019-05-04T02:15:15Z", "merge_commit_sha": "35d6ee2790e41e96f243c1ff58be0c9c0519a8ce", "assignee": null, "milestone": null, "draft": 0, "head": "9683aeb2394a4b7e44499b8a0240af3baafda832", "base": "66c87cee0c7344c7877373c60b180c766c206101", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/449", "merged_by": null, "auto_merge": null} {"id": 1520248889, "node_id": "PR_kwDOBm6k_c5anSg5", "number": 2191, "state": "closed", "locked": 0, "title": "Move `permissions`, `allow` blocks, canned queries and more out of `metadata.yaml` and into `datasette.yaml`", "user": {"value": 15178711, "label": "asg017"}, "body": "The PR moves the following fields from `metadata.yaml` to `datasette.yaml`:\r\n\r\n```\r\npermissions\r\nallow\r\nallow_sql\r\nqueries\r\nextra_css_urls\r\nextra_js_urls\r\n```\r\n\r\nThis is a significant breaking change that users will need to upgrade their `metadata.yaml` files for. But the format/locations are similar to the previous version, so it shouldn't be too difficult to upgrade.\r\n\r\nOne note: I'm still working on the Configuration docs, specifically the \"reference\" section. Though it's pretty small, the rest of read to review", "created_at": "2023-09-18T21:21:16Z", "updated_at": "2023-10-12T16:16:38Z", "closed_at": "2023-10-12T16:16:38Z", "merged_at": "2023-10-12T16:16:38Z", "merge_commit_sha": "35deaabcb105903790d18710a26e77545f6852ce", "assignee": null, "milestone": null, "draft": 0, "head": "18b48f879b68d1e80e3adbae056710a6238b16bb", "base": "6ed7908580fa2ba9297c3225d85c56f8b08b9937", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2191", "merged_by": null, "auto_merge": null} {"id": 608334096, "node_id": "MDExOlB1bGxSZXF1ZXN0NjA4MzM0MDk2", "number": 1291, "state": "closed", "locked": 0, "title": "Update docs: explain allow_download setting", "user": {"value": 5413548, "label": "louispotok"}, "body": "This fixes one possible source of confusion seen in #502 and clarifies\r\nwhen database downloads will be shown and allowed.", "created_at": "2021-04-03T05:28:33Z", "updated_at": "2021-06-05T19:48:51Z", "closed_at": "2021-06-05T19:48:51Z", "merged_at": "2021-06-05T19:48:51Z", "merge_commit_sha": "368aa5f1b16ca35f82d90ff747023b9a2bfa27c1", "assignee": null, "milestone": null, "draft": 0, "head": "9bf089faded74c96aced22332008126324a37f7a", "base": "0a7621f96f8ad14da17e7172e8a7bce24ef78966", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1291", "merged_by": null, "auto_merge": null} {"id": 1432754160, "node_id": "PR_kwDOBm6k_c5VZhfw", "number": 2100, "state": "open", "locked": 0, "title": "Make primary key view accessible to render_cell hook", "user": {"value": 1563881, "label": "meowcat"}, "body": "\r\n\r\n\r\n----\n:books: Documentation preview :books:: https://datasette--2100.org.readthedocs.build/en/2100/\n\r\n", "created_at": "2023-07-13T09:30:36Z", "updated_at": "2023-08-10T13:15:41Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "37e72ded81cba41c7597a4287e73c47570dca2c7", "assignee": null, "milestone": null, "draft": 0, "head": "5639f9d943e55d6990b40db726aa59790724899a", "base": "33251d04e78d575cca62bb59069bb43a7d924746", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2100", "merged_by": null, "auto_merge": null} {"id": 474703007, "node_id": "MDExOlB1bGxSZXF1ZXN0NDc0NzAzMDA3", "number": 952, "state": "closed", "locked": 0, "title": "Update black requirement from ~=19.10b0 to >=19.10,<21.0", "user": {"value": 27856297, "label": "dependabot-preview[bot]"}, "body": "Updates the requirements on [black](https://github.com/psf/black) to permit the latest version.\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

20.8b1

\n

Packaging

\n
    \n
  • explicitly depend on Click 7.1.2 or newer as Black no longer works with versions\nolder than 7.0
  • \n
\n

20.8b0

\n

Black

\n
    \n
  • \n

    re-implemented support for explicit trailing commas: now it works consistently within\nany bracket pair, including nested structures (#1288 and duplicates)

    \n
  • \n
  • \n

    Black now reindents docstrings when reindenting code around it (#1053)

    \n
  • \n
  • \n

    Black now shows colored diffs (#1266)

    \n
  • \n
  • \n

    Black is now packaged using 'py3' tagged wheels (#1388)

    \n
  • \n
  • \n

    Black now supports Python 3.8 code, e.g. star expressions in return statements\n(#1121)

    \n
  • \n
  • \n

    Black no longer normalizes capital R-string prefixes as those have a\ncommunity-accepted meaning (#1244)

    \n
  • \n
  • \n

    Black now uses exit code 2 when specified configuration file doesn't exit (#1361)

    \n
  • \n
  • \n

    Black now works on AWS Lambda (#1141)

    \n
  • \n
  • \n

    added --force-exclude argument (#1032)

    \n
  • \n
  • \n

    removed deprecated --py36 option (#1236)

    \n
  • \n
  • \n

    fixed --diff output when EOF is encountered (#526)

    \n
  • \n
  • \n

    fixed # fmt: off handling around decorators (#560)

    \n
  • \n
  • \n

    fixed unstable formatting with some # type: ignore comments (#1113)

    \n
  • \n
  • \n

    fixed invalid removal on organizing brackets followed by indexing (#1575)

    \n
  • \n
  • \n

    introduced black-primer, a CI tool that allows us to run regression tests against\nexisting open source users of Black (#1402)

    \n
  • \n
  • \n

    introduced property-based fuzzing to our test suite based on Hypothesis and\nHypothersmith (#1566)

    \n
  • \n
  • \n

    implemented experimental and disabled by default long string rewrapping (#1132),\nhidden under a --experimental-string-processing flag while it's being worked on;

    \n
  • \n
\n\n
\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- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language\n- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language\n- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language\n- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language\n- `@dependabot badge me` will comment on this PR with code to add a \"Dependabot enabled\" badge to your readme\n\nAdditionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):\n- Update frequency (including time of day and day of week)\n- Pull request limits (per update run and/or open at any time)\n- Out-of-range updates (receive only lockfile updates, if desired)\n- Security updates (receive only security updates, if desired)\n\n\n\n
", "created_at": "2020-08-27T13:31:36Z", "updated_at": "2020-09-02T22:26:17Z", "closed_at": "2020-09-02T22:26:16Z", "merged_at": null, "merge_commit_sha": "37f8531b321855bdbc58960281957febaa59e4b9", "assignee": null, "milestone": null, "draft": 0, "head": "7b1354706467136f5030504fe799201b13333a95", "base": "86aefc39c5aca01b00dbc57ba386a6743c21fb46", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/952", "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
  • Introduce the 2023 stable style, which incorporates most aspects of last year's preview style (#3418). Specific changes:\n
      \n
    • Enforce empty lines before classes and functions with sticky leading comments (#3302) (22.12.0)
    • \n
    • Reformat empty and whitespace-only files as either an empty file (if no newline is present) or as a single newline character (if a newline is present) (#3348) (22.12.0)
    • \n
    • Correctly handle trailing commas that are inside a line's leading non-nested parens (#3370) (22.12.0)
    • \n
    • --skip-string-normalization / -S now prevents docstring prefixes from being normalized as expected (#3168) (since 22.8.0)
    • \n
    • When using --skip-magic-trailing-comma or -C, trailing commas are stripped from subscript expressions with more than 1 element (#3209) (22.8.0)
    • \n
    • Fix a string merging/split issue when a comment is present in the middle of implicitly concatenated strings on its own line (#3227) (22.8.0)
    • \n
    • Docstring quotes are no longer moved if it would violate the line length limit (#3044, #3430) (22.6.0)
    • \n
    • Parentheses around return annotations are now managed (#2990) (22.6.0)
    • \n
    • Remove unnecessary parentheses around awaited objects (#2991) (22.6.0)
    • \n
    • Remove unnecessary parentheses in with statements (#2926) (22.6.0)
    • \n
    • Remove trailing newlines after code block open (#3035) (22.6.0)
    • \n
    • Code cell separators #%% are now standardised to # %% (#2919) (22.3.0)
    • \n
    • Remove unnecessary parentheses from except statements (#2939) (22.3.0)
    • \n
    • Remove unnecessary parentheses from tuple unpacking in for loops (#2945) (22.3.0)
    • \n
    • Avoid magic-trailing-comma in single-element subscripts (#2942) (22.3.0)
    • \n
    \n
  • \n
  • Fix a crash when a colon line is marked between # fmt: off and # fmt: on (#3439)
  • \n
\n

Preview style

\n\n
    \n
  • Format hex codes in unicode escape sequences in string literals (#2916)
  • \n
  • Add parentheses around if-else expressions (#2278)
  • \n
  • Improve performance on large expressions that contain many strings (#3467)
  • \n
  • Fix a crash in preview style with assert + parenthesized string (#3415)
  • \n
  • Fix crashes in preview style with walrus operators used in function return annotations and except clauses (#3423)
  • \n
  • Fix a crash in preview advanced string processing where mixed implicitly concatenated regular and f-strings start with an empty span (#3463)
  • \n
  • Fix a crash in preview advanced string processing where a standalone comment is placed before a dict's value (#3469)
  • \n
  • Fix an issue where extra empty lines are added when a decorator has # fmt: skip applied or there is a standalone comment between decorators (#3470)
  • \n
  • Do not put the closing quotes in a docstring on a separate line, even if the line is too long (#3430)
  • \n
  • Long values in dict literals are now wrapped in parentheses; correspondingly unnecessary parentheses around short values in dict literals are now removed; long string lambda values are now wrapped in parentheses (#3440)
  • \n
  • Fix two crashes in preview style involving edge cases with docstrings (#3451)
  • \n
  • Exclude string type annotations from improved string processing; fix crash when the return type annotation is stringified and spans across multiple lines (#3462)
  • \n
  • Wrap multiple context managers in parentheses when targeting Python 3.9+ (#3489)
  • \n
  • Fix several crashes in preview style with walrus operators used in with statements or tuples (#3473)
  • \n
  • Fix an invalid quote escaping bug in f-string expressions where it produced invalid code. Implicitly concatenated f-strings with different quotes can now be merged or quote-normalized by changing the quotes used in expressions. (#3509)
  • \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
  • Introduce the 2023 stable style, which incorporates most aspects of last year's\npreview style (#3418). Specific changes:\n
      \n
    • Enforce empty lines before classes and functions with sticky leading comments\n(#3302) (22.12.0)
    • \n
    • Reformat empty and whitespace-only files as either an empty file (if no newline is\npresent) or as a single newline character (if a newline is present) (#3348)\n(22.12.0)
    • \n
    • Implicitly concatenated strings used as function args are now wrapped inside\nparentheses (#3307) (22.12.0)
    • \n
    • Correctly handle trailing commas that are inside a line's leading non-nested parens\n(#3370) (22.12.0)
    • \n
    • --skip-string-normalization / -S now prevents docstring prefixes from being\nnormalized as expected (#3168) (since 22.8.0)
    • \n
    • When using --skip-magic-trailing-comma or -C, trailing commas are stripped from\nsubscript expressions with more than 1 element (#3209) (22.8.0)
    • \n
    • Implicitly concatenated strings inside a list, set, or tuple are now wrapped inside\nparentheses (#3162) (22.8.0)
    • \n
    • Fix a string merging/split issue when a comment is present in the middle of\nimplicitly concatenated strings on its own line (#3227) (22.8.0)
    • \n
    • Docstring quotes are no longer moved if it would violate the line length limit\n(#3044, #3430) (22.6.0)
    • \n
    • Parentheses around return annotations are now managed (#2990) (22.6.0)
    • \n
    • Remove unnecessary parentheses around awaited objects (#2991) (22.6.0)
    • \n
    • Remove unnecessary parentheses in with statements (#2926) (22.6.0)
    • \n
    • Remove trailing newlines after code block open (#3035) (22.6.0)
    • \n
    • Code cell separators #%% are now standardised to # %% (#2919) (22.3.0)
    • \n
    • Remove unnecessary parentheses from except statements (#2939) (22.3.0)
    • \n
    • Remove unnecessary parentheses from tuple unpacking in for loops (#2945) (22.3.0)
    • \n
    • Avoid magic-trailing-comma in single-element subscripts (#2942) (22.3.0)
    • \n
    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n
    \n
  • b0d1fba Prepare release 23.1.0 (#3536)
  • \n
  • 69ca0a4 Infer target version based on project metadata (#3219)
  • \n
  • c4bd2e3 Draft for Black 2023 stable style (#3418)
  • \n
  • 226cbf0 Fix unsafe cast in linegen.py w/ await yield handling (#3533)
  • \n
  • f4ebc68 Upgrade isort (#3534)
  • \n
  • 6407ebb Remove Python version in the_basics.md (#3528)
  • \n
  • 196b1f3 Fix black --help output for --python-cell-magics option to be reproducibl...
  • \n
  • d950f15 Update document now that paren wrapping CMs on Python 3.9+ is implemented (#3...
  • \n
  • a36878e Fix an invalid quote escaping bug in f-string expressions (#3509)
  • \n
  • eabff67 Format hex code in unicode escape sequences in string literals (#2916)
  • \n
  • Additional commits viewable in compare view
  • \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": 1429431050, "node_id": "PR_kwDOBm6k_c5VM2MK", "number": 2099, "state": "closed", "locked": 0, "title": "Bump black from 23.3.0 to 23.7.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 23.3.0 to 23.7.0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

23.7.0

\n

Highlights

\n
    \n
  • Runtime support for Python 3.7 has been removed. Formatting 3.7 code will still be\nsupported until further notice (#3765)
  • \n
\n

Stable style

\n
    \n
  • Fix a bug where an illegal trailing comma was added to return type annotations using\nPEP 604 unions (#3735)
  • \n
  • Fix several bugs and crashes where comments in stub files were removed or mishandled\nunder some circumstances (#3745)
  • \n
  • Fix a crash with multi-line magic comments like type: ignore within parentheses\n(#3740)
  • \n
  • Fix error in AST validation when Black removes trailing whitespace in a type comment\n(#3773)
  • \n
\n

Preview style

\n
    \n
  • Implicitly concatenated strings used as function args are no longer wrapped inside\nparentheses (#3640)
  • \n
  • Remove blank lines between a class definition and its docstring (#3692)
  • \n
\n

Configuration

\n
    \n
  • The --workers argument to Black can now be specified via the BLACK_NUM_WORKERS\nenvironment variable (#3743)
  • \n
  • .pytest_cache, .ruff_cache and .vscode are now excluded by default (#3691)
  • \n
  • Fix Black not honouring pyproject.toml settings when running --stdin-filename\nand the pyproject.toml found isn't in the current working directory (#3719)
  • \n
  • Black will now error if exclude and extend-exclude have invalid data types in\npyproject.toml, instead of silently doing the wrong thing (#3764)
  • \n
\n

Packaging

\n
    \n
  • Upgrade mypyc from 0.991 to 1.3 (#3697)
  • \n
  • Remove patching of Click that mitigated errors on Python 3.6 with LANG=C (#3768)
  • \n
\n

Parser

\n
    \n
  • Add support for the new PEP 695 syntax in Python 3.12 (#3703)
  • \n
\n

Performance

\n
    \n
  • Speed up Black significantly when the cache is full (#3751)
  • \n
  • Avoid importing IPython in a case where we wouldn't need it (#3748)
  • \n
\n

Output

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

23.7.0

\n

Highlights

\n
    \n
  • Runtime support for Python 3.7 has been removed. Formatting 3.7 code will still be\nsupported until further notice (#3765)
  • \n
\n

Stable style

\n
    \n
  • Fix a bug where an illegal trailing comma was added to return type annotations using\nPEP 604 unions (#3735)
  • \n
  • Fix several bugs and crashes where comments in stub files were removed or mishandled\nunder some circumstances (#3745)
  • \n
  • Fix a crash with multi-line magic comments like type: ignore within parentheses\n(#3740)
  • \n
  • Fix error in AST validation when Black removes trailing whitespace in a type comment\n(#3773)
  • \n
\n

Preview style

\n
    \n
  • Implicitly concatenated strings used as function args are no longer wrapped inside\nparentheses (#3640)
  • \n
  • Remove blank lines between a class definition and its docstring (#3692)
  • \n
\n

Configuration

\n
    \n
  • The --workers argument to Black can now be specified via the BLACK_NUM_WORKERS\nenvironment variable (#3743)
  • \n
  • .pytest_cache, .ruff_cache and .vscode are now excluded by default (#3691)
  • \n
  • Fix Black not honouring pyproject.toml settings when running --stdin-filename\nand the pyproject.toml found isn't in the current working directory (#3719)
  • \n
  • Black will now error if exclude and extend-exclude have invalid data types in\npyproject.toml, instead of silently doing the wrong thing (#3764)
  • \n
\n

Packaging

\n
    \n
  • Upgrade mypyc from 0.991 to 1.3 (#3697)
  • \n
  • Remove patching of Click that mitigated errors on Python 3.6 with LANG=C (#3768)
  • \n
\n

Parser

\n
    \n
  • Add support for the new PEP 695 syntax in Python 3.12 (#3703)
  • \n
\n

Performance

\n
    \n
  • Speed up Black significantly when the cache is full (#3751)
  • \n
  • Avoid importing IPython in a case where we wouldn't need it (#3748)
  • \n
\n

Output

\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=23.3.0&new-version=23.7.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--2099.org.readthedocs.build/en/2099/\n\r\n", "created_at": "2023-07-11T13:05:53Z", "updated_at": "2023-07-21T21:19:25Z", "closed_at": "2023-07-21T21:19:24Z", "merged_at": "2023-07-21T21:19:24Z", "merge_commit_sha": "3a51ca901427ac93b0ed0638fd1f82fb647a299a", "assignee": null, "milestone": null, "draft": 0, "head": "2761e4db2429e5d5588d8d1e54f30a6aafa7456b", "base": "0f7192b6154edb576c41b55bd3f2a3f53e5f436a", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/2099", "merged_by": null, "auto_merge": null} {"id": 161982711, "node_id": "MDExOlB1bGxSZXF1ZXN0MTYxOTgyNzEx", "number": 178, "state": "closed", "locked": 0, "title": "If metadata exists, add it to heroku launch command", "user": {"value": 82988, "label": "psychemedia"}, "body": "The heroku build does seem to make use of any provided `metadata.json` file.\r\n\r\nAdd the `--metadata` switch to the Heroku web launch command if a `metadata.json` file is available.\r\n\r\nAddresses: https://github.com/simonw/datasette/issues/177", "created_at": "2018-01-09T21:42:21Z", "updated_at": "2018-01-15T09:42:46Z", "closed_at": "2018-01-14T21:05:16Z", "merged_at": "2018-01-14T21:05:16Z", "merge_commit_sha": "3a56a2cd7eea5d477d5d936b01098be5cba0d98e", "assignee": null, "milestone": null, "draft": 0, "head": "1bc9ed98c4f4fd91b70560ac8f507a2fddbd8317", "base": "306e1c6ac4f00cc25d676a6ee660938f5b27427c", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/178", "merged_by": null, "auto_merge": null} {"id": 998860509, "node_id": "PR_kwDOBm6k_c47iWbd", "number": 1772, "state": "open", "locked": 0, "title": "Convert to setup.cfg", "user": {"value": 89725, "label": "kfdm"}, "body": "Recent versions of setuptools can run most things from setup.cfg so one can have a simpler version that does not require executing code on install.\r\n\r\nThe bulk of the changes were automated by running https://pypi.org/project/setup-py-upgrade/ with a few minor edits for the bits that it can not auto convert (the initial `get_long_description()` and `get_version()` can not be automatically converted)", "created_at": "2022-07-18T03:39:53Z", "updated_at": "2022-07-18T03:39:53Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "3abb0780f97901ae39f8a206c7c6d376f8574ffc", "assignee": null, "milestone": null, "draft": 0, "head": "c1b2f539c8d4cabe0a48d07bd8ce3fd1439a8f08", "base": "01369176b0a8943ab45292ffc6f9c929b80a00e8", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1772", "merged_by": null, "auto_merge": null}