{"id": 500256485, "node_id": "MDExOlB1bGxSZXF1ZXN0NTAwMjU2NDg1", "number": 1000, "state": "closed", "locked": 0, "title": "datasette.client internal requests mechanism", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #943", "created_at": "2020-10-08T23:58:25Z", "updated_at": "2020-10-09T16:11:26Z", "closed_at": "2020-10-09T16:11:25Z", "merged_at": "2020-10-09T16:11:25Z", "merge_commit_sha": "8f97b9b58e77f82fef1f10e9c9f6754b993544b6", "assignee": {"value": 9599, "label": "simonw"}, "milestone": {"value": 5971510, "label": "Datasette 0.50"}, "draft": 0, "head": "8a80c79deb640bc1a1864132a3564ccca59e8858", "base": "7249ac5ca04b5ddc6517750326ee7e522cc49145", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1000", "merged_by": null, "auto_merge": null} {"id": 500798091, "node_id": "MDExOlB1bGxSZXF1ZXN0NTAwNzk4MDkx", "number": 1008, "state": "open", "locked": 0, "title": "Add json_loads and json_dumps jinja2 filters", "user": {"value": 649467, "label": "mhalle"}, "body": "", "created_at": "2020-10-09T20:11:34Z", "updated_at": "2020-12-15T02:30:28Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "e33e91ca7c9b2fdeab9d8179ce0d603918b066aa", "assignee": null, "milestone": null, "draft": 0, "head": "40858989d47043743d6b1c9108528bec6a317e43", "base": "1bdbc8aa7f4fd7a768d456146e44da86cb1b36d1", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1008", "merged_by": null, "auto_merge": null} {"id": 501579088, "node_id": "MDExOlB1bGxSZXF1ZXN0NTAxNTc5MDg4", "number": 1017, "state": "closed", "locked": 0, "title": "Update janus requirement from <0.6,>=0.4 to >=0.4,<0.7", "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

Changes

\n

0.5.0 (2020-04-23)

\n\n

0.4.0 (2018-07-28)

\n\n

0.3.2 (2018-07-06)

\n\n

0.3.1 (2018-01-30)

\n\n

0.3.0 (2017-02-21)

\n\n

0.2.4 (2016-12-05)

\n\n

0.2.3 (2016-07-12)

\n\n

0.2.2 (2016-07-11)

\n\n

0.2.1 (2016-03-24)

\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-10-12T13:29:46Z", "updated_at": "2020-10-14T21:52:08Z", "closed_at": "2020-10-14T21:52:07Z", "merged_at": "2020-10-14T21:52:07Z", "merge_commit_sha": "7f2edb5dd2074dce0090659021991695a984844b", "assignee": null, "milestone": null, "draft": 0, "head": "f30d9da06b02a53f880b6fe7a7af9d3ff719dede", "base": "acf07a67722aa74828744726187690b59d342494", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1017", "merged_by": null, "auto_merge": null} {"id": 501579315, "node_id": "MDExOlB1bGxSZXF1ZXN0NTAxNTc5MzE1", "number": 1018, "state": "closed", "locked": 0, "title": "Update asgiref requirement from ~=3.2.10 to >=3.2.10,<3.4.0", "user": {"value": 27856297, "label": "dependabot-preview[bot]"}, "body": "Updates the requirements on [asgiref](https://github.com/django/asgiref) to permit the latest version.\n
\nChangelog\n

Sourced from asgiref's changelog.

\n
\n

3.3.0 (2020-10-09)

\n\n

3.2.10 (2020-08-18)

\n\n

3.2.9 (2020-06-16)

\n\n

3.2.8 (2020-06-15)

\n\n

3.2.7 (2020-03-24)

\n\n

3.2.6 (2020-03-23)

\n\n

3.2.5 (2020-03-11)

\n\n

3.2.4 (2020-03-10)

\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-10-12T13:30:09Z", "updated_at": "2020-10-14T21:51:36Z", "closed_at": "2020-10-14T21:51:35Z", "merged_at": "2020-10-14T21:51:35Z", "merge_commit_sha": "b4a8e70957517ff44d6a9121422d266a3c5fd664", "assignee": null, "milestone": null, "draft": 0, "head": "4b021be087d0dba2b4ac0b872b2512f5b2203397", "base": "acf07a67722aa74828744726187690b59d342494", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1018", "merged_by": null, "auto_merge": null} {"id": 503685077, "node_id": "MDExOlB1bGxSZXF1ZXN0NTAzNjg1MDc3", "number": 1022, "state": "closed", "locked": 0, "title": "Fix table name in spatialite example command", "user": {"value": 639012, "label": "jsfenfen"}, "body": "The example query for creating a new point geometry seems to be using a table called 'museums' but at one point it instead uses 'events'. I *believe* it is intended to be museums (the example makes more sense if so). ", "created_at": "2020-10-14T22:19:34Z", "updated_at": "2020-10-14T23:46:46Z", "closed_at": "2020-10-14T23:46:46Z", "merged_at": "2020-10-14T23:46:46Z", "merge_commit_sha": "4f7c0ebd85ccd8c1853d7aa0147628f7c1b749cc", "assignee": null, "milestone": null, "draft": 0, "head": "7cef70a5528af4626302729ff0ebc88d92b5f4ca", "base": "7f2edb5dd2074dce0090659021991695a984844b", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1022", "merged_by": null, "auto_merge": null} {"id": 505339515, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA1MzM5NTE1", "number": 1029, "state": "closed", "locked": 0, "title": "fix(docs): broken link", "user": {"value": 17075617, "label": "jthodge"}, "body": "This PR fixes a broken markdown link in the `Publish` docs page.", "created_at": "2020-10-17T20:03:20Z", "updated_at": "2020-10-17T20:05:04Z", "closed_at": "2020-10-17T20:05:04Z", "merged_at": "2020-10-17T20:05:04Z", "merge_commit_sha": "568bd7bbf590861687db8c318f3d8cfcd1dfb47a", "assignee": null, "milestone": null, "draft": 0, "head": "a65d30e832d7e65adc65dcce8ab006227e4dafe4", "base": "4f7c0ebd85ccd8c1853d7aa0147628f7c1b749cc", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1029", "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": 505769462, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA1NzY5NDYy", "number": 1031, "state": "closed", "locked": 0, "title": "Fallback to databases in inspect-data.json when no -i options are passed", "user": {"value": 299380, "label": "frankier"}, "body": "Currenlty `Datasette.__init__` checks immutables against None to decide whether to fallback to inspect-data.json. This patch modifies the serve command to pass None when no -i options are passed so this fallback works correctly.", "created_at": "2020-10-19T07:51:06Z", "updated_at": "2021-03-29T01:46:45Z", "closed_at": "2021-03-29T00:23:41Z", "merged_at": null, "merge_commit_sha": "3ee6b39e96ef684e1ac393bb269d804e957fee1d", "assignee": null, "milestone": null, "draft": 0, "head": "7e7eaa4e712b01de0b5a8a1b90145bdc1c3cd731", "base": "c37a0a93ecb847e66cfe7b6f9452ba210fcae91b", "author_association": "FIRST_TIME_CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1031", "merged_by": null, "auto_merge": null} {"id": 507267087, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA3MjY3MDg3", "number": 1038, "state": "closed", "locked": 0, "title": "DOC: Fix syntax error", "user": {"value": 194147, "label": "gerrymanoim"}, "body": "If I understand https://docs.datasette.io/en/stable/plugin_hooks.html#register-routes correctly, `register_routes` should return a `List[Tuple[str, Callable]]`. I believe the current code in documentation has a syntax error (extra `)`). ", "created_at": "2020-10-21T05:45:38Z", "updated_at": "2020-10-21T22:57:21Z", "closed_at": "2020-10-21T22:44:17Z", "merged_at": "2020-10-21T22:44:17Z", "merge_commit_sha": "6e26b057996c6f3fefa8ad528e2759e53c738844", "assignee": null, "milestone": null, "draft": 0, "head": "7fc0cce6a2d13ccc82c3584996acec236ae65df6", "base": "66120a7a1cb592e8a21164cf537f62a4d7ab1dfc", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1038", "merged_by": null, "auto_merge": null} {"id": 152870030, "node_id": "MDExOlB1bGxSZXF1ZXN0MTUyODcwMDMw", "number": 104, "state": "closed", "locked": 0, "title": "[WIP] Add publish to heroku support", "user": {"value": 21148, "label": "jacobian"}, "body": "\r\n\r\nRefs #90 ", "created_at": "2017-11-15T19:56:22Z", "updated_at": "2017-11-21T20:55:05Z", "closed_at": "2017-11-21T20:55:05Z", "merged_at": "2017-11-21T20:55:05Z", "merge_commit_sha": "e47117ce1d15f11246a3120aa49de70205713d05", "assignee": null, "milestone": null, "draft": 0, "head": "de42240afd1e3829fd21cbe77a89ab0eaab20d78", "base": "0331666e346c68b86de4aa19fbb37f3a408d37ca", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/104", "merged_by": null, "auto_merge": null} {"id": 507903392, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA3OTAzMzky", "number": 1040, "state": "closed", "locked": 0, "title": "/db/table/-/blob/pk/column.blob download URL", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1036. Still needs:\r\n\r\n- [x] Comprehensive tests across all of the code branches, plus permissions\r\n- [x] A bit more refactoring to share logic cleanly with `RowView`\r\n- ~~A configuration option to disable this feature (probably)~~", "created_at": "2020-10-21T22:39:15Z", "updated_at": "2020-10-24T23:09:20Z", "closed_at": "2020-10-24T23:09:19Z", "merged_at": "2020-10-24T23:09:19Z", "merge_commit_sha": "5a1519796037105bc20bcf2f91a76e022926c204", "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "draft": 0, "head": "4f3165f25fd9241fcf1291c797f4c77766b954dc", "base": "bf82b3d6a605c9ddadd5fb739249dfe6defaf635", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1040", "merged_by": null, "auto_merge": null} {"id": 508719567, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA4NzE5NTY3", "number": 1043, "state": "closed", "locked": 0, "title": "Include LICENSE in sdist", "user": {"value": 45380, "label": "bollwyvl"}, "body": "Hi, thanks for `datasette`! \r\n\r\nThis PR adds the `LICENSE` to source distributions, which seems the norm for Apache-2.0 stuff.\r\n\r\nI noticed the [0.50.2 sdist](https://files.pythonhosted.org/packages/f2/ba/1b5f182c3f1769c0863bcaa77406bdcb81c92e31bb579959c01b1d8951c0/datasette-0.50.2.tar.gz) doesn't ship `LICENSE`, but the 0.5.2 `whl` does, so I'm assuming the intent _is_ to ship... and it's a one-liner!\r\n\r\nMotivation: \r\n\r\nIt might be a bit of a slog, but I'm looking to see about getting `datasette` (and friends!) available on conda-forge. There are a few missing upstreams (`asgi-csrf`, `python-basecov`, `mergedeep`) and some of the plugins don't even appear to _have_ tarballs (just `whl`!), but the little stuff like licenses are nice to get out handled upstream vs separately grabbing them.", "created_at": "2020-10-23T05:04:12Z", "updated_at": "2020-10-26T00:14:57Z", "closed_at": "2020-10-23T20:54:35Z", "merged_at": "2020-10-23T20:54:35Z", "merge_commit_sha": "976e5f74aae1fa0d406df6691dc8b5feeebe8788", "assignee": null, "milestone": null, "draft": 0, "head": "dc4129cb37060b52775d96e756f7cdb65ee76bc3", "base": "d0cc6f4c32e1f89238ddec782086b3122f445bd4", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1043", "merged_by": null, "auto_merge": null} {"id": 508720660, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA4NzIwNjYw", "number": 1044, "state": "closed", "locked": 0, "title": "Add minimum supported python", "user": {"value": 45380, "label": "bollwyvl"}, "body": "Thanks for `datasette`!\r\n\r\nThis PR adds `python_requires` to formally signal the [minimum supported python version](https://packaging.python.org/guides/dropping-older-python-versions/#specify-the-version-ranges-for-supported-python-distributions) (which is pointed out with classifiers, so seems pretty straightforward).", "created_at": "2020-10-23T05:08:03Z", "updated_at": "2020-10-23T20:53:08Z", "closed_at": "2020-10-23T20:53:08Z", "merged_at": "2020-10-23T20:53:08Z", "merge_commit_sha": "cab8e65261b117b493af6a0b21aa2e1ae4564419", "assignee": null, "milestone": null, "draft": 0, "head": "6453ab18e56b36bc912b6f24c4a43002c6084ade", "base": "d0cc6f4c32e1f89238ddec782086b3122f445bd4", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1044", "merged_by": null, "auto_merge": null} {"id": 509590205, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5NTkwMjA1", "number": 1049, "state": "closed", "locked": 0, "title": "Add template block prior to extra URL loaders", "user": {"value": 82988, "label": "psychemedia"}, "body": "To handle packages that require Javascript state setting prior to loading a package (eg [`thebelab`](https://thebelab.readthedocs.io/en/latest/examples/minimal_example.html), provide a template block before the URLs are loaded.", "created_at": "2020-10-25T13:08:55Z", "updated_at": "2020-10-29T09:20:52Z", "closed_at": "2020-10-29T09:20:34Z", "merged_at": null, "merge_commit_sha": "99f994b14e2dbe22fda18b67dd5c824d359443fb", "assignee": null, "milestone": null, "draft": 0, "head": "50a743ad35684f09d3c3880f6af2019e59271237", "base": "42f4851e3e7885f1092f104d6c883cea40b12f02", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1049", "merged_by": null, "auto_merge": null} {"id": 511005542, "node_id": "MDExOlB1bGxSZXF1ZXN0NTExMDA1NTQy", "number": 1056, "state": "closed", "locked": 0, "title": "Radical new colour scheme and base styles, courtesy of @natbat", "user": {"value": 9599, "label": "simonw"}, "body": "", "created_at": "2020-10-27T19:31:48Z", "updated_at": "2020-10-27T19:39:57Z", "closed_at": "2020-10-27T19:39:56Z", "merged_at": "2020-10-27T19:39:56Z", "merge_commit_sha": "e5f5034bcdc71e4bc62a6a155ca60eb41910c335", "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "draft": 0, "head": "a7b2aabd5148c0ee382b583de68a4f0538f7dfb1", "base": "26bb4a268127da2c38f4241abe45444b2a6f7874", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1056", "merged_by": null, "auto_merge": null} {"id": 511549374, "node_id": "MDExOlB1bGxSZXF1ZXN0NTExNTQ5Mzc0", "number": 1059, "state": "closed", "locked": 0, "title": "Update aiofiles requirement from <0.6,>=0.4 to >=0.4,<0.7", "user": {"value": 27856297, "label": "dependabot-preview[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- `@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-10-28T13:32:40Z", "updated_at": "2020-10-28T17:08:29Z", "closed_at": "2020-10-28T17:08:28Z", "merged_at": "2020-10-28T17:08:28Z", "merge_commit_sha": "879617265262024edd93722adcdcb6c21e57f5f7", "assignee": null, "milestone": null, "draft": 0, "head": "e46327a745c5a4130b65bf340d19dccc76441841", "base": "7d9fedc176717a7e3d22a96575ae0aada5a65440", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1059", "merged_by": null, "auto_merge": null} {"id": 511868153, "node_id": "MDExOlB1bGxSZXF1ZXN0NTExODY4MTUz", "number": 1060, "state": "closed", "locked": 0, "title": "New explicit versioning mechanism", "user": {"value": 9599, "label": "simonw"}, "body": "- Remove all references to versioneer\r\n- Re-implement versioning to use a static string baked into the repo\r\n- Ensure that string is output by `datasette --version` and `/-/versions`\r\n\r\nRefs #1054", "created_at": "2020-10-28T22:14:55Z", "updated_at": "2020-10-29T03:38:17Z", "closed_at": "2020-10-29T03:38:16Z", "merged_at": "2020-10-29T03:38:16Z", "merge_commit_sha": "cefd058c1c216a184bb63c79abba66893977c18e", "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "draft": 0, "head": "4725d46780783e9875bde5957f053ba19cf92ff0", "base": "abcf0222496d8148b2e585ffa0ff192270a04b06", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1060", "merged_by": null, "auto_merge": null} {"id": 512545364, "node_id": "MDExOlB1bGxSZXF1ZXN0NTEyNTQ1MzY0", "number": 1061, "state": "closed", "locked": 0, "title": ".blob output renderer", "user": {"value": 9599, "label": "simonw"}, "body": "- [x] Remove the `/-/...blob/...` route I added in #1040 in place of the new `.blob` renderer URLs\r\n- [x] Link to new `.blob` download links on the arbitrary query page (using `_blob_hash=...`) - plus tests for this\r\n\r\nCloses #1050, Closes #1051", "created_at": "2020-10-29T20:25:08Z", "updated_at": "2020-10-29T22:01:40Z", "closed_at": "2020-10-29T22:01:39Z", "merged_at": "2020-10-29T22:01:39Z", "merge_commit_sha": "78b3eeaad9189eb737014f53212082684f4bb0d4", "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "draft": 0, "head": "1196d084de6a7a6f68c7705a6cc096bb8df132e3", "base": "d6f9ff71378c4eab34dad181c23cfc143a4aef2d", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1061", "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": 513106026, "node_id": "MDExOlB1bGxSZXF1ZXN0NTEzMTA2MDI2", "number": 1069, "state": "closed", "locked": 0, "title": "load_template() plugin hook", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1042", "created_at": "2020-10-30T15:59:45Z", "updated_at": "2020-10-30T17:47:20Z", "closed_at": "2020-10-30T17:47:19Z", "merged_at": "2020-10-30T17:47:19Z", "merge_commit_sha": "81dea4b07ab2b6f4eaaf248307d2b588472054a1", "assignee": null, "milestone": {"value": 6026070, "label": "0.51"}, "draft": 0, "head": "92f3840882a24da29d0d4073e5ed9d77fce438fc", "base": "fcf43589eb6a1f1d0432772a639fd35711c48e0c", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1069", "merged_by": null, "auto_merge": null} {"id": 152914480, "node_id": "MDExOlB1bGxSZXF1ZXN0MTUyOTE0NDgw", "number": 107, "state": "closed", "locked": 0, "title": "add support for ?field__isnull=1", "user": {"value": 3433657, "label": "raynae"}, "body": "Is this what you had in mind for [this issue](https://github.com/simonw/datasette/issues/64)?", "created_at": "2017-11-15T23:36:36Z", "updated_at": "2017-11-17T15:12:29Z", "closed_at": "2017-11-17T13:29:22Z", "merged_at": "2017-11-17T13:29:22Z", "merge_commit_sha": "ed2b3f25beac720f14869350baacc5f62b065194", "assignee": null, "milestone": null, "draft": 0, "head": "14d5bb572fadbd45973580bd9ad2a16c2bf12909", "base": "b7c4165346ee8b6a6fbd72d6ba2275a24a8a8ae3", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/107", "merged_by": null, "auto_merge": null} {"id": 518988879, "node_id": "MDExOlB1bGxSZXF1ZXN0NTE4OTg4ODc5", "number": 1085, "state": "closed", "locked": 0, "title": "Use FTS4 in fixtures", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1081", "created_at": "2020-11-11T06:44:30Z", "updated_at": "2020-11-12T00:02:59Z", "closed_at": "2020-11-12T00:02:58Z", "merged_at": "2020-11-12T00:02:58Z", "merge_commit_sha": "e8e0a6f284ca953b2980186c4356594c07bd1929", "assignee": null, "milestone": null, "draft": 0, "head": "51e7651c66aaf1804274ce68a6b5218bbba76338", "base": "2a981e2ac1d13125973904b777d00ea75e8df4e6", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1085", "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": 528997614, "node_id": "MDExOlB1bGxSZXF1ZXN0NTI4OTk3NjE0", "number": 1112, "state": "closed", "locked": 0, "title": "Fix --metadata doc usage", "user": {"value": 50527, "label": "jefftriplett"}, "body": "I stumbled on this while trying to figure out how to configure datasette-ripgrep via https://github.com/simonw/datasette-ripgrep/issues/15\r\n\r\nYou may not want to update the changelog (those are annoying) so I added two commits in case that's easier. ", "created_at": "2020-11-28T19:19:51Z", "updated_at": "2020-11-28T23:28:21Z", "closed_at": "2020-11-28T19:53:48Z", "merged_at": "2020-11-28T19:53:48Z", "merge_commit_sha": "bbde835a1fec01458e8d00929e7bab6d6a5ba948", "assignee": null, "milestone": {"value": 6055094, "label": "Datasette 0.52"}, "draft": 0, "head": "1a30fc259205df736daf068c57a0a6ae2c21ffa9", "base": "37d18a5bce08c9ee53c080f613bae84fc2ccc853", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1112", "merged_by": null, "auto_merge": null} {"id": 529783275, "node_id": "MDExOlB1bGxSZXF1ZXN0NTI5NzgzMjc1", "number": 1117, "state": "closed", "locked": 0, "title": "Support for generated columns", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1116. My first attempt at this worked on my laptop but broke in CI, so I'm going to iterate on it in a pull request instead.", "created_at": "2020-11-30T20:10:46Z", "updated_at": "2020-11-30T22:23:19Z", "closed_at": "2020-11-30T21:29:58Z", "merged_at": "2020-11-30T21:29:58Z", "merge_commit_sha": "461670a0b87efa953141b449a9a261919864ceb3", "assignee": null, "milestone": null, "draft": 0, "head": "ccdf2c650278b8b9465d3a2d7c916f3bb06c4f01", "base": "dea3c508b39528e566d711c38a467b3d372d220b", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1117", "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": 530125695, "node_id": "MDExOlB1bGxSZXF1ZXN0NTMwMTI1Njk1", "number": 1122, "state": "closed", "locked": 0, "title": "Fix misaligned table actions cog", "user": {"value": 3243482, "label": "abdusco"}, "body": "Fixes https://github.com/simonw/datasette/issues/1121", "created_at": "2020-12-01T08:41:46Z", "updated_at": "2020-12-03T10:56:40Z", "closed_at": "2020-12-03T00:33:37Z", "merged_at": "2020-12-03T00:33:36Z", "merge_commit_sha": "daae35be46ec5cb8a207aa20986a4fa62e94777e", "assignee": null, "milestone": null, "draft": 0, "head": "94ea22f7b6b6c55b490c97b385f6eb6c1ea2121c", "base": "a970276b9999687b96c5e11ea1c817d814f5d267", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1122", "merged_by": null, "auto_merge": null} {"id": 532342025, "node_id": "MDExOlB1bGxSZXF1ZXN0NTMyMzQyMDI1", "number": 1128, "state": "closed", "locked": 0, "title": "Fix startup error on windows", "user": {"value": 3243482, "label": "abdusco"}, "body": "Fixes https://github.com/simonw/datasette/issues/1094\r\n\r\nThis import isn't used at all, and causes error on startup on Windows.", "created_at": "2020-12-04T07:12:26Z", "updated_at": "2020-12-06T08:41:45Z", "closed_at": "2020-12-05T19:35:04Z", "merged_at": "2020-12-05T19:35:04Z", "merge_commit_sha": "705d1a1555c4791e9be3b884285b047223ab184f", "assignee": null, "milestone": null, "draft": 0, "head": "7004c3b1462675ba3845b1efc82c816f1d2199e0", "base": "49d8fc056844d5a537d6cfd96dab0dd5686fe718", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1128", "merged_by": null, "auto_merge": null} {"id": 532348919, "node_id": "MDExOlB1bGxSZXF1ZXN0NTMyMzQ4OTE5", "number": 1130, "state": "open", "locked": 0, "title": "Fix footer not sticking to bottom in short pages", "user": {"value": 3243482, "label": "abdusco"}, "body": "Fixes https://github.com/simonw/datasette/issues/1129", "created_at": "2020-12-04T07:29:01Z", "updated_at": "2021-06-15T13:27:48Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "af3aa34786f134af8073342a3c4bb74b968750fd", "assignee": null, "milestone": null, "draft": 0, "head": "8d4c69c6fb0ef741a19070f5172017ea3522e83c", "base": "49d8fc056844d5a537d6cfd96dab0dd5686fe718", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1130", "merged_by": null, "auto_merge": null} {"id": 153201945, "node_id": "MDExOlB1bGxSZXF1ZXN0MTUzMjAxOTQ1", "number": 114, "state": "closed", "locked": 0, "title": "Add spatialite, switch to debian and local build", "user": {"value": 54999, "label": "ingenieroariel"}, "body": "Improves the Dockerfile to support spatial datasets, work with the local datasette code (Friendly with git tags and Dockerhub) and moves to slim debian, a small image easy to extend via apt packages for sqlite.", "created_at": "2017-11-17T02:37:09Z", "updated_at": "2017-11-17T03:50:52Z", "closed_at": "2017-11-17T03:50:52Z", "merged_at": "2017-11-17T03:50:52Z", "merge_commit_sha": "8b4c600d98b85655b3a1454ebf64f858b5fe54c8", "assignee": null, "milestone": null, "draft": 0, "head": "6c6b63d890529eeefcefb7ab126ea3bd7b2315c1", "base": "b7c4165346ee8b6a6fbd72d6ba2275a24a8a8ae3", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/114", "merged_by": null, "auto_merge": null} {"id": 539489525, "node_id": "MDExOlB1bGxSZXF1ZXN0NTM5NDg5NTI1", "number": 1145, "state": "closed", "locked": 0, "title": "Update pytest requirement from <6.2.0,>=5.2.2 to >=5.2.2,<6.3.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.2.0

\n

pytest 6.2.0 (2020-12-12)

\n

Breaking Changes

\n\n

Deprecations

\n\n

Features

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

Sourced from pytest's changelog.

\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-12-14T14:22:16Z", "updated_at": "2021-01-24T21:20:29Z", "closed_at": "2020-12-16T21:44:39Z", "merged_at": "2020-12-16T21:44:39Z", "merge_commit_sha": "6119bd797366a899119f1bba51c1c8cba2efc8fc", "assignee": null, "milestone": {"value": 6346396, "label": "Datasette 0.54"}, "draft": 0, "head": "a8588f95568138c268e6802de0d1a4daffb7bda8", "base": "0c616f732cee79db80cad830917666f41b344262", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1145", "merged_by": null, "auto_merge": null} {"id": 153306882, "node_id": "MDExOlB1bGxSZXF1ZXN0MTUzMzA2ODgy", "number": 115, "state": "closed", "locked": 0, "title": "Add keyboard shortcut to execute SQL query", "user": {"value": 198537, "label": "rgieseke"}, "body": "Very cool tool, thanks a lot!\r\n\r\nThis PR adds a `Shift-Enter` short cut to execute the SQL query. I used CodeMirrors keyboard handling.", "created_at": "2017-11-17T14:13:33Z", "updated_at": "2017-11-17T15:16:34Z", "closed_at": "2017-11-17T14:22:56Z", "merged_at": "2017-11-17T14:22:56Z", "merge_commit_sha": "eda848b37f8452dba7913583ef101f39d9b130ba", "assignee": null, "milestone": null, "draft": 0, "head": "bb514164e69400fc0be4e033c27f45f90b1ef651", "base": "ed2b3f25beac720f14869350baacc5f62b065194", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/115", "merged_by": null, "auto_merge": null} {"id": 544923437, "node_id": "MDExOlB1bGxSZXF1ZXN0NTQ0OTIzNDM3", "number": 1158, "state": "closed", "locked": 0, "title": "Modernize code to Python 3.6+", "user": {"value": 6774676, "label": "eumiro"}, "body": "- compact dict and set building\r\n- remove redundant parentheses\r\n- simplify chained conditions\r\n- change method name to lowercase\r\n- use triple double quotes for docstrings\r\n\r\nplease feel free to accept/reject any of these independent commits", "created_at": "2020-12-23T16:21:38Z", "updated_at": "2021-01-24T21:20:50Z", "closed_at": "2020-12-23T17:04:32Z", "merged_at": "2020-12-23T17:04:32Z", "merge_commit_sha": "a882d679626438ba0d809944f06f239bcba8ee96", "assignee": null, "milestone": {"value": 6346396, "label": "Datasette 0.54"}, "draft": 0, "head": "37ce72f086d7807a32ea9012d6e6b5d235349152", "base": "90eba4c3ca569c57e96bce314e7ac8caf67d884e", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1158", "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": 153324301, "node_id": "MDExOlB1bGxSZXF1ZXN0MTUzMzI0MzAx", "number": 117, "state": "closed", "locked": 0, "title": "Don't prevent tabbing to `Run SQL` button", "user": {"value": 198537, "label": "rgieseke"}, "body": "Mentioned in #115 \r\n\r\nHere you go!", "created_at": "2017-11-17T15:27:50Z", "updated_at": "2017-11-19T20:30:24Z", "closed_at": "2017-11-18T00:53:43Z", "merged_at": "2017-11-18T00:53:43Z", "merge_commit_sha": "6d39429daa4655e3cf7a6a7671493292a20a30a1", "assignee": null, "milestone": null, "draft": 0, "head": "7b4d00e87ed8ac931e6f5458599aece1a95d4e82", "base": "eda848b37f8452dba7913583ef101f39d9b130ba", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/117", "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": 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": 560725714, "node_id": "MDExOlB1bGxSZXF1ZXN0NTYwNzI1NzE0", "number": 1203, "state": "closed", "locked": 0, "title": "Easier way to run Prettier locally", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1167", "created_at": "2021-01-25T01:39:06Z", "updated_at": "2021-01-25T01:41:46Z", "closed_at": "2021-01-25T01:41:46Z", "merged_at": "2021-01-25T01:41:46Z", "merge_commit_sha": "ffff3a4c5398a9f40b61d59736f386444da19289", "assignee": null, "milestone": null, "draft": 0, "head": "98acc8865aa7826a40a7a076ab548ba8597af734", "base": "b6a7b58fa01af0cd5a5e94bd17d686d283a46819", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1203", "merged_by": null, "auto_merge": null} {"id": 560760145, "node_id": "MDExOlB1bGxSZXF1ZXN0NTYwNzYwMTQ1", "number": 1204, "state": "open", "locked": 0, "title": "WIP: Plugin includes", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1191\r\n\r\nNext steps:\r\n\r\n- [ ] Get comfortable that this pattern is the right way to go\r\n- [ ] Implement it for all of the other pages, not just the table page\r\n- [ ] Add a new set of plugin tests that exercise ALL of these new hook locations\r\n- [ ] Document, then ship", "created_at": "2021-01-25T03:59:06Z", "updated_at": "2021-12-17T07:10:49Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "98f06a766317a40035962416cf3211d7a374866a", "assignee": null, "milestone": null, "draft": 1, "head": "05258469ae39bcaad17beb57c5b7eeab0d58a589", "base": "07e163561592c743e4117f72102fcd350a600909", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1204", "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": 564608264, "node_id": "MDExOlB1bGxSZXF1ZXN0NTY0NjA4MjY0", "number": 1211, "state": "closed", "locked": 0, "title": "Use context manager instead of plain open", "user": {"value": 4488943, "label": "kbaikov"}, "body": "Context manager with open closes the files after usage. Fixes: https://github.com/simonw/datasette/issues/1208\r\n\r\nWhen the object is already a pathlib.Path i used read_text\r\nwrite_text functions\r\n\r\nIn some cases pathlib.Path.open were used in context manager,\r\nit is basically the same as builtin open.\r\n\r\nTests are passing: 850 passed, 5 xfailed, 10 xpassed", "created_at": "2021-01-31T07:58:10Z", "updated_at": "2021-03-11T16:15:50Z", "closed_at": "2021-03-11T16:15:50Z", "merged_at": "2021-03-11T16:15:49Z", "merge_commit_sha": "8e18c7943181f228ce5ebcea48deb59ce50bee1f", "assignee": null, "milestone": null, "draft": 0, "head": "e33ccaaafbe9a16b8339a3bf4c0ae7b83354570c", "base": "dde3c500c73ace33529672f7d862b76753d309cc", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1211", "merged_by": null, "auto_merge": null} {"id": 572209243, "node_id": "MDExOlB1bGxSZXF1ZXN0NTcyMjA5MjQz", "number": 1222, "state": "closed", "locked": 0, "title": "--ssl-keyfile and --ssl-certfile, refs #1221", "user": {"value": 9599, "label": "simonw"}, "body": "", "created_at": "2021-02-12T00:45:58Z", "updated_at": "2021-02-12T00:52:18Z", "closed_at": "2021-02-12T00:52:17Z", "merged_at": "2021-02-12T00:52:17Z", "merge_commit_sha": "eda652cf6ee28a0babfb30ce3834512e9e33fb8e", "assignee": null, "milestone": null, "draft": 0, "head": "8ec72ea3e3e0a9876d5e61e4a2260224f16db2e3", "base": "aa1fe0692c2abb901216738bfb35f9fcc5090e7d", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1222", "merged_by": null, "auto_merge": null} {"id": 572254103, "node_id": "MDExOlB1bGxSZXF1ZXN0NTcyMjU0MTAz", "number": 1223, "state": "closed", "locked": 0, "title": "Add compile option to Dockerfile to fix failing test (fixes #696)", "user": {"value": 7476523, "label": "bobwhitelock"}, "body": "This test was failing when run inside the Docker container: `test_searchable[/fixtures/searchable.json?_search=te*+AND+do*&_searchmode=raw-expected_rows3]`,\r\n\r\nwith this error:\r\n\r\n```\r\n def test_searchable(app_client, path, expected_rows):\r\n response = app_client.get(path)\r\n> assert expected_rows == response.json[\"rows\"]\r\nE AssertionError: assert [[1, 'barry c...sel', 'puma']] == []\r\nE Left contains 2 more items, first extra item: [1, 'barry cat', 'terry dog', 'panther']\r\nE Full diff:\r\nE + []\r\nE - [[1, 'barry cat', 'terry dog', 'panther'],\r\nE - [2, 'terry dog', 'sara weasel', 'puma']]\r\n```\r\n\r\nThe issue was that the version of sqlite3 built inside the Docker container was built with FTS3 and FTS4 enabled, but without the\r\n`SQLITE_ENABLE_FTS3_PARENTHESIS` compile option passed, which adds support for using `AND` and `NOT` within `match` expressions (see https://sqlite.org/fts3.html#compiling_and_enabling_fts3_and_fts4 and https://www.sqlite.org/compile.html).\r\n\r\nWithout this, the `AND` used in the search in this test was being interpreted as a literal string, and so no matches were found. Adding this compile option fixes this.\r\n\r\n---\r\n\r\nI actually ran into this issue because the same test was failing when I ran the test suite on my own machine, outside of Docker, and so I eventually tracked this down to my system sqlite3 also being compiled without this option.\r\n\r\nI wonder if this is a sign of a slightly deeper issue, that Datasette can silently behave differently based on the version and compilation of sqlite3 it is being used with. On my own system I fixed the test suite by running `pip install pysqlite3-binary`, so that this would be picked up instead of the `sqlite` package, as this seems to be compiled using this option, . Maybe using `pysqlite3-binary` could be installed/recommended by default so a more deterministic version of sqlite is used? Or there could be some feature detection done on the available sqlite version, to know what features are available and can be used/tested?", "created_at": "2021-02-12T03:38:05Z", "updated_at": "2021-03-07T12:01:12Z", "closed_at": "2021-03-07T07:41:17Z", "merged_at": "2021-03-07T07:41:17Z", "merge_commit_sha": "d0fd833b8cdd97e1b91d0f97a69b494895d82bee", "assignee": null, "milestone": null, "draft": 0, "head": "d1cd1f259c699fab3af01c4aa90035ed0242471a", "base": "9603d893b9b72653895318c9104d754229fdb146", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1223", "merged_by": null, "auto_merge": null} {"id": 575187457, "node_id": "MDExOlB1bGxSZXF1ZXN0NTc1MTg3NDU3", "number": 1229, "state": "closed", "locked": 0, "title": "ensure immutable databses when starting in configuration directory mode with", "user": {"value": 295329, "label": "camallen"}, "body": "fixes #1224 \r\n\r\nThis PR ensures all databases found in a configuration directory that match the files in `inspect-data.json` will be set to `immutable` as outlined in https://docs.datasette.io/en/latest/settings.html#configuration-directory-mode\r\n\r\nspecifically on building the `datasette` instance it checks:\r\n- if `immutables` is an empty tuple - as passed by the cli code\r\n- if `immutables` is the default function value `None` - when it's not explicitly set\r\n\r\nAnd correctly builds the immutable database list from the `inspect-data[file]` keys.\r\n\r\nNote for this to work the `inspect-data.json` file must contain `file` paths which are relative to the configuration directory otherwise the file paths won't match and the dbs won't be set to immutable. \r\n\r\nI couldn't find an easy way to test this due to the way `make_app_client` works, happy to take directions on adding a test for this. \r\n\r\nI've updated the relevant docs as well, i.e. use the `inspect` cli cmd from the config directory path to create the relevant file\r\n```\r\ncd $config_dir\r\ndatasette inspect *.db --inspect-file=inspect-data.json\r\n```\r\nhttps://docs.datasette.io/en/latest/performance.html#using-datasette-inspect", "created_at": "2021-02-17T20:18:26Z", "updated_at": "2022-04-22T13:16:36Z", "closed_at": "2021-03-29T00:17:32Z", "merged_at": "2021-03-29T00:17:31Z", "merge_commit_sha": "f92d823766872a6fd7e76c5249a6b2de1ab0f447", "assignee": null, "milestone": null, "draft": 0, "head": "a095248ad18c9c5272dbd52f4c97ea8a36cf91f3", "base": "8e18c7943181f228ce5ebcea48deb59ce50bee1f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1229", "merged_by": null, "auto_merge": null} {"id": 575940193, "node_id": "MDExOlB1bGxSZXF1ZXN0NTc1OTQwMTkz", "number": 1232, "state": "closed", "locked": 0, "title": "--crossdb option for joining across databases", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #283. Still needs:\r\n\r\n- [x] Unit test for --crossdb queries\r\n- [x] Show warning on console if it truncates at ten databases (or on web interface)\r\n- [x] Show connected databases on the `/_memory` database page\r\n- [x] Documentation\r\n- [x] https://latest.datasette.io/ demo should demonstrate this feature", "created_at": "2021-02-18T19:48:50Z", "updated_at": "2021-02-18T22:09:13Z", "closed_at": "2021-02-18T22:09:12Z", "merged_at": "2021-02-18T22:09:12Z", "merge_commit_sha": "6f41c8a2bef309a66588b2875c3e24d26adb4850", "assignee": null, "milestone": null, "draft": 0, "head": "887649942b02d70a0fe4e205e1e5eff4e745b016", "base": "4df548e7668b5b21d64a267964951e67894f4712", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1232", "merged_by": null, "auto_merge": null} {"id": 579697833, "node_id": "MDExOlB1bGxSZXF1ZXN0NTc5Njk3ODMz", "number": 1243, "state": "closed", "locked": 0, "title": "fix small typo", "user": {"value": 306240, "label": "UtahDave"}, "body": "", "created_at": "2021-02-25T00:22:34Z", "updated_at": "2021-03-04T05:46:10Z", "closed_at": "2021-03-04T05:46:10Z", "merged_at": "2021-03-04T05:46:10Z", "merge_commit_sha": "4f9a2f1f47dcf7e8561d68a8a07f5009a13cfdb3", "assignee": null, "milestone": null, "draft": 0, "head": "32652d9847f9b32c5d923823001c75d76e2791d2", "base": "726f781c50e88f557437f6490b8479c3d6fabfc2", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1243", "merged_by": null, "auto_merge": null} {"id": 587332473, "node_id": "MDExOlB1bGxSZXF1ZXN0NTg3MzMyNDcz", "number": 1252, "state": "closed", "locked": 0, "title": "Add back styling to lists within table cells (fixes #1141)", "user": {"value": 7476523, "label": "bobwhitelock"}, "body": "This overrides the Datasette reset - see https://github.com/simonw/datasette/blob/d0fd833b8cdd97e1b91d0f97a69b494895d82bee/datasette/static/app.css#L35-L38 - to add back the default styling of list items displayed within Datasette table cells.\r\n\r\nFollowing this change, the same content as in the original issue looks like this:\r\n\r\n![2021-03-09_02:57:32](https://user-images.githubusercontent.com/7476523/110411982-63e5ae80-8083-11eb-9b5c-e5dc825073e2.png)\r\n", "created_at": "2021-03-09T03:00:57Z", "updated_at": "2021-03-29T00:14:04Z", "closed_at": "2021-03-29T00:14:04Z", "merged_at": "2021-03-29T00:14:04Z", "merge_commit_sha": "e72397d65b06b019521b6411243687464ac8d8ca", "assignee": null, "milestone": null, "draft": 0, "head": "d22aa32cd9c0f798bcab917cc2024a371b4c0069", "base": "d0fd833b8cdd97e1b91d0f97a69b494895d82bee", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1252", "merged_by": null, "auto_merge": null} {"id": 588601627, "node_id": "MDExOlB1bGxSZXF1ZXN0NTg4NjAxNjI3", "number": 1254, "state": "closed", "locked": 0, "title": "Update Docker Spatialite version to 5.0.1 + add support for Spatialite topology functions", "user": {"value": 3200608, "label": "durkie"}, "body": "This requires adding the RT Topology library (Spatialite changed to RT Topology from LWGEOM between 4.4 and 5.0), as well as upgrading the GEOS version (which is the reason for switching to `python:3.7.10-slim-buster` as the base image.)\r\n\r\n`autoconf` and `libtool` are added to build RT Topology, and Spatialite is now built with `--disable-minizip` (minizip wasn't an option in 4.4 and I didn't want to add another dependency) and `--disable-dependency-tracking` which, according to Spatialite, \"speeds up one-time builds\"", "created_at": "2021-03-09T20:49:08Z", "updated_at": "2021-03-10T18:27:45Z", "closed_at": "2021-03-09T22:04:23Z", "merged_at": null, "merge_commit_sha": "bc09c84d6af4721b32f01f4d9186a6fbf9863081", "assignee": null, "milestone": null, "draft": 0, "head": "b103204155c2396d353fa195a320cee6aca258cf", "base": "d0fd833b8cdd97e1b91d0f97a69b494895d82bee", "author_association": "NONE", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1254", "merged_by": null, "auto_merge": null} {"id": 589263297, "node_id": "MDExOlB1bGxSZXF1ZXN0NTg5MjYzMjk3", "number": 1256, "state": "closed", "locked": 0, "title": "Minor type in IP adress", "user": {"value": 6371750, "label": "JBPressac"}, "body": "127.0.01 replaced by 127.0.0.1", "created_at": "2021-03-10T08:28:22Z", "updated_at": "2021-03-10T18:26:46Z", "closed_at": "2021-03-10T18:26:40Z", "merged_at": "2021-03-10T18:26:39Z", "merge_commit_sha": "a1bcd2fbe5e47bb431045f65eeceb5eb3a6718d5", "assignee": null, "milestone": null, "draft": 0, "head": "4eef524e44ff79c617728aad98b14c1c1e586ce3", "base": "d0fd833b8cdd97e1b91d0f97a69b494895d82bee", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1256", "merged_by": null, "auto_merge": null} {"id": 592548103, "node_id": "MDExOlB1bGxSZXF1ZXN0NTkyNTQ4MTAz", "number": 1260, "state": "closed", "locked": 0, "title": "Fix: code quality issues", "user": {"value": 25361949, "label": "withshubh"}, "body": "### Description\r\nHi :wave: I work at [DeepSource](https://deepsource.io), I ran DeepSource analysis on the forked copy of this repo and found some interesting [code quality issues](https://deepsource.io/gh/withshubh/datasette/issues/?category=recommended) in the codebase, opening this PR so you can assess if our platform is right and helpful for you.\r\n\r\n### Summary of changes\r\n\r\n- Replaced ternary syntax with if expression\r\n- Removed redundant `None` default\r\n- Used `is` to compare type of objects\r\n- Iterated dictionary directly\r\n- Removed unnecessary lambda expression\r\n- Refactored unnecessary `else` / `elif` when `if` block has a `return` statement\r\n- Refactored unnecessary `else` / `elif` when `if` block has a `raise` statement\r\n- Added .deepsource.toml to continuously analyze and detect code quality issues", "created_at": "2021-03-14T13:56:10Z", "updated_at": "2021-03-29T00:22:41Z", "closed_at": "2021-03-29T00:22:41Z", "merged_at": null, "merge_commit_sha": "bc868ae8c8152a25bcab7adb490c5b89411bdf3a", "assignee": null, "milestone": null, "draft": 0, "head": "90f5fb6d2fb36ddffc49acee924d042f2d5d1d58", "base": "8e18c7943181f228ce5ebcea48deb59ce50bee1f", "author_association": "NONE", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1260", "merged_by": null, "auto_merge": null} {"id": 598213565, "node_id": "MDExOlB1bGxSZXF1ZXN0NTk4MjEzNTY1", "number": 1271, "state": "open", "locked": 0, "title": "Use SQLite conn.interrupt() instead of sqlite_timelimit()", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1270, #1268, #1249\r\n\r\nBefore merging this I need to do some more testing (to make sure that expensive queries really are properly cancelled). I also need to delete a bunch of code relating to the old mechanism of cancelling queries.\r\n\r\n[See comment below: this doesn't actually cancel the query due to a thread-local confusion]", "created_at": "2021-03-22T17:34:20Z", "updated_at": "2021-03-22T21:49:27Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "a4fd7e5a761523881c031b4fee266a366e1c97bd", "assignee": null, "milestone": null, "draft": 1, "head": "fb2ad7ada0b86a7fe4a576fe23236757c41eb05e", "base": "c4f1ec7f33fd7d5b93f0f895dafb5351cc3bfc5b", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1271", "merged_by": null, "auto_merge": null} {"id": 602107935, "node_id": "MDExOlB1bGxSZXF1ZXN0NjAyMTA3OTM1", "number": 1279, "state": "closed", "locked": 0, "title": "Minor Docs Update. Added `--app` to fly install command.", "user": {"value": 1019791, "label": "koaning"}, "body": "Without this flag, there's an error locally. \r\n\r\n```\r\n> datasette publish fly bigmac.db\r\n\r\nUsage: datasette publish fly [OPTIONS] [FILES]...\r\nTry 'datasette publish fly --help' for help.\r\n\r\nError: Missing option '-a' / '--app'.\r\n```\r\n\r\nI also got an error message which later turned out to be because I hadn't added my credit card information yet to `fly`. I wasn't sure if I should add that mention to the docs here, or to submit a bug-report over at https://github.com/simonw/datasette-publish-fly. ", "created_at": "2021-03-27T16:58:08Z", "updated_at": "2021-03-29T00:11:55Z", "closed_at": "2021-03-29T00:11:55Z", "merged_at": "2021-03-29T00:11:55Z", "merge_commit_sha": "c96a3826cf50cb347f6a415b56d8105ba6d8dcb0", "assignee": null, "milestone": null, "draft": 0, "head": "14d8977e158d1d3193c6afb50aae482547ec9d8d", "base": "3fcfc8513465339ac5f055296cbb67f5262af02b", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1279", "merged_by": null, "auto_merge": null} {"id": 603082280, "node_id": "MDExOlB1bGxSZXF1ZXN0NjAzMDgyMjgw", "number": 1282, "state": "closed", "locked": 0, "title": "Fix little typo", "user": {"value": 192568, "label": "mroswell"}, "body": "", "created_at": "2021-03-29T19:45:28Z", "updated_at": "2021-03-29T19:57:34Z", "closed_at": "2021-03-29T19:57:34Z", "merged_at": "2021-03-29T19:57:34Z", "merge_commit_sha": "7b1a9a1999eb9326ce8ec830d75ac200e5279c46", "assignee": null, "milestone": null, "draft": 0, "head": "08f7427afcff69fa93ebaf5916588b5ad8bd4e0f", "base": "0486303b60ce2784fd2e2ecdbecf304b7d6e6659", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1282", "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": 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": 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": 618011977, "node_id": "MDExOlB1bGxSZXF1ZXN0NjE4MDExOTc3", "number": 1303, "state": "closed", "locked": 0, "title": "Update pytest-asyncio requirement from <0.15,>=0.10 to >=0.10,<0.16", "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
\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": "2021-04-19T13:49:12Z", "updated_at": "2021-04-19T18:18:17Z", "closed_at": "2021-04-19T18:18:17Z", "merged_at": "2021-04-19T18:18:17Z", "merge_commit_sha": "6ed9238178a56da5fb019f37fb1e1e15886be1d1", "assignee": null, "milestone": null, "draft": 0, "head": "c348ff1ecee0d831a75b17e3f48bcf0a8a558566", "base": "0a7621f96f8ad14da17e7172e8a7bce24ef78966", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1303", "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": 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": 625457579, "node_id": "MDExOlB1bGxSZXF1ZXN0NjI1NDU3NTc5", "number": 1311, "state": "closed", "locked": 0, "title": "Bump black from 20.8b1 to 21.4b1", "user": {"value": 27856297, "label": "dependabot-preview[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 20.8b1 to 21.4b1.\n
\nRelease notes\n

Sourced from black's releases.

\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

    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\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from black's changelog.

\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

    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\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.4b1)](https://dependabot.com/compatibility-score/?dependency-name=black&package-manager=pip&previous-version=20.8b1&new-version=21.4b1)\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-28T18:25:58Z", "updated_at": "2021-04-29T13:58:11Z", "closed_at": "2021-04-29T13:58:09Z", "merged_at": null, "merge_commit_sha": "a8e260b47e0fb951790f155780354c8f8df88bc8", "assignee": null, "milestone": null, "draft": 0, "head": "baf303063a76800ec97abee46cd5f264e6a6447a", "base": "a4bb2abce0764d49d255e5379f9e9c70981834ca", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1311", "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": 626222676, "node_id": "MDExOlB1bGxSZXF1ZXN0NjI2MjIyNjc2", "number": 1314, "state": "closed", "locked": 0, "title": "Upgrade to GitHub-native Dependabot", "user": {"value": 27856297, "label": "dependabot-preview[bot]"}, "body": "_Dependabot Preview will be shut down on August 3rd, 2021. In order to keep getting Dependabot updates, please merge this PR and migrate to GitHub-native Dependabot before then._\n\nDependabot has been fully integrated into GitHub, so you no longer have to install and manage a separate app. This pull request migrates your configuration from Dependabot.com to a config file, using the [new syntax][new_syntax]. When merged, we'll swap out `dependabot-preview` (me) for a new `dependabot` app, and you'll be all set!\n\nWith this change, you'll now use the [Dependabot page in GitHub][dependabot_page], rather than the [Dependabot dashboard][dashboard], to monitor your version updates, and you'll configure Dependabot through the new config file rather than a UI.\n\n\n\n\n\n\n\nIf you've got any questions or feedback for us, please let us know by creating an issue in the [dependabot/dependabot-core][issues] repository.\n\n[Learn more about migrating to GitHub-native Dependabot][learn]\n\nPlease note that regular `@dependabot` commands do not work on this pull request.\n\n[dashboard]: https://app.dependabot.com/\n[dependabot_page]: https://github.com/simonw/datasette/network/updates\n[issues]: https://github.com/dependabot/dependabot-core/issues/new?assignees=%40dependabot%2Fpreview-migration-reviewers&labels=E%3A+preview-migration&template=migration-issue.md\n[learn]: http://docs.github.com/code-security/supply-chain-security/upgrading-from-dependabotcom-to-github-native-dependabot\n[new_syntax]: https://help.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates\n[org_secrets_url]: https://github.com/settings/secrets/dependabot\n[repo_secrets_url]: https://github.com/simonw/datasette/settings/secrets/dependabot\n", "created_at": "2021-04-29T15:36:41Z", "updated_at": "2021-04-29T15:47:22Z", "closed_at": "2021-04-29T15:47:21Z", "merged_at": "2021-04-29T15:47:21Z", "merge_commit_sha": "5e60bad40460f68122006ce704cfc163d6076f34", "assignee": null, "milestone": null, "draft": 0, "head": "98eea0b67f4ac658869052f1cfe31bcc44fe2a7a", "base": "a4bb2abce0764d49d255e5379f9e9c70981834ca", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1314", "merged_by": null, "auto_merge": null} {"id": 630578735, "node_id": "MDExOlB1bGxSZXF1ZXN0NjMwNTc4NzM1", "number": 1318, "state": "closed", "locked": 0, "title": "Bump black from 21.4b2 to 21.5b0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 21.4b2 to 21.5b0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

21.5b0

\n

Black

\n
    \n
  • Set --pyi mode if --stdin-filename ends in .pyi (#2169)
  • \n
  • Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are\nbeing called but with no arguments (#2182)
  • \n
\n

Black-Primer

\n
    \n
  • Add --no-diff to black-primer to suppress formatting changes (#2187)
  • \n
\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

21.5b0

\n

Black

\n
    \n
  • Set --pyi mode if --stdin-filename ends in .pyi (#2169)
  • \n
  • Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are\nbeing called but with no arguments (#2182)
  • \n
\n

Black-Primer

\n
    \n
  • Add --no-diff to black-primer to suppress formatting changes (#2187)
  • \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.4b2&new-version=21.5b0)](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\n\n
", "created_at": "2021-05-05T13:07:51Z", "updated_at": "2021-05-11T13:12:32Z", "closed_at": "2021-05-11T13:12:31Z", "merged_at": null, "merge_commit_sha": "e864f5420abb7a5d135f8fe470183786b577ce9a", "assignee": null, "milestone": null, "draft": 0, "head": "e06c09911be52202940808d7a08df2e9b71b3af2", "base": "1b697539f5b53cec3fe13c0f4ada13ba655c88c7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1318", "merged_by": null, "auto_merge": null} {"id": 634821065, "node_id": "MDExOlB1bGxSZXF1ZXN0NjM0ODIxMDY1", "number": 1319, "state": "closed", "locked": 0, "title": "Add Docker multi-arch support with Buildx", "user": {"value": 10801138, "label": "blairdrummond"}, "body": "This adds Docker support to extra CPU architectures (like arm) using [Docker's Buildx action](https://github.com/marketplace/actions/docker-setup-buildx)\r\n\r\nYou can see [what that looks like on Dockerhub](https://hub.docker.com/r/blairdrummond/datasette/tags?page=1&ordering=last_updated)\r\n\r\nAnd how it lets Datasette run on a Raspberry Pi (top is my dockerhub, bottom is upstream)\r\n\r\n![Screenshot from 2021-05-08 15-32-25](https://user-images.githubusercontent.com/10801138/117551210-a17a9f80-b012-11eb-966b-10e1590dd4a9.png)\r\n\r\nThe workflow log [here](https://github.com/blairdrummond/datasette/runs/2535743398?check_suite_focus=true) (I subbed `blairdrummond` for datasetteproject in my branch) ", "created_at": "2021-05-08T19:35:03Z", "updated_at": "2021-05-27T16:49:24Z", "closed_at": "2021-05-27T16:49:24Z", "merged_at": "2021-05-27T16:49:23Z", "merge_commit_sha": "89822d10be0da446471986addea91d9766f12efb", "assignee": null, "milestone": null, "draft": 0, "head": "cfca570f9ca010ff9036c75209dc42e78bbc945f", "base": "1b697539f5b53cec3fe13c0f4ada13ba655c88c7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1319", "merged_by": null, "auto_merge": null} {"id": 640484966, "node_id": "MDExOlB1bGxSZXF1ZXN0NjQwNDg0OTY2", "number": 1321, "state": "closed", "locked": 0, "title": "Bump black from 21.4b2 to 21.5b1", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 21.4b2 to 21.5b1.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

21.5b1

\n

Black

\n
    \n
  • Refactor src/black/__init__.py into many files (#2206)
  • \n
\n

Documentation

\n
    \n
  • Replaced all remaining references to the master branch with the main branch. Some additional changes in the source code were also made. (#2210)
  • \n
  • Sigificantly reorganized the documentation to make much more sense. Check them out by heading over to the stable docs on RTD. (#2174)
  • \n
\n

21.5b0

\n

Black

\n
    \n
  • Set --pyi mode if --stdin-filename ends in .pyi (#2169)
  • \n
  • Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are\nbeing called but with no arguments (#2182)
  • \n
\n

Black-Primer

\n
    \n
  • Add --no-diff to black-primer to suppress formatting changes (#2187)
  • \n
\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

21.5b1

\n

Black

\n
    \n
  • Refactor src/black/__init__.py into many files (#2206)
  • \n
\n

Documentation

\n
    \n
  • Replaced all remaining references to the\nmaster branch with the\nmain branch. Some additional changes in\nthe source code were also made. (#2210)
  • \n
  • Sigificantly reorganized the documentation to make much more sense. Check them out by\nheading over to the stable docs on RTD.\n(#2174)
  • \n
\n

21.5b0

\n

Black

\n
    \n
  • Set --pyi mode if --stdin-filename ends in .pyi (#2169)
  • \n
  • Stop detecting target version as Python 3.9+ with pre-PEP-614 decorators that are\nbeing called but with no arguments (#2182)
  • \n
\n

Black-Primer

\n
    \n
  • Add --no-diff to black-primer to suppress formatting changes (#2187)
  • \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.4b2&new-version=21.5b1)](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\n\n
", "created_at": "2021-05-11T13:12:28Z", "updated_at": "2021-05-22T23:55:39Z", "closed_at": "2021-05-22T23:55:39Z", "merged_at": "2021-05-22T23:55:39Z", "merge_commit_sha": "5e9672c9bb33e41686472db4aa427168f9e67dbe", "assignee": null, "milestone": null, "draft": 0, "head": "966ced8fe14210fd9ce57322456944f739bf49b8", "base": "1b697539f5b53cec3fe13c0f4ada13ba655c88c7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1321", "merged_by": null, "auto_merge": null} {"id": 643149273, "node_id": "MDExOlB1bGxSZXF1ZXN0NjQzMTQ5Mjcz", "number": 1323, "state": "closed", "locked": 0, "title": "Update click requirement from ~=7.1.1 to >=7.1.1,<8.1.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.0.0

\n

New major versions of all the core Pallets libraries, including Click 8.0, have been released! :tada:

\n\n

This represents a significant amount of work, and there are quite a few changes. Be sure to carefully read the changelog, and use tools such as pip-compile and Dependabot to pin your dependencies and control your updates.

\n
\n
\n
\nChangelog\n

Sourced from click's changelog.

\n
\n

Version 8.0.0

\n

Released 2021-05-11

\n
    \n
  • Drop support for Python 2 and 3.5.
  • \n
  • Colorama is always installed on Windows in order to provide style\nand color support. :pr:1784
  • \n
  • Adds a repr to Command, showing the command name for friendlier\ndebugging. :issue:1267, :pr:1295
  • \n
  • Add support for distinguishing the source of a command line\nparameter. :issue:1264, :pr:1329
  • \n
  • Add an optional parameter to ProgressBar.update to set the\ncurrent_item. :issue:1226, :pr:1332
  • \n
  • version_option uses importlib.metadata (or the\nimportlib_metadata backport) instead of pkg_resources.\n:issue:1582
  • \n
  • If validation fails for a prompt with hide_input=True, the value\nis not shown in the error message. :issue:1460
  • \n
  • An IntRange or FloatRange option shows the accepted range in\nits help text. :issue:1525, :pr:1303
  • \n
  • IntRange and FloatRange bounds can be open (<) instead\nof closed (<=) by setting min_open and max_open. Error\nmessages have changed to reflect this. :issue:1100
  • \n
  • An option defined with duplicate flag names ("--foo/--foo")\nraises a ValueError. :issue:1465
  • \n
  • echo() will not fail when using pytest's capsys fixture on\nWindows. :issue:1590
  • \n
  • Resolving commands returns the canonical command name instead of the\nmatched name. This makes behavior such as help text and\nContext.invoked_subcommand consistent when using patterns like\nAliasedGroup. :issue:1422
  • \n
  • The BOOL type accepts the values "on" and "off". :issue:1629
  • \n
  • A Group with invoke_without_command=True will always invoke\nits result callback. :issue:1178
  • \n
  • nargs == -1 and nargs > 1 is parsed and validated for\nvalues from environment variables and defaults. :issue:729
  • \n
  • Detect the program name when executing a module or package with\npython -m name. :issue:1603
  • \n
  • Include required parent arguments in help synopsis of subcommands.\n:issue:1475
  • \n
  • Help for boolean flags with show_default=True shows the flag\nname instead of True or False. :issue:1538
  • \n
  • Non-string objects passed to style() and secho() will be\nconverted to string. :pr:1146
  • \n
  • edit(require_save=True) will detect saves for editors that exit\nvery fast on filesystems with 1 second resolution. :pr:1050
  • \n
  • New class attributes make it easier to use custom core objects\nthroughout an entire application. :pr:938
  • \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\n\n
", "created_at": "2021-05-12T13:08:56Z", "updated_at": "2021-05-22T23:54:48Z", "closed_at": "2021-05-22T23:54:48Z", "merged_at": "2021-05-22T23:54:48Z", "merge_commit_sha": "5c3b3ef97eed55895cf48d4a9ee0635c1c4d03b8", "assignee": null, "milestone": null, "draft": 0, "head": "cd695020e4fdfe31d3417d91911c9bdbce9a2f2e", "base": "9b3b7e280ca718254b4ca15d40864297146a85b3", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1323", "merged_by": null, "auto_merge": null} {"id": 643149320, "node_id": "MDExOlB1bGxSZXF1ZXN0NjQzMTQ5MzIw", "number": 1324, "state": "closed", "locked": 0, "title": "Update jinja2 requirement from <2.12.0,>=2.10.3 to >=2.10.3,<3.1.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.0.0

\n

New major versions of all the core Pallets libraries, including Jinja 3.0, have been released! :tada:

\n\n

This represents a significant amount of work, and there are quite a few changes. Be sure to carefully read the changelog, and use tools such as pip-compile and Dependabot to pin your dependencies and control your updates.

\n
\n
\n
\nChangelog\n

Sourced from jinja2's changelog.

\n
\n

Version 3.0.0

\n

Released 2021-05-11

\n
    \n
  • Drop support for Python 2.7 and 3.5.
  • \n
  • Bump MarkupSafe dependency to >=1.1.
  • \n
  • Bump Babel optional dependency to >=2.1.
  • \n
  • Remove code that was marked deprecated.
  • \n
  • Add type hinting. :pr:1412
  • \n
  • Use :pep:451 API to load templates with\n:class:~loaders.PackageLoader. :issue:1168
  • \n
  • Fix a bug that caused imported macros to not have access to the\ncurrent template's globals. :issue:688
  • \n
  • Add ability to ignore trim_blocks using +%}. :issue:1036
  • \n
  • Fix a bug that caused custom async-only filters to fail with\nconstant input. :issue:1279
  • \n
  • Fix UndefinedError incorrectly being thrown on an undefined variable\ninstead of Undefined being returned on\nNativeEnvironment on Python 3.10. :issue:1335
  • \n
  • Blocks can be marked as required. They must be overridden at\nsome point, but not necessarily by the direct child. :issue:1147
  • \n
  • Deprecate the autoescape and with extensions, they are\nbuilt-in to the compiler. :issue:1203
  • \n
  • The urlize filter recognizes mailto: links and takes\nextra_schemes (or env.policies["urlize.extra_schemes"]) to\nrecognize other schemes. It tries to balance parentheses within a\nURL instead of ignoring trailing characters. The parsing in general\nhas been updated to be more efficient and match more cases. URLs\nwithout a scheme are linked as https:// instead of http://.\n:issue:522, 827, 1172, :pr:1195
  • \n
  • Filters that get attributes, such as map and groupby, can\nuse a false or empty value as a default. :issue:1331
  • \n
  • Fix a bug that prevented variables set in blocks or loops from\nbeing accessed in custom context functions. :issue:768
  • \n
  • Fix a bug that caused scoped blocks from accessing special loop\nvariables. :issue:1088
  • \n
  • Update the template globals when calling\nEnvironment.get_template(globals=...) even if the template was\nalready loaded. :issue:295
  • \n
  • Do not raise an error for undefined filters in unexecuted\nif-statements and conditional expressions. :issue:842
  • \n
  • Add is filter and is test tests to test if a name is a\nregistered filter or test. This allows checking if a filter is\navailable in a template before using it. Test functions can be\ndecorated with @pass_environment, @pass_eval_context,\nor @pass_context. :issue:842, :pr:1248
  • \n
  • Support pgettext and npgettext (message contexts) in i18n\nextension. :issue:441
  • \n
  • The |indent filter's width argument can be a string to
  • \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\n\n
", "created_at": "2021-05-12T13:08:59Z", "updated_at": "2021-05-17T17:19:41Z", "closed_at": "2021-05-17T17:19:40Z", "merged_at": "2021-05-17T17:19:40Z", "merge_commit_sha": "9b3b7e280ca718254b4ca15d40864297146a85b3", "assignee": null, "milestone": null, "draft": 0, "head": "177456e64bbdc7a1ec7c58f2cacba932b261b3fb", "base": "1b697539f5b53cec3fe13c0f4ada13ba655c88c7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1324", "merged_by": null, "auto_merge": null} {"id": 643149364, "node_id": "MDExOlB1bGxSZXF1ZXN0NjQzMTQ5MzY0", "number": 1325, "state": "closed", "locked": 0, "title": "Update itsdangerous requirement from ~=1.1 to >=1.1,<3.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [itsdangerous](https://github.com/pallets/itsdangerous) to permit the latest version.\n
\nRelease notes\n

Sourced from itsdangerous's releases.

\n
\n

2.0.0

\n

New major versions of all the core Pallets libraries, including ItsDangerous 2.0, have been released! :tada:

\n\n

This represents a significant amount of work, and there are quite a few changes. Be sure to carefully read the changelog, and use tools such as pip-compile and Dependabot to pin your dependencies and control your updates.

\n
\n
\n
\nChangelog\n

Sourced from itsdangerous's changelog.

\n
\n

Version 2.0.0

\n

Released 2021-05-11

\n
    \n
  • Drop support for Python 2 and 3.5.
  • \n
  • JWS support (JSONWebSignatureSerializer,\nTimedJSONWebSignatureSerializer) is deprecated. Use a dedicated\nJWS/JWT library such as authlib instead. :issue:129
  • \n
  • Importing itsdangerous.json is deprecated. Import Python's\njson module instead. :pr:152
  • \n
  • Simplejson is no longer used if it is installed. To use a different\nlibrary, pass it as Serializer(serializer=...). :issue:146
  • \n
  • datetime values are timezone-aware with timezone.utc. Code\nusing TimestampSigner.unsign(return_timestamp=True) or\nBadTimeSignature.date_signed may need to change. :issue:150
  • \n
  • If a signature has an age less than 0, it will raise\nSignatureExpired rather than appearing valid. This can happen if\nthe timestamp offset is changed. :issue:126
  • \n
  • BadTimeSignature.date_signed is always a datetime object\nrather than an int in some cases. :issue:124
  • \n
  • Added support for key rotation. A list of keys can be passed as\nsecret_key, oldest to newest. The newest key is used for\nsigning, all keys are tried for unsigning. :pr:141
  • \n
  • Removed the default SHA-512 fallback signer from\ndefault_fallback_signers. :issue:155
  • \n
  • Add type information for static typing tools. :pr:186
  • \n
\n

Version 1.1.0

\n

Released 2018-10-26

\n
    \n
  • Change default signing algorithm back to SHA-1. :pr:113
  • \n
  • Added a default SHA-512 fallback for users who used the yanked 1.0.0\nrelease which defaulted to SHA-512. :pr:114
  • \n
  • Add support for fallback algorithms during deserialization to\nsupport changing the default in the future without breaking existing\nsignatures. :pr:113
  • \n
  • Changed capitalization of packages back to lowercase as the change\nin capitalization broke some tooling. :pr:113
  • \n
\n

Version 1.0.0

\n

Released 2018-10-18

\n

YANKED

\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\n\n
", "created_at": "2021-05-12T13:09:03Z", "updated_at": "2021-05-22T23:54:25Z", "closed_at": "2021-05-22T23:54:25Z", "merged_at": "2021-05-22T23:54:25Z", "merge_commit_sha": "b64d87204612a84663616e075f542499a5d82a03", "assignee": null, "milestone": null, "draft": 0, "head": "4dea180e51601bb0851edb578f076c51554c6d51", "base": "1b697539f5b53cec3fe13c0f4ada13ba655c88c7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1325", "merged_by": null, "auto_merge": null} {"id": 645849027, "node_id": "MDExOlB1bGxSZXF1ZXN0NjQ1ODQ5MDI3", "number": 1330, "state": "closed", "locked": 0, "title": "Update aiofiles requirement from <0.7,>=0.4 to >=0.4,<0.8", "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\n\n
", "created_at": "2021-05-17T13:07:31Z", "updated_at": "2021-05-22T23:53:57Z", "closed_at": "2021-05-22T23:53:56Z", "merged_at": "2021-05-22T23:53:56Z", "merge_commit_sha": "593d3e8173b45e20ff3c95afb3df7ceb85bf7fef", "assignee": null, "milestone": null, "draft": 0, "head": "cc1b504793486dd7d14a9cb8248c4cf6db60b179", "base": "1b697539f5b53cec3fe13c0f4ada13ba655c88c7", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1330", "merged_by": null, "auto_merge": null} {"id": 647552141, "node_id": "MDExOlB1bGxSZXF1ZXN0NjQ3NTUyMTQx", "number": 1335, "state": "closed", "locked": 0, "title": "Fix small typo", "user": {"value": 3243482, "label": "abdusco"}, "body": "", "created_at": "2021-05-19T11:17:04Z", "updated_at": "2021-05-22T23:53:34Z", "closed_at": "2021-05-22T23:53:34Z", "merged_at": "2021-05-22T23:53:34Z", "merge_commit_sha": "459259175eddeed727fd8f08dc19a332779a4f6b", "assignee": null, "milestone": null, "draft": 0, "head": "d91c18dcd956b414b57eaa2763d2b8f5f6f6427f", "base": "9b3b7e280ca718254b4ca15d40864297146a85b3", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1335", "merged_by": null, "auto_merge": null} {"id": 651492888, "node_id": "MDExOlB1bGxSZXF1ZXN0NjUxNDkyODg4", "number": 1339, "state": "closed", "locked": 0, "title": "?_col=/?_nocol= to show/hide columns on the table page", "user": {"value": 9599, "label": "simonw"}, "body": "See #615. Still to do:\r\n\r\n- [x] Allow combination of `?_col=` and `?_nocol=` (`_nocol` wins)\r\n- [x] Deduplicate same column if passed in `?_col=` multiple times\r\n- [x] Validate that user did not try to remove a primary key\r\n- [x] Add tests\r\n- [x] Ensure this works correctly for SQL views\r\n- [x] Add documentation\r\n", "created_at": "2021-05-24T17:15:20Z", "updated_at": "2021-05-27T04:17:44Z", "closed_at": "2021-05-27T04:17:43Z", "merged_at": "2021-05-27T04:17:43Z", "merge_commit_sha": "f1c29fd6a184254aa68efadf096bcf21e848f921", "assignee": null, "milestone": null, "draft": 0, "head": "387c8379b92e559180098f73017a1bf2e6370205", "base": "2bd9d54b2762c991e11950c22c88c0336158d49b", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1339", "merged_by": null, "auto_merge": null} {"id": 655684477, "node_id": "MDExOlB1bGxSZXF1ZXN0NjU1Njg0NDc3", "number": 1346, "state": "closed", "locked": 0, "title": "Re-display user's query with an error message if an error occurs", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #619", "created_at": "2021-05-28T02:04:20Z", "updated_at": "2021-06-02T03:46:21Z", "closed_at": "2021-06-02T03:46:21Z", "merged_at": "2021-06-02T03:46:21Z", "merge_commit_sha": "9552414e1f968c6fc704031cec349c05e6bc2371", "assignee": null, "milestone": null, "draft": 0, "head": "3bffc35ff9137a75024d2a8ef44828a50ec91071", "base": "7b106e106000713bbee31b34d694b3dadbd4818c", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1346", "merged_by": null, "auto_merge": null} {"id": 655726387, "node_id": "MDExOlB1bGxSZXF1ZXN0NjU1NzI2Mzg3", "number": 1347, "state": "closed", "locked": 0, "title": "Test docker platform blair only", "user": {"value": 10801138, "label": "blairdrummond"}, "body": "", "created_at": "2021-05-28T02:47:09Z", "updated_at": "2021-05-28T02:47:28Z", "closed_at": "2021-05-28T02:47:28Z", "merged_at": null, "merge_commit_sha": "e755dd8c8cf7149046a8b5fd44aec07c4b2416d3", "assignee": null, "milestone": null, "draft": 0, "head": "f730725fd260ba6578c472c344269d5d5df4e650", "base": "7b106e106000713bbee31b34d694b3dadbd4818c", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1347", "merged_by": null, "auto_merge": null} {"id": 655741428, "node_id": "MDExOlB1bGxSZXF1ZXN0NjU1NzQxNDI4", "number": 1348, "state": "open", "locked": 0, "title": "DRAFT: add test and scan for docker images", "user": {"value": 10801138, "label": "blairdrummond"}, "body": "**NOTE: I don't think this PR is ready, since the arm/v6 and arm/v7 images are failing pytest due to missing dependencies (gcc and friends). But it's pretty close.**\r\n\r\nCloses https://github.com/simonw/datasette/issues/1344 . Using a build-matrix for the platforms and [this test](https://github.com/simonw/datasette/issues/1344#issuecomment-849820019), we test all the platforms in parallel. I also threw in container scanning.\r\n\r\n### Switch `pip install` to use either tags or commit shas\r\n\r\nNotably! This also [changes the Dockerfile](https://github.com/blairdrummond/datasette/blob/7fe5315d68e04fce64b5bebf4e2d7feec44f8546/Dockerfile#L20) so that it accepts tags or commit-shas.\r\n\r\n```\r\n# It's backwards compatible with tags, but also lets you use shas\r\nroot@712071df17af:/# pip install git+git://github.com/simonw/datasette.git@0.56 \r\nCollecting git+git://github.com/simonw/datasette.git@0.56 \r\n Cloning git://github.com/simonw/datasette.git (to revision 0.56) to /tmp/pip-req-build-u6dhm945 \r\n Running command git clone -q git://github.com/simonw/datasette.git /tmp/pip-req-build-u6dhm945 \r\n Running command git checkout -q af5a7f1c09f6a902bb2a25e8edf39c7034d2e5de \r\nCollecting Jinja2<2.12.0,>=2.10.3 \r\n Downloading Jinja2-2.11.3-py2.py3-none-any.whl (125 kB) \r\n```\r\n\r\nThis lets you build the containers in CI every push for testing, which maybe resolves [this problem](https://github.com/simonw/datasette/issues/1272#issuecomment-808648974)?\r\n\r\n# Workflow run example\r\n\r\nYou can see the results in my workflow [here](https://github.com/blairdrummond/datasette/pull/2/checks?check_run_id=2690570717). The commit history is different because I squashed this branch, also in the testing branch I had to change `github.com/simonw` to `github.com/blairdrummond` for the CI to pick up my git_sha.\r\n\r\n## Why did the builds fail?\r\n\r\n**NOTE:** The results of all the tests fail, but for different reasons! A few fail to install Rust, the amd64 passes the tests (phew!) but has critical CVEs which fail the container scan, the Arm/v6 and Arm/v7 seem to fail to install the test dependencies due to missing programs like `gcc`. (`gcc` is not sufficient though, as [this run](https://github.com/blairdrummond/datasette/pull/3/checks?check_run_id=2690672982) indicates) ", "created_at": "2021-05-28T03:02:12Z", "updated_at": "2021-05-28T03:06:16Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "eeea7cb835be0f0319cafccf50dffa6ad26826c5", "assignee": null, "milestone": null, "draft": 0, "head": "56cba8fb837cd938c2f9d7423ee43d62a81c8f7c", "base": "7b106e106000713bbee31b34d694b3dadbd4818c", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1348", "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
  • A space is no longer inserted into empty docstrings (#2249)
  • \n
  • Fix handling of .gitignore files containing non-ASCII characters on Windows (#2229)
  • \n
  • Respect .gitignore files in all levels, not only root/.gitignore file (apply\n.gitignore rules like git does) (#2225)
  • \n
  • Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227)
  • \n
  • Add extra uvloop install + import support if in python env (#2258)
  • \n
  • Fix --experimental-string-processing crash when matching parens are not found (#2283)
  • \n
  • Make sure to split lines that start with a string operator (#2286)
  • \n
  • Fix regular expression that black uses to identify f-expressions (#2287)
  • \n
\n

Blackd

\n
    \n
  • Add a lower bound for the aiohttp-cors dependency. Only 0.4.0 or higher is\nsupported. (#2231)
  • \n
\n

Packaging

\n
    \n
  • Release self-contained x86_64 MacOS binaries as part of the GitHub release pipeline\n(#2198)
  • \n
  • Always build binaries with the latest available Python (#2260)
  • \n
\n

Documentation

\n
    \n
  • Add discussion of magic comments to FAQ page (#2272)
  • \n
  • --experimental-string-processing will be enabled by default in the future (#2273)
  • \n
  • Fix typos discovered by codespell (#2228)
  • \n
  • Fix Vim plugin installation instructions. (#2235)
  • \n
  • Add new Frequently Asked Questions page (#2247)
  • \n
  • Fix encoding + symlink issues preventing proper build on Windows (#2262)
  • \n
\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

21.5b2

\n

Black

\n
    \n
  • A space is no longer inserted into empty docstrings (#2249)
  • \n
  • Fix handling of .gitignore files containing non-ASCII characters on Windows (#2229)
  • \n
  • Respect .gitignore files in all levels, not only root/.gitignore file (apply\n.gitignore rules like git does) (#2225)
  • \n
  • Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227)
  • \n
  • Add extra uvloop install + import support if in python env (#2258)
  • \n
  • Fix --experimental-string-processing crash when matching parens are not found (#2283)
  • \n
  • Make sure to split lines that start with a string operator (#2286)
  • \n
  • Fix regular expression that black uses to identify f-expressions (#2287)
  • \n
\n

Blackd

\n
    \n
  • Add a lower bound for the aiohttp-cors dependency. Only 0.4.0 or higher is\nsupported. (#2231)
  • \n
\n

Integrations

\n
    \n
  • The official Black action now supports choosing what version to use, and supports the\nmajor 3 OSes. (#1940)
  • \n
\n

Packaging

\n
    \n
  • Release self-contained x86_64 MacOS binaries as part of the GitHub release pipeline\n(#2198)
  • \n
  • Always build binaries with the latest available Python (#2260)
  • \n
\n

Documentation

\n
    \n
  • Add discussion of magic comments to FAQ page (#2272)
  • \n
  • --experimental-string-processing will be enabled by default in the future (#2273)
  • \n
  • Fix typos discovered by codespell (#2228)
  • \n
  • Fix Vim plugin installation instructions. (#2235)
  • \n
  • Add new Frequently Asked Questions page (#2247)
  • \n
  • Fix encoding + symlink issues preventing proper build on Windows (#2262)
  • \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": 662557240, "node_id": "MDExOlB1bGxSZXF1ZXN0NjYyNTU3MjQw", "number": 1357, "state": "closed", "locked": 0, "title": "Make custom pages compatible with base_url setting", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1238.", "created_at": "2021-06-05T18:54:39Z", "updated_at": "2021-06-05T18:59:54Z", "closed_at": "2021-06-05T18:59:54Z", "merged_at": "2021-06-05T18:59:54Z", "merge_commit_sha": "a63412152518581c6a3d4e142b937e27dabdbfdb", "assignee": null, "milestone": null, "draft": 0, "head": "1b27643d7bd192e1d2cc52e36ada0021c3f76bb8", "base": "6e9b07be92905011211d8df7a872fb7c1f2737b2", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1357", "merged_by": null, "auto_merge": null} {"id": 663836965, "node_id": "MDExOlB1bGxSZXF1ZXN0NjYzODM2OTY1", "number": 1368, "state": "closed", "locked": 0, "title": "DRAFT: A new plugin hook for dynamic metadata", "user": {"value": 2670795, "label": "brandonrobertz"}, "body": "Note that this is a WORK IN PROGRESS!\r\n\r\nThis PR adds the following plugin hook:\r\n\r\n get_metadata(\r\n datasette=self, key=key, database=database, table=table,\r\n fallback=fallback\r\n )\r\n\r\nThis gets called when we're building our metdata for the rest of the system to use. Datasette merges whatever the plugins return with any local metadata (from metadata.yml/yaml/json) allowing for a live-editable dynamic Datasette. __A major design consideration is this: should Datasette perform the metadata merge? Or should Datasette allow plugins to perform any modifications themselves?__\r\n\r\nAs a security precation, local meta is *not* overwritable by plugin hooks. The workflow for transitioning to live-meta would be to load the plugin with the full metadata.yaml and save. Then remove the parts of the metadata that you want to be able to change from the file.\r\n\r\nI have a WIP dynamic configuration plugin here, for reference: https://github.com/next-LI/datasette-live-config/", "created_at": "2021-06-07T18:56:00Z", "updated_at": "2021-06-26T22:24:54Z", "closed_at": "2021-06-26T22:24:54Z", "merged_at": "2021-06-26T22:24:54Z", "merge_commit_sha": "baf986c871708c01ca183be760995cf306ba21bf", "assignee": null, "milestone": null, "draft": 0, "head": "84fe80cb94ad2d6d7d88f6dec94b6c317fbe20d9", "base": "953a64467d78bca29fe6cc18bdb2baa7848e53ff", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1368", "merged_by": null, "auto_merge": null} {"id": 664072046, "node_id": "MDExOlB1bGxSZXF1ZXN0NjY0MDcyMDQ2", "number": 1370, "state": "closed", "locked": 0, "title": "Ensure db.path is a string before trying to insert into internal database", "user": {"value": 25778, "label": "eyeseast"}, "body": "Fixes #1365 \r\n\r\nThis is the simplest possible fix, with a test that will fail without it. There are a bunch of places where `db.path` is getting converted to and from a `Path` type, so this fix errs on the side of calling `str(db.path)` right before it's inserted.", "created_at": "2021-06-08T01:16:48Z", "updated_at": "2021-06-21T15:57:39Z", "closed_at": "2021-06-21T15:57:39Z", "merged_at": "2021-06-21T15:57:39Z", "merge_commit_sha": "a6c55afe8c82ead8deb32f90c9324022fd422324", "assignee": null, "milestone": null, "draft": 0, "head": "2de712e439097de1d31f00db312cb87764642a87", "base": "f4c5777c7e4ed406313583de09a3bf746552167f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1370", "merged_by": null, "auto_merge": null} {"id": 665892313, "node_id": "MDExOlB1bGxSZXF1ZXN0NjY1ODkyMzEz", "number": 1373, "state": "closed", "locked": 0, "title": "Update trustme requirement from <0.8,>=0.7 to >=0.7,<0.9", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [trustme](https://github.com/python-trio/trustme) 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-06-09T13:09:44Z", "updated_at": "2021-06-13T15:38:47Z", "closed_at": "2021-06-13T15:38:47Z", "merged_at": "2021-06-13T15:38:47Z", "merge_commit_sha": "83e9c8bc7585dcc62f200e37c2daefcd669ee05e", "assignee": null, "milestone": null, "draft": 0, "head": "51ff366eba7ce218cb82fc666032ccc83f2195fe", "base": "e7975657656ce02717f03703bb8ec17f2fe9b717", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1373", "merged_by": null, "auto_merge": null} {"id": 668129441, "node_id": "MDExOlB1bGxSZXF1ZXN0NjY4MTI5NDQx", "number": 1374, "state": "closed", "locked": 0, "title": "Bump black from 21.5b2 to 21.6b0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 21.5b2 to 21.6b0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

21.6b0

\n

Black

\n
    \n
  • Fix failure caused by fmt: skip and indentation (#2281)
  • \n
  • Account for += assignment when deciding whether to split string (#2312)
  • \n
  • Correct max string length calculation when there are string operators (#2292)
  • \n
  • Fixed option usage when using the --code flag (#2259)
  • \n
  • Do not call uvloop.install() when Black is used as a library (#2303)
  • \n
  • Added --required-version option to require a specific version to be running (#2300)
  • \n
  • Fix incorrect custom breakpoint indices when string group contains fake f-strings\n(#2311)
  • \n
  • Fix regression where R prefixes would be lowercased for docstrings (#2285)
  • \n
  • Fix handling of named escapes (\\N{...}) when --experimental-string-processing is\nused (#2319)
  • \n
\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

21.6b0

\n

Black

\n
    \n
  • Fix failure caused by fmt: skip and indentation (#2281)
  • \n
  • Account for += assignment when deciding whether to split string (#2312)
  • \n
  • Correct max string length calculation when there are string operators (#2292)
  • \n
  • Fixed option usage when using the --code flag (#2259)
  • \n
  • Do not call uvloop.install() when Black is used as a library (#2303)
  • \n
  • Added --required-version option to require a specific version to be running (#2300)
  • \n
  • Fix incorrect custom breakpoint indices when string group contains fake f-strings\n(#2311)
  • \n
  • Fix regression where R prefixes would be lowercased for docstrings (#2285)
  • \n
  • Fix handling of named escapes (\\N{...}) when --experimental-string-processing is\nused (#2319)
  • \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.5b2&new-version=21.6b0)](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-11T13:07:39Z", "updated_at": "2021-06-13T15:33:23Z", "closed_at": "2021-06-13T15:33:22Z", "merged_at": "2021-06-13T15:33:22Z", "merge_commit_sha": "e7975657656ce02717f03703bb8ec17f2fe9b717", "assignee": null, "milestone": null, "draft": 0, "head": "0ef0dd5874ed39527ab12098a6c3da7ff8115c54", "base": "cd7678fde65319d7b6955ce9f4678ba4b9e64b66", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1374", "merged_by": null, "auto_merge": null} {"id": 672620180, "node_id": "MDExOlB1bGxSZXF1ZXN0NjcyNjIwMTgw", "number": 1378, "state": "closed", "locked": 0, "title": "Update pytest-xdist requirement from <2.3,>=2.2.1 to >=2.2.1,<2.4", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) to permit the latest version.\n
\nChangelog\n

Sourced from pytest-xdist's changelog.

\n
\n

pytest-xdist 2.3.0 (2021-06-16)

\n

Deprecations and Removals

\n
    \n
  • [#654](https://github.com/pytest-dev/pytest-xdist/issues/654) <https://github.com/pytest-dev/pytest-xdist/issues/654>_: Python 3.5 is no longer supported.
  • \n
\n

Features

\n
    \n
  • \n

    [#646](https://github.com/pytest-dev/pytest-xdist/issues/646) <https://github.com/pytest-dev/pytest-xdist/issues/646>_: Add --numprocesses=logical flag, which automatically uses the number of logical CPUs available, instead of physical CPUs with auto.

    \n

    This is very useful for test suites which are not CPU-bound.

    \n
  • \n
  • \n

    [#650](https://github.com/pytest-dev/pytest-xdist/issues/650) <https://github.com/pytest-dev/pytest-xdist/issues/650>_: Added new pytest_handlecrashitem hook to allow handling and rescheduling crashed items.

    \n
  • \n
\n

Bug Fixes

\n
    \n
  • \n

    [#421](https://github.com/pytest-dev/pytest-xdist/issues/421) <https://github.com/pytest-dev/pytest-xdist/issues/421>_: Copy the parent process sys.path into local workers, to work around execnet's python -c adding the current directory to sys.path.

    \n
  • \n
  • \n

    [#638](https://github.com/pytest-dev/pytest-xdist/issues/638) <https://github.com/pytest-dev/pytest-xdist/issues/638>_: Fix issue caused by changing the branch name of the pytest repository.

    \n
  • \n
\n

Trivial Changes

\n
    \n
  • \n

    [#592](https://github.com/pytest-dev/pytest-xdist/issues/592) <https://github.com/pytest-dev/pytest-xdist/issues/592>_: Replace master with controller where ever possible.

    \n
  • \n
  • \n

    [#643](https://github.com/pytest-dev/pytest-xdist/issues/643) <https://github.com/pytest-dev/pytest-xdist/issues/643>_: Use 'main' to refer to pytest default branch in tox env names.

    \n
  • \n
\n

pytest-xdist 2.2.1 (2021-02-09)

\n

Bug Fixes

\n
    \n
  • [#623](https://github.com/pytest-dev/pytest-xdist/issues/623) <https://github.com/pytest-dev/pytest-xdist/issues/623>_: Gracefully handle the pending deprecation of Node.fspath by using config.rootpath for topdir.
  • \n
\n

pytest-xdist 2.2.0 (2020-12-14)

\n

Features

\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-06-17T13:11:56Z", "updated_at": "2021-06-20T00:17:07Z", "closed_at": "2021-06-20T00:17:06Z", "merged_at": "2021-06-20T00:17:06Z", "merge_commit_sha": "5335f360f4d57d70cab3694b08f15729c4ca2fe2", "assignee": null, "milestone": null, "draft": 0, "head": "0c132d13de2d57004a36ece36217b337478ce4f4", "base": "83e9c8bc7585dcc62f200e37c2daefcd669ee05e", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1378", "merged_by": null, "auto_merge": null} {"id": 678459554, "node_id": "MDExOlB1bGxSZXF1ZXN0Njc4NDU5NTU0", "number": 1385, "state": "closed", "locked": 0, "title": "Fix + improve get_metadata plugin hook docs", "user": {"value": 2670795, "label": "brandonrobertz"}, "body": "This fixes documentation inaccuracies and adds a disclaimer about the signature of the `get_metadata` hook.\r\n\r\nAddresses the following comments:\r\n- https://github.com/simonw/datasette/issues/1384#issuecomment-869069926\r\n- https://github.com/simonw/datasette/issues/1384#issuecomment-869075368", "created_at": "2021-06-27T05:43:20Z", "updated_at": "2021-09-13T18:53:11Z", "closed_at": "2021-09-13T18:53:11Z", "merged_at": null, "merge_commit_sha": "d283ef6806aabcd749623ffe4e69011879f7bfad", "assignee": null, "milestone": null, "draft": 0, "head": "8d78c8c22ddfa10c041f7b5dd9118d4c8674729f", "base": "67cbf0ae7243431bf13702e6e3ba466b619c4d6f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1385", "merged_by": null, "auto_merge": null} {"id": 679035847, "node_id": "MDExOlB1bGxSZXF1ZXN0Njc5MDM1ODQ3", "number": 1386, "state": "closed", "locked": 0, "title": "Update asgiref requirement from <3.4.0,>=3.2.10 to >=3.2.10,<3.5.0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [asgiref](https://github.com/django/asgiref) to permit the latest version.\n
\nChangelog\n

Sourced from asgiref's changelog.

\n
\n

3.4.0 (2021-06-27)

\n
    \n
  • \n

    Calling sync_to_async directly from inside itself (which causes a deadlock\nwhen in the default, thread-sensitive mode) now has deadlock detection.

    \n
  • \n
  • \n

    asyncio usage has been updated to use the new versions of get_event_loop,\nensure_future, wait and gather, avoiding deprecation warnings in Python 3.10.\nPython 3.6 installs continue to use the old versions; this is only for 3.7+

    \n
  • \n
  • \n

    sync_to_async and async_to_sync now have improved type hints that pass\nthrough the underlying function type correctly.

    \n
  • \n
  • \n

    All Websocket* types are now spelled WebSocket, to match our specs and the\nofficial spelling. The old names will work until release 3.5.0, but will\nraise deprecation warnings.

    \n
  • \n
  • \n

    The typing for WebSocketScope and HTTPScope's extensions key has been\nfixed.

    \n
  • \n
\n

3.3.4 (2021-04-06)

\n
    \n
  • The async_to_sync type error is now a warning due the high false negative\nrate when trying to detect coroutine-returning callables in Python.
  • \n
\n

3.3.3 (2021-04-06)

\n
    \n
  • The sync conversion functions now correctly detect functools.partial and other\nwrappers around async functions on earlier Python releases.
  • \n
\n

3.3.2 (2021-04-05)

\n
    \n
  • \n

    SyncToAsync now takes an optional "executor" argument if you want to supply\nyour own executor rather than using the built-in one.

    \n
  • \n
  • \n

    async_to_sync and sync_to_async now check their arguments are functions of\nthe correct type.

    \n
  • \n
  • \n

    Raising CancelledError inside a SyncToAsync function no longer stops a future\ncall from functioning.

    \n
  • \n
  • \n

    ThreadSensitive now provides context hooks/override options so it can be\nmade to be sensitive in a unit smaller than threads (e.g. per request)

    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2021-06-28T13:13:07Z", "updated_at": "2021-07-11T01:36:19Z", "closed_at": "2021-07-11T01:36:18Z", "merged_at": "2021-07-11T01:36:18Z", "merge_commit_sha": "f83c84fd51d144036924ae77d99f12b0a69e7e6f", "assignee": null, "milestone": null, "draft": 0, "head": "e974ed19b09500aecb62252fe7001234d4424ff9", "base": "ea627baccf980d7d8ebc9e1ffff1fe34d556e56f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1386", "merged_by": null, "auto_merge": null} {"id": 687298112, "node_id": "MDExOlB1bGxSZXF1ZXN0Njg3Mjk4MTEy", "number": 1392, "state": "closed", "locked": 0, "title": "Update deploying.rst", "user": {"value": 80737, "label": "aslakr"}, "body": "Use same base url for Apache as in the example", "created_at": "2021-07-11T08:43:19Z", "updated_at": "2021-07-13T17:42:31Z", "closed_at": "2021-07-13T17:42:27Z", "merged_at": "2021-07-13T17:42:27Z", "merge_commit_sha": "4054e96a3914e821d0880a40a7284aaa9db1eaaa", "assignee": null, "milestone": null, "draft": 0, "head": "f57a8ab0905bb85a9334fe4bf87e2cd736c78cbb", "base": "f83c84fd51d144036924ae77d99f12b0a69e7e6f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1392", "merged_by": null, "auto_merge": null} {"id": 687304242, "node_id": "MDExOlB1bGxSZXF1ZXN0Njg3MzA0MjQy", "number": 1393, "state": "closed", "locked": 0, "title": "Update deploying.rst", "user": {"value": 80737, "label": "aslakr"}, "body": "Example on how to use Unix domain socket option on Apache. Not testet.\r\n\r\n(Usually I would have used [`ProxyPassReverse`](https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreverse) in combination with `ProxyPass` , i.e.\r\n\r\n```apache\r\nProxyPass /my-datasette/ http://127.0.0.1:8009/my-datasette/\r\nProxyPassReverse /my-datasette/ http://127.0.0.1:8009/my-datasette/\r\n```\r\n\r\nand\r\n\r\n```apache\r\nProxyPass /my-datasette/ unix:/tmp/datasette.sock|http://localhost/my-datasette/\r\nProxyPassReverse /my-datasette/ unix:/tmp/datasette.sock|http://localhost/my-datasette/\r\n```\r\n)", "created_at": "2021-07-11T09:32:16Z", "updated_at": "2021-07-13T18:32:49Z", "closed_at": "2021-07-13T18:32:49Z", "merged_at": "2021-07-13T18:32:49Z", "merge_commit_sha": "d71cac498138ddd86f18607b9043e70286ea884a", "assignee": null, "milestone": null, "draft": 0, "head": "1bbb577e9e10e0225ab885d72defcbf6517cc096", "base": "f83c84fd51d144036924ae77d99f12b0a69e7e6f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1393", "merged_by": null, "auto_merge": null} {"id": 691707409, "node_id": "MDExOlB1bGxSZXF1ZXN0NjkxNzA3NDA5", "number": 1397, "state": "closed", "locked": 0, "title": "Fix for race condition in refresh_schemas(), closes #1231", "user": {"value": 9599, "label": "simonw"}, "body": "", "created_at": "2021-07-16T19:44:43Z", "updated_at": "2021-07-16T19:45:00Z", "closed_at": "2021-07-16T19:44:58Z", "merged_at": "2021-07-16T19:44:58Z", "merge_commit_sha": "c00f29affcafce8314366852ba1a0f5a7dd25690", "assignee": null, "milestone": null, "draft": 0, "head": "bf2453ab7cb876c91edab3df59b7f398df2f9727", "base": "dd5ee8e66882c94343cd3f71920878c6cfd0da41", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1397", "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": 692596006, "node_id": "MDExOlB1bGxSZXF1ZXN0NjkyNTk2MDA2", "number": 1400, "state": "closed", "locked": 0, "title": "Bump black from 21.6b0 to 21.7b0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 21.6b0 to 21.7b0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

21.7b0

\n

Black

\n
    \n
  • Configuration files using TOML features higher than spec v0.5.0 are now supported\n(#2301)
  • \n
  • Add primer support and test for code piped into black via STDIN (#2315)
  • \n
  • Fix internal error when FORCE_OPTIONAL_PARENTHESES feature is enabled (#2332)
  • \n
  • Accept empty stdin (#2346)
  • \n
  • Provide a more useful error when parsing fails during AST safety checks (#2304)
  • \n
\n

Docker

\n
    \n
  • Add new latest_release tag automation to follow latest black release on docker\nimages (#2374)
  • \n
\n

Integrations

\n
    \n
  • The vim plugin now searches upwards from the directory containing the current buffer\ninstead of the current working directory for pyproject.toml. (#1871)
  • \n
  • The vim plugin now reads the correct string normalization option in pyproject.toml\n(#1869)
  • \n
  • The vim plugin no longer crashes Black when there's boolean values in pyproject.toml\n(#1869)
  • \n
\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

21.7b0

\n

Black

\n
    \n
  • Configuration files using TOML features higher than spec v0.5.0 are now supported\n(#2301)
  • \n
  • Add primer support and test for code piped into black via STDIN (#2315)
  • \n
  • Fix internal error when FORCE_OPTIONAL_PARENTHESES feature is enabled (#2332)
  • \n
  • Accept empty stdin (#2346)
  • \n
  • Provide a more useful error when parsing fails during AST safety checks (#2304)
  • \n
\n

Docker

\n
    \n
  • Add new latest_release tag automation to follow latest black release on docker\nimages (#2374)
  • \n
\n

Integrations

\n
    \n
  • The vim plugin now searches upwards from the directory containing the current buffer\ninstead of the current working directory for pyproject.toml. (#1871)
  • \n
  • The vim plugin now reads the correct string normalization option in pyproject.toml\n(#1869)
  • \n
  • The vim plugin no longer crashes Black when there's boolean values in pyproject.toml\n(#1869)
  • \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.6b0&new-version=21.7b0)](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-07-19T13:13:41Z", "updated_at": "2021-08-25T01:29:56Z", "closed_at": "2021-08-25T01:29:55Z", "merged_at": "2021-08-25T01:29:55Z", "merge_commit_sha": "a1a33bb5822214be1cebd98cd858b2058d91a4aa", "assignee": null, "milestone": null, "draft": 0, "head": "e95c68592346e8602c2d4c68c8c7fef8bfb939c3", "base": "c73af5dd72305f6a01ea94a2c76d52e5e26de38b", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1400", "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": 711783616, "node_id": "MDExOlB1bGxSZXF1ZXN0NzExNzgzNjE2", "number": 1430, "state": "closed", "locked": 0, "title": "Column metadata", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #942\r\n\r\nStill needs:\r\n\r\n- [x] Tests\r\n- [x] Documentation", "created_at": "2021-08-12T23:34:39Z", "updated_at": "2021-08-12T23:53:23Z", "closed_at": "2021-08-12T23:53:23Z", "merged_at": "2021-08-12T23:53:23Z", "merge_commit_sha": "e837095ef35ae155b4c78cc9a8b7133a48c94f03", "assignee": null, "milestone": null, "draft": 0, "head": "941994725dd41deb6f839c5063cff5d15d4abb1c", "base": "b1fed48a95516ae84c0f020582303ab50ab817e2", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1430", "merged_by": null, "auto_merge": null} {"id": 712346199, "node_id": "MDExOlB1bGxSZXF1ZXN0NzEyMzQ2MTk5", "number": 1433, "state": "closed", "locked": 0, "title": "Update trustme requirement from <0.9,>=0.7 to >=0.7,<0.10", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [trustme](https://github.com/python-trio/trustme) 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-08-13T13:10:24Z", "updated_at": "2021-08-25T01:29:27Z", "closed_at": "2021-08-25T01:29:26Z", "merged_at": "2021-08-25T01:29:26Z", "merge_commit_sha": "5161422b7fa249c6b7d6dc47ec6f483d3fdbd170", "assignee": null, "milestone": null, "draft": 0, "head": "ddba6cc0f74a6cda31e621889f5055fe8687d446", "base": "2883098770fc66e50183b2b231edbde20848d4d6", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1433", "merged_by": null, "auto_merge": null} {"id": 712412883, "node_id": "MDExOlB1bGxSZXF1ZXN0NzEyNDEyODgz", "number": 1434, "state": "open", "locked": 0, "title": "Enrich arbitrary query results with foreign key links and column descriptions", "user": {"value": 9599, "label": "simonw"}, "body": "Refs #1293, follows #942.", "created_at": "2021-08-13T14:43:01Z", "updated_at": "2021-08-19T21:18:58Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "d4d4f5566b1d43075cb52ded5d19a9dcf4350761", "assignee": null, "milestone": null, "draft": 0, "head": "281c0872d5b8a462c9d7b2b2d77a924da4ed25a7", "base": "2883098770fc66e50183b2b231edbde20848d4d6", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1434", "merged_by": null, "auto_merge": null} {"id": 716262829, "node_id": "MDExOlB1bGxSZXF1ZXN0NzE2MjYyODI5", "number": 1444, "state": "closed", "locked": 0, "title": "Ability to deploy demos of branches", "user": {"value": 9599, "label": "simonw"}, "body": "See #1442.", "created_at": "2021-08-19T21:08:04Z", "updated_at": "2021-08-19T21:09:44Z", "closed_at": "2021-08-19T21:09:39Z", "merged_at": "2021-08-19T21:09:39Z", "merge_commit_sha": "d84e574e59c51ddcd6cf60a6f9b3d45182daf824", "assignee": null, "milestone": null, "draft": 0, "head": "75f9fe6d6bc642ce5587dd74eed70064c11868be", "base": "adb5b70de5cec3c3dd37184defe606a082c232cf", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1444", "merged_by": null, "auto_merge": null} {"id": 719175593, "node_id": "MDExOlB1bGxSZXF1ZXN0NzE5MTc1NTkz", "number": 1447, "state": "closed", "locked": 0, "title": "Remove underscore from search mode parameter name", "user": {"value": 127565, "label": "wragge"}, "body": "The fulltext search documentation refers to the parameter as `searchmode` but the `metadata.json` example uses `search_mode`. The latter doesn't actually seem to work.", "created_at": "2021-08-25T01:28:04Z", "updated_at": "2021-08-25T01:28:58Z", "closed_at": "2021-08-25T01:28:58Z", "merged_at": "2021-08-25T01:28:58Z", "merge_commit_sha": "93c3a7ffbfb3378f743ebce87d033cf1ce7689e0", "assignee": null, "milestone": null, "draft": 0, "head": "86f41bf3663e786a83b5aaa7d9a4ec452b04e2c0", "base": "92a99d969c01633dba14cceebeda65daaedaec17", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1447", "merged_by": null, "auto_merge": null} {"id": 720506135, "node_id": "MDExOlB1bGxSZXF1ZXN0NzIwNTA2MTM1", "number": 1448, "state": "closed", "locked": 0, "title": "Update pluggy requirement from ~=0.13.0 to >=0.13,<1.1", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Updates the requirements on [pluggy](https://github.com/pytest-dev/pluggy) to permit the latest version.\n
\nChangelog\n

Sourced from pluggy's changelog.

\n
\n

pluggy 1.0.0 (2021-08-25)

\n

Deprecations and Removals

\n
    \n
  • \n

    [#116](https://github.com/pytest-dev/pluggy/issues/116) <https://github.com/pytest-dev/pluggy/issues/116>_: Remove deprecated implprefix support.\nDecorate hook implementations using an instance of HookimplMarker instead.\nThe deprecation was announced in release 0.7.0.

    \n
  • \n
  • \n

    [#120](https://github.com/pytest-dev/pluggy/issues/120) <https://github.com/pytest-dev/pluggy/issues/120>_: Remove the deprecated proc argument to call_historic.\nUse result_callback instead, which has the same behavior.\nThe deprecation was announced in release 0.7.0.

    \n
  • \n
  • \n

    [#265](https://github.com/pytest-dev/pluggy/issues/265) <https://github.com/pytest-dev/pluggy/issues/265>_: Remove the _Result.result property. Use _Result.get_result() instead.\nNote that unlike result, get_result() raises the exception if the hook raised.\nThe deprecation was announced in release 0.6.0.

    \n
  • \n
  • \n

    [#267](https://github.com/pytest-dev/pluggy/issues/267) <https://github.com/pytest-dev/pluggy/issues/267>_: Remove official support for Python 3.4.

    \n
  • \n
  • \n

    [#272](https://github.com/pytest-dev/pluggy/issues/272) <https://github.com/pytest-dev/pluggy/issues/272>_: Dropped support for Python 2.\nContinue to use pluggy 0.13.x for Python 2 support.

    \n
  • \n
  • \n

    [#308](https://github.com/pytest-dev/pluggy/issues/308) <https://github.com/pytest-dev/pluggy/issues/308>_: Remove official support for Python 3.5.

    \n
  • \n
  • \n

    [#313](https://github.com/pytest-dev/pluggy/issues/313) <https://github.com/pytest-dev/pluggy/issues/313>_: The internal pluggy.callers, pluggy.manager and pluggy.hooks are now explicitly marked private by a _ prefix (e.g. pluggy._callers).\nOnly API exported by the top-level pluggy module is considered public.

    \n
  • \n
  • \n

    [#59](https://github.com/pytest-dev/pluggy/issues/59) <https://github.com/pytest-dev/pluggy/issues/59>_: Remove legacy __multicall__ recursive hook calling system.\nThe deprecation was announced in release 0.5.0.

    \n
  • \n
\n

Features

\n
    \n
  • \n

    [#282](https://github.com/pytest-dev/pluggy/issues/282) <https://github.com/pytest-dev/pluggy/issues/282>_: When registering a hookimpl which is declared as hookwrapper=True but whose\nfunction is not a generator function, a PluggyValidationError exception is\nnow raised.

    \n

    Previously this problem would cause an error only later, when calling the hook.

    \n

    In the unlikely case that you have a hookwrapper that returns a generator

    \n
  • \n
\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n
\nDependabot commands and options\n
\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n
", "created_at": "2021-08-26T13:09:52Z", "updated_at": "2021-10-13T21:11:01Z", "closed_at": "2021-10-13T21:11:00Z", "merged_at": "2021-10-13T21:11:00Z", "merge_commit_sha": "a673a93b57e249f06b2d0265ce33f458258feeb0", "assignee": null, "milestone": null, "draft": 0, "head": "a2117476a99fc4492646fa0702ba0eb6c78b402e", "base": "a1a33bb5822214be1cebd98cd858b2058d91a4aa", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1448", "merged_by": null, "auto_merge": null} {"id": 154246816, "node_id": "MDExOlB1bGxSZXF1ZXN0MTU0MjQ2ODE2", "number": 145, "state": "closed", "locked": 0, "title": "Fix pytest version conflict", "user": {"value": 9599, "label": "simonw"}, "body": "https://travis-ci.org/simonw/datasette/jobs/305929426\r\n\r\n pkg_resources.VersionConflict: (pytest 3.2.1 (/home/travis/virtualenv/python3.5.3/lib/python3.5/site-packages), \r\n Requirement.parse('pytest==3.2.3'))", "created_at": "2017-11-22T20:15:34Z", "updated_at": "2017-11-22T20:17:54Z", "closed_at": "2017-11-22T20:17:52Z", "merged_at": "2017-11-22T20:17:52Z", "merge_commit_sha": "f96e55bce55d26c4d5b198edc536e1b8e9bbea43", "assignee": null, "milestone": null, "draft": 0, "head": "e319478c4a34fb5afbff2b2a8c3b9ef9f859bb10", "base": "fa8eb0bf1b113ab17ede9cd107b7c3bd5cde39c3", "author_association": "OWNER", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/145", "merged_by": null, "auto_merge": null} {"id": 722480542, "node_id": "MDExOlB1bGxSZXF1ZXN0NzIyNDgwNTQy", "number": 1453, "state": "closed", "locked": 0, "title": "Bump black from 21.7b0 to 21.8b0", "user": {"value": 49699333, "label": "dependabot[bot]"}, "body": "Bumps [black](https://github.com/psf/black) from 21.7b0 to 21.8b0.\n
\nRelease notes\n

Sourced from black's releases.

\n
\n

21.8b0

\n

Black

\n
    \n
  • Add support for formatting Jupyter Notebook files (#2357)
  • \n
  • Move from appdirs dependency to platformdirs (#2375)
  • \n
  • Present a more user-friendly error if .gitignore is invalid (#2414)
  • \n
  • The failsafe for accidentally added backslashes in f-string expressions has been hardened to handle more edge cases during quote normalization (#2437)
  • \n
  • Avoid changing a function return type annotation's type to a tuple by adding a trailing comma (#2384)
  • \n
  • Parsing support has been added for unparenthesized walruses in set literals, set comprehensions, and indices (#2447).
  • \n
  • Pin setuptools-scm build-time dependency version (#2457)
  • \n
  • Exclude typing-extensions version 3.10.0.1 due to it being broken on Python 3.10 (#2460)
  • \n
\n

Blackd

\n
    \n
  • Replace sys.exit(-1) with raise ImportError as it plays more nicely with tools that scan installed packages (#2440)
  • \n
\n

Integrations

\n
    \n
  • The provided pre-commit hooks no longer specify language_version to avoid overriding default_language_version (#2430)
  • \n
\n
\n
\n
\nChangelog\n

Sourced from black's changelog.

\n
\n

21.8b0

\n

Black

\n
    \n
  • Add support for formatting Jupyter Notebook files (#2357)
  • \n
  • Move from appdirs dependency to platformdirs (#2375)
  • \n
  • Present a more user-friendly error if .gitignore is invalid (#2414)
  • \n
  • The failsafe for accidentally added backslashes in f-string expressions has been\nhardened to handle more edge cases during quote normalization (#2437)
  • \n
  • Avoid changing a function return type annotation's type to a tuple by adding a\ntrailing comma (#2384)
  • \n
  • Parsing support has been added for unparenthesized walruses in set literals, set\ncomprehensions, and indices (#2447).
  • \n
  • Pin setuptools-scm build-time dependency version (#2457)
  • \n
  • Exclude typing-extensions version 3.10.0.1 due to it being broken on Python 3.10\n(#2460)
  • \n
\n

Blackd

\n
    \n
  • Replace sys.exit(-1) with raise ImportError as it plays more nicely with tools that\nscan installed packages (#2440)
  • \n
\n

Integrations

\n
    \n
  • The provided pre-commit hooks no longer specify language_version to avoid overriding\ndefault_language_version (#2430)
  • \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.7b0&new-version=21.8b0)](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-08-30T13:13:39Z", "updated_at": "2021-09-14T13:10:40Z", "closed_at": "2021-09-14T13:10:38Z", "merged_at": null, "merge_commit_sha": "41e89206c9421f58bbc49b9a3f43439c351595a9", "assignee": null, "milestone": null, "draft": 0, "head": "4f492a79aec631904e3302857a0ab5ea10cbf1af", "base": "67cbf0ae7243431bf13702e6e3ba466b619c4d6f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1453", "merged_by": null, "auto_merge": null} {"id": 727265025, "node_id": "MDExOlB1bGxSZXF1ZXN0NzI3MjY1MDI1", "number": 1455, "state": "closed", "locked": 0, "title": "Add scientists to target groups", "user": {"value": 198537, "label": "rgieseke"}, "body": "Not sure if you want them mentioned explicitly (it's already a long list), but following up on https://twitter.com/simonw/status/1434176989565382656", "created_at": "2021-09-04T16:28:58Z", "updated_at": "2021-09-04T16:32:21Z", "closed_at": "2021-09-04T16:31:38Z", "merged_at": "2021-09-04T16:31:38Z", "merge_commit_sha": "772f9a07ce363869e0aaa7600617454dc00e6966", "assignee": null, "milestone": null, "draft": 0, "head": "afba5f9201e395bce43dcac13da4a2041872316e", "base": "67cbf0ae7243431bf13702e6e3ba466b619c4d6f", "author_association": "CONTRIBUTOR", "repo": {"value": 107914493, "label": "datasette"}, "url": "https://github.com/simonw/datasette/pull/1455", "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": 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}