pull_requests
608 rows sorted by base descending
This data as json, CSV (advanced)
Suggested facets: state, milestone, draft, author_association, repo, created_at (date), closed_at (date), merged_at (date)
updated_at (date) >30 ✖
- 2020-05-04 9
- 2021-10-13 9
- 2019-05-03 8
- 2022-03-06 7
- 2023-03-29 7
- 2021-05-22 6
- 2018-04-14 5
- 2021-03-29 5
- 2021-05-19 5
- 2022-07-18 5
- 2022-09-06 5
- 2022-12-28 5
- 2023-05-08 5
- 2019-11-11 4
- 2020-10-12 4
- 2021-11-30 4
- 2022-08-27 4
- 2022-09-05 4
- 2023-08-07 4
- 2023-08-29 4
- 2023-09-06 4
- 2023-11-04 4
- 2017-11-17 3
- 2019-05-04 3
- 2019-07-03 3
- 2019-09-03 3
- 2019-10-14 3
- 2019-11-12 3
- 2019-11-13 3
- 2020-05-27 3
- …
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
327169748 | MDExOlB1bGxSZXF1ZXN0MzI3MTY5NzQ4 | 589 | closed | 0 | Display metadata footer on custom SQL queries | rixx 2657547 | Closes #408 | 2019-10-11T12:10:28Z | 2019-10-14T08:58:23Z | 2019-10-14T03:53:22Z | 2019-10-14T03:53:22Z | 12cec411cae73ba7211429da12cd32c551fe17b1 | 0 | 5627fe8d58e791e004b89b5614007d5e64a5c8e2 | fffd69ec031b83f46680f192ba57a27f0d1f0b8a | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/589 | ||||
327188087 | MDExOlB1bGxSZXF1ZXN0MzI3MTg4MDg3 | 591 | closed | 0 | Sort databases on homepage by argument order | rixx 2657547 | Closes #585 | 2019-10-11T12:57:38Z | 2019-10-14T08:57:50Z | 2019-10-14T03:52:34Z | 2019-10-14T03:52:34Z | 908fc3999e06f3ccd3bb8ad0539490bbc7809748 | 0 | 5a8e52fa60f2c2c93f10b9c6c126f31b02d647b0 | fffd69ec031b83f46680f192ba57a27f0d1f0b8a | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/591 | ||||
327279818 | MDExOlB1bGxSZXF1ZXN0MzI3Mjc5ODE4 | 592 | closed | 0 | Offer SQL formatting | rixx 2657547 | SQL code will be formatted on page load, and can additionally be formatted by clicking the "Format SQL" button. Closes #136 | 2019-10-11T16:35:49Z | 2019-10-14T08:57:12Z | 2019-10-14T03:46:13Z | 2019-10-14T03:46:13Z | af2e6a5cf186a7200d76cb67ac30fa59cc24d84e | 0 | b46195af65846ca30c6006520cc778eeed052324 | fffd69ec031b83f46680f192ba57a27f0d1f0b8a | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/592 | ||||
327541046 | MDExOlB1bGxSZXF1ZXN0MzI3NTQxMDQ2 | 595 | closed | 0 | bump uvicorn to 0.9.0 to be Python-3.8 friendly | stonebig 4312421 | as uvicorn-0.9 is needed to get websockets-8.0.2, which is needed to have Python-3.8 compatibility | 2019-10-13T10:00:04Z | 2019-11-12T04:46:48Z | 2019-11-12T04:46:48Z | 5a7185bcd15aab28e86338b3771c25af13a94a4c | 0 | e1d92ea94ca8f14879ef280cb7dadab7eed76e9c | fffd69ec031b83f46680f192ba57a27f0d1f0b8a | NONE | datasette 107914493 | https://github.com/simonw/datasette/pull/595 | |||||
771790589 | PR_kwDOEhK-wc4uAJb9 | 15 | open | 0 | include note tags in the export | d-rep 436138 | When parsing the Evernote `<note>` elements, the script will now also parse any nested `<tag>` elements, writing them out into a separate sqlite table. Here is an example of how to query the data after the script has run: ``` select notes.*, (select group_concat(tag) from notes_tags where notes_tags.note_id=notes.id) as tags from notes; ``` My .enex source file is 3+ years old so I am assuming the structure hasn't changed. Interestingly, my _notebook names_ show up in the _tags_ list where the tag name is prefixed with `notebook_`, so this could maybe help work around the first limitation mentioned in the [evernote-to-sqlite blog post](https://simonwillison.net/2020/Oct/16/building-evernote-sqlite-exporter/). | 2021-11-02T20:04:31Z | 2021-11-02T20:04:31Z | ee36aba995b0a5385bdf9a451851dcfc316ff7f6 | 0 | 8cc3aa49c6e61496b04015c14048c5dac58d6b42 | fff89772b4404995400e33fe1d269050717ff4cf | FIRST_TIME_CONTRIBUTOR | evernote-to-sqlite 303218369 | https://github.com/dogsheep/evernote-to-sqlite/pull/15 | ||||||
760452915 | PR_kwDOBm6k_c4tU5cz | 1494 | closed | 0 | Update pytest-asyncio requirement from <0.16,>=0.10 to >=0.10,<0.17 | dependabot[bot] 49699333 | Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/f2fe98e5cbc4a25e31c24f5932d66f9c903f0fe5"><code>f2fe98e</code></a> 0.16.0</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/4e1df3191aee1a902c873901b35d82363e13b08c"><code>4e1df31</code></a> Remove obsolete test, add make test</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/6ec76477061ea14394cadbf2cef673b04971ef4d"><code>6ec7647</code></a> feat: Add support for Python 3.10.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/42ff5d176b2be5aa77a43f586179d563ae2196b5"><code>42ff5d1</code></a> ci: Include Python 3.10 in the CI test run.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/be3b32777b32774c288b604f0d95eacb32a4d1a2"><code>be3b327</code></a> build: Include Python 3.10 in Tox test runs.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/1c283bd821249ee3c695ae59bb022d31a1473ae2"><code>1c283bd</code></a> refactor: test_async_fixtures_with_finalizer no longer trigger a DeprecationW...</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/2751982f3a84d55aad103ea039cc779537e90720"><code>2751982</code></a> refactor: Replaced tests asserting that the event loop is properly closed.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/70989fd7b626a86db4f75acc40057f982f2c76dd"><code>70989fd</code></a> refactor: Grouped test cases together that are related to the use of the asyn...</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/b27abe8d138998a75cc4eb519be810439d3ed0d9"><code>b27abe8</code></a> refactor: Removed TestUnexistingLoop.remove_loop fixture, because it has no e...</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/e3ec312c1d55b3688e4ce115df7791a0478582d1"><code>e3ec312</code></a> Adjusted Hypothesis integration tes… | 2021-10-18T13:14:17Z | 2021-10-24T22:22:40Z | 2021-10-24T22:22:39Z | 2021-10-24T22:22:39Z | 03cc697b6b3d0983618c29ee75b45b5e0ac91139 | 0 | 7a3e3c355695d95b002a2ec6a68b0c27c7089ed6 | ff9ccfb0310501a3b4b4ca24d73246a8eb3e7914 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1494 | ||||
764281468 | PR_kwDOBm6k_c4tjgJ8 | 1495 | open | 0 | Allow routes to have extra options | fgregg 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 | datasette 107914493 | https://github.com/simonw/datasette/pull/1495 | ||||||
206863803 | MDExOlB1bGxSZXF1ZXN0MjA2ODYzODAz | 358 | closed | 0 | Bump versions of pytest, pluggy and beautifulsoup4 | simonw 9599 | 2018-08-08T00:44:38Z | 2018-08-08T01:11:13Z | 2018-08-08T01:11:13Z | 2018-08-08T01:11:13Z | e1db8194e8c1d7f361fd0c1c3fc1b91d6aa920e5 | 0 | 848ed0e0420d2e8c95a96b4cf73082da4c65d8f6 | fe5b6ea95a973534fe8a44907c0ea2449aae7602 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/358 | |||||
768796296 | PR_kwDOCGYnMM4t0uaI | 333 | closed | 0 | Add functionality to read Parquet files. | Florents-Tselai 2118708 | I needed this for a project of mine, and I thought it'd be useful to have it in sqlite-utils (It's also mentioned in #248 ). The current implementation works (data is read & data types are inferred correctly. I've added a single straightforward test case, but @simonw please let me know if there are any non-obvious flags/combinations I should test too. | 2021-10-28T23:43:19Z | 2021-11-25T19:47:35Z | 2021-11-25T19:47:35Z | eda2b1f8d2670c6ca8512e3e7c0150866bd0bdc6 | 0 | 50ec2e49dee3b09a48a7aef55eceaa3f752a52e7 | fda4dad23a0494890267fbe8baf179e2b56ee914 | NONE | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/333 | |||||
774610166 | PR_kwDOCGYnMM4uK5z2 | 337 | closed | 0 | Default values for `--attach` and `--param` options | urbas 771193 | It seems that `click` 8.x uses `None` as the default value for `multiple=True` options. This change makes the code forward-compatible with `click` 8.x. See this build failure for more info: https://hydra.nixos.org/build/156926608 | 2021-11-05T21:57:53Z | 2021-11-05T22:33:03Z | 2021-11-05T22:33:02Z | eb8bf28da1794638a5693043cd5268f506a674d3 | 0 | 095fc64c5399d75d44d304571a21293d06d817f0 | fda4dad23a0494890267fbe8baf179e2b56ee914 | NONE | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/337 | |||||
1503774871 | PR_kwDOBm6k_c5ZociX | 2173 | closed | 0 | click-default-group>=1.2.3 | simonw 9599 | Now available as a wheel: - https://github.com/click-contrib/click-default-group/issues/21 <!-- readthedocs-preview datasette start --> ---- :books: Documentation preview :books:: https://datasette--2173.org.readthedocs.build/en/2173/ <!-- readthedocs-preview datasette end --> | 2023-09-06T02:33:28Z | 2023-09-06T02:50:10Z | 2023-09-06T02:50:10Z | 2023-09-06T02:50:10Z | 05707aa16b5c6c39fbe48b3176b85a8ffe493938 | 0 | a481ebd495d0f87ebd6dcf360a9cff25a6e148d7 | fd083e37ec53e7e625111168d324a572344a3b19 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/2173 | ||||
295065796 | MDExOlB1bGxSZXF1ZXN0Mjk1MDY1Nzk2 | 544 | closed | 0 | --plugin-secret option | simonw 9599 | Refs #543 - [x] Zeit Now v1 support - [x] Solve escaping of ENV in Dockerfile - [x] Heroku support - [x] Unit tests - [x] Cloud Run support - [x] Documentation | 2019-07-06T22:18:20Z | 2019-07-08T02:06:31Z | 2019-07-08T02:06:31Z | 2019-07-08T02:06:31Z | 973f8f139df6ad425354711052cfc2256de2e522 | Datasette 0.29 4471010 | 0 | ccf80604e931fba1893b5bab11de386fed82009e | fcfcae21e67cc15090942b1d2a47b5f016279337 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/544 | |||
513106026 | MDExOlB1bGxSZXF1ZXN0NTEzMTA2MDI2 | 1069 | closed | 0 | load_template() plugin hook | simonw 9599 | Refs #1042 | 2020-10-30T15:59:45Z | 2020-10-30T17:47:20Z | 2020-10-30T17:47:19Z | 2020-10-30T17:47:19Z | 81dea4b07ab2b6f4eaaf248307d2b588472054a1 | 0.51 6026070 | 0 | 92f3840882a24da29d0d4073e5ed9d77fce438fc | fcf43589eb6a1f1d0432772a639fd35711c48e0c | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/1069 | |||
1173049178 | PR_kwDOCGYnMM5F609a | 519 | closed | 0 | Fixes breaking DEFAULT values | rhoboro 13819005 | Fixes #509, Fixes #336 Thanks for the great library! I fixed a bug that `sqlite-utils transform` breaks DEFAULT values. All tests already present passed with no changes, and I added some tests for this PR. In #509 case, fixed here. ```shell $ sqlite3 test.db << EOF CREATE TABLE mytable ( col1 TEXT DEFAULT 'foo', col2 TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')) ) EOF $ sqlite3 test.db "SELECT sql FROM sqlite_master WHERE name = 'mytable';" CREATE TABLE mytable ( col1 TEXT DEFAULT 'foo', col2 TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')) ) $ sqlite3 test.db "INSERT INTO mytable DEFAULT VALUES; SELECT * FROM mytable;" foo|2022-12-21 01:15:39.669 $ sqlite-utils transform test.db mytable --rename col1 renamedcol1 $ sqlite3 test.db "SELECT sql FROM sqlite_master WHERE name = 'mytable';" CREATE TABLE "mytable" ( [renamedcol1] TEXT DEFAULT 'foo', [col2] TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')) # ← Non-String Value ) $ sqlite3 test.db "INSERT INTO mytable DEFAULT VALUES; SELECT * FROM mytable;" foo|2022-12-21 01:15:39.669 foo|2022-12-21 01:15:56.432 ``` And #336 case also fixed. Special values are described [here](https://www.sqlite.org/lang_createtable.html). > 3.2. The DEFAULT clause > ... A default value may also be one of the special case-independent keywords CURRENT_TIME, CURRENT_DATE or CURRENT_TIMESTAMP. ```shell $ echo 'create table bar (baz text, created_at timestamp default CURRENT_TIMESTAMP)' | sqlite3 foo.db $ sqlite3 foo.db SQLite version 3.39.5 2022-10-14 20:58:05 Enter ".help" for usage hints. sqlite> .schema bar CREATE TABLE bar (baz text, created_at timestamp default CURRENT_TIMESTAMP); sqlite> .exit $ sqlite-utils transform foo.db bar --column-order baz $ sqlite3 foo.db SQLite version 3.39.5 2022-10-14 20:58:05 Enter ".help" for usage hints. sqlite> .schema bar CREATE TABLE IF NOT EXISTS "bar" ( [baz] TEXT, [created_at] FLOAT DEFAULT CURRENT_TIMESTAMP ); sqlite> .exit $ sqlite… | 2022-12-21T01:27:52Z | 2023-05-08T21:13:37Z | 2023-05-08T21:13:37Z | 2023-05-08T21:13:37Z | 6500fed8b2085869b9714ce3a08c30f61dc829ad | 0 | 5e5c262fab69eb3c470afa57fc52d3d7d8beee7a | fc221f9b62ed8624b1d2098e564f525c84497969 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/519 | ||||
1234321667 | PR_kwDOCGYnMM5JkkED | 526 | closed | 0 | Fix repeated calls to `Table.convert()` | mcarpenter 167893 | Fixes #525. All tests pass. There's perhaps a better way to name lambdas? There could be a collision if a caller passes a function with name like `lambda_123456`. SQLite [documentation](https://www.sqlite.org/appfunc.html) is a little, ah, lite on function name specs. If there is a character that can be used in place of underscore in a SQLite function name that is not permitted in a Python function identifier then that could be a good way to prevent accidental collisions. (I tried dash, colon, dot, no joy). Otherwise, there is little chance of this happening and if it should happen the risk is mitigated by now throwing an exception in the case of a (name, arity) collision without `replace=True`. <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--526.org.readthedocs.build/en/526/ <!-- readthedocs-preview sqlite-utils end --> | 2023-02-09T00:14:49Z | 2023-05-08T21:56:05Z | 2023-05-08T21:53:58Z | 2023-05-08T21:53:58Z | 02f5c4d69d7b4baebde015c56e5bc62923f33314 | 0 | 486e0cc1cd67e98c22d1f125403144cdedfa3d58 | fc221f9b62ed8624b1d2098e564f525c84497969 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/526 | ||||
1235909998 | PR_kwDOCGYnMM5Jqn1u | 528 | closed | 0 | Enable `Table.convert()` on falsey values | mcarpenter 167893 | Fixes #527 <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--528.org.readthedocs.build/en/528/ <!-- readthedocs-preview sqlite-utils end --> | 2023-02-10T00:04:09Z | 2023-05-08T21:08:23Z | 2023-05-08T21:08:23Z | 279fb2c85c6b3fc7b593aaf4245bd3a038bff5f0 | 0 | a09df3844ab91b70cebb7b888fc07cb21dffd01c | fc221f9b62ed8624b1d2098e564f525c84497969 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/528 | |||||
181600926 | MDExOlB1bGxSZXF1ZXN0MTgxNjAwOTI2 | 204 | closed | 0 | Initial units support | russss 45057 | Add support for specifying units for a column in metadata.json and rendering them on display using [pint](https://pint.readthedocs.io/en/latest/). Example table metadata: ```json "license_frequency": { "units": { "frequency": "Hz", "channel_width": "Hz", "height": "m", "antenna_height": "m", "azimuth": "degrees" } } ``` [Example result](https://wtr-api.herokuapp.com/wtr-663ea99/license_frequency/1) This works surprisingly well! I'd like to add support for using units when querying but this is PR is pretty usable as-is. (Pint doesn't seem to support decibels though - it thinks they're decibytes - which is an annoying omission.) (ref ticket #203) | 2018-04-13T21:32:49Z | 2018-04-14T09:44:33Z | 2018-04-14T03:32:54Z | 2018-04-14T03:32:54Z | ec6abc81e433c9bac1b9f085111785fc227e9e34 | 0 | 67c20a98a0cbb59a10247a49320c2feb7d0b1b41 | fb988ace7c7e2bee5ac142a0eab22431d0675a77 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/204 | ||||
421491810 | MDExOlB1bGxSZXF1ZXN0NDIxNDkxODEw | 768 | closed | 0 | Use dirs_exist_ok=True | simonw 9599 | Refs #744 | 2020-05-21T17:53:44Z | 2020-05-27T20:21:56Z | 2020-05-21T17:53:51Z | 2020-05-21T17:53:51Z | cee671a58f417f827d1735b1abaa40716534ea67 | Datasette 0.43 5471110 | 0 | f2e0a558238a34dc482803762de2509474a178c6 | faea5093b865031f650da7da6539430f732f511a | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/768 | |||
154246816 | MDExOlB1bGxSZXF1ZXN0MTU0MjQ2ODE2 | 145 | closed | 0 | Fix pytest version conflict | simonw 9599 | https://travis-ci.org/simonw/datasette/jobs/305929426 pkg_resources.VersionConflict: (pytest 3.2.1 (/home/travis/virtualenv/python3.5.3/lib/python3.5/site-packages), Requirement.parse('pytest==3.2.3')) | 2017-11-22T20:15:34Z | 2017-11-22T20:17:54Z | 2017-11-22T20:17:52Z | 2017-11-22T20:17:52Z | f96e55bce55d26c4d5b198edc536e1b8e9bbea43 | 0 | e319478c4a34fb5afbff2b2a8c3b9ef9f859bb10 | fa8eb0bf1b113ab17ede9cd107b7c3bd5cde39c3 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/145 | ||||
687298112 | MDExOlB1bGxSZXF1ZXN0Njg3Mjk4MTEy | 1392 | closed | 0 | Update deploying.rst | aslakr 80737 | Use same base url for Apache as in the example | 2021-07-11T08:43:19Z | 2021-07-13T17:42:31Z | 2021-07-13T17:42:27Z | 2021-07-13T17:42:27Z | 4054e96a3914e821d0880a40a7284aaa9db1eaaa | 0 | f57a8ab0905bb85a9334fe4bf87e2cd736c78cbb | f83c84fd51d144036924ae77d99f12b0a69e7e6f | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1392 | ||||
687304242 | MDExOlB1bGxSZXF1ZXN0Njg3MzA0MjQy | 1393 | closed | 0 | Update deploying.rst | aslakr 80737 | Example on how to use Unix domain socket option on Apache. Not testet. (Usually I would have used [`ProxyPassReverse`](https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreverse) in combination with `ProxyPass` , i.e. ```apache ProxyPass /my-datasette/ http://127.0.0.1:8009/my-datasette/ ProxyPassReverse /my-datasette/ http://127.0.0.1:8009/my-datasette/ ``` and ```apache ProxyPass /my-datasette/ unix:/tmp/datasette.sock|http://localhost/my-datasette/ ProxyPassReverse /my-datasette/ unix:/tmp/datasette.sock|http://localhost/my-datasette/ ``` ) | 2021-07-11T09:32:16Z | 2021-07-13T18:32:49Z | 2021-07-13T18:32:49Z | 2021-07-13T18:32:49Z | d71cac498138ddd86f18607b9043e70286ea884a | 0 | 1bbb577e9e10e0225ab885d72defcbf6517cc096 | f83c84fd51d144036924ae77d99f12b0a69e7e6f | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1393 | ||||
445023326 | MDExOlB1bGxSZXF1ZXN0NDQ1MDIzMzI2 | 118 | closed | 0 | Add insert --truncate option | tsibley 79913 | Deletes all rows in the table (if it exists) before inserting new rows. SQLite doesn't implement a TRUNCATE TABLE statement but does optimize an unqualified DELETE FROM. This can be handy if you want to refresh the entire contents of a table but a) don't have a PK (so can't use --replace), b) don't want the table to disappear (even briefly) for other connections, and c) have to handle records that used to exist being deleted. Ideally the replacement of rows would appear instantaneous to other connections by putting the DELETE + INSERT in a transaction, but this is very difficult without breaking other code as the current transaction handling is inconsistent and non-systematic. There exists the possibility for the DELETE to succeed but the INSERT to fail, leaving an empty table. This is not much worse, however, than the current possibility of one chunked INSERT succeeding and being committed while the next chunked INSERT fails, leaving a partially complete operation. | 2020-07-06T21:58:40Z | 2020-07-08T17:26:21Z | 2020-07-08T17:26:21Z | 2020-07-08T17:26:21Z | ae4593316ccf5e42ad26f27033193834a7e696c8 | 0 | 332f7d770b84734dbed4842ab3ed24ee5b687889 | f8277d0fb9c05a88a9ff01d996e31d55f0f0a645 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/118 | ||||
277524072 | MDExOlB1bGxSZXF1ZXN0Mjc3NTI0MDcy | 458 | closed | 0 | setup: add tests to package exclusion | hellerve 7725188 | This PR fixes #456 by adding `tests` to the package exclusion list. Cheers | 2019-05-09T19:47:21Z | 2020-07-21T01:14:42Z | 2019-05-10T01:54:51Z | 2019-05-10T01:54:51Z | 9f8d9fe262866ff3463f8e61214dcc6897bd5a9c | 0 | 9c65ff1ba8c855e4ade5bc7ae29a69215b3979d0 | f825e2012109247fa246e2b938f8174069e574f1 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/458 | ||||
369394043 | MDExOlB1bGxSZXF1ZXN0MzY5Mzk0MDQz | 80 | closed | 0 | on_create mechanism for after table creation | simonw 9599 | I need this for `geojson-to-sqlite`, in particular https://github.com/simonw/geojson-to-sqlite/issues/6 | 2020-01-31T03:38:48Z | 2020-01-31T05:08:04Z | 2020-01-31T05:08:04Z | e6dc95d19348e72b28b42e73a18737cb2e4563e0 | 0 | 45bf0c25492c276bde0b85868ffb55f169375bd7 | f7289174e66ae4d91d57de94bbd9d09fabf7aff4 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/80 | |||||
339742432 | MDExOlB1bGxSZXF1ZXN0MzM5NzQyNDMy | 630 | closed | 0 | Use python:3.8 base Docker image | simonw 9599 | Closes #629 | 2019-11-12T06:02:37Z | 2019-11-12T06:03:10Z | 2019-11-12T06:03:10Z | 2019-11-12T06:03:10Z | d977fbadf70a96bf2eea1407d01f99d98e092dec | 0 | 53180ec09483bd4eef00346a39b302aeb3039e7d | f554be39fc14ddc18921ca29d3920d55aad03d46 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/630 | ||||
664072046 | MDExOlB1bGxSZXF1ZXN0NjY0MDcyMDQ2 | 1370 | closed | 0 | Ensure db.path is a string before trying to insert into internal database | eyeseast 25778 | Fixes #1365 This is the simplest possible fix, with a test that will fail without it. There are a bunch of places where `db.path` is getting converted to and from a `Path` type, so this fix errs on the side of calling `str(db.path)` right before it's inserted. | 2021-06-08T01:16:48Z | 2021-06-21T15:57:39Z | 2021-06-21T15:57:39Z | 2021-06-21T15:57:39Z | a6c55afe8c82ead8deb32f90c9324022fd422324 | 0 | 2de712e439097de1d31f00db312cb87764642a87 | f4c5777c7e4ed406313583de09a3bf746552167f | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1370 | ||||
334448258 | MDExOlB1bGxSZXF1ZXN0MzM0NDQ4MjU4 | 609 | closed | 0 | Update to latest black | simonw 9599 | 2019-10-30T18:42:35Z | 2019-10-30T18:49:01Z | 2019-10-30T18:49:01Z | 2019-10-30T18:49:01Z | 5dd4d2b2d3abcfd507a6df47e7c2fbad3c552fd8 | 0 | 6f57e5e77bac29ac88d51271fd0c785859a820ce | f4c0830529a9513a83437a9e1550bbe27ebc5c64 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/609 | |||||
501791663 | MDExOlB1bGxSZXF1ZXN0NTAxNzkxNjYz | 10 | closed | 0 | Update utils.py to fix sqlite3.OperationalError | mattiaborsoi 29426418 | Fixes the errors: - sqlite3.OperationalError: table posts has no column named text - sqlite3.OperationalError: table photos has no column named hasSticker That will cause sqlite-utils to notice if there's a missing column and add it. As recommended by @simonw | 2020-10-12T20:17:53Z | 2020-10-12T20:25:10Z | 2020-10-12T20:25:09Z | 2020-10-12T20:25:09Z | a5a2b5feb56fef4f2b627699b7d628ee9d2d63db | 0 | c7bdb0207708a9eb40ba095039f0918fd103b176 | f4a82633da927cde672c9d9af92930bfca2e3ddf | CONTRIBUTOR | swarm-to-sqlite 205429375 | https://github.com/dogsheep/swarm-to-sqlite/pull/10 | ||||
815164865 | PR_kwDOCGYnMM4wlm3B | 361 | closed | 0 | --lines and --text and --convert and --import | simonw 9599 | Refs #356 Still TODO: - [x] Get `--lines` working, with tests - [x] Get `--text` working, with tests - [x] Get regular JSON import working with `--convert` with tests - [x] Get `--lines` working with `--convert` with tests - [x] Get `--text` working with `--convert` with tests - [x] Get `--csv` and `--tsv` import working with `--convert` with tests - [x] Get `--nl` working with `--convert` with tests - [x] Documentation for all of the above | 2022-01-06T01:49:44Z | 2022-01-06T06:37:03Z | 2022-01-06T06:24:54Z | 2022-01-06T06:24:54Z | 413f8ed754e38d7b190de888c85fe8438336cb11 | 0 | b7f0b88d49032a053f0de2dbba356ee1f3b949c0 | f3fd8613113d21d44238a6ec54b375f5aa72c4e0 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/361 | ||||
300286535 | MDExOlB1bGxSZXF1ZXN0MzAwMjg2NTM1 | 45 | closed | 0 | Implemented table.lookup(...), closes #44 | simonw 9599 | 2019-07-23T13:03:30Z | 2019-07-23T13:07:00Z | 2019-07-23T13:07:00Z | 2019-07-23T13:07:00Z | 580502431614d3653c93249988290265f3163d4b | 0 | c0852ce018425450d6c040040f32729d41ff635c | f3a4c3d3ee6475a6caf3c9606656dbaf1df020b7 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/45 | |||||
357640186 | MDExOlB1bGxSZXF1ZXN0MzU3NjQwMTg2 | 6 | closed | 0 | don't break if source is missing | mfa 78035 | broke for me. very old checkins in 2010 had no source set. | 2019-12-29T10:46:47Z | 2020-03-28T02:28:11Z | 2020-03-28T02:28:11Z | 2020-03-28T02:28:11Z | d3c4ab2848ea606417150f377a82e66ca7887c54 | 0 | a41b5bcd63012f64fe6746825d7101cc3d071483 | f2c89dd613fb8a7f14e5267ccc2145463b996190 | CONTRIBUTOR | swarm-to-sqlite 205429375 | https://github.com/dogsheep/swarm-to-sqlite/pull/6 | ||||
296735320 | MDExOlB1bGxSZXF1ZXN0Mjk2NzM1MzIw | 557 | closed | 0 | Get tests running on Windows using Travis CI | simonw 9599 | Refs #511 | 2019-07-11T16:36:57Z | 2021-07-10T23:39:48Z | 2021-07-10T23:39:48Z | cddb9a9fecfa25147d80df05f1a6d6e1686ca30d | 0 | 47b5ab43be87217c4e40ad93b8aa2e9639fa371f | f2006cca80040871439055ae6ccbc14e589bdf4b | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/557 | |||||
297243073 | MDExOlB1bGxSZXF1ZXN0Mjk3MjQzMDcz | 559 | closed | 0 | Bump to uvicorn 0.8.4 | simonw 9599 | https://github.com/encode/uvicorn/commits/0.8.4 Query strings will now be included in log files: https://github.com/encode/uvicorn/pull/384 | 2019-07-12T22:30:29Z | 2019-07-13T22:34:58Z | 2019-07-13T22:34:58Z | 2019-07-13T22:34:58Z | d224ee2c98ac39c2c6e21a0ac0c62e5c3e1ccd11 | 0 | 029e3d53634cc38690d5b56427a3c87851a61b09 | f2006cca80040871439055ae6ccbc14e589bdf4b | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/559 | ||||
521287994 | MDExOlB1bGxSZXF1ZXN0NTIxMjg3OTk0 | 203 | open | 0 | changes to allow for compound foreign keys | drkane 1049910 | Add support for compound foreign keys, as per issue #117 Not sure if this is the right approach. In particular I'm unsure about: - the new `ForeignKey` class, which replaces the namedtuple in order to ensure that `column` and `other_column` are forced into tuples. The class does the job, but doesn't feel very elegant. - I haven't rewritten `guess_foreign_table` to take account of multiple columns, so it just checks for the first column in the foreign key definition. This isn't ideal. - I haven't added any ability to the CLI to add compound foreign keys, it's only in the python API at the moment. The PR also contains a minor related change that columns and tables are always quoted in foreign key definitions. | 2020-11-16T00:30:10Z | 2023-01-25T18:47:18Z | 0507a9464314f84e9e58b1931c583df51d757d7c | 0 | 5e43e31c2b9bcf6b5d1460b0f848fed019ed42a6 | f1277f638f3a54a821db6e03cb980adad2f2fa35 | FIRST_TIME_CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/203 | ||||||
294400446 | MDExOlB1bGxSZXF1ZXN0Mjk0NDAwNDQ2 | 539 | closed | 0 | Secret plugin configuration options | simonw 9599 | Refs #538 | 2019-07-04T03:21:20Z | 2019-07-04T05:36:45Z | 2019-07-04T05:36:45Z | 2019-07-04T05:36:45Z | a2d45931935f6bb73605a94afedf9e78308c95d6 | 0 | fd6164b03ebe450a9a00df2e5be2dc7bbfbd9a3f | f0d32da0a9af87bcb15e34e35424f0c0053be83a | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/539 | ||||
872242672 | PR_kwDODEm0Qs4z_V3w | 65 | open | 0 | Update Twitter dev link, clarify apps vs projects | rixx 2657547 | Twitter pushes you heavily towards v2 projects instead of v1 apps – I know the README mentions v1 API compatibility at the top, but I still nearly got turned around here. | 2022-03-05T11:56:08Z | 2022-03-05T11:56:08Z | 765a450845ba26fac102d9154980cd936399546c | 0 | b7cfe9dcb7dbccc7ba8171cfe74f19227c4351ec | f09d611782a8372cfb002792dfa727325afb4db6 | FIRST_TIME_CONTRIBUTOR | twitter-to-sqlite 206156866 | https://github.com/dogsheep/twitter-to-sqlite/pull/65 | ||||||
943518450 | PR_kwDODEm0Qs44PPLy | 66 | open | 0 | Ageinfo workaround | ashanan 11887 | I'm not sure if this is due to a new format or just because my ageinfo file is blank, but trying to import an archive would crash when it got to that file. This PR adds a guard clause in the `ageinfo` transformer and sets a default value that doesn't throw an exception. Seems likely to be the same issue mentioned by danp in https://github.com/dogsheep/twitter-to-sqlite/issues/54, my ageinfo file looks the same. Added that same ageinfo file to the test archive as well to help confirm my workaround didn't break anything. Let me know if you want any changes! | 2022-05-21T21:08:29Z | 2022-05-21T21:09:16Z | c22e8eba634b70e914de9f72e452b1ebea55c6ef | 0 | 75ae7c94120d14083217bc76ebd603b396937104 | f09d611782a8372cfb002792dfa727325afb4db6 | FIRST_TIME_CONTRIBUTOR | twitter-to-sqlite 206156866 | https://github.com/dogsheep/twitter-to-sqlite/pull/66 | ||||||
1179812287 | PR_kwDODEm0Qs5GUoG_ | 67 | open | 0 | Add support for app-only bearer tokens | sometimes-i-send-pull-requests 26161409 | Previously, twitter-to-sqlite only supported OAuth1 authentication, and the token must be on behalf of a user. However, Twitter also supports application-only bearer tokens, documented here: https://developer.twitter.com/en/docs/authentication/oauth-2-0/bearer-tokens This PR adds support to twitter-to-sqlite for using application-only bearer tokens. To use, the auth.json file just needs to contain a "bearer_token" key instead of "api_key", "api_secret_key", etc. | 2022-12-28T23:31:20Z | 2022-12-28T23:31:20Z | 7825cd68047088cbdc9666586f1af9b7e1fa88c2 | 0 | 52050d06eeb85f3183b086944b7b75ae758096cd | f09d611782a8372cfb002792dfa727325afb4db6 | FIRST_TIME_CONTRIBUTOR | twitter-to-sqlite 206156866 | https://github.com/dogsheep/twitter-to-sqlite/pull/67 | ||||||
1179812491 | PR_kwDODEm0Qs5GUoKL | 68 | open | 0 | Archive: Import mute table | sometimes-i-send-pull-requests 26161409 | 2022-12-28T23:32:06Z | 2022-12-28T23:32:06Z | 47d4d3bda6d4123f58d8dbd634f9f146d97b037e | 0 | e1cd68ea0244c4689a3c49799c6b24371cdc4978 | f09d611782a8372cfb002792dfa727325afb4db6 | FIRST_TIME_CONTRIBUTOR | twitter-to-sqlite 206156866 | https://github.com/dogsheep/twitter-to-sqlite/pull/68 | |||||||
1179812620 | PR_kwDODEm0Qs5GUoMM | 69 | open | 0 | Archive: Import new tweets table name | sometimes-i-send-pull-requests 26161409 | Given the code here, it seems like in the past this file was named "tweet.js". In recent exports, it's named "tweets.js". The archive importer needs to be modified to take this into account. Existing logic is reused for importing this table. (However, the resulting table name will be different, matching the different file name -- archive_tweets, rather than archive_tweet). | 2022-12-28T23:32:44Z | 2022-12-28T23:32:44Z | 1a8c02a8d349c8fd4074139a6a3eed552676bdf3 | 0 | 11e8fa64ca30cebde047a4268e65f376c42e2b60 | f09d611782a8372cfb002792dfa727325afb4db6 | FIRST_TIME_CONTRIBUTOR | twitter-to-sqlite 206156866 | https://github.com/dogsheep/twitter-to-sqlite/pull/69 | ||||||
1179812730 | PR_kwDODEm0Qs5GUoN6 | 70 | open | 0 | Archive: Import Twitter Circle data | sometimes-i-send-pull-requests 26161409 | 2022-12-28T23:33:09Z | 2022-12-28T23:33:09Z | 1d2683101571550adf4a3b7bdf8e9ffbd8b77b61 | 0 | cc80cb31a9afb9a50295d6202f509e5b500607a0 | f09d611782a8372cfb002792dfa727325afb4db6 | FIRST_TIME_CONTRIBUTOR | twitter-to-sqlite 206156866 | https://github.com/dogsheep/twitter-to-sqlite/pull/70 | |||||||
1179812838 | PR_kwDODEm0Qs5GUoPm | 71 | open | 0 | Archive: Fix "ni devices" typo in importer | sometimes-i-send-pull-requests 26161409 | 2022-12-28T23:33:31Z | 2022-12-28T23:33:31Z | 7905dbd6e36bcabcfd9106c70ebb36ecf9e38260 | 0 | 0d3c62e8ba6e545785069cc0ffc8dc1bad03db80 | f09d611782a8372cfb002792dfa727325afb4db6 | FIRST_TIME_CONTRIBUTOR | twitter-to-sqlite 206156866 | https://github.com/dogsheep/twitter-to-sqlite/pull/71 | |||||||
313384926 | MDExOlB1bGxSZXF1ZXN0MzEzMzg0OTI2 | 571 | closed | 0 | detect_fts now works with alternative table escaping | simonw 9599 | Fixes #570 | 2019-09-03T00:23:39Z | 2019-09-03T00:32:28Z | 2019-09-03T00:32:28Z | 2019-09-03T00:32:28Z | 2dc5c8dc259a0606162673d394ba8cc1c6f54428 | 0 | a85239f69261c10f1a9f90514c8b5d113cb94585 | f04deebec4f3842f7bd610cd5859de529f77d50e | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/571 | ||||
1067479608 | PR_kwDOBm6k_c4_oHI4 | 1820 | closed | 0 | [SPIKE] Don't truncate query CSVs | fgregg 536941 | Relates to #526 This is a minimal set of changes needed for having *query* CSVs attempt to download all the rows. What's good about it is the minimalism. What's bad about it: 1. We are abusing the `_size` argument to indicate we don't want truncation, which isn't the most obvious thing. Additionally, there are various checks that make sure the "_size" URL parameter is a positive integer, which we are relying on to prevent overloading. 2. The default CSV on a table page will use the max_returned_rows argument. Changing this could be a breaking change, since that's currently a place that has some facilities for pagination. Additionally, i think there's a limit under the hood somewhere which if we removed could lead to sql timeouts 3. There are similar reasons for leaving the current streaming method alone, as the current methods could allow for downloading very large files that could have a sql timeout if we tried to get them in one go. <!-- readthedocs-preview datasette start --> ---- :books: Documentation preview :books:: https://datasette--1820.org.readthedocs.build/en/1820/ <!-- readthedocs-preview datasette end --> | 2022-09-26T17:27:01Z | 2022-10-07T16:12:17Z | 2022-10-07T16:12:17Z | bd62037d5cdf72c06fd4d78da162cbc1526c1ab6 | 1 | 9bead2a95b74f3a2e0be2a9f1cb1f624aec22c2f | eff112498ecc499323c26612d707908831446d25 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1820 | |||||
1079714826 | PR_kwDOBm6k_c5AWyQK | 1837 | closed | 0 | Make hash and size a lazy property | fgregg 536941 | Many apologies, @simonw. My previous PR #1835 did not really solve the problem because the name of the database is often not known to database object in the init method. I took a cue from how you dealt with this issue and made hash a lazy property and did something similar with size. <!-- readthedocs-preview datasette start --> ---- :books: Documentation preview :books:: https://datasette--1837.org.readthedocs.build/en/1837/ <!-- readthedocs-preview datasette end --> | 2022-10-06T23:51:22Z | 2022-10-27T20:51:21Z | 2022-10-27T20:51:20Z | 2022-10-27T20:51:20Z | b912d92b651c4f0b5137da924d135654511f0fe0 | 0 | c12447e484036ace9a685bd04b9f0e1fa66541c8 | eff112498ecc499323c26612d707908831446d25 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1837 | ||||
1079769381 | PR_kwDOBm6k_c5AW_kl | 1838 | closed | 0 | Open Datasette link in new tab | ocdtrekkie 4399499 | This is technically a Sandstorm-specific fix (as external links do not work inside the grain frame), however, I think it is an improvement to the upstream project, so I wanted to propose it here rather than patching it in our package. There's much opinions on the Internet about whether external links should open in a new tab by default or not, but I'd argue very few people who might click a "powered by" link intend to complete their interaction with the source page (a Datasette). And furthermore, users may be working within various queries or loading visualizations (navigating away when trying to plot a million GPS coordinates pretty much just resets your progress!), so linking away within the tab might be a frustrating or destructive act to one's work, even inadvertently. original report: https://github.com/ocdtrekkie/datasette-sandstorm/issues/1 <!-- readthedocs-preview datasette start --> ---- :books: Documentation preview :books:: https://datasette--1838.org.readthedocs.build/en/1838/ <!-- readthedocs-preview datasette end --> | 2022-10-07T01:12:20Z | 2022-10-07T16:28:41Z | 2022-10-07T02:01:07Z | 9a7745ceef270893fa76a10ee70546f62d5110bd | 0 | 7f2a3376c348e9dd9ea926ab94ae6b610194e6c1 | eff112498ecc499323c26612d707908831446d25 | NONE | datasette 107914493 | https://github.com/simonw/datasette/pull/1838 | |||||
275275610 | MDExOlB1bGxSZXF1ZXN0Mjc1Mjc1NjEw | 443 | closed | 0 | Pass view_name to extra_body_script hook | russss 45057 | At the moment it's not easy to tell whether the hook is being called in (for example) the row or table view, as in both cases the `database` and `table` parameters are provided. This passes the `view_name` added in #441 to the `extra_body_script` hook. | 2019-05-02T08:38:36Z | 2019-05-03T13:12:20Z | 2019-05-03T13:12:20Z | 2019-05-03T13:12:20Z | bf229c9bd88179c8ec16bd65fd4fb28ab4241c2e | 0 | 83b6b82d4787b30d34eb26c22ad1ff9c5c118134 | efc93b8ab5a21e3802f75f08d5e41409f5684b5d | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/443 | ||||
275281307 | MDExOlB1bGxSZXF1ZXN0Mjc1MjgxMzA3 | 444 | closed | 0 | Add a max-line-length setting for flake8 | russss 45057 | This stops my automatic editor linting from flagging lines which are too long. It's been lingering in my checkout for ages. 160 is an arbitrary large number - we could alter it if we have any opinions (but I find the line length limit to be my least favourite part of PEP8). | 2019-05-02T08:58:57Z | 2019-05-04T09:44:48Z | 2019-05-03T13:11:28Z | 2019-05-03T13:11:28Z | 470cf0b05d4fda0d2563f81c7e32af13fe346ccc | 0 | 4f0d265951d7e95920298b46eff39bb9cc783984 | efc93b8ab5a21e3802f75f08d5e41409f5684b5d | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/444 | ||||
275558612 | MDExOlB1bGxSZXF1ZXN0Mjc1NTU4NjEy | 445 | closed | 0 | Extract facet code out into a new plugin hook, closes #427 | simonw 9599 | Datasette previously only supported one type of faceting: exact column value counting. With this change, faceting logic is extracted out into one or more separate classes which can implement other patterns of faceting - this is discussed in #427, but potential upcoming facet types include facet-by-date, facet-by-JSON-array, facet-by-many-2-many and more. A new plugin hook, register_facet_classes, can be used by plugins to add in additional facet classes. Each class must implement two methods: suggest(), which scans columns in the table to decide if they might be worth suggesting for faceting, and facet_results(), which executes the facet operation and returns results ready to be displayed in the UI. | 2019-05-03T00:02:41Z | 2019-05-03T18:17:18Z | 2019-05-03T00:11:27Z | 2019-05-03T00:11:27Z | ea66c45df96479ef66a89caa71fff1a97a862646 | 0 | 1b47d4d8736627c260eb4e8303e552b0e9620a01 | efc93b8ab5a21e3802f75f08d5e41409f5684b5d | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/445 | ||||
181731956 | MDExOlB1bGxSZXF1ZXN0MTgxNzMxOTU2 | 210 | closed | 0 | Start of the plugin system, based on pluggy | simonw 9599 | Refs #14 | 2018-04-16T00:51:30Z | 2018-04-16T00:56:16Z | 2018-04-16T00:56:16Z | 2018-04-16T00:56:16Z | 33c7c53ff87c25445c68088ede49d062d9c31fe8 | 0 | d75e57060d9ef4ef6ebab3600e542885b7467272 | efbb4e83374a2c795e436c72fa79f70da72309b8 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/210 | ||||
490607949 | MDExOlB1bGxSZXF1ZXN0NDkwNjA3OTQ5 | 161 | closed | 0 | table.transform() method | simonw 9599 | Refs #114 - [x] Ability to change the primary key - [x] Support for changing default value for columns - [x] Support for changing `NOT NULL` status of columns - [x] Support for copying existing foreign keys and removing them - <strike>Support for `conversions=` parameter</strike> - [x] Detailed documentation - [x] `PRAGMA foreign_keys` stuff | 2020-09-21T23:16:59Z | 2020-09-22T07:48:24Z | 2020-09-22T04:20:02Z | 2020-09-22T04:20:02Z | 987dd123f2ac43c5ab66d69e59d454fe09660606 | 2.20 5897911 | 0 | dc3eb9c313502832c07f4de889aa60c373f45b52 | ef882986d07f157b6bcc6be3d7b64270fda3e523 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/161 | |||
707490789 | MDExOlB1bGxSZXF1ZXN0NzA3NDkwNzg5 | 312 | closed | 0 | Add reference page to documentation using Sphinx autodoc | simonw 9599 | Refs #311. | 2021-08-10T16:59:17Z | 2021-08-10T23:09:32Z | 2021-08-10T23:09:28Z | 2021-08-10T23:09:28Z | 6155da72c8939b5d9bdacb7853e5e8d1767ce1d5 | 0 | 43bc06481783c3cfcee70c0cb541a686e8894adb | ee469e3122d6f5973ec2584c1580d930daca2e7c | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/312 | ||||
1359311359 | PR_kwDOBm6k_c5RBXH_ | 2077 | closed | 0 | Bump furo from 2023.3.27 to 2023.5.20 | dependabot[bot] 49699333 | Bumps [furo](https://github.com/pradyunsg/furo) from 2023.3.27 to 2023.5.20. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pradyunsg/furo/blob/main/docs/changelog.md">furo's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <!-- raw HTML omitted --> <h2>2023.05.20 -- Unassuming Ultramarine</h2> <ul> <li>✨ Add support for Sphinx 7.</li> <li>Drop support for Sphinx 5.</li> <li>Improve the screen-reader label for sidebar collapse.</li> <li>Make it easier to create derived themes from Furo.</li> <li>Bump all JS dependencies (NodeJS and npm packages).</li> </ul> <h2>2023.03.27 -- Tasty Tangerine</h2> <ul> <li>Regenerate with newer version of sphinx-theme-builder, to fix RECORD hashes.</li> <li>Add missing class to Font Awesome examples</li> </ul> <h2>2023.03.23 -- Sassy Saffron</h2> <ul> <li>Update Python version classifiers.</li> <li>Increase the icon size in mobile header.</li> <li>Increase admonition title bg opacity.</li> <li>Change the default API background to transparent.</li> <li>Transition the API background change.</li> <li>Remove the "indent" of API entries which have a background.</li> <li>Break long inline code literals.</li> </ul> <h2>2022.12.07 -- Reverent Raspberry</h2> <ul> <li>✨ Add support for Sphinx 6.</li> <li>✨ Improve footnote presentation with docutils 0.18+.</li> <li>Drop support for Sphinx 4.</li> <li>Improve documentation about what the edit button does.</li> <li>Improve handling of empty-flexboxes for better print experience on Chrome.</li> <li>Improve styling for inline signatures.</li> <li>Replace the <code>meta</code> generator tag with a comment.</li> <li>Tweak labels with icons to prevent users selecting icons as text on touch.</li> </ul> <h2>2022.09.29 -- Quaint Quartz</h2> <ul> <li>Add ability to set arbitrary URLs for edit button.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pradyunsg/furo/commit/d2c9ca852542820632… | 2023-05-22T13:58:16Z | 2023-07-27T13:40:55Z | 2023-07-27T13:40:53Z | af7a446a5245f47704e787c8a22e21f2a5cd0301 | 0 | 9785c4f73e4bb15a2f407212cb664a8e4a46b6e0 | ede62036180993dbd9d4e5d280fc21c183cda1c3 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/2077 | |||||
543015825 | MDExOlB1bGxSZXF1ZXN0NTQzMDE1ODI1 | 31 | open | 0 | Update for Big Sur | RhetTbull 41546558 | Refactored out the SQL for extracting aesthetic scores to use osxphotos -- adds compatbility for Big Sur via osxphotos which has been updated for new table names in Big Sur. Have not yet refactored the SQL for extracting labels which is still compatible with Big Sur. | 2020-12-20T04:36:45Z | 2023-08-08T15:52:52Z | 0e571b07430024d4ce00d5e8ba28591cefd27d6f | 0 | 39c12f8cda206ad621ec9940cce538570513e764 | edc80a0d361006f478f2904a90bfe6c730ed6194 | CONTRIBUTOR | dogsheep-photos 256834907 | https://github.com/dogsheep/dogsheep-photos/pull/31 | ||||||
727390835 | MDExOlB1bGxSZXF1ZXN0NzI3MzkwODM1 | 36 | open | 0 | Correct naming of tool in readme | badboy 2129 | 2021-09-05T12:05:40Z | 2022-01-06T16:04:46Z | 358678c6b48072769f2985fe6be8fc5e54ed2e06 | 0 | bf26955c250e601a0d9e751311530940b704f81e | edc80a0d361006f478f2904a90bfe6c730ed6194 | FIRST_TIME_CONTRIBUTOR | dogsheep-photos 256834907 | https://github.com/dogsheep/dogsheep-photos/pull/36 | |||||||
153324301 | MDExOlB1bGxSZXF1ZXN0MTUzMzI0MzAx | 117 | closed | 0 | Don't prevent tabbing to `Run SQL` button | rgieseke 198537 | Mentioned in #115 Here you go! | 2017-11-17T15:27:50Z | 2017-11-19T20:30:24Z | 2017-11-18T00:53:43Z | 2017-11-18T00:53:43Z | 6d39429daa4655e3cf7a6a7671493292a20a30a1 | 0 | 7b4d00e87ed8ac931e6f5458599aece1a95d4e82 | eda848b37f8452dba7913583ef101f39d9b130ba | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/117 | ||||
716357982 | MDExOlB1bGxSZXF1ZXN0NzE2MzU3OTgy | 66 | open | 0 | Add --merged-by flag to pull-requests sub command | sarcasticadmin 30531572 | ## Description Proposing a solution to the API limitation for `merged_by` in pull_requests. Specifically the following called out in the readme: ``` Note that the merged_by column on the pull_requests table will only be populated for pull requests that are loaded using the --pull-request option - the GitHub API does not return this field for pull requests that are loaded in bulk. ``` This approach might cause larger repos to hit rate limits called out in https://github.com/dogsheep/github-to-sqlite/issues/51 but seems to work well in the repos I tested and included below. ## Old Behavior - Had to list out the pull-requests individually via multiple `--pull-request` flags ## New Behavior - `--merged-by` flag for getting 'merge_by' information out of pull-requests without having to specify individual PR numbers. # Testing Picking some repo that has more than one merger (datasette only has 1 😉 ) ``` $ github-to-sqlite pull-requests ./github.db opnsense/tools --merged-by $ echo "select id, url, merged_by from pull_requests;" | sqlite3 ./github.db 83533612|https://github.com/opnsense/tools/pull/39|1915288 102632885|https://github.com/opnsense/tools/pull/43|1915288 149114810|https://github.com/opnsense/tools/pull/57|1915288 160394495|https://github.com/opnsense/tools/pull/64|1915288 163308408|https://github.com/opnsense/tools/pull/67|1915288 169723264|https://github.com/opnsense/tools/pull/69|1915288 171381422|https://github.com/opnsense/tools/pull/72|1915288 179938195|https://github.com/opnsense/tools/pull/77|1915288 196233824|https://github.com/opnsense/tools/pull/82|1915288 215289964|https://github.com/opnsense/tools/pull/93| 219696100|https://github.com/opnsense/tools/pull/97|1915288 223664843|https://github.com/opnsense/tools/pull/99| 228446172|https://github.com/opnsense/tools/pull/103|1915288 238930434|https://github.com/opnsense/tools/pull/110|1915288 255507110|https://github.com/opnsense/tools/pull/119|1915288 255980675|https://github.com/opnsense/tools/pull/120… | 2021-08-20T00:57:55Z | 2021-09-28T21:50:31Z | 6b4276d9469e4579c81588ac9e3d128026d919a0 | 0 | a92a31d5d446022baeaf7f3c9ea107094637e64d | ed3752022e45b890af63996efec804725e95d0d4 | FIRST_TIME_CONTRIBUTOR | github-to-sqlite 207052882 | https://github.com/dogsheep/github-to-sqlite/pull/66 | ||||||
721686721 | MDExOlB1bGxSZXF1ZXN0NzIxNjg2NzIx | 67 | open | 0 | Replacing step ID key with step_id | jshcmpbll 16374374 | Workflows that have an `id` in any step result in the following error when running `workflows`: e.g.`github-to-sqlite workflows github.db nixos/nixpkgs` ```Traceback (most recent call last): File "/usr/local/bin/github-to-sqlite", line 8, in <module> sys.exit(cli()) File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1137, in __call__ return self.main(*args, **kwargs) File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1062, in main rv = self.invoke(ctx) File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1668, in invoke```Traceback (most recent call last): File "/usr/local/bin/github-to-sqlite", line 8, in <module> sys.exit(cli()) File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1137, in __call__ return self.main(*args, **kwargs) File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1062, in main rv = self.invoke(ctx) File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1668, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 763, in invoke return __callback(*args, **kwargs) File "/usr/local/lib/python3.8/dist-packages/github_to_sqlite/cli.py", line 601, in workflows utils.save_workflow(db, repo_id, filename, content) File "/usr/local/lib/python3.8/dist-packages/github_to_sqlite/utils.py", line 865, in save_workflow db["steps"].insert_all( File "/usr/local/lib/python3.8/dist-packages/sqlite_utils/db.py", line 2596, in insert_all self.insert_chunk( File "/usr/local/lib/python3.8/dist-packages/sqlite_utils/db.py", line 2378, in insert_chunk result = self.db.execute(query, params) File "/usr/local/lib/python3.8/dist-packages/sqlite_utils/db.py", line 419, in execute return self.conn.execute(sql, parameters) … | 2021-08-28T01:26:41Z | 2021-08-28T01:27:00Z | 9f73c9bf29dec9a1482d9af56b9fac271869585c | 0 | 9b5acceb25cf48b00e9c6c8293358b036440deb2 | ed3752022e45b890af63996efec804725e95d0d4 | FIRST_TIME_CONTRIBUTOR | github-to-sqlite 207052882 | https://github.com/dogsheep/github-to-sqlite/pull/67 | ||||||
747742034 | PR_kwDODFdgUs4skaNS | 68 | open | 0 | Add support for retrieving teams / members | philwills 68329 | Adds a method for retrieving all the teams within an organisation and all the members in those teams. The latter is stored as a join table `team_members` beteween `teams` and `users`. | 2021-10-01T15:55:02Z | 2021-10-01T15:59:53Z | f46e276c356c893370d5893296f4b69f08baf02c | 0 | cc838e87b1eb19b299f277a07802923104f35ce2 | ed3752022e45b890af63996efec804725e95d0d4 | FIRST_TIME_CONTRIBUTOR | github-to-sqlite 207052882 | https://github.com/dogsheep/github-to-sqlite/pull/68 | ||||||
153306882 | MDExOlB1bGxSZXF1ZXN0MTUzMzA2ODgy | 115 | closed | 0 | Add keyboard shortcut to execute SQL query | rgieseke 198537 | Very cool tool, thanks a lot! This PR adds a `Shift-Enter` short cut to execute the SQL query. I used CodeMirrors keyboard handling. | 2017-11-17T14:13:33Z | 2017-11-17T15:16:34Z | 2017-11-17T14:22:56Z | 2017-11-17T14:22:56Z | eda848b37f8452dba7913583ef101f39d9b130ba | 0 | bb514164e69400fc0be4e033c27f45f90b1ef651 | ed2b3f25beac720f14869350baacc5f62b065194 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/115 | ||||
181644805 | MDExOlB1bGxSZXF1ZXN0MTgxNjQ0ODA1 | 206 | closed | 0 | Fix sqlite error when loading rows with no incoming FKs | russss 45057 | This fixes `ERROR: conn=<sqlite3.Connection object at 0x10bbb9f10>, sql = 'select ', params = {'id': '1'}` caused by an invalid query loading incoming FKs when none exist. The error was ignored due to async but it still got printed to the console. | 2018-04-14T12:08:17Z | 2018-04-14T14:32:42Z | 2018-04-14T14:24:25Z | 2018-04-14T14:24:25Z | 1cc5161089e559c8b16049b20f7a5b3a43290c21 | 0 | 93b038e2469bee07d36ae8a943aab8b9d8610c1d | ec6abc81e433c9bac1b9f085111785fc227e9e34 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/206 | ||||
181647717 | MDExOlB1bGxSZXF1ZXN0MTgxNjQ3NzE3 | 207 | closed | 0 | Link foreign keys which don't have labels | russss 45057 | This renders unlabeled FKs as simple links. I can't see why this would cause any major problems. ![image](https://user-images.githubusercontent.com/45057/38768722-ea15a000-3fef-11e8-8664-ffd7aa4894ea.png) Also includes bonus fixes for two minor issues: * In foreign key link hrefs the primary key was escaped using HTML escaping rather than URL escaping. This broke some non-integer PKs. * Print tracebacks to console when handling 500 errors. | 2018-04-14T13:27:14Z | 2018-04-14T15:00:00Z | 2018-04-14T15:00:00Z | 2018-04-14T15:00:00Z | f2b940d6026677f6859d46a4f16fa402745d261d | 0 | d9858672da8f74e5530deead140e2e633e1c2627 | ec6abc81e433c9bac1b9f085111785fc227e9e34 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/207 | ||||
241418443 | MDExOlB1bGxSZXF1ZXN0MjQxNDE4NDQz | 392 | closed | 0 | Fix some regex DeprecationWarnings | simonw 9599 | 2018-12-29T02:10:28Z | 2018-12-29T02:22:28Z | 2018-12-29T02:22:28Z | 2018-12-29T02:22:28Z | a2bfcfc1b1c60dac3526364af17c2fa2f3d41a0a | 0 | d245982aedaf7c54bf41d60ea7f0e0cf419c2b2f | eac08f0dfc61a99e8887442fc247656d419c76f8 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/392 | |||||
475665984 | MDExOlB1bGxSZXF1ZXN0NDc1NjY1OTg0 | 142 | closed | 0 | insert_all(..., alter=True) should work for new columns introduced after the first 100 records | simonwiles 96218 | Closes #139. | 2020-08-28T22:22:57Z | 2020-08-30T07:28:23Z | 2020-08-28T22:30:14Z | 2020-08-28T22:30:14Z | 947bb7626fd1763608a470adf9cf5f156ef003e9 | 0 | 1b992c7c1e5855caa87c7939efad287052f446f3 | ea87c2b943fdd162c42a900ac0aea5ecc2f4b9d9 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/142 | ||||
679035847 | MDExOlB1bGxSZXF1ZXN0Njc5MDM1ODQ3 | 1386 | closed | 0 | Update asgiref requirement from <3.4.0,>=3.2.10 to >=3.2.10,<3.5.0 | dependabot[bot] 49699333 | Updates the requirements on [asgiref](https://github.com/django/asgiref) to permit the latest version. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/django/asgiref/blob/main/CHANGELOG.txt">asgiref's changelog</a>.</em></p> <blockquote> <h2>3.4.0 (2021-06-27)</h2> <ul> <li> <p>Calling sync_to_async directly from inside itself (which causes a deadlock when in the default, thread-sensitive mode) now has deadlock detection.</p> </li> <li> <p>asyncio usage has been updated to use the new versions of get_event_loop, ensure_future, wait and gather, avoiding deprecation warnings in Python 3.10. Python 3.6 installs continue to use the old versions; this is only for 3.7+</p> </li> <li> <p>sync_to_async and async_to_sync now have improved type hints that pass through the underlying function type correctly.</p> </li> <li> <p>All Websocket* types are now spelled WebSocket, to match our specs and the official spelling. The old names will work until release 3.5.0, but will raise deprecation warnings.</p> </li> <li> <p>The typing for WebSocketScope and HTTPScope's <code>extensions</code> key has been fixed.</p> </li> </ul> <h2>3.3.4 (2021-04-06)</h2> <ul> <li>The async_to_sync type error is now a warning due the high false negative rate when trying to detect coroutine-returning callables in Python.</li> </ul> <h2>3.3.3 (2021-04-06)</h2> <ul> <li>The sync conversion functions now correctly detect functools.partial and other wrappers around async functions on earlier Python releases.</li> </ul> <h2>3.3.2 (2021-04-05)</h2> <ul> <li> <p>SyncToAsync now takes an optional "executor" argument if you want to supply your own executor rather than using the built-in one.</p> </li> <li> <p>async_to_sync and sync_to_async now check their arguments are functions of the correct type.</p> </li> <li> <p>Raising CancelledError inside a SyncToAsync function no longer stops a future call from functioning.</p> </li> <li> <p>ThreadSensitive now provides context hooks/override options so it can be mad… | 2021-06-28T13:13:07Z | 2021-07-11T01:36:19Z | 2021-07-11T01:36:18Z | 2021-07-11T01:36:18Z | f83c84fd51d144036924ae77d99f12b0a69e7e6f | 0 | e974ed19b09500aecb62252fe7001234d4424ff9 | ea627baccf980d7d8ebc9e1ffff1fe34d556e56f | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1386 | ||||
1358282799 | PR_kwDOCGYnMM5Q9cAv | 549 | closed | 0 | TUI powered by Trogon | simonw 9599 | Refs: - #545 <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--549.org.readthedocs.build/en/549/ <!-- readthedocs-preview sqlite-utils end --> | 2023-05-21T17:55:42Z | 2023-05-21T18:42:00Z | 2023-05-21T18:41:56Z | 2023-05-21T18:41:56Z | 718b0cba9b32d97a41bcf9757c97fe1d058da81c | 0 | 948692a94b22852b3147abebac9d719b69320b57 | e8c5b042e49c627aefd620c8d4b1c84eb8677f73 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/549 | ||||
498104830 | MDExOlB1bGxSZXF1ZXN0NDk4MTA0ODMw | 994 | closed | 0 | Run tests against Python 3.9 | simonw 9599 | 2020-10-05T20:40:13Z | 2020-10-09T16:22:51Z | 2020-10-09T16:22:50Z | 2020-10-09T16:22:50Z | 6e091b14b651d67e0ff41a353d36bbeb1d8ba235 | 0 | ecba5d257ef4218a98b5903d856a4d7c0382f43d | e807c4eac0e85ae15e013379b0dde1d797f1377d | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/994 | |||||
853484980 | PR_kwDOCGYnMM4y3yW0 | 407 | closed | 0 | Add SpatiaLite helpers to CLI | eyeseast 25778 | Closes #398 This adds SpatiaLite helpers to the CLI. ```sh # init spatialite when creating a database sqlite-utils create database.db --enable-wal --init-spatialite # add geometry columns # needs a database, table, geometry column name, type, with optional SRID and not-null # this will throw an error if the table doesn't already exist sqlite-utils add-geometry-column database.db table-name geometry --srid 4326 --not-null # spatial index an existing table/column # this will throw an error it the table and column don't exist sqlite-utils create-spatial-index database.db table-name geometry ``` Docs and tests are included. | 2022-02-15T16:50:17Z | 2022-02-16T01:49:40Z | 2022-02-16T00:58:08Z | 2022-02-16T00:58:07Z | a692c56659c3563b26dcdc9e3534d63ecc26e180 | 0 | a974da591915e0548182bbbf01da34ecb9e537e6 | e7f040106b5f5a892ebd984f19b21c605e87c142 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/407 | ||||
665892313 | MDExOlB1bGxSZXF1ZXN0NjY1ODkyMzEz | 1373 | closed | 0 | Update trustme requirement from <0.8,>=0.7 to >=0.7,<0.9 | dependabot[bot] 49699333 | Updates the requirements on [trustme](https://github.com/python-trio/trustme) to permit the latest version. <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python-trio/trustme/commit/f9e13e03963260b32cab03f4e4c25cc515ddfad3"><code>f9e13e0</code></a> Release 0.8.0</li> <li><a href="https://github.com/python-trio/trustme/commit/4ae4435f4477dc8433f8f6d51cdb891652a5a228"><code>4ae4435</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/python-trio/trustme/issues/304">#304</a> from python-trio/dependabot/add-v2-config-file</li> <li><a href="https://github.com/python-trio/trustme/commit/87679026732cc441ac87c4415cf1a2bd6547116c"><code>8767902</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/python-trio/trustme/issues/327">#327</a> from graingert/test-on-py310</li> <li><a href="https://github.com/python-trio/trustme/commit/6abfddd5f3139bde9ee4ba0f848fb7c84c9ac54c"><code>6abfddd</code></a> Merge branch 'master' of github.com:python-trio/trustme into test-on-py310</li> <li><a href="https://github.com/python-trio/trustme/commit/51d3bdfb0d874ba52d59a84e10f2c12741de1046"><code>51d3bdf</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/python-trio/trustme/issues/328">#328</a> from tiran/correct_ku_eku</li> <li><a href="https://github.com/python-trio/trustme/commit/034fb3aad7890ac6e4cb24d821413bd790a84b35"><code>034fb3a</code></a> retry codecov more</li> <li><a href="https://github.com/python-trio/trustme/commit/53e121d4f2746333cedb412cabd510549e677ba6"><code>53e121d</code></a> try codecov harder</li> <li><a href="https://github.com/python-trio/trustme/commit/c1e7923784e3282aa63c28a1afe2c7960d80390f"><code>c1e7923</code></a> require codecov in ci</li> <li><a href="https://github.com/python-trio/trustme/commit/e3ac2d61a5ab902cdeac1c95dfc0a49c81c5d290"><code>e3ac2d6</code></a> Update tests/test_trustme.py</li> <li><a href="https://github.com/python-trio/trustme/commit/496dca6f2146268058b300a7fc24d4bdb90c5c33"><code>496dca6<… | 2021-06-09T13:09:44Z | 2021-06-13T15:38:47Z | 2021-06-13T15:38:47Z | 2021-06-13T15:38:47Z | 83e9c8bc7585dcc62f200e37c2daefcd669ee05e | 0 | 51ff366eba7ce218cb82fc666032ccc83f2195fe | e7975657656ce02717f03703bb8ec17f2fe9b717 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1373 | ||||
196526861 | MDExOlB1bGxSZXF1ZXN0MTk2NTI2ODYx | 322 | closed | 0 | Feature/in operator | 4e1e0603 2691848 | 2018-06-21T17:41:51Z | 2018-06-21T17:45:25Z | 2018-06-21T17:45:25Z | 80b7bcefa1c07202779d98c9e2214f3ebad704e3 | 0 | 1acc562a2f60a7289438df657db8fd6dd3a7391d | e7566cc59d4b02ef301054fd35fdde6c925a8e38 | NONE | datasette 107914493 | https://github.com/simonw/datasette/pull/322 | ||||||
196628304 | MDExOlB1bGxSZXF1ZXN0MTk2NjI4MzA0 | 324 | closed | 0 | Speed up Travis by reusing pip wheel cache across builds | simonw 9599 | From https://atchai.com/blog/faster-ci/ - refs #323 | 2018-06-22T03:20:08Z | 2018-06-24T01:03:47Z | 2018-06-24T01:03:47Z | 2018-06-24T01:03:47Z | 47e689a89b3f5f0969595b17d2ec59ea3caffb3b | 0 | 7d7f5f61fd6dca3385386a657a13057680d8ddd7 | e7566cc59d4b02ef301054fd35fdde6c925a8e38 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/324 | ||||
893040042 | PR_kwDOBm6k_c41OrWq | 1694 | closed | 0 | Update click requirement from <8.1.0,>=7.1.1 to >=7.1.1,<8.2.0 | dependabot[bot] 49699333 | Updates the requirements on [click](https://github.com/pallets/click) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pallets/click/releases">click's releases</a>.</em></p> <blockquote> <h2>8.1.0</h2> <p>This is a feature release, which includes new features and removes previously deprecated features. The 8.1.x branch is now the supported bugfix branch, the 8.0.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as <a href="https://pypi.org/project/pip-tools/">pip-tools</a> to pin all dependencies and control upgrades.</p> <ul> <li>Changes: <a href="https://click.palletsprojects.com/en/8.1.x/changes/#version-8-1-0">https://click.palletsprojects.com/en/8.1.x/changes/#version-8-1-0</a></li> <li>Milestone: <a href="https://github.com/pallets/click/milestone/9?closed=1">https://github.com/pallets/click/milestone/9?closed=1</a></li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pallets/click/blob/main/CHANGES.rst">click's changelog</a>.</em></p> <blockquote> <h2>Version 8.1.0</h2> <p>Released 2022-03-28</p> <ul> <li> <p>Drop support for Python 3.6. :pr:<code>2129</code></p> </li> <li> <p>Remove previously deprecated code. :pr:<code>2130</code></p> <ul> <li><code>Group.resultcallback</code> is renamed to <code>result_callback</code>.</li> <li><code>autocompletion</code> parameter to <code>Command</code> is renamed to <code>shell_complete</code>.</li> <li><code>get_terminal_size</code> is removed, use <code>shutil.get_terminal_size</code> instead.</li> <li><code>get_os_args</code> is removed, use <code>sys.argv[1:]</code> instead.</li> </ul> </li> <li> <p>Rely on :pep:<code>538</code> and :pep:<code>540</code> to handle selecting UTF-8 encoding instead of ASCII. Click's locale encoding detection is removed. :issue:<code>2198</code></p> </li> <li> <p>Single options boolean flags with <code>show_default=T… | 2022-03-29T13:11:23Z | 2022-04-08T23:05:10Z | 2022-04-08T23:05:09Z | 2022-04-08T23:05:09Z | 138e4d9a53e3982137294ba383303c3a848cfca4 | 0 | 83ff96792fd670ed32a1a61d38529959170c7309 | e73fa72917ca28c152208d62d07a490c81cadf52 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1694 | ||||
1299129869 | PR_kwDOJHON9s5NbyYN | 13 | open | 0 | use universal command | amlestin 14314871 | 2023-04-02T15:10:54Z | 2023-04-02T15:37:34Z | b40fdee5efac03f10257f749ee7f69e4692ad6c5 | 0 | 8111718e747f59dddcb5bf7820ce922e0723c04a | e55a802d37a896475b6cf475c1ba947af63cca73 | FIRST_TIME_CONTRIBUTOR | apple-notes-to-sqlite 611552758 | https://github.com/dogsheep/apple-notes-to-sqlite/pull/13 | |||||||
1501923826 | PR_kwDOJHON9s5ZhYny | 14 | open | 0 | fix: fix the problem of Chinese character garbling | barretlee 2698003 | 1. The code uses two different ways of writing encoding formats, `mac_roman` and `macroman`. It is uncertain whether there are any typo errors. 2. When there are Chinese characters in the content, exporting it results in garbled code. Changing it to `utf8` can fix the issue. | 2023-09-04T23:48:28Z | 2023-09-04T23:48:28Z | 66b5b73948b1bedc275432956dda43cfe151c78c | 0 | 5febe19b8922aa818e7dc265bdee30bcc5004eb4 | e55a802d37a896475b6cf475c1ba947af63cca73 | FIRST_TIME_CONTRIBUTOR | apple-notes-to-sqlite 611552758 | https://github.com/dogsheep/apple-notes-to-sqlite/pull/14 | ||||||
577953727 | MDExOlB1bGxSZXF1ZXN0NTc3OTUzNzI3 | 5 | open | 0 | WIP: Add Gmail takeout mbox import | UtahDave 306240 | WIP This PR adds the ability to import emails from a Gmail mbox export from Google Takeout. This is my first PR to a datasette/dogsheep repo. I've tested this on my personal Google Takeout mbox with ~520,000 emails going back to 2004. This took around ~20 minutes to process. To provide some feedback on the progress of the import I added the "rich" python module. I'm happy to remove that if adding a dependency is discouraged. However, I think it makes a nice addition to give feedback on the progress of a long import. Do we want to log emails that have errors when trying to import them? Dealing with encodings with emails is a bit tricky. I'm very open to feedback on how to deal with those better. As well as any other feedback for improvements. | 2021-02-22T21:30:40Z | 2021-07-28T07:18:56Z | 65182811d59451299e75f09b4366bb221bc32b20 | 0 | a3de045eba0fae4b309da21aa3119102b0efc576 | e54e544427f1cc3ea8189f0e95f54046301a8645 | FIRST_TIME_CONTRIBUTOR | google-takeout-to-sqlite 206649770 | https://github.com/dogsheep/google-takeout-to-sqlite/pull/5 | ||||||
698423667 | MDExOlB1bGxSZXF1ZXN0Njk4NDIzNjY3 | 8 | open | 0 | Add Gmail takeout mbox import (v2) | maxhawkins 28565 | WIP This PR builds on #5 to continue implementing gmail import support. Building on @UtahDave's work, these commits add a few performance and bug fixes: * Decreased memory overhead for import by manually parsing mbox headers. * Fixed error where some messages in the mbox would yield a row with NULL in all columns. I will send more commits to fix any errors I encounter as I run the importer on my personal takeout data. | 2021-07-28T07:05:32Z | 2023-09-08T01:22:49Z | d2809fd3fd835358d01ad10401228a562539b29e | 0 | 8e6d487b697ce2e8ad885acf613a157bfba84c59 | e54e544427f1cc3ea8189f0e95f54046301a8645 | FIRST_TIME_CONTRIBUTOR | google-takeout-to-sqlite 206649770 | https://github.com/dogsheep/google-takeout-to-sqlite/pull/8 | ||||||
775078665 | PR_kwDODFE5qs4uMsMJ | 9 | open | 0 | Removed space from filename My Activity.json | widadmogral 91880982 | File name from google takeout has no space. The code only runs without error if filename is "MyActivity.json" and not "My Activity.json". Is it a new change by Google? | 2021-11-08T00:04:31Z | 2021-11-08T00:04:31Z | 236da5c8302c09a20fcd4164c563cd9fa5c9595c | 0 | 6d111f65687e13ffd8b39aa05f1f8f4a351e7788 | e54e544427f1cc3ea8189f0e95f54046301a8645 | FIRST_TIME_CONTRIBUTOR | google-takeout-to-sqlite 206649770 | https://github.com/dogsheep/google-takeout-to-sqlite/pull/9 | ||||||
948892757 | PR_kwDODFE5qs44jvRV | 11 | open | 0 | Update README.md | ashanan 11887 | Fix typo | 2022-05-27T03:13:59Z | 2022-05-27T03:13:59Z | 3d479a1052f2661de61b15c50b7a5b2daa20a33a | 0 | d4af1554a9b5ddedcd0b241450f7b935f38b9bf7 | e54e544427f1cc3ea8189f0e95f54046301a8645 | FIRST_TIME_CONTRIBUTOR | google-takeout-to-sqlite 206649770 | https://github.com/dogsheep/google-takeout-to-sqlite/pull/11 | ||||||
1505067804 | PR_kwDODFE5qs5ZtYMc | 13 | open | 0 | use poetry for packages, asdf for versioning, and gh actions for ci | iloveitaly 150855 | - build: use poetry for package management, asdf for python version - build: cleanup poetry config, add keywords, ignore dist - ci: migrate circleci to gh actions - fix: dup method definition | 2023-09-06T17:59:16Z | 2023-09-06T17:59:16Z | cd4d8c4a7ecd231f6c5a8886245271934177f104 | 0 | b5f0ebe91755c46e01dc4aefb808f0292848fbed | e54e544427f1cc3ea8189f0e95f54046301a8645 | FIRST_TIME_CONTRIBUTOR | google-takeout-to-sqlite 206649770 | https://github.com/dogsheep/google-takeout-to-sqlite/pull/13 | ||||||
1154884166 | PR_kwDOBm6k_c5E1iJG | 1938 | closed | 0 | "permissions" blocks in metadata.json/yaml | simonw 9599 | Refs #1636 - [x] Documentation - [ ] Implementation - [ ] Validate metadata to check there are no nonsensical permissions (like `debug-menu` set at the table level) - [ ] Tests <!-- readthedocs-preview datasette start --> ---- :books: Documentation preview :books:: https://datasette--1938.org.readthedocs.build/en/1938/ <!-- readthedocs-preview datasette end --> | 2022-12-08T22:07:36Z | 2022-12-13T05:23:19Z | 2022-12-13T05:23:18Z | 271ea3ae0c858de2d392b61a1a4a9f5837cbddf8 | Datasette 1.0a2 8711695 | 0 | 6e35a6b4f7ea9ba3fb6f02f45452eeb41de69786 | e539c1c024bc62d88df91d9107cbe37e7f0fe55f | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/1938 | ||||
1155365505 | PR_kwDOBm6k_c5E3XqB | 1940 | closed | 0 | register_permissions() plugin hook | simonw 9599 | Refs #1939 From this comment: https://github.com/simonw/datasette/issues/1939#issuecomment-1343872168 - [x] Unit test for the registration plugin hook itself - [x] Use them in `check_permission_actions_are_documented` test in `conftest.py` - [x] Add description field to `Permissions` (and update tests and docs) - [x] Documentation for `datasette.permissions` dictionary - [x] If no `default=` provided in call to `permission_allowed()` then use default from `datasette.permissions` list - [x] Remove `default=` from a bunch of places - [x] Throw an error if two permissions are registered with the same name or abbreviation (but other attributes differ) - [x] Update authentication and permissions documentation to explain that permissions are now registered and have a registered default <!-- readthedocs-preview datasette start --> ---- :books: Documentation preview :books:: https://datasette--1940.org.readthedocs.build/en/1940/ <!-- readthedocs-preview datasette end --> | 2022-12-09T05:09:28Z | 2022-12-13T02:05:55Z | 2022-12-13T02:05:54Z | 2022-12-13T02:05:54Z | 8bf06a76b51bc9ace7cf72cf0cca8f1da7704ea7 | Datasette 1.0a2 8711695 | 0 | 94e5c75397a96b86a3349123808cd02cb20f7440 | e539c1c024bc62d88df91d9107cbe37e7f0fe55f | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/1940 | |||
1160815750 | PR_kwDOBm6k_c5FMKSG | 1944 | closed | 0 | Bump black from 22.10.0 to 22.12.0 | dependabot[bot] 49699333 | Bumps [black](https://github.com/psf/black) from 22.10.0 to 22.12.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/psf/black/releases">black's releases</a>.</em></p> <blockquote> <h2>22.12.0</h2> <h3>Preview style</h3> <!-- raw HTML omitted --> <ul> <li>Enforce empty lines before classes and functions with sticky leading comments (<a href="https://github-redirect.dependabot.com/psf/black/issues/3302">#3302</a>)</li> <li>Reformat empty and whitespace-only files as either an empty file (if no newline is present) or as a single newline character (if a newline is present) (<a href="https://github-redirect.dependabot.com/psf/black/issues/3348">#3348</a>)</li> <li>Implicitly concatenated strings used as function args are now wrapped inside parentheses (<a href="https://github-redirect.dependabot.com/psf/black/issues/3307">#3307</a>)</li> <li>Correctly handle trailing commas that are inside a line's leading non-nested parens (<a href="https://github-redirect.dependabot.com/psf/black/issues/3370">#3370</a>)</li> </ul> <h3>Configuration</h3> <!-- raw HTML omitted --> <ul> <li>Fix incorrectly applied <code>.gitignore</code> rules by considering the <code>.gitignore</code> location and the relative path to the target file (<a href="https://github-redirect.dependabot.com/psf/black/issues/3338">#3338</a>)</li> <li>Fix incorrectly ignoring <code>.gitignore</code> presence when more than one source directory is specified (<a href="https://github-redirect.dependabot.com/psf/black/issues/3336">#3336</a>)</li> </ul> <h3>Parser</h3> <!-- raw HTML omitted --> <ul> <li>Parsing support has been added for walruses inside generator expression that are passed as function args (for example, <code>any(match := my_re.match(text) for text in texts)</code>) (<a href="https://github-redirect.dependabot.com/psf/black/issues/3327">#3327</a>).</li> </ul> <h3>Integrations</h3> <!-- raw HTML omitted --> <ul> <li>Vim plugin: Optionally allow using the system installation of Black via <code>let g:black_use… | 2022-12-12T13:05:11Z | 2022-12-13T05:23:31Z | 2022-12-13T05:23:30Z | 2022-12-13T05:23:30Z | d4b98d3924dec625a99236e65b1b169ff957381f | 0 | ac7a52436638ae85f1db0556a382845863546b3d | e539c1c024bc62d88df91d9107cbe37e7f0fe55f | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1944 | ||||
280204276 | MDExOlB1bGxSZXF1ZXN0MjgwMjA0Mjc2 | 479 | closed | 0 | doc typo fix | IgnoredAmbience 98555 | Fix typo in performance doc page | 2019-05-19T22:54:25Z | 2019-05-20T16:42:29Z | 2019-05-20T16:42:29Z | 2019-05-20T16:42:29Z | 70d2858067d3c4da0e17c1d39e03de89190e94b6 | 0 | 708e13ab87f8c8620796c3e8f2b0aa1b2fc26875 | e513a80afba30bca9eeebd71c5e6aa6d8a811f33 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/479 | ||||
510235909 | MDExOlB1bGxSZXF1ZXN0NTEwMjM1OTA5 | 189 | closed | 0 | Allow iterables other than Lists in m2m records | adamwolf 35681 | I was playing around with sqlite-utils, creating a Roam Research dogsheep-style importer for Datasette, and ran into a slight snag. I wanted to use a generator to add an order column in an importer. It looked something like: ``` def order_generator(iterable, attr=None): if attr is None: attr = "order" order: int = 0 for i in iterable: i[attr] = order order += 1 yield i ``` When I used this with `insert_all` and other things, it worked fine--but it didn't work as the `records` argument to `m2m`. I dug into it, and sqlite-utils is explicitly checking if the records argument is a list or a tuple. I flipped the check upside down, and now it checks if the argument is a mapping. If it's a mapping, it wraps it in a list, otherwise it leaves it alone. (I get that it might not really make sense to put the order column on the second table. I changed my import schema a bit, and no longer have a real example, but maybe this change still makes sense.) The automated tests still pass, but I did not add any new ones. Let me know what you think! I'm really loving Datasette and its ecosystem; thanks for everything! | 2020-10-26T18:47:44Z | 2020-10-27T16:28:37Z | 2020-10-27T16:24:21Z | 2020-10-27T16:24:21Z | f045d8559a6d2cb922a2de30fbcc896a4486b82f | 0 | 93230b2acb61635b6d5070ad9c65e7221c63b75a | e4f1c7b936981de29823730c5dbef4f4ba7a4286 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/189 | ||||
1215742203 | PR_kwDOBm6k_c5IdsD7 | 2003 | open | 0 | Show referring tables and rows when the referring foreign key is compound | fgregg 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 | datasette 107914493 | https://github.com/simonw/datasette/pull/2003 | ||||||
1216059840 | PR_kwDOBm6k_c5Ie5nA | 2004 | open | 0 | use single quotes for string literals, fixes #2001 | cldellow 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. <!-- readthedocs-preview datasette start --> ---- :books: Documentation preview :books:: https://datasette--2004.org.readthedocs.build/en/2004/ <!-- readthedocs-preview datasette end --> | 2023-01-25T05:08:45Z | 2023-02-01T06:37:18Z | f678bfc05913a4b5ecf0c4cebe9ca8329c7d4a21 | 0 | dca7634c274e71fae0d95ea4ff1dfd987b9af63c | e4ebef082de90db4e1b8527abc0d582b7ae0bc9d | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/2004 | ||||||
925807233 | PR_kwDOCGYnMM43LrKB | 429 | closed | 0 | Depend on click-default-group-wheel | simonw 9599 | Trying to get this to work with Pyodide. Refs: https://github.com/simonw/click-default-group-wheel/issues/3 | 2022-05-02T18:03:10Z | 2022-05-02T18:52:42Z | 2022-05-02T18:05:00Z | 2022-05-02T18:05:00Z | ed6fd516082e8cc83b199798f62dd67728a6974f | 0 | 4a02dcf265702a4f11eed943bf8feaa502c590d5 | e3a14c33a033b0c2fc00f2470666caaf9027e446 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/429 | ||||
1358321208 | PR_kwDOCGYnMM5Q9lY4 | 553 | closed | 0 | Reformatted CLI examples in docs | simonw 9599 | Refs: - #551 <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--553.org.readthedocs.build/en/553/ <!-- readthedocs-preview sqlite-utils end --> | 2023-05-21T20:44:34Z | 2023-05-21T20:57:27Z | 2023-05-21T20:57:23Z | 2023-05-21T20:57:22Z | d8fe1b0d899faaaa3d4714a39328f4c24932278f | 0 | 21036a5084a2c846a05feb6bced3111d849bbe3c | e240133b11588d31dc22c632f7a7ca636c72978d | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/553 | ||||
407929128 | MDExOlB1bGxSZXF1ZXN0NDA3OTI5MTI4 | 734 | closed | 0 | Update janus requirement from ~=0.4.0 to >=0.4,<0.6 | dependabot-preview[bot] 27856297 | Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aio-libs/janus/blob/master/CHANGES.rst">janus's changelog</a>.</em></p> <blockquote> <h1>0.5.0 (2020-04-23)</h1> <ul> <li>Remove explicit loop arguments and forbid creating queues outside event loops <a href="https://github-redirect.dependabot.com/aio-libs/janus/issues/246">#246</a></li> </ul> <h1>0.4.0 (2018-07-28)</h1> <ul> <li>Add <code>py.typed</code> macro <a href="https://github-redirect.dependabot.com/aio-libs/janus/issues/89">#89</a></li> <li>Drop python 3.4 support and fix minimal version python3.5.3 <a href="https://github-redirect.dependabot.com/aio-libs/janus/issues/88">#88</a></li> <li>Add property with that indicates if queue is closed <a href="https://github-redirect.dependabot.com/aio-libs/janus/issues/86">#86</a></li> </ul> <h1>0.3.2 (2018-07-06)</h1> <ul> <li>Fixed python 3.7 support <a href="https://github-redirect.dependabot.com/aio-libs/janus/issues/97">#97</a></li> </ul> <h1>0.3.1 (2018-01-30)</h1> <ul> <li>Fixed bug with join() in case tasks are added by sync_q.put() <a href="https://github-redirect.dependabot.com/aio-libs/janus/issues/75">#75</a></li> </ul> <h1>0.3.0 (2017-02-21)</h1> <ul> <li>Expose unfinished_tasks property <a href="https://github-redirect.dependabot.com/aio-libs/janus/issues/34">#34</a></li> </ul> <h1>0.2.4 (2016-12-05)</h1> <ul> <li>Restore tarball deploying</li> </ul> <h1>0.2.3 (2016-07-12)</h1> <ul> <li>Fix exception type</li> </ul> <h1>0.2.2 (2016-07-11)</h1> <ul> <li>Update asyncio.async() to use asyncio.ensure_future() <a href="https://github-redirect.dependabot.com/aio-libs/janus/issues/6">#6</a></li> </ul> <h1>0.2.1 (2016-03-24)</h1> <ul> <li>Fix python setup.py test command <a href="https://github-redirect.dependabot.com/aio-libs/janus/issues/4">#4</a></li> </ul> <h1>0.2.0 (2015-09-20)</h1> </tr></table> ... (truncated) </blockquote> </details> <details> <summary>Commits</summ… | 2020-04-23T13:43:45Z | 2020-05-04T16:48:14Z | 2020-05-04T16:48:04Z | 2020-05-04T16:48:04Z | 109c5a430d53fe38b1300e0daa20f5cef047a08e | 0 | 281b2c1acf1a2ef39c784dc73f1eb184d898d369 | e232f77055880b38cc0b738607cd50cde9188eaf | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/734 | ||||
300377599 | MDExOlB1bGxSZXF1ZXN0MzAwMzc3NTk5 | 47 | closed | 0 | extracts= table parameter | simonw 9599 | Still needs docs. Refs #46 | 2019-07-23T16:30:29Z | 2019-07-23T17:00:43Z | 2019-07-23T17:00:43Z | 2019-07-23T17:00:43Z | 941d281aee6eac20ad64b505511da7e47f697700 | 0 | 1c9d08f75a48b2a3770f2a880462dc8b195289b7 | e22cfcd953f967f6e9551b3a048d7c40726f349b | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/47 | ||||
208719043 | MDExOlB1bGxSZXF1ZXN0MjA4NzE5MDQz | 361 | closed | 0 | Import pysqlite3 if available, closes #360 | simonw 9599 | 2018-08-16T00:52:21Z | 2018-08-16T00:58:57Z | 2018-08-16T00:58:57Z | 2018-08-16T00:58:57Z | aae49fef3b75848628d824077ec063834e3e5167 | 0 | da41daa168af8f29a1beb5278aed833cf3dc48ce | e1db8194e8c1d7f361fd0c1c3fc1b91d6aa920e5 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/361 | |||||
270191084 | MDExOlB1bGxSZXF1ZXN0MjcwMTkxMDg0 | 430 | closed | 0 | ?_where= parameter on table views, closes #429 | simonw 9599 | 2019-04-13T01:15:09Z | 2019-04-13T01:37:23Z | 2019-04-13T01:37:23Z | 2019-04-13T01:37:23Z | bc6a9b45646610f362b4287bc4110440991aa4d6 | 0 | 3ee087c7b60da7ec3e5d2f73611fc6ea99ff82fc | e11cb4c66442abca2a6b6159521a6cf4da8739c1 | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/430 | |||||
303990683 | MDExOlB1bGxSZXF1ZXN0MzAzOTkwNjgz | 53 | closed | 0 | Work in progress: m2m() method for creating many-to-many records | simonw 9599 | - [x] `table.insert({"name": "Barry"}).m2m("tags", lookup={"tag": "Coworker"})` - [x] Explicit table name `.m2m("humans", ..., m2m_table="relationships")` - [x] Automatically use an existing m2m table if a single obvious candidate exists (a table with two foreign keys in the correct directions) - [x] Require the explicit `m2m_table=` argument if multiple candidates for the m2m table exist - [x] Documentation Refs #23 | 2019-08-03T10:03:56Z | 2019-08-04T03:38:10Z | 2019-08-04T03:37:33Z | 2019-08-04T03:37:33Z | 4c0912dbf27b12071aca9569bcf7233e60f91c7c | 0 | 243bcaa1acd32a173c07b24dca553991493005a0 | e1021030dd2d8d4705ad0e7bae389eeaea7fa17b | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/53 | ||||
729632643 | MDExOlB1bGxSZXF1ZXN0NzI5NjMyNjQz | 1463 | closed | 0 | Update beautifulsoup4 requirement from <4.10.0,>=4.8.1 to >=4.8.1,<4.11.0 | dependabot[bot] 49699333 | Updates the requirements on [beautifulsoup4](http://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version. 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) --- <details> <summary>Dependabot commands and options</summary> <br /> 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) </details> | 2021-09-08T13:09:38Z | 2021-10-13T22:35:37Z | 2021-10-13T22:35:36Z | 2021-10-13T22:35:36Z | 2a8c6690399ee832ee62aafdede1794f5945d911 | 0 | 481212cdfc5fa372423e5e67047a3febaa8941b6 | e1012e7098056734d9c90f081493991009253390 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1463 | ||||
399166433 | MDExOlB1bGxSZXF1ZXN0Mzk5MTY2NDMz | 719 | closed | 0 | asgi: check raw_path is not None | cldellow 193185 | The ASGI spec (https://asgi.readthedocs.io/en/latest/specs/www.html#http) seems to imply that `None` is a valid value, so we need to check the value itself, not just whether the key is present. In particular, the [mangum](https://github.com/erm/mangum) adapter passes `None` for this key's value. This change permits mangum to be used to front datasette in Amazon API Gateway + AWS Lambda deployments. | 2020-04-05T16:53:58Z | 2020-05-04T17:14:26Z | 2020-05-04T17:14:26Z | 2020-05-04T17:14:26Z | dbd2d70b3819a7041bb36a527033d77c85683c05 | 0 | 161f61d73800a605354b4ac44a3c989e19bbc77a | e0e7a0facfc935a835cd73c720bc46661462f0b1 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/719 | ||||
1358254580 | PR_kwDOCGYnMM5Q9VH0 | 546 | closed | 0 | Analyze tables options: --common-limit, --no-most, --no-least | simonw 9599 | Refs #544 - [x] Documentation for CLI options - [x] Documentation for new Python API parameters: `most_common: bool` and `least_common: bool` - [x] Tests for CLI - [x] Tests for Python API | 2023-05-21T15:54:39Z | 2023-05-21T16:19:30Z | 2023-05-21T16:19:30Z | 2023-05-21T16:19:30Z | d2a7b15b2b930fe384e1f1715fc4af23386f4935 | 0 | 2eca17d46eca2cff52c78553085ec64d9029c969 | e047cc32e9d5de7025d4d3c16554d4290f4bd3d1 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/546 | ||||
1170816476 | PR_kwDOBm6k_c5FyT3c | 1967 | closed | 0 | Add favicon to documentation | choldgraf 1839645 | I've been browsing the datasette documentation and found it hard to quickly locate tabs with many of them open, because it does not ship a favicon. So this PR: - Grabs the favicon `.png` from datasette itself[^1] - Adds it to the `_static/` folder - Sets `html_favicon` to load it in the docs [^1]: I also learned that Chrome can fetch favicons as an internal service! See `chrome://favicon/https://datasette.io/tools/github-to-sqlite`. | 2022-12-19T14:01:04Z | 2022-12-31T19:15:51Z | 2022-12-31T19:00:31Z | 2022-12-31T19:00:31Z | 994ce46ed4a5d680bee58242efd95181946c25e9 | 0 | ac64f6fe6aeb1941d01f862999a8b9d4e95f4991 | e03aed00026cc2e59c09ca41f69a247e1a85cc89 | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1967 | ||||
475874493 | MDExOlB1bGxSZXF1ZXN0NDc1ODc0NDkz | 146 | closed | 0 | Handle case where subsequent records (after first batch) include extra columns | simonwiles 96218 | Addresses #145. I think this should do the job. If it meets with your approval I'll update this PR to include an update to the documentation -- I came across this bug while preparing a PR to update the documentation around `batch_size` in any event. | 2020-08-30T07:13:58Z | 2020-09-08T23:20:37Z | 2020-09-08T23:20:37Z | 2020-09-08T23:20:36Z | e6d202b742a7b531fffa593703d34f8337632d68 | 0 | 40fcea41525682fdc2f601da787b29d5a8517dcd | deb2eb013ff85bbc828ebc244a9654f0d9c3139e | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/146 | ||||
529783275 | MDExOlB1bGxSZXF1ZXN0NTI5NzgzMjc1 | 1117 | closed | 0 | Support for generated columns | simonw 9599 | Refs #1116. My first attempt at this worked on my laptop but broke in CI, so I'm going to iterate on it in a pull request instead. | 2020-11-30T20:10:46Z | 2020-11-30T22:23:19Z | 2020-11-30T21:29:58Z | 2020-11-30T21:29:58Z | 461670a0b87efa953141b449a9a261919864ceb3 | 0 | ccdf2c650278b8b9465d3a2d7c916f3bb06c4f01 | dea3c508b39528e566d711c38a467b3d372d220b | OWNER | datasette 107914493 | https://github.com/simonw/datasette/pull/1117 | ||||
564608264 | MDExOlB1bGxSZXF1ZXN0NTY0NjA4MjY0 | 1211 | closed | 0 | Use context manager instead of plain open | kbaikov 4488943 | Context manager with open closes the files after usage. Fixes: https://github.com/simonw/datasette/issues/1208 When the object is already a pathlib.Path i used read_text write_text functions In some cases pathlib.Path.open were used in context manager, it is basically the same as builtin open. Tests are passing: 850 passed, 5 xfailed, 10 xpassed | 2021-01-31T07:58:10Z | 2021-03-11T16:15:50Z | 2021-03-11T16:15:50Z | 2021-03-11T16:15:49Z | 8e18c7943181f228ce5ebcea48deb59ce50bee1f | 0 | e33ccaaafbe9a16b8339a3bf4c0ae7b83354570c | dde3c500c73ace33529672f7d862b76753d309cc | CONTRIBUTOR | datasette 107914493 | https://github.com/simonw/datasette/pull/1211 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [pull_requests] ( [id] INTEGER PRIMARY KEY, [node_id] TEXT, [number] INTEGER, [state] TEXT, [locked] INTEGER, [title] TEXT, [user] INTEGER REFERENCES [users]([id]), [body] TEXT, [created_at] TEXT, [updated_at] TEXT, [closed_at] TEXT, [merged_at] TEXT, [merge_commit_sha] TEXT, [assignee] INTEGER REFERENCES [users]([id]), [milestone] INTEGER REFERENCES [milestones]([id]), [draft] INTEGER, [head] TEXT, [base] TEXT, [author_association] TEXT, [repo] INTEGER REFERENCES [repos]([id]), [url] TEXT, [merged_by] INTEGER REFERENCES [users]([id]) , [auto_merge] TEXT); CREATE INDEX [idx_pull_requests_merged_by] ON [pull_requests] ([merged_by]); CREATE INDEX [idx_pull_requests_repo] ON [pull_requests] ([repo]); CREATE INDEX [idx_pull_requests_milestone] ON [pull_requests] ([milestone]); CREATE INDEX [idx_pull_requests_assignee] ON [pull_requests] ([assignee]); CREATE INDEX [idx_pull_requests_user] ON [pull_requests] ([user]);