issue_comments
10,495 rows sorted by updated_at descending
This data as json, CSV (advanced)
issue >30
- Redesign default .json format 55
- Show column metadata plus links for foreign keys on arbitrary query results 51
- ?_extra= support (draft) 49
- Rethink how .ext formats (v.s. ?_format=) works before 1.0 48
- Upgrade to CodeMirror 6, add SQL autocomplete 48
- JavaScript plugin hooks mechanism similar to pluggy 47
- Updated Dockerfile with SpatiaLite version 5.0 45
- Complete refactor of TableView and table.html template 45
- Port Datasette to ASGI 42
- Authentication (and permissions) as a core concept 40
- invoke_startup() is not run in some conditions, e.g. gunicorn/uvicorn workers, breaking lots of things 36
- Deploy a live instance of demos/apache-proxy 34
- await datasette.client.get(path) mechanism for executing internal requests 33
- Maintain an in-memory SQLite table of connected databases and their tables 32
- Research: demonstrate if parallel SQL queries are worthwhile 32
- Ability to sort (and paginate) by column 31
- Default API token authentication mechanism 30
- Port as many tests as possible to async def tests against ds_client 29
- link_or_copy_directory() error - Invalid cross-device link 28
- Add ?_extra= mechanism for requesting extra properties in JSON 27
- Export to CSV 27
- base_url configuration setting 27
- Documentation with recommendations on running Datasette in production without using Docker 27
- Optimize all those calls to index_list and foreign_key_list 27
- Support cross-database joins 26
- Ability for a canned query to write to the database 26
- table.transform() method for advanced alter table 26
- New pattern for views that return either JSON or HTML, available for plugins 26
- Proof of concept for Datasette on AWS Lambda with EFS 25
- WIP: Add Gmail takeout mbox import 25
- …
created_at (date) >30 ✖
- 2021-03-22 66
- 2021-11-19 60
- 2022-11-16 59
- 2020-10-15 52
- 2020-09-22 51
- 2023-08-18 51
- 2020-10-30 49
- 2022-10-26 47
- 2022-03-21 46
- 2020-12-18 43
- 2020-06-09 42
- 2022-10-27 42
- 2022-12-13 42
- 2020-06-18 41
- 2022-10-25 41
- 2020-10-20 40
- 2022-01-09 40
- 2022-06-14 40
- 2020-05-27 39
- 2021-11-16 39
- 2021-12-16 39
- 2020-12-30 38
- 2022-12-15 37
- 2023-03-08 37
- 2020-10-09 36
- 2021-11-20 36
- 2022-01-20 36
- 2022-03-19 36
- 2023-07-22 36
- 2020-09-15 34
- …
reactions 23 ✖
- {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 9,933
- {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 209
- {"total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0} 39
- {"total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 37
- {"total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 20
- {"total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 1, "eyes": 0} 13
- {"total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1} 9
- {"total_count": 1, "+1": 0, "-1": 0, "laugh": 1, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 7
- {"total_count": 3, "+1": 3, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 6
- {"total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0} 3
- {"total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 2, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 3
- {"total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 3
- {"total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0} 2
- {"total_count": 3, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 3, "rocket": 0, "eyes": 0} 2
- {"total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 1, "heart": 0, "rocket": 0, "eyes": 0} 1
- {"total_count": 15, "+1": 7, "-1": 0, "laugh": 1, "hooray": 1, "confused": 0, "heart": 5, "rocket": 1, "eyes": 0} 1
- {"total_count": 2, "+1": 0, "-1": 0, "laugh": 1, "hooray": 0, "confused": 0, "heart": 0, "rocket": 1, "eyes": 0} 1
- {"total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1} 1
- {"total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 1, "eyes": 0} 1
- {"total_count": 3, "+1": 0, "-1": 0, "laugh": 0, "hooray": 3, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 1
- {"total_count": 4, "+1": 4, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 1
- {"total_count": 5, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 3, "eyes": 0} 1
- {"total_count": 5, "+1": 5, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} 1
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1708695907 | https://github.com/simonw/sqlite-utils/pull/591#issuecomment-1708695907 | https://api.github.com/repos/simonw/sqlite-utils/issues/591 | IC_kwDOCGYnMM5l2KFj | simonw 9599 | 2023-09-06T16:15:59Z | 2023-09-06T16:19:14Z | OWNER | The test failure was while installing
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Test against Python 3.12 preview 1884335789 | |
1701045404 | https://github.com/simonw/datasette/pull/2166#issuecomment-1701045404 | https://api.github.com/repos/simonw/datasette/issues/2166 | IC_kwDOBm6k_c5lY-Sc | codecov[bot] 22429695 | 2023-08-31T13:31:15Z | 2023-09-06T13:25:17Z | NONE | Codecov ReportPatch and project coverage have no change.
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2166 +/- ## ======================================= Coverage 92.68% 92.68% ======================================= Files 40 40 Lines 6012 6012 ======================================= Hits 5572 5572 Misses 440 440 ```:umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 1 update 1875519316 | |
1707570044 | https://github.com/simonw/datasette/pull/2173#issuecomment-1707570044 | https://api.github.com/repos/simonw/datasette/issues/2173 | IC_kwDOBm6k_c5lx3N8 | codecov[bot] 22429695 | 2023-09-06T02:39:59Z | 2023-09-06T02:49:01Z | NONE | Codecov ReportPatch and project coverage have no change.
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2173 +/- ## ======================================= Coverage 92.68% 92.68% ======================================= Files 40 40 Lines 6012 6012 ======================================= Hits 5572 5572 Misses 440 440 ```:umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
click-default-group>=1.2.3 1883055640 | |
1707570378 | https://github.com/simonw/datasette/pull/2173#issuecomment-1707570378 | https://api.github.com/repos/simonw/datasette/issues/2173 | IC_kwDOBm6k_c5lx3TK | simonw 9599 | 2023-09-06T02:40:31Z | 2023-09-06T02:40:31Z | OWNER | Surprising error:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
click-default-group>=1.2.3 1883055640 | |
1707565495 | https://github.com/simonw/datasette/pull/2173#issuecomment-1707565495 | https://api.github.com/repos/simonw/datasette/issues/2173 | IC_kwDOBm6k_c5lx2G3 | simonw 9599 | 2023-09-06T02:33:56Z | 2023-09-06T02:33:56Z | OWNER | Running tests to see if Pyodide works - that was the reason I switched to my |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
click-default-group>=1.2.3 1883055640 | |
1706701195 | https://github.com/simonw/datasette/issues/328#issuecomment-1706701195 | https://api.github.com/repos/simonw/datasette/issues/328 | IC_kwDOBm6k_c5lujGL | eric-burel 7983005 | 2023-09-05T14:10:39Z | 2023-09-05T14:10:39Z | NONE | Hey @simonw I hit the same issue as mentionned by @chmaynard on a fresh install, "/mnt/fixtures.db" doesn't seem to exist in the docker image |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Installation instructions, including how to use the docker image 336464733 | |
1704387161 | https://github.com/simonw/sqlite-utils/issues/590#issuecomment-1704387161 | https://api.github.com/repos/simonw/sqlite-utils/issues/590 | IC_kwDOCGYnMM5lluJZ | simonw 9599 | 2023-09-03T19:50:36Z | 2023-09-03T19:50:36Z | OWNER | Maybe just populate |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to tell if a Database is an in-memory one 1879214365 | |
1704384393 | https://github.com/simonw/sqlite-utils/issues/589#issuecomment-1704384393 | https://api.github.com/repos/simonw/sqlite-utils/issues/589 | IC_kwDOCGYnMM5llteJ | simonw 9599 | 2023-09-03T19:36:34Z | 2023-09-03T19:36:34Z | OWNER | Here's a prototype: https://github.com/simonw/sqlite-utils/commit/62f673835c4a66f87cf6f949eaff43c8b014619b Still needs tests and documentation (and some more thought to make sure it's doing the right thing). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for de-registering registered SQL functions 1879209560 | |
1704384111 | https://github.com/simonw/sqlite-utils/issues/589#issuecomment-1704384111 | https://api.github.com/repos/simonw/sqlite-utils/issues/589 | IC_kwDOCGYnMM5lltZv | simonw 9599 | 2023-09-03T19:35:03Z | 2023-09-03T19:35:03Z | OWNER | Normally in Python/ You can't do that with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for de-registering registered SQL functions 1879209560 | |
1704383901 | https://github.com/simonw/sqlite-utils/issues/589#issuecomment-1704383901 | https://api.github.com/repos/simonw/sqlite-utils/issues/589 | IC_kwDOCGYnMM5lltWd | simonw 9599 | 2023-09-03T19:34:05Z | 2023-09-03T19:34:05Z | OWNER | For that particular case I realized I'd quite like to have a mechanism for applying functions for a block of code and then de-registering them at the end - a context manager. I played with this idea a bit:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for de-registering registered SQL functions 1879209560 | |
1701894468 | https://github.com/simonw/datasette/issues/1765#issuecomment-1701894468 | https://api.github.com/repos/simonw/datasette/issues/1765 | IC_kwDOBm6k_c5lcNlE | simonw 9599 | 2023-08-31T23:08:24Z | 2023-08-31T23:08:24Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Document plugins providing new plugin hook- 1292370469 | ||
1701831013 | https://github.com/simonw/datasette/issues/2168#issuecomment-1701831013 | https://api.github.com/repos/simonw/datasette/issues/2168 | IC_kwDOBm6k_c5lb-Fl | simonw 9599 | 2023-08-31T21:51:12Z | 2023-08-31T21:52:15Z | OWNER | Need to make sure the design of this takes streaming responses into account. Those could be pretty tricky here. I nice thing about |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider a request/response wrapping hook slightly higher level than asgi_wrapper() 1876353656 | |
1701830241 | https://github.com/simonw/datasette/issues/2168#issuecomment-1701830241 | https://api.github.com/repos/simonw/datasette/issues/2168 | IC_kwDOBm6k_c5lb95h | simonw 9599 | 2023-08-31T21:50:18Z | 2023-08-31T21:50:18Z | OWNER | The hook could be called ```python @hookspec def register_middleware(datasette): """Register middleware: returns a list of async def middleware functions""" ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider a request/response wrapping hook slightly higher level than asgi_wrapper() 1876353656 | |
1701828197 | https://github.com/simonw/datasette/issues/2168#issuecomment-1701828197 | https://api.github.com/repos/simonw/datasette/issues/2168 | IC_kwDOBm6k_c5lb9Zl | simonw 9599 | 2023-08-31T21:48:00Z | 2023-08-31T21:48:57Z | OWNER | A pattern like this could be interesting:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider a request/response wrapping hook slightly higher level than asgi_wrapper() 1876353656 | |
1701826521 | https://github.com/simonw/datasette/issues/2168#issuecomment-1701826521 | https://api.github.com/repos/simonw/datasette/issues/2168 | IC_kwDOBm6k_c5lb8_Z | simonw 9599 | 2023-08-31T21:46:13Z | 2023-08-31T21:46:13Z | OWNER | This could even be a pair of hooks - Or could take a leaf from Django, which redesigned middleware to use this pattern instead:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider a request/response wrapping hook slightly higher level than asgi_wrapper() 1876353656 | |
1701823609 | https://github.com/simonw/datasette/issues/2168#issuecomment-1701823609 | https://api.github.com/repos/simonw/datasette/issues/2168 | IC_kwDOBm6k_c5lb8R5 | simonw 9599 | 2023-08-31T21:43:06Z | 2023-08-31T21:44:13Z | OWNER | Not sure what to call this. Maybe Or perhaps it's simpler than that, something like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Consider a request/response wrapping hook slightly higher level than asgi_wrapper() 1876353656 | |
1700291967 | https://github.com/simonw/datasette/issues/2157#issuecomment-1700291967 | https://api.github.com/repos/simonw/datasette/issues/2157 | IC_kwDOBm6k_c5lWGV_ | asg017 15178711 | 2023-08-31T02:45:56Z | 2023-08-31T02:45:56Z | CONTRIBUTOR | @simonw what do you think about adding a My rationale: some plugins may require, or strongly encourage, a persistent internal database ( |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Proposal: Make the `_internal` database persistent, customizable, and hidden 1865869205 | |
1699926384 | https://github.com/simonw/datasette/issues/1092#issuecomment-1699926384 | https://api.github.com/repos/simonw/datasette/issues/1092 | IC_kwDOBm6k_c5lUtFw | simonw 9599 | 2023-08-30T22:17:42Z | 2023-08-30T22:17:42Z | OWNER | This is implemented now: - https://docs.datasette.io/en/stable/internals.html#await-ensure-permissions-actor-permissions |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Make cascading permission checks available to plugins 742041667 | |
1699925224 | https://github.com/simonw/datasette/issues/1190#issuecomment-1699925224 | https://api.github.com/repos/simonw/datasette/issues/1190 | IC_kwDOBm6k_c5lUszo | simonw 9599 | 2023-08-30T22:16:38Z | 2023-08-30T22:16:38Z | OWNER | This is going to happen in this tool instead: - https://github.com/simonw/dclient |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette publish upload` mechanism for uploading databases to an existing Datasette instance 787098146 | |
1699910555 | https://github.com/simonw/datasette/pull/2165#issuecomment-1699910555 | https://api.github.com/repos/simonw/datasette/issues/2165 | IC_kwDOBm6k_c5lUpOb | simonw 9599 | 2023-08-30T22:05:14Z | 2023-08-30T22:05:14Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
DATASETTE_LOAD_PLUGINS environment variable for loading specific plugins 1874327336 | ||
1699812599 | https://github.com/simonw/datasette/pull/2165#issuecomment-1699812599 | https://api.github.com/repos/simonw/datasette/issues/2165 | IC_kwDOBm6k_c5lURT3 | codecov[bot] 22429695 | 2023-08-30T20:43:19Z | 2023-08-30T22:05:05Z | NONE | Codecov ReportPatch coverage:
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2165 +/- ## ========================================== - Coverage 92.84% 92.68% -0.17% ========================================== Files 40 40 Lines 5998 6012 +14 ========================================== + Hits 5569 5572 +3 - Misses 429 440 +11 ``` | [Files Changed](https://app.codecov.io/gh/simonw/datasette/pull/2165?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [datasette/plugins.py](https://app.codecov.io/gh/simonw/datasette/pull/2165?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL3BsdWdpbnMucHk=) | `64.58% <26.66%> (-17.77%)` | :arrow_down: |:umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
DATASETTE_LOAD_PLUGINS environment variable for loading specific plugins 1874327336 | |
1699884314 | https://github.com/simonw/datasette/pull/2165#issuecomment-1699884314 | https://api.github.com/repos/simonw/datasette/issues/2165 | IC_kwDOBm6k_c5lUi0a | simonw 9599 | 2023-08-30T21:38:29Z | 2023-08-30T21:39:51Z | OWNER | Here's the reason for that name disparity: Note how the And that's looking things up in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
DATASETTE_LOAD_PLUGINS environment variable for loading specific plugins 1874327336 | |
1699811810 | https://github.com/simonw/datasette/pull/2165#issuecomment-1699811810 | https://api.github.com/repos/simonw/datasette/issues/2165 | IC_kwDOBm6k_c5lURHi | simonw 9599 | 2023-08-30T20:42:41Z | 2023-08-30T20:42:41Z | OWNER | The
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
DATASETTE_LOAD_PLUGINS environment variable for loading specific plugins 1874327336 | |
1699809688 | https://github.com/simonw/datasette/pull/2165#issuecomment-1699809688 | https://api.github.com/repos/simonw/datasette/issues/2165 | IC_kwDOBm6k_c5lUQmY | simonw 9599 | 2023-08-30T20:41:06Z | 2023-08-30T20:41:06Z | OWNER | Slight weirdness: I noticed that the output from the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
DATASETTE_LOAD_PLUGINS environment variable for loading specific plugins 1874327336 | |
1699802028 | https://github.com/simonw/datasette/pull/2165#issuecomment-1699802028 | https://api.github.com/repos/simonw/datasette/issues/2165 | IC_kwDOBm6k_c5lUOus | simonw 9599 | 2023-08-30T20:35:02Z | 2023-08-30T20:35:02Z | OWNER | Testing this is going to be a bit of a pain. I think I'll add a whole separate test block to CI which installs a couple of plugins and then exercises this feature using I'll use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
DATASETTE_LOAD_PLUGINS environment variable for loading specific plugins 1874327336 | |
1699728102 | https://github.com/simonw/datasette/issues/2164#issuecomment-1699728102 | https://api.github.com/repos/simonw/datasette/issues/2164 | IC_kwDOBm6k_c5lT8rm | simonw 9599 | 2023-08-30T19:35:32Z | 2023-08-30T19:35:47Z | OWNER | Figured this out so far with the help of GPT-4: https://chat.openai.com/share/0e785865-621b-4fb3-ba05-7449e57c8496 Now this works:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to only load a specific list of plugins 1874255116 | |
1697818917 | https://github.com/simonw/datasette/issues/2163#issuecomment-1697818917 | https://api.github.com/repos/simonw/datasette/issues/2163 | IC_kwDOBm6k_c5lMqkl | simonw 9599 | 2023-08-29T16:56:20Z | 2023-08-29T16:56:20Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename core_X to catalog_X in the internals 1872043170 | ||
1691798722 | https://github.com/simonw/datasette/pull/2154#issuecomment-1691798722 | https://api.github.com/repos/simonw/datasette/issues/2154 | IC_kwDOBm6k_c5k1szC | codecov[bot] 22429695 | 2023-08-24T14:31:42Z | 2023-08-29T16:15:12Z | NONE | Codecov ReportPatch coverage:
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2154 +/- ## ========================================== + Coverage 92.82% 92.85% +0.03% ========================================== Files 40 40 Lines 5948 6008 +60 ========================================== + Hits 5521 5579 +58 - Misses 427 429 +2 ``` | [Files Changed](https://app.codecov.io/gh/simonw/datasette/pull/2154?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [datasette/views/special.py](https://app.codecov.io/gh/simonw/datasette/pull/2154?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL3ZpZXdzL3NwZWNpYWwucHk=) | `94.06% <ø> (-0.85%)` | :arrow_down: | | [datasette/app.py](https://app.codecov.io/gh/simonw/datasette/pull/2154?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL2FwcC5weQ==) | `94.37% <100.00%> (+0.07%)` | :arrow_up: | | [datasette/default\_permissions.py](https://app.codecov.io/gh/simonw/datasette/pull/2154?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL2RlZmF1bHRfcGVybWlzc2lvbnMucHk=) | `97.48% <100.00%> (+0.57%)` | :arrow_up: | | [datasette/permissions.py](https://app.codecov.io/gh/simonw/datasette/pull/2154?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL3Blcm1pc3Npb25zLnB5) | `100.00% <100.00%> (ø)` | | ... and [3 files with indirect coverage changes](https://app.codecov.io/gh/simonw/datasette/pull/2154/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison):umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cascade for restricted token view-table/view-database/view-instance operations 1865281760 | |
1697725150 | https://github.com/simonw/datasette/pull/2154#issuecomment-1697725150 | https://api.github.com/repos/simonw/datasette/issues/2154 | IC_kwDOBm6k_c5lMTre | simonw 9599 | 2023-08-29T15:54:12Z | 2023-08-29T15:54:12Z | OWNER | In that last commit I also upgraded Last step is to refactor the code to use that new property. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cascade for restricted token view-table/view-database/view-instance operations 1865281760 | |
1697612168 | https://github.com/simonw/datasette/pull/2154#issuecomment-1697612168 | https://api.github.com/repos/simonw/datasette/issues/2154 | IC_kwDOBm6k_c5lL4GI | simonw 9599 | 2023-08-29T14:57:54Z | 2023-08-29T14:57:54Z | OWNER | The code to refactor is this: https://github.com/simonw/datasette/blob/d64a9896f743f87b673d58859a0ec16685594e79/datasette/default_permissions.py#L181-L280 I'm going to turn that into a more general |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cascade for restricted token view-table/view-database/view-instance operations 1865281760 | |
1696710911 | https://github.com/simonw/datasette/pull/2162#issuecomment-1696710911 | https://api.github.com/repos/simonw/datasette/issues/2162 | IC_kwDOBm6k_c5lIcD_ | simonw 9599 | 2023-08-29T03:23:44Z | 2023-08-29T03:23:44Z | OWNER | I'm going to merge this so we can see how it feels. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add new `--internal internal.db` option, deprecate legacy `_internal` database 1870672704 | |
1696709110 | https://github.com/simonw/datasette/pull/2162#issuecomment-1696709110 | https://api.github.com/repos/simonw/datasette/issues/2162 | IC_kwDOBm6k_c5lIbn2 | simonw 9599 | 2023-08-29T03:20:40Z | 2023-08-29T03:22:47Z | OWNER |
I'm completely happy for the I don't think it causes any harm, and it could even be quite useful to have them visible on disk - other applications could read the Having those tables stick around in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add new `--internal internal.db` option, deprecate legacy `_internal` database 1870672704 | |
1696594855 | https://github.com/simonw/datasette/pull/2162#issuecomment-1696594855 | https://api.github.com/repos/simonw/datasette/issues/2162 | IC_kwDOBm6k_c5lH_un | codecov[bot] 22429695 | 2023-08-29T00:19:29Z | 2023-08-29T03:22:21Z | NONE | Codecov ReportPatch coverage:
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2162 +/- ## ========================================== - Coverage 92.82% 92.79% -0.03% ========================================== Files 40 40 Lines 5948 5953 +5 ========================================== + Hits 5521 5524 +3 - Misses 427 429 +2 ``` | [Files Changed](https://app.codecov.io/gh/simonw/datasette/pull/2162?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [datasette/default\_permissions.py](https://app.codecov.io/gh/simonw/datasette/pull/2162?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL2RlZmF1bHRfcGVybWlzc2lvbnMucHk=) | `96.87% <ø> (-0.04%)` | :arrow_down: | | [datasette/app.py](https://app.codecov.io/gh/simonw/datasette/pull/2162?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL2FwcC5weQ==) | `94.32% <100.00%> (+0.03%)` | :arrow_up: | | [datasette/cli.py](https://app.codecov.io/gh/simonw/datasette/pull/2162?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL2NsaS5weQ==) | `82.53% <100.00%> (-0.06%)` | :arrow_down: | | [datasette/database.py](https://app.codecov.io/gh/simonw/datasette/pull/2162?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL2RhdGFiYXNlLnB5) | `94.72% <100.00%> (+0.04%)` | :arrow_up: | | [datasette/utils/internal\_db.py](https://app.codecov.io/gh/simonw/datasette/pull/2162?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL3V0aWxzL2ludGVybmFsX2RiLnB5) | `100.00% <100.00%> (ø)` | | | [datasette/views/database.py](https://app.codecov.io/gh/simonw/datasette/pull/2162?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL3ZpZXdzL2RhdGFiYXNlLnB5) | `95.45% <100.00%> (ø)` | | | [datasette/views/special.py](https://app.codecov.io/gh/simonw/datasette/pull/2162?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL3ZpZXdzL3NwZWNpYWwucHk=) | `94.06% <100.00%> (-0.85%)` | :arrow_down: |:umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add new `--internal internal.db` option, deprecate legacy `_internal` database 1870672704 | |
1696707458 | https://github.com/simonw/datasette/pull/2162#issuecomment-1696707458 | https://api.github.com/repos/simonw/datasette/issues/2162 | IC_kwDOBm6k_c5lIbOC | simonw 9599 | 2023-08-29T03:17:54Z | 2023-08-29T03:17:54Z | OWNER | Documentation preview: https://datasette--2162.org.readthedocs.build/en/2162/internals.html#datasette-s-internal-database |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add new `--internal internal.db` option, deprecate legacy `_internal` database 1870672704 | |
1696644066 | https://github.com/simonw/datasette/pull/2154#issuecomment-1696644066 | https://api.github.com/repos/simonw/datasette/issues/2154 | IC_kwDOBm6k_c5lILvi | simonw 9599 | 2023-08-29T01:37:47Z | 2023-08-29T03:00:25Z | OWNER | Code for this might be cleaner with a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cascade for restricted token view-table/view-database/view-instance operations 1865281760 | |
1696642671 | https://github.com/simonw/datasette/pull/2154#issuecomment-1696642671 | https://api.github.com/repos/simonw/datasette/issues/2154 | IC_kwDOBm6k_c5lILZv | simonw 9599 | 2023-08-29T01:35:37Z | 2023-08-29T01:35:37Z | OWNER | Reminder that I also need to confirm that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cascade for restricted token view-table/view-database/view-instance operations 1865281760 | |
1696618784 | https://github.com/simonw/datasette/pull/2154#issuecomment-1696618784 | https://api.github.com/repos/simonw/datasette/issues/2154 | IC_kwDOBm6k_c5lIFkg | simonw 9599 | 2023-08-29T00:58:34Z | 2023-08-29T00:58:34Z | OWNER | Should this have |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cascade for restricted token view-table/view-database/view-instance operations 1865281760 | |
1695754277 | https://github.com/simonw/datasette/pull/2160#issuecomment-1695754277 | https://api.github.com/repos/simonw/datasette/issues/2160 | IC_kwDOBm6k_c5lEygl | codecov[bot] 22429695 | 2023-08-28T14:00:17Z | 2023-08-29T00:32:52Z | NONE | Codecov ReportPatch and project coverage have no change.
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2160 +/- ## ======================================= Coverage 92.82% 92.82% ======================================= Files 40 40 Lines 5948 5948 ======================================= Hits 5521 5521 Misses 427 427 ```:umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1869807874 | |
1696595326 | https://github.com/simonw/datasette/pull/2160#issuecomment-1696595326 | https://api.github.com/repos/simonw/datasette/issues/2160 | IC_kwDOBm6k_c5lH_1- | simonw 9599 | 2023-08-29T00:20:08Z | 2023-08-29T00:20:08Z | OWNER | Cog failed! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1869807874 | |
1696592763 | https://github.com/simonw/datasette/pull/2160#issuecomment-1696592763 | https://api.github.com/repos/simonw/datasette/issues/2160 | IC_kwDOBm6k_c5lH_N7 | simonw 9599 | 2023-08-29T00:16:38Z | 2023-08-29T00:16:38Z | OWNER | Since this bumps Sphinx I'm manually reviewing the ReadTheDocs preview a bit, looks good to me: https://datasette--2160.org.readthedocs.build/en/2160/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1869807874 | |
1696591957 | https://github.com/simonw/datasette/pull/2148#issuecomment-1696591957 | https://api.github.com/repos/simonw/datasette/issues/2148 | IC_kwDOBm6k_c5lH_BV | dependabot[bot] 49699333 | 2023-08-29T00:15:29Z | 2023-08-29T00:15:29Z | CONTRIBUTOR | This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1859415334 | |
1696591943 | https://github.com/simonw/datasette/pull/2148#issuecomment-1696591943 | https://api.github.com/repos/simonw/datasette/issues/2148 | IC_kwDOBm6k_c5lH_BH | simonw 9599 | 2023-08-29T00:15:27Z | 2023-08-29T00:15:27Z | OWNER | Now solving this here: - #2160 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1859415334 | |
1696586767 | https://github.com/simonw/datasette/pull/2160#issuecomment-1696586767 | https://api.github.com/repos/simonw/datasette/issues/2160 | IC_kwDOBm6k_c5lH9wP | simonw 9599 | 2023-08-29T00:08:26Z | 2023-08-29T00:08:35Z | OWNER | https://github.com/simonw/datasette/issues/2148#issuecomment-1689177556
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1869807874 | |
1696586213 | https://github.com/simonw/datasette/pull/2160#issuecomment-1696586213 | https://api.github.com/repos/simonw/datasette/issues/2160 | IC_kwDOBm6k_c5lH9nl | simonw 9599 | 2023-08-29T00:07:46Z | 2023-08-29T00:07:46Z | OWNER | I figured out why this was failing in: - https://github.com/simonw/datasette/pull/2148 It's because Sphinx dropped support for Python 3.8. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1869807874 | |
1696378239 | https://github.com/simonw/datasette/issues/2102#issuecomment-1696378239 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5lHK1_ | simonw 9599 | 2023-08-28T20:38:01Z | 2023-08-28T20:38:01Z | OWNER | I want to test "for this set of restrictions, does a GET/POST to this path return 200 or 403"? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1696361304 | https://github.com/simonw/datasette/issues/2102#issuecomment-1696361304 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5lHGtY | simonw 9599 | 2023-08-28T20:23:47Z | 2023-08-28T20:24:35Z | OWNER | Here's an existing relevant test: It's not quite right for this new set of tests though, since they need to be exercising actual endpoints ( |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1696355634 | https://github.com/simonw/datasette/issues/2153#issuecomment-1696355634 | https://api.github.com/repos/simonw/datasette/issues/2153 | IC_kwDOBm6k_c5lHFUy | simonw 9599 | 2023-08-28T20:19:15Z | 2023-08-28T20:19:15Z | OWNER | Documentation: - https://docs.datasette.io/en/latest/cli-reference.html#datasette-get |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette --get --actor option 1865232341 | |
1696267473 | https://github.com/simonw/datasette/pull/2161#issuecomment-1696267473 | https://api.github.com/repos/simonw/datasette/issues/2161 | IC_kwDOBm6k_c5lGvzR | codecov[bot] 22429695 | 2023-08-28T19:38:28Z | 2023-08-28T19:39:33Z | NONE | Codecov ReportPatch coverage:
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2161 +/- ## ========================================== + Coverage 92.76% 92.81% +0.05% ========================================== Files 40 40 Lines 5943 5944 +1 ========================================== + Hits 5513 5517 +4 + Misses 430 427 -3 ``` | [Files Changed](https://app.codecov.io/gh/simonw/datasette/pull/2161?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [datasette/cli.py](https://app.codecov.io/gh/simonw/datasette/pull/2161?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-ZGF0YXNldHRlL2NsaS5weQ==) | `82.37% <75.00%> (+1.02%)` | :arrow_up: |:umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
-s/--setting x y gets merged into datasette.yml, refs #2143, #2156 1870345352 | |
1696260446 | https://github.com/simonw/datasette/issues/2156#issuecomment-1696260446 | https://api.github.com/repos/simonw/datasette/issues/2156 | IC_kwDOBm6k_c5lGuFe | simonw 9599 | 2023-08-28T19:33:05Z | 2023-08-28T19:33:05Z | OWNER | Now a PR: - #2161 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette -s/--setting option for setting nested configuration options 1865649347 | |
1695736691 | https://github.com/simonw/datasette/pull/2152#issuecomment-1695736691 | https://api.github.com/repos/simonw/datasette/issues/2152 | IC_kwDOBm6k_c5lEuNz | dependabot[bot] 49699333 | 2023-08-28T13:49:35Z | 2023-08-28T13:49:35Z | CONTRIBUTOR | Superseded by #2160. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 3 updates 1865174661 | |
1694823972 | https://github.com/simonw/sqlite-utils/issues/588#issuecomment-1694823972 | https://api.github.com/repos/simonw/sqlite-utils/issues/588 | IC_kwDOCGYnMM5lBPYk | simonw 9599 | 2023-08-28T00:41:54Z | 2023-08-28T00:41:54Z | OWNER | Tips on typing |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`table.get(column=value)` option for retrieving things not by their primary key 1868713944 | |
1691710474 | https://github.com/simonw/datasette/pull/2152#issuecomment-1691710474 | https://api.github.com/repos/simonw/datasette/issues/2152 | IC_kwDOBm6k_c5k1XQK | codecov[bot] 22429695 | 2023-08-24T13:45:21Z | 2023-08-25T13:18:34Z | NONE | Codecov ReportPatch and project coverage have no change.
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2152 +/- ## ======================================= Coverage 92.76% 92.76% ======================================= Files 40 40 Lines 5943 5919 -24 ======================================= - Hits 5513 5491 -22 + Misses 430 428 -2 ``` [see 3 files with indirect coverage changes](https://app.codecov.io/gh/simonw/datasette/pull/2152/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison):umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 3 updates 1865174661 | |
1692494455 | https://github.com/simonw/datasette/issues/950#issuecomment-1692494455 | https://api.github.com/repos/simonw/datasette/issues/950 | IC_kwDOBm6k_c5k4Wp3 | simonw 9599 | 2023-08-24T22:26:08Z | 2023-08-24T22:26:08Z | OWNER | Closing this issue in favour of this one: - #2157 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Private/secret databases: database files that are only visible to plugins 685806511 | |
1692465763 | https://github.com/simonw/datasette/issues/2157#issuecomment-1692465763 | https://api.github.com/repos/simonw/datasette/issues/2157 | IC_kwDOBm6k_c5k4Ppj | simonw 9599 | 2023-08-24T21:54:29Z | 2023-08-24T21:54:29Z | OWNER | But yes, I'm a big +1 on this whole plan. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Proposal: Make the `_internal` database persistent, customizable, and hidden 1865869205 | |
1692465334 | https://github.com/simonw/datasette/issues/2157#issuecomment-1692465334 | https://api.github.com/repos/simonw/datasette/issues/2157 | IC_kwDOBm6k_c5k4Pi2 | simonw 9599 | 2023-08-24T21:54:09Z | 2023-08-24T21:54:09Z | OWNER | We discussed this in-person this morning and these notes reflect what we talked about perfectly. I've had so many bugs with plugins that I've written myself that have forgotten to special-case the Just one tiny disagreement: for Show me all rows in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Proposal: Make the `_internal` database persistent, customizable, and hidden 1865869205 | |
1692322342 | https://github.com/simonw/datasette/issues/1241#issuecomment-1692322342 | https://api.github.com/repos/simonw/datasette/issues/1241 | IC_kwDOBm6k_c5k3som | publicmatt 52261150 | 2023-08-24T19:56:15Z | 2023-08-24T20:09:52Z | NONE | Something to think about, but I hate how long the url is when sharing a custom SQL query. Would it be possible to hash the query and state of a page instead so the url is more manageable? The mapping from hash to query would have to be stored in order to recover/lookup the page after sharing. It's not uncommon to have things like this currently: I'm thinking a plugin like https://datasette.io/plugins/datasette-query-files, but could be created and managed from the UI (with the right permissions). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Share button for copying current URL 814595021 | |
1692210044 | https://github.com/simonw/datasette/issues/2143#issuecomment-1692210044 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5k3RN8 | simonw 9599 | 2023-08-24T18:28:27Z | 2023-08-24T18:28:27Z | OWNER | Just spotted this: https://github.com/simonw/datasette/blob/17ec309e14f9c2e90035ba33f2f38ecc5afba2fa/datasette/app.py#L328-L332 Looks to me like that second bit of code doesn't yet handle This code does though:
https://github.com/simonw/datasette/blob/d97e82df3c8a3f2e97038d7080167be9bb74a68d/datasette/utils/init.py#L980-L990 That So we should rename it to something better like |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1692206200 | https://github.com/simonw/datasette/issues/2156#issuecomment-1692206200 | https://api.github.com/repos/simonw/datasette/issues/2156 | IC_kwDOBm6k_c5k3QR4 | simonw 9599 | 2023-08-24T18:25:23Z | 2023-08-24T18:25:23Z | OWNER | Ran out of time for this, I'll look at the next step next week. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette -s/--setting option for setting nested configuration options 1865649347 | |
1692201647 | https://github.com/simonw/datasette/issues/2156#issuecomment-1692201647 | https://api.github.com/repos/simonw/datasette/issues/2156 | IC_kwDOBm6k_c5k3PKv | simonw 9599 | 2023-08-24T18:21:53Z | 2023-08-24T18:21:53Z | OWNER | Oops, that was meant to be a PR. It's just a utility function though so it's safe to land already. I'll do a PR for the actual integration of it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette -s/--setting option for setting nested configuration options 1865649347 | |
1692186522 | https://github.com/simonw/datasette/issues/2156#issuecomment-1692186522 | https://api.github.com/repos/simonw/datasette/issues/2156 | IC_kwDOBm6k_c5k3Lea | simonw 9599 | 2023-08-24T18:10:04Z | 2023-08-24T18:10:04Z | OWNER | I have an implementation in https://github.com/simonw/datasette/issues/2143#issuecomment-1690792514 too - I'm going to land that as a PR. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette -s/--setting option for setting nested configuration options 1865649347 | |
1692182910 | https://github.com/simonw/datasette/issues/2143#issuecomment-1692182910 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5k3Kl- | simonw 9599 | 2023-08-24T18:06:57Z | 2023-08-24T18:08:17Z | OWNER | The other thing that could work is something like this:
I quite like this, because it could replace the really ugly |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1692180683 | https://github.com/simonw/datasette/issues/2143#issuecomment-1692180683 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5k3KDL | simonw 9599 | 2023-08-24T18:05:17Z | 2023-08-24T18:05:17Z | OWNER | That's a really good call, thanks @rclement - environment variable configuration totally makes sense here. Need to figure out the right syntax for that. Something like this perhaps:
I checked and |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1691845306 | https://github.com/simonw/datasette/pull/2154#issuecomment-1691845306 | https://api.github.com/repos/simonw/datasette/issues/2154 | IC_kwDOBm6k_c5k14K6 | simonw 9599 | 2023-08-24T14:57:39Z | 2023-08-24T14:57:39Z | OWNER | Notes on manual testing so far - it looks like this might be working! - https://github.com/simonw/datasette/issues/2102#issuecomment-1691824713 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cascade for restricted token view-table/view-database/view-instance operations 1865281760 | |
1691842259 | https://github.com/simonw/datasette/issues/2102#issuecomment-1691842259 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5k13bT | simonw 9599 | 2023-08-24T14:55:54Z | 2023-08-24T14:55:54Z | OWNER | So what's needed to finish this is:
- Tests that demonstrate that nothing is revealed that shouldn't be by tokens restricted in this way
- Similar tests for other permissions like |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1691824713 | https://github.com/simonw/datasette/issues/2102#issuecomment-1691824713 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5k1zJJ | simonw 9599 | 2023-08-24T14:45:49Z | 2023-08-24T14:45:49Z | OWNER | I tested this out against a Datasette Cloud instance. I created a restricted token and tested it like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1691788400 | https://github.com/simonw/datasette/pull/2154#issuecomment-1691788400 | https://api.github.com/repos/simonw/datasette/issues/2154 | IC_kwDOBm6k_c5k1qRw | simonw 9599 | 2023-08-24T14:25:56Z | 2023-08-24T14:25:56Z | OWNER | Can be tested with:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cascade for restricted token view-table/view-database/view-instance operations 1865281760 | |
1691779180 | https://github.com/simonw/datasette/issues/2153#issuecomment-1691779180 | https://api.github.com/repos/simonw/datasette/issues/2153 | IC_kwDOBm6k_c5k1oBs | simonw 9599 | 2023-08-24T14:21:03Z | 2023-08-24T14:21:03Z | OWNER |
Which is a good argument for moving this functionality to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette --get --actor option 1865232341 | |
1691767797 | https://github.com/simonw/datasette/pull/2152#issuecomment-1691767797 | https://api.github.com/repos/simonw/datasette/issues/2152 | IC_kwDOBm6k_c5k1lP1 | simonw 9599 | 2023-08-24T14:15:10Z | 2023-08-24T14:15:10Z | OWNER | This is broken because Sphinx no longer supports Python 3.8. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump the python-packages group with 3 updates 1865174661 | |
1691763427 | https://github.com/simonw/datasette/issues/2153#issuecomment-1691763427 | https://api.github.com/repos/simonw/datasette/issues/2153 | IC_kwDOBm6k_c5k1kLj | simonw 9599 | 2023-08-24T14:12:43Z | 2023-08-24T14:12:43Z | OWNER | Annoying that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette --get --actor option 1865232341 | |
1691761685 | https://github.com/simonw/datasette/issues/2153#issuecomment-1691761685 | https://api.github.com/repos/simonw/datasette/issues/2153 | IC_kwDOBm6k_c5k1jwV | simonw 9599 | 2023-08-24T14:11:41Z | 2023-08-24T14:11:41Z | OWNER | Another option: implement this as a plugin, providing a new command like Or implement |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette --get --actor option 1865232341 | |
1691758168 | https://github.com/simonw/datasette/issues/2102#issuecomment-1691758168 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5k1i5Y | simonw 9599 | 2023-08-24T14:09:45Z | 2023-08-24T14:09:45Z | OWNER | I'm going to implement this in a branch to make it easier to test out. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1691753489 | https://github.com/simonw/datasette/issues/2153#issuecomment-1691753489 | https://api.github.com/repos/simonw/datasette/issues/2153 | IC_kwDOBm6k_c5k1hwR | simonw 9599 | 2023-08-24T14:07:25Z | 2023-08-24T14:09:16Z | OWNER | Building that
I feel like the names would have to have a common prefix though. Maybe something like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette --get --actor option 1865232341 | |
1691094870 | https://github.com/simonw/datasette/issues/2143#issuecomment-1691094870 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5kzA9W | rclement 1238873 | 2023-08-24T06:43:40Z | 2023-08-24T06:43:40Z | NONE | If I may, the "path-like" configuration is great but one thing that would be even greater: allowing the same configuration to be provided using environment variables. For instance:
could also be provided using:
(I do not like mixing FYI, you could take some inspiration from another great open source data project, Metabase: https://www.metabase.com/docs/latest/configuring-metabase/config-file https://www.metabase.com/docs/latest/configuring-metabase/environment-variables |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1691045051 | https://github.com/simonw/datasette/issues/2102#issuecomment-1691045051 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5ky0y7 | simonw 9599 | 2023-08-24T05:51:59Z | 2023-08-24T05:51:59Z | OWNER | With that fix in place, this works:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1691044283 | https://github.com/simonw/datasette/issues/2102#issuecomment-1691044283 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5ky0m7 | simonw 9599 | 2023-08-24T05:51:02Z | 2023-08-24T05:51:02Z | OWNER | Also need to confirm that permissions like |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1691043475 | https://github.com/simonw/datasette/issues/2102#issuecomment-1691043475 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5ky0aT | simonw 9599 | 2023-08-24T05:50:04Z | 2023-08-24T05:50:04Z | OWNER | On first test this seems to work! ```diff diff --git a/datasette/default_permissions.py b/datasette/default_permissions.py index 63a66c3c..9303dac8 100644 --- a/datasette/default_permissions.py +++ b/datasette/default_permissions.py @@ -187,6 +187,30 @@ def permission_allowed_actor_restrictions(datasette, actor, action, resource): return None _r = actor.get("_r")
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1691037971 | https://github.com/simonw/datasette/issues/2102#issuecomment-1691037971 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5kyzET | simonw 9599 | 2023-08-24T05:42:47Z | 2023-08-24T05:42:47Z | OWNER | I applied a fun trick to help test this out:
With that in place I can try this, with a token that has view-instance and view-database and view-table:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1691036559 | https://github.com/simonw/datasette/issues/2102#issuecomment-1691036559 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5kyyuP | simonw 9599 | 2023-08-24T05:40:53Z | 2023-08-24T05:40:53Z | OWNER | There might be an easier way to solve this. Here's some permission checks that run when hitting ``` permission_allowed: action=view-table, resource=('fixtures', 'facetable'), actor={'_r': {'a': ['vi'], 'd': {'fixtures': ['vd']}, 'r': {'fixtures': {'facetable': ['vt']}}}, 'a': 'user'} File "/datasette/views/table.py", line 727, in table_view_traced view_data = await table_view_data( File "/datasette/views/table.py", line 875, in table_view_data visible, private = await datasette.check_visibility( File "/datasette/app.py", line 890, in check_visibility await self.ensure_permissions(actor, permissions) permission_allowed: action=view-database, resource=fixtures, actor={'_r': {'a': ['vi'], 'd': {'fixtures': ['vd']}, 'r': {'fixtures': {'facetable': ['vt']}}}, 'a': 'user'} File "/datasette/views/table.py", line 727, in table_view_traced view_data = await table_view_data( File "/datasette/views/table.py", line 875, in table_view_data visible, private = await datasette.check_visibility( File "/datasette/app.py", line 890, in check_visibility await self.ensure_permissions(actor, permissions) permission_allowed: action=view-instance, resource=<None>, actor={'_r': {'a': ['vi'], 'd': {'fixtures': ['vd']}, 'r': {'fixtures': {'facetable': ['vt']}}}, 'a': 'user'} File "/datasette/views/table.py", line 727, in table_view_traced view_data = await table_view_data( File "/datasette/views/table.py", line 875, in table_view_data visible, private = await datasette.check_visibility( File "/datasette/app.py", line 890, in check_visibility await self.ensure_permissions(actor, permissions) ``` That's with a token that has the view instance, view database and view table permissions required. But... what if the restrictions logic said that if you have view-table you automatically also get view-database and view-instance? Would that actually let people do anything they shouldn't be able to do? I don't think it would even let them see a list of tables that they weren't allowed to visit, so it might be OK. I'll try that and see how it works. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1690955706 | https://github.com/simonw/datasette/issues/2147#issuecomment-1690955706 | https://api.github.com/repos/simonw/datasette/issues/2147 | IC_kwDOBm6k_c5kye-6 | jackowayed 18899 | 2023-08-24T03:54:35Z | 2023-08-24T03:54:35Z | NONE | That's fair. The best idea I can think of is that if a plugin wanted to limit intensive queries, it could add LIMITs or something. A hook that gives you visibility of queries and maybe the option to reject felt a little more limited than the existing plugin hooks, so I was trying to think of what else one might want to do while looking at to-be-run queries. But without a real motivating example, I see why you don't want to add that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook for database queries that are run 1858228057 | |
1690800119 | https://github.com/simonw/datasette/issues/2143#issuecomment-1690800119 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5kx4_3 | simonw 9599 | 2023-08-24T00:10:32Z | 2023-08-24T00:39:00Z | OWNER | Something notable about this design is that, because the values in the key-value pairs are treated as JSON first and then strings only if they don't parse cleanly as JSON, it's possible to represent any structure (including nesting structures) using this syntax. You can do things like this if you need to (settings for an imaginary plugin):
That previous design was meant to support round-trips, so you could take any nested JSON object and turn it into an HTMl form or query string where every value can have its own form field, then turn the result back again. For the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1690800641 | https://github.com/simonw/datasette/issues/2143#issuecomment-1690800641 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5kx5IB | simonw 9599 | 2023-08-24T00:11:16Z | 2023-08-24T00:11:16Z | OWNER |
That's a neat example thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1690799608 | https://github.com/simonw/datasette/issues/2143#issuecomment-1690799608 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5kx434 | pkulchenko 77071 | 2023-08-24T00:09:47Z | 2023-08-24T00:10:41Z | NONE | @simonw, FWIW, I do exactly the same thing for one of my projects (both to allow multiple configuration files to be passed on the command line and setting individual values) and it works quite well for me and my users. I even use the same parameter name for both (https://studio.zerobrane.com/doc-configuration#configuration-via-command-line), but I understand why you may want to use different ones for files and individual values. There is one small difference that I accept code snippets, but I don't think it matters much in this case. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1690792514 | https://github.com/simonw/datasette/issues/2143#issuecomment-1690792514 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5kx3JC | simonw 9599 | 2023-08-24T00:00:16Z | 2023-08-24T00:02:55Z | OWNER | I've been thinking about what it might look like to allow command-line arguments to be used to define any of the configuration options in Here's what I've come up with:
def _handle_pair(key: str, value: str) -> dict: """ Turn a key-value pair into a nested dictionary. foo, bar => {'foo': 'bar'} foo.bar, baz => {'foo': {'bar': 'baz'}} foo.bar, [1, 2, 3] => {'foo': {'bar': [1, 2, 3]}} foo.bar, "baz" => {'foo': {'bar': 'baz'}} foo.bar, '{"baz": "qux"}' => {'foo': {'bar': "{'baz': 'qux'}"}} """ try: value = json.loads(value) except json.JSONDecodeError: # If it doesn't parse as JSON, treat it as a string pass
def _combine(base: dict, update: dict) -> dict: """ Recursively merge two dictionaries. """ for key, value in update.items(): if isinstance(value, dict) and key in base and isinstance(base[key], dict): base[key] = _combine(base[key], value) else: base[key] = value return base def handle_pairs(pairs: List[Tuple[str, Any]]) -> dict:
"""
Parse a list of key-value pairs into a nested dictionary.
"""
result = {}
for key, value in pairs:
parsed_pair = _handle_pair(key, value)
result = _combine(result, parsed_pair)
return result
Although... we could keep compatibility by saying that if you call |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1690787394 | https://github.com/simonw/datasette/issues/2143#issuecomment-1690787394 | https://api.github.com/repos/simonw/datasette/issues/2143 | IC_kwDOBm6k_c5kx15C | simonw 9599 | 2023-08-23T23:52:02Z | 2023-08-23T23:52:02Z | OWNER |
Having multiple configs that combine in that way is a really interesting direction.
I'm very keen on separating out the "metadata" - where metadata is the slimmest possible set of things, effectively the data license and the source and the column and table descriptions - from everything else, mainly because I want metadata to be able to travel with the data. One idea that's been discussed before is having an optional mechanism for storing metadata in the SQLite database file itself - potentially in a That's why I'm so keen on splitting out metadata from all of the other stuff - settings and plugin configuration and authentication rules. So really it becomes "true metadata" v.s. "all of the other junk that's accumulated in metadata and |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
De-tangling Metadata before Datasette 1.0 1855885427 | |
1690746371 | https://github.com/simonw/datasette/pull/2151#issuecomment-1690746371 | https://api.github.com/repos/simonw/datasette/issues/2151 | IC_kwDOBm6k_c5kxr4D | codecov[bot] 22429695 | 2023-08-23T22:51:57Z | 2023-08-23T22:58:13Z | NONE | Codecov ReportPatch and project coverage have no change.
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2151 +/- ## ======================================= Coverage 92.73% 92.73% ======================================= Files 40 40 Lines 5919 5919 ======================================= Hits 5489 5489 Misses 430 430 ```:umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Test Datasette on multiple SQLite versions 1864112887 | |
1690705243 | https://github.com/simonw/datasette/issues/2102#issuecomment-1690705243 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5kxh1b | simonw 9599 | 2023-08-23T22:03:54Z | 2023-08-23T22:03:54Z | OWNER | Idea: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1690703764 | https://github.com/simonw/datasette/issues/2102#issuecomment-1690703764 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5kxheU | simonw 9599 | 2023-08-23T22:02:14Z | 2023-08-23T22:02:14Z | OWNER | Built this new test:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
1690693830 | https://github.com/simonw/datasette/issues/2102#issuecomment-1690693830 | https://api.github.com/repos/simonw/datasette/issues/2102 | IC_kwDOBm6k_c5kxfDG | simonw 9599 | 2023-08-23T21:51:52Z | 2023-08-23T21:52:58Z | OWNER | This is the hook in question: https://github.com/simonw/datasette/blob/bdf59eb7db42559e538a637bacfe86d39e5d17ca/datasette/hookspecs.py#L108-L110
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
API tokens with view-table but not view-database/view-instance cannot access the table 1805076818 | |
680262437 | https://github.com/simonw/datasette/issues/950#issuecomment-680262437 | https://api.github.com/repos/simonw/datasette/issues/950 | MDEyOklzc3VlQ29tbWVudDY4MDI2MjQzNw== | simonw 9599 | 2020-08-25T20:49:24Z | 2023-08-23T21:34:09Z | OWNER | The alternative to this would be to use regular databases and control access to them using Authentication and permissions. My concern there is that it's just too easy for someone to mess up their configuration, which would be really bad. I like the idea of a much stronger defense mechanism specifically designed for secrets that should not be exposed. Outside of secrets, passwords and tokens this mechanism could also be useful for the use-case of using Datasette to power websites - as seen on https://www.niche-museums.com/ and https://www.rockybeaches.com/ - maybe those sites don't want to expose their data through their API but still want to use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Private/secret databases: database files that are only visible to plugins 685806511 | |
1690438270 | https://github.com/simonw/datasette/issues/2150#issuecomment-1690438270 | https://api.github.com/repos/simonw/datasette/issues/2150 | IC_kwDOBm6k_c5kwgp- | simonw 9599 | 2023-08-23T18:27:47Z | 2023-08-23T18:27:47Z | OWNER | I added Oh interesting, looks like it's over-ridden here too: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
form label { width: 15% } is a bad default 1863810783 | |
1690435866 | https://github.com/simonw/datasette/issues/2150#issuecomment-1690435866 | https://api.github.com/repos/simonw/datasette/issues/2150 | IC_kwDOBm6k_c5kwgEa | simonw 9599 | 2023-08-23T18:25:51Z | 2023-08-23T18:25:51Z | OWNER | Looks like that affects a few forms: The search form on the table page over-rides it already: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
form label { width: 15% } is a bad default 1863810783 | |
1690432928 | https://github.com/simonw/datasette/issues/2150#issuecomment-1690432928 | https://api.github.com/repos/simonw/datasette/issues/2150 | IC_kwDOBm6k_c5kwfWg | simonw 9599 | 2023-08-23T18:23:26Z | 2023-08-23T18:23:26Z | OWNER | That should be scoped just to the query filters form on the table page. I'll fix it in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
form label { width: 15% } is a bad default 1863810783 | |
1690431509 | https://github.com/simonw/datasette/issues/2150#issuecomment-1690431509 | https://api.github.com/repos/simonw/datasette/issues/2150 | IC_kwDOBm6k_c5kwfAV | simonw 9599 | 2023-08-23T18:22:47Z | 2023-08-23T18:22:47Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
form label { width: 15% } is a bad default 1863810783 | ||
1690423878 | https://github.com/simonw/datasette/issues/2091#issuecomment-1690423878 | https://api.github.com/repos/simonw/datasette/issues/2091 | IC_kwDOBm6k_c5kwdJG | simonw 9599 | 2023-08-23T18:18:18Z | 2023-08-23T18:18:18Z | OWNER | Dupe of: - #2097 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Drop support for Python 3.7 1781022369 | |
1689133247 | https://github.com/simonw/datasette/pull/2148#issuecomment-1689133247 | https://api.github.com/repos/simonw/datasette/issues/2148 | IC_kwDOBm6k_c5kriC_ | codecov[bot] 22429695 | 2023-08-23T01:36:42Z | 2023-08-23T03:09:43Z | NONE | Codecov ReportPatch coverage has no change and project coverage change:
Additional details and impacted files```diff @@ Coverage Diff @@ ## main #2148 +/- ## ========================================== + Coverage 92.71% 92.73% +0.01% ========================================== Files 40 40 Lines 5919 5919 ========================================== + Hits 5488 5489 +1 + Misses 431 430 -1 ``` [see 1 file with indirect coverage changes](https://app.codecov.io/gh/simonw/datasette/pull/2148/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison):umbrella: View full report in Codecov by Sentry. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1859415334 | |
1689207309 | https://github.com/simonw/datasette/issues/2123#issuecomment-1689207309 | https://api.github.com/repos/simonw/datasette/issues/2123 | IC_kwDOBm6k_c5kr0IN | simonw 9599 | 2023-08-23T03:07:27Z | 2023-08-23T03:07:27Z | OWNER |
Yes please! What an odd bug. |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette serve when invoked with --reload interprets the serve command as a file 1825007061 | |
1689206768 | https://github.com/simonw/datasette/issues/2147#issuecomment-1689206768 | https://api.github.com/repos/simonw/datasette/issues/2147 | IC_kwDOBm6k_c5krz_w | simonw 9599 | 2023-08-23T03:06:32Z | 2023-08-23T03:06:32Z | OWNER | I'm less convinced by the "rewrite the query in some way" optional idea. What kind of use-cases can you imagine for that? My hunch is that it's much more likely to cause weird breakages than it is to allow for useful plugin extensions, but I'm willing to be convinced otherwise. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook for database queries that are run 1858228057 | |
1689206170 | https://github.com/simonw/datasette/issues/2147#issuecomment-1689206170 | https://api.github.com/repos/simonw/datasette/issues/2147 | IC_kwDOBm6k_c5krz2a | simonw 9599 | 2023-08-23T03:05:32Z | 2023-08-23T03:05:32Z | OWNER | Interestingly enough there's actually a mechanism that looks like that a bit already: https://github.com/simonw/datasette/blob/64fd1d788eeed2624f107ac699f2370590ae1aa3/datasette/views/database.py#L496-L508 That Against these constants: https://github.com/simonw/datasette/blob/64fd1d788eeed2624f107ac699f2370590ae1aa3/datasette/utils/init.py#L223-L253 Which isn't a million miles away from your suggestion to have a hook that can say if the query should be executed or not. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin hook for database queries that are run 1858228057 | |
1689198413 | https://github.com/simonw/datasette/pull/2148#issuecomment-1689198413 | https://api.github.com/repos/simonw/datasette/issues/2148 | IC_kwDOBm6k_c5krx9N | dependabot[bot] 49699333 | 2023-08-23T02:57:55Z | 2023-08-23T02:57:55Z | CONTRIBUTOR | Looks like this PR has been edited by someone other than Dependabot. That means Dependabot can't rebase it - sorry! If you're happy for Dependabot to recreate it from scratch, overwriting any edits, you can request |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1859415334 | |
1689198368 | https://github.com/simonw/datasette/pull/2148#issuecomment-1689198368 | https://api.github.com/repos/simonw/datasette/issues/2148 | IC_kwDOBm6k_c5krx8g | simonw 9599 | 2023-08-23T02:57:53Z | 2023-08-23T02:57:53Z | OWNER | @dependabot rebase |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump sphinx, furo, blacken-docs dependencies 1859415334 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
user >30