sha,message,author_date,committer_date,raw_author,raw_committer,repo,author,committer 864328e074d771a9b50fb1b01392541d7045fbb5,"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.",2018-06-05T03:53:12Z,2018-06-05T03:53:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 a246f476b4fe490f5450836b22961bc607e6b4b0,"Moved JsonDataView into views/special,py",2018-06-07T15:22:29Z,2018-06-07T15:22:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3a79ad98eafb9da527a3b9d9d8fbeb81936b02e7,"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.",2018-06-15T06:51:23Z,2018-06-15T06:51:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 5bda4a477c52b6d1cd7d0ca25382dbb20bda40ea,"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",2018-06-15T07:01:48Z,2018-06-15T07:01:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 d0a578c0fc07b9d9208cd9de981bdf7385a26c49,"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",2018-06-16T16:28:55Z,2018-06-16T16:28:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7e0caa1e62607c6579101cc0e62bec8899013715,Extract string-to-bool logic into utils.py,2018-06-16T16:44:31Z,2018-06-16T16:44:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0c22fa8f09e9fce7434d5fc83bcfb73c25795205,"Cleaned up view_definition/table_definition code in table view Also moved those out of standard JSON into just the HTML template context",2018-06-16T17:33:17Z,2018-06-16T17:33:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 ed631e690b81e34fcaeaba1f16c9166f1c505990,"?_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.",2018-06-16T22:18:57Z,2018-06-16T22:18:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0357774c946b7a35871715d7fc23b3f04f519af8,Renamed test_tables.db to fixtures.db in unit tests,2018-06-17T18:34:16Z,2018-06-17T18:34:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 6a32df334de1a7e3579879dd7ee073613be9b91b,"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",2018-06-17T19:16:04Z,2018-06-17T19:16:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 538565de3a126a6aa1cdb4b4ba91135507411af0,"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",2018-06-17T19:46:52Z,2018-06-17T21:16:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 db1e6bc182d11f333e6addaa1a6be87625a4e12b,"--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",2018-06-17T20:14:55Z,2018-06-17T21:19:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 f0c17229b7a7914d3da02e087dfd0e25d8321448,"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",2018-06-17T21:24:39Z,2018-06-17T21:24:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 438244c2853185e46bef8089ff9bb934442ec14b,"Try using a different name for each Now deploy Refs #313",2018-06-17T21:39:45Z,2018-06-17T21:39:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 958b75c69841ef5913da86e0eb2df634a9b95fda,"Set Now deployment name with datasette publish, refs #313",2018-06-17T21:46:30Z,2018-06-17T21:46:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 6a32684ebba89dfe882e1147b23aa8778479f5d8,"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",2018-06-17T22:19:21Z,2018-06-17T22:24:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0d7ba1ba676828dc7c8dda78ebe7921f7986fc18,"Default to _labels=on on JSON/CSV links with foreign keys, refs #266",2018-06-17T22:56:55Z,2018-06-17T22:56:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 83f4ef7ec7aa5b4cac9892b3e80cbca00c9080db,"Improved UI for CSV/JSON export, closes #266",2018-06-18T06:03:22Z,2018-06-18T06:05:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 398d29c2873ad22a8e779fab12e65bdbf598f823,"Don't link to #export on custom query results The advanced CSV export options don't work for custom SQL queries. Refs #266",2018-06-18T06:14:48Z,2018-06-18T06:14:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 bb4a9fbf362d0791e148195d86815d65ebc26fba,"Docs for CSV export, refs #266",2018-06-18T14:12:21Z,2018-06-18T14:12:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 04c896160a9981d37beb71529ac717a6fcf1b195,"Renamed 'stream all records' to 'stream all rows', refs #266",2018-06-18T14:25:44Z,2018-06-18T14:25:44Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 54f805dca3fd9e05d9276aedec83036a2e36578c,Advanced export box now obeys allow_csv_stream config - refs #266,2018-06-18T15:11:11Z,2018-06-18T15:11:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 e04f5b0d348ef7275a0a5ab9eb53527105132885,Release notes for 0.23,2018-06-18T15:11:57Z,2018-06-18T15:11:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 fdfbbbb9ee0d02fd4d43dfc42382252fa2287d6d,Default 'expand labels' to checked in CSV advanced export,2018-06-20T16:15:33Z,2018-06-20T16:15:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 aeeb50f61b7b1bf8ccb61448f8b8253db457d350,"Correctly display facets with value of 0 - fixes #318 Also added comprehensive unit test for facet display HTML.",2018-06-21T04:30:13Z,2018-06-21T04:30:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3683a6b626b2e79f4dc9600d45853ca4ae8de11a,"Docs + example of canned SQL query using || concatenation Closes #321",2018-06-21T04:54:36Z,2018-06-21T04:54:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3b53eea38267420bb78a2a604e23e5f816eccce2,"Fixed incorrect display of compound primary keys with foreign key references Closes #319",2018-06-21T14:56:28Z,2018-06-21T14:56:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 97ae66ccabd0e2eae5a7880ac93bd2ac26bb355e,"404s ending in slash redirect to remove that slash, closes #309",2018-06-21T15:13:07Z,2018-06-21T15:13:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 120f20cd97c14b4d9102d9c309b27cc2c0e4ee17,"Allow ""."" in database filenames, closes #302",2018-06-21T15:21:09Z,2018-06-21T15:21:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 e843ce26e536bb1a105da808c8f765b2c56e9c7b,"Correctly display empty strings in HTML table, closes #314",2018-06-21T15:26:18Z,2018-06-21T15:26:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0104dccca9d04916a9a5ba03874c92d9a9704096,"Updated Travis password, refs #317",2018-06-21T15:33:14Z,2018-06-21T15:33:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 dea86b9fba78e032ad09673e884e764387daf209,Changelog for 0.23.1,2018-06-21T15:37:13Z,2018-06-21T15:37:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 64c2fea8dfcecb06a3f9c674a96948e7366985fc,"CSV export now respects --cors, fixes #326",2018-06-24T00:59:37Z,2018-06-24T00:59:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 ad66c0da2bb171cdcb0d13b307b3fd7900b77963,"Installation instructions, including docker image - closes #328",2018-06-28T03:59:58Z,2018-06-28T03:59:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 71b46fd9f5b323d746b108d1f674b4007d5c252c,Cleaned up view constructors to accept just a datasette instance,2018-06-30T14:51:57Z,2018-07-08T02:58:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 d08faa89872d9ec8d3c8e76d85164ccd84596811,"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.",2018-06-29T12:52:51Z,2018-07-08T02:58:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 8ac71a61278d2d1b24ad3f3ab68048dac31467bc,Removed rogue print statement left over from #309,2018-07-08T03:09:45Z,2018-07-08T03:09:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 6541ce633ebf56770106221b0984751270adb2c7,"Fix for row pages for tables with / in, closes #325",2018-07-08T05:21:51Z,2018-07-08T05:21:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 6df6f712b36f0fe75694174906e31242427a8d1d,Release notes for 0.23.2,2018-07-08T05:28:45Z,2018-07-08T05:28:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 17863d108b9c8672b5e102d97858a96ca715a9d6,"datasette publish heroku now supports --extra-options, closes #334",2018-07-10T01:45:56Z,2018-07-10T01:45:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 2db2ae4f21d0ba5b84359f611da7b123262d92c7,"Show custom error message if SpatiaLite needed, closes #331",2018-07-10T15:13:27Z,2018-07-10T15:13:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 fc9b1cc1368cff455478c10f7b400bf5afc7d8e3,"New truncate_cells_html config for truncating cells, closes #330",2018-07-10T16:20:41Z,2018-07-10T16:20:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9281a4a804961b06ab133e042db839402f8a7796,New tagline: 'A tool for exploring and publishing data',2018-07-11T01:57:54Z,2018-07-11T02:05:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 aec3ae53237e43b0c268dbf9b58fa265ef38cfe1,"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",2018-07-11T02:04:13Z,2018-07-11T02:05:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 6e37f091edec35e2706197489f54fff5d890c63c,"Support title/description for canned queries, closes #342 Demo here: https://latest.datasette.io/fixtures/neighborhood_search",2018-07-16T02:33:30Z,2018-07-16T02:33:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 4e82d0e64d1e8c085375278e5b8ecadeab56ddb5,Removed unused imports,2018-07-23T15:39:00Z,2018-07-23T15:39:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 f24b49a1a8c202e5b28500eeb991173992a5ea18,"New force_https_urls option, refs #333",2018-07-23T15:58:29Z,2018-07-23T15:58:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b320f58d13e510d51e07187c8a75db856205b88f,'publish now' uses force_https_urls:on - closes #333,2018-07-24T01:51:43Z,2018-07-24T01:51:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 700d83d8adfeb3859ebc93828951e5048cb0e425,?_json_infinity=1 for handling Infinity/-Infinity - fixes #332,2018-07-24T03:07:57Z,2018-07-24T03:07:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3955771feaf47ddb6d281bba28ca2d6281551ed7,"Unit tests for advanced export box HTML, closes #320",2018-07-24T03:38:31Z,2018-07-24T03:38:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 581b4c97ee3d8339b1866480375e20b2fd2f6818,"URLify URLs in custom SQL queries, closes #298",2018-07-24T03:56:32Z,2018-07-24T03:56:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 28872a1fa789f314b0342f4e6182f1c78d6e2bca,Release notes for 0.24 release,2018-07-24T04:34:28Z,2018-07-24T04:34:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 74ad3ff4af4ebb499b07c6ce984def7d88fcbbb7,"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.",2018-07-24T16:00:10Z,2018-07-24T16:01:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 bd1db56936d7aa09f5ee87ac8146e19b71ae8b42,"'Usage: datasette', not 'Usage: cli' - refs #336",2018-07-24T16:03:07Z,2018-07-24T16:03:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9b85c599079e7dc37e7be125839711c982afc526,Removed unnecessary print statements from tests,2018-07-24T16:04:06Z,2018-07-24T16:04:06Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3ac21c749881d0fb1c35b0f9b7a819e29f61c5c1,Unit test confirming all plugin hooks are documented,2018-07-26T04:09:33Z,2018-07-26T04:09:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 1fb518618c1c246c58daf5085247b430f2aea29f,"""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",2018-07-26T05:43:01Z,2018-07-26T05:43:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3b68314d8f59d92fe7b2150cf747a082192ef9b7,Unit tests for publish now/heroku - closes #348,2018-07-26T05:45:47Z,2018-07-26T05:45:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 e8625695a3b7938f37b64dff09c14e47d9428fe5,"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.",2018-07-28T03:13:26Z,2018-07-28T03:13:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 8da6b0d542c7ea276df8b5467d4be6cd08cf867f,"Added labels so unit tests can detect docs, refs #299",2018-07-28T03:26:18Z,2018-07-28T03:26:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 788a542d3c739da5207db7d1fb91789603cdd336,"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.",2018-07-28T04:21:42Z,2018-07-28T04:21:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 8128497b7946ab68fff703e207fc7c5b26b6e9c9,"Only run documented_views() fixture once per session Speeds up tests, because previously it ran once per view class.",2018-07-28T04:49:20Z,2018-07-28T04:49:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 295d005ca48747faf046ed30c3c61e7563c61ed2,"Renamed variable, since docs are not written in Markdown",2018-07-28T04:56:51Z,2018-07-28T04:56:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 5629aaca67437acce8af47acb06488bd9991420b,sortable_columns also now works with views,2018-08-06T00:29:23Z,2018-08-06T00:29:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7d0299edd40636037a06548736681b67385b499e,"fts_table and fts_pk metadata configs, available for both tables and views",2018-08-06T00:44:47Z,2018-08-06T00:44:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 fe5b6ea95a973534fe8a44907c0ea2449aae7602,Hide 'view and edit SQL' if config.allow_sql turned off,2018-08-06T03:17:17Z,2018-08-06T03:17:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 2189be144002484c3abe5339a9c69aeca7b9889a,Refactor to use new datasatte.config(key) method,2018-08-11T20:06:45Z,2018-08-11T20:09:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0bd41d4cb0a42d7d2baf8b49675418d1482ae39b,Do not show default plugins on /-/plugins,2018-08-28T07:36:22Z,2018-08-28T07:36:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 1905c0336451b150b44478285ddb6878f5238519,New ds.metadata() method,2018-08-13T14:56:50Z,2018-08-28T07:45:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 0a14a4846b29b4b60d153356ad926cbc461c45c7,Added plugin_config() method,2018-08-28T08:35:21Z,2018-08-28T08:35:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 5cf0c6c91c077b8b69ea159c19f0c6fb02ab9c19,New plugin hook: extra_body_script,2018-08-28T08:56:44Z,2018-08-28T09:02:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 9e1fca4b016bbb2d4b2ab350ca1570ba6141afe8,Corrected indentation in metadata.rst,2018-08-28T09:56:34Z,2018-08-28T09:56:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 2e836f72d9a4e61341d75ea48e88314e0d006b65,"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).",2018-08-28T10:03:01Z,2018-08-28T10:03:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 fbf446965b398a0a6c3e6bce72c0b9b0112498ab,"Refactoring: renamed ""name"" variable to ""database""",2018-08-28T10:17:13Z,2018-08-28T10:25:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b7c6a9f9bd2bbd06ef64fef4a1fcc86fa0039039,"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.",2018-08-28T10:56:57Z,2018-08-28T10:56:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 1f54e092306b208125f39d06712b02895eb75168,Better docs for publish_subcommand() plugin hook,2018-08-28T10:59:50Z,2018-08-28T10:59:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b7257a21bf3dfa7353980f343c83a616da44daa7,"Fix json.loads in Python 3.5 3.5 requires a str, not a bytes https://travis-ci.org/simonw/datasette/jobs/421660555",2018-08-28T16:55:30Z,2018-08-28T16:55:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 57a71377c992753327a16b417daf79df7f506dd1,Releasing Datasette 0.25,2018-09-19T17:48:12Z,2018-09-19T17:48:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 96af802352e49e35751e295e9846aa39c5e22311,"Travis applies :latest tag to Docker release, refs #329",2018-09-19T18:23:56Z,2018-09-19T18:23:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 7dda8898c12720f1494cfd4761399e95211520a1,"Started contributing docs: setting up a dev environment https://datasette.readthedocs.io/en/latest/contributing.html",2018-10-27T17:12:19Z,2018-10-27T17:13:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 6b398c2971801d9a20cfdb7998f59020d5534e22,Link to dev environment instructions from installation guide,2018-10-27T17:34:31Z,2018-10-27T17:34:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 5debabd3fba1f0669081cefe55b67d333470bbd4,More human friendly 'what is Datasette' intro text,2018-11-05T06:04:23Z,2018-11-05T06:04:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b6546da53516e148e6aa34ad94f3452da30040f8,"Use Zeit cloud v1 to avoid 100MB image limit Closes #366 - thanks @slygent",2018-11-05T06:22:34Z,2018-11-05T06:22:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3dc0b3fa8c9b9bd81540ffe20c8b7e7a72465274,Release 0.25.1,2018-11-05T06:31:41Z,2018-11-05T06:31:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 c2c03f8e7be6973ef3cbdb3ca424e55a81a956d7,Compatible with Python 3.7,2018-11-05T06:40:03Z,2018-11-05T06:40:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 d0393e821e5914a7c1d659eaf0a5d612a1aa8e01,"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",2018-11-05T06:45:38Z,2018-11-05T06:45:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 3de8fac1d322cbab6c8c55899e0e8511b36337d0,"New make_app_client() pattern Because next version of pytest discourages calling fixture factories as functions",2018-11-20T17:16:31Z,2018-11-20T17:46:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 54a59b9fdb40b9c86ff065a5b7047e6ef305bc22,Use python-3.6.7 runtime for Heroku deploys,2018-12-16T20:53:00Z,2018-12-16T20:53:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 c5f90dd1b20e41d1a3736dcbda5101d27279390b,Added docs on updating docs + the release process,2018-12-16T21:14:50Z,2018-12-16T21:14:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 84d7890b63f6aa43e7369fa8fc7a0a1bbf98c91f,Upgrade pytest to 4.0.2,2018-12-16T21:18:55Z,2018-12-16T21:18:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 b5128fc53fce6a1bf3b16bad9f318451bc1d1263,Release 0.25.2,2018-12-16T21:26:37Z,2018-12-16T21:26:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 1e2db8547be111e7c1583f096f40cec7c0824281,Improved release process documentation,2018-12-16T21:47:26Z,2018-12-16T21:47:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 eac08f0dfc61a99e8887442fc247656d419c76f8,--reload now also reloads if databases change on disk,2018-12-20T15:51:08Z,2018-12-20T15:51:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 d95b46b09bf53530b212cc17202a242daa62fd64,"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",2019-01-02T05:14:46Z,2019-01-02T05:15:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 8b8ae55e7c8b9e1dceef53f55a330b596ca44d41,"Pass --token to 'now alias', if provided",2019-01-02T05:35:16Z,2019-01-02T05:35:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 996e8822d2cb551c0ed821ff1fda24af905332d3,"Fix CSV export hidden form fields, closes #393",2019-01-03T02:43:56Z,2019-01-03T02:43:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 424e146697309a54c05d5d1ba1f840849ddbafdc,Datasette 0.26 release notes,2019-01-03T02:53:59Z,2019-01-03T02:53:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 788f218e267ad9e29df904c6c6a61e78bcc8e744,Supress pytest warnings from 3rd party modules,2019-01-06T04:44:34Z,2019-01-06T04:44:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 8ce7866312f9b7c873541d6e3662ada3e850fa85,"compile_options output in /-/versions, closes #396",2019-01-11T00:44:37Z,2019-01-11T00:44:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 c4c970f3c90fa79a6c6527fe963baf9e07b023c8,Bump aiohttp to 3.5.3 to fix a warning,2019-01-11T00:47:15Z,2019-01-11T00:47:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599 50d8d8216dcc5557e6b581a13bb871f033722117,"Dockerfile now builds SQLite 3.26.0, closes #397",2019-01-11T00:47:54Z,2019-01-11T00:47:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,13ae486343ea6454a93114c6f558ffea2f2c6874,107914493,9599,9599