id,node_id,number,state,locked,title,user,body,created_at,updated_at,closed_at,merged_at,merge_commit_sha,assignee,milestone,draft,head,base,author_association,repo,url,merged_by,auto_merge 453890292,MDExOlB1bGxSZXF1ZXN0NDUzODkwMjky,901,closed,0,Use None as a default arg,56323389,"When passing a mutable value as a default argument in a function, the default argument is mutated anytime that value is mutated. This poses a bug risk. Instead, use None as a default and assign the mutable value inside the function.",2020-07-20T22:18:38Z,2020-07-31T18:42:39Z,2020-07-31T18:42:39Z,2020-07-31T18:42:39Z,2d7fa8b9058dfbf9c7c371cdeec115d32a177dc9,,,0,1285f28d82d9ca97e7543bb87fc6ff462855debe,d9a5ef1c32a4390e398653ebfd570f8e1a03d93e,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/901,, 453995179,MDExOlB1bGxSZXF1ZXN0NDUzOTk1MTc5,902,closed,0,Don't install tests package,32467826,"The `exclude` argument to `find_packages` needs an iterable of package names. Fixes: #456 ",2020-07-21T01:08:50Z,2020-07-24T20:39:54Z,2020-07-24T20:39:54Z,2020-07-24T20:39:54Z,6be5654ffab282e8cf39cc138ba2d4496ebc7407,,,0,9aa139dc98bd72a29ee1c940820bc05b0e717f1d,d9a5ef1c32a4390e398653ebfd570f8e1a03d93e,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/902,, 458435592,MDExOlB1bGxSZXF1ZXN0NDU4NDM1NTky,910,closed,0,"Update pytest requirement from <5.5.0,>=5.2.2 to >=5.2.2,<6.1.0",27856297,"Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
Release notes

Sourced from pytest's releases.

6.0.0

pytest 6.0.0 (2020-07-28)

(Please see the full set of changes for this release also in the 6.0.0rc1 notes below)

Breaking Changes

Features

Improvements

Bug Fixes

Changelog

Sourced from pytest's changelog.

Commits

Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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) - `@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) - `@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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)
",2020-07-29T13:21:17Z,2020-07-29T21:26:05Z,2020-07-29T21:26:04Z,2020-07-29T21:26:04Z,c5c12a797f0b81cd5862dcd50354b4b571e9bf5a,,,0,3493915bbce6a279659df3d6b09ba0d36a8f9793,3c33b421320c0be81a625ca7307b2e4416a9ed5b,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/910,, 466410755,MDExOlB1bGxSZXF1ZXN0NDY2NDEwNzU1,927,closed,0,"'datasette --get' option, refs #926",9599,"Refs #926, #898",2020-08-11T23:31:52Z,2020-08-12T00:24:42Z,2020-08-12T00:24:41Z,2020-08-12T00:24:41Z,e139a7619f63d45ca2ff1ee108b933e17b5675b3,,,0,2111da01a03cfc62303b6a4b59ea9f96d22c0f78,83eda049af3f38d4289118d3576f96b2535084b1,OWNER,107914493,https://github.com/simonw/datasette/pull/927,, 468370658,MDExOlB1bGxSZXF1ZXN0NDY4MzcwNjU4,936,closed,0,Don't hang in db.execute_write_fn() if connection fails,9599,Refs #935,2020-08-15T22:20:12Z,2020-08-15T22:35:33Z,2020-08-15T22:35:32Z,2020-08-15T22:35:32Z,b86f94883b1d827f85b07009e8346b8e9c6eeefa,,,0,94a68b95a21f29526d66e88bf5ea524a3efcc609,13b3b51087964d5e1a8c1cdd2495e07bdbe176b8,OWNER,107914493,https://github.com/simonw/datasette/pull/936,, 468377212,MDExOlB1bGxSZXF1ZXN0NDY4Mzc3MjEy,937,closed,0,Docs now live at docs.datasette.io,9599,,2020-08-15T23:53:52Z,2020-08-15T23:57:06Z,2020-08-15T23:57:05Z,2020-08-15T23:57:05Z,41ddc197561ac2d2a1bb988956c301a523c6ca35,,,0,ff2605af65e023564cd7b57382b116e94b9d4f16,af12f45c2b0e4782ca92c2d00481dc47ccb7a046,OWNER,107914493,https://github.com/simonw/datasette/pull/937,, 468484031,MDExOlB1bGxSZXF1ZXN0NDY4NDg0MDMx,941,closed,0,"Run CI on GitHub Actions, not Travis",9599,Refs #940,2020-08-16T19:13:39Z,2020-08-18T05:09:36Z,2020-08-18T05:09:35Z,2020-08-18T05:09:35Z,5e0b72247ecab4ce0fcec599b77a83d73a480872,,,0,f5a72e11b632b01acc41c07f6f4cfffa1a7ed14e,52eabb019d4051084b21524bd0fd9c2731126985,OWNER,107914493,https://github.com/simonw/datasette/pull/941,, 469651732,MDExOlB1bGxSZXF1ZXN0NDY5NjUxNzMy,48,closed,0,Add pull requests,755825,"ref #46 Issues don't have merge information on them, which means that PRs need to be pulled separately. Did my best to mimic the API of issues.",2020-08-18T17:58:44Z,2020-11-29T23:51:09Z,2020-11-29T23:51:09Z,2020-11-29T23:51:09Z,b37f55549461cfe0731b57623f315860b3db49d0,,,0,3a0d5c498f9faae4e40aab204cd01b965a4f61f3,16d271253f4ea71b261d2d228b926c7bc1a7e660,CONTRIBUTOR,207052882,https://github.com/dogsheep/github-to-sqlite/pull/48,, 469944999,MDExOlB1bGxSZXF1ZXN0NDY5OTQ0OTk5,49,closed,0,"Document the use of --stop_after with favorites, refs #20",370930,(I discovered this trawling the issues for how to use --since with favorites),2020-08-19T06:10:52Z,2021-08-20T00:02:11Z,2021-08-20T00:02:11Z,2021-08-20T00:02:10Z,b6a4da8be3b6d4b74c6a5fac8924bf22a6824f2c,,,0,7ace806c81faf31c1aace0f0b2a4c17dd72cfa06,21fc1cad6dd6348c67acff90a785b458d3a81275,CONTRIBUTOR,206156866,https://github.com/dogsheep/twitter-to-sqlite/pull/49,, 474703007,MDExOlB1bGxSZXF1ZXN0NDc0NzAzMDA3,952,closed,0,"Update black requirement from ~=19.10b0 to >=19.10,<21.0",27856297,"Updates the requirements on [black](https://github.com/psf/black) to permit the latest version.
Changelog

Sourced from black's changelog.

20.8b1

Packaging

20.8b0

Black

Commits

Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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) - `@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) - `@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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)
",2020-08-27T13:31:36Z,2020-09-02T22:26:17Z,2020-09-02T22:26:16Z,,37f8531b321855bdbc58960281957febaa59e4b9,,,0,7b1354706467136f5030504fe799201b13333a95,86aefc39c5aca01b00dbc57ba386a6743c21fb46,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/952,, 475665984,MDExOlB1bGxSZXF1ZXN0NDc1NjY1OTg0,142,closed,0,"insert_all(..., alter=True) should work for new columns introduced after the first 100 records",96218,Closes #139.,2020-08-28T22:22:57Z,2020-08-30T07:28:23Z,2020-08-28T22:30:14Z,2020-08-28T22:30:14Z,947bb7626fd1763608a470adf9cf5f156ef003e9,,,0,1b992c7c1e5855caa87c7939efad287052f446f3,ea87c2b943fdd162c42a900ac0aea5ecc2f4b9d9,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/142,, 475874493,MDExOlB1bGxSZXF1ZXN0NDc1ODc0NDkz,146,closed,0,Handle case where subsequent records (after first batch) include extra columns,96218,"Addresses #145. I think this should do the job. If it meets with your approval I'll update this PR to include an update to the documentation -- I came across this bug while preparing a PR to update the documentation around `batch_size` in any event.",2020-08-30T07:13:58Z,2020-09-08T23:20:37Z,2020-09-08T23:20:37Z,2020-09-08T23:20:36Z,e6d202b742a7b531fffa593703d34f8337632d68,,,0,40fcea41525682fdc2f601da787b29d5a8517dcd,deb2eb013ff85bbc828ebc244a9654f0d9c3139e,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/146,, 481616704,MDExOlB1bGxSZXF1ZXN0NDgxNjE2NzA0,151,closed,0,Tracer mechanism for seeing underlying SQL,9599,"Refs #150. Needs tests and documentation, including for the new `db.execute()` and `db.executescript()` methods.",2020-09-07T19:46:43Z,2020-09-07T21:57:00Z,2020-09-07T21:57:00Z,2020-09-07T21:57:00Z,cf2cb244faf992118f34aa196387a4ef8b39a20f,,,0,dc82bf371911d01ac140f40ea99d06d2daee507e,3e87500e1561f5c4e105cd026d33e0f715cc7dea,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/151,, 483027587,MDExOlB1bGxSZXF1ZXN0NDgzMDI3NTg3,156,closed,0,Typos in tests,96218,"One of these is my fault, and the other is one I just happened to come across. They're harmless, but might as well be fixed.",2020-09-09T18:00:58Z,2020-09-09T18:24:50Z,2020-09-09T18:21:23Z,2020-09-09T18:21:23Z,367082e787101fb90901ef3214804ab23a92ce46,,,0,b777776753ef08f35dfaa7d86b2d5082e8904f27,6be61263642d8e46ec54cf5f51af74e0df2f2393,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/156,, 483175509,MDExOlB1bGxSZXF1ZXN0NDgzMTc1NTA5,158,closed,0,Fix accidental mega long line in docs,167319,,2020-09-09T22:31:23Z,2020-09-16T06:21:43Z,2020-09-16T06:21:43Z,2020-09-16T06:21:43Z,7805d53bcf11199bd1f2b07e05ae90151f9d0eb0,,,0,5c1d8a5f3ac8684657eefe4f57ff5ff605f6b633,367082e787101fb90901ef3214804ab23a92ce46,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/158,, 490607949,MDExOlB1bGxSZXF1ZXN0NDkwNjA3OTQ5,161,closed,0,table.transform() method,9599,"Refs #114 - [x] Ability to change the primary key - [x] Support for changing default value for columns - [x] Support for changing `NOT NULL` status of columns - [x] Support for copying existing foreign keys and removing them - Support for `conversions=` parameter - [x] Detailed documentation - [x] `PRAGMA foreign_keys` stuff",2020-09-21T23:16:59Z,2020-09-22T07:48:24Z,2020-09-22T04:20:02Z,2020-09-22T04:20:02Z,987dd123f2ac43c5ab66d69e59d454fe09660606,,5897911,0,dc3eb9c313502832c07f4de889aa60c373f45b52,ef882986d07f157b6bcc6be3d7b64270fda3e523,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/161,, 490703173,MDExOlB1bGxSZXF1ZXN0NDkwNzAzMTcz,166,closed,0,Keyword only arguments for transform(),9599,Refs #165,2020-09-22T05:41:44Z,2020-09-22T06:39:11Z,2020-09-22T06:39:11Z,2020-09-22T06:39:10Z,f8e10df00eae209fb0a1ea03384d9153f673a3ec,,,0,f8648cac3a6dda90578a1536cdae44d145633a2c,987dd123f2ac43c5ab66d69e59d454fe09660606,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/166,, 492257405,MDExOlB1bGxSZXF1ZXN0NDkyMjU3NDA1,174,closed,0,"Much, much faster extract() implementation",9599,Takes my test down from ten minutes to four seconds. Refs #172.,2020-09-24T07:52:31Z,2020-09-24T15:44:00Z,2020-09-24T15:43:56Z,2020-09-24T15:43:56Z,022cdd97a9ddab1a152e23e1e1c42e78c1ed0fa9,,,0,227095ee90e2a92effec6478d3e629a24d3ccfba,0ca5585fcb834122193e8e7186f926217b23cb8a,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/174,, 493162767,MDExOlB1bGxSZXF1ZXN0NDkzMTYyNzY3,178,closed,0,Update README.md,19921,"The `sqlite-utils insert releases.db releases - --pk` is missing the pk field name, added ` ""id""` to fix it.",2020-09-25T15:52:11Z,2020-10-01T14:18:30Z,2020-09-30T20:29:28Z,2020-09-30T20:29:28Z,cada1017edcfa691c2314d7ad1b7c7576495317f,,,0,0c6a81dae802a55d5469c18cd32402d11b6e8a59,94fc62857ee2655a21d85f6dae84b67bbfa5956d,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/178,, 494146043,MDExOlB1bGxSZXF1ZXN0NDk0MTQ2MDQz,977,closed,0,"Update pytest requirement from <6.1.0,>=5.2.2 to >=5.2.2,<6.2.0",27856297,"Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
Release notes

Sourced from pytest's releases.

6.1.0

pytest 6.1.0 (2020-09-26)

Breaking Changes

Deprecations

Features

Improvements

Changelog

Sourced from pytest's changelog.

Commits

Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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) - `@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) - `@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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)
",2020-09-28T13:33:05Z,2020-09-28T22:16:36Z,2020-09-28T22:16:35Z,2020-09-28T22:16:35Z,1f021c37110fc9019b0ef70062c28c335e568ae2,,,0,5c01344a0ee3e0e7ad59e1cd8b0e63c976be71ee,9a6d0dce282e7fb58c5610e24c74098c923abfdc,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/977,, 496298180,MDExOlB1bGxSZXF1ZXN0NDk2Mjk4MTgw,986,closed,0,"Allow facet by primary keys, fixes #985",39452697,"Hello! This PR makes it possible to facet by primary keys. Did I get it right that just removing the condition on UI side is enough? From testing it works fine with primary keys, just as with normal keys. If so, should I also remove unused `data-is-pk`?",2020-10-01T14:18:55Z,2020-10-01T16:51:45Z,2020-10-01T16:51:45Z,,58906c597f1217381f5d746726bcb8bdfa8f52f8,,,0,76f7094bd33f037a1c689a173f0dbbb988e6dcdd,141544613f9e76ddb74eee38d6f8ee1e0e70f833,NONE,107914493,https://github.com/simonw/datasette/pull/986,, 498104830,MDExOlB1bGxSZXF1ZXN0NDk4MTA0ODMw,994,closed,0,Run tests against Python 3.9,9599,,2020-10-05T20:40:13Z,2020-10-09T16:22:51Z,2020-10-09T16:22:50Z,2020-10-09T16:22:50Z,6e091b14b651d67e0ff41a353d36bbeb1d8ba235,,,0,ecba5d257ef4218a98b5903d856a4d7c0382f43d,e807c4eac0e85ae15e013379b0dde1d797f1377d,OWNER,107914493,https://github.com/simonw/datasette/pull/994,, 498630708,MDExOlB1bGxSZXF1ZXN0NDk4NjMwNzA4,995,closed,0,Document setting Google Cloud SDK properties,110420,Document setting Google Cloud SDK properties to avoid having to respond to interactive prompts when running `datasette publish cloudrun`.,2020-10-06T15:18:01Z,2020-10-08T23:55:30Z,2020-10-06T16:25:38Z,2020-10-06T16:25:38Z,ca5ba6b77b4c973fa7ba91008a2e99debfa306b4,,5971510,0,aed2cf9f470bdc0b704ee62032fe0dcb1e557e43,5a184a5d211d3226e0417ee5cf8476cd887cd35e,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/995,, 499603359,MDExOlB1bGxSZXF1ZXN0NDk5NjAzMzU5,184,closed,0,Test against Python 3.9,9599,,2020-10-08T01:37:05Z,2020-10-08T01:44:06Z,2020-10-08T01:44:06Z,2020-10-08T01:44:06Z,8e91de8e4edf6c8abeeccdf084b8870fff40a51a,,,0,975c05b6dde9feebcdecabc047d47122ebcfdf84,7f4fe9190c1df7f0e72f9d7040327a43cf252c48,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/184,, 500256485,MDExOlB1bGxSZXF1ZXN0NTAwMjU2NDg1,1000,closed,0,datasette.client internal requests mechanism,9599,Refs #943,2020-10-08T23:58:25Z,2020-10-09T16:11:26Z,2020-10-09T16:11:25Z,2020-10-09T16:11:25Z,8f97b9b58e77f82fef1f10e9c9f6754b993544b6,9599,5971510,0,8a80c79deb640bc1a1864132a3564ccca59e8858,7249ac5ca04b5ddc6517750326ee7e522cc49145,OWNER,107914493,https://github.com/simonw/datasette/pull/1000,, 500798091,MDExOlB1bGxSZXF1ZXN0NTAwNzk4MDkx,1008,open,0,Add json_loads and json_dumps jinja2 filters,649467,,2020-10-09T20:11:34Z,2020-12-15T02:30:28Z,,,e33e91ca7c9b2fdeab9d8179ce0d603918b066aa,,,0,40858989d47043743d6b1c9108528bec6a317e43,1bdbc8aa7f4fd7a768d456146e44da86cb1b36d1,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1008,, 501579088,MDExOlB1bGxSZXF1ZXN0NTAxNTc5MDg4,1017,closed,0,"Update janus requirement from <0.6,>=0.4 to >=0.4,<0.7",27856297,"Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version.
Changelog

Sourced from janus's changelog.

Changes

0.5.0 (2020-04-23)

0.4.0 (2018-07-28)

0.3.2 (2018-07-06)

0.3.1 (2018-01-30)

0.3.0 (2017-02-21)

0.2.4 (2016-12-05)

0.2.3 (2016-07-12)

0.2.2 (2016-07-11)

0.2.1 (2016-03-24)

Commits

Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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) - `@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) - `@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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)
",2020-10-12T13:29:46Z,2020-10-14T21:52:08Z,2020-10-14T21:52:07Z,2020-10-14T21:52:07Z,7f2edb5dd2074dce0090659021991695a984844b,,,0,f30d9da06b02a53f880b6fe7a7af9d3ff719dede,acf07a67722aa74828744726187690b59d342494,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1017,, 501579315,MDExOlB1bGxSZXF1ZXN0NTAxNTc5MzE1,1018,closed,0,"Update asgiref requirement from ~=3.2.10 to >=3.2.10,<3.4.0",27856297,"Updates the requirements on [asgiref](https://github.com/django/asgiref) to permit the latest version.
Changelog

Sourced from asgiref's changelog.

3.3.0 (2020-10-09)

3.2.10 (2020-08-18)

3.2.9 (2020-06-16)

3.2.8 (2020-06-15)

3.2.7 (2020-03-24)

3.2.6 (2020-03-23)

3.2.5 (2020-03-11)

3.2.4 (2020-03-10)

Commits

Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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) - `@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) - `@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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)
",2020-10-12T13:30:09Z,2020-10-14T21:51:36Z,2020-10-14T21:51:35Z,2020-10-14T21:51:35Z,b4a8e70957517ff44d6a9121422d266a3c5fd664,,,0,4b021be087d0dba2b4ac0b872b2512f5b2203397,acf07a67722aa74828744726187690b59d342494,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1018,, 501791663,MDExOlB1bGxSZXF1ZXN0NTAxNzkxNjYz,10,closed,0,Update utils.py to fix sqlite3.OperationalError,29426418,"Fixes the errors: - sqlite3.OperationalError: table posts has no column named text - sqlite3.OperationalError: table photos has no column named hasSticker That will cause sqlite-utils to notice if there's a missing column and add it. As recommended by @simonw",2020-10-12T20:17:53Z,2020-10-12T20:25:10Z,2020-10-12T20:25:09Z,2020-10-12T20:25:09Z,a5a2b5feb56fef4f2b627699b7d628ee9d2d63db,,,0,c7bdb0207708a9eb40ba095039f0918fd103b176,f4a82633da927cde672c9d9af92930bfca2e3ddf,CONTRIBUTOR,205429375,https://github.com/dogsheep/swarm-to-sqlite/pull/10,, 503685077,MDExOlB1bGxSZXF1ZXN0NTAzNjg1MDc3,1022,closed,0,Fix table name in spatialite example command,639012,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). ,2020-10-14T22:19:34Z,2020-10-14T23:46:46Z,2020-10-14T23:46:46Z,2020-10-14T23:46:46Z,4f7c0ebd85ccd8c1853d7aa0147628f7c1b749cc,,,0,7cef70a5528af4626302729ff0ebc88d92b5f4ca,7f2edb5dd2074dce0090659021991695a984844b,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1022,, 505076418,MDExOlB1bGxSZXF1ZXN0NTA1MDc2NDE4,5,open,0,Add fitbit-to-sqlite,4632208,,2020-10-16T20:04:05Z,2020-10-16T20:04:05Z,,,9b9a677a4fcb6a31be8c406b3050cfe1c6e7e398,,,0,db64d60ee92448b1d2a7e190d9da20eb306326b0,d0686ebed6f08e9b18b4b96c2b8170e043a69adb,FIRST_TIME_CONTRIBUTOR,214746582,https://github.com/dogsheep/dogsheep.github.io/pull/5,, 505339515,MDExOlB1bGxSZXF1ZXN0NTA1MzM5NTE1,1029,closed,0,fix(docs): broken link,17075617,This PR fixes a broken markdown link in the `Publish` docs page.,2020-10-17T20:03:20Z,2020-10-17T20:05:04Z,2020-10-17T20:05:04Z,2020-10-17T20:05:04Z,568bd7bbf590861687db8c318f3d8cfcd1dfb47a,,,0,a65d30e832d7e65adc65dcce8ab006227e4dafe4,4f7c0ebd85ccd8c1853d7aa0147628f7c1b749cc,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1029,, 505453900,MDExOlB1bGxSZXF1ZXN0NTA1NDUzOTAw,1030,open,0,Make `package` command deal with a configuration directory argument,299380,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.,2020-10-18T11:07:02Z,2020-10-19T08:01:51Z,,,124142e4d2710525b09ff2bd2a7a787cbed163a4,,,0,e0825334692967fec195e104cb6aa11095807a8e,c37a0a93ecb847e66cfe7b6f9452ba210fcae91b,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1030,, 505769462,MDExOlB1bGxSZXF1ZXN0NTA1NzY5NDYy,1031,closed,0,Fallback to databases in inspect-data.json when no -i options are passed,299380,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.,2020-10-19T07:51:06Z,2021-03-29T01:46:45Z,2021-03-29T00:23:41Z,,3ee6b39e96ef684e1ac393bb269d804e957fee1d,,,0,7e7eaa4e712b01de0b5a8a1b90145bdc1c3cd731,c37a0a93ecb847e66cfe7b6f9452ba210fcae91b,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1031,, 507267087,MDExOlB1bGxSZXF1ZXN0NTA3MjY3MDg3,1038,closed,0,DOC: Fix syntax error,194147,"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 `)`). ",2020-10-21T05:45:38Z,2020-10-21T22:57:21Z,2020-10-21T22:44:17Z,2020-10-21T22:44:17Z,6e26b057996c6f3fefa8ad528e2759e53c738844,,,0,7fc0cce6a2d13ccc82c3584996acec236ae65df6,66120a7a1cb592e8a21164cf537f62a4d7ab1dfc,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1038,, 507903392,MDExOlB1bGxSZXF1ZXN0NTA3OTAzMzky,1040,closed,0,/db/table/-/blob/pk/column.blob download URL,9599,"Refs #1036. Still needs: - [x] Comprehensive tests across all of the code branches, plus permissions - [x] A bit more refactoring to share logic cleanly with `RowView` - ~~A configuration option to disable this feature (probably)~~",2020-10-21T22:39:15Z,2020-10-24T23:09:20Z,2020-10-24T23:09:19Z,2020-10-24T23:09:19Z,5a1519796037105bc20bcf2f91a76e022926c204,,6026070,0,4f3165f25fd9241fcf1291c797f4c77766b954dc,bf82b3d6a605c9ddadd5fb739249dfe6defaf635,OWNER,107914493,https://github.com/simonw/datasette/pull/1040,, 508719567,MDExOlB1bGxSZXF1ZXN0NTA4NzE5NTY3,1043,closed,0,Include LICENSE in sdist,45380,"Hi, thanks for `datasette`! This PR adds the `LICENSE` to source distributions, which seems the norm for Apache-2.0 stuff. I 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! Motivation: It 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.",2020-10-23T05:04:12Z,2020-10-26T00:14:57Z,2020-10-23T20:54:35Z,2020-10-23T20:54:35Z,976e5f74aae1fa0d406df6691dc8b5feeebe8788,,,0,dc4129cb37060b52775d96e756f7cdb65ee76bc3,d0cc6f4c32e1f89238ddec782086b3122f445bd4,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1043,, 508720660,MDExOlB1bGxSZXF1ZXN0NTA4NzIwNjYw,1044,closed,0,Add minimum supported python,45380,"Thanks for `datasette`! This 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).",2020-10-23T05:08:03Z,2020-10-23T20:53:08Z,2020-10-23T20:53:08Z,2020-10-23T20:53:08Z,cab8e65261b117b493af6a0b21aa2e1ae4564419,,,0,6453ab18e56b36bc912b6f24c4a43002c6084ade,d0cc6f4c32e1f89238ddec782086b3122f445bd4,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1044,, 509590205,MDExOlB1bGxSZXF1ZXN0NTA5NTkwMjA1,1049,closed,0,Add template block prior to extra URL loaders,82988,"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.",2020-10-25T13:08:55Z,2020-10-29T09:20:52Z,2020-10-29T09:20:34Z,,99f994b14e2dbe22fda18b67dd5c824d359443fb,,,0,50a743ad35684f09d3c3880f6af2019e59271237,42f4851e3e7885f1092f104d6c883cea40b12f02,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1049,, 510235909,MDExOlB1bGxSZXF1ZXN0NTEwMjM1OTA5,189,closed,0,Allow iterables other than Lists in m2m records,35681,"I was playing around with sqlite-utils, creating a Roam Research dogsheep-style importer for Datasette, and ran into a slight snag. I wanted to use a generator to add an order column in an importer. It looked something like: ``` def order_generator(iterable, attr=None): if attr is None: attr = ""order"" order: int = 0 for i in iterable: i[attr] = order order += 1 yield i ``` When I used this with `insert_all` and other things, it worked fine--but it didn't work as the `records` argument to `m2m`. I dug into it, and sqlite-utils is explicitly checking if the records argument is a list or a tuple. I flipped the check upside down, and now it checks if the argument is a mapping. If it's a mapping, it wraps it in a list, otherwise it leaves it alone. (I get that it might not really make sense to put the order column on the second table. I changed my import schema a bit, and no longer have a real example, but maybe this change still makes sense.) The automated tests still pass, but I did not add any new ones. Let me know what you think! I'm really loving Datasette and its ecosystem; thanks for everything!",2020-10-26T18:47:44Z,2020-10-27T16:28:37Z,2020-10-27T16:24:21Z,2020-10-27T16:24:21Z,f045d8559a6d2cb922a2de30fbcc896a4486b82f,,,0,93230b2acb61635b6d5070ad9c65e7221c63b75a,e4f1c7b936981de29823730c5dbef4f4ba7a4286,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/189,, 510956134,MDExOlB1bGxSZXF1ZXN0NTEwOTU2MTM0,190,closed,0,Progress bar for sqlite-utils insert command,9599,Refs #173,2020-10-27T18:08:53Z,2020-10-27T18:16:03Z,2020-10-27T18:16:03Z,2020-10-27T18:16:03Z,f99a23652910b03ac4669bbbb35a9b484451aabb,,,0,62d678122a251812cd650845705ca7b9efcef86d,c7e5dd64513c0ec2b2df4c51c8df924c282417f9,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/190,, 511005542,MDExOlB1bGxSZXF1ZXN0NTExMDA1NTQy,1056,closed,0,"Radical new colour scheme and base styles, courtesy of @natbat",9599,,2020-10-27T19:31:48Z,2020-10-27T19:39:57Z,2020-10-27T19:39:56Z,2020-10-27T19:39:56Z,e5f5034bcdc71e4bc62a6a155ca60eb41910c335,,6026070,0,a7b2aabd5148c0ee382b583de68a4f0538f7dfb1,26bb4a268127da2c38f4241abe45444b2a6f7874,OWNER,107914493,https://github.com/simonw/datasette/pull/1056,, 511549374,MDExOlB1bGxSZXF1ZXN0NTExNTQ5Mzc0,1059,closed,0,"Update aiofiles requirement from <0.6,>=0.4 to >=0.4,<0.7",27856297,"Updates the requirements on [aiofiles](https://github.com/Tinche/aiofiles) to permit the latest version.
Commits

Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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) - `@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) - `@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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)
",2020-10-28T13:32:40Z,2020-10-28T17:08:29Z,2020-10-28T17:08:28Z,2020-10-28T17:08:28Z,879617265262024edd93722adcdcb6c21e57f5f7,,,0,e46327a745c5a4130b65bf340d19dccc76441841,7d9fedc176717a7e3d22a96575ae0aada5a65440,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1059,, 511868153,MDExOlB1bGxSZXF1ZXN0NTExODY4MTUz,1060,closed,0,New explicit versioning mechanism,9599,"- Remove all references to versioneer - Re-implement versioning to use a static string baked into the repo - Ensure that string is output by `datasette --version` and `/-/versions` Refs #1054",2020-10-28T22:14:55Z,2020-10-29T03:38:17Z,2020-10-29T03:38:16Z,2020-10-29T03:38:16Z,cefd058c1c216a184bb63c79abba66893977c18e,,6026070,0,4725d46780783e9875bde5957f053ba19cf92ff0,abcf0222496d8148b2e585ffa0ff192270a04b06,OWNER,107914493,https://github.com/simonw/datasette/pull/1060,, 512545364,MDExOlB1bGxSZXF1ZXN0NTEyNTQ1MzY0,1061,closed,0,.blob output renderer,9599,"- [x] Remove the `/-/...blob/...` route I added in #1040 in place of the new `.blob` renderer URLs - [x] Link to new `.blob` download links on the arbitrary query page (using `_blob_hash=...`) - plus tests for this Closes #1050, Closes #1051",2020-10-29T20:25:08Z,2020-10-29T22:01:40Z,2020-10-29T22:01:39Z,2020-10-29T22:01:39Z,78b3eeaad9189eb737014f53212082684f4bb0d4,,6026070,0,1196d084de6a7a6f68c7705a6cc096bb8df132e3,d6f9ff71378c4eab34dad181c23cfc143a4aef2d,OWNER,107914493,https://github.com/simonw/datasette/pull/1061,, 512736705,MDExOlB1bGxSZXF1ZXN0NTEyNzM2NzA1,1065,closed,0,Nav menu plus menu_links() hook,9599,"Closes #1064, refs #690.",2020-10-30T03:40:18Z,2020-10-30T03:45:17Z,2020-10-30T03:45:16Z,2020-10-30T03:45:16Z,18a64fbb29271ce607937110bbdb55488c43f4e0,,6026070,0,5f118b56afbeff5348acd50a8b87537210e731ee,1a861be19e326e0c88230a711a1b6536366697d7,OWNER,107914493,https://github.com/simonw/datasette/pull/1065,, 513106026,MDExOlB1bGxSZXF1ZXN0NTEzMTA2MDI2,1069,closed,0,load_template() plugin hook,9599,Refs #1042,2020-10-30T15:59:45Z,2020-10-30T17:47:20Z,2020-10-30T17:47:19Z,2020-10-30T17:47:19Z,81dea4b07ab2b6f4eaaf248307d2b588472054a1,,6026070,0,92f3840882a24da29d0d4073e5ed9d77fce438fc,fcf43589eb6a1f1d0432772a639fd35711c48e0c,OWNER,107914493,https://github.com/simonw/datasette/pull/1069,, 515014883,MDExOlB1bGxSZXF1ZXN0NTE1MDE0ODgz,195,closed,0,table.search() improvements plus sqlite-utils search command,9599,Refs #192. Still needs tests.,2020-11-03T22:02:08Z,2020-11-06T18:30:49Z,2020-11-06T18:30:42Z,2020-11-06T18:30:42Z,d411fba1f4124047429ac9d1175a04b36bf5bee9,,,0,973d94d44f27d35d856fe1cc822f9d5d40e4b5e6,59d8689ed0e6e042d99fd650896def680ca3c657,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/195,, 518988879,MDExOlB1bGxSZXF1ZXN0NTE4OTg4ODc5,1085,closed,0,Use FTS4 in fixtures,9599,Refs #1081,2020-11-11T06:44:30Z,2020-11-12T00:02:59Z,2020-11-12T00:02:58Z,2020-11-12T00:02:58Z,e8e0a6f284ca953b2980186c4356594c07bd1929,,,0,51e7651c66aaf1804274ce68a6b5218bbba76338,2a981e2ac1d13125973904b777d00ea75e8df4e6,OWNER,107914493,https://github.com/simonw/datasette/pull/1085,, 521054612,MDExOlB1bGxSZXF1ZXN0NTIxMDU0NjEy,13,open,0,SQLite does not have case sensitive columns,1689944,"This solves a weird issue when there is record with metadata key that is only different in letter cases. See the test for details.",2020-11-14T20:12:32Z,2021-08-24T13:28:26Z,,,38856acbc724ffdb8beb9e9f4ef0dbfa8ff51ad1,,,0,3e1b2945bc7c31be59e89c5fed86a5d2a59ebd5a,71e36e1cf034b96de2a8e6652265d782d3fdf63b,FIRST_TIME_CONTRIBUTOR,197882382,https://github.com/dogsheep/healthkit-to-sqlite/pull/13,, 521276296,MDExOlB1bGxSZXF1ZXN0NTIxMjc2Mjk2,1097,closed,0,Use f-strings,9599,"Since Datasette now requires Python 3.6, how about some f-strings? I ran this in the `datasette` root checkout: ``` pip install flynt flynt . black . ```",2020-11-15T23:12:36Z,2020-11-15T23:24:24Z,2020-11-15T23:24:23Z,2020-11-15T23:24:23Z,30e64c8d3b3728a86c3ca42a75322cc3feb5b0c8,,,0,e89211d21eebb7a2e4588b06927da84416e3a555,6fd35be64de221eba4945ca24e8e1678f6142a73,OWNER,107914493,https://github.com/simonw/datasette/pull/1097,, 521287994,MDExOlB1bGxSZXF1ZXN0NTIxMjg3OTk0,203,open,0,changes to allow for compound foreign keys,1049910,"Add support for compound foreign keys, as per issue #117 Not sure if this is the right approach. In particular I'm unsure about: - the new `ForeignKey` class, which replaces the namedtuple in order to ensure that `column` and `other_column` are forced into tuples. The class does the job, but doesn't feel very elegant. - I haven't rewritten `guess_foreign_table` to take account of multiple columns, so it just checks for the first column in the foreign key definition. This isn't ideal. - I haven't added any ability to the CLI to add compound foreign keys, it's only in the python API at the moment. The PR also contains a minor related change that columns and tables are always quoted in foreign key definitions.",2020-11-16T00:30:10Z,2023-01-25T18:47:18Z,,,0507a9464314f84e9e58b1931c583df51d757d7c,,,0,5e43e31c2b9bcf6b5d1460b0f848fed019ed42a6,f1277f638f3a54a821db6e03cb980adad2f2fa35,FIRST_TIME_CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/203,, 525371029,MDExOlB1bGxSZXF1ZXN0NTI1MzcxMDI5,8,closed,0,"fix import error if note has no ""updated"" element",4028322,"I got the following error when executing evernote-to-sqlite enex evernote.db evernote.enex ``` ... File ""evernote_to_sqlite/cli.py"", line 31, in enex save_note(db, note) File ""evernote_to_sqlite/utils.py"", line 28, in save_note updated = note.find(""updated"").text AttributeError: 'NoneType' object has no attribute 'text' ``` Seems that in some cases the updated element is not added to the note, this is a part of the problematic note: ``` 20201019T074518Z web.clip7 webclipper.evernote ```",2020-11-22T22:51:05Z,2021-02-11T22:34:06Z,2021-02-11T22:34:06Z,2021-02-11T22:34:06Z,1c8457ddaa487aa2e677963d37217fcb6d544e59,,,0,03b0c240d5f12c2d651c4cb25f92b0fecc7f7419,1c355e5678877e14eefa2a5fab5a267342a03335,CONTRIBUTOR,303218369,https://github.com/dogsheep/evernote-to-sqlite/pull/8,, 526847823,MDExOlB1bGxSZXF1ZXN0NTI2ODQ3ODIz,7,closed,0,Fixed conflicting CLI flags,8944,"The `-a` used for the auth credentials and the shortened form of the `--all` flags were in conflict on the `fetch` command. To be consistent with other `-to-sqlite` libraries in the Dogsheep ecosystem, I removed the shortened form of the `--all` flag.",2020-11-24T23:25:12Z,2022-08-21T21:11:56Z,2022-08-21T21:11:56Z,2022-08-21T21:11:56Z,4d88c84a66a501e4cb0dd2de9949072b8d42b859,,,0,02576f9b1c234128c6a3d52123761af8486beb57,b956a01464007fe227895fe6eb6c942ed71298c8,CONTRIBUTOR,213286752,https://github.com/dogsheep/pocket-to-sqlite/pull/7,, 528997614,MDExOlB1bGxSZXF1ZXN0NTI4OTk3NjE0,1112,closed,0,Fix --metadata doc usage,50527,"I stumbled on this while trying to figure out how to configure datasette-ripgrep via https://github.com/simonw/datasette-ripgrep/issues/15 You may not want to update the changelog (those are annoying) so I added two commits in case that's easier. ",2020-11-28T19:19:51Z,2020-11-28T23:28:21Z,2020-11-28T19:53:48Z,2020-11-28T19:53:48Z,bbde835a1fec01458e8d00929e7bab6d6a5ba948,,6055094,0,1a30fc259205df736daf068c57a0a6ae2c21ffa9,37d18a5bce08c9ee53c080f613bae84fc2ccc853,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1112,, 529090560,MDExOlB1bGxSZXF1ZXN0NTI5MDkwNTYw,204,closed,0,use jsonify_if_need for sql updates,78035,,2020-11-29T10:49:00Z,2020-12-08T17:49:42Z,2020-12-08T17:49:42Z,2020-12-08T17:49:42Z,c5f4f0f70ce394dfec6054c3c5aaedf330887093,,,0,8ea9ad1913aa63395391818ebb4e43bfce936dda,60d3c4821be4cf25c41097c1e8b79b2e60c5ead5,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/204,, 529783275,MDExOlB1bGxSZXF1ZXN0NTI5NzgzMjc1,1117,closed,0,Support for generated columns,9599,"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.",2020-11-30T20:10:46Z,2020-11-30T22:23:19Z,2020-11-30T21:29:58Z,2020-11-30T21:29:58Z,461670a0b87efa953141b449a9a261919864ceb3,,,0,ccdf2c650278b8b9465d3a2d7c916f3bb06c4f01,dea3c508b39528e566d711c38a467b3d372d220b,OWNER,107914493,https://github.com/simonw/datasette/pull/1117,, 529887861,MDExOlB1bGxSZXF1ZXN0NTI5ODg3ODYx,1120,closed,0,generated_columns table in fixtures.py,9599,Refs #1119,2020-12-01T00:17:19Z,2020-12-01T00:28:03Z,2020-12-01T00:28:02Z,2020-12-01T00:28:02Z,17cbbb1f7f230b39650afac62dd16476626001b5,,,0,ddad8db2cc952eaf4f66f42324ccece115627b02,461670a0b87efa953141b449a9a261919864ceb3,OWNER,107914493,https://github.com/simonw/datasette/pull/1120,, 530125695,MDExOlB1bGxSZXF1ZXN0NTMwMTI1Njk1,1122,closed,0,Fix misaligned table actions cog,3243482,Fixes https://github.com/simonw/datasette/issues/1121,2020-12-01T08:41:46Z,2020-12-03T10:56:40Z,2020-12-03T00:33:37Z,2020-12-03T00:33:36Z,daae35be46ec5cb8a207aa20986a4fa62e94777e,,,0,94ea22f7b6b6c55b490c97b385f6eb6c1ea2121c,a970276b9999687b96c5e11ea1c817d814f5d267,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1122,, 532342025,MDExOlB1bGxSZXF1ZXN0NTMyMzQyMDI1,1128,closed,0,Fix startup error on windows,3243482,"Fixes https://github.com/simonw/datasette/issues/1094 This import isn't used at all, and causes error on startup on Windows.",2020-12-04T07:12:26Z,2020-12-06T08:41:45Z,2020-12-05T19:35:04Z,2020-12-05T19:35:04Z,705d1a1555c4791e9be3b884285b047223ab184f,,,0,7004c3b1462675ba3845b1efc82c816f1d2199e0,49d8fc056844d5a537d6cfd96dab0dd5686fe718,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1128,, 532348919,MDExOlB1bGxSZXF1ZXN0NTMyMzQ4OTE5,1130,open,0,Fix footer not sticking to bottom in short pages,3243482,Fixes https://github.com/simonw/datasette/issues/1129,2020-12-04T07:29:01Z,2021-06-15T13:27:48Z,,,af3aa34786f134af8073342a3c4bb74b968750fd,,,0,8d4c69c6fb0ef741a19070f5172017ea3522e83c,49d8fc056844d5a537d6cfd96dab0dd5686fe718,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1130,, 537791675,MDExOlB1bGxSZXF1ZXN0NTM3NzkxNjc1,208,closed,0,sqlite-utils analyze-tables command and table.analyze_column() method,9599,"Refs #207 - [x] Improve design of CLI output - [x] Truncate long values in least/most common - [x] Add a `-c` column selection option - [x] Tests - [x] Documentation",2020-12-12T05:27:49Z,2020-12-13T07:20:16Z,2020-12-13T07:20:12Z,2020-12-13T07:20:12Z,69a121e08847acbf95abf0c2df1759fc73dc81b8,,,0,95a966bb6216215d40d0016d673a28b04428db43,c5f4f0f70ce394dfec6054c3c5aaedf330887093,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/208,, 539489525,MDExOlB1bGxSZXF1ZXN0NTM5NDg5NTI1,1145,closed,0,"Update pytest requirement from <6.2.0,>=5.2.2 to >=5.2.2,<6.3.0",27856297,"Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
Release notes

Sourced from pytest's releases.

6.2.0

pytest 6.2.0 (2020-12-12)

Breaking Changes

Deprecations

Features

Changelog

Sourced from pytest's changelog.

Commits

Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@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) - `@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) - `@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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)
",2020-12-14T14:22:16Z,2021-01-24T21:20:29Z,2020-12-16T21:44:39Z,2020-12-16T21:44:39Z,6119bd797366a899119f1bba51c1c8cba2efc8fc,,6346396,0,a8588f95568138c268e6802de0d1a4daffb7bda8,0c616f732cee79db80cad830917666f41b344262,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1145,, 542406910,MDExOlB1bGxSZXF1ZXN0NTQyNDA2OTEw,10,closed,0,BugFix for encoding and not update info.,1277270,"Bugfix 1: Traceback (most recent call last): File ""d:\anaconda3\lib\runpy.py"", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File ""d:\anaconda3\lib\runpy.py"", line 87, in _run_code exec(code, run_globals) File ""D:\Anaconda3\Scripts\evernote-to-sqlite.exe\__main__.py"", line 7, in File ""d:\anaconda3\lib\site-packages\click\core.py"", line 829, in __call__ File ""d:\anaconda3\lib\site-packages\click\core.py"", line 782, in main rv = self.invoke(ctx) File ""d:\anaconda3\lib\site-packages\click\core.py"", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) return ctx.invoke(self.callback, **ctx.params) File ""d:\anaconda3\lib\site-packages\click\core.py"", line 610, in invoke return callback(*args, **kwargs) File ""d:\anaconda3\lib\site-packages\evernote_to_sqlite\cli.py"", line 30, in enex for tag, note in find_all_tags(fp, [""note""], progress_callback=bar.update): File ""d:\anaconda3\lib\site-packages\evernote_to_sqlite\utils.py"", line 11, in find_all_tags chunk = fp.read(1024 * 1024) UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 383: illegal multibyte sequence Bugfix 2: Traceback (most recent call last): File ""D:\Anaconda3\Scripts\evernote-to-sqlite-script.py"", line 33, in sys.exit(load_entry_point('evernote-to-sqlite==0.3', 'console_scripts', 'evernote-to-sqlite')()) File ""D:\Anaconda3\lib\site-packages\click\core.py"", line 829, in __call__ return self.main(*args, **kwargs) File ""D:\Anaconda3\lib\site-packages\click\core.py"", line 782, in main rv = self.invoke(ctx) File ""D:\Anaconda3\lib\site-packages\click\core.py"", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File ""D:\Anaconda3\lib\site-packages\click\core.py"", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File ""D:\Anaconda3\lib\site-packages\click\core.py"", line 610, in invoke return callback(*args, **kwargs) File ""D:\Anaconda3\lib\site-packages\evernote_to_sqlite-0.3-py3.8.egg\evernote_to_sqlite\cli.py"", line 31, in enex File ""D:\Anaconda3\lib\site-packages\evernote_to_sqlite-0.3-py3.8.egg\evernote_to_sqlite\utils.py"", line 28, in save_note AttributeError: 'NoneType' object has no attribute 'text'",2020-12-18T08:58:54Z,2021-02-11T22:37:56Z,2021-02-11T22:37:56Z,,4425daeccd43ce3c7bb45deaae577984f978e40f,,,0,7b8b96b69f43cb2247875c3ca6d39878edf77a78,92254b71075c8806bca258c939e24af8397cdf98,NONE,303218369,https://github.com/dogsheep/evernote-to-sqlite/pull/10,, 543015825,MDExOlB1bGxSZXF1ZXN0NTQzMDE1ODI1,31,open,0,Update for Big Sur,41546558,Refactored out the SQL for extracting aesthetic scores to use osxphotos -- adds compatbility for Big Sur via osxphotos which has been updated for new table names in Big Sur. Have not yet refactored the SQL for extracting labels which is still compatible with Big Sur.,2020-12-20T04:36:45Z,2023-08-08T15:52:52Z,,,0e571b07430024d4ce00d5e8ba28591cefd27d6f,,,0,39c12f8cda206ad621ec9940cce538570513e764,edc80a0d361006f478f2904a90bfe6c730ed6194,CONTRIBUTOR,256834907,https://github.com/dogsheep/dogsheep-photos/pull/31,, 543246535,MDExOlB1bGxSZXF1ZXN0NTQzMjQ2NTM1,59,closed,0,Remove unneeded exists=True for -a/--auth flag.,631242,The file does not need to exist when using an environment variable.,2020-12-21T06:03:55Z,2021-05-22T14:06:19Z,2021-05-19T16:08:12Z,2021-05-19T16:08:12Z,70dffca351375e6f542969c72ebc43c6d393d99c,,,0,79745bed50b7344c5cbb17a08215dc20d58b9416,d19d7db034bf7c3adcae37b9ab6f365d569605b3,CONTRIBUTOR,207052882,https://github.com/dogsheep/github-to-sqlite/pull/59,, 544923437,MDExOlB1bGxSZXF1ZXN0NTQ0OTIzNDM3,1158,closed,0,Modernize code to Python 3.6+,6774676,"- compact dict and set building - remove redundant parentheses - simplify chained conditions - change method name to lowercase - use triple double quotes for docstrings please feel free to accept/reject any of these independent commits",2020-12-23T16:21:38Z,2021-01-24T21:20:50Z,2020-12-23T17:04:32Z,2020-12-23T17:04:32Z,a882d679626438ba0d809944f06f239bcba8ee96,,6346396,0,37ce72f086d7807a32ea9012d6e6b5d235349152,90eba4c3ca569c57e96bce314e7ac8caf67d884e,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1158,, 545264436,MDExOlB1bGxSZXF1ZXN0NTQ1MjY0NDM2,1159,open,0,Improve the display of facets information,552629,"This PR changes the display of facets to hopefully make them more readable. Before | After ---|--- ![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) ",2020-12-24T11:01:47Z,2023-07-31T18:57:59Z,,,0276c5609da34bfb660f65212e1a367e637979d7,,3268330,0,c820abd0bcb34d1ea5a03be64a2158ae7c42920c,a882d679626438ba0d809944f06f239bcba8ee96,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1159,, 548271472,MDExOlB1bGxSZXF1ZXN0NTQ4MjcxNDcy,1170,closed,0,Install Prettier via package.json,3637,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.,2021-01-04T14:18:03Z,2021-01-24T21:21:01Z,2021-01-04T19:52:34Z,2021-01-04T19:52:33Z,3054e0f7307da4c31850b74bd73238b33d6c750a,,6346396,0,a5761ccb8676ef1b98d95d8174211c98f140e3de,1e8fa3ac7cb2d6e516c47c306c86ed2334fc3dc0,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1170,, 549204063,MDExOlB1bGxSZXF1ZXN0NTQ5MjA0MDYz,55,closed,0,Fix archive imports,21148,This fixes the issues discussed in #54,2021-01-05T15:54:48Z,2021-08-20T00:02:49Z,2021-08-20T00:02:49Z,2021-08-20T00:02:48Z,bf622dcb82203c1cd87e914901b53afe6f90e668,,,0,ffb127844f133fcb6a1af5cd3557995d303fb53f,21fc1cad6dd6348c67acff90a785b458d3a81275,CONTRIBUTOR,206156866,https://github.com/dogsheep/twitter-to-sqlite/pull/55,, 560204306,MDExOlB1bGxSZXF1ZXN0NTYwMjA0MzA2,224,closed,0,Add fts offset docs.,37962604,"The limit can be passed as a string to the query builder to have an offset. I have tested it using the shorthand `limit=f""15, 30""`, the standard syntax should work too.",2021-01-22T20:50:58Z,2021-02-14T19:31:06Z,2021-02-14T19:31:06Z,,4d6ff040770119fb2c1bcbc97678d9deca752f2f,,,0,341f50d2d95ba1d69ad64ba8c0ec0ffa9a68d063,36dc7e3909a44878681c266b90f9be76ac749f2d,NONE,140912432,https://github.com/simonw/sqlite-utils/pull/224,, 560725714,MDExOlB1bGxSZXF1ZXN0NTYwNzI1NzE0,1203,closed,0,Easier way to run Prettier locally,9599,Refs #1167,2021-01-25T01:39:06Z,2021-01-25T01:41:46Z,2021-01-25T01:41:46Z,2021-01-25T01:41:46Z,ffff3a4c5398a9f40b61d59736f386444da19289,,,0,98acc8865aa7826a40a7a076ab548ba8597af734,b6a7b58fa01af0cd5a5e94bd17d686d283a46819,OWNER,107914493,https://github.com/simonw/datasette/pull/1203,, 560760145,MDExOlB1bGxSZXF1ZXN0NTYwNzYwMTQ1,1204,open,0,WIP: Plugin includes,9599,"Refs #1191 Next steps: - [ ] Get comfortable that this pattern is the right way to go - [ ] Implement it for all of the other pages, not just the table page - [ ] Add a new set of plugin tests that exercise ALL of these new hook locations - [ ] Document, then ship",2021-01-25T03:59:06Z,2021-12-17T07:10:49Z,,,98f06a766317a40035962416cf3211d7a374866a,,,1,05258469ae39bcaad17beb57c5b7eeab0d58a589,07e163561592c743e4117f72102fcd350a600909,OWNER,107914493,https://github.com/simonw/datasette/pull/1204,, 560831638,MDExOlB1bGxSZXF1ZXN0NTYwODMxNjM4,1206,closed,0,Release 0.54,9599,Refs #1201,2021-01-25T06:45:47Z,2021-01-25T17:33:30Z,2021-01-25T17:33:29Z,2021-01-25T17:33:29Z,0b9ac1b2e9c855f1b823a06a898891da87c720ef,,,0,571476d2cf8f7d7eac6098de8557264e69cac43f,a5ede3cdd455e2bb1a1fb2f4e1b5a9855caf5179,OWNER,107914493,https://github.com/simonw/datasette/pull/1206,, 561512503,MDExOlB1bGxSZXF1ZXN0NTYxNTEyNTAz,15,open,0,added try / except to write_records ,9857779,"to keep the data write from failing if it came across an error during processing. In particular when trying to convert my HealthKit zip file (and that of my wife's) it would consistently error out with the following: ``` db.py 1709 insert_chunk result = self.db.execute(query, params) db.py 226 execute return self.conn.execute(sql, parameters) sqlite3.OperationalError: too many SQL variables --------------------------------------------------------------------------------------------------------------------------------------------------------------------- db.py 1709 insert_chunk result = self.db.execute(query, params) db.py 226 execute return self.conn.execute(sql, parameters) sqlite3.OperationalError: too many SQL variables --------------------------------------------------------------------------------------------------------------------------------------------------------------------- db.py 1709 insert_chunk result = self.db.execute(query, params) db.py 226 execute return self.conn.execute(sql, parameters) sqlite3.OperationalError: table rBodyMass has no column named metadata_HKWasUserEntered --------------------------------------------------------------------------------------------------------------------------------------------------------------------- healthkit-to-sqlite 8 sys.exit(cli()) core.py 829 __call__ return self.main(*args, **kwargs) core.py 782 main rv = self.invoke(ctx) core.py 1066 invoke return ctx.invoke(self.callback, **ctx.params) core.py 610 invoke return callback(*args, **kwargs) cli.py 57 cli convert_xml_to_sqlite(fp, db, progress_callback=bar.update, zipfile=zf) utils.py 42 convert_xml_to_sqlite write_records(records, db) utils.py 143 write_records db[table].insert_all( db.py 1899 insert_all self.insert_chunk( db.py 1720 insert_chunk self.insert_chunk( db.py 1720 insert_chunk self.insert_chunk( db.py 1714 insert_chunk result = self.db.execute(query, params) db.py 226 execute return self.conn.execute(sql, parameters) sqlite3.OperationalError: table rBodyMass has no column named metadata_HKWasUserEntered ``` Adding the try / except in the `write_records` seems to fix that issue. ",2021-01-26T03:56:21Z,2021-01-26T03:56:21Z,,,8527278a87e448f57c7c6bd76a2d85f12d0233dd,,,0,7f1b168c752b5af7c1f9052dfa61e26afc83d574,71e36e1cf034b96de2a8e6652265d782d3fdf63b,FIRST_TIME_CONTRIBUTOR,197882382,https://github.com/dogsheep/healthkit-to-sqlite/pull/15,, 564172140,MDExOlB1bGxSZXF1ZXN0NTY0MTcyMTQw,61,closed,0,fixing typo in get cli help text,22578954,,2021-01-29T18:57:04Z,2021-05-19T16:07:09Z,2021-05-19T16:07:09Z,2021-05-19T16:07:09Z,ba8cf3e9bb5f4f8740bd4b9eed28f1464d7f6b9a,,,0,7ac6efc3a873facafa72192b58e28c6e8a79f744,62dfd3bc4014b108200001ef4bc746feb6f33b45,CONTRIBUTOR,207052882,https://github.com/dogsheep/github-to-sqlite/pull/61,, 564215011,MDExOlB1bGxSZXF1ZXN0NTY0MjE1MDEx,225,closed,0,fix for problem in Table.insert_all on search for columns per chunk of rows,261237,"Hi, I ran into a problem when trying to create a database from my Apple Healthkit data using [healthkit-to-sqlite](https://github.com/dogsheep/healthkit-to-sqlite). The program crashed because of an invalid insert statement that was generated for table `rDistanceCycling`. The actual problem turned out to be in [sqlite-utils](https://github.com/simonw/sqlite-utils). `Table.insert_all` processes the data to be inserted in chunks of rows and checks for every chunk which columns are used, and it will collect all column names in the variable `all_columns`. The collection of columns is done using a nested list comprehension that is not completely correct. I'm using a Windows machine and had to make a few adjustments to the tests in order to be able to run them because they had a posix dependency. Thanks, kind regards, Frans ``` # this is a (condensed) chunk of data from my Apple healthkit export that caused the problem. # the 3 last items in the chunk have additional keys: metadata_HKMetadataKeySyncVersion and metadata_HKMetadataKeySyncIdentifier chunk = [{'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '7.0.1', 'device': '<, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:7.0.1>', 'unit': 'km', 'creationDate': '2020-10-10 12:29:09 +0100', 'startDate': '2020-10-10 12:29:06 +0100', 'endDate': '2020-10-10 12:29:07 +0100', 'value': '0.00518016'}, {'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '7.0.1', 'device': '<, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:7.0.1>', 'unit': 'km', 'creationDate': '2020-10-10 12:29:10 +0100', 'startDate': '2020-10-10 12:29:07 +0100', 'endDate': '2020-10-10 12:29:08 +0100', 'value': '0.00544049'}, {'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '6.2.6', 'device': '<, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:6.2.6>', 'unit': 'km', 'creationDate': '2020-10-14 05:54:12 +0100', 'startDate': '2020-07-15 16:40:50 +0100', 'endDate': '2020-07-15 16:42:49 +0100', 'value': '0.952092', 'metadata_HKMetadataKeySyncVersion': '1', 'metadata_HKMetadataKeySyncIdentifier': '3:674DBCDB-3FE8-40D1-9FC1-E54A2B413805:616520450.99823:616520569.99360:119'}, {'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '6.2.6', 'device': '<, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:6.2.6>', 'unit': 'km', 'creationDate': '2020-10-14 05:54:12 +0100', 'startDate': '2020-07-15 16:42:49 +0100', 'endDate': '2020-07-15 16:44:51 +0100', 'value': '0.848983', 'metadata_HKMetadataKeySyncVersion': '1', 'metadata_HKMetadataKeySyncIdentifier': '3:674DBCDB-3FE8-40D1-9FC1-E54A2B413805:616520569.99360:616520691.98826:119'}, {'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '6.2.6', 'device': '<, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:6.2.6>', 'unit': 'km', 'creationDate': '2020-10-14 05:54:12 +0100', 'startDate': '2020-07-15 16:44:51 +0100', 'endDate': '2020-07-15 16:46:50 +0100', 'value': '0.834403', 'metadata_HKMetadataKeySyncVersion': '1', 'metadata_HKMetadataKeySyncIdentifier': '3:674DBCDB-3FE8-40D1-9FC1-E54A2B413805:616520691.98826:616520810.98305:119'}] def all_columns_old(): all_columns = [col for col in chunk[0]] all_columns += [column for record in chunk for column in record if column not in all_columns] return all_columns def all_columns_new(): all_columns = [col for col in chunk[0]] for record in chunk: all_columns += [column for column in record if column not in all_columns] return all_columns if __name__ == '__main__': from pprint import pprint print('problem: ') pprint(all_columns_old()) print('\nfix: ') pprint(all_columns_new()) ``` ",2021-01-29T20:16:07Z,2021-02-14T21:04:13Z,2021-02-14T21:04:13Z,,1cba965a1ddc2bd77db3bc3912aa7e8467e2fa2f,,,0,929ea7551135df0cc2ac9d67f4fbbecf701a11f6,36dc7e3909a44878681c266b90f9be76ac749f2d,NONE,140912432,https://github.com/simonw/sqlite-utils/pull/225,, 564608264,MDExOlB1bGxSZXF1ZXN0NTY0NjA4MjY0,1211,closed,0,Use context manager instead of plain open,4488943,"Context manager with open closes the files after usage. Fixes: https://github.com/simonw/datasette/issues/1208 When the object is already a pathlib.Path i used read_text write_text functions In some cases pathlib.Path.open were used in context manager, it is basically the same as builtin open. Tests are passing: 850 passed, 5 xfailed, 10 xpassed",2021-01-31T07:58:10Z,2021-03-11T16:15:50Z,2021-03-11T16:15:50Z,2021-03-11T16:15:49Z,8e18c7943181f228ce5ebcea48deb59ce50bee1f,,,0,e33ccaaafbe9a16b8339a3bf4c0ae7b83354570c,dde3c500c73ace33529672f7d862b76753d309cc,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1211,, 572209243,MDExOlB1bGxSZXF1ZXN0NTcyMjA5MjQz,1222,closed,0,"--ssl-keyfile and --ssl-certfile, refs #1221",9599,,2021-02-12T00:45:58Z,2021-02-12T00:52:18Z,2021-02-12T00:52:17Z,2021-02-12T00:52:17Z,eda652cf6ee28a0babfb30ce3834512e9e33fb8e,,,0,8ec72ea3e3e0a9876d5e61e4a2260224f16db2e3,aa1fe0692c2abb901216738bfb35f9fcc5090e7d,OWNER,107914493,https://github.com/simonw/datasette/pull/1222,, 572254103,MDExOlB1bGxSZXF1ZXN0NTcyMjU0MTAz,1223,closed,0,Add compile option to Dockerfile to fix failing test (fixes #696),7476523,"This test was failing when run inside the Docker container: `test_searchable[/fixtures/searchable.json?_search=te*+AND+do*&_searchmode=raw-expected_rows3]`, with this error: ``` def test_searchable(app_client, path, expected_rows): response = app_client.get(path) > assert expected_rows == response.json[""rows""] E AssertionError: assert [[1, 'barry c...sel', 'puma']] == [] E Left contains 2 more items, first extra item: [1, 'barry cat', 'terry dog', 'panther'] E Full diff: E + [] E - [[1, 'barry cat', 'terry dog', 'panther'], E - [2, 'terry dog', 'sara weasel', 'puma']] ``` The issue was that the version of sqlite3 built inside the Docker container was built with FTS3 and FTS4 enabled, but without the `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). Without 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. --- I 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. I 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?",2021-02-12T03:38:05Z,2021-03-07T12:01:12Z,2021-03-07T07:41:17Z,2021-03-07T07:41:17Z,d0fd833b8cdd97e1b91d0f97a69b494895d82bee,,,0,d1cd1f259c699fab3af01c4aa90035ed0242471a,9603d893b9b72653895318c9104d754229fdb146,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1223,, 573147168,MDExOlB1bGxSZXF1ZXN0NTczMTQ3MTY4,233,closed,0,"Run tests against Ubuntu, macOS and Windows",9599,Refs #232,2021-02-14T20:11:02Z,2021-02-14T20:39:54Z,2021-02-14T20:39:54Z,2021-02-14T20:39:54Z,f51a1f6c3cb2929bcf79cb4efe3b2a9886d9c25c,,,0,deb01a8913441e7fedb53c52a3a9fdff274ddbd2,320f3ac33a83b32f89559ef0c162b7eca428a278,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/233,, 575187457,MDExOlB1bGxSZXF1ZXN0NTc1MTg3NDU3,1229,closed,0,ensure immutable databses when starting in configuration directory mode with,295329,"fixes #1224 This 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 specifically on building the `datasette` instance it checks: - if `immutables` is an empty tuple - as passed by the cli code - if `immutables` is the default function value `None` - when it's not explicitly set And correctly builds the immutable database list from the `inspect-data[file]` keys. Note 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. I 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. I've updated the relevant docs as well, i.e. use the `inspect` cli cmd from the config directory path to create the relevant file ``` cd $config_dir datasette inspect *.db --inspect-file=inspect-data.json ``` https://docs.datasette.io/en/latest/performance.html#using-datasette-inspect",2021-02-17T20:18:26Z,2022-04-22T13:16:36Z,2021-03-29T00:17:32Z,2021-03-29T00:17:31Z,f92d823766872a6fd7e76c5249a6b2de1ab0f447,,,0,a095248ad18c9c5272dbd52f4c97ea8a36cf91f3,8e18c7943181f228ce5ebcea48deb59ce50bee1f,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1229,, 575940193,MDExOlB1bGxSZXF1ZXN0NTc1OTQwMTkz,1232,closed,0,--crossdb option for joining across databases,9599,"Refs #283. Still needs: - [x] Unit test for --crossdb queries - [x] Show warning on console if it truncates at ten databases (or on web interface) - [x] Show connected databases on the `/_memory` database page - [x] Documentation - [x] https://latest.datasette.io/ demo should demonstrate this feature",2021-02-18T19:48:50Z,2021-02-18T22:09:13Z,2021-02-18T22:09:12Z,2021-02-18T22:09:12Z,6f41c8a2bef309a66588b2875c3e24d26adb4850,,,0,887649942b02d70a0fe4e205e1e5eff4e745b016,4df548e7668b5b21d64a267964951e67894f4712,OWNER,107914493,https://github.com/simonw/datasette/pull/1232,, 577953727,MDExOlB1bGxSZXF1ZXN0NTc3OTUzNzI3,5,open,0,WIP: Add Gmail takeout mbox import,306240,"WIP This PR adds the ability to import emails from a Gmail mbox export from Google Takeout. This is my first PR to a datasette/dogsheep repo. I've tested this on my personal Google Takeout mbox with ~520,000 emails going back to 2004. This took around ~20 minutes to process. To provide some feedback on the progress of the import I added the ""rich"" python module. I'm happy to remove that if adding a dependency is discouraged. However, I think it makes a nice addition to give feedback on the progress of a long import. Do we want to log emails that have errors when trying to import them? Dealing with encodings with emails is a bit tricky. I'm very open to feedback on how to deal with those better. As well as any other feedback for improvements.",2021-02-22T21:30:40Z,2021-07-28T07:18:56Z,,,65182811d59451299e75f09b4366bb221bc32b20,,,0,a3de045eba0fae4b309da21aa3119102b0efc576,e54e544427f1cc3ea8189f0e95f54046301a8645,FIRST_TIME_CONTRIBUTOR,206649770,https://github.com/dogsheep/google-takeout-to-sqlite/pull/5,, 579697833,MDExOlB1bGxSZXF1ZXN0NTc5Njk3ODMz,1243,closed,0,fix small typo,306240,,2021-02-25T00:22:34Z,2021-03-04T05:46:10Z,2021-03-04T05:46:10Z,2021-03-04T05:46:10Z,4f9a2f1f47dcf7e8561d68a8a07f5009a13cfdb3,,,0,32652d9847f9b32c5d923823001c75d76e2791d2,726f781c50e88f557437f6490b8479c3d6fabfc2,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1243,, 580235427,MDExOlB1bGxSZXF1ZXN0NTgwMjM1NDI3,241,open,0,Extract expand - work in progress,9599,Refs #239. Still needs documentation and CLI implementation.,2021-02-25T16:36:38Z,2021-02-25T16:36:38Z,,,0bb6c7a38994627a64e7b3375931528e96b8c222,,,1,8d641ab08ac449081e96f3e25bd6c0226870948a,38e688fb8bcb58ae888b676fe3f7dd0529b4eecc,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/241,, 583407989,MDExOlB1bGxSZXF1ZXN0NTgzNDA3OTg5,244,closed,0,Typo in upsert example,387669,Remove extra `[`,2021-03-02T23:14:14Z,2021-05-19T02:58:21Z,2021-05-19T02:58:21Z,2021-05-19T02:58:21Z,328211eaca1247cd6b33a2c0a54642f87866d85b,,,0,1899200fa5a43f638573ea2c483df62819ba53b1,09c3386f55f766b135b6a1c00295646c4ae29bec,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/244,, 587332473,MDExOlB1bGxSZXF1ZXN0NTg3MzMyNDcz,1252,closed,0,Add back styling to lists within table cells (fixes #1141),7476523,"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. Following this change, the same content as in the original issue looks like this: ![2021-03-09_02:57:32](https://user-images.githubusercontent.com/7476523/110411982-63e5ae80-8083-11eb-9b5c-e5dc825073e2.png) ",2021-03-09T03:00:57Z,2021-03-29T00:14:04Z,2021-03-29T00:14:04Z,2021-03-29T00:14:04Z,e72397d65b06b019521b6411243687464ac8d8ca,,,0,d22aa32cd9c0f798bcab917cc2024a371b4c0069,d0fd833b8cdd97e1b91d0f97a69b494895d82bee,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1252,, 588601627,MDExOlB1bGxSZXF1ZXN0NTg4NjAxNjI3,1254,closed,0,Update Docker Spatialite version to 5.0.1 + add support for Spatialite topology functions,3200608,"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.) `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""",2021-03-09T20:49:08Z,2021-03-10T18:27:45Z,2021-03-09T22:04:23Z,,bc09c84d6af4721b32f01f4d9186a6fbf9863081,,,0,b103204155c2396d353fa195a320cee6aca258cf,d0fd833b8cdd97e1b91d0f97a69b494895d82bee,NONE,107914493,https://github.com/simonw/datasette/pull/1254,, 589263297,MDExOlB1bGxSZXF1ZXN0NTg5MjYzMjk3,1256,closed,0,Minor type in IP adress,6371750,127.0.01 replaced by 127.0.0.1,2021-03-10T08:28:22Z,2021-03-10T18:26:46Z,2021-03-10T18:26:40Z,2021-03-10T18:26:39Z,a1bcd2fbe5e47bb431045f65eeceb5eb3a6718d5,,,0,4eef524e44ff79c617728aad98b14c1c1e586ce3,d0fd833b8cdd97e1b91d0f97a69b494895d82bee,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1256,, 592289324,MDExOlB1bGxSZXF1ZXN0NTkyMjg5MzI0,245,closed,0,Correct some typos,1076745,Noticed a typo in the docs and followed that up with a spellcheck. Had to bite my tongue at some of the British spellings.,2021-03-13T04:26:56Z,2021-05-19T02:58:04Z,2021-05-19T02:58:04Z,2021-05-19T02:58:04Z,3e62ab62a88992d4bbb0fe83debec3bacd93ebf3,,,0,79de6b639f9d14818a5006af4f63e4e20c961a10,22f1d9e1999f70af4c5b0f880a820cd9eead3942,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/245,, 592364255,MDExOlB1bGxSZXF1ZXN0NTkyMzY0MjU1,16,open,0,"Add a fallback ID, print if no ID found",1234956,"Fixes https://github.com/dogsheep/healthkit-to-sqlite/issues/14 ",2021-03-13T13:38:29Z,2021-03-13T14:44:04Z,,,16ab307b2138891f226a66e4954c5470de753a0f,,,0,27b3d54ccfe7d861770a9d0b173f6503580fea4a,71e36e1cf034b96de2a8e6652265d782d3fdf63b,FIRST_TIME_CONTRIBUTOR,197882382,https://github.com/dogsheep/healthkit-to-sqlite/pull/16,, 592548103,MDExOlB1bGxSZXF1ZXN0NTkyNTQ4MTAz,1260,closed,0,Fix: code quality issues,25361949,"### Description Hi :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. ### Summary of changes - Replaced ternary syntax with if expression - Removed redundant `None` default - Used `is` to compare type of objects - Iterated dictionary directly - Removed unnecessary lambda expression - Refactored unnecessary `else` / `elif` when `if` block has a `return` statement - Refactored unnecessary `else` / `elif` when `if` block has a `raise` statement - Added .deepsource.toml to continuously analyze and detect code quality issues",2021-03-14T13:56:10Z,2021-03-29T00:22:41Z,2021-03-29T00:22:41Z,,bc868ae8c8152a25bcab7adb490c5b89411bdf3a,,,0,90f5fb6d2fb36ddffc49acee924d042f2d5d1d58,8e18c7943181f228ce5ebcea48deb59ce50bee1f,NONE,107914493,https://github.com/simonw/datasette/pull/1260,, 593805804,MDExOlB1bGxSZXF1ZXN0NTkzODA1ODA0,247,closed,0,FTS quote functionality from datasette,16001974,"Addresses #246 - this is a bit of a kludge because it doesn't actually *validate* the FTS string, just makes sure that it will not crash when executed, but I figured that building a query parser is a bit out of the scope of sqlite-utils and if you actually want to use the query language, you probably need to parse that yourself. ",2021-03-16T11:17:34Z,2021-08-18T18:43:12Z,2021-08-18T18:43:12Z,2021-08-18T18:43:11Z,53fec0d8639d2a66e322d05e1fcc8f34caa57815,,,0,af989af658e23be0077f226292594226103b063d,1fe73c898b44695052f1a9ca832818d50cecf662,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/247,, 596627780,MDExOlB1bGxSZXF1ZXN0NTk2NjI3Nzgw,18,open,0,Add datetime parsing,1234956,"Parses the datetime columns so they are subsequently properly recognized as datetime. Fixes https://github.com/dogsheep/healthkit-to-sqlite/issues/17 ",2021-03-19T14:34:22Z,2021-03-19T14:34:22Z,,,c87f4e8aa88ec277c6b5a000670c2cb42a10c03d,,,0,e0e7a0f99f844db33964b27c29b0b8d5f160202b,71e36e1cf034b96de2a8e6652265d782d3fdf63b,FIRST_TIME_CONTRIBUTOR,197882382,https://github.com/dogsheep/healthkit-to-sqlite/pull/18,, 598213565,MDExOlB1bGxSZXF1ZXN0NTk4MjEzNTY1,1271,open,0,Use SQLite conn.interrupt() instead of sqlite_timelimit(),9599,"Refs #1270, #1268, #1249 Before 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. [See comment below: this doesn't actually cancel the query due to a thread-local confusion]",2021-03-22T17:34:20Z,2021-03-22T21:49:27Z,,,a4fd7e5a761523881c031b4fee266a366e1c97bd,,,1,fb2ad7ada0b86a7fe4a576fe23236757c41eb05e,c4f1ec7f33fd7d5b93f0f895dafb5351cc3bfc5b,OWNER,107914493,https://github.com/simonw/datasette/pull/1271,, 602107935,MDExOlB1bGxSZXF1ZXN0NjAyMTA3OTM1,1279,closed,0,Minor Docs Update. Added `--app` to fly install command.,1019791,"Without this flag, there's an error locally. ``` > datasette publish fly bigmac.db Usage: datasette publish fly [OPTIONS] [FILES]... Try 'datasette publish fly --help' for help. Error: Missing option '-a' / '--app'. ``` I 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. ",2021-03-27T16:58:08Z,2021-03-29T00:11:55Z,2021-03-29T00:11:55Z,2021-03-29T00:11:55Z,c96a3826cf50cb347f6a415b56d8105ba6d8dcb0,,,0,14d8977e158d1d3193c6afb50aae482547ec9d8d,3fcfc8513465339ac5f055296cbb67f5262af02b,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1279,, 602261092,MDExOlB1bGxSZXF1ZXN0NjAyMjYxMDky,6,closed,0,Add testres-db tool,1151557,,2021-03-28T15:43:23Z,2022-02-16T05:12:05Z,2022-02-16T05:12:05Z,,eceb016506b5db29b9c21bc7fcf5e6e77259c7b4,,,0,91cfa6f7dcab032e2d21e80657c81e69119e2018,92c6bb77629feeed661c7b8d9183a11367de39e0,NONE,214746582,https://github.com/dogsheep/dogsheep.github.io/pull/6,, 603082280,MDExOlB1bGxSZXF1ZXN0NjAzMDgyMjgw,1282,closed,0,Fix little typo,192568,,2021-03-29T19:45:28Z,2021-03-29T19:57:34Z,2021-03-29T19:57:34Z,2021-03-29T19:57:34Z,7b1a9a1999eb9326ce8ec830d75ac200e5279c46,,,0,08f7427afcff69fa93ebaf5916588b5ad8bd4e0f,0486303b60ce2784fd2e2ecdbecf304b7d6e6659,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1282,, 608323028,MDExOlB1bGxSZXF1ZXN0NjA4MzIzMDI4,1290,closed,0,Use pytest-xdist to speed up tests,9599,"Closes #1289, refs #1212.",2021-04-03T03:34:36Z,2021-04-03T03:42:29Z,2021-04-03T03:42:28Z,2021-04-03T03:42:28Z,0a7621f96f8ad14da17e7172e8a7bce24ef78966,,,0,2fb1e4284f1f0f6aaba7e889a6713c0f96e802e1,59ef4a20cba1533bc347378415f4ffcd025f32c8,OWNER,107914493,https://github.com/simonw/datasette/pull/1290,, 608334096,MDExOlB1bGxSZXF1ZXN0NjA4MzM0MDk2,1291,closed,0,Update docs: explain allow_download setting,5413548,"This fixes one possible source of confusion seen in #502 and clarifies when database downloads will be shown and allowed.",2021-04-03T05:28:33Z,2021-06-05T19:48:51Z,2021-06-05T19:48:51Z,2021-06-05T19:48:51Z,368aa5f1b16ca35f82d90ff747023b9a2bfa27c1,,,0,9bf089faded74c96aced22332008126324a37f7a,0a7621f96f8ad14da17e7172e8a7bce24ef78966,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1291,,