{"sha": "d555baf508de71a5e3dc9a9aed2c13f6f202956d", "message": "Suppress rendering of binary data - thanks @russss (#442)\n\nBinary columns (including spatialite geographies) get shown as ugly\r\nbinary strings in the HTML by default. Nobody wants to see that mess.\r\n\r\nShow the size of the column in bytes instead. If you want to decode\r\nthe binary data, you can use a plugin to do it.", "author_date": "2019-05-03T16:44:48Z", "committer_date": "2019-05-03T16:44:48Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "bf229c9bd88179c8ec16bd65fd4fb28ab4241c2e", "message": "Pass view_name to extra_body_script hook (#443)\n\nAt the moment it's not easy to tell whether the hook is being called\r\nin (for example) the row or table view, as in both cases the\r\n`database` and `table` parameters are provided.\r\n\r\nThis passes the `view_name` added in #441 to the `extra_body_script`\r\nhook.", "author_date": "2019-05-03T13:12:19Z", "committer_date": "2019-05-03T13:12:19Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "470cf0b05d4fda0d2563f81c7e32af13fe346ccc", "message": "Add a max-line-length setting for flake8 (#444)\n\nThis stops my automatic editor linting from flagging lines which are too\r\nlong. It's been lingering in my checkout for ages.\r\n\r\n160 is an arbitrary large number - we could alter it if we have any\r\nopinions (but I find the line length limit to be my least favourite part\r\nof PEP8).", "author_date": "2019-05-03T13:11:27Z", "committer_date": "2019-05-03T13:11:27Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "cf406c075433882b656e340870adf7757976fa4c", "message": "New plugin hook: register_output_renderer hook (#441)\n\nThanks @russss!\r\n\r\n* Add register_output_renderer hook\r\n\r\nThis changeset refactors out the JSON renderer and then adds a hook and\r\ndispatcher system to allow custom output renderers to be registered.\r\n\r\nThe CSV output renderer is untouched because supporting streaming\r\nrenderers through this system would be significantly more complex, and\r\nprobably not worthwhile.\r\n\r\nWe can't simply allow hooks to be called at request time because we need\r\na list of supported file extensions when the request is being routed in\r\norder to resolve ambiguous database/table names. So, renderers need to\r\nbe registered at startup.\r\n\r\nI've tried to make this API independent of Sanic's request/response\r\nobjects so that this can remain stable during the switch to ASGI. I'm\r\nusing dictionaries to keep it simple and to make adding additional\r\noptions in the future easy.\r\n\r\nFixes #440", "author_date": "2019-05-01T23:01:56Z", "committer_date": "2019-05-01T23:01:56Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "58fec99ab0a31bcf25968f2aa05d37de8139b83c", "message": "Allow app names for `datasette publish heroku`\n\nLets you supply the `-n` parameter for Heroku deploys, which also lets\nyou update existing Heroku deployments.", "author_date": "2018-07-14T13:10:49Z", "committer_date": "2018-07-14T14:04:42Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "58b5a37dbbf13868a46bcbb284509434e66eca25", "message": "Refactor inspect logic", "author_date": "2018-05-21T08:02:34Z", "committer_date": "2018-05-22T14:03:06Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "136a70d88741e2a5892c3de437064a9d14494d66", "message": "Add column name classes to s, make PK bold", "author_date": "2018-04-17T08:29:48Z", "committer_date": "2018-04-18T01:13:02Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "0f782dd8dfd7c53a9c20bbd2cb8734bb806d928b", "message": "Additional test asserts", "author_date": "2018-04-16T20:22:04Z", "committer_date": "2018-04-18T01:13:02Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "4586aa506a054d07e674cde8143a3008e6bc5d78", "message": "Don't duplicate simple primary keys in the link column\n\nWhen there's a simple (single-column) primary key, it looks weird to\nduplicate it in the link column.\n\nThis change removes the second PK column and treats the link column as\nif it were the PK column from a header/sorting perspective.", "author_date": "2018-04-15T21:49:01Z", "committer_date": "2018-04-18T01:13:02Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "b231d4243d748facf1897e7756c2b578bb448edc", "message": "Correct escaping for HTML display of row links", "author_date": "2018-04-15T21:48:30Z", "committer_date": "2018-04-18T01:13:02Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "efbb4e83374a2c795e436c72fa79f70da72309b8", "message": "Return HTTP 405 on InvalidUsage rather than 500\n\nThis also stops it filling up the logs. This happens for HEAD requests\nat the moment - which perhaps should be handled better, but that's a\ndifferent issue.", "author_date": "2018-04-14T16:11:16Z", "committer_date": "2018-04-14T18:00:38Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "7d5f25dfb320af26ec4afcb1a687f7f034e1f044", "message": "Add link to pint custom units page to docs", "author_date": "2018-04-14T14:08:20Z", "committer_date": "2018-04-14T14:08:20Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 45057, "label": "russss"}} {"sha": "ed974417ad54f0c0f65b2f1cf54dc12485abb570", "message": "Tests for unit filtering", "author_date": "2018-04-14T14:06:52Z", "committer_date": "2018-04-14T14:06:52Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 45057, "label": "russss"}} {"sha": "f2b940d6026677f6859d46a4f16fa402745d261d", "message": "Link foreign keys which don't have labels\n\nThis renders unlabeled FKs as simple links. I can't see why this would\ncause any major problems.\n\nAlso includes bonus fixes for two minor issues:\n\n* In foreign key link hrefs the primary key was escaped using HTML\n escaping rather than URL escaping. This broke some non-integer PKs.\n* Print tracebacks to console when handling 500 errors.", "author_date": "2018-04-14T13:17:20Z", "committer_date": "2018-04-14T14:59:59Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "1cc5161089e559c8b16049b20f7a5b3a43290c21", "message": "Fix sqlite error when loading rows with no incoming FKs\n\nThis fixes `ERROR: conn=, sql\n= 'select ', params = {'id': '1'}` caused by an invalid query when\nloading incoming FKs.\n\nThe error was ignored due to async but it still got printed to the\nconsole.", "author_date": "2018-04-14T12:06:00Z", "committer_date": "2018-04-14T14:24:24Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "3c985ec271cce46db8682c2a7466ea1c9a2ed210", "message": "Allow custom units to be registered with Pint", "author_date": "2018-04-14T11:27:06Z", "committer_date": "2018-04-14T11:27:06Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 45057, "label": "russss"}} {"sha": "ab85605c6179b21bb0add59b76c1b376d9d248b2", "message": "Support units in filters", "author_date": "2018-04-14T10:41:27Z", "committer_date": "2018-04-14T10:43:35Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 45057, "label": "russss"}} {"sha": "8bfeb984788c7144088c16c5f9126ca7d6af6e93", "message": "Tidy up units support\n\n* Add units to exported JSON\n* Units key in metadata skeleton\n* Docs", "author_date": "2018-04-14T10:16:09Z", "committer_date": "2018-04-14T10:43:34Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 45057, "label": "russss"}} {"sha": "ec6abc81e433c9bac1b9f085111785fc227e9e34", "message": "Initial units support\n\nAdd support for specifying units for a column in metadata.json and\nrendering them on display using\n[pint](https://pint.readthedocs.io/en/latest/).\n\nref #203", "author_date": "2018-04-13T21:17:59Z", "committer_date": "2018-04-14T03:32:53Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "d08a13314081ae2ce0313a17d3c07c1a7f2d94d5", "message": "Hide Spatialite system tables\n\nThey were getting on my nerves.", "author_date": "2018-04-11T21:20:25Z", "committer_date": "2018-04-12T21:34:47Z", "raw_author": {"value": "cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b", "label": "Russ Garrett"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45057, "label": "russss"}, "committer": {"value": 9599, "label": "simonw"}}