link,duration_open_in_seconds,issue_number,title,login,closed_at,created_at,body,type "{""label"":""simonw/datasette #2169"",""href"":""https://github.com/simonw/datasette/issues/2169""}",32,2169,execute-sql on a database should imply view-database/view-permission,simonw,2023-08-31T22:46:28Z,2023-08-31T22:45:56Z,"I noticed that a token with `execute-sql` permission alone did not work, because it was not allowed to view the instance of the database.",issue "{""label"":""simonw/sqlite-utils #570"",""href"":""https://github.com/simonw/sqlite-utils/issues/570""}",33,570,`sqlite-utils install -e` option,simonw,2023-07-22T18:32:56Z,2023-07-22T18:32:23Z,"As seen in LLM. Needed while working on: - #567",issue "{""label"":""dogsheep/apple-notes-to-sqlite #3"",""href"":""https://github.com/dogsheep/apple-notes-to-sqlite/issues/3""}",25,3,`apple-notes-to-sqlite --dump` option,simonw,2023-03-09T05:06:14Z,2023-03-09T05:05:49Z,"Option that doesn't write to the database at all, it just outputs all the notes to stdout as newline-delimited JSON.",issue "{""label"":""simonw/datasette #1961"",""href"":""https://github.com/simonw/datasette/issues/1961""}",22,1961,Use click.echo() instead of print() for --root option,simonw,2022-12-16T00:55:18Z,2022-12-16T00:54:56Z,"This ensures the URL is output correctly when running under Docker. Closes #1958 ---- :books: Documentation preview :books:: https://datasette--1961.org.readthedocs.build/en/1961/ ",pull "{""label"":""simonw/datasette #1865"",""href"":""https://github.com/simonw/datasette/issues/1865""}",35,1865,Stop syncing main to master,simonw,2022-10-27T13:56:13Z,2022-10-27T13:55:38Z,"I think it's been long enough now that I can drop the code that syncs the main branch to master. I originally added this for people who might be using `datasette publish ... --branch master` - which might only have been me anyway!",issue "{""label"":""simonw/sqlite-utils #466"",""href"":""https://github.com/simonw/sqlite-utils/issues/466""}",4,466,Use Read the Docs action v1 (#463),simonw,2022-08-17T23:11:54Z,2022-08-17T23:11:50Z,"Read the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1`",pull "{""label"":""simonw/sqlite-utils #458"",""href"":""https://github.com/simonw/sqlite-utils/issues/458""}",57,458,Support custom names for registered functions,simonw,2022-07-28T00:13:57Z,2022-07-28T00:13:00Z,"In this example: ```python @db.register_function def reverse_string(s): return """".join(reversed(list(s))) print(db.execute('select reverse_string(""hello"")').fetchone()[0]) ``` There's currently no way to over-ride the automatically selected name for the SQL function.",issue "{""label"":""simonw/datasette #1736"",""href"":""https://github.com/simonw/datasette/issues/1736""}",49,1736,Clean up compatibility with Pyodide,simonw,2022-05-02T20:15:27Z,2022-05-02T20:14:38Z,"Closes #1735, closes #1733",pull "{""label"":""simonw/datasette #1691"",""href"":""https://github.com/simonw/datasette/issues/1691""}",39,1691,Bug in pytest-httpx example,simonw,2022-03-26T22:46:09Z,2022-03-26T22:45:30Z,"https://docs.datasette.io/en/0.61.1/testing_plugins.html#testing-outbound-http-calls-with-pytest-httpx says: ```python async def test_outbound_http_call(httpx_mock): httpx_mock.add_response( url='https://www.example.com/', data='Hello world', ) ``` That's wrong - `data=` should be `text=`. https://github.com/Colin-b/pytest_httpx/blob/v0.20.0/README.md#reply-with-custom-body",issue "{""label"":""simonw/datasette #1572"",""href"":""https://github.com/simonw/datasette/issues/1572""}",24,1572,"""Query took"" should be ""Queries took""",simonw,2021-12-19T04:03:24Z,2021-12-19T04:03:00Z,"This is misleading, since usually there have been more than one query executed: ![CleanShot 2021-12-18 at 20 02 35@2x](https://user-images.githubusercontent.com/9599/146663457-9c4c2900-5cc0-4650-a565-bb1ff0b8a725.png) ",issue "{""label"":""simonw/datasette #1484"",""href"":""https://github.com/simonw/datasette/issues/1484""}",25,1484,GitHub Actions: Add Python 3.10 to the tests,cclauss,2021-10-11T06:03:28Z,2021-10-11T06:03:03Z,,pull "{""label"":""simonw/datasette #1447"",""href"":""https://github.com/simonw/datasette/issues/1447""}",54,1447,Remove underscore from search mode parameter name,wragge,2021-08-25T01:28:58Z,2021-08-25T01:28:04Z,The fulltext search documentation refers to the parameter as `searchmode` but the `metadata.json` example uses `search_mode`. The latter doesn't actually seem to work.,pull "{""label"":""simonw/sqlite-utils #307"",""href"":""https://github.com/simonw/sqlite-utils/issues/307""}",34,307,codespell to spell check documentation,simonw,2021-08-03T16:48:53Z,2021-08-03T16:48:19Z,As seen in https://github.com/simonw/datasette/issues/1417 and https://til.simonwillison.net/python/codespell,issue "{""label"":""simonw/datasette #1416"",""href"":""https://github.com/simonw/datasette/issues/1416""}",43,1416,"Use rich to render tracebacks on errors, if available",simonw,2021-08-03T16:12:51Z,2021-08-03T16:12:08Z,"> Now thinking I should try adding Rich as an optional dependency to Datasette - if it's there, show tracebacks using it. Could be really handy for development > https://twitter.com/simonw/status/1422576091055616003",issue "{""label"":""simonw/datasette #1397"",""href"":""https://github.com/simonw/datasette/issues/1397""}",15,1397,"Fix for race condition in refresh_schemas(), closes #1231",simonw,2021-07-16T19:44:58Z,2021-07-16T19:44:43Z,,pull "{""label"":""simonw/datasette #1347"",""href"":""https://github.com/simonw/datasette/issues/1347""}",19,1347,Test docker platform blair only,blairdrummond,2021-05-28T02:47:28Z,2021-05-28T02:47:09Z,,pull "{""label"":""dogsheep/github-to-sqlite #54"",""href"":""https://github.com/dogsheep/github-to-sqlite/issues/54""}",35,54,github-to-sqlite workflows command,simonw,2020-11-29T21:57:17Z,2020-11-29T21:56:42Z,"A command that fetches the YAML workflows for different repos, parses them and stores them in relational tables would be really useful for maintaining larger numbers of workflows.",issue "{""label"":""dogsheep/dogsheep-beta #25"",""href"":""https://github.com/dogsheep/dogsheep-beta/issues/25""}",54,25,template_debug mechanism,simonw,2020-09-18T22:12:03Z,2020-09-18T22:11:09Z,"> I'd prefer it if errors in these template fragments were displayed as errors inline where the fragment should have been inserted, rather than 500ing the whole page - especially since the template fragments are user-provided and could have all kinds of odd errors in them which should be as easy to debug as possible. _Originally posted by @simonw in https://github.com/dogsheep/dogsheep-beta/issues/24#issuecomment-694554584_",issue "{""label"":""simonw/datasette #958"",""href"":""https://github.com/simonw/datasette/issues/958""}",51,958,Upgrade to latest Black (20.8b1),simonw,2020-09-02T22:25:10Z,2020-09-02T22:24:19Z,"Black has some changes: https://black.readthedocs.io/en/stable/change_log.html#b0 - in particular: > - re-implemented support for explicit trailing commas: now it works consistently within any bracket pair, including nested structures (#1288 and duplicates) > - Black now reindents docstrings when reindenting code around it (#1053)",issue "{""label"":""simonw/datasette #885"",""href"":""https://github.com/simonw/datasette/issues/885""}",10,885,Blog entry about the release,simonw,2020-07-01T22:44:47Z,2020-07-01T22:44:37Z,,issue "{""label"":""simonw/datasette #836"",""href"":""https://github.com/simonw/datasette/issues/836""}",51,836,actor_matches_allow fails to consider all keys,simonw,2020-06-11T22:47:25Z,2020-06-11T22:46:34Z,"actor: `{""id"": ""root""}` allow block: `{""bot_id"": ""my-bot"", ""id"": [""root""]}` This should pass, because the `id` matches - but it fails.",issue "{""label"":""simonw/datasette #769"",""href"":""https://github.com/simonw/datasette/issues/769""}",29,769,Backport of Python 3.8 shutil.copytree,simonw,2020-05-27T18:17:44Z,2020-05-27T18:17:15Z,Closes #744,pull "{""label"":""simonw/datasette #768"",""href"":""https://github.com/simonw/datasette/issues/768""}",7,768,Use dirs_exist_ok=True,simonw,2020-05-21T17:53:51Z,2020-05-21T17:53:44Z,Refs #744,pull "{""label"":""dogsheep/twitter-to-sqlite #46"",""href"":""https://github.com/dogsheep/twitter-to-sqlite/issues/46""}",38,46,Error running 'search' for the first time,simonw,2020-04-30T18:11:58Z,2020-04-30T18:11:20Z,"``` % twitter-to-sqlite search infodemic.db '#infodemic' Traceback (most recent call last): File ""/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/bin/twitter-to-sqlite"", line 11, in load_entry_point('twitter-to-sqlite', 'console_scripts', 'twitter-to-sqlite')() File ""/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py"", line 829, in __call__ return self.main(*args, **kwargs) File ""/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py"", line 782, in main rv = self.invoke(ctx) File ""/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py"", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File ""/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py"", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File ""/Users/simon/.local/share/virtualenvs/twitter-to-sqlite-PBRUqIv6/lib/python3.7/site-packages/click/core.py"", line 610, in invoke return callback(*args, **kwargs) File ""/Users/simon/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/cli.py"", line 867, in search for tweet in tweets: File ""/Users/simon/Dropbox/Development/twitter-to-sqlite/twitter_to_sqlite/utils.py"", line 165, in fetch_timeline [since_type_id, since_key], sqlite3.OperationalError: no such table: since_ids ```",issue "{""label"":""dogsheep/swarm-to-sqlite #7"",""href"":""https://github.com/dogsheep/swarm-to-sqlite/issues/7""}",12,7,Upgrade to sqlite-utils 2.x,simonw,2020-03-28T02:25:03Z,2020-03-28T02:24:51Z,,issue "{""label"":""dogsheep/pocket-to-sqlite #4"",""href"":""https://github.com/dogsheep/pocket-to-sqlite/issues/4""}",37,4,"Store authentication information as ""pocket_access_token"" etc",simonw,2020-03-27T20:43:59Z,2020-03-27T20:43:22Z,The `pocket_` prefix will mean that the same `auth.json` file can be used for other Dogsheep tools without Pocket over-riding a value set by some other tool.,issue "{""label"":""simonw/datasette #630"",""href"":""https://github.com/simonw/datasette/issues/630""}",33,630,Use python:3.8 base Docker image,simonw,2019-11-12T06:03:10Z,2019-11-12T06:02:37Z,Closes #629,pull "{""label"":""dogsheep/github-to-sqlite #7"",""href"":""https://github.com/dogsheep/github-to-sqlite/issues/7""}",32,7,issue-comments command for importing issue comments,simonw,2019-10-13T05:24:30Z,2019-10-13T05:23:58Z,Using this API: https://developer.github.com/v3/issues/comments/,issue "{""label"":""dogsheep/healthkit-to-sqlite #8"",""href"":""https://github.com/dogsheep/healthkit-to-sqlite/issues/8""}",51,8,Use less RAM,simonw,2019-07-24T06:35:52Z,2019-07-24T06:35:01Z,Closes #7,pull "{""label"":""simonw/sqlite-utils #4"",""href"":""https://github.com/simonw/sqlite-utils/issues/4""}",28,4,Fts5,simonw,2019-01-25T06:54:33Z,2019-01-25T06:54:05Z,,pull "{""label"":""simonw/sqlite-utils #1"",""href"":""https://github.com/simonw/sqlite-utils/issues/1""}",25,1,Make .indexes compatible with older SQLite versions,simonw,2018-08-02T15:17:30Z,2018-08-02T15:17:05Z,Older SQLite versions return a different set of columns from the PRAGMA we are using.,pull "{""label"":""simonw/datasette #45"",""href"":""https://github.com/simonw/datasette/issues/45""}",21,45,Run SQLite operations in a thread pool,simonw,2017-11-05T02:27:33Z,2017-11-05T02:27:12Z,"Let's run SQLite operations in threads, so we don't end up blocking our core event loop. These articles are helpful: * https://pymotw.com/3/asyncio/executors.html * https://marlinux.wordpress.com/2017/05/19/python-3-6-asyncio-sqlalchemy/ ",issue "{""label"":""simonw/datasette #2"",""href"":""https://github.com/simonw/datasette/issues/2""}",16,2,Initial proof-of-concept,simonw,2017-10-23T00:45:53Z,2017-10-23T00:45:37Z,Implemented in https://github.com/simonw/stateless-datasets/commit/de04d7a854d71003ffcf98028eab976a936c2dba,issue