{"sha": "49f317752cfe89c5641165a490eef49e025752a7", "message": "Move version info back to separate module", "author_date": "2018-05-22T17:33:57Z", "committer_date": "2018-05-22T19:35:21Z", "raw_author": {"value": "106fe7fbf8b80a01038e265a137b3b703422db48", "label": "Robert Gieseke"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 198537, "label": "rgieseke"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "fc47dacbbd4c4d245d7144e4cc014d3303f84b9a", "message": "Add `__version_info__` derived from `__version__`\n\nThis might be tuple of more than two values (major and minor\nversion) if commits have been made after a release.", "author_date": "2018-05-22T17:18:00Z", "committer_date": "2018-05-22T19:35:21Z", "raw_author": {"value": "106fe7fbf8b80a01038e265a137b3b703422db48", "label": "Robert Gieseke"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 198537, "label": "rgieseke"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "6d39429daa4655e3cf7a6a7671493292a20a30a1", "message": "Don't prevent tabbing to `Run SQL` button (#117)\n\nSee comment in #115", "author_date": "2017-11-18T00:53:42Z", "committer_date": "2017-11-18T00:53:42Z", "raw_author": {"value": "106fe7fbf8b80a01038e265a137b3b703422db48", "label": "Robert Gieseke"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 198537, "label": "rgieseke"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "eda848b37f8452dba7913583ef101f39d9b130ba", "message": "Add keyboard shortcut to execute SQL query (#115)", "author_date": "2017-11-17T14:22:55Z", "committer_date": "2017-11-17T14:22:55Z", "raw_author": {"value": "106fe7fbf8b80a01038e265a137b3b703422db48", "label": "Robert Gieseke"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 198537, "label": "rgieseke"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "31a5d8fa77be68d4f837f0a80a611675dce49f4b", "message": "Bump aiohttp to fix compatibility with Python 3.7\n\nTests failed here: https://travis-ci.org/simonw/datasette/jobs/403223333", "author_date": "2018-07-12T17:41:20Z", "committer_date": "2018-07-12T18:07:37Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "9959a9e4deec8e3e178f919e8b494214d5faa7fd", "message": "Added screenshots to facets and full_text_search docs, refs #255", "author_date": "2018-05-16T15:24:44Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "858d79fe938afbe04e2b249da71860e812869ec8", "message": "Typo fix", "author_date": "2018-05-16T15:15:56Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "566f2d31d6f4950200b64424f6f9cfdd06343f4e", "message": "Clarified relationship between metadata and _facet= facets, updated docs - refs @255", "author_date": "2018-05-16T15:15:23Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "b263da78e329853ceea41c4ecabe7e8bb08d20a7", "message": "Reliable sort order for facets in Python 3.5, fixing test - refs #255", "author_date": "2018-05-16T14:43:13Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "062303419cef9bbf72927c4ac4efdb185829c03b", "message": "Hide facet button is now a \u2716 - refs #255", "author_date": "2018-05-16T14:37:05Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "62f1d3a6cbf7fca5c0e85c13a77830755c314883", "message": "class=\"suggested-facets\"", "author_date": "2018-05-16T05:08:58Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "91bf5f56bb301fb564640fa6b1bb8a6e981ff721", "message": "Show enabled facets in flexbox columns, refs #255", "author_date": "2018-05-16T05:06:05Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "6d12580ed74ff0baf081bf9fabc14eeaf8a3105c", "message": "Foreign key facets are now expanded to labels, refs #255", "author_date": "2018-05-15T15:52:02Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "a892f9a0bd6667c1ad4c590016d6845cd98a645a", "message": "Use escape_sqlite() more consistently", "author_date": "2018-05-15T15:00:39Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "8a0bd68c393423a6c3bdae27d3826e6161a101c1", "message": "Undid some slightly weird code formatting by 'black'", "author_date": "2018-05-15T13:23:20Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "63aac537f238239d5fb7f4934545404d37d874f6", "message": "1,442 format for facet counts, refs #255", "author_date": "2018-05-15T12:14:14Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "f4943ca89bf400350205788f9130c135aaf7b85b", "message": "_facet selections persist through table form, refs #255", "author_date": "2018-05-15T10:28:48Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "514873c6295dcd467d806064a549e46b4ea3279a", "message": "Fix bug with toggle_url on integer facets", "author_date": "2018-05-15T10:19:09Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "1dc94f6eaa98431da9c61e803e2b05b082f9c6e8", "message": "Facets can now be toggled off again, refs #255", "author_date": "2018-05-15T10:11:52Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "ba515fc56e6cf77ea299b6d534be7ccfa925a533", "message": "Removed un-used variable", "author_date": "2018-05-15T10:08:07Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "142a550a99f3c78349a10ed79f1b513fe704a169", "message": "Facet results now have \"truncated\" field\n\n To indicate if there was more than 20 distinct values. Refs #255", "author_date": "2018-05-15T09:50:27Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "a82175276c3f5898161c7630f669d0b8990d7a16", "message": "_sort/_next links now use new path_with_replaced_args method", "author_date": "2018-05-15T09:34:45Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "2f81552cd29125e3916763f05949125a49c2dde8", "message": "Never suggest a facet if it only results in on option", "author_date": "2018-05-15T03:05:10Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "b0d2bb3e43dd567b96b6a4ddc3c1a09a84c2c42d", "message": "Facets no longer consider null values", "author_date": "2018-05-14T22:19:43Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "ddef2298509e3027a44971a681ad7855bf07b51a", "message": "Initial implementation of suggested facets\n\nCauses tests to break at the moment", "author_date": "2018-05-14T22:09:42Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "8a4ed052a5034d3f12daf5eedabb0808a0bf20fc", "message": "path_with_added_args now works with multiple existing args", "author_date": "2018-05-14T22:09:09Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "f36c9d4b4ca77dd42495f31d02e89b4c10833531", "message": "Facet toggling now works for integer columns, refs #255", "author_date": "2018-05-14T21:33:24Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "de05cf21aa6a922ee2825b5098b108dd23fb0755", "message": "Facet \"selected\" key and toggle_url now toggles, refs #255", "author_date": "2018-05-14T20:42:10Z", "committer_date": "2018-05-16T15:27:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "2b79f2bdeb1efa86e0756e741292d625f91cb93d", "message": "path_with_added_args now preserves order in Python 3.5", "author_date": "2018-05-14T03:02:07Z", "committer_date": "2018-05-14T03:04:23Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "eaf715a60ae3c3180d0949da8292e2627b72e287", "message": "Extract /-/plugins view into a method", "author_date": "2018-05-13T13:06:02Z", "committer_date": "2018-05-14T03:04:23Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "cf1fe693e5741035df65cc9d69c4af32befd021d", "message": "Used isort to re-order my imports", "author_date": "2018-05-13T12:58:28Z", "committer_date": "2018-05-14T03:04:23Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "368638555160fb9ac78f462d0f79b1394163fa30", "message": "Ran black source formatting tool against new views/ and app.py", "author_date": "2018-05-13T12:55:15Z", "committer_date": "2018-05-14T03:04:23Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "1f69269fe93e4cd42e56890126cc0dbcf719c6cb", "message": "Refactored views into new views/ modules, refs #256", "author_date": "2018-05-13T12:44:22Z", "committer_date": "2018-05-14T03:04:23Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "690736436bac599ca042d1caa465c6d66d2651f9", "message": "Bump up time limit for test_paginate_tables_and_views\n\nIt was intermittently failing in Travis CI on Python 3.5:\n\nhttps://travis-ci.org/simonw/datasette/jobs/373713476", "author_date": "2018-05-02T00:17:39Z", "committer_date": "2018-05-02T00:20:39Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "349e262bb1c8f225cf86a5e8542253282809a0eb", "message": "Renamed ?_sql_time_limit_ms= to ?_timelimit, closes #242", "author_date": "2018-05-02T00:11:46Z", "committer_date": "2018-05-02T00:20:39Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "a4cc5dc81364a7300f0ba0bd5711633e803c250a", "message": "New ?_shape=array option + tweaks to _shape, closes #245\n\n* Default is now ?_shape=arrays (renamed from lists)\n* New ?_shape=array returns an array of objects as the root object\n* Changed ?_shape=object to return the object as the root\n* Updated docs", "author_date": "2018-05-02T00:08:16Z", "committer_date": "2018-05-02T00:20:39Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "2565d623af6222f3ed1c630f753b5f95ad749d49", "message": "?_shape=array experimental feature", "author_date": "2018-05-01T17:40:33Z", "committer_date": "2018-05-02T00:20:39Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "c1d37fdf2be84fb07155bb1b1f61057444b03300", "message": "Fixed bug with human filter description, refs #189\n\nWe were showing this:\n\n 201 rows where sorted by sortable_with_nulls\n\nWe now show this:\n\n 201 rows sorted by sortable_with_nulls", "author_date": "2018-04-09T05:07:18Z", "committer_date": "2018-04-09T05:10:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "23e0fdb0f3196ffa4d8bc4944c8bc9cb0f89129b", "message": "Removed unnecessary enumerate template helper\n\nI made this obsolete in d1756d773685ca4f9c5b57fb40e1aa743bc95525\n\nRefs #189", "author_date": "2018-04-09T05:02:19Z", "committer_date": "2018-04-09T05:10:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "b13f0986f26d88938519b07871c961c0b5a97802", "message": "New sortable_columns option in metadata.json to control sort options\n\nYou can now explicitly set which columns in a table can be used for sorting\nusing the _sort and _sort_desc arguments using metadata.json:\n\n {\n \"databases\": {\n \"database1\": {\n \"tables\": {\n \"example_table\": {\n \"sortable_columns\": [\n \"height\",\n \"weight\"\n ]\n }\n }\n }\n }\n }\n\nRefs #189", "author_date": "2018-04-09T04:58:25Z", "committer_date": "2018-04-09T05:10:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "a87df963a08054ad7a652f0218e70ddb7f9cc8bd", "message": "Error handling for ?_sort and ?_sort_desc\n\nVerifies that they match an existing column, and only one or the other option\nis provided - refs #189\n\nEses a new DatasetteError exception that closes #193", "author_date": "2018-04-09T04:07:31Z", "committer_date": "2018-04-09T05:10:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "bfb19e3a178ba9b2dab2f90f90a398b54a73d34e", "message": "Correctly escape sort-by columns in SQL (refs #189)", "author_date": "2018-04-09T02:25:14Z", "committer_date": "2018-04-09T05:10:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "747a801b50487cd4cc20856d44252ac0a6cb346f", "message": "Column headers now link to sort/desc sort - refs #189", "author_date": "2018-04-09T02:08:28Z", "committer_date": "2018-04-09T05:10:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "9f2ec39fbc5481b0fa6585ccdd159ba9fd989bcc", "message": "Current sort order now reflected in human filter description\n\nPlus renamed human_description to human_description_en\n\nRefs #189", "author_date": "2018-04-09T01:01:23Z", "committer_date": "2018-04-09T05:10:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "f3a3820ff5c5ba9b4af102e65ed1f084b1fe704d", "message": "_sort and _sort_desc parameters for table views\n\nAllows for paginated sorted results based on a specified column.\n\nRefs #189", "author_date": "2018-04-09T00:06:10Z", "committer_date": "2018-04-09T05:10:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "29f9a29250169cdb564020109f76e0f4b52afa5d", "message": "Total row count now correct even if _next= applied", "author_date": "2018-04-08T23:13:52Z", "committer_date": "2018-04-09T05:10:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "46281c9db0d6eb50203880c83363a8b279db4ecd", "message": "Release 1.2.1", "author_date": "2019-06-21T00:01:21Z", "committer_date": "2019-06-21T00:01:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "976263effcc2b9658006f739f7f7f02554f8d97f", "message": "Sanity check add_foreign_key() column exists, closes #29", "author_date": "2019-06-20T23:58:09Z", "committer_date": "2019-06-20T23:58:18Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "364b0fb6784f72b5c4048a3d6b697fba5ec86db7", "message": "Remove .DS_Store", "author_date": "2019-06-20T23:55:39Z", "committer_date": "2019-06-20T23:56:13Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "ed2b3f25beac720f14869350baacc5f62b065194", "message": "add support for ?field__isnull=1 (#107)\n\n* add support for ?field__isnull=1\r\n\r\n* Add unit test and conditional formatting for ?field__isnull", "author_date": "2017-11-17T13:29:22Z", "committer_date": "2017-11-17T13:29:22Z", "raw_author": {"value": "19245be93da11be3d5e72991646660a06a9d3449", "label": "Ray N"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 3433657, "label": "raynae"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "06a826c3188af82f27bb6b4e09cc89b782d30bd6", "message": ":fire: Removes DS_Store (#81)\n\n* :fire: Removes .DS_Store\r\n\r\nSigned-off-by: Jeff Triplett \r\n\r\n* :snowflake: Adds .DS_Store to gitignore\r\n\r\nSigned-off-by: Jeff Triplett ", "author_date": "2017-11-13T22:16:54Z", "committer_date": "2017-11-13T22:16:54Z", "raw_author": {"value": "207bb2132044fa5a4fe28a579f7588c2eee6e391", "label": "Jeff Triplett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 50527, "label": "jefftriplett"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "c5068a0972651b3e359ebc2d6c1486b8b7d2c242", "message": ":pencil: Updates my_database.py to my_database.db (#9)", "author_date": "2019-02-24T03:55:04Z", "committer_date": "2019-02-24T03:55:04Z", "raw_author": {"value": "207bb2132044fa5a4fe28a579f7588c2eee6e391", "label": "Jeff Triplett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 50527, "label": "jefftriplett"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "28a52fcffb869f5e83ca2fad53738dc25eec425d", "message": "Set theme jekyll-theme-architect", "author_date": "2018-05-24T16:56:21Z", "committer_date": "2018-05-24T16:56:21Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "3d9baf3c2f2f745e6949973f18480092f189116c", "message": "Set theme jekyll-theme-leap-day", "author_date": "2018-05-24T16:55:19Z", "committer_date": "2018-05-24T16:55:19Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "f96e55bce55d26c4d5b198edc536e1b8e9bbea43", "message": "Fix pytest version conflict\n\nhttps://travis-ci.org/simonw/datasette/jobs/305929426\r\n\r\n pkg_resources.VersionConflict: (pytest 3.2.1 (/home/travis/virtualenv/python3.5.3/lib/python3.5/site-packages), \r\n Requirement.parse('pytest==3.2.3'))", "author_date": "2017-11-22T20:15:29Z", "committer_date": "2017-11-22T20:17:51Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "1b04662585ea1539014bfbd616a8112b650d5699", "message": "Table views now show expanded foreign key references, if possible\n\nIf a table has foreign key columns, and those foreign key tables have\nlabel_columns, the TableView will now query those other tables for the\ncorresponding values and display those values as links in the corresponding\ntable cells.\n\nlabel_columns are currently detected by the inspect() function, which looks\nfor any table that has just two columns - an ID column and one other - and\nsets the label_column to be that second non-ID column.", "author_date": "2017-11-18T03:09:32Z", "committer_date": "2017-11-18T03:15:49Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "6a007f632258e6cfd3c5e9e229683deb0efd87be", "message": "Row pages show incoming foreign key relationships", "author_date": "2017-11-17T18:15:44Z", "committer_date": "2017-11-18T03:15:49Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "7feb746efe8c5ed80f477475acc546370bae89e4", "message": "Fixed bug where 0 values were showing up blank", "author_date": "2017-11-17T18:14:01Z", "committer_date": "2017-11-18T03:15:49Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "0b702f3679a2ffd4e3efb5c34b9fe30221172ccb", "message": "Fixed weird edge-case with foreign key detection\n\nIt turns out it is possible for a SQLite table to define a foreign key\nrelationship to a table that does not actually exist\n\nWe should still be able to handle these databases.", "author_date": "2017-11-17T16:18:26Z", "committer_date": "2017-11-17T16:18:26Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "45e502aace6cc1198cc5f9a04d61b4a1860a012b", "message": "Added unit tests for inspect() foreign key detection\n\nUsed them to fix a bug with it.\n\nRefs #85", "author_date": "2017-11-17T16:08:11Z", "committer_date": "2017-11-17T16:08:11Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "e16ca1169cc49fbb5b0325564d248becad3a4b7f", "message": "Refactored table column/row display logic\n\nSimplified the template and made the way for upcoming foreign key work.\n\nRefs #85\n\nAlso fixed   bug on database page - closes #113", "author_date": "2017-11-17T15:39:36Z", "committer_date": "2017-11-17T15:39:36Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "084350b0f1343d988928cae63cfedbeb6205e25e", "message": "Switched to gather_request=False for Sanic tests\n\nGets rid of those ugly _, response = lines.", "author_date": "2017-11-17T14:53:37Z", "committer_date": "2017-11-17T14:53:37Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "f3445e2d13e2c38bfbf75f35c2aa3e50df0040f1", "message": "Install python3-dev rothar than python-dev", "author_date": "2017-11-17T14:18:49Z", "committer_date": "2017-11-17T14:18:49Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "1a6cfcc10f9abcc743b45437996c7264cc2a57b2", "message": "Added a .dockerignore\n\nFigured this would be useful while testing out 03572ae3557", "author_date": "2017-11-17T14:18:23Z", "committer_date": "2017-11-17T14:18:23Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "03572ae35573c2ea802a540624ce116f540ba1ac", "message": "Allow --load-extension to be set via environment variable\n\nI tesed this by first building and running a container using the new\nDockerfile from #114:\n\n docker build .\n docker run -it -p 8001:8001 6c9ca7e29181 /bin/sh\n\nThen I ran this inside the container itself:\n\n apt update && apt-get install wget -y \\\n && wget http://www.gaia-gis.it/spatialite-2.3.1/test-2.3.sqlite.gz \\\n && gunzip test-2.3.sqlite.gz \\\n && mv test-2.3.sqlite test23.sqlite \\\n && datasette -h 0.0.0.0 test23.sqlite\n\nI visited this URL to confirm I got an error due to spatialite not being\nloaded:\n\nhttp://localhost:8001/test23-c88bc35?sql=select+ST_AsText%28Geometry%29+from+HighWays+limit+1\n\nThen I checked that loading it with `--load-extension` worked correctly:\n\n datasette -h 0.0.0.0 test23.sqlite \\\n --load-extension=/usr/lib/x86_64-linux-gnu/mod_spatialite.so\n\nThen, finally, I tested it with the new environment variable option:\n\n SQLITE_EXTENSIONS=/usr/lib/x86_64-linux-gnu/mod_spatialite.so \\\n datasette -h 0.0.0.0 test23.sqlite\n\nRunning it with an invalid environment variable option shows an error:\n\n $ SQLITE_EXTENSIONS=/usr/lib/x86_64-linux-gnu/blah.so datasette \\\n -h 0.0.0.0 test23.sqlite\n Usage: datasette -h [OPTIONS] [FILES]...\n\n Error: Invalid value for \"--load-extension\": Path \"/usr/lib/x86_64-linux-gnu/blah.so\" does not exist.\n\nCloses #112", "author_date": "2017-11-17T14:13:35Z", "committer_date": "2017-11-17T14:13:35Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "b7c4165346ee8b6a6fbd72d6ba2275a24a8a8ae3", "message": "Added --load-extension argument to datasette serve\n\nAllows loading of SQLite extensions. Refs #110.", "author_date": "2017-11-16T16:46:04Z", "committer_date": "2017-11-16T16:48:49Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "9e27b2a0ba45d92e198fcbac8641da41a62236b8", "message": "Add example of named parameter UI to the release notes", "author_date": "2017-11-16T16:09:07Z", "committer_date": "2017-11-16T16:46:25Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "a9138f044a4d73256c2244243d4e2908d77d218e", "message": "Added date to most recent changelog entry", "author_date": "2017-11-16T15:40:43Z", "committer_date": "2017-11-16T15:40:43Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "51bdd67691bd69082ae7690af8b905f06050ee80", "message": "Changelog for 0.12 release", "author_date": "2017-11-16T15:37:46Z", "committer_date": "2017-11-16T15:37:46Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "01e0c3fa18cd0dd7970e208790ffd683a420c924", "message": "Fixed   bug\n\n  was showing for all None values in table cells, thanks to the\nautoescaping change introduced in 82261a638bd35c9", "author_date": "2017-11-16T15:29:52Z", "committer_date": "2017-11-16T15:29:52Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "228bce83a37b4bee633f674b802aee13fe5b2f44", "message": "Added __version__, bumped it to 0.12\n\nCloses #108", "author_date": "2017-11-16T15:20:54Z", "committer_date": "2017-11-16T15:20:54Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "e6ca88588395a9b8266c0e14121668990d34ff67", "message": "Added initial docs, including a changelog\n\nDocs initialized using this helpful guide:\n\nhttp://docs.readthedocs.io/en/latest/getting_started.html\n\nI used https://pypi.python.org/pypi/gitchangelog to kick-start the changelog.\n\nCloses #99\n\nRefs #109", "author_date": "2017-11-16T15:11:00Z", "committer_date": "2017-11-16T15:11:00Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "9199945a1bcec4852e1cb866eb3642614dd32a48", "message": "Fixed 500 on views page\n\nBug introduced in a4af532a31ece7095d710a1f5abb39ea93fe003f\n\nRefs 85", "author_date": "2017-11-16T14:46:49Z", "committer_date": "2017-11-16T14:46:49Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "82261a638bd35c9d69a9582a898cf4dab374f76c", "message": "Turn on auto-escaping in Jinja\n\nWe had XSS holes! Since we don't do cookies or authentication\nthey shouldn't cause any actual harm, but still really not good.\n\nhttps://github.com/pallets/jinja/issues/528", "author_date": "2017-11-16T01:59:42Z", "committer_date": "2017-11-16T01:59:42Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "a4af532a31ece7095d710a1f5abb39ea93fe003f", "message": "Include foreign key info in inspect() output\n\nRefs #85", "author_date": "2017-11-16T01:34:32Z", "committer_date": "2017-11-16T01:34:32Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "5d8084a28578da2aefa79ad81df9d82e2c265666", "message": "Added a UI for editing named parameters\n\nFixes #96", "author_date": "2017-11-16T01:32:48Z", "committer_date": "2017-11-16T01:32:48Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "9f47b6e4d80f0f393cf0167a6f48280de6847d1d", "message": "Pin to specific Jinja version\n\nCloses #100", "author_date": "2017-11-16T00:14:07Z", "committer_date": "2017-11-16T00:14:07Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "f45ca30f91b92ac68adaba893bf034f13ec61ced", "message": "Fixed bug with datasette package --metadata\n\nCloses #84", "author_date": "2017-11-15T05:18:29Z", "committer_date": "2017-11-15T05:18:29Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "ea183b2ae3d557a370628e236fe606717c704e2a", "message": "Default to 127.0.0.1 not 0.0.0.0\n\nCloses #98", "author_date": "2017-11-15T05:08:46Z", "committer_date": "2017-11-15T05:08:46Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "7fe1e8b4827aa1d7e72825da563effdf44ae7233", "message": "Added extra metadata options to publish and package commands\n\nYou can now run these commands like so:\n\n datasette now publish mydb.db \\\n --title=\"My Title\" \\\n --source=\"Source\" \\\n --source_url=\"http://www.example.com/\" \\\n --license=\"CC0\" \\\n --license_url=\"https://creativecommons.org/publicdomain/zero/1.0/\"\n\nThis will write those values into the metadata.json that is packaged with the\napp. If you also pass --metadata= that file will be updated with the extra\nvalues before being written into the Docker image.\n\nCloses #92", "author_date": "2017-11-15T05:02:11Z", "committer_date": "2017-11-15T05:02:11Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "9cb69cbd45ed8fd93190c47060c19abec80bc4ef", "message": "New ?_sql_time_limit_ms=10 argument to database and table page\n\nAllows callers to opt for a lower time limit.\n\nCloses #95", "author_date": "2017-11-15T02:55:10Z", "committer_date": "2017-11-15T02:55:10Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "0b8c1b0a6da9cb8ac0d28cc90dd783de87554036", "message": "Test for sql_time_limit_ms + sqlite_functions mechanism\n\nAdded a unit test for the sql_time_limit_ms option.\n\nTo test this, I needed to add a custom SQLite sleep() function. I've added a\nsimple mechanism to the Datasette class for registering custom functions.\n\nI also had to modify the sqlite_timelimit() function. It makes use of a magic\nvalue, N, which is the number of SQLite virtual machine instructions that\nshould execute in between calls to my termination decision function.\n\nThe value of N was not finely grained enough for my test to work - so I've\nadded logic that says that if the time limit is less than 50ms, N is set to 1.\nThis got the tests working.\n\nRefs #95", "author_date": "2017-11-15T02:41:03Z", "committer_date": "2017-11-15T02:43:34Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "4f7281af8ce421d2f8c57ba43108261ba89d2cd6", "message": "Apply a default height to CodeMirror\n\nMakes it a bit more obvious that it's an editable textarea even\nif the SQL in it is only one line long.", "author_date": "2017-11-15T02:04:04Z", "committer_date": "2017-11-15T02:04:04Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "cbb59e3801868e1c284ad50b66343cd4358e516c", "message": "Handle tables with names that start with digits", "author_date": "2017-11-14T18:13:37Z", "committer_date": "2017-11-15T02:03:21Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "b0f3d4e375655f0764f3137dbcede324f9bbc0cb", "message": "Version 0.11", "author_date": "2017-11-14T01:48:22Z", "committer_date": "2017-11-14T01:48:22Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "fc7c04fe0b2f9daf8875ccaa9625ec80d8eeafe2", "message": "Added 'datasette publish now --force' option\n\nThis calls now with --force - which is useful as it means you get a fresh copy of\ndatasette even if now has already cached that docker layer.", "author_date": "2017-11-14T01:48:03Z", "committer_date": "2017-11-14T01:48:03Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "00527e5c629d9dae56d6228891b40105ff0e34c6", "message": "Enable --cors by default in containers", "author_date": "2017-11-14T01:23:22Z", "committer_date": "2017-11-14T01:23:22Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "5928c11ee798a232aa4096706cd47e639d1c9fc2", "message": "Version 0.10", "author_date": "2017-11-14T00:45:23Z", "committer_date": "2017-11-14T00:45:23Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "50e817801f90d07468ea394ef562d55d8940d124", "message": "Fixed #83\n\nTurns out we had a redirect bug as well.", "author_date": "2017-11-14T00:44:08Z", "committer_date": "2017-11-14T00:44:43Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "44a199a0625b695492b2a8605030dc61191f39cb", "message": "Stop using sqlite WITH RECURSIVE in our tests\n\nThe version of Python 3 running in Travis CI doesn't support this.", "author_date": "2017-11-13T22:15:21Z", "committer_date": "2017-11-13T22:15:21Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "d75f423b6fcfc074b7c6f8f7679da8876f181edd", "message": "Release 0.9", "author_date": "2017-11-13T22:00:39Z", "committer_date": "2017-11-13T22:00:53Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "1e698787a4dd6df0432021a6814c446c8b69bba2", "message": "Added --sql_time_limit_ms and --extra-options\n\nThe serve command now accepts --sql_time_limit_ms for customizing the SQL time\nlimit.\n\nThe publish and package commands now accept --extra-options which can be used\nto specify additional options to be passed to the datasite serve command when\nit executes inside the rusulting Docker containers.", "author_date": "2017-11-13T21:58:34Z", "committer_date": "2017-11-13T22:00:53Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "fe279ab7b4ae99dab295d5cf4d39ad06d782997e", "message": "v0.8 - added PyPI metadata, ready to ship", "author_date": "2017-11-13T21:17:34Z", "committer_date": "2017-11-13T21:17:34Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "847f3e0c92b5ac17200b2090bedcc5443bb08e4b", "message": "Implemented offset/limit pagination for views\n\nCloses #70", "author_date": "2017-11-13T21:10:55Z", "committer_date": "2017-11-13T21:10:55Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "7dac1c05cd40f89a5af34763e4d5614c750575c2", "message": "Improved pagination\n\nCloses #78", "author_date": "2017-11-13T20:34:56Z", "committer_date": "2017-11-13T20:34:56Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "d76412668f8c12572eb7de57ccb72f1e50306177", "message": "Removed rogue middot", "author_date": "2017-11-13T20:34:39Z", "committer_date": "2017-11-13T20:34:39Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "79216bac12668eb90ccad65086d4f129476a3969", "message": "Added some breathing room to the footer", "author_date": "2017-11-13T19:38:20Z", "committer_date": "2017-11-13T19:38:20Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "8252e71da461c425e625e1c3e4ee0bd92ea4cbf0", "message": "Limit on max rows returned, controlled by --max_returned_rows option\n\nIf someone executes 'select * from table' against a table with a million rows\nin it, we could run into problems: just serializing that much data as JSON is\nlikely to lock up the server.\n\nSolution: we now have a hard limit on the maximum number of rows that can be\nreturned by a query. If that limit is exceeded, the server will return a\n`\"truncated\": true` field in the JSON.\n\nThis limit can be optionally controlled by the new `--max_returned_rows`\noption. Setting that option to 0 disables the limit entirely.\n\nCloses #69", "author_date": "2017-11-13T19:33:01Z", "committer_date": "2017-11-13T19:33:01Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "6b3b05b6db0d2a7b7cec8b8dbb4ddc5e12a376b2", "message": "Released 0.7", "author_date": "2017-11-13T18:42:30Z", "committer_date": "2017-11-13T18:42:30Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "e838bd743d31358b362875854a0ac5e78047727f", "message": "Added README and improved help for 'datasette serve'", "author_date": "2017-11-13T18:41:53Z", "committer_date": "2017-11-13T18:41:59Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 9599, "label": "simonw"}}