id,node_id,number,state,locked,title,user,body,created_at,updated_at,closed_at,merged_at,merge_commit_sha,assignee,milestone,draft,head,base,author_association,repo,url,merged_by,auto_merge 211860706,MDExOlB1bGxSZXF1ZXN0MjExODYwNzA2,363,open,0,Search all apps during heroku publish,436032,Adds the `-A` option to include apps from all organizations when searching app names for publish.,2018-08-29T19:25:10Z,2018-08-31T14:39:45Z,,,b684b04c30f6b8779a3d11f7599329092fb152f3,,,0,2dd363e01fa73b24ba72f539c0a854bc901d23a7,b7257a21bf3dfa7353980f343c83a616da44daa7,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/363,, 214653641,MDExOlB1bGxSZXF1ZXN0MjE0NjUzNjQx,364,open,0,Support for other types of databases using external connectors,11912854,"This PR is related to #293, but now all commits have been merged. The purpose is to support other file formats that aren't SQLite, like files with PyTables format. I've tried to accomplish that using external connectors published with entry points. The modifications in the original datasette code are minimal and many are in a separated file.",2018-09-11T14:31:47Z,2018-09-11T14:31:47Z,,,d84f3b1f585cb52b58aed0401c34214de2e8b47b,,,0,592fd05f685859b271f0305c2fc8cdb7da58ebfb,b7257a21bf3dfa7353980f343c83a616da44daa7,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/364,, 275923066,MDExOlB1bGxSZXF1ZXN0Mjc1OTIzMDY2,452,open,0,SQL builder utility classes,45057,"This adds a straightforward set of classes to aid in the construction of SQL queries. My plan for this was to allow plugins to manipulate the Datasette-generated SQL in a more structured way. I'm not sure that's going to work, but I feel like this is still a step forward - it reduces the number of intermediate variables in `TableView.data` which aids readability, and also factors out a lot of the boring string concatenation. There are a fair number of minor structure changes in here too as I've tried to make the ordering of `TableView.data` a bit more logical. As far as I can tell, I haven't broken anything...",2019-05-04T13:57:47Z,2019-05-04T14:03:04Z,,,45e7460d78c3f87c01f2e9e142cb7f646b23b156,,,0,c63762280d3bd66ad6ea24933dafe218861efef2,55643430f7ac8d27e99b00e7cf79db741003e811,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/452,, 290971295,MDExOlB1bGxSZXF1ZXN0MjkwOTcxMjk1,524,open,0,"Sort commits using isort, refs #516",9599,Also added a lint unit test to ensure they stay sorted. #516,2019-06-24T05:04:48Z,2019-06-24T05:45:00Z,,,4e92ebe00a058e02b2d7543cff60ac2f78aa97c7,,,0,dafae70ee7f74ce79b541a94385172be3ad0de83,cdd24f3eaa207f67d948c1876725b0f84654a623,OWNER,107914493,https://github.com/simonw/datasette/pull/524,, 295127213,MDExOlB1bGxSZXF1ZXN0Mjk1MTI3MjEz,546,open,0,Facet by delimiter,9599,Refs #510,2019-07-07T20:06:05Z,2019-11-18T23:46:01Z,,,68a6fb1a576a747b868771d00a10753f35aaa0cf,,,0,47ac6c6e46da16716d295d7cda8f79cd0663ca5e,a9909c29ccac771c23c2ef22b89d10697b5256b9,OWNER,107914493,https://github.com/simonw/datasette/pull/546,, 301483613,MDExOlB1bGxSZXF1ZXN0MzAxNDgzNjEz,564,open,0,First proof-of-concept of Datasette Library,9599,"Refs #417. Run it like this: datasette -d ~/Library Uses a new plugin hook - available_databases() ",2019-07-26T10:22:26Z,2023-02-07T15:14:11Z,,,4f425d2b39d1be10d7ef5c146480a3eb494d5086,,,1,947645d84710677ea50762016081a9fbc6b014a8,a9453c4dda70bbf5122835e68f63db6ecbe1a6fc,OWNER,107914493,https://github.com/simonw/datasette/pull/564,, 323983732,MDExOlB1bGxSZXF1ZXN0MzIzOTgzNzMy,579,open,0,New connection pooling,9599,See #569,2019-10-02T23:22:19Z,2019-11-15T22:57:21Z,,,025b4024b1b43ea034b7fd331c30740165ff75f2,,,0,32cbfd2acd28bcefb97c442ac8e3ee2c07401e19,a9909c29ccac771c23c2ef22b89d10697b5256b9,OWNER,107914493,https://github.com/simonw/datasette/pull/579,, 375180832,MDExOlB1bGxSZXF1ZXN0Mzc1MTgwODMy,672,open,0,--dirs option for scanning directories for SQLite databases,9599,Refs #417.,2020-02-14T02:25:52Z,2020-03-27T01:03:53Z,,,0e0e544f1f23451f04d7ca576ace5b18ce168e6f,,,0,ee718b98b793df2a15b125cbf20816c9864bf7e9,6aa516d82dea9885cb4db8d56ec2ccfd4cd9b840,OWNER,107914493,https://github.com/simonw/datasette/pull/672,, 440735814,MDExOlB1bGxSZXF1ZXN0NDQwNzM1ODE0,868,open,0,initial windows ci setup,702729,Picking up the work done on #557 with a new PR. Seeing if I can get this working.,2020-06-26T18:49:13Z,2021-07-10T23:41:43Z,,,b99adb1720a0b53ff174db54d0e4a67357b47f33,,,0,c99cabae638958ef057438a92cb9a182ba4f8188,180c7a5328457aefdf847ada366e296fef4744f1,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/868,, 442505088,MDExOlB1bGxSZXF1ZXN0NDQyNTA1MDg4,883,open,0,Skip counting hidden tables,3243482,"Potential fix for https://github.com/simonw/datasette/issues/859. Disabling table counts for hidden tables speeds up database page quite a bit. In my setup it reduced load time by 2/3 (~300 -> ~90ms)",2020-07-01T07:38:08Z,2020-07-02T00:25:44Z,,,527624338acd38b97bb33b0a0b913d80e8345fee,,,0,251884f58895faf8056b3dfdeae3bb92c5bc58ac,676bb64c877d73f8ff496cef4632f5a8a5a9283c,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/883,, 500798091,MDExOlB1bGxSZXF1ZXN0NTAwNzk4MDkx,1008,open,0,Add json_loads and json_dumps jinja2 filters,649467,,2020-10-09T20:11:34Z,2020-12-15T02:30:28Z,,,e33e91ca7c9b2fdeab9d8179ce0d603918b066aa,,,0,40858989d47043743d6b1c9108528bec6a317e43,1bdbc8aa7f4fd7a768d456146e44da86cb1b36d1,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1008,, 505453900,MDExOlB1bGxSZXF1ZXN0NTA1NDUzOTAw,1030,open,0,Make `package` command deal with a configuration directory argument,299380,Currently if we run `datasette package` on a configuration directory we'll get an exception when we try to hard link to the directory. This PR copies the tree and makes the Dockerfile run inspect on all *.db files.,2020-10-18T11:07:02Z,2020-10-19T08:01:51Z,,,124142e4d2710525b09ff2bd2a7a787cbed163a4,,,0,e0825334692967fec195e104cb6aa11095807a8e,c37a0a93ecb847e66cfe7b6f9452ba210fcae91b,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1030,, 532348919,MDExOlB1bGxSZXF1ZXN0NTMyMzQ4OTE5,1130,open,0,Fix footer not sticking to bottom in short pages,3243482,Fixes https://github.com/simonw/datasette/issues/1129,2020-12-04T07:29:01Z,2021-06-15T13:27:48Z,,,07bc05c58b6a295e6584f8c4015ec5fedb0050c4,,,0,8d4c69c6fb0ef741a19070f5172017ea3522e83c,49d8fc056844d5a537d6cfd96dab0dd5686fe718,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1130,, 545264436,MDExOlB1bGxSZXF1ZXN0NTQ1MjY0NDM2,1159,open,0,Improve the display of facets information,552629,"This PR changes the display of facets to hopefully make them more readable. Before | After ---|--- ![image](https://user-images.githubusercontent.com/552629/103084609-b1ec2980-45df-11eb-85bc-68ab8df3e8d9.png) | ![image](https://user-images.githubusercontent.com/552629/103085220-620e6200-45e1-11eb-8189-5dd5d3e2569e.png) ",2020-12-24T11:01:47Z,2023-01-22T20:58:11Z,,,db2a9666feffd2b84b110d239ccad1d52440727e,,,0,c820abd0bcb34d1ea5a03be64a2158ae7c42920c,a882d679626438ba0d809944f06f239bcba8ee96,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1159,, 560760145,MDExOlB1bGxSZXF1ZXN0NTYwNzYwMTQ1,1204,open,0,WIP: Plugin includes,9599,"Refs #1191 Next steps: - [ ] Get comfortable that this pattern is the right way to go - [ ] Implement it for all of the other pages, not just the table page - [ ] Add a new set of plugin tests that exercise ALL of these new hook locations - [ ] Document, then ship",2021-01-25T03:59:06Z,2021-12-17T07:10:49Z,,,98f06a766317a40035962416cf3211d7a374866a,,,1,05258469ae39bcaad17beb57c5b7eeab0d58a589,07e163561592c743e4117f72102fcd350a600909,OWNER,107914493,https://github.com/simonw/datasette/pull/1204,, 598213565,MDExOlB1bGxSZXF1ZXN0NTk4MjEzNTY1,1271,open,0,Use SQLite conn.interrupt() instead of sqlite_timelimit(),9599,"Refs #1270, #1268, #1249 Before merging this I need to do some more testing (to make sure that expensive queries really are properly cancelled). I also need to delete a bunch of code relating to the old mechanism of cancelling queries. [See comment below: this doesn't actually cancel the query due to a thread-local confusion]",2021-03-22T17:34:20Z,2021-03-22T21:49:27Z,,,a4fd7e5a761523881c031b4fee266a366e1c97bd,,,1,fb2ad7ada0b86a7fe4a576fe23236757c41eb05e,c4f1ec7f33fd7d5b93f0f895dafb5351cc3bfc5b,OWNER,107914493,https://github.com/simonw/datasette/pull/1271,, 613178968,MDExOlB1bGxSZXF1ZXN0NjEzMTc4OTY4,1296,open,0,Dockerfile: use Ubuntu 20.10 as base,82332573,"This PR changes the main Dockerfile to use ubuntu:20.10 as base image instead of python:3.9.2-slim-buster (itself based on debian:buster-slim). The Dockerfile is essentially the one from https://github.com/simonw/datasette/issues/1249#issuecomment-803698983 with some additional cleanups to slim it down. This fixes a couple of issues: 1. The SQLite version in Debian Buster (2.6.0) doesn't support generated columns 2. Installing SpatiaLite from the Debian sid repositories has the side effect of also installing updates to libc and libstdc++ from sid. As a bonus, the Docker image becomes smaller: ``` $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE datasette 0.56-ubuntu f7aca255140a 5 hours ago 212MB datasetteproject/datasette 0.56 efb3b282f390 13 days ago 258MB ``` ### Reproduction of the first issue ``` $ curl -O https://latest.datasette.io/fixtures.db % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 260k 0 260k 0 0 489k 0 --:--:-- --:--:-- --:--:-- 489k $ docker run -v `pwd`:/mnt datasetteproject/datasette:0.56 datasette /mnt/fixtures.db Traceback (most recent call last): File ""/usr/local/bin/datasette"", line 8, in sys.exit(cli()) File ""/usr/local/lib/python3.9/site-packages/click/core.py"", line 829, in __call__ return self.main(*args, **kwargs) File ""/usr/local/lib/python3.9/site-packages/click/core.py"", line 782, in main rv = self.invoke(ctx) File ""/usr/local/lib/python3.9/site-packages/click/core.py"", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File ""/usr/local/lib/python3.9/site-packages/click/core.py"", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File ""/usr/local/lib/python3.9/site-packages/click/core.py"", line 610, in invoke return callback(*args, **kwargs) File ""/usr/local/lib/python3.9/site-packages/datasette/cli.py"", line 544, in serve asyncio.get_event_loop().run_until_complete(check_databases(ds)) File ""/usr/local/lib/python3.9/asyncio/base_events.py"", line 642, in run_until_complete return future.result() File ""/usr/local/lib/python3.9/site-packages/datasette/cli.py"", line 584, in check_databases await database.execute_fn(check_connection) File ""/usr/local/lib/python3.9/site-packages/datasette/database.py"", line 155, in execute_fn return await asyncio.get_event_loop().run_in_executor( File ""/usr/local/lib/python3.9/concurrent/futures/thread.py"", line 52, in run result = self.fn(*self.args, **self.kwargs) File ""/usr/local/lib/python3.9/site-packages/datasette/database.py"", line 153, in in_thread return fn(conn) File ""/usr/local/lib/python3.9/site-packages/datasette/utils/__init__.py"", line 892, in check_connection for r in conn.execute( sqlite3.DatabaseError: malformed database schema (generated_columns) - near ""AS"": syntax error ``` Here is the SQLite version: ``` $ docker run -v `pwd`:/mnt -it datasetteproject/datasette:0.56 /bin/bash root@d9220d3b95dd:/# python3 Python 3.9.2 (default, Mar 27 2021, 02:50:26) [GCC 8.3.0] on linux Type ""help"", ""copyright"", ""credits"" or ""license"" for more information. >>> import sqlite3 >>> sqlite3.version '2.6.0' ``` ### Reproduction of the second issue ``` $ docker build . -t datasette --build-arg VERSION=0.55 [...snip...] The following packages will be upgraded: libc-bin libc6 libstdc++6 [...snip...] Unpacking libc6:amd64 (2.31-11) over (2.28-10) ... [...snip...] Unpacking libstdc++6:amd64 (10.2.1-6) over (8.3.0-6) ... [...snip...] ``` Both libc and libstdc++ are backwards compatible, so the image still works, but it will result in a combination of libraries and Python versions that exists only in the Datasette image, so it's likely untested. In addition, since Debian sid is an always-changing rolling-release, the versions of libc, libstdc++, Spatialite, and their dependencies change frequently, so the library versions in the Datasette image will depend on the day when it was built. ",2021-04-12T00:23:32Z,2021-07-20T08:52:13Z,,,2ba522dbd7168a104a33621598c5a2460aae3e74,,,0,8f00c312f6b8ab5cecbb8a698ab4ad659aabf4ef,c73af5dd72305f6a01ea94a2c76d52e5e26de38b,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1296,, 655741428,MDExOlB1bGxSZXF1ZXN0NjU1NzQxNDI4,1348,open,0,DRAFT: add test and scan for docker images,10801138,"**NOTE: I don't think this PR is ready, since the arm/v6 and arm/v7 images are failing pytest due to missing dependencies (gcc and friends). But it's pretty close.** Closes https://github.com/simonw/datasette/issues/1344 . Using a build-matrix for the platforms and [this test](https://github.com/simonw/datasette/issues/1344#issuecomment-849820019), we test all the platforms in parallel. I also threw in container scanning. ### Switch `pip install` to use either tags or commit shas Notably! This also [changes the Dockerfile](https://github.com/blairdrummond/datasette/blob/7fe5315d68e04fce64b5bebf4e2d7feec44f8546/Dockerfile#L20) so that it accepts tags or commit-shas. ``` # It's backwards compatible with tags, but also lets you use shas root@712071df17af:/# pip install git+git://github.com/simonw/datasette.git@0.56 Collecting git+git://github.com/simonw/datasette.git@0.56 Cloning git://github.com/simonw/datasette.git (to revision 0.56) to /tmp/pip-req-build-u6dhm945 Running command git clone -q git://github.com/simonw/datasette.git /tmp/pip-req-build-u6dhm945 Running command git checkout -q af5a7f1c09f6a902bb2a25e8edf39c7034d2e5de Collecting Jinja2<2.12.0,>=2.10.3 Downloading Jinja2-2.11.3-py2.py3-none-any.whl (125 kB) ``` This lets you build the containers in CI every push for testing, which maybe resolves [this problem](https://github.com/simonw/datasette/issues/1272#issuecomment-808648974)? # Workflow run example You can see the results in my workflow [here](https://github.com/blairdrummond/datasette/pull/2/checks?check_run_id=2690570717). The commit history is different because I squashed this branch, also in the testing branch I had to change `github.com/simonw` to `github.com/blairdrummond` for the CI to pick up my git_sha. ## Why did the builds fail? **NOTE:** The results of all the tests fail, but for different reasons! A few fail to install Rust, the amd64 passes the tests (phew!) but has critical CVEs which fail the container scan, the Arm/v6 and Arm/v7 seem to fail to install the test dependencies due to missing programs like `gcc`. (`gcc` is not sufficient though, as [this run](https://github.com/blairdrummond/datasette/pull/3/checks?check_run_id=2690672982) indicates) ",2021-05-28T03:02:12Z,2021-05-28T03:06:16Z,,,eeea7cb835be0f0319cafccf50dffa6ad26826c5,,,0,56cba8fb837cd938c2f9d7423ee43d62a81c8f7c,7b106e106000713bbee31b34d694b3dadbd4818c,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1348,, 692557381,MDExOlB1bGxSZXF1ZXN0NjkyNTU3Mzgx,1399,open,0,Multiple sort,87192257,"Closes #197. I have added support for sorting by multiple parameters as mentioned in the issue above, and together with that, a suggestion on how to implement such sorting in the user interface.",2021-07-19T12:20:14Z,2021-07-19T12:20:14Z,,,3161cd1202824921054cf78d82c1d8c07b140451,,,0,739697660382e4d2974619b4a5605baef87d233a,c73af5dd72305f6a01ea94a2c76d52e5e26de38b,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1399,, 712412883,MDExOlB1bGxSZXF1ZXN0NzEyNDEyODgz,1434,open,0,Enrich arbitrary query results with foreign key links and column descriptions,9599,"Refs #1293, follows #942.",2021-08-13T14:43:01Z,2021-08-19T21:18:58Z,,,d4d4f5566b1d43075cb52ded5d19a9dcf4350761,,,0,281c0872d5b8a462c9d7b2b2d77a924da4ed25a7,2883098770fc66e50183b2b231edbde20848d4d6,OWNER,107914493,https://github.com/simonw/datasette/pull/1434,, 729704537,MDExOlB1bGxSZXF1ZXN0NzI5NzA0NTM3,1465,open,0,add support for -o --get /path,51016,"Fixes https://github.com/simonw/datasette/issues/1459 Adds support for `--open --get /path` to be used in combination. If `--open` is provided alone, datasette will open a web page to a default URL. If `--get ` is provided alone, datasette will output the result of doing a GET to that URL and then exit. If `--open --get ` are provided together, datasette will open a web page to that URL. TODO items: - [ ] update documentation - [ ] print out error message when `--root --open --get ` is used - [ ] adjust code to require that `` start with a `/` when `-o --get ` is used - [ ] add test(s) note, '@CTB' is used in this PR to flag code that needs revisiting.",2021-09-08T14:30:42Z,2021-09-08T14:31:45Z,,,064e9511923fc4e50566bf9430b4a5b26f169357,,,1,9b66a7d9ba55bad8a3b409ede8855f4b4fff1f88,d57ab156b35ec642549fb69d08279850065027d2,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1465,, 737690951,PR_kwDOBm6k_c4r-EVH,1475,open,0,feat: allow joins using _through in both directions,5268174,"Currently the `_through` clause can only work if the FK relationship is defined in a specific direction. I don't think there is any reason for this limitation, as an FK allows joining in both directions. This is an admittedly hacky change to implement bidirectional joins using `_through`. It does work for our use-case, but I don't know if there are other implications that I haven't thought of. Also if this change is desirable we probably want to make the code a little nicer.",2021-09-20T15:28:20Z,2021-09-20T15:28:20Z,,,aa2f1c103730c0ede4ab67978288d91bbe1e00a6,,,0,edf3c4c3271c8f13ab4c28ad88b817e115477e41,b28b6cd2fe97f7e193a235877abeec2c8eb0a821,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1475,, 764281468,PR_kwDOBm6k_c4tjgJ8,1495,open,0,Allow routes to have extra options,536941,"Right now, datasette routes can only be a 2-tuple of `(regex, view_fn)`. If it was possible for datasette to handle extra options, like [standard Django does](https://docs.djangoproject.com/en/3.2/topics/http/urls/#passing-extra-options-to-view-functions), it would add flexibility for plugin authors. For example, if extra options were enabled, then it would be easy to make a single table the home page (#1284). This plugin would accomplish it. ```python from datasette import hookimpl from datasette.views.table import TableView @hookimpl def register_routes(datasette): return [ (r""^/$"", TableView.as_view(datasette), {'db_name': 'DB_NAME', 'table': 'TABLE_NAME'}) ] ``` ",2021-10-22T15:00:45Z,2021-11-19T15:36:27Z,,,44969c5654748fb26ad05ab37245678f245f32e5,,,0,fe7fa14b39846b919dfed44514a7d18d67e01dfd,ff9ccfb0310501a3b4b4ca24d73246a8eb3e7914,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1495,, 838755826,PR_kwDOBm6k_c4x_mXy,1626,open,0,Try test suite against macOS and Windows,9599,Refs #1625,2022-02-02T22:26:51Z,2022-02-03T01:22:44Z,,,83958f26a8458a108acb7c3c0a1c8aacb777586a,,,0,4b4d0e1ff9e2ee998cbd71abd5f5806f25444ed9,b5e6b1a9e1332fca3effe45d55dd06ee4249f163,OWNER,107914493,https://github.com/simonw/datasette/pull/1626,, 964640654,PR_kwDOBm6k_c45fz-O,1757,open,0,feat: add a wildcard for _json columns,163156,"This allows _json to accept a wildcard for when there are many JSON columns that the user wants to convert. I hope this is useful. I've tested it on our datasette and haven't ran into any issues. I imagine on a large set of results, there could be some performance issues, but it will probably be negligible for most use cases. On a side note, I ran into an issue where I had to upgrade black on my system beyond the pinned version in setup.py. Here is the upstream issue < . I didn't include this in the PR yet since I didn't look into the issue too far, but I can if you would like.",2022-06-11T01:01:17Z,2022-09-06T00:51:21Z,,,35e3df5fc1c61dfa893fa3ff226cf3837f3538e9,,,0,1cdcd8894ce2bb76cf29f8ffcdadedbb6fa0dac1,2e9751672d4fe329b3c359d5b7b1992283185820,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1757,, 998860509,PR_kwDOBm6k_c47iWbd,1772,open,0,Convert to setup.cfg,89725,"Recent versions of setuptools can run most things from setup.cfg so one can have a simpler version that does not require executing code on install. The bulk of the changes were automated by running https://pypi.org/project/setup-py-upgrade/ with a few minor edits for the bits that it can not auto convert (the initial `get_long_description()` and `get_version()` can not be automatically converted)",2022-07-18T03:39:53Z,2022-07-18T03:39:53Z,,,3abb0780f97901ae39f8a206c7c6d376f8574ffc,,,0,c1b2f539c8d4cabe0a48d07bd8ce3fd1439a8f08,01369176b0a8943ab45292ffc6f9c929b80a00e8,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1772,, 1067890893,PR_kwDOBm6k_c4_prjN,1823,open,0,Keyword-only arguments for a bunch of internal methods,9599,"Refs #1822 ---- :books: Documentation preview :books:: https://datasette--1823.org.readthedocs.build/en/1823/ ",2022-09-27T00:44:59Z,2022-10-05T04:37:54Z,,,28068a62ad6a8b76a1c9223c4ca78099cfd2ece5,,,0,b545b6a04ed7b407331f991adce107691ac3ab97,5f9f567acbc58c9fcd88af440e68034510fb5d2b,OWNER,107914493,https://github.com/simonw/datasette/pull/1823,, 1102353255,PR_kwDOBm6k_c5BtJNn,1870,open,0,"don't use immutable=1, only mode=ro",536941,"Opening db files in immutable mode sometimes leads to the file being mutated, which causes duplication in the docker image layers: see #1836, #1480 That this happens in ""immutable"" mode is surprising, because the sqlite docs say that setting this should open the database as read only. https://www.sqlite.org/c3ref/open.html > immutable: The immutable parameter is a boolean query parameter that indicates that the database file is stored on read-only media. When immutable is set, SQLite assumes that the database file cannot be changed, even by a process with higher privilege, and so the database is opened read-only and all locking and change detection is disabled. Caution: Setting the immutable property on a database file that does in fact change can result in incorrect query results and/or [SQLITE_CORRUPT](https://www.sqlite.org/rescode.html#corrupt) errors. See also: [SQLITE_IOCAP_IMMUTABLE](https://www.sqlite.org/c3ref/c_iocap_atomic.html). Perhaps this is a bug in sqlite? ---- :books: Documentation preview :books:: https://datasette--1870.org.readthedocs.build/en/1870/ ",2022-10-27T23:33:04Z,2022-10-29T00:53:43Z,,,e5a41217c8ef86bcd73042d909864ae5660c6ff0,,,0,4faa4fd3b3e7f5eae758b713d0a121b960e2e261,bf00b0b59b6692bdec597ac9db4e0b497c5a47b4,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1870,, 1201985064,PR_kwDOBm6k_c5HpNYo,1996,open,0,Document custom json encoder,25778,"Closes #1983 All documentation here. Edits welcome. ---- :books: Documentation preview :books:: https://datasette--1996.org.readthedocs.build/en/1996/ ",2023-01-18T16:54:14Z,2023-01-19T12:55:57Z,,,0dba13b7c2d434710b794b86c6686cce1d3699d2,,,0,96b8b7f1ecf3abaec5921aaedee251e36eed5339,6a352e99ab988dbf8fd22a100049caa6ad33f1ec,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/1996,, 1215742203,PR_kwDOBm6k_c5IdsD7,2003,open,0,Show referring tables and rows when the referring foreign key is compound,536941,"sqlite foreign keys can be compound, but that is not as well supported by datasette as single column foreign keys. in particular, 1. in a table view, there is not a link from the row to the referenced row if the foreign key is compound 2. in a row view, there is no listing of tables and rows that refer to the focal row if those referencing foreign keys are compound. Both of these issues are discussed in #1099. This PR only fixes the second one, because it's not clear what the right UX is for the first issue. ![Screenshot 2023-01-24 at 19-47-40 nlrb bargaining_unit](https://user-images.githubusercontent.com/536941/214454749-d53deead-4151-4329-a5d4-8a7a454de7d3.png) Some things that might not be desirable about this approach. 1. it changes the external API, by changing `column` => `columns` and `other_column` => `other_columns` (see inline comment for more discussion. 2. There are various places where the plural foreign keys have to be checked for length and discarded or transformed to singular. ",2023-01-24T21:31:31Z,2023-01-25T18:44:42Z,,,fb3abeceb2785a582d2c120c7c1bf7dc3cd1de05,,,0,1e5b42f9d6490926300953837cbaa571ef81d772,e4ebef082de90db4e1b8527abc0d582b7ae0bc9d,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2003,, 1216059840,PR_kwDOBm6k_c5Ie5nA,2004,open,0,"use single quotes for string literals, fixes #2001",193185,"This modernizes some uses of double quotes for string literals to use only single quotes, fixes simonw/datasette#2001 While developing it, I manually enabled the stricter mode by using the code snippet at https://gist.github.com/cldellow/85bba507c314b127f85563869cd94820 I think that code snippet isn't generally safe/portable, so I haven't tried to automate it in the tests. ---- :books: Documentation preview :books:: https://datasette--2004.org.readthedocs.build/en/2004/ ",2023-01-25T05:08:45Z,2023-02-01T06:37:18Z,,,b1d355dad63a0f97761c2e67f24673a781cfef9a,,,0,dca7634c274e71fae0d95ea4ff1dfd987b9af63c,e4ebef082de90db4e1b8527abc0d582b7ae0bc9d,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2004,, 1220379312,PR_kwDOBm6k_c5IvYKw,2008,open,0,array facet: don't materialize unnecessary columns,193185,"The presence of `inner.*` causes SQLite to materialize a row with all the columns. Those columns will be discarded later. Instead, we can select only the column we'll use. This lets SQLite's optimizer realize that the other columns in the CTE definition aren't needed. On a test table with 278K rows, 98K of which had an array, this speeds up the facet calculation from 4 sec to 1 sec. ---- :books: Documentation preview :books:: https://datasette--2008.org.readthedocs.build/en/2008/ ",2023-01-28T19:33:40Z,2023-01-29T18:17:40Z,,,0eda5a57ead9bda8be4c9e5cd2fdb9f22e69222e,,,0,f529a3001d35a114d2e622dcc7913c4c25a95ed8,0b4a28691468b5c758df74fa1d72a823813c96bf,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2008,, 1238017010,PR_kwDOBm6k_c5JyqPy,2025,open,0,Add database metadata to index.html template context,9993,"Fixes #2016 ---- :books: Documentation preview :books:: https://datasette--2025.org.readthedocs.build/en/2025/ ",2023-02-12T11:16:58Z,2023-02-12T11:17:14Z,,,a66d3976028cfec906ea04acec2910a178fa8842,,,0,912ed9de92d1bb9a28f50a2e08c5e7df2b827c15,0b4a28691468b5c758df74fa1d72a823813c96bf,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2025,, 1243080434,PR_kwDOBm6k_c5KF-by,2026,open,0,Avoid repeating primary key columns if included in _col args,8513,"...while maintaining given order. Fixes #1975 (if I'm understanding correctly). ---- :books: Documentation preview :books:: https://datasette--2026.org.readthedocs.build/en/2026/ ",2023-02-16T04:16:25Z,2023-02-16T04:16:41Z,,,ad2bfc72186e7af2244a6f27e02754f4c2f64910,,,0,f15adf1d6211e05250e5492826dd3f8e8e328077,0b4a28691468b5c758df74fa1d72a823813c96bf,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2026,, 1259276997,PR_kwDOBm6k_c5LDwrF,2031,open,0,Expand foreign key references in row view as well,82332573,"Unlike the table view, the single row view does not resolve foreign key references into labels. This patch extracts the foreign key reference expansion code from TableView.data() into a standalone function that is then called by both TableView.data() and RowView.data(). ---- :books: Documentation preview :books:: https://datasette--2031.org.readthedocs.build/en/2031/ ",2023-03-01T18:43:09Z,2023-03-24T18:35:25Z,,,4ddeb77ab84dfd9b6cbafd2e233f344de68917fa,,,0,ef25867492ce6eb69492aa37fcde98936a95365c,3feed1f66e2b746f349ee56970a62246a18bb164,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2031,, 1266742462,PR_kwDOBm6k_c5LgPS-,2034,open,0,remove an unused `app` var in cli.py,4370201,"this var `app` isn't actually used? unless init it does some side-effect outside of the event loop, idon't think it's necessary. Feel free to ignore this PR if the deleted line actually does something. ---- :books: Documentation preview :books:: https://datasette--2034.org.readthedocs.build/en/2034/ ",2023-03-07T18:19:05Z,2023-03-29T20:56:20Z,,,18da9ae95a86c4191b1e20d74c50c8ac89312447,,,0,28239c5bed362f2b9ee9e780bf23e5f31b680b5d,1ad92a1d87d79084ebe524ed186c900ff042328c,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2034,, 1289476973,PR_kwDOBm6k_c5M29tt,2044,open,0,Expand labels in row view as well (patch for 0.64.x branch),82332573,"This is a version of #2031 for the 0.64.x branch. ---- :books: Documentation preview :books:: https://datasette--2044.org.readthedocs.build/en/2044/ ",2023-03-24T18:44:44Z,2023-03-24T18:44:57Z,,,175202f5238c23fc6b76a0119d3ce9917d1570d1,,,0,c039d23a730448a7d82f9239cfb445aa1f7a4f16,2a0a94fe972e4b1556e73026dc381d297bc906bc,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2044,, 1299206303,PR_kwDOBm6k_c5NcFCf,2052,open,0,"feat: Javascript Plugin API (Custom panels, column menu items with JS actions)",9020979,"## Motivation - Allow plugins that add data visualizations [`datasette-vega`](https://github.com/simonw/datasette-vega), [`datasette-leaflet`](https://github.com/simonw/datasette-leaflet), and [`datasette-nteract-data-explorer`](https://github.com/hydrosquall/datasette-nteract-data-explorer) to co-exist safely - Standardize APIs / hooks to ease development for new JS plugin developers (better compat with datasette-lite) through standardized DOM selectors, methods for extending the existing Table UI. This has come up as a feature request several times (see research notes for examples) - Discussion w/ @simonw about a general-purpose Datasette JS API ## Changes Summary: Provide 2 new surface areas for Datasette JS plugin developers 1. Custom column header items: 2. Basic ""panels"" controlled by buttons: ### User Facing Changes - Allow creating menu items under table header that triggers JS (instead of opening hrefs per the existing [menu_link](https://docs.datasette.io/en/stable/plugin_hooks.html#menu-links-datasette-actor-request) hook). Items can respond to any column metadata provided by the column header (e.g. label). The proof of concept plugins log data to the console, or copy the column name to clipboard. - Allow plugins to register UI elements in a panel controller. The parent component handles switching the visibility of active plugins. - Because native button elements are used, the panel is keyboard-accessible - use tab / shift-tab to cycle through tab options, and `enter` to select. - There's room to improve the styling, but the focus of this PR is on the API rather than the UX. ### (plugin) Developer Facing Changes - Dispatch a `datasette_init` [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent) when the `datasetteManager` is finished loading. - Provide `manager.registerPlugin` API for adding new functionality that coordinates with Datasette lifecycle events. - Provide a `manager.selectors` map of DOM elements that users may want to hook into. - Updated `table.js` to use refer to these to motivating keeping things in sync - Allow plugins to register themselves with 2 hooks: - `makeColumnActions`: Add items to menu in table column headers. Users can provide a `label`, and either `href` or `onClick` with full access to the metadata for the clicked column (name, type, misc. booleans) - `makeAboveTablePanelConfigs`: Add items to the panel. Each panel has a unique ID (namespaced within that plugin), a render function, and a string label. See [this file](https://github.com/simonw/datasette/blob/2d92b9328022d86505261bcdac419b6ed9cb2236/datasette/static/table-example-plugins.js) for example plugin usage. ### Core Developer Facing Changes - Modified `table.js` to make use of the `datasetteManager` API. - Added example plugins to the `demos/plugins` folder, and stored the test js in the `statics/` folder ## Testing For Datasette plugin developers, please see the [alpha-level documentation](https://github.com/simonw/datasette/pull/2052#issuecomment-1510423051) . To run the examples: ```bash datasette serve fixtures.db --plugins-dir=demos/plugins/ ``` Open local server: `http://127.0.0.1:8001/fixtures/facetable` Open to all feedback on this PR, from API design to variable naming, to what additional hooks might be useful for the future. My focus was more on the general shape of the API for developers, rather than on the UX of the test plugins. ## Design notes - The manager tab panel could be a separate plugin if the implementation is too custom. - The `makeColumnHeaderItems` benefits from hooking into the logic of `table.js` - I wanted to offer this to the Datasette core, since the `datasette-manager` would be more powerful if it were connected to lifecycle and JS events that are part of the existing table.js. - Non-goals: - Dependency management (for now) - there's no ""build"" step, we don't know when new plugins will be added. While there are some valid use cases (for example, allow multiple plugins to wait for a global leaflet object to be loaded), I don't see enough use-cases to justify doing this yet. - Enabling single-page-app features - for now, most datasette actions lead to a new page being loaded. SPA development offers some benefits (no page jumping after clicking on a link), but also complexity that doesn't need to be in the core Datasette project. ## Research Notes - Relocated to a [comment](https://github.com/simonw/datasette/pull/2052#issuecomment-1510423215), as this isn't required to review when evaluating the plugin. Including it just for those who are curious. ",2023-04-02T20:23:44Z,2023-07-12T16:38:28Z,,,e1db219299cf7a7608e827273b2bed466da6b5c0,15178711,,0,cf5a9df3f5b3083f35e5e43b8025b72370497235,0f7192b6154edb576c41b55bd3f2a3f53e5f436a,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2052,, 1303909190,PR_kwDOBm6k_c5NuBNG,2053,open,0,WIP new JSON for queries,9599,"Refs: - #2049 TODO: - [x] Read queries JSON - [ ] Implement error display with `""ok"": false` and an errors key - [ ] Read queries HTML - [ ] Read queries other formats (plugins) - [ ] Canned read queries (dispatched to from table) - [ ] Write queries (a canned query thing) - [ ] Implement different shapes, refactoring to share code with table - [ ] Implement a sensible subset of extras, also refactoring to share code with table - [ ] Get all tests passing ---- :books: Documentation preview :books:: https://datasette--2053.org.readthedocs.build/en/2053/ ",2023-04-05T23:26:15Z,2023-05-26T23:13:03Z,,,3f9f8455e9a7c3fd65d034f5432a31a548c613a7,,,1,007294008d925b7e5529e6d14add002b6b56ddb5,dda99fc09fb0b5523948f6d481c6c051c1c7b5de,OWNER,107914493,https://github.com/simonw/datasette/pull/2053,, 1308472112,PR_kwDOBm6k_c5N_bMw,2056,open,0,GitHub Action to lint Python code with ruff,3709715,"[Ruff](https://beta.ruff.rs/) supports [over 500 lint rules](https://beta.ruff.rs/docs/rules) and can be used to replace [Flake8](https://pypi.org/project/flake8/) (plus dozens of plugins), [isort](https://pypi.org/project/isort/), [pydocstyle](https://pypi.org/project/pydocstyle/), [yesqa](https://github.com/asottile/yesqa), [eradicate](https://pypi.org/project/eradicate/), [pyupgrade](https://pypi.org/project/pyupgrade/), and [autoflake](https://pypi.org/project/autoflake/), all while executing (in Rust) tens or hundreds of times faster than any individual tool. The ruff Action uses minimal steps to run in ~5 seconds, rapidly providing intuitive GitHub Annotations to contributors. ![image](https://user-images.githubusercontent.com/3709715/223758136-afc386d2-70aa-4eff-953a-2c2d82ceea23.png) ---- :books: Documentation preview :books:: https://datasette--2056.org.readthedocs.build/en/2056/ ",2023-04-11T06:41:27Z,2023-04-15T14:24:46Z,,,dad6ef94091e032c7621ac6322f801ecf5292774,,,0,f53b78029321cd9bd5661accb5bd043d62e35a85,5890a20c374fb0812d88c9b0ef26a838bfa06c76,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2056,, 1319390463,PR_kwDOBm6k_c5OpEz_,2061,open,0,"Add ""Packaging a plugin using Poetry"" section in docs",1238873,"This PR adds a new section about packaging a plugin using `poetry` within the ""Writing plugins"" page of the documentation. ---- :books: Documentation preview :books:: https://datasette--2061.org.readthedocs.build/en/2061/ ",2023-04-19T07:23:28Z,2023-04-19T07:27:18Z,,,5466cd524f68d2e32d176c1f1bc5bec84688fffc,,,0,2650e3ca2c5ae4f21efe216f9959be31d9e58eed,5890a20c374fb0812d88c9b0ef26a838bfa06c76,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2061,, 1349830554,PR_kwDOBm6k_c5QdMea,2074,open,0,sort files by mtime,3919561,"serving multiple database files and getting tired by the default sort, changes so the sort order puts the latest changed databases to be on top of the list so don't have to scroll down, lazy as i am ;) ---- :books: Documentation preview :books:: https://datasette--2074.org.readthedocs.build/en/2074/ ",2023-05-14T15:25:15Z,2023-05-14T15:25:29Z,,,8ceb7bdf5a929cee367c5a8c4cc4ff0766f7114e,,,0,689e3b0155612c766607feea10bc2e67e1c2a6da,49184c569cd70efbda4f3f062afef3a34401d8d5,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2074,, 1350861558,PR_kwDOBm6k_c5QhIL2,2075,open,0,Bump sphinx from 6.1.3 to 7.0.1,49699333,"Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 6.1.3 to 7.0.1.
Release notes

Sourced from sphinx's releases.

v7.0.1

Changelog: https://www.sphinx-doc.org/en/master/changes.html

v7.0.0

Changelog: https://www.sphinx-doc.org/en/master/changes.html

v7.0.0rc1

Changelog: https://www.sphinx-doc.org/en/master/changes.html

v6.2.1

Changelog: https://www.sphinx-doc.org/en/master/changes.html

v6.2.0

Changelog: https://www.sphinx-doc.org/en/master/changes.html

Changelog

Sourced from sphinx's changelog.

Release 7.0.1 (released May 12, 2023)

Dependencies

  • #11411: Support Docutils 0.20_. Patch by Adam Turner.

.. _Docutils 0.20: https://docutils.sourceforge.io/RELEASE-NOTES.html#release-0-20-2023-05-04

Bugs fixed

  • #11418: Clean up remaining references to sphinx.setup_command following the removal of support for setuptools. Patch by Willem Mulder.

Release 7.0.0 (released Apr 29, 2023)

Incompatible changes

  • #11359: Remove long-deprecated aliases for MecabSplitter and DefaultSplitter in sphinx.search.ja.
  • #11360: Remove deprecated make_old_id functions in domain object description classes.
  • #11363: Remove the Setuptools integration (build_sphinx hook in setup.py).
  • #11364: Remove deprecated sphinx.ext.napoleon.iterators module.
  • #11365: Remove support for the jsdump format in sphinx.search.
  • #11366: Make locale a required argument to sphinx.util.i18n.format_date().
  • #11370: Remove deprecated sphinx.util.stemmer module.
  • #11371: Remove deprecated sphinx.pycode.ast.parse() function.
  • #11372: Remove deprecated sphinx.io.read_doc() function.
  • #11373: Removed deprecated sphinx.util.get_matching_files() function.
  • #11378: Remove deprecated sphinx.util.docutils.is_html5_writer_available() function.
  • #11379: Make the env argument to Builder subclasses required.
  • #11380: autosummary: Always emit grouped import exceptions.
  • #11381: Remove deprecated style key for HTML templates.
  • #11382: Remove deprecated sphinx.writers.latex.LaTeXTranslator.docclasses attribute.
  • #11383: Remove deprecated sphinx.builders.html.html5_ready and sphinx.builders.html.HTMLTranslator attributes.
  • #11385: Remove support for HTML 4 output.

Release 6.2.1 (released Apr 25, 2023)

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sphinx&package-manager=pip&previous-version=6.1.3&new-version=7.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) You can trigger a rebase of this PR by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
---- :books: Documentation preview :books:: https://datasette--2075.org.readthedocs.build/en/2075/ > **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days. ",2023-05-15T13:59:31Z,2023-06-29T14:31:59Z,,,d5ae0ab826ca78f98ddea077f42bdfd1f3964114,,,0,b99e1d3ee0308bce1df837f9e231d25cc44f8789,49184c569cd70efbda4f3f062afef3a34401d8d5,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2075,, 1355563020,PR_kwDOBm6k_c5QzEAM,2076,open,0,Datsette gpt plugin,130708713," ---- :books: Documentation preview :books:: https://datasette--2076.org.readthedocs.build/en/2076/ ",2023-05-18T11:22:30Z,2023-05-18T11:22:45Z,,,e561698980618a8d82a9430ab2c47753f8049c2f,,,0,093693edd2a177a38cbc5570aaef769e5cbffac1,49184c569cd70efbda4f3f062afef3a34401d8d5,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2076,, 1359311359,PR_kwDOBm6k_c5RBXH_,2077,open,0,Bump furo from 2023.3.27 to 2023.5.20,49699333,"Bumps [furo](https://github.com/pradyunsg/furo) from 2023.3.27 to 2023.5.20.
Changelog

Sourced from furo's changelog.

Changelog

2023.05.20 -- Unassuming Ultramarine

  • ✨ Add support for Sphinx 7.
  • Drop support for Sphinx 5.
  • Improve the screen-reader label for sidebar collapse.
  • Make it easier to create derived themes from Furo.
  • Bump all JS dependencies (NodeJS and npm packages).

2023.03.27 -- Tasty Tangerine

  • Regenerate with newer version of sphinx-theme-builder, to fix RECORD hashes.
  • Add missing class to Font Awesome examples

2023.03.23 -- Sassy Saffron

  • Update Python version classifiers.
  • Increase the icon size in mobile header.
  • Increase admonition title bg opacity.
  • Change the default API background to transparent.
  • Transition the API background change.
  • Remove the "indent" of API entries which have a background.
  • Break long inline code literals.

2022.12.07 -- Reverent Raspberry

  • ✨ Add support for Sphinx 6.
  • ✨ Improve footnote presentation with docutils 0.18+.
  • Drop support for Sphinx 4.
  • Improve documentation about what the edit button does.
  • Improve handling of empty-flexboxes for better print experience on Chrome.
  • Improve styling for inline signatures.
  • Replace the meta generator tag with a comment.
  • Tweak labels with icons to prevent users selecting icons as text on touch.

2022.09.29 -- Quaint Quartz

  • Add ability to set arbitrary URLs for edit button.

... (truncated)

Commits
  • d2c9ca8 Prepare release: 2023.05.20
  • 662d21b Update changelog
  • 591780b Bump compatible Sphinx version
  • c2e7837 Bump NodeJS and package versions
  • dd85574 Use the reference HtmlFormatter class defined on PygmentsBridge. (#657)
  • 6bff419 Fix broken link (#654)
  • e7f732e Improve the screen-reader label for sidebar collapse
  • 48c0bf2 Drop the check for the theme name
  • 1b17d81 [pre-commit.ci] pre-commit autoupdate (#646)
  • 4904fd5 Remove Python 3.8 constraint from Black pre-commit config (#647)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=furo&package-manager=pip&previous-version=2023.3.27&new-version=2023.5.20)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) You can trigger a rebase of this PR by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
---- :books: Documentation preview :books:: https://datasette--2077.org.readthedocs.build/en/2077/ > **Note** > Automatic rebases have been disabled on this pull request as it has been open for over 30 days.",2023-05-22T13:58:16Z,2023-06-29T14:40:35Z,,,f56be0e5dc594c374d4d5d79842561ccf3968d80,,,0,9785c4f73e4bb15a2f407212cb664a8e4a46b6e0,ede62036180993dbd9d4e5d280fc21c183cda1c3,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2077,, 1372714762,PR_kwDOBm6k_c5R0fcK,2082,open,0,Catch query interrupted on facet suggest row count,10843208,"Just like facet's `suggest()` is trapping `QueryInterrupted` for facet columns, we also need to trap `get_row_count()`, which can reach timeout if database tables are big enough. I've included `get_columns()` inside the block as that's just another query, despite it's a really cheap one and might never raise the exception. ---- :books: Documentation preview :books:: https://datasette--2082.org.readthedocs.build/en/2082/ ",2023-05-31T18:42:46Z,2023-05-31T18:45:26Z,,,6135526d2fcaff648120df97788e6e0f2d0f5ea6,,,0,dfe99af36c11b88ffcb5ca602d72cee1b8acd8bc,dda99fc09fb0b5523948f6d481c6c051c1c7b5de,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2082,, 1425647904,PR_kwDOBm6k_c5U-akg,2096,open,0,Clarify docs for descriptions in metadata,15906,"G'day! I got confused while debugging, earlier today. That's on me, but it does strike me a little repetition in the metadata documentation might help those flicking around it rather than reading it from top to bottom. No worries if you think otherwise. ---- :books: Documentation preview :books:: https://datasette--2096.org.readthedocs.build/en/2096/ ",2023-07-08T01:57:58Z,2023-07-08T01:58:13Z,,,6447bbfd8308ec7b75392ec4c786db780b830acd,,,0,3b787aae74b683414f3546bc9979e9f2c0ae13e9,8cd60fd1d899952f1153460469b3175465f33f80,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2096,, 1427574243,PR_kwDOBm6k_c5VFw3j,2098,open,0,Bump blacken-docs from 1.14.0 to 1.15.0,49699333,"Bumps [blacken-docs](https://github.com/asottile/blacken-docs) from 1.14.0 to 1.15.0.
Changelog

Sourced from blacken-docs's changelog.

1.15.0 (2023-07-09)

  • Drop Python 3.7 support.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=blacken-docs&package-manager=pip&previous-version=1.14.0&new-version=1.15.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
---- :books: Documentation preview :books:: https://datasette--2098.org.readthedocs.build/en/2098/ ",2023-07-10T13:49:12Z,2023-07-10T13:49:31Z,,,416cdc04da8bb837613eb75b589ba89420fa215c,,,0,79f95d1c2c685c7e569e6bcc912bbfa8274c2be9,0f7192b6154edb576c41b55bd3f2a3f53e5f436a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2098,, 1429431050,PR_kwDOBm6k_c5VM2MK,2099,open,0,Bump black from 23.3.0 to 23.7.0,49699333,"Bumps [black](https://github.com/psf/black) from 23.3.0 to 23.7.0.
Release notes

Sourced from black's releases.

23.7.0

Highlights

  • Runtime support for Python 3.7 has been removed. Formatting 3.7 code will still be supported until further notice (#3765)

Stable style

  • Fix a bug where an illegal trailing comma was added to return type annotations using PEP 604 unions (#3735)
  • Fix several bugs and crashes where comments in stub files were removed or mishandled under some circumstances (#3745)
  • Fix a crash with multi-line magic comments like type: ignore within parentheses (#3740)
  • Fix error in AST validation when Black removes trailing whitespace in a type comment (#3773)

Preview style

  • Implicitly concatenated strings used as function args are no longer wrapped inside parentheses (#3640)
  • Remove blank lines between a class definition and its docstring (#3692)

Configuration

  • The --workers argument to Black can now be specified via the BLACK_NUM_WORKERS environment variable (#3743)
  • .pytest_cache, .ruff_cache and .vscode are now excluded by default (#3691)
  • Fix Black not honouring pyproject.toml settings when running --stdin-filename and the pyproject.toml found isn't in the current working directory (#3719)
  • Black will now error if exclude and extend-exclude have invalid data types in pyproject.toml, instead of silently doing the wrong thing (#3764)

Packaging

  • Upgrade mypyc from 0.991 to 1.3 (#3697)
  • Remove patching of Click that mitigated errors on Python 3.6 with LANG=C (#3768)

Parser

  • Add support for the new PEP 695 syntax in Python 3.12 (#3703)

Performance

  • Speed up Black significantly when the cache is full (#3751)
  • Avoid importing IPython in a case where we wouldn't need it (#3748)

Output

... (truncated)

Changelog

Sourced from black's changelog.

23.7.0

Highlights

  • Runtime support for Python 3.7 has been removed. Formatting 3.7 code will still be supported until further notice (#3765)

Stable style

  • Fix a bug where an illegal trailing comma was added to return type annotations using PEP 604 unions (#3735)
  • Fix several bugs and crashes where comments in stub files were removed or mishandled under some circumstances (#3745)
  • Fix a crash with multi-line magic comments like type: ignore within parentheses (#3740)
  • Fix error in AST validation when Black removes trailing whitespace in a type comment (#3773)

Preview style

  • Implicitly concatenated strings used as function args are no longer wrapped inside parentheses (#3640)
  • Remove blank lines between a class definition and its docstring (#3692)

Configuration

  • The --workers argument to Black can now be specified via the BLACK_NUM_WORKERS environment variable (#3743)
  • .pytest_cache, .ruff_cache and .vscode are now excluded by default (#3691)
  • Fix Black not honouring pyproject.toml settings when running --stdin-filename and the pyproject.toml found isn't in the current working directory (#3719)
  • Black will now error if exclude and extend-exclude have invalid data types in pyproject.toml, instead of silently doing the wrong thing (#3764)

Packaging

  • Upgrade mypyc from 0.991 to 1.3 (#3697)
  • Remove patching of Click that mitigated errors on Python 3.6 with LANG=C (#3768)

Parser

  • Add support for the new PEP 695 syntax in Python 3.12 (#3703)

Performance

  • Speed up Black significantly when the cache is full (#3751)
  • Avoid importing IPython in a case where we wouldn't need it (#3748)

Output

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=23.3.0&new-version=23.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
---- :books: Documentation preview :books:: https://datasette--2099.org.readthedocs.build/en/2099/ ",2023-07-11T13:05:53Z,2023-07-11T13:06:16Z,,,8b3ebdb145b22150ddcfe51bebba88f910667792,,,0,2761e4db2429e5d5588d8d1e54f30a6aafa7456b,0f7192b6154edb576c41b55bd3f2a3f53e5f436a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2099,, 1432754160,PR_kwDOBm6k_c5VZhfw,2100,open,0,Make primary key view accessible to render_cell hook,1563881," ---- :books: Documentation preview :books:: https://datasette--2100.org.readthedocs.build/en/2100/ ",2023-07-13T09:30:36Z,2023-07-13T09:30:50Z,,,414c40938a7ebf29aa8eabb1315f1863a7b0615e,,,0,43948f412c849d86ccee70094249c7f34cbb7580,0f7192b6154edb576c41b55bd3f2a3f53e5f436a,FIRST_TIME_CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/2100,,