{"sha": "baf986c871708c01ca183be760995cf306ba21bf", "message": "New get_metadata() plugin hook for dynamic metadata\n\nThe following hook is added:\r\n\r\n get_metadata(\r\n datasette=self, key=key, database=database, table=table,\r\n fallback=fallback\r\n )\r\n\r\nThis gets called when we're building our metdata for the rest\r\nof the system to use. We merge whatever the plugins return\r\nwith any local metadata (from metadata.yml/yaml/json) allowing\r\nfor a live-editable dynamic Datasette.\r\n\r\nAs a security precation, local meta is *not* overwritable by\r\nplugin hooks. The workflow for transitioning to live-meta would\r\nbe to load the plugin with the full metadata.yaml and save.\r\nThen remove the parts of the metadata that you want to be able\r\nto change from the file.\r\n\r\n* Avoid race condition: don't mutate databases list\r\n\r\nThis avoids the nasty \"RuntimeError: OrderedDict mutated during\r\niteration\" error that randomly happens when a plugin adds a\r\nnew database to Datasette, using `add_database`. This change\r\nmakes the add and remove database functions more expensive, but\r\nit prevents the random explosion race conditions that make for\r\nconfusing user experience when importing live databases.\r\n\r\nThanks, @brandonrobertz", "author_date": "2021-06-26T22:24:54Z", "committer_date": "2021-06-26T22:24:54Z", "raw_author": {"value": "121af5c26cc703f7b3d7219091a8e71dc39db899", "label": "Brandon Roberts"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 2670795, "label": "brandonrobertz"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "12cec411cae73ba7211429da12cd32c551fe17b1", "message": "Display metadata footer on custom SQL queries (#589)\n\nCloses #408 - thanks, @rixx!", "author_date": "2019-10-14T03:53:21Z", "committer_date": "2019-10-14T03:53:21Z", "raw_author": {"value": "b90d9715d7c0881515e9d6aa98923ed89d445945", "label": "Tobias Kunze"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 2657547, "label": "rixx"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "908fc3999e06f3ccd3bb8ad0539490bbc7809748", "message": "Sort databases on homepage by argument order - #591\n\nCloses #585 - thanks, @rixx!", "author_date": "2019-10-14T03:52:33Z", "committer_date": "2019-10-14T03:52:33Z", "raw_author": {"value": "b90d9715d7c0881515e9d6aa98923ed89d445945", "label": "Tobias Kunze"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 2657547, "label": "rixx"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "931bfc66613aa3e22f8314df5c0d0758baf31f38", "message": "Handle spaces in DB names (#590)\n\nCloses #503 - thanks, @rixx", "author_date": "2019-11-04T23:16:30Z", "committer_date": "2019-11-04T23:16:30Z", "raw_author": {"value": "b90d9715d7c0881515e9d6aa98923ed89d445945", "label": "Tobias Kunze"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 2657547, "label": "rixx"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "af2e6a5cf186a7200d76cb67ac30fa59cc24d84e", "message": "Button to format SQL, closes #136\n\nSQL code will be formatted on page load, and can additionally\r\nbe formatted by clicking the \"Format SQL\" button.\r\n\r\nThanks, @rixx!", "author_date": "2019-10-14T03:46:12Z", "committer_date": "2019-10-14T03:46:12Z", "raw_author": {"value": "b90d9715d7c0881515e9d6aa98923ed89d445945", "label": "Tobias Kunze"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 2657547, "label": "rixx"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "ee330222f4c3ee66c2fe41ebc76fed56b9cb9a00", "message": "Offer to format readonly SQL (#602)\n\nFollowing discussion in #601, this PR adds a \"Format SQL\" button to\r\nread-only SQL (if the SQL actually differs from the formatting result).\r\n\r\nIt also removes a console error on readonly SQL queries.\r\n\r\nThanks, @rixx!", "author_date": "2019-11-04T02:39:55Z", "committer_date": "2019-11-04T02:39:55Z", "raw_author": {"value": "b90d9715d7c0881515e9d6aa98923ed89d445945", "label": "Tobias Kunze"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 2657547, "label": "rixx"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "271b894af52eb6437ae6cd84eba9867ad8dd43f6", "message": "Map dict to TEXT\n\nThanks, @minaeid90", "author_date": "2021-11-15T00:27:40Z", "committer_date": "2021-11-15T00:27:40Z", "raw_author": {"value": "354fc054391e109f21a593b971cebb96f0dab254", "label": "Mina Rizk"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 2496189, "label": "minaeid90"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "e7b2626291040b78b9a2dbc2982ba72691fb1a0f", "message": "Fix incorrect create-table cli description (#254)\n\nThe description for `create-table` was duplicated from `create-index`.", "author_date": "2021-05-19T02:57:26Z", "committer_date": "2021-05-19T02:57:26Z", "raw_author": {"value": "d6a64a7ba2d6c2c36f86efe56eb62e19518bfd72", "label": "Rob Wells"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 1935268, "label": "robjwells"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "994ce46ed4a5d680bee58242efd95181946c25e9", "message": "Add favicon to documentation (#1967)\n\nCo-authored-by: Simon Willison ", "author_date": "2022-12-31T19:00:31Z", "committer_date": "2022-12-31T19:00:31Z", "raw_author": {"value": "34e367c7552115298fad77183b89be66b489b589", "label": "Chris Holdgraf"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 1839645, "label": "choldgraf"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "b366e68deb0780048a23610c279552f8529d4726", "message": "table.duplicate(new_table_name) feature, closes #449\n\nThanks, @davidleejy", "author_date": "2022-07-15T21:21:36Z", "committer_date": "2022-07-15T21:21:36Z", "raw_author": {"value": "d4b26031589514477509e3dae9cde3678a3b610e", "label": "David"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 1690072, "label": "davidleejy"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "dbac2e5dd8a562b45d8255a265859cf8020ca22a", "message": "Fixing 'NoneType' object has no attribute 'items' (#73)\n\nTraceback (most recent call last):\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/bin/github-to-sqlite\", line 8, in \r\n sys.exit(cli())\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 1130, in __call__\r\n return self.main(*args, **kwargs)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 1055, in main\r\n rv = self.invoke(ctx)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 1657, in invoke\r\n return _process_result(sub_ctx.command.invoke(sub_ctx))\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 1404, in invoke\r\n return ctx.invoke(self.callback, **ctx.params)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/click/core.py\", line 760, in invoke\r\n return __callback(*args, **kwargs)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/cli.py\", line 181, in starred\r\n utils.save_stars(db, user, stars)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/utils.py\", line 494, in save_stars\r\n repo_id = save_repo(db, repo)\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/utils.py\", line 308, in save_repo\r\n to_save[\"owner\"] = save_user(db, to_save[\"owner\"])\r\n File \"/home/dogsheep/dogsheep/github-to-sqlite/lib64/python3.10/site-packages/github_to_sqlite/utils.py\", line 229, in save_user\r\n for key, value in user.items()\r\n AttributeError: 'NoneType' object has no attribute 'items'", "author_date": "2022-07-18T19:40:11Z", "committer_date": "2022-07-18T19:40:11Z", "raw_author": {"value": "5706ac4cf453125159bc20ff21584abaa85d68e1", "label": "\u30ab\u30b7\u30aa\u3000\u91d1\u57ce\u3000\u5927\u95a2"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 207052882, "label": "github-to-sqlite"}, "author": {"value": 1224205, "label": "empjustine"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "3e62ab62a88992d4bbb0fe83debec3bacd93ebf3", "message": "Correct some typos (#245)", "author_date": "2021-05-19T02:58:04Z", "committer_date": "2021-05-19T02:58:04Z", "raw_author": {"value": "fcf3b31d4679bb2112170ec4dda53dede33a16b3", "label": "Damien Ready"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 1076745, "label": "dbready"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "984b1df12cf19a6731889fc0665bb5f622e07b7c", "message": "Add documentation for serving via OpenRC (#1825)\n\n* Add documentation for serving via OpenRC", "author_date": "2022-09-28T04:21:36Z", "committer_date": "2022-09-28T04:21:36Z", "raw_author": {"value": "ddda3e8cc5167e6bdbab6819a1f4e8e2621f4e89", "label": "Adam Simpson"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 1048831, "label": "asimpson"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "c96a3826cf50cb347f6a415b56d8105ba6d8dcb0", "message": "Added `--app` to fly install command. (#1279)", "author_date": "2021-03-29T00:11:55Z", "committer_date": "2021-03-29T00:11:55Z", "raw_author": {"value": "289d370ce73360043d773e9c3643439f289b038a", "label": "vincent d warmerdam"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 1019791, "label": "koaning"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "be2265b0e811d0ac2875c2f748125c17b0f9289e", "message": "Fix db-to-sqlite command in ecosystem doc page (#669)\n\nThanks, @adipasquale", "author_date": "2020-02-22T02:32:17Z", "committer_date": "2020-02-22T02:32:17Z", "raw_author": {"value": "bd53542d6923dd8fcfd93cd43a925e6e8acd6e80", "label": "Adrien Di Pasquale"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 883348, "label": "adipasquale"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "34d77d780f68b778fd9d6ebbaf69f250436f055f", "message": "gcloud run is now GA, s/beta// (#660)\n\nThanks, @glasnt", "author_date": "2020-01-21T23:28:11Z", "committer_date": "2020-01-21T23:28:11Z", "raw_author": {"value": "f9a18a704545f33349d7b28b24faf7063846ae0a", "label": "Katie McLaughlin"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 813732, "label": "glasnt"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "d95048031edb02bbc9892879507f55a4f29c5459", "message": "Split pypi and docker travis tasks (#480)\n\nThanks @glasnt!", "author_date": "2019-07-07T20:03:19Z", "committer_date": "2019-07-07T20:03:19Z", "raw_author": {"value": "f9a18a704545f33349d7b28b24faf7063846ae0a", "label": "Katie McLaughlin"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 813732, "label": "glasnt"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "b37f55549461cfe0731b57623f315860b3db49d0", "message": "github-to-sqlite pull-requests command (#48)\n\nThanks, @adamjonas", "author_date": "2020-11-29T23:51:08Z", "committer_date": "2020-11-29T23:51:08Z", "raw_author": {"value": "04fb3d52db4bd9bf23ce52c5cc72fda2068a1fce", "label": "Adam Jonas"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 207052882, "label": "github-to-sqlite"}, "author": {"value": 755825, "label": "adamjonas"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "7e4c6ecdabc249c77e8049cd172b1b5af08a3371", "message": "Add beeminder-to-sqlite (#4)", "author_date": "2020-10-12T00:36:16Z", "committer_date": "2020-10-12T00:36:16Z", "raw_author": {"value": "1724ce4f699bc25ec4d0f30be011f7503db01c07", "label": "Ben Congdon"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 214746582, "label": "dogsheep.github.io"}, "author": {"value": 706257, "label": "bcongdon"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "85af27dbff7e08a92656639fbf0cfa15c7d30b5c", "message": "Add todoist-to-sqlite (#3)\n\nCo-authored-by: Simon Willison ", "author_date": "2020-10-12T00:35:57Z", "committer_date": "2020-10-12T00:35:57Z", "raw_author": {"value": "1724ce4f699bc25ec4d0f30be011f7503db01c07", "label": "Ben Congdon"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 214746582, "label": "dogsheep.github.io"}, "author": {"value": 706257, "label": "bcongdon"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "4f7c0ebd85ccd8c1853d7aa0147628f7c1b749cc", "message": "Fix table name in spatialite example command (#1022)\n\nThe example query for creating a new point geometry seems to be using a table called 'museums' but at one point it instead uses 'events'. I *believe* it is intended to be museums.", "author_date": "2020-10-14T23:46:46Z", "committer_date": "2020-10-14T23:46:46Z", "raw_author": {"value": "c49d52addfdcb2a0682b83ad3b98e88426921728", "label": "Jacob Fenton"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 639012, "label": "jsfenfen"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "70dffca351375e6f542969c72ebc43c6d393d99c", "message": "Remove unneeded exists=True for -a/--auth flag. (#59)\n\nThe file does not need to exist when using an environment variable.", "author_date": "2021-05-19T16:08:12Z", "committer_date": "2021-05-19T16:08:12Z", "raw_author": {"value": "a7fbb45ec68f58915ee5484e65e5159f5ed91182", "label": "Felix Rosencrantz"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 207052882, "label": "github-to-sqlite"}, "author": {"value": 631242, "label": "frosencrantz"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "a53b893c46453f35decc8c145c138671cee6140c", "message": "Add Python 3.11 classifier (#2028)\n\nThanks, @dtrodrigues", "author_date": "2023-03-06T21:01:19Z", "committer_date": "2023-03-06T21:01:19Z", "raw_author": {"value": "76636a6719eeba03eff3bf19c66433f1a532b9a6", "label": "Dustin Rodrigues"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 614233, "label": "dtrodrigues"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "aa652b6afe43d2b40fabc7a513c3e68866e030a5", "message": "add -h support\n\nCloses #276", "author_date": "2021-06-18T14:56:59Z", "committer_date": "2021-06-18T14:56:59Z", "raw_author": {"value": "a5c9af884c4814b20969652665d29676767dceb7", "label": "Loren McIntyre"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 601708, "label": "mcint"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "bd30c696e18927207358ee9d63174a5c41c8297e", "message": "Build Dockerfile with recent Sqlite + Spatialite (#280)\n\nCloses #278\r\n\r\n```bash\r\n $ docker run --rm -it datasette spatialite\r\n SpatiaLite version ..: 4.4.0-RC0\tSupported Extensions:\r\n - 'VirtualShape'\t[direct Shapefile access]\r\n - 'VirtualDbf'\t\t[direct DBF access]\r\n - 'VirtualXL'\t\t[direct XLS access]\r\n - 'VirtualText'\t\t[direct CSV/TXT access]\r\n - 'VirtualNetwork'\t[Dijkstra shortest path]\r\n - 'RTree'\t\t[Spatial Index - R*Tree]\r\n - 'MbrCache'\t\t[Spatial Index - MBR cache]\r\n - 'VirtualSpatialIndex'\t[R*Tree metahandler]\r\n - 'VirtualElementary'\t[ElemGeoms metahandler]\r\n - 'VirtualKNN'\t[K-Nearest Neighbors metahandler]\r\n - 'VirtualXPath'\t[XML Path Language - XPath]\r\n - 'VirtualFDO'\t\t[FDO-OGR interoperability]\r\n - 'VirtualGPKG'\t[OGC GeoPackage interoperability]\r\n - 'VirtualBBox'\t\t[BoundingBox tables]\r\n - 'SpatiaLite'\t\t[Spatial SQL - OGC]\r\n PROJ.4 version ......: Rel. 4.9.3, 15 August 2016\r\n GEOS version ........: 3.5.1-CAPI-1.9.1 r4246\r\n TARGET CPU ..........: x86_64-linux-gnu\r\n the SPATIAL_REF_SYS table already contains some row(s)\r\n SQLite version ......: 3.23.1\r\n Enter \".help\" for instructions\r\n SQLite version 3.23.1 2018-04-10 17:39:29\r\n Enter \".help\" for instructions\r\n Enter SQL statements terminated with a \";\"\r\n spatialite>\r\n```\r\n\r\n```bash\r\n$ docker run --rm -it datasette python -c \"import sqlite3; print(sqlite3.sqlite_version)\"\r\n3.23.1\r\n```\r\n\r\nAlso updates the query used to check for FTS5 as the old version wasn't\r\ndetecting FTS5 for some reason.", "author_date": "2018-05-23T17:43:34Z", "committer_date": "2018-05-23T17:43:34Z", "raw_author": {"value": "a901819e7fab7b80a873df43d5123bb3252681f8", "label": "Ravi Kotecha"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 565628, "label": "r4vi"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "39ef137e6760d385dc48d03eccf9b89943636fc7", "message": "Support self-referencing FKs in `create` (#537)", "author_date": "2023-05-08T21:10:00Z", "committer_date": "2023-05-08T21:10:00Z", "raw_author": {"value": "b9c77b970cf91e2e44d83118464578123130e5fe", "label": "Scott Perry"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 544011, "label": "numist"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "b912d92b651c4f0b5137da924d135654511f0fe0", "message": "Make hash and size a lazy property (#1837)\n\n* use inspect data for hash and file size\r\n* make hash and cached_size lazy properties\r\n* move hash property near size", "author_date": "2022-10-27T20:51:20Z", "committer_date": "2022-10-27T20:51:20Z", "raw_author": {"value": "88e22aeee75bfd8a1cdeae56a89d5509d1c1d1c4", "label": "Forest Gregg"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 536941, "label": "fgregg"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "c5f8a2eb1a81a18b52825cc649112f71fe419b12", "message": "in extract code, check equality witH IS instead of = for nulls (#455)\n\nsqlite \"IS\" is equivalent to SQL \"IS NOT DISTINCT FROM\"\r\n\r\nclose #423", "author_date": "2022-08-27T14:45:03Z", "committer_date": "2022-08-27T14:45:03Z", "raw_author": {"value": "88e22aeee75bfd8a1cdeae56a89d5509d1c1d1c4", "label": "Forest Gregg"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 536941, "label": "fgregg"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "eff112498ecc499323c26612d707908831446d25", "message": "Useuse inspect data for hash and file size on startup\n\nThanks, @fgregg\r\n\r\nCloses #1834", "author_date": "2022-10-06T20:06:06Z", "committer_date": "2022-10-06T20:06:06Z", "raw_author": {"value": "88e22aeee75bfd8a1cdeae56a89d5509d1c1d1c4", "label": "Forest Gregg"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 536941, "label": "fgregg"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "1bcd54a834a2f9730d21095df855f6708c85c200", "message": "Fix small doc typo - thanks @jaywgraves (#365)", "author_date": "2018-09-19T17:15:42Z", "committer_date": "2018-09-19T17:15:42Z", "raw_author": {"value": "6410ac01839c113476668eeff88d60a0a2c6eb7a", "label": "Jay Graves"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 418191, "label": "jaywgraves"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "33a12c8ae526afb40a7819c9ca411c9d3c41219b", "message": "Allow leading comments in SQL input field (#653)\n\nThanks, @jaywgraves!", "author_date": "2020-02-05T02:13:24Z", "committer_date": "2020-02-05T02:13:24Z", "raw_author": {"value": "6410ac01839c113476668eeff88d60a0a2c6eb7a", "label": "Jay Graves"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 418191, "label": "jaywgraves"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "ed78922ae38b51513319b60ac39990b7c2aca810", "message": "Tiny typo in customization docs (#390)\n\nThanks, @jaywgraves", "author_date": "2018-12-16T21:32:55Z", "committer_date": "2018-12-16T21:32:55Z", "raw_author": {"value": "6410ac01839c113476668eeff88d60a0a2c6eb7a", "label": "Jay Graves"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 418191, "label": "jaywgraves"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "0f41db1ba8a8a49a4adc1046a25ccf32790e863f", "message": "Avoid error sorting by relationships if related tables are not allowed\n\nRefs #1306", "author_date": "2021-06-02T04:25:27Z", "committer_date": "2021-06-02T04:25:27Z", "raw_author": {"value": "0645c24f7846578adea9d68f3e37a7e15a9bd1dd", "label": "Guy Freeman"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 416374, "label": "gfrmin"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "328211eaca1247cd6b33a2c0a54642f87866d85b", "message": "Typo in upsert example (#244)\n\nRemove extra `[`", "author_date": "2021-05-19T02:58:21Z", "committer_date": "2021-05-19T02:58:21Z", "raw_author": {"value": "cde244e49fff511dca86e57614d1b133bfffdcd0", "label": "Juan E. D"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 387669, "label": "j-e-d"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "b6a4da8be3b6d4b74c6a5fac8924bf22a6824f2c", "message": "Document the use of --stop_after with favorites, refs #20\n\nThanks, @mikepqr", "author_date": "2021-08-20T00:02:10Z", "committer_date": "2021-08-20T00:02:10Z", "raw_author": {"value": "216dbfd3bd82e49cf8d12e9f574d76f408f2f0d6", "label": "Mike Lee Williams"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 206156866, "label": "twitter-to-sqlite"}, "author": {"value": 370930, "label": "mikepqr"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "4f9a2f1f47dcf7e8561d68a8a07f5009a13cfdb3", "message": "Fix small typo (#1243)\n\nThanks, @UtahDave", "author_date": "2021-03-04T05:46:10Z", "committer_date": "2021-03-04T05:46:10Z", "raw_author": {"value": "43961130e6c3858eb95518c964f72d63a00f0384", "label": "David Boucha"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 306240, "label": "UtahDave"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "f92d823766872a6fd7e76c5249a6b2de1ab0f447", "message": "ensure immutable databses when starting in configuration directory mode with (#1229)\n\n* check if immutables is empty list of None\r\n* update docs on how to create the inspect-data.json", "author_date": "2021-03-29T00:17:31Z", "committer_date": "2021-03-29T00:17:31Z", "raw_author": {"value": "50f8a5e45b42f54cd7dfc01c8c34b8736a785e77", "label": "Campbell Allen"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 295329, "label": "camallen"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "86755503d26b4a83c2ec59f08ec1b8de791fd954", "message": "Initial add simple prod ready Dockerfile refs #57 (#94)", "author_date": "2017-11-15T03:08:04Z", "committer_date": "2017-11-15T03:08:04Z", "raw_author": {"value": "2d9fb90ab683bec9ad9389c88bb10f454886e986", "label": "Andrew Cutler"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 247192, "label": "macropin"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "663ac431fe7202c85967568d82b2034f92b9aa43", "message": "Use Read the Docs action v1 (#1778)\n\nRead the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1`", "author_date": "2022-08-20T00:04:16Z", "committer_date": "2022-08-20T00:04:16Z", "raw_author": {"value": "a9570db41e1b6fe56efd98307a0c1c3facf064e4", "label": "Manuel Kaufmann"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 244656, "label": "humitos"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "83e7339255e811c62e6db8498c483c44a84d0f28", "message": "Use Read the Docs action v1 (#463)\n\nRead the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1`", "author_date": "2022-08-17T23:11:15Z", "committer_date": "2022-08-17T23:11:15Z", "raw_author": {"value": "a9570db41e1b6fe56efd98307a0c1c3facf064e4", "label": "Manuel Kaufmann"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 244656, "label": "humitos"}, "committer": {"value": 19864447, "label": "web-flow"}} {"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": "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": "772f9a07ce363869e0aaa7600617454dc00e6966", "message": "Add scientists to target groups (#1455)", "author_date": "2021-09-04T16:31:38Z", "committer_date": "2021-09-04T16:31:38Z", "raw_author": {"value": "106fe7fbf8b80a01038e265a137b3b703422db48", "label": "Robert Gieseke"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 198537, "label": "rgieseke"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "a113c28ea1924d83e6789ae5e0805312e55b4490", "message": "Add version number support with Versioneer\n\nRepo:\nhttps://github.com/warner/python-versioneer\n\nVersioneer Licence:\nPublic Domain (CC0-1.0)\n\nCloses #273", "author_date": "2018-05-22T15:33:29Z", "committer_date": "2018-05-22T19:35:21Z", "raw_author": {"value": "a1a72b19e432a3145fdb845aab2927c00d8a8426", "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": "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": "6e26b057996c6f3fefa8ad528e2759e53c738844", "message": "Fix syntax error in register_routes docs (#1038)\n\nThanks, @gerrymanoim", "author_date": "2020-10-21T22:44:16Z", "committer_date": "2020-10-21T22:44:16Z", "raw_author": {"value": "504bbb044bf002cf09319c388b99caf0269c28c3", "label": "gerrymanoim"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 194147, "label": "gerrymanoim"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "dbd2d70b3819a7041bb36a527033d77c85683c05", "message": "asgi: check raw_path is not None (#719)\n\nThe ASGI spec\r\n(https://asgi.readthedocs.io/en/latest/specs/www.html#http) seems to\r\nimply that `None` is a valid value, so we need to check the value\r\nitself, not just whether the key is present.\r\n\r\nIn particular, the [mangum](https://github.com/erm/mangum) adapter\r\npasses `None` for this key.", "author_date": "2020-05-04T17:14:25Z", "committer_date": "2020-05-04T17:14:25Z", "raw_author": {"value": "5c0f309ec7c7fbfad14fc6aead2238ca497fa84c", "label": "Colin Dellow"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 193185, "label": "cldellow"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "7b1a9a1999eb9326ce8ec830d75ac200e5279c46", "message": "Fix little typo (#1282)", "author_date": "2021-03-29T19:57:34Z", "committer_date": "2021-03-29T19:57:34Z", "raw_author": {"value": "887085a02768a99c6da5c415beac8a6c3cc04069", "label": "Marjorie Roswell"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 192568, "label": "mroswell"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "bc4c42d68879c710c851dba3c98deda96ca6caa8", "message": "Use python-dateutil package instead of dateutils (#324)", "author_date": "2021-11-14T23:25:40Z", "committer_date": "2021-11-14T23:25:40Z", "raw_author": {"value": "64b848f51063b81fd138f806322b4add4b5f1afd", "label": "Denys Pavlov"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 191622, "label": "meatcar"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "2e9751672d4fe329b3c359d5b7b1992283185820", "message": "chore: Set permissions for GitHub actions (#1740)\n\nRestrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won\u2019t be able to do much.\r\n\r\n- Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions\r\n\r\nhttps://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions\r\n\r\nhttps://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs\r\n\r\n[Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)\r\n\r\nSigned-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>", "author_date": "2022-05-31T19:28:40Z", "committer_date": "2022-05-31T19:28:40Z", "raw_author": {"value": "902cf90c9d2dadfcff296a337dc6e2df5775229f", "label": "Naveen"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 172697, "label": "naveensrinivasan"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "02f5c4d69d7b4baebde015c56e5bc62923f33314", "message": "Support repeated calls to Table.convert()\n\n* Test repeated calls to Table.convert()\r\n* Register Table.convert() functions under their own `lambda_hash` name\r\n* Raise exception on registering identical function names\r\n\r\nRefs #525", "author_date": "2023-05-08T21:53:58Z", "committer_date": "2023-05-08T21:53:58Z", "raw_author": {"value": "48e7f08226a63f00be8a5f44380ce11412c62eaf", "label": "Martin Carpenter"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 167893, "label": "mcarpenter"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "7805d53bcf11199bd1f2b07e05ae90151f9d0eb0", "message": "Fix accidental mega long line in docs (#158)\n\nThanks @tomviner", "author_date": "2020-09-16T06:21:42Z", "committer_date": "2020-09-16T06:21:42Z", "raw_author": {"value": "d151532d3a398e1acd965596193c7d4c7c0475ff", "label": "Tom V"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 167319, "label": "tomviner"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "c9d1943aede436fa3413fd49bc56335cbda4ad07", "message": "Fix word break in facets by adding ul.tight-bullets li word-break: break-all (#1794)\n\nThanks, @dmr", "author_date": "2022-09-06T00:45:41Z", "committer_date": "2022-09-06T00:45:41Z", "raw_author": {"value": "159eac804f4612f6d1e2f036c0ca5399b1662d53", "label": "Daniel Rech"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 128286, "label": "dmr"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "3001e1e394b6cb605c2cd81eed671a7da419c1b3", "message": "Add timeout option to Cloudrun build (#1717)\n\n* Add timeout option for build phase\r\n* Make the --timeout setting optional\r\n* Add test for --timeout setting\r\n\r\nThanks, @wragge", "author_date": "2022-04-24T14:03:08Z", "committer_date": "2022-04-24T14:03:08Z", "raw_author": {"value": "6cabba813337e444c356d919c79ef180b01659af", "label": "Tim Sherratt"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 127565, "label": "wragge"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "93c3a7ffbfb3378f743ebce87d033cf1ce7689e0", "message": "Remove underscore from search mode parameter name (#1447)\n\nThe text refers to the parameter as `searchmode` but the `metadata.json` example uses `search_mode`. The latter doesn't actually seem to work.", "author_date": "2021-08-25T01:28:58Z", "committer_date": "2021-08-25T01:28:58Z", "raw_author": {"value": "6cabba813337e444c356d919c79ef180b01659af", "label": "Tim Sherratt"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 127565, "label": "wragge"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "9fedfc69d7239ac49900051e1c48ee9cdd470d9e", "message": "docs to dogs (#437)", "author_date": "2022-05-30T21:32:41Z", "committer_date": "2022-05-30T21:32:41Z", "raw_author": {"value": "287c15deaf4abe1951327c443af0552f733317e7", "label": "Yuri"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 114388, "label": "yurivish"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "ca5ba6b77b4c973fa7ba91008a2e99debfa306b4", "message": "Document setting Google Cloud SDK properties (#995)\n\nDocument setting Google Cloud SDK properties to avoid having to respond to interactive prompts when running `datasette publish cloudrun`.\r\n\r\nThanks, @ghing!", "author_date": "2020-10-06T16:25:37Z", "committer_date": "2020-10-06T16:25:37Z", "raw_author": {"value": "f3dfe1c3cf166dd0b9b8860a25045107a068c5df", "label": "Geoffrey Hing"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 110420, "label": "ghing"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "70d2858067d3c4da0e17c1d39e03de89190e94b6", "message": "Doc typo fix (#479)", "author_date": "2019-05-20T16:42:28Z", "committer_date": "2019-05-20T16:42:28Z", "raw_author": {"value": "798007d3f9547f7bcb9228088222d35f30b5b716", "label": "Thomas Wood"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 98555, "label": "IgnoredAmbience"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "367082e787101fb90901ef3214804ab23a92ce46", "message": "Typos in tests (#156)\n\nThanks @simonwiles", "author_date": "2020-09-09T18:21:22Z", "committer_date": "2020-09-09T18:21:22Z", "raw_author": {"value": "a02cf01c415b3ca2d3b4458167191f30850ff9dd", "label": "Simon Wiles"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 96218, "label": "simonwiles"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "947bb7626fd1763608a470adf9cf5f156ef003e9", "message": "insert_all(..., alter=True) works for columns introduced after first 100 records\n\n* Insert all columns for every chunk\r\n* Update unit test to reflect new behaviour\r\n* Test that exception is raised\r\n* Update documentation\r\n\r\nCloses #139. Thanks, Simon Wiles!", "author_date": "2020-08-28T22:30:13Z", "committer_date": "2020-08-28T22:30:13Z", "raw_author": {"value": "a02cf01c415b3ca2d3b4458167191f30850ff9dd", "label": "Simon Wiles"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 96218, "label": "simonwiles"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "e6d202b742a7b531fffa593703d34f8337632d68", "message": "Handle case where subsequent records (after first batch) include extra columns\n\nRefs #145.\r\n\r\n* Extract build_insert_queries_and_params\r\n* Extract insert_chunk so it can be called recursively\r\n\r\nThanks, @simonwiles", "author_date": "2020-09-08T23:20:36Z", "committer_date": "2020-09-08T23:20:36Z", "raw_author": {"value": "a02cf01c415b3ca2d3b4458167191f30850ff9dd", "label": "Simon Wiles"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 96218, "label": "simonwiles"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "3ecd131e57add427d847b614c920c9624bb2e66b", "message": "Use DOMContentLoaded instead of load event for CodeMirror initialization. Closes #1894 (#1898)", "author_date": "2022-11-18T07:29:00Z", "committer_date": "2022-11-18T07:29:00Z", "raw_author": {"value": "861aec2fe33d6c4a4fcda2748f19332fbffb5a92", "label": "Brian Grinstead"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 95570, "label": "bgrins"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "ae11fa5887e03376704c22e5d0969c1e0642d8d8", "message": "Upgrade to CodeMirror 6, add SQL autocomplete (#1893)\n\n* Upgrade to CodeMirror 6\r\n* Update contributing docs\r\n* Change how resizing works\r\n* Define a custom SQLite autocomplete dialect\r\n* Add meta-enter to submit\r\n* Add fixture schema for testing", "author_date": "2022-11-16T23:49:06Z", "committer_date": "2022-11-16T23:49:06Z", "raw_author": {"value": "861aec2fe33d6c4a4fcda2748f19332fbffb5a92", "label": "Brian Grinstead"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 95570, "label": "bgrins"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "3a56a2cd7eea5d477d5d936b01098be5cba0d98e", "message": "Add metadata, if it exists, to heroku temp dir (#178)", "author_date": "2018-01-14T21:05:16Z", "committer_date": "2018-01-14T21:05:16Z", "raw_author": {"value": "38fee63c62808d1ea42ad2bb2db074f9301d2840", "label": "Tony Hirst"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 82988, "label": "psychemedia"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "4054e96a3914e821d0880a40a7284aaa9db1eaaa", "message": "Update deploying.rst (#1392)\n\nUse same base url for Apache as in the example", "author_date": "2021-07-13T17:42:27Z", "committer_date": "2021-07-13T17:42:27Z", "raw_author": {"value": "2d3ef71be2a52d05e9f9ce8a03cdc8ce4f68de85", "label": "Aslak Raanes"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 80737, "label": "aslakr"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "d71cac498138ddd86f18607b9043e70286ea884a", "message": "How to configure Unix domain sockets with Apache\n\nExample on how to use Unix domain socket option on Apache. Not testet.\r\n\r\n(Usually I would have used [`ProxyPassReverse`](https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreverse) in combination with `ProxyPass` , i.e.\r\n\r\n```apache\r\nProxyPass /my-datasette/ http://127.0.0.1:8009/my-datasette/\r\nProxyPassReverse /my-datasette/ http://127.0.0.1:8009/my-datasette/\r\n```\r\n\r\nand\r\n\r\n```apache\r\nProxyPass /my-datasette/ unix:/tmp/datasette.sock|http://localhost/my-datasette/\r\nProxyPassReverse /my-datasette/ unix:/tmp/datasette.sock|http://localhost/my-datasette/\r\n```", "author_date": "2021-07-13T18:32:49Z", "committer_date": "2021-07-13T18:32:49Z", "raw_author": {"value": "2d3ef71be2a52d05e9f9ce8a03cdc8ce4f68de85", "label": "Aslak Raanes"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 80737, "label": "aslakr"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "ae4593316ccf5e42ad26f27033193834a7e696c8", "message": "Add insert --truncate option\n\nDeletes all rows in the table (if it exists) before inserting new rows.\nSQLite doesn't implement a TRUNCATE TABLE statement but does optimize an\nunqualified DELETE FROM.\n\nThis can be handy if you want to refresh the entire contents of a table\nbut a) don't have a PK (so can't use --replace), b) don't want the table\nto disappear (even briefly) for other connections, and c) have to handle\nrecords that used to exist being deleted.\n\nIdeally the replacement of rows would appear instantaneous to other\nconnections by putting the DELETE + INSERT in a transaction, but this is\nvery difficult without breaking other code as the current transaction\nhandling is inconsistent and non-systematic. There exists the\npossibility for the DELETE to succeed but the INSERT to fail, leaving an\nempty table. This is not much worse, however, than the current\npossibility of one chunked INSERT succeeding and being committed while\nthe next chunked INSERT fails, leaving a partially complete operation.", "author_date": "2020-07-06T21:18:23Z", "committer_date": "2020-07-08T17:26:20Z", "raw_author": {"value": "f2f4d10a554519ea00fb44a5f6377123c59e1f22", "label": "Thomas Sibley"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 79913, "label": "tsibley"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "f8277d0fb9c05a88a9ff01d996e31d55f0f0a645", "message": "sqlite-utils query can now run DML (#120)\n\n* Failing test showing that DML in `sqlite-utils query` doesn't work\r\n* Run `sqlite-utils query` in a transaction so that DML is committed\r\n\r\nThanks, @tsibley!", "author_date": "2020-07-08T05:14:04Z", "committer_date": "2020-07-08T05:14:04Z", "raw_author": {"value": "f25304fb12f6d6fab36f551427610ed8e96f0c2f", "label": "Thomas Sibley"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 79913, "label": "tsibley"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "c5f4f0f70ce394dfec6054c3c5aaedf330887093", "message": "Use jsonify_if_need for sql updates (#204)\n\n* add failing tests for update with json values\r\n* use jsonify_if_needed in for sql updates\r\n\r\nThanks, @mfa", "author_date": "2020-12-08T17:49:42Z", "committer_date": "2020-12-08T17:49:42Z", "raw_author": {"value": "9d65422e8ede715e91311c9f3703218f2478bf55", "label": "Andreas Madsack"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 78035, "label": "mfa"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "d3c4ab2848ea606417150f377a82e66ca7887c54", "message": "Don't break if source is missing (#6)\n\nThis broke for very old checkins from 2010 with no source set. Thanks, @mfa!", "author_date": "2020-03-28T02:28:10Z", "committer_date": "2020-03-28T02:28:10Z", "raw_author": {"value": "9d65422e8ede715e91311c9f3703218f2478bf55", "label": "Andreas Madsack"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 205429375, "label": "swarm-to-sqlite"}, "author": {"value": 78035, "label": "mfa"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "6dff22eff8a52253a6c2bdf3e32f082fbf81b921", "message": "Visited link colours", "author_date": "2020-10-27T18:39:35Z", "committer_date": "2020-10-27T19:39:55Z", "raw_author": {"value": "cb0d330fa68b6a0d1b11370a9dbda0d2b8f4d3aa", "label": "Natalie Downe"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 72973, "label": "natbat"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "7d69f1ac02536d9a831d57ce096b96d07e812613", "message": "New header and footer", "author_date": "2020-08-27T21:59:34Z", "committer_date": "2020-10-27T19:39:55Z", "raw_author": {"value": "cb0d330fa68b6a0d1b11370a9dbda0d2b8f4d3aa", "label": "Natalie Downe"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 72973, "label": "natbat"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "df19a48a3b72a51feb4203c44903451cc9e6c1bf", "message": "Implemented new Natalie design", "author_date": "2020-10-27T18:40:08Z", "committer_date": "2020-10-27T19:39:55Z", "raw_author": {"value": "cb0d330fa68b6a0d1b11370a9dbda0d2b8f4d3aa", "label": "Natalie Downe"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 72973, "label": "natbat"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "446d47fdb005b3776bc06ad8d1f44b01fc2e938b", "message": "make html title more readable in query template (#180)\n\ntiny tweak to make this easier to visually parse\u2014I think it matches your style in other templates", "author_date": "2018-04-03T15:24:04Z", "committer_date": "2018-04-03T15:24:04Z", "raw_author": {"value": "daa0836007170071f748b575d34c4432f4f43926", "label": "Ryan Pitts"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 56477, "label": "ryanpitts"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "8b4c600d98b85655b3a1454ebf64f858b5fe54c8", "message": "Add spatialite, switch to debian and local build (#114)", "author_date": "2017-11-17T03:50:51Z", "committer_date": "2017-11-17T03:50:51Z", "raw_author": {"value": "959507cc7596b555bf4292e84f335b02cca843f8", "label": "Ariel N\u00fa\u00f1ez"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 54999, "label": "ingenieroariel"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "0fdbf004843850f200e077a3c87427fe16c18b85", "message": "Rework the `--static` documentation\n\nRework the `--static` documentation to better differentiate between the filesystem and serving locations. Closes #1457\r\n\r\nCo-authored-by: Simon Willison ", "author_date": "2021-10-14T18:39:55Z", "committer_date": "2021-10-14T18:39:55Z", "raw_author": {"value": "3674171304d76a7883c9278baae6eb636e00e08d", "label": "C. Titus Brown"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 51016, "label": "ctb"}, "committer": {"value": 19864447, "label": "web-flow"}} {"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": "bbde835a1fec01458e8d00929e7bab6d6a5ba948", "message": "Fix --metadata doc usage (#1112)\n\nThanks, @jefftriplett.", "author_date": "2020-11-28T19:53:48Z", "committer_date": "2020-11-28T19:53:48Z", "raw_author": {"value": "207bb2132044fa5a4fe28a579f7588c2eee6e391", "label": "Jeff Triplett"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 50527, "label": "jefftriplett"}, "committer": {"value": 19864447, "label": "web-flow"}} {"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": "405e092d5916e70df10f82d15e9c052aa9ee8d80", "message": "Option to add triggers when enabling FTS (#57)\n\n--create-triggers CLI option and create_triggers=True in the Python library\r\n\r\n* Add an option to create triggers for fts table.\r\n* Add cli option for the create-update-trigger.\r\n* Add tests for the create-update-trigger option.\r\n* Change FTS table escaping to square brackets.", "author_date": "2019-09-02T23:42:28Z", "committer_date": "2019-09-02T23:42:28Z", "raw_author": {"value": "a83a9ad7fdcc8d400257ebb4c5d09638aa09f73b", "label": "Amjith Ramanujam"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 140912432, "label": "sqlite-utils"}, "author": {"value": 49260, "label": "amjith"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "ea99a4431ce5bc2d65a3496da5b38e1986550a96", "message": "Only load Python files from plugins-dir\n\nPull request #890. Thanks, @amjith!\r\n\r\n* Load only python files from plugins-dir\r\n* Add a test to verify non-python files are not loaded as plugins", "author_date": "2020-07-03T03:08:32Z", "committer_date": "2020-07-03T03:08:32Z", "raw_author": {"value": "a83a9ad7fdcc8d400257ebb4c5d09638aa09f73b", "label": "Amjith Ramanujam"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 49260, "label": "amjith"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "66c87cee0c7344c7877373c60b180c766c206101", "message": "Mark codemirror files as vendored (#367)\n\nThis should stop GitHub from incorrectly stating that Datasette is 46% JavaScript.", "author_date": "2019-05-03T21:11:19Z", "committer_date": "2019-05-03T21:11:19Z", "raw_author": {"value": "93b11f15fd4dc15002baf3d9160dc6eb928bd883", "label": "Jaap Roes"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 48517, "label": "jaap3"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "f853d5592ec7f901a50381de22a26a9ab098f885", "message": "\"python3 -m pip\" is clearer (thanks @jaap3) (#368)", "author_date": "2019-05-03T18:18:42Z", "committer_date": "2019-05-03T18:18:42Z", "raw_author": {"value": "93b11f15fd4dc15002baf3d9160dc6eb928bd883", "label": "Jaap Roes"}, "raw_committer": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 48517, "label": "jaap3"}, "committer": {"value": 9599, "label": "simonw"}} {"sha": "976e5f74aae1fa0d406df6691dc8b5feeebe8788", "message": "Include LICENSE in sdist (#1043)", "author_date": "2020-10-23T20:54:34Z", "committer_date": "2020-10-23T20:54:34Z", "raw_author": {"value": "a97268d4c7c462a8e260bc98d425e618143667c8", "label": "Nicholas Bollweg"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45380, "label": "bollwyvl"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "cab8e65261b117b493af6a0b21aa2e1ae4564419", "message": "Add minimum supported python (#1044)", "author_date": "2020-10-23T20:53:07Z", "committer_date": "2020-10-23T20:53:07Z", "raw_author": {"value": "a97268d4c7c462a8e260bc98d425e618143667c8", "label": "Nicholas Bollweg"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45380, "label": "bollwyvl"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "a971718d2a5e1b61b5e5c27b0ef6c4ec65616e35", "message": "Fix a typo (#232)", "author_date": "2018-04-21T00:19:07Z", "committer_date": "2018-04-21T00:19:07Z", "raw_author": {"value": "8795af7c0eb348f1248a81917921e4a7d768bee3", "label": "lsb"}, "raw_committer": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 45281, "label": "lsb"}, "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"}}