sha,message,author_date,committer_date,raw_author,raw_committer,repo,author,committer 21c9c04310dffcdb8cf6fee0f74fc9e7ac1ecf19,"Implemented cursor-based pagination for table view Closes #5",2017-11-10T20:41:14Z,2017-11-10T20:41:14Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 22851ed9f0541904f5c3fca7ddbd7add10a75d39,"Table page now shows CREATE TABLE at bottom Closes #66",2017-11-12T21:16:59Z,2017-11-12T21:16:59Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 228bce83a37b4bee633f674b802aee13fe5b2f44,"Added __version__, bumped it to 0.12 Closes #108",2017-11-16T15:20:54Z,2017-11-16T15:20:54Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 2366a016f252f2220eb777938a9da4b0de179063,"Added links to .json and .jsono representations Closes #62",2017-11-11T22:40:44Z,2017-11-11T22:40:44Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 23a45758185c99b6c3b8cf07d687aa5281282196,Added News section to Readme,2017-11-25T21:40:43Z,2017-11-25T21:40:43Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 255e2611e5c3cfdda76c9da7abdbe5af976044ac,"CORS headers for JSON responses Access-Control-Allow-Origin: *",2017-10-24T02:48:06Z,2017-10-24T02:48:06Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 25c241fa5a0f8868e3c1bc5be4f5888caa47d864,Renamed project to immutabase,2017-11-06T02:32:13Z,2017-11-06T02:32:13Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 26370b14d862a5d2dc32b858bdf627f2a5ec3209,"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",2017-11-12T23:17:00Z,2017-11-12T23:17:00Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 28a52fcffb869f5e83ca2fad53738dc25eec425d,Set theme jekyll-theme-architect,2018-05-24T16:56:21Z,2018-05-24T16:56:21Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 292f140a4f391f646ec0be85ec9f22dde30f9de2,"Explicitly order by pk (or by rowid) Refs #5",2017-11-09T16:11:14Z,2017-11-09T16:11:14Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 29c897bb5649c35463618a32d095f72755aae8c6,Started the docs with a meaty example,2018-07-28T23:52:07Z,2018-07-28T23:52:07Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 2a09d3708777116daedc548078a662086552523f,Allow views to be browsed as well as tables,2017-10-24T23:55:08Z,2017-10-24T23:55:08Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 2a9799bae651558a23ae5074edad7cc13ff0fbdc,"Implemented database summary on index page Closes #41",2017-10-27T04:05:13Z,2017-10-27T04:05:17Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 2bbe9ca34a701191e3bf4e97943b7503a50ab548,Support OPTIONS requests for CORS,2017-11-13T02:11:52Z,2017-11-13T02:11:52Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 2c625e31ed018f929223918240603bf2a80e665c,"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",2017-10-27T07:16:18Z,2017-10-27T07:16:18Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 2cc14a236c601ee2a6b81d8580e70989574baec9,"Ditched short form options for --static and --template-dir The -t clashes with the package --tag option",2017-12-09T03:47:50Z,2017-12-09T03:47:50Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 2f34da0ab2594d917e14fd0dd90ad07872941b8d,Initial,2018-07-14T03:56:21Z,2018-07-14T03:56:21Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 2fe94641b0b2dc291d1fce3dad0fbf96294b3a32,"Don't try to show row counts for views Also handle tables/views with spaces in their name in the URL.",2017-10-25T01:33:12Z,2017-10-25T01:33:12Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 31b21f5c5e15fc3acab7fabb170c1da71dc3c98c,"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.",2017-11-05T02:21:44Z,2017-11-05T02:21:44Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 3280972c891633c6015fa55bbfd094420b4f0233,"Fixed tests I broke earlier Broke these tests in 21c9c04310dffcdb8cf6fee0f74fc9e7ac1ecf19",2017-11-11T16:52:17Z,2017-11-11T16:52:17Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 33c7c53ff87c25445c68088ede49d062d9c31fe8,"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",2018-04-16T00:56:15Z,2018-04-16T00:56:15Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 3459ab91665d956ff6a25f8e94dcb9c325dd10e5,Formatting fixes,2017-12-09T18:33:14Z,2017-12-09T18:33:14Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 34a5c0e1e8d1e7e685b0ba73803d153552033aac,"Documented insert_all() and upsert() and upsert_all() Also re-titled main docs page to 'Python API'",2018-08-13T00:17:14Z,2018-08-13T00:17:14Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 3863a30b5d18204b4c77518f1880a1f705e929db,"publish command checks 'now' is installed Closes #58",2017-11-11T16:00:00Z,2017-11-11T16:00:00Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 3a944d0c077c203277f13dd69387eb84b5c88d3e,Run Travis tests against Python 3.8-dev (#5),2019-01-26T02:37:54Z,2019-01-26T02:37:54Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,140912432,9599,19864447 3c50a3600d0975b84d98c93bb2336a790afc6aca,Unit test for black-approved coding style,2018-07-28T14:29:20Z,2018-07-28T14:29:20Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 3cce63b59851495b6d9d38936356e21ea8fbad3a,"URL to allow direct database download It's just the database URL with .db on the end, e.g. /flights.db Closes #19",2017-10-25T15:19:32Z,2017-10-25T15:19:32Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 3d9baf3c2f2f745e6949973f18480092f189116c,Set theme jekyll-theme-leap-day,2018-05-24T16:55:19Z,2018-05-24T16:55:19Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 3eb79e1a5fa4c164a224ae0adbe0ea16fde35758,Show total row count at top of table page,2017-10-25T01:31:43Z,2017-10-25T01:31:43Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 3ef35ca8b4369af6a8bcdd9e5cfbb5f3a7d17cf8,"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",2017-11-13T15:20:02Z,2017-11-13T15:20:02Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 407795b61217205625f2d4e084afbf69f1db781b,"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.",2017-11-11T17:47:59Z,2017-11-11T17:47:59Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 40a563ebac72f46a1b2dc498a25520c429bca6d6,"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",2017-11-11T20:10:51Z,2017-11-11T20:11:51Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 40d3b3eae68286f67e40226f18f2621b26e5e533,"Refactored tests into new tests/ folder Guided by https://docs.pytest.org/en/latest/goodpractices.html",2017-11-10T18:48:16Z,2017-11-10T18:48:16Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 4143e3b45c16cbae5e3e3419ef479a71810e7df3,"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",2017-11-13T16:13:38Z,2017-11-13T16:17:35Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 42b2b4b785e3163371e92a9cc085bc47e7c83107,"Upgrade sqlite3 in Travis so we can test against FTS5 Using recipe from https://linuxhint.com/install-sqlite-ubuntu-linux-mint/",2019-01-25T06:54:32Z,2019-01-25T06:54:32Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,140912432,9599,19864447 4427d2d96f7197e25acee85643bcf02e758b8b1e,"table.create_index(columns, index_name) method",2018-08-01T15:20:44Z,2018-08-01T15:20:44Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 446f4b832272b2286f6f65af19714eb64afb7aa6,"Upgrade to Sanic 0.7.0 (#168) https://github.com/channelcat/sanic/releases/tag/0.7.0",2017-12-09T03:00:33Z,2017-12-09T03:00:33Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 44a199a0625b695492b2a8605030dc61191f39cb,"Stop using sqlite WITH RECURSIVE in our tests The version of Python 3 running in Travis CI doesn't support this.",2017-11-13T22:15:21Z,2017-11-13T22:15:21Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 452c5f047ea229dbb444e271183a55381bb4abce,"Added Travis CI badge to README Closes #77",2017-11-13T21:24:14Z,2017-11-13T21:24:14Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 45e502aace6cc1198cc5f9a04d61b4a1860a012b,"Added unit tests for inspect() foreign key detection Used them to fix a bug with it. Refs #85",2017-11-17T16:08:11Z,2017-11-17T16:08:11Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 47e689a89b3f5f0969595b17d2ec59ea3caffb3b,"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",2018-06-24T01:03:46Z,2018-06-24T01:03:46Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 495407acefe1e6976316aef88ae0e4c1d48ab421,"Force initial .inspect() before starting server Otherwise there is a long pause on the first request made.",2017-11-13T18:03:52Z,2017-11-13T18:03:52Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 4ac913224061f2dc4f673efab1a5ac6bc748854f,"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",2018-08-05T00:14:56Z,2018-08-05T00:14:56Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 4be6deb94776744071311777f0b18efb993c0cfa,"Fix for plugins in Python 3.5 (#222) ModuleNotFoundError is not a thing in Python 3.5, so catch KeyError/ImportError instead.",2018-04-18T03:24:20Z,2018-04-18T03:24:20Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 4c66097d581c3970a23530598c4fe98b09f422ee,"datasette publish now works with full paths e.g. datasette publish /tmp/blah/database.db now does the right thing",2017-11-12T23:16:24Z,2017-11-12T23:16:24Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 4c7379a898df426af0c31159e5cb06d672189301,"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.",2017-10-25T00:01:34Z,2017-10-25T00:01:34Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 4f08fc092f59b434c11f77b6fb2d29b3255227e5,Updated news,2017-12-12T16:52:19Z,2017-12-12T16:52:19Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 4f7281af8ce421d2f8c57ba43108261ba89d2cd6,"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.",2017-11-15T02:04:04Z,2017-11-15T02:04:04Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 4fec50597a8684756bc96d4a69b6fab809ec6cf6,Include license/source in JSON output if provided,2017-11-13T18:39:25Z,2017-11-13T18:39:25Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 501618d0d519f808e54210f3c54420e5559a9343,Ensure black is correctly installed for tests,2018-07-28T14:36:43Z,2018-07-28T14:36:43Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 50e817801f90d07468ea394ef562d55d8940d124,"Fixed #83 Turns out we had a redirect bug as well.",2017-11-14T00:44:08Z,2017-11-14T00:44:43Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 515d362ad60c3dc16272c4fdca932cf0a0e9dafa,.table_names and .tables properties plus expanded docs,2018-08-01T00:35:36Z,2018-08-01T00:35:36Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 51bdd67691bd69082ae7690af8b905f06050ee80,Changelog for 0.12 release,2017-11-16T15:37:46Z,2017-11-16T15:37:46Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 56623e48da5412b25fb39cc26b9c743b684dd968,News: Datasette Publish,2018-01-17T15:50:10Z,2018-01-17T15:50:10Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 56e29158fe5174a5b06d0a58090da7fb4624ed60,"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.",2018-07-28T18:18:40Z,2018-07-28T18:18:40Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 5928c11ee798a232aa4096706cd47e639d1c9fc2,Version 0.10,2017-11-14T00:45:23Z,2017-11-14T00:45:23Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 594b25ef9f633dabdaca98b46dea9fbb82628166,"Started a changelog, releasing 0.6",2018-08-13T00:46:22Z,2018-08-13T00:46:22Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 59580d02da80eb963d5bce897c539c6489042025,"Implemented custom SQL via textarea Closes #65",2017-11-12T02:35:35Z,2017-11-12T02:35:35Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 59a616ca5c99301a254d86ab097b6ce8f7b30fb6,"Move view SQL to bottom of the page Now consistent with tables",2017-11-12T21:25:34Z,2017-11-12T21:25:34Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 5bfb23b949a7f01e4dfc1d7ac698a6ec8e8c97fd,"Added Read The Docs badge Closes #109",2017-11-16T16:13:55Z,2017-11-16T16:13:55Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 5d8084a28578da2aefa79ad81df9d82e2c265666,"Added a UI for editing named parameters Fixes #96",2017-11-16T01:32:48Z,2017-11-16T01:32:48Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 5deb65f0623bff03421f50d3c61f699b981ae18b,"Now you just 'from sqlite_utils import Database' Plus fixed ad_id in the Russian ads example in the docs",2018-07-31T03:30:23Z,2018-07-31T03:30:23Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 5f806880c9766daf09fc9535171637ebb8224cab,Correctly JSON serialize sqlite3.Cursor,2017-10-24T23:53:21Z,2017-10-24T23:53:21Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 606ff9e35e007ae58a491d417f47779034bacabc,"python app.py --build to generate build-metadata.json This is now run by the Dockerfile to build this at compile time.",2017-10-24T05:53:13Z,2017-10-24T05:53:13Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 630b40038ef31b351abc2e39c3a0c7b3648814f8,"Added support for gt, gte, lt, lte lookups Refs #23",2017-10-25T01:46:49Z,2017-10-25T01:46:55Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 65e350ca2a4845c25752a62c16ba58cfe2c14b9b,"Implemented 'datasette publish one.db two.db' command Closes #26",2017-11-11T07:25:22Z,2017-11-11T07:25:22Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 666aa032530189d585dd61d0e9851e9fe63ee598,"Improved error handling Invalid SQL now shows a special error.html template, and is covered by tests.",2017-11-12T21:16:15Z,2017-11-12T21:16:15Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 67982b6ecb89485ce26d684f2d038aad4d954d7c,Added Datasette 0.15 to news,2018-04-09T16:01:03Z,2018-04-09T16:01:03Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 67ad77a307c7c264c68d768fa8290997e3b75e77,Re-ordered docs index page,2017-12-06T18:27:50Z,2017-12-06T18:27:50Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 6823b094066c5cb1dcd3581da2ed877ed72298b7,"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",2017-10-25T01:34:54Z,2017-10-25T01:34:54Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 6a007f632258e6cfd3c5e9e229683deb0efd87be,Row pages show incoming foreign key relationships,2017-11-17T18:15:44Z,2017-11-18T03:15:49Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 6a0c5de6154893eb4269dc7b1f160726ec6395f2,"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",2017-10-23T16:02:40Z,2017-10-23T16:02:40Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 6a9fdcc0718aea2cbc01ae4d60b9a1fba3601a66,"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",2017-10-24T05:54:58Z,2017-10-24T05:54:58Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 6b3b05b6db0d2a7b7cec8b8dbb4ddc5e12a376b2,Released 0.7,2017-11-13T18:42:30Z,2017-11-13T18:42:30Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 6bdfcf60760c27e29ff34692d06e62b36aeecc56,"Added Heroku to README, updated --help output examples Refs #157",2017-12-09T18:50:08Z,2017-12-09T18:50:08Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 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 702829f808994d49f11612b35035cfa6842cd91b,Added Datasette 0.14: customization edition to news,2017-12-10T02:10:30Z,2017-12-10T02:10:30Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 70e1f831a00ec97b724187025e35338becd2309a,Typo,2018-08-01T01:32:03Z,2018-08-01T01:32:03Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 72644b6e3fc78ecf55b386854943ec3ad39f97bd,"Support method chaining, added .last_id for accessing lastrowid Also shipping as 0.5",2018-08-06T01:42:43Z,2018-08-06T01:42:43Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 741e8f7fe563e18fe9a12ac1ce38157e8c903505,"Make .indexes compatible with older SQLite versions (#1) Older SQLite versions return a different set of columns from the PRAGMA we are using.",2018-08-02T15:17:29Z,2018-08-02T15:17:29Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,140912432,9599,19864447 79216bac12668eb90ccad65086d4f129476a3969,Added some breathing room to the footer,2017-11-13T19:38:20Z,2017-11-13T19:38:20Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 7d81083d40fb2749be897d89c9a094d6521ef20c,"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",2017-11-11T05:55:50Z,2017-11-11T05:55:50Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 7dac1c05cd40f89a5af34763e4d5614c750575c2,"Improved pagination Closes #78",2017-11-13T20:34:56Z,2017-11-13T20:34:56Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 7e0cedae3d920797f6f9411aea90a2b1d86ac9c7,"Now using bootstrap 4 beta Refs #16",2017-11-06T02:49:07Z,2017-11-06T02:49:07Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 7f44d31782260f859af1de68ac9db29f72cc6d84,Link to register-of-members-interests tutorial,2018-04-25T17:40:48Z,2018-04-25T17:40:48Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 7fe1e8b4827aa1d7e72825da563effdf44ae7233,"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",2017-11-15T05:02:11Z,2017-11-15T05:02:11Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 7feb746efe8c5ed80f477475acc546370bae89e4,Fixed bug where 0 values were showing up blank,2017-11-17T18:14:01Z,2017-11-18T03:15:49Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 82261a638bd35c9d69a9582a898cf4dab374f76c,"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",2017-11-16T01:59:42Z,2017-11-16T01:59:42Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 8252e71da461c425e625e1c3e4ee0bd92ea4cbf0,"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",2017-11-13T19:33:01Z,2017-11-13T19:33:01Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 847f3e0c92b5ac17200b2090bedcc5443bb08e4b,"Implemented offset/limit pagination for views Closes #70",2017-11-13T21:10:55Z,2017-11-13T21:10:55Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 8acdc2fd14c0f7251e1e3fd592c53b3152f5256c,"Test for table with space in name Tests code in b51836f8463ef65bc947f0a7b6e60167cb7154cf",2017-11-12T20:08:32Z,2017-11-12T20:08:32Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 8af7bc100c681975894f49f4ffd6d26a06e93f60,"Added a MANIFEST.in Now python setup.py bdist_wheel creates a .whl that includes the CSS.",2017-11-09T02:39:42Z,2017-11-09T02:39:42Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 8d394586f55bc4b8ab70476968d08fb6ec8339e5,Added 0.18 to news,2018-04-14T16:04:38Z,2018-04-14T16:04:38Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 8e2a313c1e831c465392c5cb1502d0f153d39431,"Fixed failing FTS5 test, release as 0.6.1",2018-08-13T00:48:43Z,2018-08-13T00:48:43Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 9199945a1bcec4852e1cb866eb3642614dd32a48,"Fixed 500 on views page Bug introduced in a4af532a31ece7095d710a1f5abb39ea93fe003f Refs 85",2017-11-16T14:46:49Z,2017-11-16T14:46:49Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 932e0a3f91e4cee92b0e30c528300ec1d348d26c,"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.",2018-04-14T15:21:37Z,2018-04-14T15:21:37Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 95bce37ad3447d3c265316fa029fc09b7bbdae11,Store list/dict/tuple values as JSON strings,2018-07-28T22:20:29Z,2018-07-28T22:20:29Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,140912432,9599,9599 97c4bf4271495f8f711926ec44d8def3f2941379,"Added --cors argument to enable CORS Closes #75",2017-11-13T18:17:42Z,2017-11-13T18:17:42Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,107914493,9599,9599 98ae6d6a4085d67a62c129e69e2a9a611f26502d,Added link to examples,2017-11-14T05:27:21Z,2017-11-14T05:27:21Z,2946d096d0cdefdc017559e6b57e87658736e843,cd792325681cbad9f663f2879d8b69f1edbb678f,107914493,9599,19864447 9cb69cbd45ed8fd93190c47060c19abec80bc4ef,"New ?_sql_time_limit_ms=10 argument to database and table page Allows callers to opt for a lower time limit. Closes #95",2017-11-15T02:55:10Z,2017-11-15T02:55:10Z,2946d096d0cdefdc017559e6b57e87658736e843,2946d096d0cdefdc017559e6b57e87658736e843,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