sha,message,author_date,committer_date,raw_author,raw_committer,repo,author,committer 0c6745b70f95663f8ddf4309c578bd568eca75ec,Whitespace fix,2019-02-24T18:42:27Z,2019-02-24T18:42:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 7784b924a179ee213f52693276ab7b68d6549b51,"Added create_index(..., if_not_exists=True), refs #14",2019-02-24T18:46:44Z,2019-02-24T18:46:44Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 8a5d0d80c37008f30953110d58f474aac2728ee3,"sqlite-utils create-index command, closes #14",2019-02-24T19:11:21Z,2019-02-24T19:11:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 dc2560879ed32136d64707a031b62b2870809892,"table.add_column(name, type) method, refs #15",2019-02-24T19:40:26Z,2019-02-24T19:40:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 c5286d2c66b8c187002f9ad8991a6665b2b092f9,Black formatting,2019-02-24T19:40:58Z,2019-02-24T19:40:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 6d25f648ed708b8dd78cbb0af5e356d16859625f,"add_column now accepts explicit SQLite types, refs #15",2019-02-24T19:49:24Z,2019-02-24T19:49:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 05a85b358fb907d8fcb72f19390ee2ba5a2261a5,Don't assume -1 for error code,2019-02-24T19:50:56Z,2019-02-24T19:50:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 0bc49e938e1e3444df734f9178a9a317f68f9716,"'sqlite-utils add-column name type' command, closes #15",2019-02-24T20:04:33Z,2019-02-24T20:04:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 33df260b38e1b0f179cdb849fc4e3e9c76e57f3a,Fix for CLI test,2019-02-24T20:12:59Z,2019-02-24T20:12:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 9756310408c7e5fa1ca257573e46aa13c2041c24,Black,2019-02-24T20:59:46Z,2019-02-24T20:59:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 e1ca938aa1c84367fd9d4786b9709c56f3e6e778,"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",2019-02-24T21:10:51Z,2019-02-24T21:10:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 f8d3b7cfe5c1950b0749d40eb2640df50b52f651,"sqlite-utils add-foreign-key books.db books author_id authors id Command for adding foreign keys to existing tables. Closes #2",2019-02-24T21:33:45Z,2019-02-24T21:33:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 557dc3f9a7b622c45c73fd791cfe0a786f9a1de0,"Improved foreign_keys= argument, closes #17",2019-02-24T22:12:45Z,2019-02-24T22:12:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 3cab079d3e45aa3468e9f7317680ded6438f3955,"add-column col_type now optional, defaults to str",2019-02-24T22:24:00Z,2019-02-24T22:24:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 05317f53411fab3c3d66b88408bc867f2e474a35,Release 0.14,2019-02-24T23:11:51Z,2019-02-24T23:11:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,140912432,9599,9599 0b1af42ead3b3902347951180b3364ce1942da6e,Link to my blog entry,2019-02-25T03:45:38Z,2019-02-25T03:45:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,140912432,9599,19864447 5b3af3d015a6048a3977234bf46d20905ce720c0,Added sqlite-utils blog entry to news section,2019-02-25T03:47:11Z,2019-02-25T03:47:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 4147c388cbb9b14d137dd5229ae3f574ee6a25fe,Link to sqlite-utils blog entry,2019-03-08T04:30:21Z,2019-03-08T04:30:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 41744d76908bbef0edc038a5050a709cdd26e529,Added datasette-jellyfish,2019-03-09T18:43:12Z,2019-03-09T18:43:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 bf6b0f918de4aeee7c1036ac975ce2fb23237da7,about and about_url metadata options,2019-03-10T21:37:11Z,2019-03-15T03:54:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9743e1d91b5f0a2b3c1c0bd6ffce8739341f43c4,"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.",2019-03-14T23:42:38Z,2019-03-15T03:54:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b3e739332624c2d4f2668a105afd727af774100b,"Allow more recent versions of Click Closes #414",2019-03-15T04:41:43Z,2019-03-15T04:41:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 285566790879b31d2fdd2a8c6f56825162eb71b9,Fix for test failure with Click 7.0,2019-03-15T05:00:13Z,2019-03-15T05:00:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9e8c36793bfbb17c2f67371cc7f9aa8b9202fdc4,"Update spatialite.rst (#413) a line of sql added to create the idx_ in the python recipe",2019-03-15T05:06:45Z,2019-03-15T05:06:45Z,41e868c44ebf155cd4e69182c407f1d278d635ce,2946d096d0cdefdc017559e6b57e87658736e843,107914493,28597217,9599 afe9aa3ae03c485c5d6652741438d09445a486c1,"show/hide link for SQL on custom query page Closes #415",2019-03-15T05:22:24Z,2019-03-15T05:22:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 6f6d0ff2b41f1cacaf42287b1b230b646bcba9ee,"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",2019-03-17T22:55:04Z,2019-03-17T22:55:04Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 47032636b55718dd711670f19b753f4ada9e8f2f,"'datasette serve -i immutable.db' option, refs #419",2019-03-17T23:25:15Z,2019-03-17T23:25:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 82fec6048148b58748040a7e2caa163387e982a3,"Fix for TypeError File ""../datasette/app.py"", line 138, in __init__ self.files = files + immutables TypeError: can only concatenate tuple (not ""list"") to tuple",2019-03-17T23:36:35Z,2019-03-17T23:36:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0209a0a344503157351e625f0629b686961763c9,"table_exists() now uses async SQL, refs #420",2019-03-31T18:02:22Z,2019-03-31T18:02:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7d0f668556b6d9a6c3d70a7b8a07a542857bbb56,".resolve_db_name() and .execute() work without inspect Refs #420",2019-03-31T23:51:52Z,2019-03-31T23:51:52Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 29a3896fe1e09d5c35a90d55690c9f71fae81e24,".database_url(database) no longer needs inspect, refs #420",2019-03-31T23:55:38Z,2019-03-31T23:55:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 468c6fd9532f08859c77ae670307fd5f4c6632f5,"DatabaseDownload no longer uses .inspect(), refs #420",2019-04-01T02:04:17Z,2019-04-01T02:04:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 d8851e0011f256ce52775aa776e0e4323db50c8e,Removed rogue print(),2019-04-07T01:54:51Z,2019-04-07T01:54:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 97331f3435ba1583a0f9dbcaffc25de8894cf1f8,"sortable_columns_for_table() no longer uses inspect() Refs #420",2019-04-07T01:58:51Z,2019-04-07T01:58:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 53bf875483d98861314db3a0cdcec8f5ce22ee96,"expand_foreign_keys() no longer uses inspect, refs #420",2019-04-07T02:56:07Z,2019-04-07T02:56:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 c882e9262f64e0fc7c2fc89c611bdb768c069af7,"display_columns_and_rows() no longer uses inspect, refs #420",2019-04-07T03:11:08Z,2019-04-07T03:11:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 f23120a9641e521d669788e9938fb3cf2754d710,RowView.data() no longer uses inspect refs #420,2019-04-07T03:17:47Z,2019-04-07T03:17:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 db02311ebf3711309b231d007967bcf8b026a026,"foreign_key_tables no longer uses inspect, refs #420",2019-04-07T03:23:30Z,2019-04-07T03:23:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 36bd6558b00be027bb4b7dba0c8d200da0ca95df,"expandable_columns() no longer uses inspect, refs #420",2019-04-07T03:46:08Z,2019-04-07T03:46:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3a208a41d4dce35b97eca8b25f37055c3fda5aed,"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",2019-04-07T03:47:10Z,2019-04-07T03:47:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 78e45ead4d771007c57b307edf8fc920101f8733,"New ?tags__arraycontains=tag lookup against JSON fields Part one of supporting facet-by-JSON-array, refs #359",2019-04-10T15:17:19Z,2019-04-10T15:27:52Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9cd3b44277e6a8ea9273bf659379ff0414e0b8ae,Upgrade to Jinja2==2.10.1 (#426),2019-04-10T23:13:30Z,2019-04-10T23:13:30Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 db74cf0144df3e2a017c40a3a36ff5e1a78d7e92,"?_fts_table= and ?_fts_pk= arguments, closes #428",2019-04-12T04:21:17Z,2019-04-12T04:21:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 e11cb4c66442abca2a6b6159521a6cf4da8739c1,"Persist show/hide state better, closes #425",2019-04-12T05:00:47Z,2019-04-12T05:00:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 bc6a9b45646610f362b4287bc4110440991aa4d6,"?_where= parameter on table views, closes #429 From pull request #430",2019-04-13T01:37:22Z,2019-04-13T01:37:22Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 f2c767c2221b06c0fb4962cfa430e038359019d3,Fixed broken link in documentation,2019-04-13T01:56:51Z,2019-04-13T01:57:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 274ef43bb7b129ddc2e68805b4f4ff3776fb9503,Moved expand_foreign_keys() from TableView to Datasette,2019-04-13T18:48:00Z,2019-04-13T18:48:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 13ee3c222f8ee967a2f716cca11bee4ea51fea46,Moved BaseView.absolute_url() to Datasette,2019-04-13T19:16:05Z,2019-04-13T19:16:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 d1075b8259b06e6002aaecc9a1167a4db9b2c2f4,Cleaned up pylint warnings,2019-04-13T19:20:10Z,2019-04-13T19:20:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 d4bfb8461c68ba2912f6d01fe159ce186a9040c6,Removed accidental extra default plugins module,2019-04-13T19:33:23Z,2019-04-13T19:33:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9dc7a1824be0a876b8f54e0edd4467d9a357e0cb,Slightly more interesting example link,2019-04-13T22:49:07Z,2019-04-13T22:49:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 6da567dda953c7ac0e5500f17d8e220467a3499e,"Extract and refactor filters into filters.py This will help in implementing __in as a filter, refs #433",2019-04-15T21:51:20Z,2019-04-15T21:51:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 2c19a27d15a913e5f3dd443f04067169a6f24634,"Documentation for filters, plus new documentation unit test https://simonwillison.net/2018/Jul/28/documentation-unit-tests/",2019-04-15T22:41:11Z,2019-04-15T22:41:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 1c6649b19b09ea018d91a86db9c019a940fe36fc,"New colname__in=x,y,z filter, closes #433",2019-04-15T22:42:28Z,2019-04-15T22:43:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 583b22aa28e26c318de0189312350ab2688c90b1,New ?column__date=yyyy-mm-dd filter,2019-04-15T22:54:54Z,2019-04-15T22:54:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9c77e6e355ec718d76178a7607721d10a66b6aef,"Support multiple filters of the same type Closes #288",2019-04-15T23:44:17Z,2019-04-15T23:44:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 2b11948d7c5f4548325c941d92eaf428852a19d8,"New ConnectedDatabase.mtime_ns property I plan to use this for some clever table count caching tricks",2019-04-20T17:50:45Z,2019-04-20T17:50:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 31f36e1b97ccc3f4387c80698d018a69798b6228,"Added some guidelines Mainly to remind me that master needs to be releasable at all times!",2019-04-20T18:32:40Z,2019-04-20T18:32:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 7d01ca34a10b5f8a993859cfd05790eb2870b94e,"Added ?_trace=1 option to trace SQL Currently just dumps all SQL statements out on the console.",2019-04-21T05:28:15Z,2019-04-21T05:34:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 58a862cee4a065d463da0a08b87134efb6b6e18d,"?_trace=1 now adds SQL trace info to JSON/HTML response Also added documentation for it. Refs #435",2019-04-21T17:41:16Z,2019-04-21T17:41:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 e4e73a537add40b92a02e55af004b0d26a3ccdce,"Test for ?_trace=1, refs #435",2019-04-21T17:46:56Z,2019-04-21T17:46:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9d73e3c8bd5f3aae24a75b62c420de166992b30c,"Note that trace data format is very likely to change, refs #435",2019-04-21T17:53:28Z,2019-04-21T17:53:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 11b352b4d52fd02a422776edebb14f12e4994d3b,"Fix for Python 3.5, refs #435",2019-04-21T18:20:20Z,2019-04-21T18:20:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 bac4e01f40ae7bd19d1eab1fb9349452c18de8f5,"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",2019-04-21T19:02:24Z,2019-04-21T19:02:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 cf406c075433882b656e340870adf7757976fa4c,"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",2019-05-01T23:01:56Z,2019-05-01T23:01:56Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,45057,9599 669fa21a71c9920923df0f64907c095c0e7d889f,Include request duration in traces,2019-05-01T23:16:15Z,2019-05-01T23:27:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 e7151ccccf4a0d10e1fcf3832e18c5199c16dea0,"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.",2019-05-02T00:39:39Z,2019-05-02T00:39:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 50d2d1aac985f440b36e6847e3ddacb4a6bf4d4b,Fixed bug where metadata.json hidden tables were ignored,2019-05-02T00:54:48Z,2019-05-02T00:54:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 033cf0bcbbcadd0256d0c43fb7b9d3053727b4fe,"DatabaseView no longer uses .inspect(), closes #420",2019-05-02T01:12:58Z,2019-05-02T01:13:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 f553a670216960043ec7e62ff35d42db78903ff0,"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",2019-05-02T05:09:03Z,2019-05-02T05:09:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 ad9de774f75ba41f2a627a9d2cecd61050bac901,"Added missing file, refs #438",2019-05-02T05:10:23Z,2019-05-02T05:10:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3651eedf20b86ad30f510bf762fb25790bb3560c,"Show 'many rows' if count times out, refs #420",2019-05-02T05:20:24Z,2019-05-02T05:20:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 efc93b8ab5a21e3802f75f08d5e41409f5684b5d,"Entirely removed table_rows_count table property We were not displaying this anywhere, and it is now expensive to calculate. Refs #419, #420",2019-05-02T05:29:47Z,2019-05-02T05:29:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 ea66c45df96479ef66a89caa71fff1a97a862646,"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.",2019-05-03T00:11:26Z,2019-05-03T00:11:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 53d2f00b732488e0204332da181fc256aa00f41c,"Implemented ArrayFacet, closes #359",2019-05-03T00:21:27Z,2019-05-03T00:21:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 470cf0b05d4fda0d2563f81c7e32af13fe346ccc,"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).",2019-05-03T13:11:27Z,2019-05-03T13:11:27Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,45057,9599 bf229c9bd88179c8ec16bd65fd4fb28ab4241c2e,"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.",2019-05-03T13:12:19Z,2019-05-03T13:12:19Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,45057,9599 75a21fc2a136ccfc9da7bbf521cf288e63c9707f,"datasette publish cloudrun (#434) - thanks, @rprimet New publish subcommand that publishes using the new Google Cloud Run platform. datasette publish cloudrun database.db",2019-05-03T13:59:01Z,2019-05-03T13:59:01Z,8ff51bbea01fdafe1fb3502111343b563f7d5a1b,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,10352819,9599 bade9daeb234e35e216adfe5f6d99f489892b2f8,"Docs for 'datasette publish cloudrun', refs #434",2019-05-03T16:16:35Z,2019-05-03T16:16:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 01b3de5b66742f0f661183e9e2ef66be3600e831,"Unit test for binary data display, refs #442",2019-05-03T16:43:59Z,2019-05-03T16:45:06Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 d555baf508de71a5e3dc9a9aed2c13f6f202956d,"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.",2019-05-03T16:44:48Z,2019-05-03T16:44:48Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,45057,9599 553314dcd699a84aa7cc806377150ca0d57a6024,Use dist: xenial and python: 3.7 on Travis (#447),2019-05-03T18:16:52Z,2019-05-03T18:16:52Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 f853d5592ec7f901a50381de22a26a9ab098f885,"""python3 -m pip"" is clearer (thanks @jaap3) (#368)",2019-05-03T18:18:42Z,2019-05-03T18:18:42Z,93b11f15fd4dc15002baf3d9160dc6eb928bd883,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,48517,9599 93c65d29ba372fa2262a641c0fecb7a071d998d6,Fixed 500 error on /-/metadata page,2019-05-03T20:40:24Z,2019-05-03T20:42:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 66c87cee0c7344c7877373c60b180c766c206101,"Mark codemirror files as vendored (#367) This should stop GitHub from incorrectly stating that Datasette is 46% JavaScript.",2019-05-03T21:11:19Z,2019-05-03T21:11:19Z,93b11f15fd4dc15002baf3d9160dc6eb928bd883,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,48517,9599 35d6ee2790e41e96f243c1ff58be0c9c0519a8ce,"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.",2019-05-04T02:15:14Z,2019-05-04T02:15:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 55643430f7ac8d27e99b00e7cf79db741003e811,Added Code style: black badge,2019-05-04T02:21:21Z,2019-05-04T02:21:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 831515b834b1bf465a5c64e69ce505d22f75b35b,"Respect --cors for error pages, closes #453",2019-05-05T11:59:45Z,2019-05-05T12:12:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9617e92aa819ec7d7f09b9e44656ebba90c67f67,"Removed pointless return variable handle_request() always returns None anyway.",2019-05-05T17:58:35Z,2019-05-05T17:58:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 ec2db345e9465ee4ce3880dc62dcd453e66bcbca,Fixed crash on /:memory: page,2019-05-05T18:01:14Z,2019-05-05T18:01:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9fdb47ca952b93b7b60adddb965ea6642b1ff523,"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""",2019-05-05T22:36:04Z,2019-05-09T16:44:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 2db977d8f30e0eb8b7cda1481a4a8852b414915d,"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/",2019-05-06T02:50:33Z,2019-05-09T16:44:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 bfa2ae0d16d39bb82dbe4da4f3fdc3c7f6257418,"Promote Glitch instead of Datasette Publish Datasette Publish is currently broken due to Zeit API and platform changes.",2019-05-09T00:02:47Z,2019-05-09T00:02:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 b80b03ac9a9b8fc676ae17570b32f5439545198e,"datasette publish cloudrun --service=x, closes #457",2019-05-09T16:45:01Z,2019-05-09T16:45:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 f825e2012109247fa246e2b938f8174069e574f1,Run black and update docs for #457,2019-05-09T16:47:58Z,2019-05-09T16:48:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9f8d9fe262866ff3463f8e61214dcc6897bd5a9c,setup: add tests to package exclusion (#458),2019-05-10T01:54:50Z,2019-05-10T01:54:50Z,5e571aa122bb7440d7e40e22fd627b3fbbf12c38,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,7725188,9599 ad789eaaea069046d3b293d2c650a60acd72ced7,Added some things to .gitignore,2019-05-10T03:54:44Z,2019-05-10T05:28:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 de005b9b7d3db72375e6b8b048d1616a98e6347a,Fixed 500 error on homepage,2019-05-10T03:58:19Z,2019-05-10T05:28:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 e7b31ae8c1a28cab9db8e165b3f21407c2e581e6,"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",2019-05-11T17:06:23Z,2019-05-11T17:06:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 37adf3229038137de82a4e7331075212e7e94367,Changelog for 0.27.1,2019-05-11T18:34:13Z,2019-05-11T18:34:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 a0d444837f6ce3fdaf6b0664605f74dd4a7f8215,"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",2019-05-11T19:06:22Z,2019-05-11T19:06:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599