# commits

sha: 630bdba68a23c0ac453e015518ef0bf41107a952
author_date: 2020-05-01T16:02:55Z
committer_date: 2020-05-01T16:02:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Just pull for dogsheep repos + sqlite-utils and datasette

  I accidentally started pulling everything from the dependent repos as well.

  Commit messages with REFRESH_DB in now trigger a
  rebuild from scratch.


sha: 59f98ecae20f77f22a20349d4897f6543d594ba7
author_date: 2020-03-23T22:14:21Z
committer_date: 2020-03-23T22:14:26Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "More debugging for actions, refs #13"

  This reverts commit aca2823f1987fafd1dfead79a275ce3819168f2a.


sha: 8c9b5558a1549803ac0cb648c78a21767cccce86
author_date: 2019-10-13T05:24:25Z
committer_date: 2019-10-13T05:24:25Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  issue-comments command, closes #7

  Also added --issue option to issues command, for fetching one specific issue.


sha: e7f83e628ba6737fe5a7084ecf76221a2580fe2a
author_date: 2019-09-07T22:43:03Z
committer_date: 2019-09-07T22:43:03Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Initial working version

  * "github-to-sqlite auth" command saves a token to auth.json
  * "github-to-sqlite issues" command only works with --load=


sha: e488c6addd4b647c2e4917b94e3e320cb7df5456
author_date: 2019-11-08T01:17:50Z
committer_date: 2019-11-08T01:17:50Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed workout points import for iOS 13

  Workout lat/lon tracks are now stored in .gpx files.

  Closes #10


sha: c8392df78ee3e1643d18b747a4abf585d84d5d88
author_date: 2019-07-24T06:35:51Z
committer_date: 2019-07-24T06:35:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use less RAM (#8)

  * Call el.clear() for each element
  * Clear root element each time

  Memory profile graphs here: https://github.com/dogsheep/healthkit-to-sqlite/issues/7


sha: 5fa404135a2704fe94dd976bf197472acffded28
author_date: 2019-07-22T02:47:56Z
committer_date: 2019-07-22T02:47:56Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added progress bar, --xml and --silent options

  --xml lets you pass path to an XML file - I used this to add some
  unit tests for the CLI itself.

  --silent means "don't show a progress bar"

  Closes #5


sha: a7f58e96b45edb4b0f91fac13f57283cec9bcebb
author_date: 2020-03-27T22:12:51Z
committer_date: 2020-03-27T22:13:35Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Pagination, progress bar and --since support

  Closes #1
  Refs #2 - still needs README update

  Also upgraded to sqlite-utils 2.x


sha: d3c4ab2848ea606417150f377a82e66ca7887c54
author_date: 2020-03-28T02:28:10Z
committer_date: 2020-03-28T02:28:10Z
raw_author: 9d65422e8ede715e91311c9f3703218f2478bf55
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Don't break if source is missing (#6)

  This broke for very old checkins from 2010 with no source set. Thanks, @mfa!


sha: 0e5b6025c6f9823ff81aa8aae1cbff5c45e57baf
author_date: 2019-08-30T18:16:20Z
committer_date: 2019-08-30T18:19:20Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Can now fetch data from Foursquare API, closes #1

  Also made createdAt field the original unix timestamp
  and added a new created field which is the ISO formatted version.


sha: 06dfb95a5ca5c0682ccad87b6150a2b0db66ade1
author_date: 2019-08-30T11:26:27Z
committer_date: 2019-08-30T11:26:27Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Initial working version

  Only supports loading checkins from a JSON file on disk:

      swarm-to-sqlite swarm.db -f checkins.json


sha: 4b6c8d8c1cc6fefdb566ec8506157133f47c569a
author_date: 2020-04-01T03:44:30Z
committer_date: 2020-04-01T03:44:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Improved --since= for searc, refs #39

  Also fixed bug from the sqlite-utils 2.x upgrade caused
  by checking db[table].exists instead of db[table].exists()


sha: bfcc1233f3f7b3f50b68971102a848adbcd5f53d
author_date: 2020-03-20T20:12:51Z
committer_date: 2020-03-20T20:12:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  user-timeline now takes --sql/--attach/--ids and multiple identifiers

  Refs #35, refs #8. Still needs documentation.


sha: fd196a7f65c3c4721904042ff97ee85c839f6bf3
author_date: 2019-11-09T19:35:09Z
committer_date: 2019-11-09T19:35:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed #29: import command fails on empty files

  By bumping sqlite-utils dependency to get this fix:
  https://github.com/simonw/sqlite-utils/issues/52


sha: 08110bc2b8801d725d65fa834d30b57e473d2241
author_date: 2019-11-08T23:04:17Z
committer_date: 2019-11-08T23:04:17Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added example Twitter developer account application email

  Thanks to Jacob Kaplan-Moss: https://twitter.com/jacobian/status/1192510111719313408


sha: 619f724a722b3f23f4364f67d3164b93e8ba2a70
author_date: 2019-10-17T05:54:36Z
committer_date: 2019-10-17T05:54:36Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  get_profile() now saves user to DB

  This ensures we don't accidentally fail to create a user record
  for the currently authenticated user.


sha: fced2a9b67d2cbdf9817f1eb75f7c28e413c963b
author_date: 2019-10-16T19:12:41Z
committer_date: 2019-10-16T19:12:41Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  --since and --since_id options for user-timeline, closes #19

  Refs #20

  Also added some initial rate limit error handling code.


sha: d22afae39b1390964dace33f43a8f86c222876fe
author_date: 2019-10-11T16:54:25Z
committer_date: 2019-10-11T16:54:25Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Archive tables use _ not -

  Tables with hyphens in the name are harder to query
  because you have to remember to [escape-them].


sha: c1340a15bbd2fced600e5e72626cf42d93b3f789
author_date: 2019-09-04T16:13:21Z
committer_date: 2019-09-04T16:13:21Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added twitter-to-sqlite fetch URL command

  Useful development tool - makes it easy to make authenticated API
  requests on the command-line.

  Also started the Design notes docs


sha: e37f4077c0f1cd09d4102213d4e2a512af471b8d
author_date: 2020-04-27T22:02:02Z
committer_date: 2020-04-27T22:02:28Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Remove 'Serve!' line from serve CLI output

  It wasn't adding anything, and it was confusing when run in
  conjunction with the new config directory mode from #731


sha: b07312c2b3bc7e4a9298c1f291f420bd92b6f842
author_date: 2020-04-03T00:54:27Z
committer_date: 2020-04-03T00:54:27Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  dedent SQL for neighborhood_search fixture

  Makes this page a little prettier:
  https://latest.datasette.io/fixtures/neighborhood_search


sha: 7656fd64d8b6a32ebc34d89c1b8711cc5ea240f7
author_date: 2020-03-25T00:18:43Z
committer_date: 2020-03-25T00:18:43Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  base_url configuration setting, closes #394

  * base_url configuration setting
  * base_url works for static assets as well


sha: dc80e779a2e708b2685fc641df99e6aae9ad6f97
author_date: 2020-03-02T20:01:10Z
committer_date: 2020-03-02T23:34:04Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Handle scope path if it is a string

  I ran into this while running a unit test with httpx.AsyncClient


sha: 3041c6b6412bbe317f8b9afd6529a15954f2c47e
author_date: 2020-02-25T20:19:29Z
committer_date: 2020-02-25T20:19:29Z
raw_author: 0f68d17313c6f4ccbf0c24a3883444b5263f5648
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use inspect-file, if possible, for total row count (#666)

  For large tables, counting the number of rows in the table can take a
  significant amount of time. Instead, where an inspect-file is provided
  for an immutable database, look up the row-count for a plain count(*).

  Thanks, @kevindkeogh


sha: d6335f1f3184683b05131dd12a73ff1115aefba3
author_date: 2020-02-22T02:53:35Z
committer_date: 2020-02-22T02:53:35Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added shapefile-to-sqlite, datasette-mask-columns, datasette-auth-existing-cookies, datasette-auth-existing-cookies

  Refs #679


sha: efa54b439fd0394440c302602b919255047b59c5
author_date: 2020-02-14T01:58:32Z
committer_date: 2020-02-14T01:58:32Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Docs for .render_template(), refs #577

  Also improved parameter documentation for other methods, refs #576


sha: 3ffb8f3b98252531d11897fd431711e9b8045ace
author_date: 2020-02-14T01:25:27Z
committer_date: 2020-02-14T01:27:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  .add_database() and .remove_database() methods, refs #671

  Also made a start on the Datasette class documentation, refs #576


sha: 0091dfe3e5a3db94af8881038d3f1b8312bb857d
author_date: 2020-02-13T06:36:42Z
committer_date: 2020-02-13T06:36:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  More reliable tie-break ordering for facet results

  I was seeing a weird bug where the order of results running tests
  on my laptop was inconsistent, causing pytest failures even though
  the order of tests in Travis CI was fine.

  I think the fix is to explicitly state how facet ordering ties on
  the count should be resolved.


sha: 3c861f363df02a59a67c59036278338e4760d2ed
author_date: 2019-12-29T18:48:13Z
committer_date: 2019-12-29T18:48:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  _search= queries now correctly escaped, fixes #651

  Queries with reserved words or characters according to the SQLite
  FTS5 query language could cause errors.

  Queries are now escaped like so:

      dog cat => "dog" "cat"


sha: df2879ee2a88f94ae590067e019237afc2189e00
author_date: 2019-11-26T02:31:42Z
committer_date: 2019-11-26T02:31:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Better documentation for --static, closes #641

  https://datasette.readthedocs.io/en/stable/custom_templates.html#serving-static-files


sha: 7f89928062b1a1fdb2625a946f7cd5161e597401
author_date: 2019-11-12T05:33:51Z
committer_date: 2019-11-12T05:33:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Removed code that conditionally installs black

  Since we no longer support Python 3.5 we don't need this any more.


sha: cf7776d36fbacefa874cbd6e5fcdc9fff7661203
author_date: 2019-11-12T05:09:11Z
committer_date: 2019-11-12T05:09:11Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Support Python 3.8, stop supporting Python 3.5 (#627)

  * Upgrade to uvicorn 0.10.4
  * Drop support for Python 3.5
  * Bump all dependencies to latest releases
  * Update docs to reflect we no longer support 3.5
  * Removed code that skipped black unit test on 3.5

  Closes #622


sha: 1c063fae9dba70f70244db010d55a18846640f07
author_date: 2019-11-11T03:45:34Z
committer_date: 2019-11-11T03:45:34Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Test against Python 3.8 in Travis (#623)

  * Test against Python 3.8 in Travis
  * Avoid current_task warnings in Python 3.8


sha: 10b9d85edaaf198879344aa1c498000cfb27dff8
author_date: 2019-11-09T02:15:13Z
committer_date: 2019-11-09T02:15:13Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  datasette-csvs on Glitch now uses sqlite-utils

  It previously used csvs-to-sqlite but that had heavy dependencies.

  See https://support.glitch.com/t/can-you-upgrade-python-to-latest-version/7980/33


sha: ee330222f4c3ee66c2fe41ebc76fed56b9cb9a00
author_date: 2019-11-04T02:39:55Z
committer_date: 2019-11-04T02:39:55Z
raw_author: b90d9715d7c0881515e9d6aa98923ed89d445945
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Offer to format readonly SQL (#602)

  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.

  Thanks, @rixx!


sha: af2e6a5cf186a7200d76cb67ac30fa59cc24d84e
author_date: 2019-10-14T03:46:12Z
committer_date: 2019-10-14T03:46:12Z
raw_author: b90d9715d7c0881515e9d6aa98923ed89d445945
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Button to format SQL, closes #136

  SQL code will be formatted on page load, and can additionally
  be formatted by clicking the "Format SQL" button.

  Thanks, @rixx!


sha: 2dc5c8dc259a0606162673d394ba8cc1c6f54428
author_date: 2019-09-03T00:32:27Z
committer_date: 2019-09-03T00:32:27Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  detect_fts now works with alternative table escaping (#571)

  Fixes #570. See also https://github.com/simonw/sqlite-utils/pull/57


sha: d224ee2c98ac39c2c6e21a0ac0c62e5c3e1ccd11
author_date: 2019-07-13T22:34:57Z
committer_date: 2019-07-13T22:34:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump to uvicorn 0.8.4 (#559)

  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


sha: 74ecf8a7cc45cabf369e510c7214f5ed85c8c6d8
author_date: 2019-07-11T16:13:19Z
committer_date: 2019-07-11T16:13:19Z
raw_author: 3684ad6084bc36bc5a059f0d6eb929bcf9854536
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fix static mounts using relative paths and prevent traversal exploits (#554)

  Thanks, @abdusco! Closes #555


sha: 973f8f139df6ad425354711052cfc2256de2e522
author_date: 2019-07-08T02:06:31Z
committer_date: 2019-07-08T02:06:31Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  --plugin-secret option for datasette publish

  Closes #543

  Also added new --show-files option to publish now and publish cloudrun - handy for debugging.


sha: f80ff9b07b5ecdfeca4aa81f5728812a22bfb019
author_date: 2019-07-07T20:16:48Z
committer_date: 2019-07-07T20:16:48Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  min-height on .hd

  Now it should be the same size on the homepage as it is on pages with breadcrumbs


sha: fcfcae21e67cc15090942b1d2a47b5f016279337
author_date: 2019-07-06T00:05:56Z
committer_date: 2019-07-06T00:05:56Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  extra_template_vars plugin hook (#542)

  * extra_template_vars plugin hook

  Closes #541

  * Workaround for cwd bug

  Based on https://github.com/pytest-dev/pytest/issues/1235#issuecomment-175295691


sha: f0d32da0a9af87bcb15e34e35424f0c0053be83a
author_date: 2019-07-03T04:32:55Z
committer_date: 2019-07-03T04:32:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Switch to ~= dependencies, closes #532 (#536)

  * Switch to ~= dependencies, closes #532
  * Bump click and click-default-group
  * imp. is deprecated, use types.ModuleType instead - thanks https://stackoverflow.com/a/32175781
  * Upgrade to pytest 5


sha: a5591236c46f507b9e46b1b52e51d5f46ffd6913
author_date: 2019-06-24T03:23:07Z
committer_date: 2019-06-24T03:23:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Install test dependencies so deploy can work

  python tests/fixtures.py needs asgiref or it fails with an error


sha: ba8db9679f3bd2454c9e76e7e6c352126848b57a
author_date: 2019-06-24T03:13:09Z
committer_date: 2019-06-24T03:13:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Port Datasette from Sanic to ASGI + Uvicorn (#518)

  Datasette now uses ASGI internally, and no longer depends on Sanic.

  It now uses Uvicorn as the underlying HTTP server.

  This was thirteen months in the making... for full details see the issue:

  https://github.com/simonw/datasette/issues/272

  And for a full sequence of commits plus commentary, see the pull request:

  https://github.com/simonw/datasette/pull/518


sha: 35429f90894321eda7f2db31b9ea7976f31f73ac
author_date: 2019-06-19T00:22:26Z
committer_date: 2019-06-19T00:23:27Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "New encode/decode_path_component functions"

  Refs #272

  This reverts commit 9fdb47ca952b93b7b60adddb965ea6642b1ff523.

  Now that ASGI supports raw_path we don't need our own encoding scheme!


sha: d4df640d187d01a0ee81c238082a690bbefd0800
author_date: 2019-06-15T19:41:34Z
committer_date: 2019-06-15T19:41:34Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Refactored view class hierarchy, refs #272

  See https://github.com/simonw/datasette/issues/272#issuecomment-502393107


sha: edb36629e7356f70f42b9d37fea5dfe9cc3c364a
author_date: 2019-05-27T18:41:44Z
committer_date: 2019-05-27T18:41:44Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Database.get_outbound_foreign_keys() refactor

  Following this, the only module that ever makes calls to the low-level
  execute_against_connection_in_thread() method is datasette/database.py


sha: 20f98c3e20902c62db610e43155c476508ead4a4
author_date: 2019-05-27T18:27:42Z
committer_date: 2019-05-27T18:27:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Databse.primary_keys(table) / fts_table(table) refactor, closes #488

  Also cleaned up some unused imports spotted by the linter.


sha: 172da009d890aa029cff7138b4dcfd4f60948525
author_date: 2019-05-23T05:44:34Z
committer_date: 2019-05-23T05:45:12Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added ?_through= table argument, closes #355

  Also added much more interesting many-to-many fixtures - roadside attractions!


sha: 7d8573d6724a13d5003e48d75682323ee1e55692
author_date: 2019-05-19T18:06:51Z
committer_date: 2019-05-19T18:06:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Rename "datasette publish now" to "datasette publish nowv1"

  Also added an alias so "datasette publish now" continues to work.

  Closes #472


sha: 623c552ff4e2eda9cc710063a7cc674aa49264f4
author_date: 2019-05-16T04:57:26Z
committer_date: 2019-05-16T04:57:36Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  'Try Datasette without installing anything using Glitch'

  Also new 'Play with a live demo' section, both at the top of the Getting
  Started documentation page.

  https://datasette.readthedocs.io/en/latest/getting_started.html

  Closes #464


sha: 2ad9d15cd6901654e6801e2faa29e6fc08bae5fa
author_date: 2019-05-16T03:55:28Z
committer_date: 2019-05-16T03:55:28Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Table counts now handles SQL Logic Error too

  I tried running Datasette against 22 database files at once and ran into
  a weird error where the table counts broke with an SQL Logic Error
  exception. Easy fix: catch that exception too and treat it the same as a
  regular Interrupted error.


sha: 689cf9c139f57d6a3fd61e0c62fe66c793f234ae
author_date: 2019-05-16T03:02:33Z
committer_date: 2019-05-16T03:02:33Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Index page only shows row counts for smaller databases

  The index page now only shows row counts for immutable databases OR for
  databases with less than 30 tables provided it could get a count for
  each of those tables in less than 10ms.

  Closes #467, Refs #460


sha: 79303163b249829182f2e8d8c2d45e4526aa174f
author_date: 2019-05-16T00:40:10Z
committer_date: 2019-05-16T00:40:10Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Row count fix + sort index page databases alphabetically

  Sorting alphabetically should fix a test failure in Python 3.5

  Refs #460


sha: 5d6b2c30f15c36bcf49906acda7f15ec6232c984
author_date: 2019-05-16T00:28:07Z
committer_date: 2019-05-16T00:28:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Include views on homepage, fix table counts

  If we have less than 5 tables we now also show one or more views in the
  summary on the homepage.

  Also corrected the logic for the row counts - we now count hidden and
  visible tables separately.

  Closes #373, Refs #460


sha: e04511410f57e88c806455b9182a853bf07122a2
author_date: 2019-05-14T15:46:57Z
committer_date: 2019-05-14T15:46:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Don't show hidden tables on index page, closes #455

  Refs #460. Also bulked out HTML index page unit tests.


sha: 24bf79d2f01f373eafcb41eaa1279a13711eff25
author_date: 2019-05-11T23:22:55Z
committer_date: 2019-05-11T23:22:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Run sanity checks, not .inspect(), on startup

  Also fixes tests that did NOT like a call to run_until_complete in the Datasette() constructor.


sha: da0b3ce2b76227f1cd0cfdd3df361712c17ddcd0
author_date: 2019-05-11T22:55:30Z
committer_date: 2019-05-11T22:55:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New run_sanity_checks mechanism, for SpatiLite

  Moved VirtualSpatialIndex check into a new mechanism that should allow
  us to add further sanity checks in the future.

  To test this I've had to commit a binary sample SpatiaLite database to
  the repository. I included a build script for creating that database.

  Closes #466


sha: c0d1b4c32297453adaa4c159edee9be0a9617f2b
author_date: 2019-05-11T21:36:57Z
committer_date: 2019-05-11T21:36:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  "datasette inspect foo.db" now just calculates table counts

  Refs #462

  * inspect command now just outputs table counts
  * test_inspect.py is now only tests for that CLI command
  * Updated some relevant documentation
  * Removed docs for /-/inspect since that is about to change


sha: 09ef305c687399384fe38487c075e8669682deb4
author_date: 2019-05-11T20:20:36Z
committer_date: 2019-05-11T20:20:36Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed "datasette publish now ... --alias=x"

  The --alias argument can now be passed more than once.

  Also updated our Travis configuration to use this.

  Fixes #459


sha: a0d444837f6ce3fdaf6b0664605f74dd4a7f8215
author_date: 2019-05-11T19:06:22Z
committer_date: 2019-05-11T19:06:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Finished implementation of ?_trace=1 debug tool

  I redesigned the JSON output and added a handy "traceback" key showing
  three relevant lines of the current traceback for each logged query.

  Closes #435


sha: e7b31ae8c1a28cab9db8e165b3f21407c2e581e6
author_date: 2019-05-11T17:06:23Z
committer_date: 2019-05-11T17:06:23Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use now --target production instead of now alias

  Fix for this error:

      $ now alias --token=$NOW_TOKEN
      > WARN! The `now alias` command (no arguments) was deprecated in favour of `now --target production`.
      > Error! Couldn't find a deployment to alias. Please provide one as an argument.
      The command "now alias --token=$NOW_TOKEN" exited with 1.

  https://travis-ci.org/simonw/datasette/jobs/530597261


sha: 2db977d8f30e0eb8b7cda1481a4a8852b414915d
author_date: 2019-05-06T02:50:33Z
committer_date: 2019-05-09T16:44:21Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  tests/fixtures.py can now write out plugins too

  This command:

      python tests/fixtures.py \
          fixtures.db \
          metadata.json \
          fixtures-plugins/

  Will now create the fixtures.db and metadata.json files, AND create
  a folder called fixtures-plugins/ containing two test plugins.

  You can then run it like this:

      datasette fixtures.db \
          -m metadata.json --plugins-dir=fixtures-plugins/


sha: 9fdb47ca952b93b7b60adddb965ea6642b1ff523
author_date: 2019-05-05T22:36:04Z
committer_date: 2019-05-09T16:44:21Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New encode/decode_path_component functions

  ASGI cannot differentiate between / and %2F in a URL, so we need an
  alternative scheme for encoding the names of tables that contain special
  characters such as /

  For background, see
      https://github.com/django/asgiref/issues/51#issuecomment-450603464

  Some examples:

      "table/and/slashes" => "tableU+002FandU+002Fslashes"
      "~table" => "U+007Etable"
      "+bobcats!" => "U+002Bbobcats!"
      "U+007Etable" => "UU+002B007Etable"


sha: bfa2ae0d16d39bb82dbe4da4f3fdc3c7f6257418
author_date: 2019-05-09T00:02:47Z
committer_date: 2019-05-09T00:02:47Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Promote Glitch instead of Datasette Publish

  Datasette Publish is currently broken due to Zeit API and platform changes.


sha: 35d6ee2790e41e96f243c1ff58be0c9c0519a8ce
author_date: 2019-05-04T02:15:14Z
committer_date: 2019-05-04T02:15:14Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Apply black to everything, enforce via unit tests (#449)

  I've run the black code formatting tool against everything:

      black tests datasette setup.py

  I also added a new unit test, in tests/test_black.py, which will fail if the code does not
  conform to black's exacting standards.

  This unit test only runs on Python 3.6 or higher, because black itself doesn't run on 3.5.


sha: 66c87cee0c7344c7877373c60b180c766c206101
author_date: 2019-05-03T21:11:19Z
committer_date: 2019-05-03T21:11:19Z
raw_author: 93b11f15fd4dc15002baf3d9160dc6eb928bd883
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Mark codemirror files as vendored (#367)

  This should stop GitHub from incorrectly stating that Datasette is 46% JavaScript.


sha: d555baf508de71a5e3dc9a9aed2c13f6f202956d
author_date: 2019-05-03T16:44:48Z
committer_date: 2019-05-03T16:44:48Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Suppress rendering of binary data - thanks @russss (#442)

  Binary columns (including spatialite geographies) get shown as ugly
  binary strings in the HTML by default. Nobody wants to see that mess.

  Show the size of the column in bytes instead. If you want to decode
  the binary data, you can use a plugin to do it.


sha: 75a21fc2a136ccfc9da7bbf521cf288e63c9707f
author_date: 2019-05-03T13:59:01Z
committer_date: 2019-05-03T13:59:01Z
raw_author: 8ff51bbea01fdafe1fb3502111343b563f7d5a1b
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  datasette publish cloudrun (#434) - thanks, @rprimet

  New publish subcommand that publishes using the
  new Google Cloud Run platform.

      datasette publish cloudrun database.db


sha: bf229c9bd88179c8ec16bd65fd4fb28ab4241c2e
author_date: 2019-05-03T13:12:19Z
committer_date: 2019-05-03T13:12:19Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Pass view_name to extra_body_script hook (#443)

  At the moment it's not easy to tell whether the hook is being called
  in (for example) the row or table view, as in both cases the
  `database` and `table` parameters are provided.

  This passes the `view_name` added in #441 to the `extra_body_script`
  hook.


sha: 470cf0b05d4fda0d2563f81c7e32af13fe346ccc
author_date: 2019-05-03T13:11:27Z
committer_date: 2019-05-03T13:11:27Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Add a max-line-length setting for flake8 (#444)

  This stops my automatic editor linting from flagging lines which are too
  long. It's been lingering in my checkout for ages.

  160 is an arbitrary large number - we could alter it if we have any
  opinions (but I find the line length limit to be my least favourite part
  of PEP8).


sha: ea66c45df96479ef66a89caa71fff1a97a862646
author_date: 2019-05-03T00:11:26Z
committer_date: 2019-05-03T00:11:26Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Extract facet code out into a new plugin hook, closes #427 (#445)

  Datasette previously only supported one type of faceting: exact column value counting.

  With this change, faceting logic is extracted out into one or more separate classes which can implement other patterns of faceting - this is discussed in #427, but potential upcoming facet types include facet-by-date, facet-by-JSON-array, facet-by-many-2-many and more.

  A new plugin hook, register_facet_classes, can be used by plugins to add in additional facet classes.

  Each class must implement two methods: suggest(), which scans columns in the table to decide if they might be worth suggesting for faceting, and facet_results(), which executes the facet operation and returns results ready to be displayed in the UI.


sha: efc93b8ab5a21e3802f75f08d5e41409f5684b5d
author_date: 2019-05-02T05:29:47Z
committer_date: 2019-05-02T05:29:47Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Entirely removed table_rows_count table property

  We were not displaying this anywhere, and it is now expensive to calculate.

  Refs #419, #420


sha: f553a670216960043ec7e62ff35d42db78903ff0
author_date: 2019-05-02T05:09:03Z
committer_date: 2019-05-02T05:09:03Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Don't load setuptools plugins during test runs

  Uses pattern from https://docs.pytest.org/en/latest/example/simple.html#detect-if-running-from-within-a-pytest-run

  Closes #438


sha: e7151ccccf4a0d10e1fcf3832e18c5199c16dea0
author_date: 2019-05-02T00:39:39Z
committer_date: 2019-05-02T00:39:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Index page no longer uses inspect data - refs #420

  Also introduced a mechanism whereby table counts are calculated against a time limit
  but immutable databases have their table counts calculated on server startup.


sha: cf406c075433882b656e340870adf7757976fa4c
author_date: 2019-05-01T23:01:56Z
committer_date: 2019-05-01T23:01:56Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New plugin hook: register_output_renderer hook (#441)

  Thanks @russss!

  * Add register_output_renderer hook

  This changeset refactors out the JSON renderer and then adds a hook and
  dispatcher system to allow custom output renderers to be registered.

  The CSV output renderer is untouched because supporting streaming
  renderers through this system would be significantly more complex, and
  probably not worthwhile.

  We can't simply allow hooks to be called at request time because we need
  a list of supported file extensions when the request is being routed in
  order to resolve ambiguous database/table names. So, renderers need to
  be registered at startup.

  I've tried to make this API independent of Sanic's request/response
  objects so that this can remain stable during the switch to ASGI. I'm
  using dictionaries to keep it simple and to make adding additional
  options in the future easy.

  Fixes #440


sha: bac4e01f40ae7bd19d1eab1fb9349452c18de8f5
author_date: 2019-04-21T19:02:24Z
committer_date: 2019-04-21T19:02:24Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Ensure sqlite_timelimit correctly clears handler

  If an error occurred inside the block the progress handler (used to
  enforce a time limit) was not being correctly cleared, resulting in
  timeout errors potentially occurring during subsequent SQL queries.

  The fix is described here: https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager


sha: 2b11948d7c5f4548325c941d92eaf428852a19d8
author_date: 2019-04-20T17:50:45Z
committer_date: 2019-04-20T17:50:45Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New ConnectedDatabase.mtime_ns property

  I plan to use this for some clever table count caching tricks


sha: 2c19a27d15a913e5f3dd443f04067169a6f24634
author_date: 2019-04-15T22:41:11Z
committer_date: 2019-04-15T22:41:11Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Documentation for filters, plus new documentation unit test

  https://simonwillison.net/2018/Jul/28/documentation-unit-tests/


sha: 6da567dda953c7ac0e5500f17d8e220467a3499e
author_date: 2019-04-15T21:51:20Z
committer_date: 2019-04-15T21:51:20Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Extract and refactor filters into filters.py

  This will help in implementing __in as a filter, refs #433


sha: 78e45ead4d771007c57b307edf8fc920101f8733
author_date: 2019-04-10T15:17:19Z
committer_date: 2019-04-10T15:27:52Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New ?tags__arraycontains=tag lookup against JSON fields

  Part one of supporting facet-by-JSON-array, refs #359


sha: 3a208a41d4dce35b97eca8b25f37055c3fda5aed
author_date: 2019-04-07T03:47:10Z
committer_date: 2019-04-07T03:47:10Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  TableView.data() no longer uses .inspect, refs #420

  BUT... it does a count(*) against the whole table which may take unbounded time.

  Fixing this is part of #422


sha: 82fec6048148b58748040a7e2caa163387e982a3
author_date: 2019-03-17T23:36:35Z
committer_date: 2019-03-17T23:36:35Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fix for TypeError

      File "../datasette/app.py", line 138, in __init__
        self.files = files + immutables
      TypeError: can only concatenate tuple (not "list") to tuple


sha: 6f6d0ff2b41f1cacaf42287b1b230b646bcba9ee
author_date: 2019-03-17T22:55:04Z
committer_date: 2019-03-17T22:55:04Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  URL hashing is now off by default - closes #418

  Prior to this commit Datasette would calculate the content hash of every
  database and redirect to a URL containing that hash, like so:

      https://v0-27.datasette.io/fixtures => https://v0-27.datasette.io/fixtures-dd88475

  This assumed that all databases were opened in immutable mode and were not
  expected to change.

  This will be changing as a result of #419 - so this commit takes the first step
  in implementing that change by changing this default behaviour. Datasette will
  now only redirect hash-free URLs under two circumstances:

  * The new `hash_urls` config option is set to true (it defaults to false).
  * The user passes `?_hash=1` in the URL


sha: 9e8c36793bfbb17c2f67371cc7f9aa8b9202fdc4
author_date: 2019-03-15T05:06:45Z
committer_date: 2019-03-15T05:06:45Z
raw_author: 41e868c44ebf155cd4e69182c407f1d278d635ce
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Update spatialite.rst (#413)

  a line of sql added to create the idx_<table_name> in the python recipe


sha: 9743e1d91b5f0a2b3c1c0bd6ffce8739341f43c4
author_date: 2019-03-14T23:42:38Z
committer_date: 2019-03-15T03:54:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Support for :memory: databases

  If you start Datasette with no files, it will connect to :memory: instead.

  When starting it with files you can add --memory to also get a :memory: database.


sha: 1f91065b20cbc691f464bccfd8eef7d1ce4b14a8
author_date: 2019-02-08T16:06:10Z
committer_date: 2019-02-08T16:06:10Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Added socrata2sql to the ecosystem page

  A fantastic new tool created by @achavez at the Dallas Morning News.


sha: 195a5b36349d0d24a6bbb758cebb719b6de303b6
author_date: 2019-02-06T04:15:46Z
committer_date: 2019-02-06T04:15:46Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Heroku --include-vcs-ignore (#407)

  Means `datasette publish heroku` can work under Travis, unlike this failure:

  https://travis-ci.org/simonw/fivethirtyeight-datasette/builds/488047550

  ```
  2.25s$ datasette publish heroku fivethirtyeight.db -m metadata.json -n fivethirtyeight-datasette
  tar: unrecognized option '--exclude-vcs-ignores'
  Try 'tar --help' or 'tar --usage' for more information.
   ▸    Command failed: tar cz -C /tmp/tmpuaxm7i8f --exclude-vcs-ignores --exclude
   ▸    .git --exclude .gitmodules . >
   ▸    /tmp/f49440e0-1bf3-4d3f-9eb0-fbc2967d1fd4.tar.gz
   ▸    tar: unrecognized option '--exclude-vcs-ignores'
   ▸    Try 'tar --help' or 'tar --usage' for more information.
   ▸    
  The command "datasette publish heroku fivethirtyeight.db -m metadata.json -n fivethirtyeight-datasette" exited with 0.
  ```

  The fix for that issue is to call the heroku command like this:

      heroku builds:create -a app_name --include-vcs-ignore


sha: b944bcd0f0e0914a9f308945faffed88ad6c3b4c
author_date: 2019-02-01T03:36:07Z
committer_date: 2019-02-01T03:36:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added documentation on the Datasette Ecosystem

  https://datasette.readthedocs.io/en/latest/ecosystem.html


sha: d95b46b09bf53530b212cc17202a242daa62fd64
author_date: 2019-01-02T05:14:46Z
committer_date: 2019-01-02T05:15:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  datasette publish now --alias option

  You can now use --alias to attempt to alias after you deploy.

  Also updated now.json to use version: 1


sha: 3de8fac1d322cbab6c8c55899e0e8511b36337d0
author_date: 2018-11-20T17:16:31Z
committer_date: 2018-11-20T17:46:47Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New make_app_client() pattern

  Because next version of pytest discourages calling fixture factories as functions


sha: d0393e821e5914a7c1d659eaf0a5d612a1aa8e01
author_date: 2018-11-05T06:45:38Z
committer_date: 2018-11-05T06:45:38Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Travis to use Python 3.7-dev for a little longer

  3.7 produces a 403 forbidden error: https://travis-ci.org/simonw/datasette/jobs/450716231#L6


sha: 7dda8898c12720f1494cfd4761399e95211520a1
author_date: 2018-10-27T17:12:19Z
committer_date: 2018-10-27T17:13:08Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Started contributing docs: setting up a dev environment

  https://datasette.readthedocs.io/en/latest/contributing.html


sha: b7257a21bf3dfa7353980f343c83a616da44daa7
author_date: 2018-08-28T16:55:30Z
committer_date: 2018-08-28T16:55:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fix json.loads in Python 3.5

  3.5 requires a str, not a bytes

  https://travis-ci.org/simonw/datasette/jobs/421660555


sha: b7c6a9f9bd2bbd06ef64fef4a1fcc86fa0039039
author_date: 2018-08-28T10:56:57Z
committer_date: 2018-08-28T10:56:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  extra_css_urls(template, database, table, datasette)

  The extra_css_urls and extra_js_urls hooks now take additional optional
  parameters.

  Also refactored them out of the Datasette class and into RenderMixin.

  Plus improved plugin documentation to explicitly list parameters.


sha: 2e836f72d9a4e61341d75ea48e88314e0d006b65
author_date: 2018-08-28T10:03:01Z
committer_date: 2018-08-28T10:03:01Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  render_cell(value, column, table, database, datasette)

  The render_cell plugin hook previously was only passed value.

  It is now passed (value, column, table, database, datasette).


sha: 4ac913224061f2dc4f673efab1a5ac6bc748854f
author_date: 2018-08-05T00:14:56Z
committer_date: 2018-08-05T00:14:56Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  render_cell(value) plugin hook, closes #352

  New plugin hook for customizing the way cells values are rendered in HTML.

  The first full example of this hook in use is https://github.com/simonw/datasette-json-html


sha: 8128497b7946ab68fff703e207fc7c5b26b6e9c9
author_date: 2018-07-28T04:49:20Z
committer_date: 2018-07-28T04:49:20Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Only run documented_views() fixture once per session

  Speeds up tests, because previously it ran once per view class.


sha: 788a542d3c739da5207db7d1fb91789603cdd336
author_date: 2018-07-28T04:21:42Z
committer_date: 2018-07-28T04:21:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Docs for IndexView, TableView, RowView, closes #299

  Also removed xfail from test_view_classes_are_documented, so any future *View
  classes that are added without documentation will cause the tests to fail.


sha: e8625695a3b7938f37b64dff09c14e47d9428fe5
author_date: 2018-07-28T03:13:26Z
committer_date: 2018-07-28T03:13:26Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  xfail documentation unit tests for view classes, refs #299

  More documentation unit tests. These ones check that every single **View class
  imported into the datasette/app.py module are covered by our documentation.

  Just one problem: they aren't documented yet. So I'm using the xfail pytest
  decorator to mark these tests as allowed-to-fail. When you run the test suite
  you now get a report of how many views still need to be documented, but it
  doesn't fail the tests.

  The output looks something like this:

      $ pytest tests/test_docs.py
      collected 31 items

      tests/test_docs.py ..........................XXXxx.                [100%]

      ============ 26 passed, 2 xfailed, 3 xpassed in 1.06 seconds ============

  Once I have documented all the views I will remove the xfail so any future
  views that are added without documentation will cause a test failure.

  We can detect that a view is documented by looking for ReST label in the docs,
  for example:

      .. _IndexView:

  Some view classes can be used to power multiple URLs - the JsonDataView class
  for example is used to power /-/metadata and /-/config and /-/plugins

  In this case, the second part of the label can indicate the variety of page, e.g:

      .. _JsonDataView_metadata:

  The test will pass as long as there is at least one label that starts with
  _JsonDataView.


sha: 1fb518618c1c246c58daf5085247b430f2aea29f
author_date: 2018-07-26T05:43:01Z
committer_date: 2018-07-26T05:43:01Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  "datasette publish heroku" improvements

  * Fixed bug where --title= didn't work if -m not provided
  * Now using Python 3.6.6 instead of Python 3.6.3


sha: dbbe707841973b50a76d2703003ae2c40e7ad1fd
author_date: 2018-07-26T05:15:59Z
committer_date: 2018-07-26T05:15:59Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  publish_subcommand hook + default plugins mechanism, used for publish heroku/now (#349)

  This change introduces a new plugin hook, publish_subcommand, which can be
  used to implement new subcommands for the "datasette publish" command family.

  I've used this new hook to refactor out the "publish now" and "publish heroku"
  implementations into separate modules. I've also added unit tests for these
  two publishers, mocking the subprocess.call and subprocess.check_output
  functions.

  As part of this, I introduced a mechanism for loading default plugins. These
  are defined in the new "default_plugins" list inside datasette/app.py

  Closes #217 (Plugin support for datasette publish)
  Closes #348 (Unit tests for "datasette publish")
  Refs #14, #59, #102, #103, #146, #236, #347


sha: 74ad3ff4af4ebb499b07c6ce984def7d88fcbbb7
author_date: 2018-07-24T16:00:10Z
committer_date: 2018-07-24T16:01:23Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Ensure --help examples in docs are always up to date, closes #336

  Unit tests now check that docs/*.txt help examples are all up-to-date.

  I ran into a problem here in that the terminal_width needed to be more
  accurately defined - so I replaced update-docs-help.sh with update-docs-
  help.py which hard-codes the terminal width.


sha: 3a46d5e3c4278e74c3694f36995ea134bff800bc
author_date: 2018-07-24T04:48:36Z
committer_date: 2018-07-24T04:48:36Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Removed docker -e flag

  docker -e flag is now deprecated: https://docs.docker.com/engine/deprecated/#-e-and---email-flags-on-docker-login


sha: 2bdab66772dca51b0c729b4e1063610cb2edd890
author_date: 2018-07-24T04:17:57Z
committer_date: 2018-07-24T04:17:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Build and push new tagged releases to Docker Hub

  Based on method described in https://sebest.github.io/post/using-travis-ci-to-build-docker-images/


sha: 6e37f091edec35e2706197489f54fff5d890c63c
author_date: 2018-07-16T02:33:30Z
committer_date: 2018-07-16T02:33:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Support title/description for canned queries, closes #342

  Demo here: https://latest.datasette.io/fixtures/neighborhood_search


sha: 58fec99ab0a31bcf25968f2aa05d37de8139b83c
author_date: 2018-07-14T13:10:49Z
committer_date: 2018-07-14T14:04:42Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Allow app names for `datasette publish heroku`

  Lets you supply the `-n` parameter for Heroku deploys, which also lets
  you update existing Heroku deployments.


sha: 31a5d8fa77be68d4f837f0a80a611675dce49f4b
author_date: 2018-07-12T17:41:20Z
committer_date: 2018-07-12T18:07:37Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Bump aiohttp to fix compatibility with Python 3.7

  Tests failed here: https://travis-ci.org/simonw/datasette/jobs/403223333


sha: aec3ae53237e43b0c268dbf9b58fa265ef38cfe1
author_date: 2018-07-11T02:04:13Z
committer_date: 2018-07-11T02:05:46Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Docs for datasette publish and package, closes #337

  Also introduced a new mechanism for ensuring the --help examples in the
  documentation reflect the current output of the --help commands, via a new
  update-docs-help.sh script. Closes #336


sha: d08faa89872d9ec8d3c8e76d85164ccd84596811
author_date: 2018-06-29T12:52:51Z
committer_date: 2018-07-08T02:58:11Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fix for weird nested exception in RequestTimeout

  I saw this error:

      sanic.exceptions.RequestTimeout: Request Timeout

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "/Users/simonw/Dropbox/Development/datasette/venv/lib/python3.6/site-packages/sanic/handlers.py", line 82, in response
          response = handler(request=request, exception=exception)
        File "/Users/simonw/Dropbox/Development/datasette/datasette/app.py", line 512, in on_exception
          if request.path.split("?")[0].endswith(".json"):
      AttributeError: 'NoneType' object has no attribute 'path'

  Strangely "if request and request.path..." did not work here, because the
  Sanic Request class extends builtins.dict and hence evaluates to False if it
  has no headers.


sha: 47e689a89b3f5f0969595b17d2ec59ea3caffb3b
author_date: 2018-06-24T01:03:46Z
committer_date: 2018-06-24T01:03:46Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Speed up Travis by reusing pip wheel cache across builds (#324)

  * Cache pip wheels between runs in Travis, refs #323
  * Run pytest manually - "python setup.py test" appeared to still download a bunch of stuff: https://travis-ci.org/simonw/datasette/jobs/395306188

  * Use extras_require so pip can install test dependencies: https://github.com/pypa/pip/issues/1197#issuecomment-228939212


sha: aeeb50f61b7b1bf8ccb61448f8b8253db457d350
author_date: 2018-06-21T04:30:13Z
committer_date: 2018-06-21T04:30:13Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Correctly display facets with value of 0 - fixes #318

  Also added comprehensive unit test for facet display HTML.


sha: 398d29c2873ad22a8e779fab12e65bdbf598f823
author_date: 2018-06-18T06:14:48Z
committer_date: 2018-06-18T06:14:48Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Don't link to #export on custom query results

  The advanced CSV export options don't work for custom SQL queries.

  Refs #266


sha: fc3660cfad7668dbce6ead12766e048fc1f78b11
author_date: 2018-06-18T03:21:02Z
committer_date: 2018-06-18T03:21:02Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Streaming mode for downloading all rows as a CSV (#315)

  * table.csv?_stream=1 to download all rows - refs #266

  This option causes Datasette to serve ALL rows in the table, by internally
  following the _next= pagination links and serving everything out as a stream.

  Also added new config option, allow_csv_stream, which can be used to disable
  this feature.

  * New config option max_csv_mb limiting size of CSV export


sha: 6a32684ebba89dfe882e1147b23aa8778479f5d8
author_date: 2018-06-17T22:19:21Z
committer_date: 2018-06-17T22:24:47Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release tagged versions to PyPI and now alias

  When a new tagged version is pushed, this should:

  * bdist_wheel it and release to https://pypi.python.org/pypi/datasette
  * Set an alias of v0-22-1.datasette.io for the deployed demo


sha: f0c17229b7a7914d3da02e087dfd0e25d8321448
author_date: 2018-06-17T21:24:39Z
committer_date: 2018-06-17T21:24:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Deploy latest.datasette.io on commit to master - #313

  If the tests pass in Travis CI, deploy an instance containing Datasette's test
  fixtures to https://latest.datasette.io/

  Also set up an alias of truncated-commit-hash.datasette.io


sha: db1e6bc182d11f333e6addaa1a6be87625a4e12b
author_date: 2018-06-17T20:14:55Z
committer_date: 2018-06-17T21:19:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  --version-note for datasette, datasette publish and datasette package

  This is a relatively obscure new command-line argument that helps solve the
  problem of showing accurate version information in deployed instances of
  Datasette even if they were deployed directly from source code.

  You can pass --version-note to datasette publish and package and it will then
  in turn be passed to datasette when it starts:

      datasette --version-note=hello fixtures.db

  Now if you visit /-/versions.json you will see this:

      {
          "datasette": {
              "note": "hello",
              "version": "0+unknown"
          },
          "python": {
              "full": "3.6.5 (default, Jun  6 2018, 19:19:24) \n[GCC 6.3.0 20170516]",
              "version": "3.6.5"
          },
          ...
      }

  I plan to use this in some Travis CI configuration, refs #313


sha: 538565de3a126a6aa1cdb4b4ba91135507411af0
author_date: 2018-06-17T19:46:52Z
committer_date: 2018-06-17T21:16:08Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  datasette publish now --token=X argument

  Lets you specify the auth token to use when deploying to Now.

  Tokens can be created at https://zeit.co/account/tokens


sha: 6a32df334de1a7e3579879dd7ee073613be9b91b
author_date: 2018-06-17T19:16:04Z
committer_date: 2018-06-17T19:16:04Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Improved fixtures to support publication

  The fixtures database created by our unit tests makes for a good "live" demo
  of Datasette in action.

  I've improved the metadata it ships with to better support this use-case.

  I've also improved the mechanism for writing out fixtures: you can do this:

  	python tests/fixtures.py fixtures.db

  To get just the fixtures database written out... or you can do this:

  	python tests/fixtures.py fixtures.db fixtures.json

  To get metadata which you can then serve like so:

  	datasette fixtures.db -m fixtures.json

  Refs #313


sha: ed631e690b81e34fcaeaba1f16c9166f1c505990
author_date: 2018-06-16T22:18:57Z
committer_date: 2018-06-16T22:18:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  ?_labels= and ?_label=COL to expand foreign keys in JSON/CSV

  These new querystring arguments can be used to request expanded foreign keys
  in both JSON and CSV formats.

  ?_labels=on turns on expansions for ALL foreign key columns

  ?_label=COLUMN1&_label=COLUMN2 can be used to pick specific columns to expand

  e.g. `Street_Tree_List.json?_label=qSpecies&_label=qLegalStatus`

      {
          "rowid": 233,
          "TreeID": 121240,
          "qLegalStatus": {
              "value" 2,
              "label": "Private"
          }
          "qSpecies": {
              "value": 16,
              "label": "Sycamore"
          }
          "qAddress": "91 Commonwealth Ave",
          ...
      }

  The labels option also works for the HTML and CSV views.

  HTML defaults to `?_labels=on`, so if you pass `?_labels=off` you can disable
  foreign key expansion entirely - or you can use `?_label=COLUMN` to request
  just specific columns.

  If you expand labels on CSV you get additional columns in the output:

  `/Street_Tree_List.csv?_label=qLegalStatus`

      rowid,TreeID,qLegalStatus,qLegalStatus_label...
      1,141565,1,Permitted Site...
      2,232565,2,Undocumented...

  I also refactored the existing foreign key expansion code.

  Closes #233. Refs #266.


sha: 0c22fa8f09e9fce7434d5fc83bcfb73c25795205
author_date: 2018-06-16T17:33:17Z
committer_date: 2018-06-16T17:33:17Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Cleaned up view_definition/table_definition code in table view

  Also moved those out of standard JSON into just the HTML template context


sha: d0a578c0fc07b9d9208cd9de981bdf7385a26c49
author_date: 2018-06-16T16:28:55Z
committer_date: 2018-06-16T16:28:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Switch back from python:3.6-slim-stretch to python:3.6

  Turns out slim-stretch doesn't include gcc which means it can't build various
  Sanic dependencies. So `datasette publish now ...` was broken.

  Fixes #310


sha: 5bda4a477c52b6d1cd7d0ca25382dbb20bda40ea
author_date: 2018-06-15T07:01:48Z
committer_date: 2018-06-15T07:01:48Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed CSV tests - Python 3.6.5 and 3.6.3 apparently differ

  The test used to expect CSV to come back like this:

  	hello
  	world
  	""

  With the final blank value encoded in quotes.

  Judging by Travis failures, this behaviour changed between Python 3.6.3 and
  3.6.5:

  	https://travis-ci.org/simonw/datasette/jobs/392586661


sha: 3a79ad98eafb9da527a3b9d9d8fbeb81936b02e7
author_date: 2018-06-15T06:51:23Z
committer_date: 2018-06-15T06:51:23Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Basic CSV export, refs #266

  Tables and custom SQL query results can now be exported as CSV.

  The easiest way to do this is to use the .csv extension, e.g.

  	/test_tables/facet_cities.csv

  By default this is served as Content-Type: text/plain so you can see it in
  your browser. If you want to download the file (using text/csv and with an
  appropriate Content-Disposition: attachment header) you can do so like this:

  	/test_tables/facet_cities.csv?_dl=1

  We link to the CSV and downloadable CSV URLs from the table and query pages.

  The links use ?_size=max and so by default will return 1,000 rows.

  Also fixes #303 - table names ending in .json or .csv are now detected and
  URLs are generated that look like this instead:

  	/test_tables/table%2Fwith%2Fslashes.csv?_format=csv

  The ?_format= option is available for everything else too, but we link to the
  .csv / .json versions in most cases because they are aesthetically pleasing.


sha: 864328e074d771a9b50fb1b01392541d7045fbb5
author_date: 2018-06-05T03:53:12Z
committer_date: 2018-06-05T03:53:12Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Test client wrapper removing need for gather_request - refs #272

  As part of decoupling from Sanic, this will make it easier to run tests
  against ASGI instead.


sha: b18e4515855c3f1eeca3dfcccdbb6df05869084a
author_date: 2018-05-31T14:16:50Z
committer_date: 2018-05-31T14:16:50Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  datasette publish/package --spatialite, closes #243

  New command-line argument which causes SpatiaLite to be installed and
  configured for the published Datasette.

  	datasette publish now --spatialite mydb.db


sha: 969771770fcf795daace72e2310804e699067cfe
author_date: 2018-05-31T13:40:30Z
committer_date: 2018-05-31T13:42:37Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Upgrade pytest to 3.6.0

  https://github.com/pytest-dev/pytest/issues/1875 made it impossible to declare
  a function as a fixture multiple times, which we were doing across different
  modules. The fix was to move our @pytest.fixture calls into decorators in the
  tests/fixtures.py module.


sha: a4d6acc23943759b46fa90ec68e500016b933410
author_date: 2018-05-28T20:41:06Z
committer_date: 2018-05-28T20:41:06Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Use scope='session' for all fixtures

  This means they will only be executed once which makes sense
  since the database they create is immutable.


sha: 76d11eb768e2f05f593c4d37a25280c0fcdf8fd6
author_date: 2018-05-28T18:08:39Z
committer_date: 2018-05-28T18:08:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New ?_json=colname argument for returning unescaped JSON

  Also extracted docs for special JSON arguments into a new section.

  Closes #31


sha: 37f8361c6f7b3eeaa351c0cd93b6db1fdd2744ab
author_date: 2018-05-26T18:04:09Z
committer_date: 2018-05-26T18:04:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Initial documentation on using SpatiaLite

  https://datasette.readthedocs.io/en/latest/spatialite.html


sha: 81df47e8d95df895bec792466b3d7b34c8d5c509
author_date: 2018-05-25T00:15:37Z
committer_date: 2018-05-25T00:15:53Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Moved .execute() method from BaseView to Datasette class

  Also introduced new Results() class with results.truncated, results.description, results.rows


sha: bd30c696e18927207358ee9d63174a5c41c8297e
author_date: 2018-05-23T17:43:34Z
committer_date: 2018-05-23T17:43:34Z
raw_author: a901819e7fab7b80a873df43d5123bb3252681f8
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Build Dockerfile with recent Sqlite + Spatialite (#280)

  Closes #278

  ```bash
    $ docker run --rm -it datasette spatialite
    SpatiaLite version ..: 4.4.0-RC0	Supported Extensions:
      - 'VirtualShape'	[direct Shapefile access]
      - 'VirtualDbf'		[direct DBF access]
      - 'VirtualXL'		[direct XLS access]
      - 'VirtualText'		[direct CSV/TXT access]
      - 'VirtualNetwork'	[Dijkstra shortest path]
      - 'RTree'		[Spatial Index - R*Tree]
      - 'MbrCache'		[Spatial Index - MBR cache]
      - 'VirtualSpatialIndex'	[R*Tree metahandler]
      - 'VirtualElementary'	[ElemGeoms metahandler]
      - 'VirtualKNN'	[K-Nearest Neighbors metahandler]
      - 'VirtualXPath'	[XML Path Language - XPath]
      - 'VirtualFDO'		[FDO-OGR interoperability]
      - 'VirtualGPKG'	[OGC GeoPackage interoperability]
      - 'VirtualBBox'		[BoundingBox tables]
      - 'SpatiaLite'		[Spatial SQL - OGC]
    PROJ.4 version ......: Rel. 4.9.3, 15 August 2016
    GEOS version ........: 3.5.1-CAPI-1.9.1 r4246
    TARGET CPU ..........: x86_64-linux-gnu
    the SPATIAL_REF_SYS table already contains some row(s)
    SQLite version ......: 3.23.1
    Enter ".help" for instructions
    SQLite version 3.23.1 2018-04-10 17:39:29
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    spatialite>
  ```

  ```bash
  $ docker run --rm -it datasette python -c "import sqlite3; print(sqlite3.sqlite_version)"
  3.23.1
  ```

  Also updates the query used to check for FTS5 as the old version wasn't
  detecting FTS5 for some reason.


sha: fc47dacbbd4c4d245d7144e4cc014d3303f84b9a
author_date: 2018-05-22T17:18:00Z
committer_date: 2018-05-22T19:35:21Z
raw_author: 106fe7fbf8b80a01038e265a137b3b703422db48
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Add `__version_info__` derived from `__version__`

  This might be tuple of more than two values (major and minor
  version) if commits have been made after a release.


sha: a113c28ea1924d83e6789ae5e0805312e55b4490
author_date: 2018-05-22T15:33:29Z
committer_date: 2018-05-22T19:35:21Z
raw_author: a1a72b19e432a3145fdb845aab2927c00d8a8426
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Add version number support with Versioneer

  Repo:
  https://github.com/warner/python-versioneer

  Versioneer Licence:
  Public Domain (CC0-1.0)

  Closes #273


sha: bd3353a31f930c2e504094d79513cadbade43cda
author_date: 2018-05-20T21:28:53Z
committer_date: 2018-05-20T21:28:53Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added docs for introspection endpoints

  https://datasette.readthedocs.io/en/latest/introspection.html


sha: f6183ff5fa715c68d13d6ae8c7b3b9f2c6ffc9f8
author_date: 2018-05-20T17:01:49Z
committer_date: 2018-05-20T17:01:49Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Renamed --limit to --config, added --help-config, closes #274

  Removed the --page_size= argument to datasette serve in favour of:

      datasette serve --config default_page_size:50 mydb.db

  Added new help section:

      $ datasette --help-config
      Config options:
        default_page_size            Default page size for the table view
                                     (default=100)
        max_returned_rows            Maximum rows that can be returned from a table
                                     or custom query (default=1000)
        sql_time_limit_ms            Time limit for a SQL query in milliseconds
                                     (default=1000)
        default_facet_size           Number of values to return for requested facets
                                     (default=30)
        facet_time_limit_ms          Time limit for calculating a requested facet
                                     (default=200)
        facet_suggest_time_limit_ms  Time limit for calculating a suggested facet
                                     (default=50)


sha: 918de9403e09ba607996a985be1779eddcf76151
author_date: 2018-05-20T15:10:46Z
committer_date: 2018-05-20T15:10:46Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Only apply responsive table styles to .rows-and-column

  Otherwise they interfere with tables in the description, e.g. on
  https://fivethirtyeight.datasettes.com/fivethirtyeight/nba-elo%2Fnbaallelo


sha: b8227556c6ef040e2299b113d1ec6e220586ffc3
author_date: 2018-05-18T16:18:41Z
committer_date: 2018-05-18T16:18:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Suggested facets now use #fragment links

  Useful for pages with large amounts of content at the top like on
  https://fivethirtyeight.datasettes.com/fivethirtyeight-469e30d/nba-elo%2Fnbaallelo


sha: 08f4b7658fec97419eb34118a2cd5c8be805673f
author_date: 2018-05-18T06:07:45Z
committer_date: 2018-05-18T06:11:23Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Show facets that timed out using new InterruptedError

  If the user requests some _facet= options that do not successfully execute in
  the configured facet_time_limit_ms, we now show a warning message like this:

      These facets timed out: rowid, Title

  To build this I had to clean up our SQLite interrupted logic. We now raise a
  custom InterruptedError exception when SQLite terminates due to exceeding a
  time limit.

  In implementing this I found and fixed a logic error where invalid SQL was
  being generated in some cases for our faceting calculations but the resulting
  sqlite3.OperationalError had been incorrectly captured and treated as a
  timeout.

  Refs #255
  Closes #269


sha: cef9a9a8701af86cc7df8b7939398185f0a76f5f
author_date: 2018-05-18T05:08:26Z
committer_date: 2018-05-18T05:08:26Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  --limit= mechanism plus new limits for facets

  Replaced the --max_returned_rows and --sql_time_limit_ms options to
  "datasette serve" with a new --limit option, which supports a larger
  list of limits.

  Example usage:

  	datasette serve --limit max_returned_rows:1000 \
  		--limit sql_time_limit_ms:2500 \
  		--limit default_facet_size:50 \
  		--limit facet_time_limit_ms:1000 \
  		--limit facet_suggest_time_limit_ms:500

  New docs: https://datasette.readthedocs.io/en/latest/limits.html

  Closes #270
  Closes #264


sha: 142a550a99f3c78349a10ed79f1b513fe704a169
author_date: 2018-05-15T09:50:27Z
committer_date: 2018-05-16T15:27:24Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Facet results now have "truncated" field

   To indicate if there was more than 20 distinct values. Refs #255


sha: 70ff615f1b831c4dce936e9f9fc57a9e8e71e547
author_date: 2018-05-12T21:35:25Z
committer_date: 2018-05-12T21:44:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  utils.path_with_added_args() improvements

  * Now covered by unit tests
  * Preserves original order
  * Can handle multiple args of the same name, e.g. ?bar=1&bar=2


sha: 62c08d0d7197264af678c2f6e0c6403196217184
author_date: 2018-05-05T23:22:21Z
committer_date: 2018-05-05T23:22:21Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "Travis should now deploy new tags to PyPI if tests pass"

  This reverts commit d39b2e357e34469728f300273ab07c3904ea7a2b.

  It failed with this error: https://travis-ci.org/simonw/datasette/jobs/375398977

  	Uploading distributions to https://upload.pypi.org/legacy/
  	Uploading datasette-0.21-py3-none-any.whl
  	100% 182k/182k [00:00<00:00, 694kB/s]
  	HTTPError: 403 Client Error: Invalid or non-existent authentication information. for url: https://upload.pypi.org/legacy/


sha: 801381b7657dd084c11ac2fb6e3d0194cfaa3455
author_date: 2018-05-05T22:41:37Z
committer_date: 2018-05-05T22:44:32Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Default tests to using a longer timelimit

  Every now and then a test will fail in Travis CI on Python 3.5 because it hit
  the default 20ms SQL time limit.

  Test fixtures now default to a 200ms time limit, and we only use the 20ms time
  limit for the specific test that tests query interruption. This should make
  our tests on Python 3.5 in Travis much more stable.


sha: bb87cf873017c70a2e9155c336067d4e82481dd6
author_date: 2018-05-02T08:46:54Z
committer_date: 2018-05-03T14:09:27Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added /-/versions and /-/versions.json, closes #244

  Sample output:

      {
        "python": {
          "version": "3.6.3",
          "full": "3.6.3 (default, Oct  4 2017, 06:09:38) \n[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]"
        },
        "datasette": {
          "version": "0.20"
        },
        "sqlite": {
          "version": "3.23.1",
          "extensions": {
            "json1": null,
            "spatialite": "4.3.0a"
          }
        }
      }


sha: 690736436bac599ca042d1caa465c6d66d2651f9
author_date: 2018-05-02T00:17:39Z
committer_date: 2018-05-02T00:20:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Bump up time limit for test_paginate_tables_and_views

  It was intermittently failing in Travis CI on Python 3.5:

  https://travis-ci.org/simonw/datasette/jobs/373713476


sha: a4cc5dc81364a7300f0ba0bd5711633e803c250a
author_date: 2018-05-02T00:08:16Z
committer_date: 2018-05-02T00:20:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  New ?_shape=array option + tweaks to _shape, closes #245

  * Default is now ?_shape=arrays (renamed from lists)
  * New ?_shape=array returns an array of objects as the root object
  * Changed ?_shape=object to return the object as the root
  * Updated docs


sha: f188ceaa2a3a5b2eab83425ad0f00cb0d364e24a
author_date: 2018-04-26T04:47:12Z
committer_date: 2018-04-26T04:47:12Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New ?_size=XXX querystring parameter for table view, closes #229

  Also added documentation for all of the _special arguments.

  Plus deleted some duplicate logic implementing _group_count.


sha: 4504d5160b2d86d4dae17b7c2f72bc3b02509c2c
author_date: 2018-04-26T04:04:12Z
committer_date: 2018-04-26T04:04:12Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  If max_returned_rows==page_size, increment max_returned_rows

  Fixes #230, where if the two were equal pagination didn't work correctly.


sha: 404fa2252b070952ff1d1fc8bafc153789f36ada
author_date: 2018-04-18T14:48:34Z
committer_date: 2018-04-18T14:55:36Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  datasette publish/package --install option, closes #223

  Allows you to specify one or more additional packages to be installed,
  useful for deploying plugins.


sha: 2b344f6a34d2adaa305996a1a580ece06397f6e4
author_date: 2018-04-18T14:14:21Z
committer_date: 2018-04-18T14:52:17Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Ran black against datasette/cli.py

  https://pypi.org/project/black/

  cli.py was getting a bit untidy due to all of the heavily annotated
  click function methods - used black to clean it up and make it
  easier to read.


sha: 4be6deb94776744071311777f0b18efb993c0cfa
author_date: 2018-04-18T03:24:20Z
committer_date: 2018-04-18T03:24:20Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fix for plugins in Python 3.5 (#222)

  ModuleNotFoundError is not a thing in Python 3.5, so catch KeyError/ImportError instead.


sha: dfb87d012c30a5a3e2d6c4f2cf0a94d2fd080723
author_date: 2018-04-18T01:19:21Z
committer_date: 2018-04-18T01:19:21Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Use to_css_class for table cell column classes

  This ensures that columns with spaces in the name will still
  generate usable CSS class names. Refs #209


sha: 4586aa506a054d07e674cde8143a3008e6bc5d78
author_date: 2018-04-15T21:49:01Z
committer_date: 2018-04-18T01:13:02Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Don't duplicate simple primary keys in the link column

  When there's a simple (single-column) primary key, it looks weird to
  duplicate it in the link column.

  This change removes the second PK column and treats the link column as
  if it were the PK column from a header/sorting perspective.


sha: aaf59db570ab7688af72c08bb5bc1edc145e3e07
author_date: 2018-04-18T01:08:51Z
committer_date: 2018-04-18T01:09:48Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Longer time limit for test_paginate_compound_keys

  It was failing intermittently in Travis - see #209


sha: 5ebc7137d736d8fa47b24cc799fb93909f49cabb
author_date: 2018-04-18T00:31:54Z
committer_date: 2018-04-18T00:31:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Use application/octet-stream for downloadable databses

  I'd also like to send the Content-Length here but that's not currently
  possible in Sanic - see bug report here:

  https://github.com/channelcat/sanic/issues/1194


sha: e7c769ef30add8f984eab920b2f503d4b8096bde
author_date: 2018-04-17T01:41:17Z
committer_date: 2018-04-17T01:41:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Working implementation of #216 which passes the tests

  Reverted commit 5364fa7f3357f2de24fd45c85832205377642f19 (where I removed the
  code that didn't work).

  Added primary keys to order-by clause for sorting to get tests to pass


sha: 5364fa7f3357f2de24fd45c85832205377642f19
author_date: 2018-04-17T00:52:22Z
committer_date: 2018-04-17T00:53:37Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert #216 until I can get tests to pass in Travis

  Revert "Fix for _sort_desc=sortable_with_nulls test, refs #216"

  This reverts commit 07fc2d113e462bfd8d7d56152c0d1fc55e0fdbe9.

  Revert "Fixed #216 - paginate correctly when sorting by nullable column"

  This reverts commit 2abe539a0f9f967ec0de6894774cb7ee83c4b3b9.


sha: 904f1c75a3c17671d25c53b91e177c249d14ab3b
author_date: 2018-04-16T15:12:09Z
committer_date: 2018-04-16T15:12:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Initial documentation for plugins, closes #213

  https://datasette.readthedocs.io/en/latest/plugins.html


sha: b2955d9065ea019500c7d072bcd9d49d1967f051
author_date: 2018-04-16T05:22:01Z
committer_date: 2018-04-16T05:22:01Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  New --plugins-dir=plugins/ option (#212)

  * New --plugins-dir=plugins/ option

  New option causing Datasette to load and evaluate all of the Python files in
  the specified directory and register any plugins that are defined in those
  files.

  This new option is available for the following commands:

      datasette serve mydb.db --plugins-dir=plugins/
      datasette publish now/heroku mydb.db --plugins-dir=plugins/
      datasette package mydb.db --plugins-dir=plugins/

  * Unit tests for --plugins-dir=plugins/

  Closes #211


sha: 33c7c53ff87c25445c68088ede49d062d9c31fe8
author_date: 2018-04-16T00:56:15Z
committer_date: 2018-04-16T00:56:15Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Start of the plugin system, based on pluggy (#210)

  Uses https://pluggy.readthedocs.io/ originally created for the py.test project

  We're starting with two plugin hooks:

  prepare_connection(conn)

  This is called when a new SQLite connection is created. It can be used to register custom SQL functions.

  prepare_jinja2_environment(env)

  This is called with the Jinja2 environment. It can be used to register custom template tags and filters.

  An example plugin which uses these two hooks can be found at https://github.com/simonw/datasette-plugin-demos or installed using `pip install datasette-plugin-demos`

  Refs #14


sha: efbb4e83374a2c795e436c72fa79f70da72309b8
author_date: 2018-04-14T16:11:16Z
committer_date: 2018-04-14T18:00:38Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Return HTTP 405 on InvalidUsage rather than 500

  This also stops it filling up the logs. This happens for HEAD requests
  at the moment - which perhaps should be handled better, but that's a
  different issue.


sha: 932e0a3f91e4cee92b0e30c528300ec1d348d26c
author_date: 2018-04-14T15:21:37Z
committer_date: 2018-04-14T15:21:37Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Don't attempt to deploy new tags to PyPI

  This isn't working through Travis at the moment, so I'm disabling it and switching back to manual deploys.


sha: f2b940d6026677f6859d46a4f16fa402745d261d
author_date: 2018-04-14T13:17:20Z
committer_date: 2018-04-14T14:59:59Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Link foreign keys which don't have labels

  This renders unlabeled FKs as simple links. I can't see why this would
  cause any major problems.

  Also includes bonus fixes for two minor issues:

  * In foreign key link hrefs the primary key was escaped using HTML
    escaping rather than URL escaping. This broke some non-integer PKs.
  * Print tracebacks to console when handling 500 errors.


sha: 1cc5161089e559c8b16049b20f7a5b3a43290c21
author_date: 2018-04-14T12:06:00Z
committer_date: 2018-04-14T14:24:24Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Fix sqlite error when loading rows with no incoming FKs

  This fixes `ERROR: conn=<sqlite3.Connection object at 0x10bbb9f10>, sql
  = 'select ', params = {'id': '1'}` caused by an invalid query when
  loading incoming FKs.

  The error was ignored due to async but it still got printed to the
  console.


sha: ec6abc81e433c9bac1b9f085111785fc227e9e34
author_date: 2018-04-13T21:17:59Z
committer_date: 2018-04-14T03:32:53Z
raw_author: cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Initial units support

  Add support for specifying units for a column in metadata.json and
  rendering them on display using
  [pint](https://pint.readthedocs.io/en/latest/).

  ref #203


sha: 9f28bbe43dc277a3963a12aaae37b5ee3c277207
author_date: 2018-04-13T18:17:22Z
committer_date: 2018-04-13T18:17:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Better mechanism for handling errors; 404s for missing table/database

  New error mechanism closes #193

  404s for missing tables/databesse closes #184

  Makes pull request #202 unnecessary.


sha: 57b19f09d1ee24b7369ceca8937ce67df2ca1abc
author_date: 2018-04-10T00:30:44Z
committer_date: 2018-04-10T00:34:32Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Ability to sort using form fields (for mobile portrait mode)

  We now display sort options as a select box plus a descending checkbox, which
  means you can apply sort orders even in portrait mode on a mobile phone where
  the column headers are hidden.

  Closes #199


sha: a290f28caae61b47e76e825c06984f22fc41a694
author_date: 2018-04-09T05:24:24Z
committer_date: 2018-04-09T05:24:24Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  table_rows => table_rows_count, filtered_table_rows => filtered_table_rows_count

  Renamed properties. Closes #194


sha: c1d37fdf2be84fb07155bb1b1f61057444b03300
author_date: 2018-04-09T05:07:18Z
committer_date: 2018-04-09T05:10:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Fixed bug with human filter description, refs #189

  We were showing this:

      201 rows where sorted by sortable_with_nulls

  We now show this:

      201 rows sorted by sortable_with_nulls


sha: 23e0fdb0f3196ffa4d8bc4944c8bc9cb0f89129b
author_date: 2018-04-09T05:02:19Z
committer_date: 2018-04-09T05:10:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Removed unnecessary enumerate template helper

  I made this obsolete in d1756d773685ca4f9c5b57fb40e1aa743bc95525

  Refs #189


sha: b13f0986f26d88938519b07871c961c0b5a97802
author_date: 2018-04-09T04:58:25Z
committer_date: 2018-04-09T05:10:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  New sortable_columns option in metadata.json to control sort options

  You can now explicitly set which columns in a table can be used for sorting
  using the _sort and _sort_desc arguments using metadata.json:

      {
          "databases": {
              "database1": {
                  "tables": {
                      "example_table": {
                          "sortable_columns": [
                              "height",
                              "weight"
                          ]
                      }
                  }
              }
          }
      }

  Refs #189


sha: a87df963a08054ad7a652f0218e70ddb7f9cc8bd
author_date: 2018-04-09T04:07:31Z
committer_date: 2018-04-09T05:10:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Error handling for ?_sort and ?_sort_desc

  Verifies that they match an existing column, and only one or the other option
  is provided - refs #189

  Eses a new DatasetteError exception that closes #193


sha: 9f2ec39fbc5481b0fa6585ccdd159ba9fd989bcc
author_date: 2018-04-09T01:01:23Z
committer_date: 2018-04-09T05:10:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Current sort order now reflected in human filter description

  Plus renamed human_description to human_description_en

  Refs #189


sha: f3a3820ff5c5ba9b4af102e65ed1f084b1fe704d
author_date: 2018-04-09T00:06:10Z
committer_date: 2018-04-09T05:10:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  _sort and _sort_desc parameters for table views

  Allows for paginated sorted results based on a specified column.

  Refs #189


sha: 446d47fdb005b3776bc06ad8d1f44b01fc2e938b
author_date: 2018-04-03T15:24:04Z
committer_date: 2018-04-03T15:24:04Z
raw_author: daa0836007170071f748b575d34c4432f4f43926
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  make html title more readable in query template (#180)

  tiny tweak to make this easier to visually parse—I think it matches your style in other templates


sha: 0abd3abacb309a2bd5913a7a2df4e9256585b1bb
author_date: 2018-04-03T14:52:54Z
committer_date: 2018-04-03T14:52:54Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  New ?_shape=objects/object/lists param for JSON API (#192)

  New _shape= parameter replacing old .jsono extension

  Now instead of this:

  	/database/table.jsono

  We use the _shape parameter like this:

  	/database/table.json?_shape=objects

  Also introduced a new _shape called 'object' which looks like this:

  	/database/table.json?_shape=object

  Returning an object for the rows key:

  	...
  	"rows": {
  		"pk1": {
  			...
  		},
  		"pk2": {
  			...
  		}
  	}

  Refs #122


sha: dd0566ff8eda7fa2f0d92e51809581fae62cffed
author_date: 2018-04-03T13:46:11Z
committer_date: 2018-04-03T13:46:11Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Utility for writing test database fixtures to a .db file

  	python tests/fixtures.py /tmp/hello.db

  This is useful for making a SQLite database of the test fixtures for
  interactive exploration.


sha: 8f0d44d6468a96e9b78487c36da20ddc2ae9d937
author_date: 2018-04-03T13:39:50Z
committer_date: 2018-04-03T13:40:49Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  escape_sqlite_table_name => escape_sqlite, handles reserved words

  It can be used for column names as well as table names.

  Reserved word list from https://www.sqlite.org/lang_keywords.html


sha: 89d9fbb91bfc0dd9091b34dbf3cf540ab849cc44
author_date: 2018-03-27T16:18:32Z
committer_date: 2018-03-27T16:18:32Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Database/Table views inherit source/license/source_url/license_url metadata

  If you set the source_url/license_url/source/license fields in your root
  metadata those values will now be inherited all the way down to the database
  and table templates.

  The title/description are NOT inherited.

  Also added unit tests for the HTML generated by the metadata.

  Refs #185


sha: 1aad396c9ef46837b224607086c09f48ac921165
author_date: 2017-12-13T05:32:43Z
committer_date: 2017-12-13T05:36:03Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed bug with .json path regular expression

  I had a table called "geojson" and it caused an exception because the regex
  was matching .json and not \.json


sha: 68a34bc222af586c75daa5166c937f3f26cfefac
author_date: 2017-12-10T02:01:17Z
committer_date: 2017-12-10T02:01:17Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Deploy to Heroku with Python 3.6.3

  Heroku deploys are currently showing the following warning:

      The latest version of Python 3 is python-3.6.3 (you are using python-3.6.2, which is unsupported).
      We recommend upgrading by specifying the latest version (python-3.6.3).


sha: ae940068096ad9ff2f27f4e1784c87788d53eb3d
author_date: 2017-12-10T01:31:08Z
committer_date: 2017-12-10T01:31:08Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  No longer include database hash in hyperlinks

  It was making the unit tests unreliable. Also we do not do that for foreign key links.


sha: 7a7e4b2ed8c76c6d002a9d707dbc840f6a2abf7f
author_date: 2017-12-09T23:32:54Z
committer_date: 2017-12-09T23:32:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Started unit tests for row/table HTML pages

  Refs #167

  Thanks to the new tests, spotted and fixed a bug where pages that were
  supposed to have 100 things on them were actually displaying 101.


sha: c195ee4d46f2577b1943836a8270d84c8341d138
author_date: 2017-12-09T18:19:39Z
committer_date: 2017-12-09T18:28:49Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  package and publish commands now accept --static and --template-dir

  Example usage:

      datasette package --static css:extra-css/ --static js:extra-js/ \
      	sf-trees.db --template-dir templates/ --tag sf-trees --branch master

  This creates a local Docker image that includes copies of the templates/,
  extra-css/ and extra-js/ directories. You can then run it like this:

  	docker run -p 8001:8001 sf-trees

  For publishing to Zeit now:

  	datasette publish now --static css:extra-css/ --static js:extra-js/ \
  		sf-trees.db --template-dir templates/ --name sf-trees --branch master

  Example: https://sf-trees-wbihszoazc.now.sh/sf-trees-02c8ef1/Street_Tree_List

  For publishing to Heroku:

  	datasette publish heroku --static css:extra-css/ --static js:extra-js/ \
  		sf-trees.db --template-dir templates/ --branch master

  Closes #157, #160


sha: 2cc14a236c601ee2a6b81d8580e70989574baec9
author_date: 2017-12-09T03:47:50Z
committer_date: 2017-12-09T03:47:50Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Ditched short form options for --static and --template-dir

  The -t clashes with the package --tag option


sha: 16dfccb1c569359fa2a03639ada233e7661156af
author_date: 2017-12-09T03:10:09Z
committer_date: 2017-12-09T03:10:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Include sha1 hash in /static/app.css URL

  This means that when Datasette's CSS changes the new CSS will be loaded
  even though browsers may have cached the previous version.

  Closes #154


sha: 9af2964f6fd4ae876ef8ecd2c14c2ffa61542fdb
author_date: 2017-12-07T17:19:35Z
committer_date: 2017-12-07T17:19:35Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Documentation for metadata.json and "datasette skeleton" command

  http://datasette.readthedocs.io/en/latest/metadata.html

  Closes #166


sha: 80bf3afa43e3cb396c7a7c9b168eedbc6fe0fa15
author_date: 2017-12-07T16:42:54Z
committer_date: 2017-12-07T16:47:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  metadata.json support for per-table/per-database metadata

  Also added support for descriptions and HTML descriptions.

  Here's an example metadata.json file illustrating custom per-database and per-
  table metadata:

      {
          "title": "Overall datasette title",
          "description_html": "This is a <em>description with HTML</em>.",
          "databases": {
              "db1": {
                  "title": "First database",
                  "description": "This is a string description & has no HTML",
                  "license_url": "http://example.com/",
          		"license": "The example license",
                  "queries": {
                  	"canned_query": "select * from table1 limit 3;"
                  },
                  "tables": {
                      "table1": {
                          "title": "Custom title for table1",
                          "description": "Tables can have descriptions too",
                          "source": "This has a custom source",
                          "source_url": "http://example.com/"
                      }
                  }
              }
          }
      }

  Closes #165, Refs #164


sha: 7e1ba161ec87b02cf7665a73188258f14036f892
author_date: 2017-12-07T06:11:22Z
committer_date: 2017-12-07T06:11:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Ability to easily customize _rows_and_columns.html per database table

  Also added documentation for this.

  Refs #158, Closes #159.


sha: afbda9e210b6e5eae10a537c121cbb5e92cc8502
author_date: 2017-12-07T05:58:42Z
committer_date: 2017-12-07T05:58:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  All extra_head blocks now call super

  This means you can provide a custom base.html template that populates
  extra_head and any of the default child templates will still render content
  you included in that block.

  Refs #158


sha: 7a4da7e5aedff3f61648d5530c4dc34de011ea8a
author_date: 2017-12-05T17:43:59Z
committer_date: 2017-12-05T17:43:59Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Documentation for custom SQL queries

  http://datasette.readthedocs.io/en/latest/sql_queries.html

  Closes #20


sha: a743cdeafca0e5d011c282a53baf753c85d01516
author_date: 2017-12-05T16:17:02Z
committer_date: 2017-12-05T16:17:02Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Canned query support + database/query template refactor

  Named canned queries can now be defined in metadata.json like this:

      {
          "databases": {
              "timezones": {
                  "queries": {
                      "timezone_for_point": "select tzid from timezones ..."
                  }
              }
          }
      }

  These will be shown in a new "Queries" section beneath "Views" on the database page.

  As part of this, I refactored the logic for the database index page. It used
  to combine the functionality for listing available tables and the
  functionality for executing custom SQL queries in a single template and view.
  I have split that template out into database.html and query.html and reworked
  the view to more clearly separate the custom SQL executing code.

  Refs #20


sha: e981ac7d4d1e1603257369eb5edba0fc4fdf5ae9
author_date: 2017-12-03T16:33:36Z
committer_date: 2017-12-03T16:33:36Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  --static option for datasette serve

  You can now tell Datasette to serve static files from a specific location at a
  specific mountpoint.

  For example:

  	datasette serve mydb.db --static extra-css:/tmp/static/css

  Now if you visit this URL:

  	http://localhost:8001/extra-css/blah.css

  The following file will be served:

  	/tmp/static/css/blah.css

  Refs #160


sha: 601934936c9e6e0007aca13547b73c3b36343f7f
author_date: 2017-11-30T17:09:48Z
committer_date: 2017-11-30T17:09:48Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Documentation for custom CSS/JavaScript/Templates

  Will go live at http://datasette.readthedocs.io/en/latest/custom_templates.html

  Closes #156


sha: 3cd06729f457d690603b6060dc552b535517ab09
author_date: 2017-11-30T16:30:10Z
committer_date: 2017-11-30T16:38:16Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Ability to over-ride templates for individual tables/databases

  It is now possible to over-ride templates on a per-database / per-row or per-
  table basis.

  When you access e.g. /mydatabase/mytable Datasette will look for the following:

      - table-mydatabase-mytable.html
      - table.html

  If you provided a --template-dir argument to datasette serve it will look in
  that directory first.

  The lookup rules are as follows:

      Index page (/):
          index.html

      Database page (/mydatabase):
          database-mydatabase.html
          database.html

      Table page (/mydatabase/mytable):
          table-mydatabase-mytable.html
          table.html

      Row page (/mydatabase/mytable/id):
          row-mydatabase-mytable.html
          row.html

  If a table name has spaces or other unexpected characters in it, the template
  filename will follow the same rules as our custom <body> CSS classes
  introduced in 8ab3a169d42d096f - for example, a table called "Food Trucks"
  will attempt to load the following templates:

      table-mydatabase-Food-Trucks-399138.html
      table.html

  It is possible to extend the default templates using Jinja template
  inheritance. If you want to customize EVERY row template with some additional
  content you can do so by creating a row.html template like this:

      {% extends "default:row.html" %}

      {% block content %}
      <h1>EXTRA HTML AT THE TOP OF THE CONTENT BLOCK</h1>
      <p>This line renders the original block:</p>
      {{ super() }}
      {% endblock %}

  Closes #12, refs #153


sha: 7ff51598c468deb1d2c0d4c23a808458c9b1e3a2
author_date: 2017-11-30T16:05:01Z
committer_date: 2017-11-30T16:05:01Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  git commit -m "datasette --template-dir=mytemplates/" argument

  You can now pass an additional argument specifying a directory to look for
  custom templates in.

  Datasette will fall back on the default templates if a template is not
  found in that directory.

  Refs #12, #153


sha: ffa77f62b46e1ddf2f848f5da10a1e958323a084
author_date: 2017-11-30T15:51:40Z
committer_date: 2017-11-30T15:51:40Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Removed dependency on sanic-jinja2

  I wasn't using any of the functionality it adds on top of raw Jinja2.

  Refs #12 and #153


sha: 8ab3a169d42d096f2c7979c6d3d7746618d30f0b
author_date: 2017-11-30T07:09:54Z
committer_date: 2017-11-30T07:09:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  CSS styling hooks as classes on the body

  Refs #153

  Every template now gets CSS classes in the body designed to support custom
  styling.

  The index template (the top level page at /) gets this:

      <body class="index">

  The database template (/dbname/) gets this:

      <body class="db db-dbname">

  The table template (/dbname/tablename) gets:

      <body class="table db-dbname table-tablename">

  The row template (/dbname/tablename/rowid) gets:

      <body class="row db-dbname table-tablename">

  The db-x and table-x classes use the database or table names themselves IF
  they are valid CSS identifiers. If they aren't, we strip any invalid
  characters out and append a 6 character md5 digest of the original name, in
  order to ensure that multiple tables which resolve to the same stripped
  character version still have different CSS classes.

  Some examples (extracted from the unit tests):

      "simple" => "simple"
      "MixedCase" => "MixedCase"
      "-no-leading-hyphens" => "no-leading-hyphens-65bea6"
      "_no-leading-underscores" => "no-leading-underscores-b921bc"
      "no spaces" => "no-spaces-7088d7"
      "-" => "336d5e"
      "no $ characters" => "no--characters-59e024"


sha: 0120c24927af364304574ab1a58e417094e01c22
author_date: 2017-11-29T02:38:15Z
committer_date: 2017-11-29T02:38:15Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  extra_css_urls/extra_js_urls in metadata, refs #153

  A mechanism in the metadata.json format for adding custom CSS and JS urls.

  Create a metadata.json file that looks like this:

      {
          "extra_css_urls": [
              "https://simonwillison.net/static/css/all.bf8cd891642c.css"
          ],
          "extra_js_urls": [
              "https://code.jquery.com/jquery-3.2.1.slim.min.js"
          ]
      }

  Then start datasette like this:

      datasette mydb.db --metadata=metadata.json

  The CSS and JavaScript files will be linked in the <head> of every page.

  You can also specify a SRI (subresource integrity hash) for these assets:

      {
          "extra_css_urls": [
              {
                  "url": "https://simonwillison.net/static/css/all.bf8cd891642c.css",
                  "sri": "sha384-9qIZekWUyjCyDIf2YK1FRoKiPJq4PHt6tp/ulnuuyRBvazd0hG7pWbE99zvwSznI"
              }
          ],
          "extra_js_urls": [
              {
                  "url": "https://code.jquery.com/jquery-3.2.1.slim.min.js",
                  "sri": "sha256-k2WSCIexGzOj3Euiig+TlR8gA0EmPjuc79OEeY5L45g="
              }
          ]
      }

  Modern browsers will only execute the stylsheet or JavaScript if the SRI hash
  matches the content served. You can generate hashes using www.srihash.org


sha: a30c5b220c15360d575e94b0e67f3255e120b916
author_date: 2017-11-23T21:09:45Z
committer_date: 2017-11-23T21:09:45Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed bug on rows page, added unit test

  Rows page for rows that linked to the same table in more
  than one columns were display incorrectly. Fixed that and added a test.

  Also introduced /db/table/row-pk.json?_extras=foreign_key_tables

  This is used by the new unit test, but is the first example of a new
  ?_extras=comma-separated-list pattern I am introducing.


sha: 53534b6e9d3956cdb6aa9c062d2beffdd89fa7d9
author_date: 2017-11-23T04:03:46Z
committer_date: 2017-11-23T04:03:46Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Even more complicated redirect scheme

  This:

      ?_filter_column_1=name&_filter_op_1=contains&_filter_value_1=hello
      &_filter_column_2=age&_filter_op_2=gte&_filter_value_2=12

  Now redirects to this:

      ?name__contains=hello&age__gte=12

  This is needed for the filter editing interface, refs #86


sha: f96e55bce55d26c4d5b198edc536e1b8e9bbea43
author_date: 2017-11-22T20:15:29Z
committer_date: 2017-11-22T20:17:51Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Fix pytest version conflict

  https://travis-ci.org/simonw/datasette/jobs/305929426

      pkg_resources.VersionConflict: (pytest 3.2.1 (/home/travis/virtualenv/python3.5.3/lib/python3.5/site-packages), 
      Requirement.parse('pytest==3.2.3'))


sha: fb505de11c882fa7f2522160509172561b5b8270
author_date: 2017-11-22T17:42:29Z
committer_date: 2017-11-22T17:42:29Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Back-ported format strings for compatibility with Py 3.5

  Also fixed a encoding error where Heroku --json return needs to be treated as UTF8


sha: e47117ce1d15f11246a3120aa49de70205713d05
author_date: 2017-11-21T20:55:04Z
committer_date: 2017-11-21T20:55:04Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Add publish to heroku support (merge pull request #104 from jacobian)

      datasette publish heroku mydb.db


sha: 771b0ee34789750fdec176c3129eeaa6a6523041
author_date: 2017-11-20T06:04:13Z
committer_date: 2017-11-20T06:04:13Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Initial implementation of ?_group_count=column

  URL shortcut for counting rows grouped by one or more columns.

  ?_group_count=column1&_group_count=column2 works as well.

  SQL generated looks like this:

      select "qSpecies", count(*) as "count"
      from Street_Tree_List
      group by "qSpecies"
      order by "count" desc limit 100

  Or for two columns like this:

      select "qSpecies", "qSiteInfo", count(*) as "count"
      from Street_Tree_List
      group by "qSpecies", "qSiteInfo"
      order by "count" desc limit 100

  Refs #44

  Still todo: clean up code a bunch (it currently fakes being a 'view'), get
  foreign key expansion working.


sha: a5881e105a02830d26f07e98177248d5910893da
author_date: 2017-11-19T20:33:30Z
committer_date: 2017-11-19T20:33:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  ?_filter_column=col&_filter_op=isnull__1 redirect

  if filter_op contains a __ the value is set to the right hand side.

  e.g.

      ?_filter_column=col&_filter_op=isnull__1&_filter_value=x

  Redirects to:

      ?col__isnull=1

  Refs #86


sha: 386fb11d42767039bb2b389ce98996673d780a42
author_date: 2017-11-19T20:25:29Z
committer_date: 2017-11-19T20:25:29Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  ?_filter_column=col&_filter_op=op&_filter_value=value redirect

  Part of implementing the filters UI (refs #86) - the following:

      /trees/Trees?_filter_column=SiteOrder&_filter_op=gt&_filter_value=2

  Now redirects to this;

      /trees/Trees?SiteOrder__gt=2


sha: ddc808f387be62cf776b815bb0eda77616c412ae
author_date: 2017-11-19T18:20:17Z
committer_date: 2017-11-19T18:20:17Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added --build=master option to datasette publish and package

  The `datasette publish` and `datasette package` commands both now accept an
  optional `--build` argument. If provided, this can be used to specify a branch
  published to GitHub that should be built into the container.

  This makes it easier to test code that has not yet been officially released to
  PyPI, e.g.:

      datasette publish now mydb.db --branch=master


sha: 1b04662585ea1539014bfbd616a8112b650d5699
author_date: 2017-11-18T03:09:32Z
committer_date: 2017-11-18T03:15:49Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Table views now show expanded foreign key references, if possible

  If a table has foreign key columns, and those foreign key tables have
  label_columns, the TableView will now query those other tables for the
  corresponding values and display those values as links in the corresponding
  table cells.

  label_columns are currently detected by the inspect() function, which looks
  for any table that has just two columns - an ID column and one other - and
  sets the label_column to be that second non-ID column.


sha: 0b702f3679a2ffd4e3efb5c34b9fe30221172ccb
author_date: 2017-11-17T16:18:26Z
committer_date: 2017-11-17T16:18:26Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Fixed weird edge-case with foreign key detection

  It turns out it is possible for a SQLite table to define a foreign key
  relationship to a table that does not actually exist

  We should still be able to handle these databases.


sha: e16ca1169cc49fbb5b0325564d248becad3a4b7f
author_date: 2017-11-17T15:39:36Z
committer_date: 2017-11-17T15:39:36Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Refactored table column/row display logic

  Simplified the template and made the way for upcoming foreign key work.

  Refs #85

  Also fixed &nbsp; bug on database page - closes #113


sha: 03572ae35573c2ea802a540624ce116f540ba1ac
author_date: 2017-11-17T14:13:35Z
committer_date: 2017-11-17T14:13:35Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Allow --load-extension to be set via environment variable

  I tesed this by first building and running a container using the new
  Dockerfile from #114:

      docker build .
      docker run -it -p 8001:8001 6c9ca7e29181 /bin/sh

  Then I ran this inside the container itself:

      apt update && apt-get install wget -y \
          && wget http://www.gaia-gis.it/spatialite-2.3.1/test-2.3.sqlite.gz \
          && gunzip test-2.3.sqlite.gz \
          && mv test-2.3.sqlite test23.sqlite \
          && datasette -h 0.0.0.0 test23.sqlite

  I visited this URL to confirm I got an error due to spatialite not being
  loaded:

  http://localhost:8001/test23-c88bc35?sql=select+ST_AsText%28Geometry%29+from+HighWays+limit+1

  Then I checked that loading it with `--load-extension` worked correctly:

      datasette -h 0.0.0.0 test23.sqlite \
          --load-extension=/usr/lib/x86_64-linux-gnu/mod_spatialite.so

  Then, finally, I tested it with the new environment variable option:

      SQLITE_EXTENSIONS=/usr/lib/x86_64-linux-gnu/mod_spatialite.so \
          datasette -h 0.0.0.0 test23.sqlite

  Running it with an invalid environment variable option shows an error:

      $ SQLITE_EXTENSIONS=/usr/lib/x86_64-linux-gnu/blah.so datasette \
          -h 0.0.0.0 test23.sqlite
      Usage: datasette -h [OPTIONS] [FILES]...

      Error: Invalid value for "--load-extension": Path "/usr/lib/x86_64-linux-gnu/blah.so" does not exist.

  Closes #112


sha: ed2b3f25beac720f14869350baacc5f62b065194
author_date: 2017-11-17T13:29:22Z
committer_date: 2017-11-17T13:29:22Z
raw_author: 19245be93da11be3d5e72991646660a06a9d3449
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  add support for ?field__isnull=1 (#107)

  * add support for ?field__isnull=1

  * Add unit test and conditional formatting for ?field__isnull


sha: b9af49be6c68d6e551c1ae23132711f22cb7c63c
author_date: 2017-11-17T13:26:05Z
committer_date: 2017-11-17T13:26:05Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fix case for Sanic dependency

  On PyPI it has a capital letter: https://pypi.python.org/pypi/Sanic

  I think this is why the list of "Requires Distributions" on https://pypi.python.org/pypi/datasette links to all of the other dependencies but does not link to Sanic.


sha: 01e0c3fa18cd0dd7970e208790ffd683a420c924
author_date: 2017-11-16T15:29:52Z
committer_date: 2017-11-16T15:29:52Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Fixed &nbsp; bug

  &nbsp; was showing for all None values in table cells, thanks to the
  autoescaping change introduced in 82261a638bd35c9


sha: e6ca88588395a9b8266c0e14121668990d34ff67
author_date: 2017-11-16T15:11:00Z
committer_date: 2017-11-16T15:11:00Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Added initial docs, including a changelog

  Docs initialized using this helpful guide:

  http://docs.readthedocs.io/en/latest/getting_started.html

  I used https://pypi.python.org/pypi/gitchangelog to kick-start the changelog.

  Closes #99

  Refs #109


sha: 82261a638bd35c9d69a9582a898cf4dab374f76c
author_date: 2017-11-16T01:59:42Z
committer_date: 2017-11-16T01:59:42Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Turn on auto-escaping in Jinja

  We had XSS holes! Since we don't do cookies or authentication
  they shouldn't cause any actual harm, but still really not good.

  https://github.com/pallets/jinja/issues/528


sha: 7fe1e8b4827aa1d7e72825da563effdf44ae7233
author_date: 2017-11-15T05:02:11Z
committer_date: 2017-11-15T05:02:11Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Added extra metadata options to publish and package commands

  You can now run these commands like so:

      datasette now publish mydb.db \
          --title="My Title" \
          --source="Source" \
          --source_url="http://www.example.com/" \
          --license="CC0" \
          --license_url="https://creativecommons.org/publicdomain/zero/1.0/"

  This will write those values into the metadata.json that is packaged with the
  app. If you also pass --metadata= that file will be updated with the extra
  values before being written into the Docker image.

  Closes #92


sha: 9cb69cbd45ed8fd93190c47060c19abec80bc4ef
author_date: 2017-11-15T02:55:10Z
committer_date: 2017-11-15T02:55:10Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  New ?_sql_time_limit_ms=10 argument to database and table page

  Allows callers to opt for a lower time limit.

  Closes #95


sha: 0b8c1b0a6da9cb8ac0d28cc90dd783de87554036
author_date: 2017-11-15T02:41:03Z
committer_date: 2017-11-15T02:43:34Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Test for sql_time_limit_ms + sqlite_functions mechanism

  Added a unit test for the sql_time_limit_ms option.

  To test this, I needed to add a custom SQLite sleep() function. I've added a
  simple mechanism to the Datasette class for registering custom functions.

  I also had to modify the sqlite_timelimit() function. It makes use of a magic
  value, N, which is the number of SQLite virtual machine instructions that
  should execute in between calls to my termination decision function.

  The value of N was not finely grained enough for my test to work - so I've
  added logic that says that if the time limit is less than 50ms, N is set to 1.
  This got the tests working.

  Refs #95


sha: 4f7281af8ce421d2f8c57ba43108261ba89d2cd6
author_date: 2017-11-15T02:04:04Z
committer_date: 2017-11-15T02:04:04Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Apply a default height to CodeMirror

  Makes it a bit more obvious that it's an editable textarea even
  if the SQL in it is only one line long.


sha: fc7c04fe0b2f9daf8875ccaa9625ec80d8eeafe2
author_date: 2017-11-14T01:48:03Z
committer_date: 2017-11-14T01:48:03Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Added 'datasette publish now --force' option

  This calls now with --force - which is useful as it means you get a fresh copy of
  datasette even if now has already cached that docker layer.


sha: 06a826c3188af82f27bb6b4e09cc89b782d30bd6
author_date: 2017-11-13T22:16:54Z
committer_date: 2017-11-13T22:16:54Z
raw_author: 207bb2132044fa5a4fe28a579f7588c2eee6e391
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  :fire: Removes DS_Store (#81)

  * :fire: Removes .DS_Store

  Signed-off-by: Jeff Triplett <jeff.triplett@gmail.com>

  * :snowflake: Adds .DS_Store to gitignore

  Signed-off-by: Jeff Triplett <jeff.triplett@gmail.com>


sha: 44a199a0625b695492b2a8605030dc61191f39cb
author_date: 2017-11-13T22:15:21Z
committer_date: 2017-11-13T22:15:21Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Stop using sqlite WITH RECURSIVE in our tests

  The version of Python 3 running in Travis CI doesn't support this.


sha: 1e698787a4dd6df0432021a6814c446c8b69bba2
author_date: 2017-11-13T21:58:34Z
committer_date: 2017-11-13T22:00:53Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Added --sql_time_limit_ms and --extra-options

  The serve command now accepts --sql_time_limit_ms for customizing the SQL time
  limit.

  The publish and package commands now accept --extra-options which can be used
  to specify additional options to be passed to the datasite serve command when
  it executes inside the rusulting Docker containers.


sha: 8252e71da461c425e625e1c3e4ee0bd92ea4cbf0
author_date: 2017-11-13T19:33:01Z
committer_date: 2017-11-13T19:33:01Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Limit on max rows returned, controlled by --max_returned_rows option

  If someone executes 'select * from table' against a table with a million rows
  in it, we could run into problems: just serializing that much data as JSON is
  likely to lock up the server.

  Solution: we now have a hard limit on the maximum number of rows that can be
  returned by a query. If that limit is exceeded, the server will return a
  `"truncated": true` field in the JSON.

  This limit can be optionally controlled by the new `--max_returned_rows`
  option. Setting that option to 0 disables the limit entirely.

  Closes #69


sha: 495407acefe1e6976316aef88ae0e4c1d48ab421
author_date: 2017-11-13T18:03:52Z
committer_date: 2017-11-13T18:03:52Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Force initial .inspect() before starting server

  Otherwise there is a long pause on the first request made.


sha: 4143e3b45c16cbae5e3e3419ef479a71810e7df3
author_date: 2017-11-13T16:13:38Z
committer_date: 2017-11-13T16:17:35Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  New command: datasette package - packages a docker container

  Example usage:

      datasette package fivethirtyeight.db \
          --tag fivethirtyeight \
          --metadata=538-metadata.json

  This will create a temporary directory, generate a Dockerfile, copy in the
  SQLite database and metadata file, then build that as a new docker image and
  tag that in your local Docker repository as fivethirtyeight:latest.

  You can then run the image like so:

      docker run -p 8006:8001 fivethirtyeight

  This will expose port 8001 in the container (the default) as port 8006 on your
  host.

  Closes #67


sha: 3ef35ca8b4369af6a8bcdd9e5cfbb5f3a7d17cf8
author_date: 2017-11-13T15:20:02Z
committer_date: 2017-11-13T15:20:02Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  serve and publish commands now take a --metadata option

  If provided, the --metadata option is the path to a JSON file containing
  metadata that should be displayed alongside the dataset.

      datasette /tmp/fivethirtyeight.db --metadata /tmp/metadata.json

  Currently that metadata format looks like this:

      {
          "title": "Five Thirty Eight",
          "license": "CC Attribution 4.0 License",
          "license_url": "http://creativecommons.org/licenses/by/4.0/",
          "source": "fivethirtyeight/data on GitHub",
          "source_url": "https://github.com/fivethirtyeight/data"
      }

  If provided, this will be used by the index template and to populate the
  common footer.

  The publish command also accepts this argument, and will package any provided
  metadata up and include it with the resulting Docker container.

      datasette publish --metadata /tmp/metadata.json /tmp/fivethirtyeight.db

  Closes #68


sha: 26370b14d862a5d2dc32b858bdf627f2a5ec3209
author_date: 2017-11-12T23:17:00Z
committer_date: 2017-11-12T23:17:00Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Handle table names with slashes in them

  e.g. https://datasette-wdlexdiaoz.now.sh/fivethirtyeight-75d605c/bob-ross%2Felements-by-episode.csv?CABIN=1&BUSHES=1&CLOUDS=1


sha: 4c66097d581c3970a23530598c4fe98b09f422ee
author_date: 2017-11-12T23:16:24Z
committer_date: 2017-11-12T23:16:24Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  datasette publish now works with full paths

  e.g. datasette publish /tmp/blah/database.db now does the right thing


sha: efecae5a11617eb576d475192384339fcdb03189
author_date: 2017-11-12T22:23:41Z
committer_date: 2017-11-12T23:01:29Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Full path to database now works

  e.g. datasette /tmp/blah.db

  Previously this failed because it did not open with full path.


sha: 666aa032530189d585dd61d0e9851e9fe63ee598
author_date: 2017-11-12T21:16:15Z
committer_date: 2017-11-12T21:16:15Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Improved error handling

  Invalid SQL now shows a special error.html template, and is covered by tests.


sha: fa42a56c6a0fa62529eabf2d363bd3008ce23094
author_date: 2017-11-11T22:22:47Z
committer_date: 2017-11-11T22:22:47Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Bulked out table test a bit

  I'm closing #50 - more tests will be added in the future, but the framework
  is neatly in place for them now.


sha: 40a563ebac72f46a1b2dc498a25520c429bca6d6
author_date: 2017-11-11T20:10:51Z
committer_date: 2017-11-11T20:11:51Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Reworked metadata building options

  Building metadata is now optional. If you want to do it, do this:

      datasette build *.db --metadata=metadata.json

  Then when you run the server you can tell it to read from metadata:

      datasette serve *.db --metadata=metadata.json

  The Dockerfile generated by datasette publish now uses this mechanism.

  Closes #60


sha: ad8b5d3bd23a7b306b8843d7de53a7c918ddb74f
author_date: 2017-11-11T17:49:47Z
committer_date: 2017-11-11T17:49:47Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  JSON version of our homepage

  Now available at http://localhost:8006/.json

  Tested by tests added in 407795b61217205625f2d4e084afbf69f1db781b


sha: 407795b61217205625f2d4e084afbf69f1db781b
author_date: 2017-11-11T17:47:59Z
committer_date: 2017-11-11T17:47:59Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Initial unit tests against our Sanic app

  Refs #50

  I had to disable the build metadata function to get these tests to work
  sensibly. I need to completely rethink how that mechanism works.


sha: 7d81083d40fb2749be897d89c9a094d6521ef20c
author_date: 2017-11-11T05:55:50Z
committer_date: 2017-11-11T05:55:50Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Implemented responsive tables, removed bootstrap

  No need for all of bootstrap since we only need to style a few elements.

  Implemented responsive table pattern from here:
  https://css-tricks.com/responsive-data-tables/

  Refs #16


sha: 40d3b3eae68286f67e40226f18f2621b26e5e533
author_date: 2017-11-10T18:48:16Z
committer_date: 2017-11-10T18:48:16Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Refactored tests into new tests/ folder

  Guided by https://docs.pytest.org/en/latest/goodpractices.html


sha: bc9871c93583f3cdcca191b7fa05b255be7275c8
author_date: 2017-11-09T16:09:55Z
committer_date: 2017-11-09T16:09:55Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  gt/lt/gte/lte now treat numeric arguments as numeric

  This now works:

      https://immutabase-dlmggyoepw.now.sh/northwind-40d049b/Products?UnitsInStock__gt=100

  Previously the input value of 100 would be treated as a string.

  Also fixed a bug where filter arguments had stopped working entirely.

  Refs #23


sha: d9fa2bf7ba2f9d3dcb2beb303f772c86344b4bcf
author_date: 2017-11-09T14:39:50Z
committer_date: 2017-11-09T14:39:50Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Use rowid if no primary key available

  Allows us to link to individual records even for tables that do not have a primary key.

  Refs #5


sha: abb591d83264bbf11a5eb9daf03011d051e8f833
author_date: 2017-11-09T13:46:16Z
committer_date: 2017-11-09T14:14:26Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Added --reload argument to 'immutabase serve' command

  Uses hupper to restart the server when the code changes. Useful for development.

  Depends on https://pypi.python.org/pypi/hupper


sha: 186c513a61a091b9f83d788e25b08f41a84ed9a3
author_date: 2017-11-05T02:49:18Z
committer_date: 2017-11-05T02:49:18Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Support parameterized SQL and block potentially harmful queries

  You can now call arbitrary SQL like this:

      /flights?sql=select%20*%20from%20airports%20where%20country%20like%20:c&c=iceland

  Unescaped, those querystring params look like this:

      sql = select * from airports where country like :c
      c = iceland

  So SQL can be constructed with named parameters embedded in it, which will
  then be read from the querystring and correctly escaped.

  This means we can aggressively filter the SQL parameter for potentially
  dangerous syntax. For the moment we enforce that it starts with a SELECT
  statement and we ban the sequence "pragma" from it entirely.

  If you need to use pragma in a query, you can use the new named parameter
  mechanism.

  Fixes #39


sha: 31b21f5c5e15fc3acab7fabb170c1da71dc3c98c
author_date: 2017-11-05T02:21:44Z
committer_date: 2017-11-05T02:21:44Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Moved all SQLite queries to threads

  SQLite operations are blocking, but we're running everything in Sanic, an
  asyncio web framework, so blocking operations are bad - a long-running DB
  operation could hold up the entire server.

  Instead, I've moved all SQLite operations into threads. These are managed by a
  concurrent.futures ThreadPoolExecutor. This means I can run up to X queries in
  parallel, and I can continue to queue up additional incoming HTTP traffic
  while the threadpool is busy.

  Each thread is responsible for managing its own SQLite connections - one per
  database. These are cached in a threadlocal.

  Since we are working with immutable, read-only SQLite databases it should be
  safe to share SQLite objects across threads. On this assumption I'm using the
  check_same_thread=False option. Opening a database connection looks like this:

      conn = sqlite3.connect(
          'file:filename.db?immutable=1',
          uri=True,
          check_same_thread=False,
      )

  The following articles were helpful in figuring this out:

  * https://pymotw.com/3/asyncio/executors.html
  * https://marlinux.wordpress.com/2017/05/19/python-3-6-asyncio-sqlalchemy/

  Closes #45. Refs #38.


sha: 1fc75809a6aa17860944b4cc3a4d7175cd53b1f4
author_date: 2017-11-05T02:13:44Z
committer_date: 2017-11-05T02:13:44Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Refactored everything into a factory function

  I now call a factory function to construct the Sanic app:

      app = app_factory(files)

  This allows me to pass additional arguments to it, e.g. the files to serve.

  Also refactored my class-based views to accept jinja as an argument, e.g:

      app.add_route(
          TableView.as_view(jinja),
          '/<db_name:[^/]+>/<table:[^/]+?><as_json:(.jsono?)?$>'
      )


sha: 0ac8bbce2e73c0759ec48661a7b740d2c368b2a2
author_date: 2017-11-04T23:53:50Z
committer_date: 2017-11-04T23:53:50Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Default subcommand is now serve

  Using click-default-group: https://github.com/click-contrib/click-default-group

  Also removed requirements.txt in favour of setup.py


sha: 2c625e31ed018f929223918240603bf2a80e665c
author_date: 2017-10-27T07:16:18Z
committer_date: 2017-10-27T07:16:18Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Fixed bug on Row page with tables containing spaces

  We were attempting to run this SQL:

      select * from "Order%20Details" where ...

  On this page:

      http://0.0.0.0:8877/northwind-40d049b/Order%20Details/10250,41


sha: 1592fd0419f374de201926d3ba67fbf1522eed13
author_date: 2017-10-27T07:08:24Z
committer_date: 2017-10-27T07:08:24Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Started work on cli, which also meant adding setup.py

  I'm using click, and click recommends using a setup.py - so I've added one of
  those. I also refactored code into a new datasite package. It's not quite
  deploying to now properly at the moment though - I seem to have messed up the
  path handling a bit.

  Also snuck in a new template for the "Row" view.

  Refs #40


sha: 3cce63b59851495b6d9d38936356e21ea8fbad3a
author_date: 2017-10-25T15:19:32Z
committer_date: 2017-10-25T15:19:32Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  URL to allow direct database download

  It's just the database URL with .db on the end, e.g. /flights.db

  Closes #19


sha: d94d4465d7e72e668122f81206397f4f20cf555b
author_date: 2017-10-25T14:47:20Z
committer_date: 2017-10-25T14:47:20Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Double quote around column names

  This means filters still work even with column names that contain spaces


sha: 6823b094066c5cb1dcd3581da2ed877ed72298b7
author_date: 2017-10-25T01:34:54Z
committer_date: 2017-10-25T01:34:54Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Set time limit of 1000ms on SQL queries

  Using the (undocumented in the Python docs) fact that if you return 1 from a
  set_progress_handler callback, SQLite will cancel the current query.

  Closes #35


sha: 2fe94641b0b2dc291d1fce3dad0fbf96294b3a32
author_date: 2017-10-25T01:33:12Z
committer_date: 2017-10-25T01:33:12Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Don't try to show row counts for views

  Also handle tables/views with spaces in their name in the URL.


sha: 1ae8ea0f03cfb9f25b1e25f3194c456c3649789c
author_date: 2017-10-25T00:06:23Z
committer_date: 2017-10-25T00:06:23Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Started implementing ?name__contains=X filters

  So far we support __contains=, __startswith=, __endswith= and __exact=

  Refs #23


sha: 4c7379a898df426af0c31159e5cb06d672189301
author_date: 2017-10-25T00:01:34Z
committer_date: 2017-10-25T00:01:34Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Don't crash on weird character encodings

  Expecting SQLite columns to all be valid utf8 doesn't work, because we are
  deailing with all kinds of databases. Instead, we now use the 'replace'
  encoding mode to replace any non-UTF8 characters with a [X] character.


sha: bc9379aabcedce7fbc661ac15008d8801199a045
author_date: 2017-10-24T15:07:52Z
committer_date: 2017-10-24T15:07:52Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Added .jsono extension

  Returns JSON key/value objects for each row instead of lists of values.

  Closes #6


sha: 6a9fdcc0718aea2cbc01ae4d60b9a1fba3601a66
author_date: 2017-10-24T05:54:58Z
committer_date: 2017-10-24T05:54:58Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Added addressable page per row

  Refs #1 - only exists for tables with introspectable primary keys.

  Still need to link to this page.

  Also added first unit tests - refs #9


sha: 606ff9e35e007ae58a491d417f47779034bacabc
author_date: 2017-10-24T05:53:13Z
committer_date: 2017-10-24T05:53:13Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  python app.py --build to generate build-metadata.json

  This is now run by the Dockerfile to build this at compile time.


sha: 12f7e1dc5624d14f644abead18bd90b420b6d97e
author_date: 2017-10-24T02:36:44Z
committer_date: 2017-10-24T02:36:44Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Hashed URLs now have far-future cache expiry

  Since the URL now includes a hash of the database, we can return a Cache-
  Control: max-age=31536000 header for every response.

  The exception is our 302 redirects. These we now serve with a Link: header
  that tells any HTTP/2 server-push aware fronting proxies (such as Cloudfront)
  to push the target of the redirect.

  Closes #4


sha: 6a0c5de6154893eb4269dc7b1f160726ec6395f2
author_date: 2017-10-23T16:02:40Z
committer_date: 2017-10-23T16:02:40Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  ensure_build_metadata() function for metadata

  This will be run at compile time - the goal is to generate a build-
  metadata.json file with a bunch of useful facts about the databases that could
  be expensive to generate at run-time.

  Example metadata:

      {
          "flights": {
          "file": "flights.db",
          "tables": {
              "airlines": 6048,
              "airports": 8107,
              "routes": 67663
          },
          "hash": "07d1283e07786b1235bb7041ea445ae103d1571565580a29eab0203c555725fd"
      }

  So far we have a sha256 hash of the database file itself, plus a row count for
  each table.

  Fixes #11


sha: 45df15fe23227306aca53dc99eeb66d9e272e38e
author_date: 2020-02-11T05:19:54Z
committer_date: 2020-02-11T05:19:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Attempt to fix the build

  Suggestion from here: https://github.com/bluethon/bluethon/blob/fedbdb506a49ddba3b972f3fd35772b65b241390/languages/python/pip/pip_note.md#L13


sha: 0988f2eccc2dfa26b1a55243582222f540a72838
author_date: 2020-01-31T00:21:26Z
committer_date: 2020-01-31T00:21:26Z
raw_author: 85de645274a2cefaeda2a43f117f5e672fd8e2f9
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Explicitly include tests and docs in sdist (#75)

  Also exclude 'tests' from runtime installation - thanks, @jayvdb


sha: 405e092d5916e70df10f82d15e9c052aa9ee8d80
author_date: 2019-09-02T23:42:28Z
committer_date: 2019-09-02T23:42:28Z
raw_author: a83a9ad7fdcc8d400257ebb4c5d09638aa09f73b
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Option to add triggers when enabling FTS (#57)

  --create-triggers CLI option and create_triggers=True in the Python library

  * Add an option to create triggers for fts table.
  * Add cli option for the create-update-trigger.
  * Add tests for the create-update-trigger option.
  * Change FTS table escaping to square brackets.


sha: 9faa98222669723d31e918bb16a42c13c363817f
author_date: 2019-08-23T12:19:41Z
committer_date: 2019-08-23T12:19:41Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Ability to introspect and run queries against views (#55)

  * db.views_names() method and and db.views property
  * Separate View and Table classes, both subclassing new Queryable class
  * view.drop() method
  * Updated documentation


sha: 0747dabb24b608e8524de4858ce50c60ba7e471b
author_date: 2019-07-28T15:43:50Z
committer_date: 2019-07-28T15:43:50Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  table.update() method

  * Also now set .last_pk to lastrowid for rowid tables
  * table.pks introspection now returns ["rowid"] for rowid tables

  Closes #35


sha: 9cb045284ede8009c12abdb1755b5b20f6ccff5f
author_date: 2019-07-28T11:59:32Z
committer_date: 2019-07-28T11:59:32Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fix for too many SQL variables on bulk insert

  SQLite has a max of 999 variables per query, so bulk inserts of e.g. 100 records with 11 columns each were failing with an error.

  We now dynamically adjust the batch_size to ensure this doesn't happen.

  Closes #50


sha: 580502431614d3653c93249988290265f3163d4b
author_date: 2019-07-23T13:06:59Z
committer_date: 2019-07-23T13:06:59Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Implemented table.lookup(...), closes #44

  * Add pk column if missing from insert
  * Implemented table.lookup(...)


sha: 57e43baece0936d75c74711f5f6835a5c1c1ac42
author_date: 2019-07-22T23:30:54Z
committer_date: 2019-07-22T23:30:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Table options can now be passed to constructor OR to insert_all()

  If you want to set default options for a table, you can do this:

      table = db.table("dogs", pk="id", column_order=["name", "age"])

  If you pass those keyword arguments to the .insert/.update/etc
  methods they will over-ride the defaults you set on the table.

      table = db["dogs"] # This still works too


sha: c65b67ca46f70e2da46a5b945f4ed358173262e9
author_date: 2019-07-15T04:28:51Z
committer_date: 2019-07-15T04:28:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  .get() method plus support for compound primary keys (#40)

  * create_table now handles compound primary keys
  * CLI now accepts multiple --pk for compound primary keys
  * Docs for compound primary keys with CLI and Python library
  * New .get() method plus documentation

  Closes #36, closes #39


sha: 91311bb0db14d410200845b2367f3c9d73e74db6
author_date: 2019-07-14T19:24:45Z
committer_date: 2019-07-14T19:24:45Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Sphinx docs now pull version info from git tag
  Based on http://dreamiurg.net/2011/10/03/using-git-to-get-version-information/


sha: 50e2f94b583436b1a6c54be04e78a3029de6b521
author_date: 2019-05-29T04:54:43Z
committer_date: 2019-05-29T04:54:43Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Ability to add a column that is a foreign key reference

  Python API:

      db["dogs"].add_column("species_id", fk="species")
      # or
      db["dogs"].add_column("species_id", fk="species", fk_col="ref")

  CLI:

      $ sqlite-utils add-column mydb.db dogs species_id --fk species
      # or
      $ sqlite-utils add-column mydb.db dogs species_id --fk species --fk-col ref

  Closes #16


sha: 00c5a49a87e1ef3e39bb7ec5ab61f7c17f9ecd60
author_date: 2019-05-29T04:15:57Z
committer_date: 2019-05-29T04:15:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Option to ignore inserts if primary key exists already

  Support for SQLite's INSERT OR IGNORE

  In the API layer it looks like this:

      fresh_db["test"].insert({"id": 1, "bar": 3}, ignore=True)

  For the CLI layer it looks like this:

      $ sqlite-utils insert data.db dogs dogs.json --ignore

  Closes #21


sha: f8d3b7cfe5c1950b0749d40eb2640df50b52f651
author_date: 2019-02-24T21:33:45Z
committer_date: 2019-02-24T21:33:45Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  sqlite-utils add-foreign-key books.db books author_id authors id

  Command for adding foreign keys to existing tables. Closes #2


sha: e1ca938aa1c84367fd9d4786b9709c56f3e6e778
author_date: 2019-02-24T21:10:51Z
committer_date: 2019-02-24T21:10:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  table.add_foreign_key(column, other_table, other_column)

  New mechanism for adding foreign key constraints to an existing SQLite
  table.

  SQLite ALTER TABLE does not support this out-of-the-box, so I instead
  had to write some careful code that uses PRAGMA writable_schema = 1 to
  directly modify the sqlite_master table.

  Refs #2


sha: f2ca48c0dad373abe307536a96af24f73934ed7d
author_date: 2019-02-23T01:40:21Z
committer_date: 2019-02-23T01:40:21Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Default command now executes queries, --csv or --json

  I replaced the following commands:

      sqlite-utils json db.db "select * from table"
      sqlite-utils csv db.db "select * from table"

  With a unified 'query' command, which is now set as the default:

      sqlite-utils db.db "select * from table"
      sqlite-utils db.db "select * from table" --csv


sha: 82f0f6076ab5042faf870339dc49a570133e1d2a
author_date: 2019-01-29T15:28:12Z
committer_date: 2019-01-29T15:28:12Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  sqlite-utils insert db.db foo - --csv

  New option for efficiently inserting rows from a CSV.

  Uses a generator so this will happily consume enormous CSV files without
  needing to slurp the whole thing into memory first.


sha: 50589f8523751191559e8d812c2ee0889da06e50
author_date: 2019-01-28T06:26:45Z
committer_date: 2019-01-28T06:26:45Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  CLI insert tool now uses generators, closes #7

  Also cleaned up the logic so we commit rows in batches too.


sha: 3f2e711a4bb59c868abd03d8b95c53617cef7740
author_date: 2019-01-26T18:58:45Z
committer_date: 2019-01-26T18:59:01Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Refactored to use itertools

  Found an itertools mechanism that works for iterating
  through the current and next row in the cursor.


sha: 9501ba4bf1b96aeefe26e261de085839e9a97e67
author_date: 2019-01-25T07:04:52Z
committer_date: 2019-01-25T07:04:52Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  sqlite-utils table_names blah.db is now tables blah.db

  Travis tests were failing because on OS X the command was this:

     sqlite-utils table_names blah.db

  But in Travis CI the command was this:

     sqlite-utils table-names blah.db

  Renaming it to tables fixes this inconsistency.


sha: 42b2b4b785e3163371e92a9cc085bc47e7c83107
author_date: 2019-01-25T06:54:32Z
committer_date: 2019-01-25T06:54:32Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Upgrade sqlite3 in Travis so we can test against FTS5

  Using recipe from https://linuxhint.com/install-sqlite-ubuntu-linux-mint/


sha: 8437fe30912967a0d74c711597e0597314bea11e
author_date: 2019-01-25T03:08:52Z
committer_date: 2019-01-25T03:08:52Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "No need to skip black under Python 3.7 any more"

  It turns out the black tests still fail in Travis against that version.

  This reverts commit d18687a30a2bb14370248d8ebd446e9838d7828e.


sha: d1209a2c453311432dcc41966a81a39d895e9fae
author_date: 2018-08-13T00:33:13Z
committer_date: 2018-08-13T00:33:13Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Use FTS4 when running the tests

  Because the version of sqlite3 running in Travis CI does not have FTS5


sha: 34a5c0e1e8d1e7e685b0ba73803d153552033aac
author_date: 2018-08-13T00:17:14Z
committer_date: 2018-08-13T00:17:14Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Documented insert_all() and upsert() and upsert_all()

  Also re-titled main docs page to 'Python API'


sha: 741e8f7fe563e18fe9a12ac1ce38157e8c903505
author_date: 2018-08-02T15:17:29Z
committer_date: 2018-08-02T15:17:29Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Make .indexes compatible with older SQLite versions (#1)

  Older SQLite versions return a different set of columns from the PRAGMA we are using.


sha: 0aa28293adedc488eb9107dc52b5e9a124887fbd
author_date: 2018-08-01T15:29:53Z
committer_date: 2018-08-01T15:29:53Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Fix compatibility with SQLite prior to 3.16.0

  pragma_index_info() and pragma_index_list() were introduced in 3.16.0 but the
  version of SQLite running in Travis CI is earlier than that, hence the test
  failures:

  https://travis-ci.com/simonw/sqlite-utils/jobs/137617744


sha: 5deb65f0623bff03421f50d3c61f699b981ae18b
author_date: 2018-07-31T03:30:23Z
committer_date: 2018-07-31T03:30:23Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Now you just 'from sqlite_utils import Database'

  Plus fixed ad_id in the Russian ads example in the docs


sha: 56e29158fe5174a5b06d0a58090da7fb4624ed60
author_date: 2018-07-28T18:18:40Z
committer_date: 2018-07-28T18:18:40Z
raw_author: 2946d096d0cdefdc017559e6b57e87658736e843
raw_committer: 2946d096d0cdefdc017559e6b57e87658736e843
message:
  Don't run black test on Python 3.7

  It breaks on that version - see https://github.com/ambv/black/issues/425

  But that's OK, we only need it to run onder one version anyway.


sha: b314e088c59425122fb2b2abde8741010d9d274a
author_date: 2020-05-04T17:40:48Z
committer_date: 2020-05-04T17:40:48Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-asyncio requirement from ~=0.10.0 to >=0.10,<0.13 (#753)

  Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
  - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.12.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 707fe039947b3e48f2b6dcfe8e577d76b617f2a5
author_date: 2020-05-04T17:14:46Z
committer_date: 2020-05-04T17:14:46Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update beautifulsoup4 requirement from ~=4.8.1 to >=4.8.1,<4.10.0 (#720)

  Updates the requirements on [beautifulsoup4](http://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: dbd2d70b3819a7041bb36a527033d77c85683c05
author_date: 2020-05-04T17:14:25Z
committer_date: 2020-05-04T17:14:25Z
raw_author: 5c0f309ec7c7fbfad14fc6aead2238ca497fa84c
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  asgi: check raw_path is not None (#719)

  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.


sha: c91fb9e3d4f0632d4ef25a21165739ab88a9d491
author_date: 2020-05-04T17:13:41Z
committer_date: 2020-05-04T17:13:41Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest requirement from ~=5.2.2 to >=5.2.2,<5.5.0 (#721)

  Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest/releases)
  - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.2...5.4.1)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: aa064de3f400899dbf61f2d33a035fba4017596c
author_date: 2020-05-04T17:13:15Z
committer_date: 2020-05-04T17:13:15Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update jinja2 requirement from ~=2.10.3 to >=2.10.3,<2.12.0 (#722)

  Updates the requirements on [jinja2](https://github.com/pallets/jinja) to permit the latest version.
  - [Release notes](https://github.com/pallets/jinja/releases)
  - [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst)
  - [Commits](https://github.com/pallets/jinja/compare/2.10.3...2.11.1)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 109c5a430d53fe38b1300e0daa20f5cef047a08e
author_date: 2020-05-04T16:48:03Z
committer_date: 2020-05-04T16:48:03Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update janus requirement from ~=0.4.0 to >=0.4,<0.6 (#734)

  Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version.
  - [Release notes](https://github.com/aio-libs/janus/releases)
  - [Changelog](https://github.com/aio-libs/janus/blob/master/CHANGES.rst)
  - [Commits](https://github.com/aio-libs/janus/compare/v0.4.0...v0.5.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: e232f77055880b38cc0b738607cd50cde9188eaf
author_date: 2020-05-04T16:45:49Z
committer_date: 2020-05-04T16:45:49Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update mergedeep requirement from ~=1.1.1 to >=1.1.1,<1.4.0 (#728)

  Updates the requirements on [mergedeep](https://github.com/clarketm/mergedeep) to permit the latest version.
  - [Release notes](https://github.com/clarketm/mergedeep/releases)
  - [Commits](https://github.com/clarketm/mergedeep/compare/v1.1.1...v1.3.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 985e59493e44d6fcebf7a30f693f4edecee3e90d
author_date: 2020-05-04T16:17:48Z
committer_date: 2020-05-04T16:17:48Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update aiofiles requirement from ~=0.4.0 to >=0.4,<0.6 (#725)

  Refs #754

  Updates the requirements on [aiofiles](https://github.com/Tinche/aiofiles) to permit the latest version.
  - [Release notes](https://github.com/Tinche/aiofiles/releases)
  - [Commits](https://github.com/Tinche/aiofiles/compare/v0.4.0...v0.5.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 4433306c1855ad69840cc76cbd41086137572be2
author_date: 2020-05-08T16:05:46Z
committer_date: 2020-05-08T16:05:46Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Improvements + docs for db.execute() and Results class

  * Including new results.first() and results.single_value() methods. Closes #685


sha: 6d95cb4f9146a5c4584a147bdf243c778a0f23f5
author_date: 2020-05-28T04:09:16Z
committer_date: 2020-05-28T04:09:16Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Unit test for register_facet_classes plugin, closes #773

  I was a bit lazy with this one. I didn't hook up a test for the facet_results mechanism.
  The custom facet hook isn't a great design so I will probably rethink it at some point
  in the future anyway.


sha: 81be31322a968d23cf57cee62b58df55433385e3
author_date: 2020-05-29T23:18:01Z
committer_date: 2020-05-29T23:22:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New implementation for RequestParams

  - no longer subclasses dict
  - request.args[key] now returns first item, not all items
  - removed request.raw_args entirely

  Closes #774


sha: 84616a2364df56f966f579eecc0716b9877f0d70
author_date: 2020-05-29T22:51:30Z
committer_date: 2020-05-29T22:51:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  request.args.getlist() returns [] if missing, refs #774

  Also added some unit tests for request.args


sha: 124acf34a678f0af438dc31a2dceebf28612f249
author_date: 2020-05-30T18:39:46Z
committer_date: 2020-05-30T18:39:46Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Removed db.get_outbound_foreign_keys method

  It duplicated the functionality of db.foreign_keys_for_table.


sha: ca56c226a9f1b02e871d7d7b392619a805b7f1ed
author_date: 2020-05-30T14:33:02Z
committer_date: 2020-05-30T14:33:02Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Renamed test_database.py to test_internals_database.py

  Also added a db fixture to remove some boilerplate.


sha: dfdbdf378aba9afb66666f66b78df2f2069d2595
author_date: 2020-06-01T05:00:36Z
committer_date: 2020-06-01T05:00:36Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Added /-/permissions debug tool, closes #788

  Also started the authentication.rst docs page, refs #786.

  Part of authentication work, refs #699.


sha: 461c82838d65dd9f61c5be725343a82c61b5c3f3
author_date: 2020-05-30T22:06:33Z
committer_date: 2020-06-01T01:16:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Implemented actor_from_request with tests, refs #699

  Also added datasette argument to permission_allowed hook


sha: a7137dfe069e5fceca56f78631baebd4a6a19967
author_date: 2020-06-02T21:49:28Z
committer_date: 2020-06-02T21:49:28Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  /-/plugins now shows details of hooks, closes #794

  Also added /-/plugins?all=1 parameter to see default plugins.


sha: aa82d0370463580f2cb10d9617f1bcbe45cc994a
author_date: 2020-06-03T15:16:50Z
committer_date: 2020-06-03T15:16:50Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Basic writable canned queries

  Refs #698. First working version of this feature.

  * request.post_vars() no longer discards empty values


sha: 84a9c4ff75460f91c049bd30bba3cee1fd89d9e2
author_date: 2020-06-05T19:05:57Z
committer_date: 2020-06-05T19:05:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  CSRF protection (#798)

  Closes #793.

  * Rename RequestParameters to MultiParams, refs #799
  * Allow tuples as well as lists in MultiParams, refs #799
  * Use csrftokens when running tests, refs #799
  * Use new csrftoken() function, refs https://github.com/simonw/asgi-csrf/issues/7
  * Check for Vary: Cookie hedaer, refs https://github.com/simonw/asgi-csrf/issues/8


sha: 49d6d2f7b0f6cb02e25022e1c9403811f1fa0a7c
author_date: 2020-06-09T00:05:44Z
committer_date: 2020-06-09T00:05:44Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  allow_sql block to control execute-sql upermission in metadata.json, closes #813

  Also removed the --config allow_sql:0 mechanism in favour of the new allow_sql block.


sha: e0a4664fbab5556454dac7f3c798253a34db2928
author_date: 2020-06-08T22:09:57Z
committer_date: 2020-06-08T22:09:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Better example plugin for permission_allowed

  Also fixed it so default permission checks run after plugin permission checks, refs #818


sha: dcec89270a2e3b9fabed93f1d7b9be3ef86e9ed2
author_date: 2020-06-08T18:20:21Z
committer_date: 2020-06-08T18:20:59Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  View list respects view-table permission, refs #811

  Also makes a small change to the /fixtures.json JSON:

      "views": ["view_name"]

  Is now:

      "views": [{"name": "view_name", "private": true}]


sha: 9b42e1a4f5902fb7d6ad0111189900e2656ffda3
author_date: 2020-06-08T03:50:37Z
committer_date: 2020-06-08T03:50:37Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  view-database permission

  Also now using 🔒 to indicate private resources - resources that
  would not be available to the anonymous user. Refs #811


sha: 613fa551a1be31645deb0ece4b46638c181827e0
author_date: 2020-06-08T03:14:27Z
committer_date: 2020-06-08T03:14:27Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Removed view-row permission, for the moment - refs #811

  https://github.com/simonw/datasette/issues/811#issuecomment-640338347


sha: 198545733b7a34d7b36ab6510ed30fb7687bcc7e
author_date: 2020-06-10T23:56:53Z
committer_date: 2020-06-10T23:56:53Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Document that "allow": {} denies all

  https://github.com/simonw/datasette/issues/831#issuecomment-642324847


sha: 9f236c4c00689a022fd1d508f2b809ee2305927f
author_date: 2020-06-10T20:06:46Z
committer_date: 2020-06-10T20:06:46Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Warn that register_facet_classes may change, refs #830

  Also documented policy that plugin hooks should not be shipped without a real example. Refs #818


sha: 57e812d5de9663a3c177e0344f4d1e552a74d484
author_date: 2020-06-10T19:39:54Z
committer_date: 2020-06-10T19:39:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  ds_author cookie can now expire, closes #829

  Refs https://github.com/simonw/datasette-auth-github/issues/62#issuecomment-642152076


sha: b906030235efbdff536405d66078f4868ce0d3bd
author_date: 2020-06-12T01:19:30Z
committer_date: 2020-06-12T01:19:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release Datasette 0.44

  Refs #395, #519, #576, #699, #706, #774, #777, #781, #784, #788, #790, #797,
  #798, #800, #802, #804, #819, #822, #825, #826, #827, #828, #829, #830,
  #833, #836, #837, #839

  Closes #806.


sha: 1f423790899f2867cb24f3705f4afdef363f01f1
author_date: 2020-06-22T00:52:58Z
committer_date: 2020-06-22T00:52:58Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Improved intro on plugin_hooks.rst page, refs #687

  https://datasette.readthedocs.io/en/latest/plugin_hooks.html


sha: 1bb33dab49fd25f77b9f8e7ab7ee23b3d64c123c
author_date: 2020-06-24T18:50:55Z
committer_date: 2020-06-24T18:50:55Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-asyncio requirement from <0.13,>=0.10 to >=0.10,<0.15 (#866)

  Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
  - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.14.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 563f5a2d3ab30ad08daee38f5ec3ed6429ac9206
author_date: 2020-06-28T02:58:16Z
committer_date: 2020-06-28T02:58:16Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Magic parameters for canned queries

  Closes #842

  Includes a new plugin hook, register_magic_parameters()


sha: d6e03b04302a0852e7133dc030eab50177c37be7
author_date: 2020-06-30T23:40:50Z
committer_date: 2020-06-30T23:40:50Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Cascading view permissions, closes #832

  - If you have table permission but not database permission you can now view the table page
  - New BaseView.check_permissions() method


sha: ab76eddf31bef99630cc78f462a0b67624db60ac
author_date: 2020-06-30T22:49:06Z
committer_date: 2020-06-30T22:49:06Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Express no opinion if allow block is missing

  Default permission policy was returning True by default for permission
  checks - which means that if allow was not defined for a level it would
  be treated as a passing check.

  This is better: we now return None of the allow block is not defined,
  which means 'I have no opinion on this' and allows other code to make
  its own decisions.

  Added while working on #832


sha: 9ac6292614a332ddc5d0868abe4a72f8f48bc7ac
author_date: 2020-06-30T22:00:17Z
committer_date: 2020-06-30T22:00:17Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  _header_x now defaults to empty string

  Prior to this a request to e.g. https://latest.datasette.io/fixtures/magic_parameters
  which did not include a User-Agent header would trigger a 500 error.


sha: ea99a4431ce5bc2d65a3496da5b38e1986550a96
author_date: 2020-07-03T03:08:32Z
committer_date: 2020-07-03T03:08:32Z
raw_author: a83a9ad7fdcc8d400257ebb4c5d09638aa09f73b
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Only load Python files from plugins-dir

  Pull request #890. Thanks, @amjith!

  * Load only python files from plugins-dir
  * Add a test to verify non-python files are not loaded as plugins


sha: f1f581b7ffcd5d8f3ae6c1c654d813a6641410eb
author_date: 2020-07-01T21:43:07Z
committer_date: 2020-07-01T21:43:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release notes for 0.45

  Refs #687, #807, #812, #832, #834, #835, #840, #842, #846, #852, #854, #863, #864, #870


sha: f7c3fc978ca787e9bbd49357c649d93042396b44
author_date: 2020-07-01T19:26:30Z
committer_date: 2020-07-01T19:26:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  datasette-auth-tokens improved description

  Refs https://github.com/simonw/datasette-auth-tokens/issues/1


sha: ae4593316ccf5e42ad26f27033193834a7e696c8
author_date: 2020-07-06T21:18:23Z
committer_date: 2020-07-08T17:26:20Z
raw_author: f2f4d10a554519ea00fb44a5f6377123c59e1f22
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Add insert --truncate option

  Deletes all rows in the table (if it exists) before inserting new rows.
  SQLite doesn't implement a TRUNCATE TABLE statement but does optimize an
  unqualified DELETE FROM.

  This can be handy if you want to refresh the entire contents of a table
  but a) don't have a PK (so can't use --replace), b) don't want the table
  to disappear (even briefly) for other connections, and c) have to handle
  records that used to exist being deleted.

  Ideally the replacement of rows would appear instantaneous to other
  connections by putting the DELETE + INSERT in a transaction, but this is
  very difficult without breaking other code as the current transaction
  handling is inconsistent and non-systematic.  There exists the
  possibility for the DELETE to succeed but the INSERT to fail, leaving an
  empty table.  This is not much worse, however, than the current
  possibility of one chunked INSERT succeeding and being committed while
  the next chunked INSERT fails, leaving a partially complete operation.


sha: f8277d0fb9c05a88a9ff01d996e31d55f0f0a645
author_date: 2020-07-08T05:14:04Z
committer_date: 2020-07-08T05:14:04Z
raw_author: f25304fb12f6d6fab36f551427610ed8e96f0c2f
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  sqlite-utils query can now run DML (#120)

  * Failing test showing that DML in `sqlite-utils query` doesn't work
  * Run `sqlite-utils query` in a transaction so that DML is committed

  Thanks, @tsibley!


sha: a87f9d9da5d45fe5ea2c65acdb9447c7eda2b23e
author_date: 2020-07-23T14:52:36Z
committer_date: 2020-07-23T14:52:36Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  README table of contents action

  https://github.com/simonw/til/blob/master/github-actions/markdown-table-of-contents.md


sha: 092874202c8748d6e0d4800eaf707c0145d95ffe
author_date: 2020-07-25T00:04:06Z
committer_date: 2020-07-25T00:04:06Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Improvements to allow block logic and debug tool

  true and false allow block values are now supported, closes #906

  Added a bunch of demo links to the documentation, refs #908


sha: 6be5654ffab282e8cf39cc138ba2d4496ebc7407
author_date: 2020-07-24T20:39:53Z
committer_date: 2020-07-24T20:39:53Z
raw_author: 9585cefab9c28adcb0c2d7fccbd48333cd74642c
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Exclude tests from package, properly this time

  The `exclude` argument to `find_packages` needs an iterable of package
  names.

  Closes #456 - thanks, @abeyerpath!


sha: c5c12a797f0b81cd5862dcd50354b4b571e9bf5a
author_date: 2020-07-29T21:26:03Z
committer_date: 2020-07-29T21:26:03Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest requirement from <5.5.0,>=5.2.2 to >=5.2.2,<6.1.0 (#910)

  Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest/releases)
  - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.2...6.0.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 2d7fa8b9058dfbf9c7c371cdeec115d32a177dc9
author_date: 2020-07-31T18:42:38Z
committer_date: 2020-07-31T18:42:38Z
raw_author: 46e4cbbe1f073e93ec59b6ee14963e6b1c627496
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use None as a default arg (#901)

  Thanks, @fcatus!

  * Use None as a default arg
  * Black formatting fix

  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: 3fa261d1d2034b9444526ad764600f9798d9058c
author_date: 2020-08-11T03:26:42Z
committer_date: 2020-08-11T03:26:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Removed Python 3.5 installation instructions

  Suggested here: https://github.com/simonw/datasette/discussions/921#discussioncomment-49362


sha: 1a805288abe8d155b6dad227221e5f70311d06c3
author_date: 2020-08-12T00:31:53Z
committer_date: 2020-08-12T00:31:56Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Updating homebrew plugin installation instructions

  This will start working as soon as Datasette 0.47 ships. Refs #923


sha: e139a7619f63d45ca2ff1ee108b933e17b5675b3
author_date: 2020-08-12T00:24:40Z
committer_date: 2020-08-12T00:24:40Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  'datasette --get' option, closes #926

  Also made a start on the datasette.utils.testing module, refs #898


sha: d03fc607b355f22f7bfee4387d46f13f12463420
author_date: 2020-08-12T16:56:36Z
committer_date: 2020-08-12T16:56:36Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Package as sdist as well, refs #133

  Also refs https://github.com/simonw/homebrew-datasette/issues/10


sha: b86f94883b1d827f85b07009e8346b8e9c6eeefa
author_date: 2020-08-15T22:35:31Z
committer_date: 2020-08-15T22:35:31Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Don't hang in db.execute_write_fn() if connection fails

  Closes #935

  Refs https://github.com/simonw/latest-datasette-with-all-plugins/issues/3


sha: 5e0b72247ecab4ce0fcec599b77a83d73a480872
author_date: 2020-08-18T05:09:34Z
committer_date: 2020-08-18T05:09:34Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Run CI on GitHub Actions, not Travis

  * Run CI on GitHub Actions, not Travis - refs #940
  * Update documentation refs to Travis
  * Release action now runs parallel tests, then pushes to PyPI, then Docker Hub


sha: 947bb7626fd1763608a470adf9cf5f156ef003e9
author_date: 2020-08-28T22:30:13Z
committer_date: 2020-08-28T22:30:13Z
raw_author: a02cf01c415b3ca2d3b4458167191f30850ff9dd
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  insert_all(..., alter=True) works for columns introduced after first 100 records

  * Insert all columns for every chunk
  * Update unit test to reflect new behaviour
  * Test that exception is raised
  * Update documentation

  Closes #139. Thanks, Simon Wiles!


sha: db02e87840e0b86ec35fcdfb170d7a879189adb9
author_date: 2020-09-07T23:18:07Z
committer_date: 2020-09-07T23:18:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Build demo with sqlite-utils>=2.17

  To get the fix for this issue: https://github.com/simonw/sqlite-utils/issues/149


sha: d0c752d50c9ddd1d094a26837347c970a9b34872
author_date: 2020-09-07T15:43:37Z
committer_date: 2020-09-07T15:43:37Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed a couple of tiny HTML bugs, thanks curlylint

      curlylint datasette/templates

  https://github.com/thibaudcolas/curlylint


sha: cf2cb244faf992118f34aa196387a4ef8b39a20f
author_date: 2020-09-07T21:56:59Z
committer_date: 2020-09-07T21:56:59Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Tracer mechanism for showing underlying SQL queries

  * Pass a tracer= function to Database constructor
  * New db.tracer() contextmanager
  * Neater SQL indentation, because tracer means it could be visible now
  * New db.execute() and db.executescript() methods

  Closes #150


sha: c44906429735e9c23774404dc105913f3ff90b7c
author_date: 2020-09-07T20:46:12Z
committer_date: 2020-09-07T20:46:12Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Additional tests for WAL mode

  This should have been included in 2d2d724e32824095b0bf267a38d9c6fd628cc706

  Refs #132


sha: e6d202b742a7b531fffa593703d34f8337632d68
author_date: 2020-09-08T23:20:36Z
committer_date: 2020-09-08T23:20:36Z
raw_author: a02cf01c415b3ca2d3b4458167191f30850ff9dd
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Handle case where subsequent records (after first batch) include extra columns

  Refs #145.

  * Extract build_insert_queries_and_params
  * Extract insert_chunk so it can be called recursively

  Thanks, @simonwiles


sha: 64799df78b14a12084d1def91c561abdcbcd8773
author_date: 2020-09-08T22:18:12Z
committer_date: 2020-09-08T22:18:12Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  .optimize() no longer cleans up _docsize

  This isn't necessary any more since the new .rebuild_fts()
  method can achieve the same thing.

  Refs #155, #153


sha: 847378d31eed6a0fc218d645e4c722d75db8bda2
author_date: 2020-09-18T22:35:23Z
committer_date: 2020-09-18T22:35:23Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed broken test caused by autoescaping templates

  I broke this in 0bf51d404929f5a019fdcd96c9fc5b8f780a3347


sha: e23eedb4ce4efbf24fd01b80c0209de4b9aba2bf
author_date: 2020-09-20T22:17:25Z
committer_date: 2020-09-20T22:17:25Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  ignore=True argument for add_foreign_key, closes #112

  Also --ignore for add-foreign-key command

  Plus table.add_foreign_key(...) now returns self, allowing more chaining


sha: 022cdd97a9ddab1a152e23e1e1c42e78c1ed0fa9
author_date: 2020-09-24T15:43:55Z
committer_date: 2020-09-24T15:43:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Much, much faster extract() implementation

  Takes my test down from ten minutes to four seconds!

  * Removed unnecessary update() optimization
  * Added column_order= to .transform() and .transform_sql()
  * Tests for reusing lookup table in extract()

  Closes #172


sha: 1f021c37110fc9019b0ef70062c28c335e568ae2
author_date: 2020-09-28T22:16:34Z
committer_date: 2020-09-28T22:16:34Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest requirement from <6.1.0,>=5.2.2 to >=5.2.2,<6.2.0 (#977)

  Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest/releases)
  - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.2...6.1.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 0f2626868bd635f44f2c04d57a5e8ced1229737e
author_date: 2020-09-30T23:01:19Z
committer_date: 2020-09-30T23:01:37Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Much improved column menu display logic, refs #981

  * Menu links now take into account existing querystring
  * No longer shows facet option for primary key columns
  * Conditionally displays sort/sort-desc if already sorted
  * Does not show facet option if already faceted by this


sha: ca5ba6b77b4c973fa7ba91008a2e99debfa306b4
author_date: 2020-10-06T16:25:37Z
committer_date: 2020-10-06T16:25:37Z
raw_author: f3dfe1c3cf166dd0b9b8860a25045107a068c5df
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Document setting Google Cloud SDK properties (#995)

  Document setting Google Cloud SDK properties to avoid having to respond to interactive prompts when running `datasette publish cloudrun`.

  Thanks, @ghing!


sha: 5a184a5d211d3226e0417ee5cf8476cd887cd35e
author_date: 2020-10-06T00:32:10Z
committer_date: 2020-10-06T00:32:10Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Display column type in column action menu, closes #993

  Also added new documented db.table_column_details() introspection method.


sha: 703439bdc37e724b01bc6d7a1fc1d955795132f2
author_date: 2020-10-08T23:50:43Z
committer_date: 2020-10-08T23:50:43Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Don't suggest datasette-graphql in bulidpacks demo

  Refs #997 - it's not a great suggestion because the fivethirtyeight.db
  database has so many tables.


sha: 8e91de8e4edf6c8abeeccdf084b8870fff40a51a
author_date: 2020-10-08T01:44:05Z
committer_date: 2020-10-08T01:44:05Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Python 3.9 (#184)

  * Test against Python 3.9
  * Programming Language :: Python :: 3.9 classifier
  * Python versions badge


sha: 8f97b9b58e77f82fef1f10e9c9f6754b993544b6
author_date: 2020-10-09T16:11:24Z
committer_date: 2020-10-09T16:11:24Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  datasette.client internal requests mechanism

  Closes #943

  * Datasette now requires httpx>=0.15
  * Support OPTIONS without 500, closes #1001
  * Added internals tests for datasette.client methods
  * Datasette's own test mechanism now uses httpx to simulate requests
  * Tests simulate HTTP 1.1 now
  * Added base_url in a bunch more places
  * Mark some tests as xfail - will remove that when new httpx release ships: #1005


sha: a5a2b5feb56fef4f2b627699b7d628ee9d2d63db
author_date: 2020-10-12T20:25:09Z
committer_date: 2020-10-12T20:25:09Z
raw_author: 4499961bdf0c2728947372fbe4ff0f6d2e3041e8
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update utils.py (#10)

  Fixes the error sqlite3.OperationalError: table posts has no column named text
  and
  sqlite3.OperationalError: table photos has no column named hasSticker

  Thanks, @mattiaborsoi


sha: 4f7c0ebd85ccd8c1853d7aa0147628f7c1b749cc
author_date: 2020-10-14T23:46:46Z
committer_date: 2020-10-14T23:46:46Z
raw_author: c49d52addfdcb2a0682b83ad3b98e88426921728
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fix table name in spatialite example command (#1022)

  The example query for creating a new point geometry seems to be using a table called 'museums' but at one point it instead uses 'events'. I *believe* it is intended to be museums.


sha: 7f2edb5dd2074dce0090659021991695a984844b
author_date: 2020-10-14T21:52:07Z
committer_date: 2020-10-14T21:52:07Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update janus requirement from <0.6,>=0.4 to >=0.4,<0.7 (#1017)

  Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version.
  - [Release notes](https://github.com/aio-libs/janus/releases)
  - [Changelog](https://github.com/aio-libs/janus/blob/master/CHANGES.rst)
  - [Commits](https://github.com/aio-libs/janus/compare/v0.4.0...v0.6.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: b4a8e70957517ff44d6a9121422d266a3c5fd664
author_date: 2020-10-14T21:51:34Z
committer_date: 2020-10-14T21:51:34Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update asgiref requirement from ~=3.2.10 to >=3.2.10,<3.4.0 (#1018)

  Updates the requirements on [asgiref](https://github.com/django/asgiref) to permit the latest version.
  - [Release notes](https://github.com/django/asgiref/releases)
  - [Changelog](https://github.com/django/asgiref/blob/master/CHANGELOG.txt)
  - [Commits](https://github.com/django/asgiref/compare/3.2.10...3.3.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 21ff60e3b119af48bb9b8c9635bc701576dd1b1d
author_date: 2020-10-16T19:14:22Z
committer_date: 2020-10-16T19:14:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  --load-extension= for many more commands, closes #137

  Also added --load-extension=spatialite shortcut, closes #136


sha: b0b04bb7c185bed9bdbb9a3f3f24f264999296b6
author_date: 2020-10-18T18:37:35Z
committer_date: 2020-10-18T18:37:35Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Delete .readthedocs.yml

  It worked fine without configuration, and my attempt to build the xml version failed with an error message:

      Problem in your project's configuration. Invalid "formats": expected one of (htmlzip, pdf, epub), got xml


sha: d0cc6f4c32e1f89238ddec782086b3122f445bd4
author_date: 2020-10-22T04:57:00Z
committer_date: 2020-10-22T04:57:00Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use sphinx-to-sqlite==0.1a1

  To address this bug: https://github.com/simonw/sphinx-to-sqlite/issues/2


sha: 10c35bd371faaa0f3c98067c08f26334c9f5ea52
author_date: 2020-10-24T20:03:40Z
committer_date: 2020-10-24T20:03:40Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  urls.static_plugins() method, closes #1033

  Also documented how to package static assets and templates in plugins, closes #575


sha: f045d8559a6d2cb922a2de30fbcc896a4486b82f
author_date: 2020-10-27T16:24:21Z
committer_date: 2020-10-27T16:24:21Z
raw_author: 0bb6015e7b1a787517bbd1a604bb2c91a8a4e321
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Allow iterables other than lists in m2m records (#189)

  * Allow iterables other than Lists in m2m records
  * Add test for iterable m2m records

  Thanks, @adamwolf!


sha: 879617265262024edd93722adcdcb6c21e57f5f7
author_date: 2020-10-28T17:08:27Z
committer_date: 2020-10-28T17:08:27Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update aiofiles requirement from <0.6,>=0.4 to >=0.4,<0.7 (#1059)

  Updates the requirements on [aiofiles](https://github.com/Tinche/aiofiles) to permit the latest version.
  - [Release notes](https://github.com/Tinche/aiofiles/releases)
  - [Commits](https://github.com/Tinche/aiofiles/compare/v0.4.0...v0.6.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 78b3eeaad9189eb737014f53212082684f4bb0d4
author_date: 2020-10-29T22:01:38Z
committer_date: 2020-10-29T22:01:38Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  .blob output renderer

  * _blob_hash= checking plus refactored to use new BadRequest class, refs #1050
  * Replace BlobView with new .blob renderer, closes #1050
  * .blob downloads on arbitrary queries, closes #1051


sha: 0cb29498c796267c5e4a5545ede8058b7ca03a94
author_date: 2020-10-30T17:54:47Z
committer_date: 2020-10-30T17:54:47Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed bug with python tests/fixtures.py

  https://github.com/simonw/datasette/runs/1333357885?check_suite_focus=true


sha: 0e1e89c6ba3d0fbdb0823272952cf356f3016def
author_date: 2020-10-30T05:34:52Z
committer_date: 2020-10-30T05:35:23Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.51a1

  Refs #1056, #1039, #998, #1045, #1033, #1036, #1034, #976, #1057, #1058, #1053, #1064, #1066


sha: 561c1d2d36a89675764e4410a2a127323402eaa3
author_date: 2020-10-30T03:51:37Z
committer_date: 2020-10-30T03:51:37Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Show logout link if they are logged in AND have ds_actor cookie

  Otherwise an expired cookie will still cause the logout link to show.


sha: d53d747e6a9dbc294c0565bc5eefe9aa16989316
author_date: 2020-10-31T22:13:39Z
committer_date: 2020-10-31T22:21:49Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.51

  Refs #1014, #1016, #1019, #1023, #1027, #1028, #1033, #1034, #1036, #1039

  Closes #1076


sha: 11eb1e026f3d84cb771f8d6e204939cbaee130cd
author_date: 2020-10-31T18:16:28Z
committer_date: 2020-10-31T18:16:28Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  datasette.urls.table(..., format="json"), closes #1035

  Also improved tests for datasette.urls and added format= to some other methods


sha: f0a740ac21cba11ded8717f49d664f9549cd2f83
author_date: 2020-10-31T16:21:22Z
committer_date: 2020-10-31T16:21:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Remove load_plugin hook - closes #1073

  Refs #1042

  This reverts commit 81dea4b07ab2b6f4eaaf248307d2b588472054a1.


sha: 60f4aff9b002009b76dd9386c84d4b80e73f6b0e
author_date: 2020-11-07T02:23:56Z
committer_date: 2020-11-07T02:23:56Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Link changelog badge to /en/latest/changelog.html

  That way you can see the changelog for alpha releases. Refs #194.


sha: ce2b07c358cd68e6de4c8942d7067591b7f1be96
author_date: 2020-11-08T17:04:33Z
committer_date: 2020-11-08T17:04:37Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Updated docs for .search_sql() method

  Also improved indentation of generated SQL queries. Refs #197


sha: 30e64c8d3b3728a86c3ca42a75322cc3feb5b0c8
author_date: 2020-11-15T23:24:22Z
committer_date: 2020-11-15T23:24:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use f-strings in place of .format()

  Code transformed like so:

      pip install flynt
      flynt .
      black .


sha: 5a77f7a6494c74372bedfef6185e1beed7bea5dc
author_date: 2020-11-24T21:22:33Z
committer_date: 2020-11-24T21:22:33Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Updated docs renaming config to settings

  - config.html is now settings.html
  - ConfigOption in app.py is now Setting
  - updated documentation unit tests

  Refs #1106


sha: eb299186ed56564c181b80205e35461a297f654d
author_date: 2020-11-30T00:18:45Z
committer_date: 2020-11-30T00:19:02Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Clarify that merged_by only works for --pull-request, refs #48

  Also fixed a bug with --issue and --pull-request introduced in fa5aa9e


sha: 461670a0b87efa953141b449a9a261919864ceb3
author_date: 2020-11-30T21:29:57Z
committer_date: 2020-11-30T21:29:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Support for generated columns

  * Support for generated columns, closes #1116
  * Show SQLite version in pytest report header
  * Use table_info() if SQLite < 3.26.0
  * Cache sqlite_version() rather than re-calculate every time
  * Adjust test_database_page for SQLite 3.26.0 or higher


sha: dea3c508b39528e566d711c38a467b3d372d220b
author_date: 2020-11-30T20:09:22Z
committer_date: 2020-11-30T20:09:32Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "Support for generated columns, closes #1116" - it failed CI

  This reverts commit 37f87b5e52e7f8ddd1c4ffcf368bd7a62a406a6d.


sha: a970276b9999687b96c5e11ea1c817d814f5d267
author_date: 2020-12-01T01:19:09Z
committer_date: 2020-12-01T01:19:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Try pysqlite3 on latest.datasette.io

  --install=pysqlite3-binary to get a working demo of generated columns, refs #1119


sha: 88ac538b41a4753c3de9b509c3a0e13077f66182
author_date: 2020-12-02T23:47:37Z
committer_date: 2020-12-02T23:47:37Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  transfer-encoding: chunked for DB downloads, refs #749

  This should get >32MB downloads working on Cloud Run.


sha: 705d1a1555c4791e9be3b884285b047223ab184f
author_date: 2020-12-05T19:35:03Z
committer_date: 2020-12-05T19:35:03Z
raw_author: a74b1d810ebe1b3fb65c0fccc2b7b36623068cae
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fix startup error on windows (#1128)

  Fixes https://github.com/simonw/datasette/issues/1094

  This import isn't used at all, and causes error on startup on Windows.


sha: c5f4f0f70ce394dfec6054c3c5aaedf330887093
author_date: 2020-12-08T17:49:42Z
committer_date: 2020-12-08T17:49:42Z
raw_author: 9d65422e8ede715e91311c9f3703218f2478bf55
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use jsonify_if_need for sql updates (#204)

  * add failing tests for update with json values
  * use jsonify_if_needed in for sql updates

  Thanks, @mfa


sha: b8e85c06ab4e16579bdd470a501f300c9b30e8e1
author_date: 2020-12-16T18:31:44Z
committer_date: 2020-12-16T18:31:44Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Rewrite README HTML to fix broken internal links, closes #58

  Refs https://github.com/simonw/datasette.io/issues/46


sha: 6119bd797366a899119f1bba51c1c8cba2efc8fc
author_date: 2020-12-16T21:44:39Z
committer_date: 2020-12-16T21:44:39Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest requirement from <6.2.0,>=5.2.2 to >=5.2.2,<6.3.0 (#1145)

  Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest/releases)
  - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.2...6.2.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 8919f99c2f7f245aca7f94bd53d5ac9d04aa42b5
author_date: 2020-12-22T20:04:18Z
committer_date: 2020-12-22T20:04:18Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Improved .add_database() method design

  Closes #1155 - _internal now has a sensible name

  Closes #509 - Support opening multiple databases with the same stem


sha: 270de6527bc2afb8c5996c400099321c320ded31
author_date: 2020-12-22T19:48:54Z
committer_date: 2020-12-22T19:48:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Foreign keys for _internal database

  Refs #1099 - Datasette now uses compound foreign keys internally,
  so it would be great to link them correctly.


sha: a882d679626438ba0d809944f06f239bcba8ee96
author_date: 2020-12-23T17:04:32Z
committer_date: 2020-12-23T17:04:32Z
raw_author: 579f7a0297e61205c6ecdeaab4a5bef279202995
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Modernize code to Python 3.6+ (#1158)

  * Compact dict and set building
  * Remove redundant parentheses
  * Simplify chained conditions
  * Change method name to lowercase
  * Use triple double quotes for docstrings

  Thanks, @eumiro!


sha: 6d1828e40b17a7fa3403de7a3d3e0da9f657aa30
author_date: 2021-01-03T04:30:10Z
committer_date: 2021-01-03T04:30:10Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Don't run CodeQL against pull requests

  It failed with strange errors. https://github.com/simonw/sqlite-utils/pull/203/checks?check_run_id=1549287178


sha: 3054e0f7307da4c31850b74bd73238b33d6c750a
author_date: 2021-01-04T19:52:33Z
committer_date: 2021-01-04T19:52:33Z
raw_author: 2d4f689f43f0635ebfebca53689651b62ee95193
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Install Prettier via package.json (#1170)

  * Error if Prettier isn't already installed
  * Temporarily run Prettier check on every commit
  * Install and run Prettier via package.json
  * Trigger another prettier check on CI


sha: ef2ecc1b8987d10d375e350a51d1339172a07c55
author_date: 2021-01-11T21:33:54Z
committer_date: 2021-01-11T21:33:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Standardize on 'query string', not 'querystring', in docs

  The request property is request.query_string so this is more consistent.


sha: 57f4d7b82f9c74298c67c5640207241925b70c02
author_date: 2021-01-19T20:47:30Z
committer_date: 2021-01-19T20:47:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.54a0

  Refs #1091, #1145, #1151, #1156, #1157, #1158, #1166, #1170, #1178, #1182, #1184, #1185, #1186, #1187


sha: 0b9ac1b2e9c855f1b823a06a898891da87c720ef
author_date: 2021-01-25T17:33:29Z
committer_date: 2021-01-25T17:33:29Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Release 0.54

  Refs #509, #1091, #1150, #1151, #1166, #1167, #1178, #1181, #1182, #1184, #1185, #1186, #1187, #1194, #1198


sha: a5ede3cdd455e2bb1a1fb2f4e1b5a9855caf5179
author_date: 2021-01-25T05:13:05Z
committer_date: 2021-01-25T05:13:05Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed bug loading database called 'test-database (1).sqlite'

  Closes #1181.

  Also now ensures that database URLs have special characters URL-quoted.


sha: 1c8457ddaa487aa2e677963d37217fcb6d544e59
author_date: 2021-02-11T22:34:05Z
committer_date: 2021-02-11T22:34:05Z
raw_author: f85fb7898f36734a83fd9c8a2c2e96c751920c35
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fix import error if note has no "updated" element (#8)

  Co-authored-by: Matej Korosec <matej.korosec@bearingpoint.com>


sha: 8f042ae1fd323995d966a94e8e6df85cc843b938
author_date: 2021-02-14T21:03:17Z
committer_date: 2021-02-14T21:03:31Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fix for bug with extra columns in later chunks, closes #234

  Thanks @nieuwenhoven for the fix, proposed in #225


sha: f51a1f6c3cb2929bcf79cb4efe3b2a9886d9c25c
author_date: 2021-02-14T20:39:54Z
committer_date: 2021-02-14T20:39:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Run tests against Ubuntu, macOS and Windows

  With tests fixes for Windows, thanks to @nieuwenhoven in #225. Closes #232


sha: 6f41c8a2bef309a66588b2875c3e24d26adb4850
author_date: 2021-02-18T22:09:12Z
committer_date: 2021-02-18T22:09:12Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  --crossdb option for joining across databases (#1232)

  * Test for cross-database join, refs #283
  * Warn if --crossdb used with more than 10 DBs, refs #283
  * latest.datasette.io demo of --crossdb joins, refs #283
  * Show attached databases on /_memory page, refs #283
  * Documentation for cross-database queries, refs #283


sha: d0fd833b8cdd97e1b91d0f97a69b494895d82bee
author_date: 2021-03-07T07:41:17Z
committer_date: 2021-03-07T07:41:17Z
raw_author: 62dd4d3238df6431f690ab98cee3e5a02daf6316
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Add compile option to Dockerfile to fix failing test (fixes #696) (#1223)

  This test was failing when run inside the Docker container:
  `test_searchable[/fixtures/searchable.json?_search=te*+AND+do*&_searchmode=raw-expected_rows3]`,

  with this error:

  ```
      def test_searchable(app_client, path, expected_rows):
          response = app_client.get(path)
  >       assert expected_rows == response.json["rows"]
  E       AssertionError: assert [[1, 'barry c...sel', 'puma']] == []
  E         Left contains 2 more items, first extra item: [1, 'barry cat', 'terry dog', 'panther']
  E         Full diff:
  E         + []
  E         - [[1, 'barry cat', 'terry dog', 'panther'],
  E         -  [2, 'terry dog', 'sara weasel', 'puma']]
  ```

  The issue was that the version of sqlite3 built inside the Docker
  container was built with FTS3 and FTS4 enabled, but without the
  `SQLITE_ENABLE_FTS3_PARENTHESIS` compile option passed, which adds
  support for using `AND` and `NOT` within `match` expressions (see
  https://sqlite.org/fts3.html#compiling_and_enabling_fts3_and_fts4 and
  https://www.sqlite.org/compile.html).

  Without this, the `AND` used in the search in this test was being
  interpreted as a literal string, and so no matches were found. Adding
  this compile option fixes this.

  Thanks, @bobwhitelock


sha: 8e18c7943181f228ce5ebcea48deb59ce50bee1f
author_date: 2021-03-11T16:15:49Z
committer_date: 2021-03-11T16:15:49Z
raw_author: 1af3e5f63dd1bda5352c807571b04175d8dea2dd
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use context manager instead of plain open (#1211)

  Context manager with open closes the files after usage.

  When the object is already a pathlib.Path i used read_text
  write_text functions

  In some cases pathlib.Path.open were used in context manager,
  it is basically the same as builtin open.

  Thanks, Konstantin Baikov!


sha: af5a7f1c09f6a902bb2a25e8edf39c7034d2e5de
author_date: 2021-03-29T00:41:12Z
committer_date: 2021-03-29T00:41:12Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.56

  Refs #1005, #1031, #1141, #1229, #1236, #1239, #1246, #1247, #1252, #1266, #1276, #1278


sha: f92d823766872a6fd7e76c5249a6b2de1ab0f447
author_date: 2021-03-29T00:17:31Z
committer_date: 2021-03-29T00:17:31Z
raw_author: 50f8a5e45b42f54cd7dfc01c8c34b8736a785e77
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  ensure immutable databses when starting in configuration directory mode with (#1229)

  * check if immutables is empty list of None
  * update docs on how to create the inspect-data.json


sha: e72397d65b06b019521b6411243687464ac8d8ca
author_date: 2021-03-29T00:14:04Z
committer_date: 2021-03-29T00:14:04Z
raw_author: 62dd4d3238df6431f690ab98cee3e5a02daf6316
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Add styling to lists within table cells (fixes #1141) (#1252)

  This overrides the Datasette reset (see
  https://github.com/simonw/datasette/blob/d0fd833b8cdd97e1b91d0f97a69b494895d82bee/datasette/static/app.css#L35-L38),
  to add back the default styling of list items displayed within Datasette
  table cells.


sha: 87b583a128986982552421d2510e467e74ac5046
author_date: 2021-04-02T20:20:51Z
committer_date: 2021-04-02T20:20:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Clearer help text for --reload

  Immutable databases are not commonly used, but it's useful to clarify
  that --reload will pick up on changes to metadata.


sha: 0a7621f96f8ad14da17e7172e8a7bce24ef78966
author_date: 2021-04-03T03:42:28Z
committer_date: 2021-04-03T03:42:28Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use pytest-xdist to speed up tests (#1290)

  * Run tests in CI using pytest-xdist
  * Documentation for pytest-xdist

  Closes #1289


sha: 6ed9238178a56da5fb019f37fb1e1e15886be1d1
author_date: 2021-04-19T18:18:17Z
committer_date: 2021-04-19T18:18:17Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-asyncio requirement from <0.15,>=0.10 to >=0.10,<0.16 (#1303)

  Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
  - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.15.0)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 1b697539f5b53cec3fe13c0f4ada13ba655c88c7
author_date: 2021-04-29T15:47:49Z
committer_date: 2021-04-29T15:47:49Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 20.8b1 to 21.4b2 (#1313)

  Bumps [black](https://github.com/psf/black) from 20.8b1 to 21.4b2.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/master/CHANGES.md)
  - [Commits](https://github.com/psf/black/commits)

  Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 5e60bad40460f68122006ce704cfc163d6076f34
author_date: 2021-04-29T15:47:21Z
committer_date: 2021-04-29T15:47:21Z
raw_author: 2edd38cb3801aa07f709f083eba7cbe4f16e0978
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Upgrade to GitHub-native Dependabot (#1314)

  Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>


sha: 9b3b7e280ca718254b4ca15d40864297146a85b3
author_date: 2021-05-17T17:19:40Z
committer_date: 2021-05-17T17:19:40Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update jinja2 requirement from <2.12.0,>=2.10.3 to >=2.10.3,<3.1.0 (#1324)

  Updates the requirements on [jinja2](https://github.com/pallets/jinja) to permit the latest version.
  - [Release notes](https://github.com/pallets/jinja/releases)
  - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
  - [Commits](https://github.com/pallets/jinja/compare/2.10.3...3.0.0)

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 70dffca351375e6f542969c72ebc43c6d393d99c
author_date: 2021-05-19T16:08:12Z
committer_date: 2021-05-19T16:08:12Z
raw_author: a7fbb45ec68f58915ee5484e65e5159f5ed91182
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Remove unneeded exists=True for -a/--auth flag. (#59)

  The file does not need to exist when using an environment variable.


sha: e7b2626291040b78b9a2dbc2982ba72691fb1a0f
author_date: 2021-05-19T02:57:26Z
committer_date: 2021-05-19T02:57:26Z
raw_author: d6a64a7ba2d6c2c36f86efe56eb62e19518bfd72
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fix incorrect create-table cli description (#254)

  The description for `create-table` was duplicated from `create-index`.


sha: 6f4f9a3effeb16de0348d3cf136664f7531f498d
author_date: 2021-05-19T02:47:44Z
committer_date: 2021-05-19T02:47:44Z
raw_author: 52ec80233f4d6e83b799b7794e62fd35488fb968
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fixing insert from JSON containing strings with non-ascii characters are escaped aps unicode for lists, tuples, dicts (#258)


sha: a443dba82f43c22b03402a4f86c85558ccb526b8
author_date: 2021-05-23T00:45:54Z
committer_date: 2021-05-23T00:45:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.57a0

  Refs #1281, #1282, #1289, #1290, #1308, #1313, #1314, #1321, #1323, #1325, #1330, #1332, #1335


sha: 5e9672c9bb33e41686472db4aa427168f9e67dbe
author_date: 2021-05-22T23:55:39Z
committer_date: 2021-05-22T23:55:39Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 21.4b2 to 21.5b1 (#1321)

  Bumps [black](https://github.com/psf/black) from 21.4b2 to 21.5b1.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/commits)

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 5c3b3ef97eed55895cf48d4a9ee0635c1c4d03b8
author_date: 2021-05-22T23:54:48Z
committer_date: 2021-05-22T23:54:48Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update click requirement from ~=7.1.1 to >=7.1.1,<8.1.0 (#1323)

  Updates the requirements on [click](https://github.com/pallets/click) to permit the latest version.
  - [Release notes](https://github.com/pallets/click/releases)
  - [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
  - [Commits](https://github.com/pallets/click/compare/7.1.1...8.0.0)

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: b64d87204612a84663616e075f542499a5d82a03
author_date: 2021-05-22T23:54:24Z
committer_date: 2021-05-22T23:54:24Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update itsdangerous requirement from ~=1.1 to >=1.1,<3.0 (#1325)

  Updates the requirements on [itsdangerous](https://github.com/pallets/itsdangerous) to permit the latest version.
  - [Release notes](https://github.com/pallets/itsdangerous/releases)
  - [Changelog](https://github.com/pallets/itsdangerous/blob/main/CHANGES.rst)
  - [Commits](https://github.com/pallets/itsdangerous/compare/1.1.0...2.0.0)

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 593d3e8173b45e20ff3c95afb3df7ceb85bf7fef
author_date: 2021-05-22T23:53:56Z
committer_date: 2021-05-22T23:53:56Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update aiofiles requirement from <0.7,>=0.4 to >=0.4,<0.8 (#1330)

  Updates the requirements on [aiofiles](https://github.com/Tinche/aiofiles) to permit the latest version.
  - [Release notes](https://github.com/Tinche/aiofiles/releases)
  - [Commits](https://github.com/Tinche/aiofiles/compare/v0.4.0...v0.7.0)

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 0dfb9241718139f8ad626d22aac25bcebd3a9c9c
author_date: 2021-06-05T22:55:07Z
committer_date: 2021-06-05T22:55:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Temporarily reverting buildx support

  I need to push a container for 0.57 using this action, and I'm not ready to ship other architecture builds until we have tested them in #1344.


sha: 58746d3c514004f504223a724e948469a0d4abb3
author_date: 2021-06-05T22:06:52Z
committer_date: 2021-06-05T22:06:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.57

  Refs #263, #615, #619, #1238, #1257, #1305, #1308, #1320, #1332, #1337, #1349, #1353, #1359, #1360


sha: 368aa5f1b16ca35f82d90ff747023b9a2bfa27c1
author_date: 2021-06-05T19:48:51Z
committer_date: 2021-06-05T19:48:51Z
raw_author: b9073d8bf7774f95bd90f812e3d6e858520194be
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update docs: explain allow_download setting (#1291)

  * Update docs: explain allow_download setting

  This fixes one possible source of confusion seen in #502 and clarifies
  when database downloads will be shown and allowed.


sha: a63412152518581c6a3d4e142b937e27dabdbfdb
author_date: 2021-06-05T18:59:54Z
committer_date: 2021-06-05T18:59:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Make custom pages compatible with base_url setting

  Closes #1238

  - base_url no longer causes custom page routing to fail
  - new route_path key in request.scope storing the path that was used for routing with the base_url prefix stripped
  - TestClient used by tests now avoids accidentally double processing of the base_url prefix


sha: 9552414e1f968c6fc704031cec349c05e6bc2371
author_date: 2021-06-02T03:46:20Z
committer_date: 2021-06-02T03:46:20Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Re-display user's query with an error message if an error occurs (#1346)

  * Ignore _shape when returning errors


sha: 03b35d70e281ea48bd9b8058738ed87b13cea2de
author_date: 2021-06-02T02:56:44Z
committer_date: 2021-06-02T02:56:44Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 21.5b1 to 21.5b2 (#1352)

  Bumps [black](https://github.com/psf/black) from 21.5b1 to 21.5b2.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/commits)

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: f1c29fd6a184254aa68efadf096bcf21e848f921
author_date: 2021-05-27T04:17:43Z
committer_date: 2021-05-27T04:17:43Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  ?_col=/?_nocol= to show/hide columns on the table page

  Closes #615

  * Cog icon for hiding columns
  * Show all columns cog menu item
  * Do not allow hide column on primary keys
  * Allow both ?_col= and ?_nocol=
  * De-duplicate if ?_col= passed multiple times
  * 400 error if user tries to ?_nocol= a primary key
  * Documentation for ?_col= and ?_nocol=


sha: 51d01da30d45c1fbc1e587e6046a933529cf915e
author_date: 2021-05-29T05:01:38Z
committer_date: 2021-05-29T05:01:38Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Ability to add descending order indexes (#262)

  * DescIndex(column) for descending index columns, refs #260
  * Ability to add desc indexes using CLI, closes #260


sha: 5335f360f4d57d70cab3694b08f15729c4ca2fe2
author_date: 2021-06-20T00:17:06Z
committer_date: 2021-06-20T00:17:06Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-xdist requirement from <2.3,>=2.2.1 to >=2.2.1,<2.4 (#1378)

  Updates the requirements on [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-xdist/releases)
  - [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v2.2.1...v2.3.0)

  ---
  updated-dependencies:
  - dependency-name: pytest-xdist
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 83e9c8bc7585dcc62f200e37c2daefcd669ee05e
author_date: 2021-06-13T15:38:47Z
committer_date: 2021-06-13T15:38:47Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update trustme requirement from <0.8,>=0.7 to >=0.7,<0.9 (#1373)

  Updates the requirements on [trustme](https://github.com/python-trio/trustme) to permit the latest version.
  - [Release notes](https://github.com/python-trio/trustme/releases)
  - [Commits](https://github.com/python-trio/trustme/compare/v0.7.0...v0.8.0)

  ---
  updated-dependencies:
  - dependency-name: trustme
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: e7975657656ce02717f03703bb8ec17f2fe9b717
author_date: 2021-06-13T15:33:22Z
committer_date: 2021-06-13T15:33:22Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 21.5b2 to 21.6b0 (#1374)

  Bumps [black](https://github.com/psf/black) from 21.5b2 to 21.6b0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/commits)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 42ec59d8ee3fcfb8ac1affb772aed43b6e2a7381
author_date: 2021-06-18T15:00:52Z
committer_date: 2021-06-18T15:00:52Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  sqlite-utils memory command for directly querying CSV/JSON data

  * Turn SQL errors into click errors
  * Initial CSV-only prototype of sqlite-utils memory, refs #272
  * Implement --save plus tests for --save and --dump, refs #272
  * Re-arranged CLI query documentation, refs #272
  * Re-organized CLI query docs, refs #272
  * Docs for --save and --dump plus made SQL optional for those, refs #273
  * Replaced one last :memory: example
  * Documented --attach option for memory command, refs #272
  * Improved arrangement of CLI query documentation


sha: a6c55afe8c82ead8deb32f90c9324022fd422324
author_date: 2021-06-21T15:57:38Z
committer_date: 2021-06-21T15:57:38Z
raw_author: 90786fb02407ad60f10210c0592ee711a9a36fae
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Ensure db.path is a string before trying to insert into internal database (#1370)

  Thanks, @eyeseast


sha: 953a64467d78bca29fe6cc18bdb2baa7848e53ff
author_date: 2021-06-24T16:42:02Z
committer_date: 2021-06-24T16:42:02Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Only publish stable docs on non-preview release

  Refs https://github.com/simonw/datasette.io/issues/67


sha: baf986c871708c01ca183be760995cf306ba21bf
author_date: 2021-06-26T22:24:54Z
committer_date: 2021-06-26T22:24:54Z
raw_author: 121af5c26cc703f7b3d7219091a8e71dc39db899
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  New get_metadata() plugin hook for dynamic metadata

  The following hook is added:

      get_metadata(
        datasette=self, key=key, database=database, table=table,
        fallback=fallback
      )

  This gets called when we're building our metdata for the rest
  of the system to use. We merge whatever the plugins return
  with any local metadata (from metadata.yml/yaml/json) allowing
  for a live-editable dynamic Datasette.

  As a security precation, local meta is *not* overwritable by
  plugin hooks. The workflow for transitioning to live-meta would
  be to load the plugin with the full metadata.yaml and save.
  Then remove the parts of the metadata that you want to be able
  to change from the file.

  * Avoid race condition: don't mutate databases list

  This avoids the nasty "RuntimeError: OrderedDict mutated during
  iteration" error that randomly happens when a plugin adds a
  new database to Datasette, using `add_database`. This change
  makes the add and remove database functions more expensive, but
  it prevents the random explosion race conditions that make for
  confusing user experience when importing live databases.

  Thanks, @brandonrobertz


sha: f83c84fd51d144036924ae77d99f12b0a69e7e6f
author_date: 2021-07-11T01:36:18Z
committer_date: 2021-07-11T01:36:18Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update asgiref requirement from <3.4.0,>=3.2.10 to >=3.2.10,<3.5.0 (#1386)

  Updates the requirements on [asgiref](https://github.com/django/asgiref) to permit the latest version.
  - [Release notes](https://github.com/django/asgiref/releases)
  - [Changelog](https://github.com/django/asgiref/blob/main/CHANGELOG.txt)
  - [Commits](https://github.com/django/asgiref/commits)

  ---
  updated-dependencies:
  - dependency-name: asgiref
    dependency-type: direct:production
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: d71cac498138ddd86f18607b9043e70286ea884a
author_date: 2021-07-13T18:32:49Z
committer_date: 2021-07-13T18:32:49Z
raw_author: 2d3ef71be2a52d05e9f9ce8a03cdc8ce4f68de85
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  How to configure Unix domain sockets with Apache

  Example on how to use Unix domain socket option on Apache. Not testet.

  (Usually I would have used [`ProxyPassReverse`](https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreverse) in combination with `ProxyPass` , i.e.

  ```apache
  ProxyPass /my-datasette/ http://127.0.0.1:8009/my-datasette/
  ProxyPassReverse /my-datasette/ http://127.0.0.1:8009/my-datasette/
  ```

  and

  ```apache
  ProxyPass /my-datasette/ unix:/tmp/datasette.sock|http://localhost/my-datasette/
  ProxyPassReverse /my-datasette/ unix:/tmp/datasette.sock|http://localhost/my-datasette/
  ```


sha: a390bdf9cef01d8723d025fc3348e81345ff4856
author_date: 2021-08-09T00:38:42Z
committer_date: 2021-08-09T00:38:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Stop using firstresult=True on render_cell, refs #1425

  See https://github.com/simonw/datasette/issues/1425#issuecomment-894883664


sha: 2208c3c68e552d343e6a2872ff6e559fca9d1b38
author_date: 2021-08-03T16:36:38Z
committer_date: 2021-08-03T16:36:38Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Spelling corrections plus CI job for codespell

  * Use codespell to check spelling in documentation, refs #1417
  * Fixed spelling errors spotted by codespell, closes #1417
  * Make codespell a docs dependency

  See also this TIL:  https://til.simonwillison.net/python/codespell


sha: 6155da72c8939b5d9bdacb7853e5e8d1767ce1d5
author_date: 2021-08-10T23:09:28Z
committer_date: 2021-08-10T23:09:28Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Add reference page to documentation using Sphinx autodoc (#312)

  * Docstrings and type annotations for almost every method
  * New /reference API documentation page using Sphink autodoc
  * Custom Read The Docs config, to get autodoc working
  * Fix for #313 (add_foreign_keys() doesn't reject being called with a View)
  * Fixed #315 (.delete_where() returns [] when it should return self)


sha: c79737bb4f04d7e0eda3c440fed0c35169a04d24
author_date: 2021-08-18T22:25:18Z
committer_date: 2021-08-18T22:25:18Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Type signatures for .create_table() and .create_table_sql() and .create() and Table.__init__

  Closes #314


sha: bf622dcb82203c1cd87e914901b53afe6f90e668
author_date: 2021-08-20T00:02:48Z
committer_date: 2021-08-20T00:02:48Z
raw_author: 2035bd0fdcffb9aa3b95f21a684665482bd8c80f
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fixes for archive imports (#55)

  * Find data files in subdirectories in archives

  See #54 for discussion. This also ignores files in the new "assets"
  directory, which appear to be some stuff for a browser interface
  Twitter's created.

  * Fix list-member importer

  It appears in list data that some rows contain a `urls` key with a list
  of URLs, while others contain a `url` key with just a single one. This
  change supports either way.

  * Fix tweet import

  This was working, sorta, but wasn't properly unpacking the tweet
  data into columns. This commit fixes that in what I think should
  be a backwards-compatible way.


sha: d84e574e59c51ddcd6cf60a6f9b3d45182daf824
author_date: 2021-08-19T21:09:38Z
committer_date: 2021-08-19T21:09:38Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Ability to deploy demos of branches

  * Ability to deploy additional branch demos, closes #1442
  * Only run tests before deploy on main branch
  * Documentation for continuous deployment


sha: a1a33bb5822214be1cebd98cd858b2058d91a4aa
author_date: 2021-08-25T01:29:55Z
committer_date: 2021-08-25T01:29:55Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 21.6b0 to 21.7b0 (#1400)

  Bumps [black](https://github.com/psf/black) from 21.6b0 to 21.7b0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/commits)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 5161422b7fa249c6b7d6dc47ec6f483d3fdbd170
author_date: 2021-08-25T01:29:26Z
committer_date: 2021-08-25T01:29:26Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update trustme requirement from <0.9,>=0.7 to >=0.7,<0.10 (#1433)

  Updates the requirements on [trustme](https://github.com/python-trio/trustme) to permit the latest version.
  - [Release notes](https://github.com/python-trio/trustme/releases)
  - [Commits](https://github.com/python-trio/trustme/compare/v0.7.0...v0.9.0)

  ---
  updated-dependencies:
  - dependency-name: trustme
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 93c3a7ffbfb3378f743ebce87d033cf1ce7689e0
author_date: 2021-08-25T01:28:58Z
committer_date: 2021-08-25T01:28:58Z
raw_author: 6cabba813337e444c356d919c79ef180b01659af
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Remove underscore from search mode parameter name (#1447)

  The text refers to the parameter as `searchmode` but the `metadata.json` example uses `search_mode`. The latter doesn't actually seem to work.


sha: 0d5cc20aeffa3537cfc9296d01ec24b9c6e23dcf
author_date: 2021-10-10T01:25:33Z
committer_date: 2021-10-10T01:25:33Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "asyncio_run helper to deal with a 3.10 warning, refs #1482"

  This reverts commit 98dcabccbbf9c0800efa74df9b7d1fee81c3cd0c.


sha: 2a8c6690399ee832ee62aafdede1794f5945d911
author_date: 2021-10-13T22:35:36Z
committer_date: 2021-10-13T22:35:36Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update beautifulsoup4 requirement (#1463)

  Updates the requirements on [beautifulsoup4](http://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.

  ---
  updated-dependencies:
  - dependency-name: beautifulsoup4
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: e1012e7098056734d9c90f081493991009253390
author_date: 2021-10-13T21:47:42Z
committer_date: 2021-10-13T21:47:42Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 21.7b0 to 21.9b0 (#1471)

  Bumps [black](https://github.com/psf/black) from 21.7b0 to 21.9b0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/commits)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: a673a93b57e249f06b2d0265ce33f458258feeb0
author_date: 2021-10-13T21:11:00Z
committer_date: 2021-10-13T21:11:00Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pluggy requirement from ~=0.13.0 to >=0.13,<1.1 (#1448)

  Updates the requirements on [pluggy](https://github.com/pytest-dev/pluggy) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pluggy/releases)
  - [Changelog](https://github.com/pytest-dev/pluggy/blob/main/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pluggy/compare/0.13.0...1.0.0)

  ---
  updated-dependencies:
  - dependency-name: pluggy
    dependency-type: direct:production
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 31352914c427162f785d2610222a54a426d5215f
author_date: 2021-10-13T21:10:23Z
committer_date: 2021-10-13T21:10:23Z
raw_author: c78bb0e63f63cce7b49009493a7b927ff92e8488
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update full_text_search.rst (#1474)

  Change "above" to "below" to correct correspondence of reference to example.


sha: 6aab0217f07bff4556cc92885a14279d5b295f84
author_date: 2021-10-13T21:10:03Z
committer_date: 2021-10-13T21:10:03Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-xdist requirement from <2.4,>=2.2.1 to >=2.2.1,<2.5 (#1476)

  Updates the requirements on [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-xdist/releases)
  - [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v2.2.1...v2.4.0)

  ---
  updated-dependencies:
  - dependency-name: pytest-xdist
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 759fd97a54638c1a5e2cac65bac0ac7c07ce2305
author_date: 2021-10-13T21:09:23Z
committer_date: 2021-10-13T21:09:23Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-timeout requirement from <1.5,>=1.4.2 to >=1.4.2,<2.1 (#1485)

  Updates the requirements on [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-timeout/releases)
  - [Commits](https://github.com/pytest-dev/pytest-timeout/commits)

  ---
  updated-dependencies:
  - dependency-name: pytest-timeout
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: fda4dad23a0494890267fbe8baf179e2b56ee914
author_date: 2021-10-13T22:25:05Z
committer_date: 2021-10-13T22:25:05Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Test against Python 3.10 (#330)

  * Test against Python 3.10
  * Added 3.10 to classifiers
  * Test on Python 3.10 before publish


sha: 8934507cdc0029a598cf37cdb3818fd31af5e33c
author_date: 2021-10-14T19:22:19Z
committer_date: 2021-10-14T19:22:19Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.59

  Refs #942, #1404, #1405, #1416, #1420, #1421, #1422, #1423, #1425, #1431, #1443, #1446, #1449, #1467, #1469, #1470, #1488


sha: 85849935292e500ab7a99f8fe0f9546e903baad3
author_date: 2021-10-14T19:03:28Z
committer_date: 2021-10-14T19:03:28Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  --cors Access-Control-Allow-Headers: Authorization

  Refs #1467, refs https://github.com/simonw/datasette-auth-tokens/issues/4


sha: 0fdbf004843850f200e077a3c87427fe16c18b85
author_date: 2021-10-14T18:39:55Z
committer_date: 2021-10-14T18:39:55Z
raw_author: 3674171304d76a7883c9278baae6eb636e00e08d
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Rework the `--static` documentation

  Rework the `--static` documentation to better differentiate between the filesystem and serving locations. Closes #1457

  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: 827fa823d1b919c445f3141174ecb7a82717d99c
author_date: 2021-10-14T18:10:42Z
committer_date: 2021-10-14T18:10:42Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pyyaml requirement from ~=5.3 to >=5.3,<7.0 (#1489)

  Updates the requirements on [pyyaml](https://github.com/yaml/pyyaml) to permit the latest version.
  - [Release notes](https://github.com/yaml/pyyaml/releases)
  - [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES)
  - [Commits](https://github.com/yaml/pyyaml/compare/5.3...6.0)

  ---
  updated-dependencies:
  - dependency-name: pyyaml
    dependency-type: direct:production
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: b267b5775436577a91a9f9655143908aecff05da
author_date: 2021-10-14T18:03:44Z
committer_date: 2021-10-14T18:03:44Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Upgrade to httpx 0.20

  * Upgrade to httpx 0.20, closes #1488
  * TestClient.post() should not default to following redirects


sha: 03cc697b6b3d0983618c29ee75b45b5e0ac91139
author_date: 2021-10-24T22:22:39Z
committer_date: 2021-10-24T22:22:39Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-asyncio requirement from <0.16,>=0.10 to >=0.10,<0.17 (#1494)

  Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
  - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.16.0)

  ---
  updated-dependencies:
  - dependency-name: pytest-asyncio
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 96a823f2834a262ae97a90ebfb6847f14763c415
author_date: 2021-10-24T22:19:54Z
committer_date: 2021-10-24T22:19:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fix compatibility with Python 3.10 (#1481)

  * Run tests against Python 3.10
  * Upgrade to Janus 0.6.2 for Python 3.10
  * Add 3.10 to classifiers

  Closes #1482


sha: ed77eda6d8f10c63fc0670c7150fc974f786ade5
author_date: 2021-11-20T23:30:25Z
committer_date: 2021-11-20T23:30:25Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Add datasette-redirect-to-https plugin

  Also configured suprvisord children to log to stdout, so that I
  can see them with flyctly logs -a datasette-apache-proxy-demo

  Refs #1524


sha: 83eb29deced2430f40c3374ff9085d65d86d8281
author_date: 2021-11-30T02:37:13Z
committer_date: 2021-11-30T02:37:13Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update janus requirement from <0.7,>=0.6.2 to >=0.6.2,<0.8 (#1529)

  Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version.
  - [Release notes](https://github.com/aio-libs/janus/releases)
  - [Changelog](https://github.com/aio-libs/janus/blob/master/CHANGES.rst)
  - [Commits](https://github.com/aio-libs/janus/compare/v0.6.2...v0.7.0)

  ---
  updated-dependencies:
  - dependency-name: janus
    dependency-type: direct:production
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: cc4c70b3670ce2a85bb883b8d5626574590efe14
author_date: 2021-11-30T02:35:28Z
committer_date: 2021-11-30T02:35:28Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 21.9b0 to 21.11b1 (#1516)

  Bumps [black](https://github.com/psf/black) from 21.9b0 to 21.11b1.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/commits)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 3303514a52b7170f2f1e598cd9c5f82c22f26e6c
author_date: 2021-11-30T02:35:18Z
committer_date: 2021-11-30T02:35:18Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update docutils requirement from <0.18 to <0.19 (#1508)

  Updates the requirements on [docutils](http://docutils.sourceforge.net/) to permit the latest version.

  ---
  updated-dependencies:
  - dependency-name: docutils
    dependency-type: direct:production
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 1beb7d939999da79bb77c4d3c777657c8a16bcd9
author_date: 2021-11-30T02:29:54Z
committer_date: 2021-11-30T02:29:54Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update aiofiles requirement from <0.8,>=0.4 to >=0.4,<0.9 (#1537)

  Updates the requirements on [aiofiles](https://github.com/Tinche/aiofiles) to permit the latest version.
  - [Release notes](https://github.com/Tinche/aiofiles/releases)
  - [Commits](https://github.com/Tinche/aiofiles/compare/v0.4.0...v0.8.0)

  ---
  updated-dependencies:
  - dependency-name: aiofiles
    dependency-type: direct:production
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: f5538e7161cce92a4dfaa7c5b71fcb6755d96c05
author_date: 2021-12-13T23:22:29Z
committer_date: 2021-12-13T23:22:29Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 21.11b1 to 21.12b0 (#1543)

  Bumps [black](https://github.com/psf/black) from 21.11b1 to 21.12b0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/commits)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 8b411a6b70e93e044820d613a28607ba5d6fe416
author_date: 2021-12-13T23:22:21Z
committer_date: 2021-12-13T23:22:21Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-xdist requirement from <2.5,>=2.2.1 to >=2.2.1,<2.6 (#1548)

  Updates the requirements on [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-xdist/releases)
  - [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v2.2.1...v2.5.0)

  ---
  updated-dependencies:
  - dependency-name: pytest-xdist
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 4f02c8d4d7f8672cc98e5f8d435b5dc8fb5211dc
author_date: 2021-12-14T20:28:34Z
committer_date: 2021-12-14T20:29:05Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Test for JSON in query_string name, refs #621

  Plus simplified implementation of test_request_blank_values


sha: 20a2ed6bec367d2f6759be4a879364a72780b59d
author_date: 2021-12-16T18:47:22Z
committer_date: 2021-12-16T18:47:40Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fixed bug with metadata config of array/date facets, closes #1552

  Thanks @davidbgk for spotting the fix for the bug.


sha: 35cba9e85a574cebf2986b64107fa84d02bd86ad
author_date: 2021-12-17T23:08:28Z
committer_date: 2021-12-17T23:08:28Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update janus requirement from <0.8,>=0.6.2 to >=0.6.2,<1.1 (#1562)

  Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version.
  - [Release notes](https://github.com/aio-libs/janus/releases)
  - [Changelog](https://github.com/aio-libs/janus/blob/master/CHANGES.rst)
  - [Commits](https://github.com/aio-libs/janus/compare/v0.6.2...v1.0.0)

  ---
  updated-dependencies:
  - dependency-name: janus
    dependency-type: direct:production
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: aa7f0037a46eb76ae6fe9bf2a1f616c58738ecdf
author_date: 2021-12-17T19:02:14Z
committer_date: 2021-12-17T19:02:14Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  filters_from_request plugin hook, now used in TableView

  - New `filters_from_request` plugin hook, closes #473
  - Used it to extract the logic from TableView that handles `_search` and
  `_through` and `_where` - refs #1518

  Also needed for this plugin work: https://github.com/simonw/datasette-leaflet-freedraw/issues/7


sha: 751bc900366ca52e662ea383b858cbf4365093d9
author_date: 2022-01-06T17:19:02Z
committer_date: 2022-01-06T17:19:02Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  datasette-atom plugin

  I'm going to see if I can subscribe to new issues and issue comments across all of these repos.


sha: 129141572f249ea290e2a075437e2ebaad215859
author_date: 2022-01-11T02:10:54Z
committer_date: 2022-01-11T02:10:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  `sqlite-utils bulk` command

  * sqlite-utils bulk command, closes #375
  * Refactor import_options and insert_upsert_options, refs #377
  * Tests for sqlite-utils bulk, refs #377
  * Documentation for sqlite-utils bulk, refs #377


sha: cb29119db9115b1f40de2fb45263ed77e3bfbb3e
author_date: 2022-01-14T01:36:51Z
committer_date: 2022-01-14T01:36:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.60

  Refs #473, #625, #1527, #1544, #1547, #1551, #1552, #1555, #1556, #1557,
  #1563, #1564, #1568, #1570, #1575, #1579, #1588, #1594


sha: 43c30ce0236ebbc7e9cec98a3822265eb2691430
author_date: 2022-01-20T05:04:09Z
committer_date: 2022-01-20T05:04:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Use cog to maintain default plugin list in plugins.rst, closes #1600

  Also fixed a bug I spotted where datasette.filters showed the same hook three times.


sha: 89c01103ec0b684b6f871694f77fc49d0cb57f98
author_date: 2022-01-26T02:00:16Z
committer_date: 2022-01-26T02:00:16Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Custom layout template for docs

  Adds plausible analytics, closes #389

  Implements banner on latest page, closes #388


sha: b3efb292127036d710ae3cb63daa36cd7a4d7d0c
author_date: 2022-01-26T01:48:57Z
committer_date: 2022-01-26T01:48:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  SQLite can drop columns now

  It gained that ability in 3.35.0 in 2021-03-12:
  https://www.sqlite.org/changes.html#version_3_35_0


sha: b5e6b1a9e1332fca3effe45d55dd06ee4249f163
author_date: 2022-02-02T22:23:51Z
committer_date: 2022-02-02T22:23:51Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 21.12b0 to 22.1.0 (#1616)

  Bumps [black](https://github.com/psf/black) from 21.12b0 to 22.1.0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/commits/22.1.0)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 3ef47a0896c7e63404a34e465b7160c80eaa571d
author_date: 2021-11-27T20:08:42Z
committer_date: 2022-02-02T07:49:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Link rel=alternate header for tables and rows

  Also added Access-Control-Expose-Headers: Link to --cors mode.

  Closes #1533

  Refs https://github.com/simonw/datasette-notebook/issues/2

  LL#	metadata.json.1


sha: ee11274fcb1c00f32c95f2ef2924d5349538eb4d
author_date: 2022-02-04T05:55:09Z
committer_date: 2022-02-04T05:55:09Z
raw_author: 90786fb02407ad60f10210c0592ee711a9a36fae
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  New spatialite helper methods, closes #79

  - db.init_spatialite()
  - table.add_geometry_column()
  - table.create_spatial_index()

  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: da53e0360da4771ffb56a8e3eb3f7476f3168299
author_date: 2022-02-05T05:19:49Z
committer_date: 2022-02-05T05:19:49Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  tracer.trace_child_tasks() for asyncio.gather tracing

  Also added documentation for datasette.tracer module.

  Closes #1576


sha: 1b2f0ab6bbc9274dac1ba5fe126b1d6b8587ea96
author_date: 2022-02-07T23:43:20Z
committer_date: 2022-02-07T23:43:45Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "Use de-dupe idiom that works with Python 3.6, refs #1632"

  This reverts commit 5bfd001b55357106dba090c83a1c88912a004665.

  No need for this on the main branch because it doesn't support Python 3.6 any more.


sha: 0cd982fc6af45b60e0c9306516dd412ae948c89b
author_date: 2022-02-07T23:28:46Z
committer_date: 2022-02-07T23:28:59Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  De-duplicate 'datasette db.db db.db', closes #1632

  Refs https://github.com/simonw/datasette-publish-fly/pull/12


sha: d9b508ffaa91f9f1840b366f5d282712d445f16b
author_date: 2022-02-07T06:30:00Z
committer_date: 2022-02-07T06:31:06Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  @documented decorator plus unit test plus sphinx.ext.autodoc

  New mechanism for marking datasette.utils functions that should be covered by the
  documentation, then testing that they have indeed been documented.

  Also enabled sphinx.ext.autodoc which can now be used to embed the documented
  versions of those functions.

  Refs #1176


sha: 7d24fd405f3c60e4c852c5d746c91aa2ba23cf5b
author_date: 2022-02-09T17:47:54Z
committer_date: 2022-02-09T17:47:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  datasette-auth-passwords is now an example of register_commands

  Refs https://github.com/simonw/datasette-auth-passwords/issues/19


sha: a692c56659c3563b26dcdc9e3534d63ecc26e180
author_date: 2022-02-16T00:58:07Z
committer_date: 2022-02-16T00:58:07Z
raw_author: 90786fb02407ad60f10210c0592ee711a9a36fae
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Add SpatiaLite helpers to CLI (#407)

  * Add SpatiaLite CLI helpers
  * Add docs for spaitalite helpers
  * Fix flake8 issues and add more detail on spatial types
  * Run cog and add some help text.
  * Use SpatiaLite when calculating coverage, refs #407

  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: de810f49cc57a4f88e4a1553d26c579253ce4531
author_date: 2022-03-06T19:39:15Z
committer_date: 2022-03-06T19:39:15Z
raw_author: 9a3d8e1c0e383f75737a170eb4560dd9f9576302
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Add /opt/homebrew to where spatialite extension can be found (#1649)

  Helps homebrew on Apple Silicon setups find spatialite without needing
  a full path.

  Similar to #1114

  Thanks, @danp


sha: 7b78279b93b6e7a5fce6b53e5a85ca421a801496
author_date: 2022-03-06T01:41:49Z
committer_date: 2022-03-06T01:41:49Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-timeout requirement from <2.1,>=1.4.2 to >=1.4.2,<2.2 (#1602)

  Updates the requirements on [pytest-timeout](https://github.com/pytest-dev/pytest-timeout) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-timeout/releases)
  - [Commits](https://github.com/pytest-dev/pytest-timeout/compare/1.4.2...2.1.0)

  ---
  updated-dependencies:
  - dependency-name: pytest-timeout
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 73f2d25f70d741c6b53f7312674c91f0aec83e17
author_date: 2022-03-06T01:30:27Z
committer_date: 2022-03-06T01:30:27Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update asgiref requirement from <3.5.0,>=3.2.10 to >=3.2.10,<3.6.0 (#1610)

  Updates the requirements on [asgiref](https://github.com/django/asgiref) to permit the latest version.
  - [Release notes](https://github.com/django/asgiref/releases)
  - [Changelog](https://github.com/django/asgiref/blob/main/CHANGELOG.txt)
  - [Commits](https://github.com/django/asgiref/compare/3.2.10...3.5.0)

  ---
  updated-dependencies:
  - dependency-name: asgiref
    dependency-type: direct:production
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: b21839dd1a005f6269c4e9a9f763195fe7aa9c86
author_date: 2022-03-06T01:30:05Z
committer_date: 2022-03-06T01:30:05Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest requirement from <6.3.0,>=5.2.2 to >=5.2.2,<7.1.0 (#1629)

  Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest/releases)
  - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.2...7.0.0)

  ---
  updated-dependencies:
  - dependency-name: pytest
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: a22ec96c3ac555337eb49121450723a273fb52d1
author_date: 2022-03-06T01:29:53Z
committer_date: 2022-03-06T01:29:53Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-asyncio requirement from <0.17,>=0.10 to >=0.10,<0.19 (#1631)

  Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
  - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.18.0)

  ---
  updated-dependencies:
  - dependency-name: pytest-asyncio
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 1baa030eca375f839f3471237547ab403523e643
author_date: 2022-03-07T15:38:29Z
committer_date: 2022-03-07T15:38:29Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Switch to dash encoding for table/database/row-pk in paths

  * Dash encoding functions, tests and docs, refs #1439
  * dash encoding is now like percent encoding but with dashes
  * Use dash-encoding for row PKs and ?_next=, refs #1439
  * Use dash encoding for table names, refs #1439
  * Use dash encoding for database names, too, refs #1439

  See also https://simonwillison.net/2022/Mar/5/dash-encoding/


sha: 77a904fea14f743560af9cc668146339bdbbd0a9
author_date: 2022-03-15T18:03:01Z
committer_date: 2022-03-15T18:03:01Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest requirement from <7.1.0,>=5.2.2 to >=5.2.2,<7.2.0 (#1656)

  Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest/releases)
  - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.2...7.1.0)

  ---
  updated-dependencies:
  - dependency-name: pytest
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: c10cd48baf106659bf3f129ad7bfb2226be73821
author_date: 2022-03-07T19:56:59Z
committer_date: 2022-03-15T15:43:47Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Min pytest-asyncio of 0.17

  So that the asyncio_mode in pytest.ini does not produce
  a warning on older versions of that library.


sha: 77e718c3ffb30473759a8b1ed347f73cb2ff5cfe
author_date: 2022-03-15T15:37:31Z
committer_date: 2022-03-15T15:37:31Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "Fix bug with percentage redirects, close #1650"

  This reverts commit c85d669de387b40e667fd6942c6cc1c15b4f5964.

  Refs #1658


sha: 5a353a32b9c4d75acbe3193fd72f735a8e78516a
author_date: 2022-03-15T15:37:14Z
committer_date: 2022-03-15T15:37:14Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "Fixed tests for urlsafe_components, refs #1650"

  This reverts commit bb499942c15c4e2cfa4b6afab8f8debe5948c009.

  Refs #1658


sha: 239aed182053903ed69108776b6864d42bfe1eb4
author_date: 2022-03-15T15:36:35Z
committer_date: 2022-03-15T15:36:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "Code of conduct, refs #1654"

  This reverts commit c5791156d92615f25696ba93dae5bb2dcc192c98.

  Refs #1658


sha: 5471e3c4914837de957e206d8fb80c9ec383bc2e
author_date: 2022-03-20T01:14:40Z
committer_date: 2022-03-20T01:14:40Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.61a0

  Refs #957, #1533, #1545, #1576, #1577, #1587, #1601, #1603, #1607, #1612, #1621, #1649, #1654, #1657, #1661, #1668


sha: d7c793d7998388d915f8d270079c68a77a785051
author_date: 2022-03-23T18:12:26Z
committer_date: 2022-03-23T18:12:26Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.61

  Refs #957, #1228, #1533, #1545, #1576, #1577, #1587, #1601, #1603, #1607, #1612, #1621, #1649, #1654, #1657, #1661, #1668, #1675, #1678


sha: 5c5e9b365790d7c75cf2611e650d1013f587d316
author_date: 2022-04-01T02:01:58Z
committer_date: 2022-04-01T02:01:58Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Request.fake(... url_vars), plus .fake() is now documented

  Also made 'from datasette import Request' shortcut work.

  Closes #1697


sha: 138e4d9a53e3982137294ba383303c3a848cfca4
author_date: 2022-04-08T23:05:09Z
committer_date: 2022-04-08T23:05:09Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update click requirement from <8.1.0,>=7.1.1 to >=7.1.1,<8.2.0 (#1694)

  Updates the requirements on [click](https://github.com/pallets/click) to permit the latest version.
  - [Release notes](https://github.com/pallets/click/releases)
  - [Changelog](https://github.com/pallets/click/blob/main/CHANGES.rst)
  - [Commits](https://github.com/pallets/click/compare/7.1.1...8.1.0)

  ---
  updated-dependencies:
  - dependency-name: click
    dependency-type: direct:production
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 247e460e08bf823142f7b84058fe44e43626787f
author_date: 2022-04-08T22:51:04Z
committer_date: 2022-04-08T22:51:04Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update beautifulsoup4 requirement (#1703)

  Updates the requirements on [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.

  ---
  updated-dependencies:
  - dependency-name: beautifulsoup4
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 36573638b0948174ae237d62e6369b7d55220d7f
author_date: 2022-04-24T15:50:43Z
committer_date: 2022-04-24T15:50:43Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Apply Black to code examples in documentation, refs #1718

  Uses blacken-docs. This has a deliberate error which I hope will fail CI.


sha: 3001e1e394b6cb605c2cd81eed671a7da419c1b3
author_date: 2022-04-24T14:03:08Z
committer_date: 2022-04-24T14:03:08Z
raw_author: 6cabba813337e444c356d919c79ef180b01659af
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Add timeout option to Cloudrun build (#1717)

  * Add timeout option for build phase
  * Make the --timeout setting optional
  * Add test for --timeout setting

  Thanks, @wragge


sha: 942411ef946e9a34a2094944d3423cddad27efd3
author_date: 2022-04-26T22:48:56Z
committer_date: 2022-04-26T22:50:02Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Execute some TableView queries in parallel

  Use ?_noparallel=1 to opt out (undocumented, useful for benchmark comparisons)

  Refs #1723, #1715


sha: 3f00a29141bdea5be747f6d1c93871ccdb792167
author_date: 2022-05-02T20:15:27Z
committer_date: 2022-05-02T20:15:27Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Clean up compatibility with Pyodide (#1736)

  * Optional uvicorn import for Pyodide, refs #1733
  * --setting num_sql_threads 0 to disable threading, refs #1735


sha: ed6fd516082e8cc83b199798f62dd67728a6974f
author_date: 2022-05-02T18:05:00Z
committer_date: 2022-05-02T18:05:00Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Depend on click-default-group-wheel (#429)

  To get this to work with Pyodide.

  Refs: https://github.com/simonw/click-default-group-wheel/issues/3


sha: 2e9751672d4fe329b3c359d5b7b1992283185820
author_date: 2022-05-31T19:28:40Z
committer_date: 2022-05-31T19:28:40Z
raw_author: 902cf90c9d2dadfcff296a337dc6e2df5775229f
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  chore: Set permissions for GitHub actions (#1740)

  Restrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won’t be able to do much.

  - Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions

  https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions

  https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs

  [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)

  Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>


sha: e780b2f5d662ef3579d801d33567440055d4e84d
author_date: 2022-06-20T17:54:23Z
committer_date: 2022-06-20T17:54:23Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Trying out one-sentence-per-line

  As suggested here: https://sive.rs/1s

  Markdown and reStructuredText will display this as if it is a single paragraph, even though the sentences themselves are separated by newlines.

  This could result in more useful diffs. Trying it out on this page first.


sha: 9f1eb0d4eac483b953392157bd9fd6cc4df37de7
author_date: 2022-06-28T17:40:24Z
committer_date: 2022-06-28T17:40:24Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 22.1.0 to 22.6.0 (#1763)

  Bumps [black](https://github.com/psf/black) from 22.1.0 to 22.6.0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/compare/22.1.0...22.6.0)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: c710ade6443d45ca2f581cdf975c7990436ab8fc
author_date: 2022-07-15T21:45:14Z
committer_date: 2022-07-15T21:45:47Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  sqlite-utils duplicate command, closes #454, refs #449

  Also made it so .duplicate() raises new NoTable exception rather than raising
  an AssertionError if the source table does not exist.


sha: 22354c48ce4d514d7a1b321e5651c7f1340e3f5e
author_date: 2022-07-18T01:06:37Z
committer_date: 2022-07-18T01:06:37Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Update pytest-asyncio requirement from <0.19,>=0.17 to >=0.17,<0.20 (#1769)

  Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
  - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
  - [Changelog](https://github.com/pytest-dev/pytest-asyncio/blob/master/CHANGELOG.rst)
  - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.17.0...v0.19.0)

  ---
  updated-dependencies:
  - dependency-name: pytest-asyncio
    dependency-type: direct:development
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: ea6161f8475d9fa41c4879049511c58f692cce04
author_date: 2022-07-18T01:06:26Z
committer_date: 2022-07-18T01:06:26Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump furo from 2022.4.7 to 2022.6.21 (#1760)

  Bumps [furo](https://github.com/pradyunsg/furo) from 2022.4.7 to 2022.6.21.
  - [Release notes](https://github.com/pradyunsg/furo/releases)
  - [Changelog](https://github.com/pradyunsg/furo/blob/main/docs/changelog.md)
  - [Commits](https://github.com/pradyunsg/furo/compare/2022.04.07...2022.06.21)

  ---
  updated-dependencies:
  - dependency-name: furo
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: c09c53f3455a7b9574cf7695478f2b87d20897db
author_date: 2022-07-17T23:24:39Z
committer_date: 2022-07-17T23:24:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  New handle_exception plugin hook, refs #1770

  Also refs:
  - https://github.com/simonw/datasette-sentry/issues/1
  - https://github.com/simonw/datasette-show-errors/issues/2


sha: dbac2e5dd8a562b45d8255a265859cf8020ca22a
author_date: 2022-07-18T19:40:11Z
committer_date: 2022-07-18T19:40:11Z
raw_author: 5706ac4cf453125159bc20ff21584abaa85d68e1
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fixing 'NoneType' object has no attribute 'items' (#73)

  Traceback (most recent call last):
        File "/home/dogsheep/dogsheep/github-to-sqlite/bin/github-to-sqlite", line 8, in <module>
          sys.exit(cli())
        File "/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py", line 1130, in __call__
          return self.main(*args, **kwargs)
        File "/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py", line 1055, in main
          rv = self.invoke(ctx)
        File "/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py", line 1657, in invoke
          return _process_result(sub_ctx.command.invoke(sub_ctx))
        File "/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py", line 1404, in invoke
          return ctx.invoke(self.callback, **ctx.params)
        File "/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py", line 760, in invoke
          return __callback(*args, **kwargs)
        File "/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/cli.py", line 181, in starred
          utils.save_stars(db, user, stars)
        File "/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/utils.py", line 494, in save_stars
          repo_id = save_repo(db, repo)
        File "/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/utils.py", line 308, in save_repo
          to_save["owner"] = save_user(db, to_save["owner"])
        File "/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/utils.py", line 229, in save_user
          for key, value in user.items()
      AttributeError: 'NoneType' object has no attribute 'items'


sha: 98a28cbfe6cea67f6334b42b74f35b0ddd309561
author_date: 2022-08-02T20:35:56Z
committer_date: 2022-08-02T20:35:56Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Oops, fixed project slug

  Refs:
  - https://github.com/readthedocs/readthedocs-preview/issues/10
  - https://github.com/simonw/sqlite-utils/pull/460


sha: 1856002e3c0fcc9f09f72ab7d97ad8c75f6de7df
author_date: 2022-08-02T16:02:43Z
committer_date: 2022-08-02T16:02:43Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  readthedocs/readthedocs-preview

  Tip from https://twitter.com/readthedocs/status/1552354156056395778


sha: 815162cf029fab9f1c9308c1d6ecdba7ee369ebe
author_date: 2022-08-14T17:32:42Z
committer_date: 2022-08-14T17:32:42Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.62

  Refs #903, #1300, #1683, #1701, #1712, #1717, #1718, #1728, #1733, #1738, #1739, #1744, #1746, #1748, #1759, #1766, #1768, #1770, #1773, #1779

  Closes #1782


sha: 83e7339255e811c62e6db8498c483c44a84d0f28
author_date: 2022-08-17T23:11:15Z
committer_date: 2022-08-17T23:11:15Z
raw_author: a9570db41e1b6fe56efd98307a0c1c3facf064e4
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use Read the Docs action v1 (#463)

  Read the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1`


sha: f4fb78fa95057fbc86c734020835a3155695297f
author_date: 2022-08-18T21:58:07Z
committer_date: 2022-08-18T21:58:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Cross-link CLI to Python docs (#460)

  * Start cross-linking CLI to Python docs, refs #426
  * More links to Python from CLI page, refs #426


sha: 663ac431fe7202c85967568d82b2034f92b9aa43
author_date: 2022-08-20T00:04:16Z
committer_date: 2022-08-20T00:04:16Z
raw_author: a9570db41e1b6fe56efd98307a0c1c3facf064e4
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use Read the Docs action v1 (#1778)

  Read the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1`


sha: 4d88c84a66a501e4cb0dd2de9949072b8d42b859
author_date: 2022-08-21T21:11:56Z
committer_date: 2022-08-21T21:11:56Z
raw_author: 06556f4f7f4c9062aeb2fbf05388cb3fdaab37af
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fixed conflicting  CLI flags (#7)

  `-a` now only works for `--auth` - it is no longer also defined for `--all`.

  Closes #11


sha: ba35105eee2d3ba620e4f230028a02b2e2571df2
author_date: 2022-08-24T00:11:45Z
committer_date: 2022-08-24T00:11:45Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Test `--load-extension` in GitHub Actions (#1792)

  * Run the --load-extension test, refs #1789
  * Ran cog, refs #1789


sha: c5f8a2eb1a81a18b52825cc649112f71fe419b12
author_date: 2022-08-27T14:45:03Z
committer_date: 2022-08-27T14:45:03Z
raw_author: 88e22aeee75bfd8a1cdeae56a89d5509d1c1d1c4
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  in extract code, check equality witH IS instead of = for nulls (#455)

  sqlite "IS" is equivalent to SQL "IS NOT DISTINCT FROM"

  close #423


sha: ecf1d40112e52a8f4e509c39b98caae996b7bc36
author_date: 2022-08-31T03:40:35Z
committer_date: 2022-08-31T03:40:35Z
raw_author: aff9d2f73a18d2ec18afd0f3fefe046f37945a60
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  table.search_sql(include_rank=True) option (#480)

  * search_sql add include_rank option
  * add test
  * add FTS4 test
  * Apply Black

  Thanks, @chapmanjacobd


sha: 64288d827f7ff97f825e10f714da3f781ecf9345
author_date: 2022-09-06T00:40:19Z
committer_date: 2022-09-06T00:40:19Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Workaround for test failure: RuntimeError: There is no current event loop (#1803)

  * Remove ensure_eventloop hack
  * Hack to recover from intermittent RuntimeError calling asyncio.Lock()


sha: 1c29b925d300d1ee17047504473f2517767aa05b
author_date: 2022-09-06T00:10:52Z
committer_date: 2022-09-06T00:10:52Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Run tests in serial again

  Because this didn't fix the issue I'm seeing in #1802

  Revert "Run tests in serial, refs #1802"

  This reverts commit b91e17280c05bbb9cf97432081bdcea8665879f9.


sha: b2b901e8c4b939e50ee1117ffcd2881ed8a8e3bf
author_date: 2022-09-06T00:05:23Z
committer_date: 2022-09-06T00:09:57Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Skip SpatiaLite test if no conn.enable_load_extension()

  Ran into this problem while working on #1802


sha: 294ecd45f7801971dbeef383d0c5456ee95ab839
author_date: 2022-09-05T18:51:51Z
committer_date: 2022-09-05T18:51:51Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 22.6.0 to 22.8.0 (#1797)

  Bumps [black](https://github.com/psf/black) from 22.6.0 to 22.8.0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/compare/22.6.0...22.8.0)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 51030df1869b3b574dd3584d1563415776b9cd4e
author_date: 2022-09-05T18:35:40Z
committer_date: 2022-09-05T18:35:40Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Don't use upper bound dependencies any more

  See https://iscinumpy.dev/post/bound-version-constraints/ for the rationale behind this change.

  Closes #1800


sha: fb7e70d5e72a951efe4b29ad999d8915c032d021
author_date: 2022-09-09T16:19:20Z
committer_date: 2022-09-09T16:19:20Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Database(is_mutable=) now defaults to True, closes #1808

  Refs https://github.com/simonw/datasette-upload-dbs/issues/6


sha: 0b315d3fa83c1584eaeec32f24912898621e437a
author_date: 2022-09-15T20:37:51Z
committer_date: 2022-09-15T20:37:51Z
raw_author: e7784035c9ce3ef64d906c543907d5025673d054
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  progressbar for inserts/upserts of other file formats

  * progressbar for inserts/upserts of other file formats, closes #485
  * Pin to Python 3.10.6 for the moment as workaround for mypy error

  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: 2ebcffe2226ece2a5a86722790d486a480338632
author_date: 2022-09-16T19:50:52Z
committer_date: 2022-09-16T19:50:52Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump furo from 2022.6.21 to 2022.9.15 (#1812)

  Bumps [furo](https://github.com/pradyunsg/furo) from 2022.6.21 to 2022.9.15.
  - [Release notes](https://github.com/pradyunsg/furo/releases)
  - [Changelog](https://github.com/pradyunsg/furo/blob/main/docs/changelog.md)
  - [Commits](https://github.com/pradyunsg/furo/compare/2022.06.21...2022.09.15)

  ---
  updated-dependencies:
  - dependency-name: furo
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: c7cad6fc257c178b24b3f574b8c6992002c6f072
author_date: 2022-09-26T19:26:31Z
committer_date: 2022-09-26T19:26:31Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Documentation for Just, closes #494

  Also added 'just init' and fixed a couple of missing pipenv run calls.


sha: c92c4318e9892101f75fa158410c0a12c1d80b6e
author_date: 2022-09-30T17:55:40Z
committer_date: 2022-09-30T17:55:40Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump furo from 2022.9.15 to 2022.9.29 (#1827)

  Bumps [furo](https://github.com/pradyunsg/furo) from 2022.9.15 to 2022.9.29.
  - [Release notes](https://github.com/pradyunsg/furo/releases)
  - [Changelog](https://github.com/pradyunsg/furo/blob/main/docs/changelog.md)
  - [Commits](https://github.com/pradyunsg/furo/compare/2022.09.15...2022.09.29)

  ---
  updated-dependencies:
  - dependency-name: furo
    dependency-type: direct:development
    update-type: version-update:semver-patch
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: ae11fa5887e03376704c22e5d0969c1e0642d8d8
author_date: 2022-11-16T23:49:06Z
committer_date: 2022-11-16T23:49:06Z
raw_author: 861aec2fe33d6c4a4fcda2748f19332fbffb5a92
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Upgrade to CodeMirror 6, add SQL autocomplete (#1893)

  * Upgrade to CodeMirror 6
  * Update contributing docs
  * Change how resizing works
  * Define a custom SQLite autocomplete dialect
  * Add meta-enter to submit
  * Add fixture schema for testing


sha: eac028d3f77aa5473a5fcf59240635a1bca80f7d
author_date: 2022-11-15T06:57:11Z
committer_date: 2022-11-15T06:57:11Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Fix for datalist against foreign key facets

  Refs https://github.com/simonw/datasette/issues/1890#issuecomment-1314850524


sha: 867e0abd3429f837d5f15e6843a38f848ee562f0
author_date: 2022-11-03T20:36:11Z
committer_date: 2022-11-03T20:37:26Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Tests now close SQLite database connections and files explicitly, refs #1843

  Also added a db.close() method to the Database class.


sha: bf00b0b59b6692bdec597ac9db4e0b497c5a47b4
author_date: 2022-10-27T22:11:26Z
committer_date: 2022-10-27T22:11:26Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 0.63

  Refs #1646, #1786, #1787, #1789, #1794, #1800, #1804, #1805, #1808, #1809, #1816, #1819, #1825, #1829, #1831, #1834, #1844, #1853, #1860

  Closes #1869


sha: 2c36e45447494cd7505440943367e29ec57c8e72
author_date: 2022-10-27T20:51:45Z
committer_date: 2022-10-27T20:51:45Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 22.8.0 to 22.10.0 (#1839)

  Bumps [black](https://github.com/psf/black) from 22.8.0 to 22.10.0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/compare/22.8.0...22.10.0)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: b912d92b651c4f0b5137da924d135654511f0fe0
author_date: 2022-10-27T20:51:20Z
committer_date: 2022-10-27T20:51:20Z
raw_author: 88e22aeee75bfd8a1cdeae56a89d5509d1c1d1c4
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Make hash and size a lazy property (#1837)

  * use inspect data for hash and file size
  * make hash and cached_size lazy properties
  * move hash property near size


sha: 529110e7d8c4a6b1bbf5fb61f2e29d72aa95a611
author_date: 2022-10-26T19:27:32Z
committer_date: 2022-10-26T19:27:32Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  GitHub Actions has Python 3.11 on macOS now

  Refs https://github.com/actions/setup-python/issues/531


sha: 5133339d00252cb258a4217eda830ac60f43ee1f
author_date: 2022-10-25T19:08:58Z
committer_date: 2022-10-25T19:08:58Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Skip macos-latest Python 3.11 for the moment

  Refs https://github.com/actions/setup-python/issues/531


sha: 4d49a5a39739476e1ada43f70a0029abcef07977
author_date: 2022-11-29T19:22:04Z
committer_date: 2022-11-29T19:22:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 1.0a0

  Refs #1850, #1851, #1852, #1856, #1858, #1863, #1864, #1871, #1874, #1882

  Closes #1891


sha: 9f5321ff1eca58c469a45cc406d7eb5ad05accbd
author_date: 2022-11-30T04:43:27Z
committer_date: 2022-11-30T04:43:27Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  latest now uses datasette-ephemeral-tables>=0.2.1

  Fix for https://github.com/simonw/datasette-ephemeral-tables/issues/4


sha: 7588d27f4a5a8325587f47c01d5f154c6a582a1a
author_date: 2022-11-30T01:51:15Z
committer_date: 2022-11-30T01:51:15Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  latest.datasette.io uses datasette-ephemeral-tables>=0.2

  To show the countdown timer from:
  https://github.com/simonw/datasette-ephemeral-tables/issues/3

  Refs #1915


sha: d98a8effb10ce8fe04a03eae42baa8a9cb0ca3f7
author_date: 2022-12-14T04:59:28Z
committer_date: 2022-12-14T05:03:17Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  UI for restricting permissions on /-/create-token, refs #1947

  Also fixes test failures I introduced in #1951


sha: d4b98d3924dec625a99236e65b1b169ff957381f
author_date: 2022-12-13T05:23:30Z
committer_date: 2022-12-13T05:23:30Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 22.10.0 to 22.12.0 (#1944)

  Bumps [black](https://github.com/psf/black) from 22.10.0 to 22.12.0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/compare/22.10.0...22.12.0)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 45979eb7239842aba512fc798ff0e772ef42b3da
author_date: 2022-12-13T05:21:01Z
committer_date: 2022-12-13T05:21:01Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Rename permission created by demo plugin

  It was showing up as 'new-permission' on https://latest.datasette.io/-/permissions
  which I thought was confusing


sha: 8bf06a76b51bc9ace7cf72cf0cca8f1da7704ea7
author_date: 2022-12-13T02:05:54Z
committer_date: 2022-12-13T02:05:54Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  register_permissions() plugin hook (#1940)

  * Docs for permissions: in metadata, refs #1636
  * Refactor default_permissions.py to help with implementation of #1636
  * register_permissions() plugin hook, closes #1939 - also refs #1938
  * Tests for register_permissions() hook, refs #1939
  * Documentation for datasette.permissions, refs #1939
  * permission_allowed() falls back on Permission.default, refs #1939
  * Raise StartupError on duplicate permissions
  * Allow dupe permisisons if exact matches


sha: bffefc7db0c25acb03e3b44ff357d50bb7f04dd7
author_date: 2022-12-08T21:12:07Z
committer_date: 2022-12-08T21:12:07Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump furo from 2022.9.29 to 2022.12.7 (#1935)

  Bumps [furo](https://github.com/pradyunsg/furo) from 2022.9.29 to 2022.12.7.
  - [Release notes](https://github.com/pradyunsg/furo/releases)
  - [Changelog](https://github.com/pradyunsg/furo/blob/main/docs/changelog.md)
  - [Commits](https://github.com/pradyunsg/furo/compare/2022.09.29...2022.12.07)

  ---
  updated-dependencies:
  - dependency-name: furo
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 272982e8a6f45700ff93c3917b4688a86de0e672
author_date: 2022-12-08T01:12:15Z
committer_date: 2022-12-08T01:12:15Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  /db/table/-/upsert API

  Close #1878

  Also made a few tweaks to how _r works in tokens and actors,
  refs #1855 - I needed that mechanism for the tests.


sha: 27efa8c381bc1c9b8b3e6056e7e544ce6bedaedc
author_date: 2022-12-02T01:29:44Z
committer_date: 2022-12-02T01:29:44Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  todomvc permissions and fixed DATASETTE_SECRET for new demo

  Refs https://github.com/simonw/todomvc-datasette/issues/2


sha: 03f247845e108ab05436c8edeb558f2389ec7995
author_date: 2022-12-02T00:37:53Z
committer_date: 2022-12-02T00:37:53Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  datasette-ephemeral-tables>=0.2.2

  Refs https://github.com/simonw/datasette-ephemeral-tables/issues/5


sha: d18998fb46363d9cdfb8d00d56a7a7b9624e8b77
author_date: 2023-03-09T20:57:39Z
committer_date: 2023-03-09T20:57:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Prevent cog --check from breaking on Linux

  The lack of osascript meant that the README was calculated to have a blank schema in it.

  Refs #10


sha: 5376b04dfb0eef2e2e2d9f320cc6efa2493cab1a
author_date: 2023-03-09T20:48:05Z
committer_date: 2023-03-09T20:48:05Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Include schema in README, closes #10

  Also added a new --schema option for just creating the schema.


sha: 25fdbe6b27888b7ccf1284c0304a8eb282dbb428
author_date: 2023-03-08T20:33:23Z
committer_date: 2023-03-08T20:33:23Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  use tmpdir instead of isolated_filesystem, refs #2037

  Should hopefully get tests passing for #2036 too.


sha: 7dd671310a4358e74663325336583746413f0993
author_date: 2023-01-09T16:37:07Z
committer_date: 2023-01-09T16:40:24Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release notes for 0.64, with a warning against arbitrary SQL with SpatiaLite

  Refs #1409, #1771, #1979

  Refs https://github.com/simonw/datasette.io/issues/132


sha: e03aed00026cc2e59c09ca41f69a247e1a85cc89
author_date: 2022-12-18T09:40:06Z
committer_date: 2022-12-18T16:01:51Z
raw_author: f333c00958a658720cd93e305aac71711b88e52b
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Detect server start/stop more reliably.

  This is useful, especially in testing, since your test
  hosts might not reliabliy start the server within two
  seconds, so we do a definite check before progressing.

  By the same token, after `kill $server_pid` wait for
  the pid to be gone from the process list.

  Since now the script can end prematurely, I also added
  a cleanup function to make sure the temporary certs are
  removed in any case.

  n.b. this could also be done with the use of `trap 'fn'
  ERR` but that felt like a bit too much magic for this
  short a script.


sha: a27c0a01240c5857626eff21e79b9b38e7a3ac99
author_date: 2022-12-18T03:24:34Z
committer_date: 2022-12-18T03:24:48Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Deploy docs on publish using Python 3.9

  A workaround for gcloud setup, see:

  https://til.simonwillison.net/googlecloud/gcloud-error-workaround

  Refs #1963


sha: d1d369456a7319b9de39175605568cbc9b852478
author_date: 2022-12-18T02:33:07Z
committer_date: 2022-12-18T02:33:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Move HTTPS test to a bash script

  See https://github.com/simonw/datasette/issues/1955#issuecomment-1356627931


sha: 89cffcf14cda830871c8ee81742eaa1e2dff017b
author_date: 2022-12-17T21:40:27Z
committer_date: 2022-12-17T21:47:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Reset _metadata_local in a couple of tests

  Refs https://github.com/simonw/datasette/pull/1960#issuecomment-1356476886


sha: 9c43b4164db4f60a0be912cfdb07ef8c58b36b22
author_date: 2022-12-16T21:51:46Z
committer_date: 2022-12-17T21:47:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Removed @pytest.mark.ds_client mark - refs #1959

  I don't need it - can run 'pytest -k ds_client' instead.

  See https://github.com/simonw/datasette/pull/1960#issuecomment-1355685828


sha: 1335bcb8939e903a4a7680493624055faecc3da4
author_date: 2022-12-16T03:33:14Z
committer_date: 2022-12-17T21:47:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Use my own global variable instead of scope=session

  Refs https://github.com/simonw/datasette/pull/1960#issuecomment-1354148139


sha: d94d363ec079e2b5f18631a075bffdd5c68eb4da
author_date: 2022-12-16T01:38:22Z
committer_date: 2022-12-17T21:47:55Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Don't use pytest_asyncio.fixture(scope="session") any more, refs #1959

  Also got rid of the weird memory=False hack:

  https://github.com/simonw/datasette/pull/1960#issuecomment-1354053151


sha: 013496862f4d4b441ab61255242b838b24287607
author_date: 2022-12-16T00:55:17Z
committer_date: 2022-12-16T00:55:17Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Try click.echo() instead

  This ensures the URL is output correctly when running under Docker.

  Closes #1958


sha: 0b68996cc511b3a801f0cd0157bd66332d75f46f
author_date: 2022-12-15T21:06:45Z
committer_date: 2022-12-15T21:06:45Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "Replace AsgiLifespan with AsgiRunOnFirstRequest, refs #1955"

  This reverts commit dc18f62089e5672d03176f217d7840cdafa5c447.


sha: 38d28dd958c41e5e7fde3788ba3fdaf2e09eff70
author_date: 2022-12-15T21:05:33Z
committer_date: 2022-12-15T21:05:33Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Revert "Try running every test at once, refs #1955"

  This reverts commit 51ee8caa4a697fa3f4120e93b1c205b714a6cdc7.


sha: d97e82df3c8a3f2e97038d7080167be9bb74a68d
author_date: 2023-03-22T22:49:39Z
committer_date: 2023-03-22T22:49:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  ?_extra= support and TableView refactor to table_view

  * Implemented ?_extra= option for JSON views, refs #262
  * New dependency: asyncinject
  * Remove now-obsolete TableView class


sha: 5c1cfa451d78e3935193f5e10eba59bf741241a1
author_date: 2023-03-26T23:23:28Z
committer_date: 2023-03-26T23:23:28Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Link docs /latest/ to /stable/ again

  Re-implementing the pattern from https://til.simonwillison.net/readthedocs/link-from-latest-to-stable

  Refs #1608


sha: 30c88e3570ba3febf232c7ad429d7045ea8a9915
author_date: 2023-03-29T06:12:05Z
committer_date: 2023-03-29T06:12:05Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 22.12.0 to 23.3.0 (#2047)

  Bumps [black](https://github.com/psf/black) from 22.12.0 to 23.3.0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/compare/22.12.0...23.3.0)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
    update-type: version-update:semver-major
  ...

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: bbd5489dbc440c67c69396e7f752584a32d2cfbe
author_date: 2023-03-29T06:11:33Z
committer_date: 2023-03-29T06:11:33Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump blacken-docs from 1.12.1 to 1.13.0 (#1992)

  Bumps [blacken-docs](https://github.com/asottile/blacken-docs) from 1.12.1 to 1.13.0.
  - [Release notes](https://github.com/asottile/blacken-docs/releases)
  - [Changelog](https://github.com/adamchainz/blacken-docs/blob/main/HISTORY.rst)
  - [Commits](https://github.com/asottile/blacken-docs/compare/v1.12.1...1.13.0)

  ---
  updated-dependencies:
  - dependency-name: blacken-docs
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: d52402447ea5eb5a3f084e4f85a45675d34eb4da
author_date: 2023-03-29T06:09:48Z
committer_date: 2023-03-29T06:09:48Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump sphinx from 6.1.2 to 6.1.3 (#1986)

  Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 6.1.2 to 6.1.3.
  - [Release notes](https://github.com/sphinx-doc/sphinx/releases)
  - [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
  - [Commits](https://github.com/sphinx-doc/sphinx/compare/v6.1.2...v6.1.3)

  ---
  updated-dependencies:
  - dependency-name: sphinx
    dependency-type: direct:development
    update-type: version-update:semver-patch
  ...

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 848a9a420de9b50a7c862db7fb34d930835bee89
author_date: 2023-03-29T06:08:00Z
committer_date: 2023-03-29T06:08:00Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump furo from 2022.12.7 to 2023.3.27 (#2046)

  Bumps [furo](https://github.com/pradyunsg/furo) from 2022.12.7 to 2023.3.27.
  - [Release notes](https://github.com/pradyunsg/furo/releases)
  - [Changelog](https://github.com/pradyunsg/furo/blob/main/docs/changelog.md)
  - [Commits](https://github.com/pradyunsg/furo/compare/2022.12.07...2023.03.27)

  ---
  updated-dependencies:
  - dependency-name: furo
    dependency-type: direct:development
    update-type: version-update:semver-major
  ...

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: d7b21a862335d3765247d84e5afe778f83eb69ee
author_date: 2023-07-08T16:37:01Z
committer_date: 2023-07-08T16:37:01Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  metadata.yaml now treated as default in docs

  Added sphinx-inline-tabs to provide JSON and YAML tabs to show examples.

  Refs #1153


sha: ede62036180993dbd9d4e5d280fc21c183cda1c3
author_date: 2023-06-29T14:31:54Z
committer_date: 2023-06-29T14:31:54Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump blacken-docs from 1.13.0 to 1.14.0 (#2083)

  Bumps [blacken-docs](https://github.com/asottile/blacken-docs) from 1.13.0 to 1.14.0.
  - [Changelog](https://github.com/adamchainz/blacken-docs/blob/main/CHANGELOG.rst)
  - [Commits](https://github.com/asottile/blacken-docs/compare/1.13.0...1.14.0)

  ---
  updated-dependencies:
  - dependency-name: blacken-docs
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: dda99fc09fb0b5523948f6d481c6c051c1c7b5de
author_date: 2023-05-26T00:18:43Z
committer_date: 2023-05-26T00:18:43Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  New View base class (#2080)

  * New View base class, closes #2078
  * Use new View subclass for PatternPortfolioView


sha: 9d38925cdecce7f18e1fd3791821176154dc5f3c
author_date: 2023-06-26T01:31:22Z
committer_date: 2023-06-26T01:31:22Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Release 3.33

  Refs #235, #559, #560

  Refs https://github.com/simonw/llm/issues/60

  Refs https://github.com/nalgeon/sqlean.py/issues/1


sha: f5c63088e1454811ce8361208b72297408eb5237
author_date: 2023-06-25T23:25:51Z
committer_date: 2023-06-25T23:25:51Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Use sqlean if available in environment (#560)

  Closes #559
  Closes #235

  Refs https://github.com/simonw/llm/issues/60

  - Uses `sqlean` in place of `sqlite3` if `sqlean.py` is installed
  - Uses `sqlite-dump` if available and `conn.iterdump()` does not exist
  - New `with db.ensure_autocommit_off()` method for ensuring autocommit is off, used by `enable_wal()` and `disable_wal()`.


sha: 718b0cba9b32d97a41bcf9757c97fe1d058da81c
author_date: 2023-05-21T18:41:56Z
committer_date: 2023-05-21T18:41:56Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Experimental TUI powered by Trogon

  * sqlite-utils tui command if Trogon is installed, closes #545
  * Documentation for trogon TUI
  * Screenshot of TUI
  * Ignore trogon mypy error
  * only run flake8 on Python 3.8 or higher, closes #550


sha: 02f5c4d69d7b4baebde015c56e5bc62923f33314
author_date: 2023-05-08T21:53:58Z
committer_date: 2023-05-08T21:53:58Z
raw_author: 48e7f08226a63f00be8a5f44380ce11412c62eaf
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Support repeated calls to Table.convert()

  * Test repeated calls to Table.convert()
  * Register Table.convert() functions under their own `lambda_hash` name
  * Raise exception on registering identical function names

  Refs #525


sha: b2ec8717c3619260a1b535eea20e618bf95aa30b
author_date: 2023-09-13T21:06:25Z
committer_date: 2023-09-13T21:06:25Z
raw_author: aa206886100eb0f7f5e54172b068d9dd45885448
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Plugin configuration now lives in datasette.yaml/json

  * Checkpoint, moving top-level plugin config to datasette.json
  * Support database-level and table-level plugin configuration in datasette.yaml

  Refs #2093


sha: b645174271aa08e8ca83b27ff83ce078ecd15da2
author_date: 2023-09-08T04:23:59Z
committer_date: 2023-09-08T04:23:59Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  actors_from_ids plugin hook and datasette.actors_from_ids() method (#2181)

  * Prototype of actors_from_ids plugin hook, refs #2180
  * datasette-remote-actors example plugin, refs #2180


sha: e4abae3fd7a828625d00c35c316852ffbaa5ef2f
author_date: 2023-09-06T16:34:31Z
committer_date: 2023-09-06T16:34:31Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump Sphinx (#2166)

  Bumps the python-packages group with 1 update: [sphinx](https://github.com/sphinx-doc/sphinx).

  - [Release notes](https://github.com/sphinx-doc/sphinx/releases)
  - [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
  - [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.2.4...v7.2.5)

  ---
  updated-dependencies:
  - dependency-name: sphinx
    dependency-type: direct:development
    update-type: version-update:semver-patch
    dependency-group: python-packages
  ...

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 05707aa16b5c6c39fbe48b3176b85a8ffe493938
author_date: 2023-09-06T02:50:09Z
committer_date: 2023-09-06T02:50:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  click-default-group>=1.2.3 (#2173)

  * click-default-group>=1.2.3

  Now available as a wheel:
  - https://github.com/click-contrib/click-default-group/issues/21

  * Fix for blacken-docs


sha: 31d5c4ec05e27165283f0f0004c32227d8b78df8
author_date: 2023-09-06T02:43:01Z
committer_date: 2023-09-06T02:43:01Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Contraction - Google and Microsoft styleguides like it

  I was trying out https://github.com/errata-ai/vale


sha: 9cead33fb9c8704996181f1ab67c7376dee97f15
author_date: 2023-08-31T17:46:07Z
committer_date: 2023-08-31T17:46:07Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  OperationalError: database table is locked fix

  See also:
  - https://til.simonwillison.net/datasette/remember-to-commit


sha: 6bfe104d47b888c70bfb7781f8f48ff11452b2b5
author_date: 2023-08-30T22:12:24Z
committer_date: 2023-08-30T22:12:24Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  DATASETTE_LOAD_PLUGINS environment variable for loading specific plugins

  Closes #2164

  * Load only specified plugins for DATASETTE_LOAD_PLUGINS=datasette-one,datasette-two
  * Load no plugins if DATASETTE_LOAD_PLUGINS=''
  * Automated tests in a Bash script for DATASETTE_LOAD_PLUGINS


sha: 50da908213a0fc405ecd7a40090dfea7a2e7395c
author_date: 2023-08-29T16:32:34Z
committer_date: 2023-08-29T16:32:34Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Cascade for restricted token view-table/view-database/view-instance operations (#2154)

  Closes #2102

  * Permission is now a dataclass, not a namedtuple - refs https://github.com/simonw/datasette/pull/2154/#discussion_r1308087800
  * datasette.get_permission() method


sha: 92b8bf38c02465f624ce3f48dcabb0b100c4645d
author_date: 2023-08-29T03:24:23Z
committer_date: 2023-08-29T03:24:23Z
raw_author: aa206886100eb0f7f5e54172b068d9dd45885448
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Add new `--internal internal.db` option, deprecate legacy `_internal` database

  Refs:
  - #2157 
  ---------

  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: d28f12092dd795f35e9500154711d542f8931676
author_date: 2023-08-29T00:38:32Z
committer_date: 2023-08-29T00:38:32Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump sphinx, furo, blacken-docs dependencies (#2160)

  * Bump the python-packages group with 3 updates

  Bumps the python-packages group with 3 updates: [sphinx](https://github.com/sphinx-doc/sphinx), [furo](https://github.com/pradyunsg/furo) and [blacken-docs](https://github.com/asottile/blacken-docs).


  Updates `sphinx` from 7.1.2 to 7.2.4
  - [Release notes](https://github.com/sphinx-doc/sphinx/releases)
  - [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
  - [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.1.2...v7.2.4)

  Updates `furo` from 2023.7.26 to 2023.8.19
  - [Release notes](https://github.com/pradyunsg/furo/releases)
  - [Changelog](https://github.com/pradyunsg/furo/blob/main/docs/changelog.md)
  - [Commits](https://github.com/pradyunsg/furo/compare/2023.07.26...2023.08.19)

  Updates `blacken-docs` from 1.15.0 to 1.16.0
  - [Changelog](https://github.com/adamchainz/blacken-docs/blob/main/CHANGELOG.rst)
  - [Commits](https://github.com/asottile/blacken-docs/compare/1.15.0...1.16.0)

  ---
  updated-dependencies:
  - dependency-name: sphinx
    dependency-type: direct:development
    update-type: version-update:semver-minor
    dependency-group: python-packages
  - dependency-name: furo
    dependency-type: direct:development
    update-type: version-update:semver-minor
    dependency-group: python-packages
  - dependency-name: blacken-docs
    dependency-type: direct:development
    update-type: version-update:semver-minor
    dependency-group: python-packages
  ...

  Signed-off-by: dependabot[bot] <support@github.com>

  ---------

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: d9aad1fd042a25d226f2ace1f7827b4602761038
author_date: 2023-08-28T20:06:14Z
committer_date: 2023-08-28T20:06:14Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  -s/--setting x y gets merged into datasette.yml, refs #2143, #2156

  This change updates the `-s/--setting` option to `datasette serve` to allow it to be used to set arbitrarily complex nested settings in a way that is compatible with the new `-c datasette.yml` work happening in:
  - #2143

  It will enable things like this:
  ```
  datasette data.db --setting plugins.datasette-ripgrep.path "/home/simon/code"
  ```
  For the moment though it just affects [settings](https://docs.datasette.io/en/1.0a4/settings.html) - so you can do this:
  ```
  datasette data.db --setting settings.sql_time_limit_ms 3500
  ```
  I've also implemented a backwards compatibility mechanism, so if you use it this way (the old way):
  ```
  datasette data.db --setting sql_time_limit_ms 3500
  ```
  It will notice that the setting you passed is one of Datasette's core settings, and will treat that as if you said `settings.sql_time_limit_ms` instead.


sha: 17ec309e14f9c2e90035ba33f2f38ecc5afba2fa
author_date: 2023-08-23T01:26:11Z
committer_date: 2023-08-23T01:26:11Z
raw_author: aa206886100eb0f7f5e54172b068d9dd45885448
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Start datasette.json, re-add --config, rm settings.json

  The first step in defining the new `datasette.json/yaml` configuration mechanism.

  Refs #2093, #2143, #493


sha: 01e0558825b8f7ec17d3b691aa072daf122fcc74
author_date: 2023-08-22T17:10:01Z
committer_date: 2023-08-22T17:10:01Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Merge pull request from GHSA-7ch3-7pp7-7cpq

  * API explorer requires view-instance permission

  * Check database/table permissions on /-/api page

  * Release notes for 1.0a4

  Refs #2119, #2133, #2138, #2140

  Refs https://github.com/simonw/datasette/security/advisories/GHSA-7ch3-7pp7-7cpq


sha: 1377a290cd85ba8d3338b1da47c4665ed4c6c625
author_date: 2023-08-08T01:47:39Z
committer_date: 2023-08-08T01:47:39Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  New JSON design for query views (#2118)

  * Refs #2111, closes #2110
  * New Context dataclass/subclass mechanism, refs #2127
  * Define QueryContext and extract get_tables() method, refs #2127
  * Fix OPTIONS bug by porting DaatbaseView to be a View subclass
  * Expose async_view_for_class.view_class for test_routes test
  * Error/truncated aruments for renderers, closes #2130


sha: 5139c0886a7f6bb94d317ba0665aa6e728716028
author_date: 2023-08-07T16:19:23Z
committer_date: 2023-08-07T16:19:23Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump the python-packages group with 3 updates (#2128)

  Bumps the python-packages group with 3 updates: [sphinx](https://github.com/sphinx-doc/sphinx), [furo](https://github.com/pradyunsg/furo) and [blacken-docs](https://github.com/asottile/blacken-docs).

  Updates `sphinx` from 6.1.3 to 7.1.2
  - [Release notes](https://github.com/sphinx-doc/sphinx/releases)
  - [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES)
  - [Commits](https://github.com/sphinx-doc/sphinx/compare/v6.1.3...v7.1.2)

  Updates `furo` from 2023.3.27 to 2023.7.26
  - [Release notes](https://github.com/pradyunsg/furo/releases)
  - [Changelog](https://github.com/pradyunsg/furo/blob/main/docs/changelog.md)
  - [Commits](https://github.com/pradyunsg/furo/compare/2023.03.27...2023.07.26)

  Updates `blacken-docs` from 1.14.0 to 1.15.0
  - [Changelog](https://github.com/adamchainz/blacken-docs/blob/main/CHANGELOG.rst)
  - [Commits](https://github.com/asottile/blacken-docs/compare/1.14.0...1.15.0)

  ---
  updated-dependencies:
  - dependency-name: sphinx
    dependency-type: direct:development
    update-type: version-update:semver-major
    dependency-group: python-packages
  - dependency-name: furo
    dependency-type: direct:development
    update-type: version-update:semver-minor
    dependency-group: python-packages
  - dependency-name: blacken-docs
    dependency-type: direct:development
    update-type: version-update:semver-minor
    dependency-group: python-packages
  ...

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 3a51ca901427ac93b0ed0638fd1f82fb647a299a
author_date: 2023-07-21T21:19:24Z
committer_date: 2023-07-21T21:19:24Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump black from 23.3.0 to 23.7.0 (#2099)

  Bumps [black](https://github.com/psf/black) from 23.3.0 to 23.7.0.
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/compare/23.3.0...23.7.0)

  ---
  updated-dependencies:
  - dependency-name: black
    dependency-type: direct:development
    update-type: version-update:semver-minor
  ...

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 1c6ea54338e24fcebcee4e2f9c170ee300a5d946
author_date: 2023-09-09T00:45:30Z
committer_date: 2023-09-09T00:45:30Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  .transform() now preserves rowid values

  * .transform() now preserves rowid values, refs #592
  * Test transform rowids against different table types, closes #592


sha: d2bcdc00c6ecc01a6e8135e775ffdb87572b802b
author_date: 2023-08-18T01:05:13Z
committer_date: 2023-08-18T01:05:13Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Swapped the order of a bunch of pytest comparisons

  When I wrote this I thought constant == value was a better assertion. I no longer think that.


sha: 509857ee8724f73760f3631b69c26f9047381187
author_date: 2023-08-18T00:48:08Z
committer_date: 2023-08-18T00:48:08Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  .add_foreign_keys() uses .transform() instead of PRAGMA writable_schema

  Closes #577

  This should solve all sorts of problems seen by users of platforms that throw errors on writable_schema.

  Also added `add_foreign_keys=` and `foreign_keys=` parameters to `table.transform()`.


sha: 3f80a026983d3e634f05a46f2a6da162b5139dd9
author_date: 2023-07-22T22:59:08Z
committer_date: 2023-07-22T22:59:08Z
raw_author: aa206886100eb0f7f5e54172b068d9dd45885448
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  prepare_connection plugin hook

  Closes:
  - #574

  Refs #567

  ---------

  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: 61aaa698154c9020934d4896d04174a0f9c4f777
author_date: 2023-07-22T22:32:09Z
committer_date: 2023-07-22T22:32:09Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  .transform(..., keep_table=name) parameter, closes #571

  Also type hints for the transform_sql() method


sha: bff240032d5c2611b44b181c6619658d9de7330b
author_date: 2023-07-22T18:45:45Z
committer_date: 2023-07-22T18:45:45Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  pygments-csv-lexer

  To fix this warning:

  /Users/simon/Dropbox/Development/sqlite-utils/docs/cli.rst:1286: WARNING: Pygments lexer name 'csv' is not known


sha: 6763572948ffd047a89a3bbf7c300e91f51ae98f
author_date: 2023-09-20T22:11:24Z
committer_date: 2023-09-20T22:11:24Z
raw_author: 5df307d91b1167b0aa175853783d760add239497
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Bump sphinx, furo, black

  Bumps the python-packages group with 3 updates: [sphinx](https://github.com/sphinx-doc/sphinx), [furo](https://github.com/pradyunsg/furo) and [black](https://github.com/psf/black).


  Updates `sphinx` from 7.2.5 to 7.2.6
  - [Release notes](https://github.com/sphinx-doc/sphinx/releases)
  - [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
  - [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.2.5...v7.2.6)

  Updates `furo` from 2023.8.19 to 2023.9.10
  - [Release notes](https://github.com/pradyunsg/furo/releases)
  - [Changelog](https://github.com/pradyunsg/furo/blob/main/docs/changelog.md)
  - [Commits](https://github.com/pradyunsg/furo/compare/2023.08.19...2023.09.10)

  Updates `black` from 23.7.0 to 23.9.1
  - [Release notes](https://github.com/psf/black/releases)
  - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
  - [Commits](https://github.com/psf/black/compare/23.7.0...23.9.1)

  ---
  updated-dependencies:
  - dependency-name: sphinx
    dependency-type: direct:development
    update-type: version-update:semver-patch
    dependency-group: python-packages
  - dependency-name: furo
    dependency-type: direct:development
    update-type: version-update:semver-minor
    dependency-group: python-packages
  - dependency-name: black
    dependency-type: direct:development
    update-type: version-update:semver-minor
    dependency-group: python-packages
  ...

  Signed-off-by: dependabot[bot] <support@github.com>
  Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>


sha: 6ed7908580fa2ba9297c3225d85c56f8b08b9937
author_date: 2023-09-18T17:44:13Z
committer_date: 2023-09-18T17:44:13Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Simplified test for #2189

  This now executes two facets, in the hope that parallel facet execution
  would illustrate the bug - but it did not illustrate the bug.


sha: f56e043747bde4faa1d78588636df6c0dadebc65
author_date: 2023-09-18T17:39:11Z
committer_date: 2023-09-18T17:39:11Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  test_facet_against_in_memory_database, refs #2189

  This is meant to illustrate a crashing bug but it does not trigger it.


sha: 452a587e236ef642cbc6ae345b58767ea8420cb5
author_date: 2023-10-13T00:00:27Z
committer_date: 2023-10-13T00:00:27Z
raw_author: f98fc3edb6941a80a1bf0347a12972fd457ea2fb
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  JavaScript Plugin API, providing custom panels and  column menu items

  Thanks, Cameron Yick.

  https://github.com/simonw/datasette/pull/2052

  Co-authored-by: Simon Willison <swillison@gmail.com>


sha: a4b401f470b8dd261e73ceb35970f39dd60a3947
author_date: 2023-10-12T21:57:04Z
committer_date: 2023-10-12T21:57:04Z
raw_author: 13ae486343ea6454a93114c6f558ffea2f2c6874
raw_committer: 13ae486343ea6454a93114c6f558ffea2f2c6874
message:
  Updated Discord link, refs #2196

  This issue reminded me to use the datasette.io/discord redirect URL.


sha: 35deaabcb105903790d18710a26e77545f6852ce
author_date: 2023-10-12T16:16:37Z
committer_date: 2023-10-12T16:16:37Z
raw_author: aa206886100eb0f7f5e54172b068d9dd45885448
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Move non-metadata configuration from metadata.yaml to datasette.yaml

  * Allow and permission blocks moved to datasette.yaml
  * Documentation updates, initial framework for configuration reference


sha: 1500c19bd0f31b2e7f28a5ec2d7bfa133a2e4d4c
author_date: 2023-12-08T05:05:27Z
committer_date: 2023-12-08T05:05:27Z
raw_author: 77887d00c62b181af66df54bd6325b314eb5b25e
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Add more STRICT table support (#604)

  * Add more STRICT table support per https://github.com/simonw/sqlite-utils/issues/344#issuecomment-982014776.
  * Make `table.transform()` preserve STRICT mode.
  * Fix mypy failures in PR #604
  * Link to SQLITE strict page in a few places


sha: 37273d7f63f08872aa1c90c4233a0580e384ac19
author_date: 2023-11-04T00:40:29Z
committer_date: 2023-11-04T00:40:29Z
raw_author: 189bbd99f415a97bb6554c438654cb35fc4c85ae
raw_committer: cd792325681cbad9f663f2879d8b69f1edbb678f
message:
  Fixed issue #433 - CLI eats cursor (#598)

  The issue is that underlying iterator is not fully consumed within the body of
  the `with file_progress()` block. Instead, that block creates generator
  expressions like `docs = (dict(zip(headers, row)) for row in reader)`

  These iterables are consumed later, outside the `with file_progress()` block,
  which consumes the underlying iterator, and in turn updates the progress bar.

  This means that the `ProgressBar.__exit__` method gets called before the last
  time the `ProgressBar.update` method gets called. The result is that the code to
  make the cursor invisible (inside the `update()` method) is called after the
  cleanup code to make it visible (in the `__exit__` method).

  The fix is to move consumption of the `docs` iterators within the progress bar block.

  (An additional fix, to make ProgressBar more robust against this kind of misuse, would
  to make it refusing to update after its `__exit__` method had been called, just
  like files cannot be `read()` after they are closed. That requires a in the
  click library).


