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
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,,
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,,
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,,
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
-
#5585: As per our policy, the following features which have been deprecated in the 5.X series are now
removed:
- The
funcargnames
read-only property of FixtureRequest
, Metafunc
, and Function
classes. Use fixturenames
attribute.
@pytest.fixture
no longer supports positional arguments, pass all arguments by keyword instead.
- Direct construction of
Node
subclasses now raise an error, use from_parent
instead.
- The default value for
junit_family
has changed to xunit2
. If you require the old format, add junit_family=xunit1
to your configuration file.
- The
TerminalReporter
no longer has a writer
attribute. Plugin authors may use the public functions of the TerminalReporter
instead of accessing the TerminalWriter
object directly.
- The
--result-log
option has been removed. Users are recommended to use the pytest-reportlog plugin instead.
For more information consult
Deprecations and Removals in the docs.
Deprecations
-
#6981: The pytest.collect
module is deprecated: all its names can be imported from pytest
directly.
-
#7097: The pytest._fillfuncargs
function is deprecated. This function was kept
for backward compatibility with an older plugin.
It's functionality is not meant to be used directly, but if you must replace
it, use function._request._fillfixtures() instead, though note this is not
a public API and may break in the future.
-
#7210: The special -k '-expr'
syntax to -k
is deprecated. Use -k 'not expr'
instead.
The special -k 'expr:'
syntax to -k
is deprecated. Please open an issue
if you use this and want a replacement.
-
#7255: The pytest_warning_captured <_pytest.hookspec.pytest_warning_captured> hook is deprecated in favor
of pytest_warning_recorded <_pytest.hookspec.pytest_warning_recorded>, and will be removed in a future version.
-
#7648: The gethookproxy()
and isinitpath()
methods of FSCollector
and Package
are deprecated;
use self.session.gethookproxy()
and self.session.isinitpath()
instead.
This should work on all pytest versions.
Features
- #7667: New
--durations-min
command-line flag controls the minimal duration for inclusion in the slowest list of tests shown by --durations
. Previously this was hard-coded to 0.005s
.
Improvements
Changelog
Sourced from pytest's changelog.
Commits
868bc00
Prepare release version 6.1.0
0b327cc
Merge pull request #7796 from bluetech/changelog-cleanups
d3c746e
changelog: some consistency cleanups
d3f47bf
Improved 'Declaring new hooks' section in docs. (#7782)
3db2489
Merge pull request #7784 from nicoddemus/use-new-pip-solver-7783
8215625
Use new pip resolver in plugins tox env
5cfd7c0
Merge pull request #7780 from bluetech/final
a99ca87
Mark some public and to-be-public classes as @final
050c2df
Use multiple issue template types and mention Discussions (#7739)
cdfdb3a
Add docs about reusing fixtures from other projects (#7772)
- Additional commits viewable in compare view
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,,
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
- explicitly depend on Click 7.1.2 or newer as
Black
no longer works with versions
older than 7.0
20.8b0
Black
-
re-implemented support for explicit trailing commas: now it works consistently within
any bracket pair, including nested structures (#1288 and duplicates)
-
Black
now reindents docstrings when reindenting code around it (#1053)
-
Black
now shows colored diffs (#1266)
-
Black
is now packaged using 'py3' tagged wheels (#1388)
-
Black
now supports Python 3.8 code, e.g. star expressions in return statements
(#1121)
-
Black
no longer normalizes capital R-string prefixes as those have a
community-accepted meaning (#1244)
-
Black
now uses exit code 2 when specified configuration file doesn't exit (#1361)
-
Black
now works on AWS Lambda (#1141)
-
added --force-exclude
argument (#1032)
-
removed deprecated --py36
option (#1236)
-
fixed --diff
output when EOF is encountered (#526)
-
fixed # fmt: off
handling around decorators (#560)
-
fixed unstable formatting with some # type: ignore
comments (#1113)
-
fixed invalid removal on organizing brackets followed by indexing (#1575)
-
introduced black-primer
, a CI tool that allows us to run regression tests against
existing open source users of Black (#1402)
-
introduced property-based fuzzing to our test suite based on Hypothesis and
Hypothersmith (#1566)
-
implemented experimental and disabled by default long string rewrapping (#1132),
hidden under a --experimental-string-processing
flag while it's being worked on;
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,,
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,,
152631570,MDExOlB1bGxSZXF1ZXN0MTUyNjMxNTcw,94,closed,0,Initial add simple prod ready Dockerfile refs #57,247192,"Multi-stage build based off official python:3.6-slim
Example usage:
```
docker run --rm -t -i -p 9000:8001 -v $(pwd)/db:/db datasette datasette serve /db/chinook.db
```",2017-11-14T22:09:09Z,2017-11-15T03:08:04Z,2017-11-15T03:08:04Z,2017-11-15T03:08:04Z,86755503d26b4a83c2ec59f08ec1b8de791fd954,,,0,147195c2fdfa2b984d8f9fc1c6cab6634970a056,075d422c0a1c70259188dfbd940538c67419694a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/94,,
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,,
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,,
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,,
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
-
#5584: PytestDeprecationWarning are now errors by default.
Following our plan to remove deprecated features with as little disruption as
possible, all warnings of type PytestDeprecationWarning
now generate errors
instead of warning messages.
The affected features will be effectively removed in pytest 6.1, so please consult the
Deprecations and Removals
section in the docs for directions on how to update existing code.
In the pytest 6.0.X
series, it is possible to change the errors back into warnings as a
stopgap measure by adding this to your pytest.ini
file:
[pytest]
filterwarnings =
ignore::pytest.PytestDeprecationWarning
But this will stop working when pytest 6.1
is released.
If you have concerns about the removal of a specific feature, please add a
comment to #5584.
-
#7472: The exec_()
and is_true()
methods of _pytest._code.Frame
have been removed.
Features
- #7464: Added support for NO_COLOR and FORCE_COLOR environment variables to control colored output.
Improvements
- #7467:
--log-file
CLI option and log_file
ini marker now create subdirectories if needed.
- #7489: The pytest.raises function has a clearer error message when
match
equals the obtained string but is not a regex match. In this case it is suggested to escape the regex.
Bug Fixes
- #7392: Fix the reported location of tests skipped with
@pytest.mark.skip
when --runxfail
is used.
Changelog
Sourced from pytest's changelog.
Commits
41a4539
Add link to 6.0.0rc1 changelog
45ced1d
Update doc/en/announce/release-6.0.0.rst
1e4b8d4
Prepare release version 6.0.0
3802982
Support generating major releases using issue comments (#7548)
c2c0b7a
Merge pull request #7545 from asottile/pylib_in_docs
9818899
remove usage of pylib in docs
3a060b7
Revert change to traceback repr (#7535)
7ec6401
Change pytest deprecation warnings into errors for 6.0 release (#7362)
a9799f0
Merge pull request #7531 from bluetech/changelog-mypy-version
102360b
Merge pull request #7519 from hroncok/pytest_warning_captured_deprecated
- Additional commits viewable in compare view
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,,
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,,
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,,
443823040,MDExOlB1bGxSZXF1ZXN0NDQzODIzMDQw,890,closed,0,Load only python files from plugins-dir.,49260,"The current behavior for `--plugins-dir` is to load every file in that folder as a python module. This can result in errors if there are non-python files in the plugins dir (such as .mypy_cache).
This PR restricts the module loading to only python files. ",2020-07-03T02:47:32Z,2020-07-03T03:08:33Z,2020-07-03T03:08:33Z,2020-07-03T03:08:33Z,ea99a4431ce5bc2d65a3496da5b38e1986550a96,,,0,745af3b72d95d91f3ccd703f4fab819bc9f4b6a4,57879dc8b346a435804a9e45ffaacbf2a0228bc6,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/890,,
152522762,MDExOlB1bGxSZXF1ZXN0MTUyNTIyNzYy,89,closed,0,SQL syntax highlighting with CodeMirror,15543,"Addresses #13
Future enhancements could include autocompletion of table and column names, e.g. with
```javascript
extraKeys: {""Ctrl-Space"": ""autocomplete""},
hintOptions: {tables: {
users: [""name"", ""score"", ""birthDate""],
countries: [""name"", ""population"", ""size""]
}}
```
(see https://codemirror.net/doc/manual.html#addon_sql-hint and source at http://codemirror.net/mode/sql/)",2017-11-14T14:43:33Z,2017-11-15T02:03:01Z,2017-11-15T02:03:01Z,2017-11-15T02:03:01Z,8252daa4c14d73b4b69e3f2db4576bb39d73c070,,,0,7f6ad095e9c41bf24d73b7724d898965c419965b,075d422c0a1c70259188dfbd940538c67419694a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/89,,
442505088,MDExOlB1bGxSZXF1ZXN0NDQyNTA1MDg4,883,open,0,Skip counting hidden tables,3243482,"Potential fix for https://github.com/simonw/datasette/issues/859.
Disabling table counts for hidden tables speeds up database page quite a bit. In my setup it reduced load time by 2/3 (~300 -> ~90ms)",2020-07-01T07:38:08Z,2020-07-02T00:25:44Z,,,527624338acd38b97bb33b0a0b913d80e8345fee,,,0,251884f58895faf8056b3dfdeae3bb92c5bc58ac,676bb64c877d73f8ff496cef4632f5a8a5a9283c,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/883,,
440946817,MDExOlB1bGxSZXF1ZXN0NDQwOTQ2ODE3,869,closed,0,Magic parameters for canned queries,9599,"Implementation for #842
TODO:
- [x] Add tests for built-in magic parameters
- [x] Magic parameters should not show up as blank form fields on the query page
- [x] Update documentation for new `_request_X` (now called `_header_X`) implementation where X is a key from the ASGI scope
- [x] Make sure these only work for canned queries, not for arbitrary SQL queries (security issue)
- [x] Add test for the `register_magic_parameters` plugin hook
- [x] Add documentation for the `register_magic_parameters` plugin hook
",2020-06-27T18:37:21Z,2020-06-28T02:58:18Z,2020-06-28T02:58:17Z,2020-06-28T02:58:17Z,563f5a2d3ab30ad08daee38f5ec3ed6429ac9206,,5533512,0,9e693a7aae3b4a0882881e3a1c182e1c0c753efd,4b142862f237f95a731cb8263a293eda70d13c82,OWNER,107914493,https://github.com/simonw/datasette/pull/869,,
440735814,MDExOlB1bGxSZXF1ZXN0NDQwNzM1ODE0,868,open,0,initial windows ci setup,702729,Picking up the work done on #557 with a new PR. Seeing if I can get this working.,2020-06-26T18:49:13Z,2021-07-10T23:41:43Z,,,b99adb1720a0b53ff174db54d0e4a67357b47f33,,,0,c99cabae638958ef057438a92cb9a182ba4f8188,180c7a5328457aefdf847ada366e296fef4744f1,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/868,,
439203808,MDExOlB1bGxSZXF1ZXN0NDM5MjAzODA4,866,closed,0,"Update pytest-asyncio requirement from <0.13,>=0.10 to >=0.10,<0.15",27856297,"Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
Commits
53f3da7
Prepare for release
e99569d
A line is added to the changelog.
4099b63
One import is not needed
68513b3
Clarify names and comments, according to yanlend comments 26 May
907e8f2
FIX new test_cases on python 3.5 & 3.6
51d986c
To solve test cases that fail:
f97e900
1) Test case (test_async_fixtures_with_finalizer) refactoring to pass on pyth...
c1131f8
1) A new test case that fails with 0.12.0, and pass with this commit.
7a255bc
0.13.0 open for business
b8e2a45
0.12.0
- Additional commits viewable in compare view
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-06-24T13:21:47Z,2020-06-24T18:50:57Z,2020-06-24T18:50:56Z,2020-06-24T18:50:56Z,1bb33dab49fd25f77b9f8e7ab7ee23b3d64c123c,,,0,fb64dda76dda7354a77cb50c5864aff67a6fef8d,1a5b7d318fa923edfcefd3df8f64dae2e9c49d3f,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/866,,
434085235,MDExOlB1bGxSZXF1ZXN0NDM0MDg1MjM1,848,closed,0,Reload support for config_dir mode.,49260,"A reference implementation for adding support to reload when datasette is in the config_dir mode.
This implementation is flawed since it is watching the entire directory and any changes to the database will reload the server and adding unrelated files to the directory will also reload the server. ",2020-06-14T02:34:46Z,2020-07-03T02:44:54Z,2020-07-03T02:44:53Z,,888538efdbf545c0df524ca590a17fb6c6fa2419,,,0,0d100d15aca93fae200b3bc2e29dfd60aaa4b384,57879dc8b346a435804a9e45ffaacbf2a0228bc6,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/848,,
434055752,MDExOlB1bGxSZXF1ZXN0NDM0MDU1NzUy,844,closed,0,Action to run tests and upload coverage report,9599,Refs #843,2020-06-13T20:52:47Z,2020-06-13T21:36:52Z,2020-06-13T21:36:50Z,2020-06-13T21:36:50Z,cf7a2bdb404734910ec07abc7571351a2d934828,,,0,1210d9f41841bdca450f85a2342cdb0ff339c1b4,80c18a18fc444b89cc12b73599d56e091f3a3c87,OWNER,107914493,https://github.com/simonw/datasette/pull/844,,
431478724,MDExOlB1bGxSZXF1ZXN0NDMxNDc4NzI0,819,closed,0,register_routes() plugin hook,9599,Refs #215,2020-06-09T01:20:44Z,2020-06-09T03:12:08Z,2020-06-09T03:12:07Z,2020-06-09T03:12:07Z,f5e79adf26d0daa3831e3fba022f1b749a9efdee,,5512395,0,18127f074efc1b0148d1098da063e51ccea7797c,647c5ff0f3e8140f40d7f41f0874ce4e1f4df65c,OWNER,107914493,https://github.com/simonw/datasette/pull/819,,
152360740,MDExOlB1bGxSZXF1ZXN0MTUyMzYwNzQw,81,closed,0,:fire: Removes DS_Store,50527,,2017-11-13T22:07:52Z,2017-11-14T02:24:54Z,2017-11-13T22:16:55Z,2017-11-13T22:16:55Z,06a826c3188af82f27bb6b4e09cc89b782d30bd6,,,0,c66d297eac556a7f4fd4dcdb15cfb9466fddac77,d75f423b6fcfc074b7c6f8f7679da8876f181edd,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/81,,
429613893,MDExOlB1bGxSZXF1ZXN0NDI5NjEzODkz,809,closed,0,Publish secrets,9599,Refs #787. Will need quite a bit of manual testing since this involves code which runs against Heroku and Cloud Run.,2020-06-07T02:00:31Z,2020-06-11T16:02:13Z,2020-06-11T16:02:03Z,2020-06-11T16:02:03Z,98632f0a874b7b9dac6abf0abb9fdb7e2839a4d3,,5512395,0,abdac31328646705a957d58429b88d185ef43ded,ce4958018ede00fbdadf0c37a99889b6901bfb9b,OWNER,107914493,https://github.com/simonw/datasette/pull/809,,
429366641,MDExOlB1bGxSZXF1ZXN0NDI5MzY2NjQx,803,closed,0,Canned query permissions,9599,Refs #800. Closes #786,2020-06-06T18:20:00Z,2020-06-06T19:40:21Z,2020-06-06T19:40:20Z,2020-06-06T19:40:20Z,415ccd7cbdeebfb52f514a0387221023aa8b4d91,,,0,3359d54a4eb9c9725c27a85437661b5180c4099a,9c563d6aed072f14d3d25f58e84659f9caa1a243,OWNER,107914493,https://github.com/simonw/datasette/pull/803,,
428212421,MDExOlB1bGxSZXF1ZXN0NDI4MjEyNDIx,798,closed,0,CSRF protection,9599,Refs #793,2020-06-05T04:22:35Z,2020-06-06T00:43:41Z,2020-06-05T19:05:58Z,2020-06-05T19:05:57Z,84a9c4ff75460f91c049bd30bba3cee1fd89d9e2,,5512395,0,fe43963376b1c44ec23a213277bcb33d98e4aef9,d96ac1d52cacf34bae09705eb8f9a0e3f81c426b,OWNER,107914493,https://github.com/simonw/datasette/pull/798,,
426891471,MDExOlB1bGxSZXF1ZXN0NDI2ODkxNDcx,796,closed,0,New WIP writable canned queries,9599,"Refs #698. Replaces #703
Still todo:
- [x] Unit tests
- ~~Figure out `.json` mode~~
- [x] Flash message solution
- ~~CSRF protection~~
- [x] Better error message display on errors
- [x] Documentation
- ~~Maybe widgets?~~ I'll do these later",2020-06-03T00:08:00Z,2020-06-03T15:16:52Z,2020-06-03T15:16:50Z,2020-06-03T15:16:50Z,aa82d0370463580f2cb10d9617f1bcbe45cc994a,,3268330,0,e164939de719b5930ca4972e20490c9b2fd37f6d,9690ce606823bbfceb0c50d59e03adf7bb1a8475,OWNER,107914493,https://github.com/simonw/datasette/pull/796,,
425531205,MDExOlB1bGxSZXF1ZXN0NDI1NTMxMjA1,783,closed,0,Authentication: plugin hooks plus default --root auth mechanism,9599,See #699,2020-05-30T22:25:47Z,2020-06-01T01:16:44Z,2020-06-01T01:16:43Z,2020-06-01T01:16:43Z,57cf5139c552cb7feab9947daa949ca434cc0a66,,,0,116a26ce2d4af26c928e361e1b24dd6a6bb14eca,c4fbe50676929b512940aab90de590a78ac5d7fc,OWNER,107914493,https://github.com/simonw/datasette/pull/783,,
424085264,MDExOlB1bGxSZXF1ZXN0NDI0MDg1MjY0,772,closed,0,Test that plugin hooks are unit tested,9599,Refs #771,2020-05-27T20:01:32Z,2020-05-27T20:21:56Z,2020-05-27T20:16:03Z,2020-05-27T20:16:02Z,da87e963bff24e47878a5bc2025c8bfc63d4bc93,,5471110,0,173b6947521f1c1b47a119f62f379bf4278c87c9,41a0cd7b6afe0397efbbf27ad822679fc574811a,OWNER,107914493,https://github.com/simonw/datasette/pull/772,,
424032445,MDExOlB1bGxSZXF1ZXN0NDI0MDMyNDQ1,769,closed,0,Backport of Python 3.8 shutil.copytree,9599,Closes #744,2020-05-27T18:17:15Z,2020-05-27T20:21:56Z,2020-05-27T18:17:44Z,2020-05-27T18:17:44Z,2d099ad9c657d2cab59de91cdb8bfed2da236ef6,,5471110,0,6f80757f27e4651e6533856ea87b676dbc0d9c37,cee671a58f417f827d1735b1abaa40716534ea67,OWNER,107914493,https://github.com/simonw/datasette/pull/769,,
421491810,MDExOlB1bGxSZXF1ZXN0NDIxNDkxODEw,768,closed,0,Use dirs_exist_ok=True,9599,Refs #744,2020-05-21T17:53:44Z,2020-05-27T20:21:56Z,2020-05-21T17:53:51Z,2020-05-21T17:53:51Z,cee671a58f417f827d1735b1abaa40716534ea67,,5471110,0,f2e0a558238a34dc482803762de2509474a178c6,faea5093b865031f650da7da6539430f732f511a,OWNER,107914493,https://github.com/simonw/datasette/pull/768,,
415286105,MDExOlB1bGxSZXF1ZXN0NDE1Mjg2MTA1,763,closed,0,Documentation + improvements for db.execute() and Results class,9599,"Refs #685
Still TODO:
- [x] Implement `results.first()`
- [x] Implement `results.single_value()`
- [x] Unit tests for the above
",2020-05-08T15:16:02Z,2020-06-11T16:05:48Z,2020-05-08T16:05:46Z,2020-05-08T16:05:46Z,4433306c1855ad69840cc76cbd41086137572be2,,,0,1ea62c77221d07cd121367f1c6b620f8bde0716a,69e3a855dd7e5a77409d70b18c45ae3c1a145a75,OWNER,107914493,https://github.com/simonw/datasette/pull/763,,
412951191,MDExOlB1bGxSZXF1ZXN0NDEyOTUxMTkx,753,closed,0,"Update pytest-asyncio requirement from ~=0.10.0 to >=0.10,<0.13",27856297,"Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
Commits
b8e2a45
0.12.0
06580c6
Update changelog
b45de23
Fixed failing test case, 'test_asyncio_marker_without_loop'.
238cced
Put event_loop first among the fixtures of asyncio tests, fixes #154.
e5e3dc7
Added unittests for issue #154.
a7e5795
0.12.0 open for business!
1026c39
0.11.0
ab2b140
Test on Python 3.8, drop 3.3 and 3.4
6397a22
plugin: Use pytest 5.4.0 new Function API
21a0f94
Replace yield_fixture() by fixture()
- Additional commits viewable in compare view
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-05-04T13:27:19Z,2020-05-04T17:41:01Z,2020-05-04T17:40:49Z,2020-05-04T17:40:49Z,b314e088c59425122fb2b2abde8741010d9d274a,,,0,877fb569d2ae460ce845c7c855b02e0cdac23b68,707fe039947b3e48f2b6dcfe8e577d76b617f2a5,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/753,,
410469272,MDExOlB1bGxSZXF1ZXN0NDEwNDY5Mjcy,746,closed,0,"shutil.Error, not OSError",9599,Refs #744,2020-04-29T03:30:51Z,2020-04-29T07:07:24Z,2020-04-29T07:07:23Z,,e4e8b51b50e51b2515c6d8874d16c4607f79b80a,,,0,af3a5b91503f5d74aa111bbcd1ee531ee00f9ed7,89c4ddd4828623888e91a1d2cb396cba12d4e7b4,OWNER,107914493,https://github.com/simonw/datasette/pull/746,,
409153870,MDExOlB1bGxSZXF1ZXN0NDA5MTUzODcw,739,closed,0,Configuration directory mode,9599,"Refs #731
TODO:
- [x] Decide how to combine explicit command-line options with items detected from the directory structure
- [x] Add unit tests
- [x] Implement `inspect-data.json` mechanism for populating `immutables`
- [x] Add documentation",2020-04-26T20:37:46Z,2020-04-27T16:30:25Z,2020-04-27T16:30:25Z,2020-04-27T16:30:25Z,25014ca25eb70b4c1217558ebd14db2845973bfb,,,0,0d8fa53fab672fcf16b6a75aa55b07ccd243fb96,1b7b66c465e44025ec73421bd69752e42f108321,OWNER,107914493,https://github.com/simonw/datasette/pull/739,,
409123897,MDExOlB1bGxSZXF1ZXN0NDA5MTIzODk3,737,closed,0,"Custom pages mechanism, refs #648",9599,"Refs #648. TODO:
- [x] Pass a `view_name` to `render_template()`
- [x] Mechanism for custom status code / headers / redirect
- [x] Documentation",2020-04-26T17:31:41Z,2020-04-26T18:46:43Z,2020-04-26T18:46:43Z,2020-04-26T18:46:43Z,304e7b1d9fd904ae1c35600bc03662eb90eeeae0,,,0,b5bbf1bd88f67a26eb34902bc11f2da7692c7af2,227bb3e91fe34811a9374150798643a5af98ed79,OWNER,107914493,https://github.com/simonw/datasette/pull/737,,
407929128,MDExOlB1bGxSZXF1ZXN0NDA3OTI5MTI4,734,closed,0,"Update janus requirement from ~=0.4.0 to >=0.4,<0.6",27856297,"Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version.
Changelog
Sourced from janus's changelog.
0.5.0 (2020-04-23)
- Remove explicit loop arguments and forbid creating queues outside event loops #246
0.4.0 (2018-07-28)
- Add
py.typed
macro #89
- Drop python 3.4 support and fix minimal version python3.5.3 #88
- Add property with that indicates if queue is closed #86
0.3.2 (2018-07-06)
- Fixed python 3.7 support #97
0.3.1 (2018-01-30)
- Fixed bug with join() in case tasks are added by sync_q.put() #75
0.3.0 (2017-02-21)
- Expose unfinished_tasks property #34
0.2.4 (2016-12-05)
- Restore tarball deploying
0.2.3 (2016-07-12)
0.2.2 (2016-07-11)
- Update asyncio.async() to use asyncio.ensure_future() #6
0.2.1 (2016-03-24)
- Fix python setup.py test command #4
0.2.0 (2015-09-20)
... (truncated)
Commits
8e89b45
Bump to 0.5.0
ec8592b
Fix up Python 3.8 loop argument warnings (#246)
2543af6
Bump coverage from 5.0.4 to 5.1
03d1b36
Bump tox from 3.14.5 to 3.14.6
8219c38
Bump coverage from 5.0.3 to 5.0.4
85ec71d
Bump pytest from 5.4.0 to 5.4.1
3b974c9
Bump pytest from 5.3.5 to 5.4.0
282dc12
Bump mypy from 0.761 to 0.770
1364fb3
Bump tox from 3.14.4 to 3.14.5
dc519bb
Bump tox from 3.14.3 to 3.14.4
- Additional commits viewable in compare view
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-04-23T13:43:45Z,2020-05-04T16:48:14Z,2020-05-04T16:48:04Z,2020-05-04T16:48:04Z,109c5a430d53fe38b1300e0daa20f5cef047a08e,,,0,281b2c1acf1a2ef39c784dc73f1eb184d898d369,e232f77055880b38cc0b738607cd50cde9188eaf,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/734,,
406677205,MDExOlB1bGxSZXF1ZXN0NDA2Njc3MjA1,730,closed,0,"Update pytest-asyncio requirement from ~=0.10.0 to >=0.10,<0.12",27856297,"Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
Commits
1026c39
0.11.0
ab2b140
Test on Python 3.8, drop 3.3 and 3.4
6397a22
plugin: Use pytest 5.4.0 new Function API
21a0f94
Replace yield_fixture() by fixture()
964b295
Added min hypothesis version so that bugfix for https://github.com/Hypothesis...
4a11a20
Add max supported pytest version to < 5.4.0 to prevent fails until #141 is fi...
b305594
Change event_loop to module scope in hypothesis tests, fixing #145.
d5a0f47
Enable test_subprocess to be run on win, by changing to ProactorEventLoop in ...
d07cd2d
Fix required pytest version
86cd9a6
Handle BaseExceptions from loop.run_until_complete (#126)
- Additional commits viewable in compare view
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-04-21T13:32:35Z,2020-05-04T13:27:24Z,2020-05-04T13:27:23Z,,460708c7107a7cf15971a9aa1040635f6bc1be6d,,,0,11c67f82cdccc6e34cbff717e673451ac6172ef4,15e232180427e988174fdf88440c84b91d2d98d1,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/730,,
406067019,MDExOlB1bGxSZXF1ZXN0NDA2MDY3MDE5,728,closed,0,"Update mergedeep requirement from ~=1.1.1 to >=1.1.1,<1.4.0",27856297,"Updates the requirements on [mergedeep](https://github.com/clarketm/mergedeep) to permit the latest version.
Commits
3d6e7b4
v1.3.0 - support additive merging of Counter
types
56a258a
v1.2.1 - tidy docs and variable names
61ab213
v1.2.0 - support both TYPESAFE_REPLACE and TYPESAFE_ADDITIVE merge strategies...
b331bb5
cleanup Makefile
6f577bf
officially label support for python3.8
84faf37
use pipenv for managing dev dependencies
3a8761a
Update README.md
- See full diff in compare view
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-04-20T13:33:23Z,2020-05-04T16:45:58Z,2020-05-04T16:45:49Z,2020-05-04T16:45:49Z,e232f77055880b38cc0b738607cd50cde9188eaf,,,0,b584fbc4215d92df08360937916ffe128f11f72e,985e59493e44d6fcebf7a30f693f4edecee3e90d,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/728,,
402645984,MDExOlB1bGxSZXF1ZXN0NDAyNjQ1OTg0,725,closed,0,"Update aiofiles requirement from ~=0.4.0 to >=0.4,<0.6",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-04-13T13:32:47Z,2020-05-04T18:16:54Z,2020-05-04T16:17:49Z,2020-05-04T16:17:49Z,985e59493e44d6fcebf7a30f693f4edecee3e90d,,,0,a7053e8d17559a6ebb4265c0783b84cc6aaff7e2,d349d57cdf3d577afb62bdf784af342a4d5be660,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/725,,
400579136,MDExOlB1bGxSZXF1ZXN0NDAwNTc5MTM2,722,closed,0,"Update jinja2 requirement from ~=2.10.3 to >=2.10.3,<2.12.0",27856297,"Updates the requirements on [jinja2](https://github.com/pallets/jinja) to permit the latest version.
Release notes
Sourced from jinja2's releases.
2.11.1
This fixes an issue in async environment when indexing the result of an attribute lookup, like {{ data.items[1:] }}
.
Changelog
Sourced from jinja2's changelog.
Version 2.11.1
Released 2020-01-30
- Fix a bug that prevented looking up a key after an attribute (
{{ data.items[1:] }}
) in an async template. 1141
Version 2.11.0
Released 2020-01-27
- Drop support for Python 2.6, 3.3, and 3.4. This will be the last version to support Python 2.7 and 3.5.
- Added a new
ChainableUndefined
class to support getitem and getattr on an undefined object. 977
- Allow
{%+
syntax (with NOP behavior) when lstrip_blocks
is disabled. 748
- Added a
default
parameter for the map
filter. 557
- Exclude environment globals from meta.find_undeclared_variables. 931
- Float literals can be written with scientific notation, like 2.56e-3. 912, 922
- Int and float literals can be written with the '_' separator for legibility, like 12_345. 923
- Fix a bug causing deadlocks in
LRUCache.setdefault
. 1000
- The
trim
filter takes an optional string of characters to trim. 828
- A new
jinja2.ext.debug
extension adds a {% debug %}
tag to quickly dump the current context and available filters and tests. 174, 798, 983
- Lexing templates with large amounts of whitespace is much faster. 857, 858
- Parentheses around comparisons are preserved, so
{{ 2 * (3 < 5) }}
outputs "2" instead of "False". 755, 938
- Add new
boolean
, false
, true
, integer
and float
tests. 824
- The environment's
finalize
function is only applied to the output of expressions (constant or not), not static template data. 63
- When providing multiple paths to
FileSystemLoader
, a template can have the same name as a directory. 821
- Always return Undefined when omitting the
else
clause in a {{ 'foo' if bar }}
expression, regardless of the environment's undefined
class. Omitting the else
clause is a valid shortcut and should not raise an error when using StrictUndefined. 710, 1079
- Fix behavior of
loop
control variables such as length
and revindex0
when looping over a generator. 459, 751, 794, 993
- Async support is only loaded the first time an environment enables it, in order to avoid a slow initial import. 765
- In async environments, the
|map
filter will await the filter call if needed. 913
- In for loops that access
loop
attributes, the iterator is not advanced ahead of the current iteration unless length
, revindex
, nextitem
, or last
are accessed. This makes it less likely to break groupby
results. 555, 1101
- In async environments, the
loop
attributes length
and revindex
work for async iterators. 1101
- In async environments, values from attribute/property access will be awaited if needed. 1101
- ~loader.PackageLoader doesn't depend on setuptools or pkg_resources. 970
PackageLoader
has limited support for 420 namespace packages. 1097
- Support os.PathLike objects in ~loader.FileSystemLoader and ~loader.ModuleLoader. 870
- ~nativetypes.NativeTemplate correctly handles quotes between expressions.
"'{{ a }}', '{{ b }}'"
renders as the tuple ('1', '2')
rather than the string '1, 2'
. 1020
- Creating a ~nativetypes.NativeTemplate directly creates a ~nativetypes.NativeEnvironment instead of a default Environment. 1091
- After calling
LRUCache.copy()
, the copy's queue methods point to the correct queue. 843
- Compiling templates always writes UTF-8 instead of defaulting to the system encoding. 889
|wordwrap
filter treats existing newlines as separate paragraphs to be wrapped individually, rather than creating short intermediate lines. 175
- Add
break_on_hyphens
parameter to |wordwrap
filter. 550
- Cython compiled functions decorated as context functions will be passed the context. 1108
- When chained comparisons of constants are evaluated at compile time, the result follows Python's behavior of returning
False
if any comparison returns False
, rather than only the last one. 1102
- Tracebacks for exceptions in templates show the correct line numbers and source for Python >= 3.7. 1104
- Tracebacks for template syntax errors in Python 3 no longer show internal compiler frames. 763
- Add a
DerivedContextReference
node that can be used by extensions to get the current context and local variables such as loop
. 860
- Constant folding during compilation is applied to some node types that were previously overlooked. 733
TemplateSyntaxError.source
is not empty when raised from an included template. 457
... (truncated)
Commits
b85283e
release version 2.11.1
3d5bfc6
Merge pull request #1143 from pallets/bugfix/attribute-access
d61c1ea
add changelog
15d7e61
Added regression test for slicing of attributes
05dee9b
Fix attribute access in async code. Fixes #1141
bbdafe3
release version 2.11.0
9ff27f6
add python 3.8 classifier, clean up changelog
d312609
isolate bytecode cache tests
9849979
import Markup from markupsafe, fix flake8 import warnings
c6d864c
increment bytecode cache version
- Additional commits viewable in compare view
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)
---
**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
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-04-08T01:25:24Z,2020-05-04T17:13:26Z,2020-05-04T17:13:16Z,2020-05-04T17:13:16Z,aa064de3f400899dbf61f2d33a035fba4017596c,,,0,0a503b7fdb0cce1bb82e18c4552a4f92808fe41f,d55fe8cdfc2ce7bc6960bf2507766c1fcd1d31a7,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/722,,
400579077,MDExOlB1bGxSZXF1ZXN0NDAwNTc5MDc3,721,closed,0,"Update pytest requirement from ~=5.2.2 to >=5.2.2,<5.5.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.
5.4.1
pytest 5.4.1 (2020-03-13)
Bug Fixes
-
#6909: Revert the change introduced by #6330, which required all arguments to @pytest.mark.parametrize
to be explicitly defined in the function signature.
The intention of the original change was to remove what was expected to be an unintended/surprising behavior, but it turns out many people relied on it, so the restriction has been reverted.
-
#6910: Fix crash when plugins return an unknown stats while using the --reportlog
option.
Changelog
Sourced from pytest's changelog.
Commits
3d0f3ba
Preparing release version 5.4.1
b9e2cd0
Merge pull request #6914 from nicoddemus/revert-6330
a84fcbf
Revert "[parametrize] enforce explicit argnames declaration (#6330)"
59c1bfa
Merge pull request #6913 from nicoddemus/backport-6910
3267f64
Merge pull request #6910 from nicoddemus/resultlog-logreport
c9fd1bd
Preparing release version 5.4.0
93aa988
Merge pull request #6901 from RonnyPfannschmidt/regendoc-fix-simple
7996724
Merge pull request #6902 from RoyalTS/filterwarnings-docfix
90ee8a7
docfix
378a75d
run and fix tox -e regen to prepare 5.4
- Additional commits viewable in compare view
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)
---
**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
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-04-08T01:25:04Z,2020-05-04T17:13:49Z,2020-05-04T17:13:41Z,2020-05-04T17:13:41Z,c91fb9e3d4f0632d4ef25a21165739ab88a9d491,,,0,54ea56285f9512c991e343ffad9d848d551977de,d55fe8cdfc2ce7bc6960bf2507766c1fcd1d31a7,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/721,,
400578979,MDExOlB1bGxSZXF1ZXN0NDAwNTc4OTc5,720,closed,0,"Update beautifulsoup4 requirement from ~=4.8.1 to >=4.8.1,<4.10.0",27856297,"Updates the requirements on [beautifulsoup4](http://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.
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)
---
**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
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-04-08T01:24:38Z,2020-05-04T17:14:51Z,2020-05-04T17:14:46Z,2020-05-04T17:14:46Z,707fe039947b3e48f2b6dcfe8e577d76b617f2a5,,,0,ab76bf88f597e61668dc6fc750502f8db207bd9c,d55fe8cdfc2ce7bc6960bf2507766c1fcd1d31a7,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/720,,
399166433,MDExOlB1bGxSZXF1ZXN0Mzk5MTY2NDMz,719,closed,0,asgi: check raw_path is not None,193185,"The ASGI spec
(https://asgi.readthedocs.io/en/latest/specs/www.html#http) seems to imply that `None` is a valid value, so we need to check the value itself, not just whether the key is present.
In particular, the [mangum](https://github.com/erm/mangum) adapter passes `None` for this key's value. This change permits mangum to be used to front datasette in Amazon API Gateway + AWS Lambda deployments.",2020-04-05T16:53:58Z,2020-05-04T17:14:26Z,2020-05-04T17:14:26Z,2020-05-04T17:14:26Z,dbd2d70b3819a7041bb36a527033d77c85683c05,,,0,161f61d73800a605354b4ac44a3c989e19bbc77a,e0e7a0facfc935a835cd73c720bc46661462f0b1,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/719,,
397749653,MDExOlB1bGxSZXF1ZXN0Mzk3NzQ5NjUz,714,closed,0,--metadata accepts YAML as well as JSON,9599,Refs #713. Still needs tests and documentation.,2020-04-02T18:36:02Z,2020-04-02T19:30:54Z,2020-04-02T19:30:54Z,2020-04-02T19:30:54Z,6717c719dd36dc2adc0f9da38a8c8e08129e96b4,,,0,5170c31adc44f6ef14b21782ba6f8ecb46dd9450,2aaad72789c427875426673c1a43e67c86fc970e,OWNER,107914493,https://github.com/simonw/datasette/pull/714,,
393274433,MDExOlB1bGxSZXF1ZXN0MzkzMjc0NDMz,708,closed,0,"base_url configuration setting, refs #394",9599,Pull request implementing #394,2020-03-24T21:52:00Z,2020-03-25T00:18:44Z,2020-03-25T00:18:44Z,2020-03-25T00:18:44Z,7656fd64d8b6a32ebc34d89c1b8711cc5ea240f7,,5234079,0,b1f953b5de1bef239ddb1d133f9b2e19f8e3438a,a498d0fe6590f9bdbc4faf9e0dd5faeb3b06002c,OWNER,107914493,https://github.com/simonw/datasette/pull/708,,
391924509,MDExOlB1bGxSZXF1ZXN0MzkxOTI0NTA5,703,closed,0,WIP implementation of writable canned queries,9599,Refs #698.,2020-03-21T22:23:51Z,2020-06-03T00:08:14Z,2020-06-02T23:57:35Z,,80c5a74a947e63673389604de12e80fa27305454,,,1,61e40e917efc43a8aea5298a22badbb6eaea3fa1,89c4ddd4828623888e91a1d2cb396cba12d4e7b4,OWNER,107914493,https://github.com/simonw/datasette/pull/703,,
381666777,MDExOlB1bGxSZXF1ZXN0MzgxNjY2Nzc3,688,closed,0,Don't count rows on homepage for DBs > 100MB,9599,Closes #649.,2020-02-29T01:01:06Z,2020-02-29T01:08:30Z,2020-02-29T01:08:29Z,2020-02-29T01:08:29Z,7f5a330377fd7db1f6d1efa5686d183bcaf89217,,,0,025fdd46f77822c0cbeb7856611c0a65a9b83057,0f8e91c68f2d2ad48efc8324b12762bf8b58facd,OWNER,107914493,https://github.com/simonw/datasette/pull/688,,
379378780,MDExOlB1bGxSZXF1ZXN0Mzc5Mzc4Nzgw,686,closed,0,?_searchmode=raw option,9599,Closes #676,2020-02-25T05:45:50Z,2020-02-25T05:56:09Z,2020-02-25T05:56:04Z,2020-02-25T05:56:04Z,6cb65555f46456eb31b62e855e21b1d8c809b1a2,,,0,abc782cb342c21b565142e44e70502e61ac6756b,a093c5f79fa034a97d2ad8b606745dd3b80365af,OWNER,107914493,https://github.com/simonw/datasette/pull/686,,
379192258,MDExOlB1bGxSZXF1ZXN0Mzc5MTkyMjU4,683,closed,0,.execute_write() and .execute_write_fn() methods on Database,9599,"See #682
- [x] Come up with design for `.execute_write()` and `.execute_write_fn()`
- [x] Build some quick demo plugins to exercise the design
- [x] Write some unit tests
- [x] Write the documentation",2020-02-24T19:51:58Z,2020-05-30T18:40:20Z,2020-02-25T04:45:08Z,2020-02-25T04:45:08Z,a093c5f79fa034a97d2ad8b606745dd3b80365af,,3268330,0,ec6e2edfe18446c9d77e3f30efbc299d27ea5c1b,411056c4c43e74f2b3d0e3bc1175e7998516b1b3,OWNER,107914493,https://github.com/simonw/datasette/pull/683,,
375180832,MDExOlB1bGxSZXF1ZXN0Mzc1MTgwODMy,672,open,0,--dirs option for scanning directories for SQLite databases,9599,Refs #417.,2020-02-14T02:25:52Z,2020-03-27T01:03:53Z,,,0e0e544f1f23451f04d7ca576ace5b18ce168e6f,,,0,ee718b98b793df2a15b125cbf20816c9864bf7e9,6aa516d82dea9885cb4db8d56ec2ccfd4cd9b840,OWNER,107914493,https://github.com/simonw/datasette/pull/672,,
373775788,MDExOlB1bGxSZXF1ZXN0MzczNzc1Nzg4,669,closed,0,fix db-to-sqlite command in ecosystem doc page,883348,the `--connection` parameter has become positional,2020-02-11T17:05:41Z,2020-02-22T02:32:18Z,2020-02-22T02:32:17Z,2020-02-22T02:32:17Z,be2265b0e811d0ac2875c2f748125c17b0f9289e,,,0,6eb0e8cd90be82eff0a5152b0985c2a3cb7a44a8,30b6f71b306a43605c99bef79302ed5cb22d1924,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/669,,
372763906,MDExOlB1bGxSZXF1ZXN0MzcyNzYzOTA2,666,closed,0,"Use inspect-file, if possible, for total row count",13896256,"For large tables, counting the number of rows in the table can take a
signficant amount of time. Instead, where an inspect-file is provided
for an immutable database, look up the row-count for a plain count(*).",2020-02-08T22:10:35Z,2020-03-09T02:47:15Z,2020-02-25T20:19:29Z,2020-02-25T20:19:29Z,3041c6b6412bbe317f8b9afd6529a15954f2c47e,,,0,8947a60404b8242a03f9ebabc5f957d75f4dfe04,b031fe97636b80b05fec409ee1dffb7d044fd4e9,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/666,,
370675007,MDExOlB1bGxSZXF1ZXN0MzcwNjc1MDA3,664,closed,0,Datasette.render_template() method,9599,Refs #577,2020-02-04T06:53:59Z,2020-02-04T20:26:18Z,2020-02-04T20:26:18Z,2020-02-04T20:26:18Z,70b915fb4bc214f9d064179f87671f8a378aa127,,,0,19d4406f562aca291fef04363802093672620220,286ed286b68793532c2a38436a08343b45cfbc91,OWNER,107914493,https://github.com/simonw/datasette/pull/664,,
368734500,MDExOlB1bGxSZXF1ZXN0MzY4NzM0NTAw,663,closed,0,"-p argument for datasette package, plus tests - refs #661",9599,,2020-01-29T19:47:49Z,2020-01-29T22:46:43Z,2020-01-29T22:46:43Z,2020-01-29T22:46:43Z,67fc9c5720ed1fcd62b116481f70d4e80b403a22,,,0,8adfc9db7f15e36fed677be4a9c833ff2cdec0bc,34d77d780f68b778fd9d6ebbaf69f250436f055f,OWNER,107914493,https://github.com/simonw/datasette/pull/663,,
365218391,MDExOlB1bGxSZXF1ZXN0MzY1MjE4Mzkx,660,closed,0,"gcloud run is now GA, s/beta//",813732,,2020-01-21T10:08:38Z,2020-01-22T03:41:09Z,2020-01-21T23:28:12Z,2020-01-21T23:28:12Z,34d77d780f68b778fd9d6ebbaf69f250436f055f,,,0,894e96026b838288f926f62914123a1f86139793,3c861f363df02a59a67c59036278338e4760d2ed,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/660,,
356004242,MDExOlB1bGxSZXF1ZXN0MzU2MDA0MjQy,653,closed,0,allow leading comments in SQL input field,418191,"this changes the SQL validation to allow for lines that are commented out
my main use case for this is that I like to write a succession of queries when trying to solve a problem.
In most native SQL clients there is a key binding that will run just the current highlighted query or the program is smart enough to run just the query that the cursor is in if it's properly delimited with a ';'.
Typically my workflow will start with a single simple query and I'll copy/paste it to a new query below when I want to make big changes while debugging. This makes it easy to go back to a working version above when the query doesn't work.
Since datasette sends the whole query to the DB I have to comment out the older queries by prefixing each line with `--`. This gets caught by the validators when I use my typical strategy of copy/pasting each successive query below the last one.
so this is just a simple fix to allow for a query to be sent to the DB with leading comments.
",2019-12-21T14:19:52Z,2020-02-05T02:35:41Z,2020-02-05T02:13:25Z,2020-02-05T02:13:25Z,33a12c8ae526afb40a7819c9ca411c9d3c41219b,,,0,3a4cb551b9a217d5798e3e9ad5d4b06234a81885,d6b6c9171f3fd945c4e5e4144923ac831c43c208,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/653,,
354869391,MDExOlB1bGxSZXF1ZXN0MzU0ODY5Mzkx,652,closed,0,Quick (and uninformed and perhaps misguided) attempt to add a url for hosting datasette at a particular host/URI,132978,"As usual, I don't really know what I'm doing... so this is just a suggested approach. I've not written tests, I've not run the tests, I don't know if I've missed some absolute URLs that would need to have the leading slash dropped.
BUT, I tested it with `--config base_url:http://127.0.0.1:8001/` on the command line and from what little I know about datasette it's at least working in some obvious cases.
My changes are based on what I saw in https://github.com/simonw/datasette/commit/8da2db4b71096b19e7a9ef1929369b8483d448bf (thanks!)
I'm happy to be more thorough on this if you think it's worth pursuing.
Fixes #394 (he said, optimistically).",2019-12-18T23:37:16Z,2020-03-24T22:14:50Z,2020-03-24T22:14:50Z,,8e674de58c17c89c8a4a90bc3ec6e02151b354e5,,,0,eaa636841e38d40360a74596ef1a0df50f6a86a5,a498d0fe6590f9bdbc4faf9e0dd5faeb3b06002c,NONE,107914493,https://github.com/simonw/datasette/pull/652,,
347179081,MDExOlB1bGxSZXF1ZXN0MzQ3MTc5MDgx,644,closed,0,Validate metadata json on startup,6025893,"This PR adds a sanity check which builds up a marshmallow schema on-the-fly based on the structure of the database(s) on startup and then validates the metadata json against it.
In case of invalid data, this will raise with a descriptive error e.g:
```
marshmallow.exceptions.ValidationError: {'databases': {'fixtures': {'tables': {'not_a_table': ['Unknown field.']}}}}
```
Closes #260
---
This was intended to be fairly self-contained, but then while I was working on it, I hit some problems getting the tests to pass in the context of the test suite as a whole. My tests passed in isolation, but then failed while doing a full test suite run. That's when the worms started coming out of the can :bug: After some sleuthing, it turned out this was essentially the result of several issues intersecting:
* There are certain events in the application lifecycle where the metadata schema can be modified after it is loaded e.g: https://github.com/simonw/datasette/blob/a562f2965552fb2dbbbd74df245c9965ee23d886/datasette/app.py#L299-L320 This means that sometimes what goes in isn't always exactly what comes out when you call `/-/metadata`.
* Because the test fixtures use session scope for performance reasons if one unit test performs an action which mutates the metadata, that can impact on other unit tests which run after it using the same fixture.
* Because the `self._metadata` property was being set with a simple assignment `self._metadata = metadata`, that created an object reference to the test fixture data, so operating on `self._metadata` was actually modifying the test fixture `METADATA` meaning that depending on when it was loaded in the test suite lifecycle, `METADATA` had different content, which was somewhat unexpected.
As such, I've added some band-aids in 3552024 and 6859fd8:
* Switching the metadata object to a `deepcopy` of the input prevents us directly mutating the input fixture.
* I've switched some of the tests to use a fixture with function scope instead of session scope so we're working on a clean copy that hasn't been mutated by other tests where necessary but keeping session scope in most cases for performance.
* I haven't really addressed the fact that sometimes the metadata object gets mutated in place, so the object that is served from `/-/metadata` isn't necessarily always exactly the same as the file you fed into it on init. I'm not sure how much of a problem that is. The way the tests were written makes me think it was unexpected, but getting into it feels like too much scope creep for this PR so its probably best addressed as another issue.",2019-11-30T00:32:15Z,2021-07-28T17:58:45Z,2021-07-28T17:58:45Z,,e71b642474d54f986bc8857346103d8a10d84e6d,,,0,6859fd8c5eef26f397aa949dc4edf3747e8ab0a5,a562f2965552fb2dbbbd74df245c9965ee23d886,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/644,,
340743220,MDExOlB1bGxSZXF1ZXN0MzQwNzQzMjIw,635,closed,0,Use Jinja async mode,9599,Refs #628. Still needs documentation.,2019-11-14T01:20:57Z,2019-11-14T23:14:23Z,2019-11-14T23:14:23Z,2019-11-14T23:14:22Z,8c642f04e0608bf537fdd1f76d64c2367fb04d57,,,0,0e8f8be1dbf89a6f689a5eea4a0534199a0028f6,b51f258d00bb3c3b401f15d46a1fbd50394dbe1c,OWNER,107914493,https://github.com/simonw/datasette/pull/635,,
340211149,MDExOlB1bGxSZXF1ZXN0MzQwMjExMTQ5,631,closed,0,bugfix issue 572,3683993,closes bugfix issue #572 ,2019-11-13T02:46:50Z,2019-11-13T04:28:43Z,2019-11-13T04:28:42Z,2019-11-13T04:28:42Z,848dec4deb0d3c140a4e0394cac45fbb2593349b,,,0,ca43966e5aa832a377e4db5d411b6cc8b1c5b3ac,bbd00e903cdd49067ecdbdb60a4d225833a44b05,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/631,,
339742432,MDExOlB1bGxSZXF1ZXN0MzM5NzQyNDMy,630,closed,0,Use python:3.8 base Docker image,9599,Closes #629,2019-11-12T06:02:37Z,2019-11-12T06:03:10Z,2019-11-12T06:03:10Z,2019-11-12T06:03:10Z,d977fbadf70a96bf2eea1407d01f99d98e092dec,,,0,53180ec09483bd4eef00346a39b302aeb3039e7d,f554be39fc14ddc18921ca29d3920d55aad03d46,OWNER,107914493,https://github.com/simonw/datasette/pull/630,,
339722790,MDExOlB1bGxSZXF1ZXN0MzM5NzIyNzkw,627,closed,0,"Support Python 3.8, stop supporting Python 3.5",9599,Refs #622,2019-11-12T04:36:33Z,2020-04-05T10:23:58Z,2019-11-12T05:09:12Z,2019-11-12T05:09:12Z,cf7776d36fbacefa874cbd6e5fcdc9fff7661203,,,0,18cc795b5c6ec9223a5cbc4f30b19710c17f7eaa,42ee3e16a9ba7cc513b8da944cc1609a5407cf42,OWNER,107914493,https://github.com/simonw/datasette/pull/627,,
339244888,MDExOlB1bGxSZXF1ZXN0MzM5MjQ0ODg4,624,closed,0,Bump pint to 0.9,9599,,2019-11-11T04:07:07Z,2019-11-11T04:19:02Z,2019-11-11T04:19:02Z,2019-11-11T04:19:02Z,42ee3e16a9ba7cc513b8da944cc1609a5407cf42,,,0,ed17117a2ad675cbf2430f28069bb1854846a6f0,1c063fae9dba70f70244db010d55a18846640f07,OWNER,107914493,https://github.com/simonw/datasette/pull/624,,
339236647,MDExOlB1bGxSZXF1ZXN0MzM5MjM2NjQ3,623,closed,0,Test against Python 3.8 in Travis,9599,Needed for #622,2019-11-11T03:24:54Z,2019-11-11T03:45:35Z,2019-11-11T03:45:35Z,2019-11-11T03:45:35Z,1c063fae9dba70f70244db010d55a18846640f07,,,0,877dda2d287ed3b1772f051dffd295a69c3ecd27,28c4a6db5b5e512db630d7ba6127196185de67c7,OWNER,107914493,https://github.com/simonw/datasette/pull/623,,
334448258,MDExOlB1bGxSZXF1ZXN0MzM0NDQ4MjU4,609,closed,0,Update to latest black,9599,,2019-10-30T18:42:35Z,2019-10-30T18:49:01Z,2019-10-30T18:49:01Z,2019-10-30T18:49:01Z,5dd4d2b2d3abcfd507a6df47e7c2fbad3c552fd8,,,0,6f57e5e77bac29ac88d51271fd0c785859a820ce,f4c0830529a9513a83437a9e1550bbe27ebc5c64,OWNER,107914493,https://github.com/simonw/datasette/pull/609,,
330129358,MDExOlB1bGxSZXF1ZXN0MzMwMTI5MzU4,603,closed,0,always pop as_format off args dict,6025893,closes #563,2019-10-20T15:44:22Z,2019-10-30T19:12:22Z,2019-10-21T02:03:09Z,2019-10-21T02:03:09Z,f4c0830529a9513a83437a9e1550bbe27ebc5c64,,,0,39d044502590224e4f07c05e02fc8a4d312255c1,8050f9e1ece9afd0236ad38c6458c12a4ad917e6,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/603,,
330076263,MDExOlB1bGxSZXF1ZXN0MzMwMDc2MjYz,602,closed,0,Offer to format readonly SQL,2657547,"Following discussion in #601, this PR adds a ""Format SQL"" button to
read-only SQL (if the SQL actually differs from the formatting result).
It also removes a console error on readonly SQL queries.",2019-10-20T02:29:32Z,2019-11-04T07:29:33Z,2019-11-04T02:39:56Z,2019-11-04T02:39:56Z,ee330222f4c3ee66c2fe41ebc76fed56b9cb9a00,,,0,266c3dafb9bf3b12204b6152d7b48e94a131584a,8050f9e1ece9afd0236ad38c6458c12a4ad917e6,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/602,,
329947180,MDExOlB1bGxSZXF1ZXN0MzI5OTQ3MTgw,601,closed,0,Don't auto-format SQL on page load,9599,Refs #600,2019-10-18T22:37:39Z,2019-10-20T02:29:49Z,2019-10-18T23:56:45Z,2019-10-18T23:56:45Z,e877b1cb12076946fdbec7ca2fbfbfc75c1c2a28,,,0,3a963734590caa3ad69bfe64c31690f3e4de61a4,b6ad1fdc7068cb8248787843e7438d1f19fa2e3a,OWNER,107914493,https://github.com/simonw/datasette/pull/601,,
329890320,MDExOlB1bGxSZXF1ZXN0MzI5ODkwMzIw,599,closed,0,Fix for /foo v.s. /foo-bar issue in #597,9599,Refs #597,2019-10-18T19:22:55Z,2019-10-18T22:51:07Z,2019-10-18T22:51:07Z,2019-10-18T22:51:07Z,b647b5efc29300f715ba656e41b0591f342938e1,,,0,8cc5a8dc35371f7d4353a4206b2d079f520c61cd,b6ad1fdc7068cb8248787843e7438d1f19fa2e3a,OWNER,107914493,https://github.com/simonw/datasette/pull/599,,
327541046,MDExOlB1bGxSZXF1ZXN0MzI3NTQxMDQ2,595,closed,0,bump uvicorn to 0.9.0 to be Python-3.8 friendly,4312421,"as uvicorn-0.9 is needed to get websockets-8.0.2, which is needed to have Python-3.8 compatibility",2019-10-13T10:00:04Z,2019-11-12T04:46:48Z,2019-11-12T04:46:48Z,,5a7185bcd15aab28e86338b3771c25af13a94a4c,,,0,e1d92ea94ca8f14879ef280cb7dadab7eed76e9c,fffd69ec031b83f46680f192ba57a27f0d1f0b8a,NONE,107914493,https://github.com/simonw/datasette/pull/595,,
327279818,MDExOlB1bGxSZXF1ZXN0MzI3Mjc5ODE4,592,closed,0,Offer SQL formatting,2657547,"SQL code will be formatted on page load, and can additionally be formatted by clicking the ""Format SQL"" button. Closes #136",2019-10-11T16:35:49Z,2019-10-14T08:57:12Z,2019-10-14T03:46:13Z,2019-10-14T03:46:13Z,af2e6a5cf186a7200d76cb67ac30fa59cc24d84e,,,0,b46195af65846ca30c6006520cc778eeed052324,fffd69ec031b83f46680f192ba57a27f0d1f0b8a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/592,,
327188087,MDExOlB1bGxSZXF1ZXN0MzI3MTg4MDg3,591,closed,0,Sort databases on homepage by argument order,2657547,Closes #585,2019-10-11T12:57:38Z,2019-10-14T08:57:50Z,2019-10-14T03:52:34Z,2019-10-14T03:52:34Z,908fc3999e06f3ccd3bb8ad0539490bbc7809748,,,0,5a8e52fa60f2c2c93f10b9c6c126f31b02d647b0,fffd69ec031b83f46680f192ba57a27f0d1f0b8a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/591,,
327172545,MDExOlB1bGxSZXF1ZXN0MzI3MTcyNTQ1,590,closed,0,Handle spaces in DB names,2657547,Closes #503,2019-10-11T12:18:22Z,2019-11-04T23:16:31Z,2019-11-04T23:16:30Z,2019-11-04T23:16:30Z,931bfc66613aa3e22f8314df5c0d0758baf31f38,,,0,0c306e89e4f97f64921e4f6d1fe7bab52fad6ade,52fa79c6075f0830ff635b81d957c64d877a05aa,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/590,,
327169748,MDExOlB1bGxSZXF1ZXN0MzI3MTY5NzQ4,589,closed,0,Display metadata footer on custom SQL queries,2657547,Closes #408,2019-10-11T12:10:28Z,2019-10-14T08:58:23Z,2019-10-14T03:53:22Z,2019-10-14T03:53:22Z,12cec411cae73ba7211429da12cd32c551fe17b1,,,0,5627fe8d58e791e004b89b5614007d5e64a5c8e2,fffd69ec031b83f46680f192ba57a27f0d1f0b8a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/589,,
323983732,MDExOlB1bGxSZXF1ZXN0MzIzOTgzNzMy,579,open,0,New connection pooling,9599,See #569,2019-10-02T23:22:19Z,2019-11-15T22:57:21Z,,,025b4024b1b43ea034b7fd331c30740165ff75f2,,,0,32cbfd2acd28bcefb97c442ac8e3ee2c07401e19,a9909c29ccac771c23c2ef22b89d10697b5256b9,OWNER,107914493,https://github.com/simonw/datasette/pull/579,,
322529381,MDExOlB1bGxSZXF1ZXN0MzIyNTI5Mzgx,578,closed,0,Added support for multi arch builds,887095,Minor changes in Dockerfile and new Makefile to support Docker multi architecture builds. `make`will build one image per architecture and push them as one Docker manifest to Docker Hub. Feel free to change `IMAGE_NAME ` to `datasetteproject/datasette` to update your official Docker Hub image(s).,2019-09-29T18:43:03Z,2019-11-13T19:13:15Z,2019-11-13T19:13:15Z,,ae1aa0929b9e62a413ec9b4a40588e6aafe50573,,,0,ce6372bc6210ae52ac1951647b8fbaee40d64fc1,0fc8afde0eb5ef677f4ac31601540d6168c8208d,NONE,107914493,https://github.com/simonw/datasette/pull/578,,
313384926,MDExOlB1bGxSZXF1ZXN0MzEzMzg0OTI2,571,closed,0,detect_fts now works with alternative table escaping,9599,Fixes #570,2019-09-03T00:23:39Z,2019-09-03T00:32:28Z,2019-09-03T00:32:28Z,2019-09-03T00:32:28Z,2dc5c8dc259a0606162673d394ba8cc1c6f54428,,,0,a85239f69261c10f1a9f90514c8b5d113cb94585,f04deebec4f3842f7bd610cd5859de529f77d50e,OWNER,107914493,https://github.com/simonw/datasette/pull/571,,
301483613,MDExOlB1bGxSZXF1ZXN0MzAxNDgzNjEz,564,open,0,First proof-of-concept of Datasette Library,9599,"Refs #417. Run it like this:
datasette -d ~/Library
Uses a new plugin hook - available_databases()
",2019-07-26T10:22:26Z,2023-02-07T15:14:11Z,,,4f425d2b39d1be10d7ef5c146480a3eb494d5086,,,1,947645d84710677ea50762016081a9fbc6b014a8,a9453c4dda70bbf5122835e68f63db6ecbe1a6fc,OWNER,107914493,https://github.com/simonw/datasette/pull/564,,
298962551,MDExOlB1bGxSZXF1ZXN0Mjk4OTYyNTUx,561,closed,0,Fix typos,15278512,,2019-07-18T15:13:35Z,2019-07-26T10:25:45Z,2019-07-26T10:25:45Z,2019-07-26T10:25:45Z,27cb29365c9f5f6f1492968d1268497193ed75a2,,,0,41341195075adc5093d33633d980657ecdac043c,a9453c4dda70bbf5122835e68f63db6ecbe1a6fc,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/561,,
297243073,MDExOlB1bGxSZXF1ZXN0Mjk3MjQzMDcz,559,closed,0,Bump to uvicorn 0.8.4,9599,"https://github.com/encode/uvicorn/commits/0.8.4
Query strings will now be included in log files: https://github.com/encode/uvicorn/pull/384",2019-07-12T22:30:29Z,2019-07-13T22:34:58Z,2019-07-13T22:34:58Z,2019-07-13T22:34:58Z,d224ee2c98ac39c2c6e21a0ac0c62e5c3e1ccd11,,,0,029e3d53634cc38690d5b56427a3c87851a61b09,f2006cca80040871439055ae6ccbc14e589bdf4b,OWNER,107914493,https://github.com/simonw/datasette/pull/559,,
296735320,MDExOlB1bGxSZXF1ZXN0Mjk2NzM1MzIw,557,closed,0,Get tests running on Windows using Travis CI,9599,Refs #511,2019-07-11T16:36:57Z,2021-07-10T23:39:48Z,2021-07-10T23:39:48Z,,cddb9a9fecfa25147d80df05f1a6d6e1686ca30d,,,0,47b5ab43be87217c4e40ad93b8aa2e9639fa371f,f2006cca80040871439055ae6ccbc14e589bdf4b,OWNER,107914493,https://github.com/simonw/datasette/pull/557,,
295748268,MDExOlB1bGxSZXF1ZXN0Mjk1NzQ4MjY4,556,closed,0,Add support for running datasette as a module,3243482,"This PR allows running datasette using `python -m datasette` command in addition to just running the executable.
This function is quite useful when debugging a plugin in a project because IDEs like PyCharm can easily start a debug session when datasette is run as a module in contrast to trying to attach a debugger to a running process.
![image](https://user-images.githubusercontent.com/3243482/60890448-fc4ede80-a263-11e9-8b42-d2a3db8d1a59.png)
",2019-07-09T13:13:30Z,2019-07-11T16:07:45Z,2019-07-11T16:07:44Z,2019-07-11T16:07:44Z,9ca860e54fe480d0a365c0c1d8d085926d12be1e,,,0,056a7eac9480cb814d9c453b983e6b2b831e0ca1,81fa8b6cdc5457b42a224779e5291952314e8d20,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/556,,
295711504,MDExOlB1bGxSZXF1ZXN0Mjk1NzExNTA0,554,closed,0,Fix static mounts using relative paths and prevent traversal exploits,3243482,"While debugging why my static mounts using a relative path (`--static mystatic:rel/path/to/dir`) not working, I noticed that the requests fail no matter what, returning 404 errors.
The reason is that datasette tries to prevent traversal exploits by checking if the path is relative to its registered directory. This check fails when the mount is a relative directory, because `/abs/dir/file` obviously not under `dir/file`.
https://github.com/simonw/datasette/blob/81fa8b6cdc5457b42a224779e5291952314e8d20/datasette/utils/asgi.py#L303-L306
This also has the consequence of returning any requested file, because when `/abs/dir/../../evil.file` resolves `aiofiles` happily returns it to the client after it resolves the path itself. The solution is to make sure we're checking relativity of paths after they're fully resolved.
I've implemented the mentioned changes and also updated the tests.",2019-07-09T11:32:02Z,2019-07-11T16:29:26Z,2019-07-11T16:13:19Z,2019-07-11T16:13:19Z,74ecf8a7cc45cabf369e510c7214f5ed85c8c6d8,,,0,fa7ddea3ea6c9378bee7d5f5c93fe05d735a0afb,81fa8b6cdc5457b42a224779e5291952314e8d20,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/554,,
295127213,MDExOlB1bGxSZXF1ZXN0Mjk1MTI3MjEz,546,open,0,Facet by delimiter,9599,Refs #510,2019-07-07T20:06:05Z,2019-11-18T23:46:01Z,,,68a6fb1a576a747b868771d00a10753f35aaa0cf,,,0,47ac6c6e46da16716d295d7cda8f79cd0663ca5e,a9909c29ccac771c23c2ef22b89d10697b5256b9,OWNER,107914493,https://github.com/simonw/datasette/pull/546,,
295065796,MDExOlB1bGxSZXF1ZXN0Mjk1MDY1Nzk2,544,closed,0,--plugin-secret option,9599,"Refs #543
- [x] Zeit Now v1 support
- [x] Solve escaping of ENV in Dockerfile
- [x] Heroku support
- [x] Unit tests
- [x] Cloud Run support
- [x] Documentation
",2019-07-06T22:18:20Z,2019-07-08T02:06:31Z,2019-07-08T02:06:31Z,2019-07-08T02:06:31Z,973f8f139df6ad425354711052cfc2256de2e522,,4471010,0,ccf80604e931fba1893b5bab11de386fed82009e,fcfcae21e67cc15090942b1d2a47b5f016279337,OWNER,107914493,https://github.com/simonw/datasette/pull/544,,
294992578,MDExOlB1bGxSZXF1ZXN0Mjk0OTkyNTc4,542,closed,0,extra_template_vars plugin hook,9599,Refs #541,2019-07-05T22:19:17Z,2019-07-06T00:05:57Z,2019-07-06T00:05:56Z,2019-07-06T00:05:56Z,fcfcae21e67cc15090942b1d2a47b5f016279337,,,0,e81c7abb40c8ecf8d9d23cbcdde045e0a3b4ab14,a18e0964ecd04593f227616538a80dee08768057,OWNER,107914493,https://github.com/simonw/datasette/pull/542,,
294400446,MDExOlB1bGxSZXF1ZXN0Mjk0NDAwNDQ2,539,closed,0,Secret plugin configuration options,9599,Refs #538 ,2019-07-04T03:21:20Z,2019-07-04T05:36:45Z,2019-07-04T05:36:45Z,2019-07-04T05:36:45Z,a2d45931935f6bb73605a94afedf9e78308c95d6,,,0,fd6164b03ebe450a9a00df2e5be2dc7bbfbd9a3f,f0d32da0a9af87bcb15e34e35424f0c0053be83a,OWNER,107914493,https://github.com/simonw/datasette/pull/539,,
293994443,MDExOlB1bGxSZXF1ZXN0MjkzOTk0NDQz,536,closed,0,"Switch to ~= dependencies, closes #532",9599,,2019-07-03T04:12:16Z,2019-07-03T04:32:55Z,2019-07-03T04:32:55Z,2019-07-03T04:32:55Z,f0d32da0a9af87bcb15e34e35424f0c0053be83a,,,0,391d109dc3f9230dc4ee4afd20041e480e90e739,4d2fdafe39159c9a8aa83f7e9bfe768bbbbb56a3,OWNER,107914493,https://github.com/simonw/datasette/pull/536,,
293992382,MDExOlB1bGxSZXF1ZXN0MjkzOTkyMzgy,535,closed,0,"Added asgi_wrapper plugin hook, closes #520",9599,,2019-07-03T03:58:00Z,2019-07-03T04:06:26Z,2019-07-03T04:06:26Z,2019-07-03T04:06:26Z,4d2fdafe39159c9a8aa83f7e9bfe768bbbbb56a3,,,0,93bfa26bfd25a3cc911d637596e364d3474325bd,b9ede4c1898616512b5d204f9c941deff473cbe4,OWNER,107914493,https://github.com/simonw/datasette/pull/535,,
293962405,MDExOlB1bGxSZXF1ZXN0MjkzOTYyNDA1,533,closed,0,"Support cleaner custom templates for rows and tables, closes #521",9599,"- [x] Rename `_rows_and_columns.html` to `_table.html`
- [x] Unit test
- [x] Documentation",2019-07-03T00:40:18Z,2019-07-03T03:23:06Z,2019-07-03T03:23:06Z,2019-07-03T03:23:06Z,b9ede4c1898616512b5d204f9c941deff473cbe4,,,0,1add905532b7bc4f681318b8f22b9b74cca2b2a0,76882830548e16905348ee75acb0044cb8e1fd20,OWNER,107914493,https://github.com/simonw/datasette/pull/533,,
291534596,MDExOlB1bGxSZXF1ZXN0MjkxNTM0NTk2,529,closed,0,Use keyed rows - fixes #521,1383872,"Supports template syntax like this:
```
{% for row in display_rows %}
{{ row[""First_Name""] }} {{ row[""Last_Name""] }}
...
```",2019-06-25T12:33:48Z,2019-06-25T12:35:07Z,2019-06-25T12:35:07Z,,3be9759418fdfe4a8ae8aec46fc2a937d45332d2,,,0,312e3394bd9f3eaef606fbe37eb409ec7462baaf,9e97b725f11be3f4dca077fe5569078a62ec2761,NONE,107914493,https://github.com/simonw/datasette/pull/529,,
290971295,MDExOlB1bGxSZXF1ZXN0MjkwOTcxMjk1,524,closed,0,"Sort commits using isort, refs #516",9599,Also added a lint unit test to ensure they stay sorted. #516,2019-06-24T05:04:48Z,2023-08-23T01:31:08Z,2023-08-23T01:31:08Z,,4e92ebe00a058e02b2d7543cff60ac2f78aa97c7,,,0,dafae70ee7f74ce79b541a94385172be3ad0de83,cdd24f3eaa207f67d948c1876725b0f84654a623,OWNER,107914493,https://github.com/simonw/datasette/pull/524,,
290897104,MDExOlB1bGxSZXF1ZXN0MjkwODk3MTA0,518,closed,0,Port Datasette from Sanic to ASGI + Uvicorn,9599,"Most of the code here was fleshed out in comments on #272 (Port Datasette to ASGI) - this pull request will track the final pieces:
- [x] Update test harness to more correctly simulate the `raw_path` issue
- [x] Use `raw_path` so table names containing `/` can work correctly
- [x] Bug: JSON not served with correct content-type
- [x] Get ?_trace=1 working again
- [x] Replacement for `@app.listener(""before_server_start"")`
- [x] Bug: `/fixtures/table%2Fwith%2Fslashes.csv?_format=json` downloads as CSV
- [x] Replace Sanic request and response objects with my own classes, so I can remove Sanic dependency
- [x] Final code tidy-up before merging to master",2019-06-23T15:18:42Z,2019-06-24T13:42:50Z,2019-06-24T03:13:09Z,2019-06-24T03:13:09Z,ba8db9679f3bd2454c9e76e7e6c352126848b57a,9599,3268330,0,b794554a26ddc81bd772c4422d80d5ee863e92b0,35429f90894321eda7f2db31b9ea7976f31f73ac,OWNER,107914493,https://github.com/simonw/datasette/pull/518,,
285698310,MDExOlB1bGxSZXF1ZXN0Mjg1Njk4MzEw,501,closed,0,Test against Python 3.8-dev using Travis,9599,,2019-06-06T08:37:53Z,2019-11-11T03:23:29Z,2019-11-11T03:23:29Z,,1aac0cf0ab962060dd5cff19b8b179bb7fa0f00b,,,0,a5defb684fcc734f6325ca08beef9f49c3e7a298,5e8fbf7f6fbc0b63d0479da3806dd9ccd6aaa945,OWNER,107914493,https://github.com/simonw/datasette/pull/501,,
284743794,MDExOlB1bGxSZXF1ZXN0Mjg0NzQzNzk0,500,closed,0,Fix typo in install step: should be install -e,32314,,2019-06-03T21:50:51Z,2019-06-11T18:48:43Z,2019-06-11T18:48:40Z,2019-06-11T18:48:40Z,aa911122feab13f8e65875c98edb00fd3832b7b8,,,0,ff98f44d7f10ff65fc172df9155c77f169ab4c7f,5e8fbf7f6fbc0b63d0479da3806dd9ccd6aaa945,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/500,,
284390197,MDExOlB1bGxSZXF1ZXN0Mjg0MzkwMTk3,497,closed,0,Upgrade pytest to 4.6.1,9599,,2019-06-03T01:45:34Z,2019-06-03T02:06:32Z,2019-06-03T02:06:27Z,2019-06-03T02:06:27Z,5e8fbf7f6fbc0b63d0479da3806dd9ccd6aaa945,,,0,bf2ab0306e6d3ce7524fecf015e2cec7ae45e994,803f750309bf0cd5b7501228c1efcf9a35686d74,OWNER,107914493,https://github.com/simonw/datasette/pull/497,,
280205502,MDExOlB1bGxSZXF1ZXN0MjgwMjA1NTAy,480,closed,0,Split pypi and docker travis tasks,813732,"Resolves #478
This *should* work, but because this is a change that'll only really be testable on a) this repo, b) master branch, this might fail fast if I didn't get the configurations right.
Looking at #478 it should just be as simple as splitting out the docker and pypi processes into separate jobs, but it might end up being more complicated than that, depending on what pre-processes the pypi deployment needs, and how travisci treats deployment steps without scripts in general. ",2019-05-19T23:14:37Z,2019-07-07T20:03:20Z,2019-07-07T20:03:20Z,2019-07-07T20:03:20Z,d95048031edb02bbc9892879507f55a4f29c5459,,4471010,0,8b667898b6c2dd57fa68310c6d3c62d77b68f321,4246e138f9512686413e97878659ef953337e57b,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/480,,
280204276,MDExOlB1bGxSZXF1ZXN0MjgwMjA0Mjc2,479,closed,0,doc typo fix,98555,Fix typo in performance doc page,2019-05-19T22:54:25Z,2019-05-20T16:42:29Z,2019-05-20T16:42:29Z,2019-05-20T16:42:29Z,70d2858067d3c4da0e17c1d39e03de89190e94b6,,,0,708e13ab87f8c8620796c3e8f2b0aa1b2fc26875,e513a80afba30bca9eeebd71c5e6aa6d8a811f33,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/479,,
277524072,MDExOlB1bGxSZXF1ZXN0Mjc3NTI0MDcy,458,closed,0,setup: add tests to package exclusion,7725188,"This PR fixes #456 by adding `tests` to the package exclusion list.
Cheers",2019-05-09T19:47:21Z,2020-07-21T01:14:42Z,2019-05-10T01:54:51Z,2019-05-10T01:54:51Z,9f8d9fe262866ff3463f8e61214dcc6897bd5a9c,,,0,9c65ff1ba8c855e4ade5bc7ae29a69215b3979d0,f825e2012109247fa246e2b938f8174069e574f1,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/458,,
275923066,MDExOlB1bGxSZXF1ZXN0Mjc1OTIzMDY2,452,open,0,SQL builder utility classes,45057,"This adds a straightforward set of classes to aid in the construction of
SQL queries.
My plan for this was to allow plugins to manipulate the
Datasette-generated SQL in a more structured way. I'm not sure that's
going to work, but I feel like this is still a step forward - it
reduces the number of intermediate variables in `TableView.data` which
aids readability, and also factors out a lot of the boring string
concatenation.
There are a fair number of minor structure changes in here too as I've
tried to make the ordering of `TableView.data` a bit more logical. As
far as I can tell, I haven't broken anything...",2019-05-04T13:57:47Z,2019-05-04T14:03:04Z,,,45e7460d78c3f87c01f2e9e142cb7f646b23b156,,,0,c63762280d3bd66ad6ea24933dafe218861efef2,55643430f7ac8d27e99b00e7cf79db741003e811,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/452,,