issue_comments
10,495 rows sorted by updated_at descending
This data as json, CSV (advanced)
issue >30
- Show column metadata plus links for foreign keys on arbitrary query results 50
- Redesign default .json format 48
- Rethink how .ext formats (v.s. ?_format=) works before 1.0 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
- 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
- Ability to sort (and paginate) by column 31
- Research: demonstrate if parallel SQL queries are worthwhile 31
- link_or_copy_directory() error - Invalid cross-device link 28
- 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
- Redesign register_output_renderer callback 24
- Make it easier to insert geometries, with documentation and maybe code 24
- "datasette insert" command and plugin hook 23
- Datasette Plugins 22
- .json and .csv exports fail to apply base_url 22
- Idea: import CSV to memory, run SQL, export in a single command 22
- …
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1189010812 | https://github.com/simonw/sqlite-utils/issues/423#issuecomment-1189010812 | https://api.github.com/repos/simonw/sqlite-utils/issues/423 | IC_kwDOCGYnMM5G3t18 | fgregg 536941 | 2022-07-19T12:47:39Z | 2022-07-19T12:47:39Z | CONTRIBUTOR | just ran into this! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.extract() doesn't set foreign key when extracted columns contain NULL value 1199158210 | |
1188338136 | https://github.com/simonw/datasette/issues/903#issuecomment-1188338136 | https://api.github.com/repos/simonw/datasette/issues/903 | IC_kwDOBm6k_c5G1JnY | simonw 9599 | 2022-07-18T21:34:33Z | 2022-07-18T21:34:33Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add temporary plugin testing pattern to the testing docs 663145122 | ||
1188317682 | https://github.com/dogsheep/github-to-sqlite/issues/74#issuecomment-1188317682 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/74 | IC_kwDODFdgUs5G1Eny | simonw 9599 | 2022-07-18T21:14:22Z | 2022-07-18T21:14:22Z | MEMBER | That fixed it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
500 error in github-to-sqlite demo 1308461063 | |
1188233729 | https://github.com/dogsheep/github-to-sqlite/issues/74#issuecomment-1188233729 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/74 | IC_kwDODFdgUs5G0wIB | simonw 9599 | 2022-07-18T19:51:02Z | 2022-07-18T19:51:02Z | MEMBER | Takes 30m to deploy the demo! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
500 error in github-to-sqlite demo 1308461063 | |
1188228964 | https://github.com/dogsheep/github-to-sqlite/issues/74#issuecomment-1188228964 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/74 | IC_kwDODFdgUs5G0u9k | simonw 9599 | 2022-07-18T19:45:30Z | 2022-07-18T19:47:35Z | MEMBER |
I'm going to drop the GFM rendering from the demo, and just treat it as regular markdown. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
500 error in github-to-sqlite demo 1308461063 | |
1188223933 | https://github.com/dogsheep/github-to-sqlite/issues/74#issuecomment-1188223933 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/74 | IC_kwDODFdgUs5G0tu9 | simonw 9599 | 2022-07-18T19:40:50Z | 2022-07-18T19:42:41Z | MEMBER | Here's how the demo is deployed: https://github.com/dogsheep/github-to-sqlite/blob/dbac2e5dd8a562b45d8255a265859cf8020ca22a/.github/workflows/deploy-demo.yml#L103-L119 I'm suspicious of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
500 error in github-to-sqlite demo 1308461063 | |
1188225625 | https://github.com/dogsheep/github-to-sqlite/issues/74#issuecomment-1188225625 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/74 | IC_kwDODFdgUs5G0uJZ | simonw 9599 | 2022-07-18T19:41:52Z | 2022-07-18T19:41:52Z | MEMBER | https://github.com/Zopieux/py-gfm says that library is no longer maintained, and suggests https://github.com/Zopieux/pycmarkgfm as an alternative. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
500 error in github-to-sqlite demo 1308461063 | |
1188223299 | https://github.com/dogsheep/github-to-sqlite/pull/73#issuecomment-1188223299 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/73 | IC_kwDODFdgUs5G0tlD | simonw 9599 | 2022-07-18T19:40:06Z | 2022-07-18T19:40:06Z | MEMBER | Thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fixing 'NoneType' object has no attribute 'items' 1261884917 | |
1186659794 | https://github.com/simonw/datasette/pull/1766#issuecomment-1186659794 | https://api.github.com/repos/simonw/datasette/issues/1766 | IC_kwDOBm6k_c5Guv3S | simonw 9599 | 2022-07-18T01:12:12Z | 2022-07-18T01:12:12Z | OWNER | This is a good idea, thanks. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Keep track of config_dir 1292377561 | |
1186657003 | https://github.com/simonw/datasette/pull/1685#issuecomment-1186657003 | https://api.github.com/repos/simonw/datasette/issues/1685 | IC_kwDOBm6k_c5GuvLr | simonw 9599 | 2022-07-18T01:06:58Z | 2022-07-18T01:06:58Z | OWNER | @dependabot rebase |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update jinja2 requirement from <3.1.0,>=2.10.3 to >=2.10.3,<3.2.0 1180778860 | |
1186630298 | https://github.com/simonw/datasette/issues/1770#issuecomment-1186630298 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5Guoqa | simonw 9599 | 2022-07-17T23:29:37Z | 2022-07-17T23:29:37Z | OWNER | Documentation for the new hook: https://docs.datasette.io/en/latest/plugin_hooks.html#handle-exception-datasette-request-exception |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1186629556 | https://github.com/simonw/datasette/issues/1770#issuecomment-1186629556 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5Guoe0 | simonw 9599 | 2022-07-17T23:25:08Z | 2022-07-17T23:25:08Z | OWNER | Keeping this issue open until I've proven the new plugin hook works by releasing a plugin that uses it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1186620367 | https://github.com/simonw/datasette/issues/1770#issuecomment-1186620367 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5GumPP | simonw 9599 | 2022-07-17T22:38:25Z | 2022-07-17T22:38:25Z | OWNER | I think this is the right place to move the code to catch |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1186620168 | https://github.com/simonw/datasette/issues/1770#issuecomment-1186620168 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5GumMI | simonw 9599 | 2022-07-17T22:37:01Z | 2022-07-17T22:37:01Z | OWNER | I need to refactor this code so that Reason is that those already have a plugin hook of their own: My first attempt at this refactored that entire |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1185937664 | https://github.com/simonw/datasette/issues/1770#issuecomment-1185937664 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5Gr_kA | simonw 9599 | 2022-07-15T21:03:09Z | 2022-07-17T22:25:44Z | OWNER | Design decision:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1186002560 | https://github.com/simonw/sqlite-utils/issues/448#issuecomment-1186002560 | https://api.github.com/repos/simonw/sqlite-utils/issues/448 | IC_kwDOCGYnMM5GsPaA | simonw 9599 | 2022-07-15T22:40:40Z | 2022-07-15T22:40:40Z | OWNER | This is very strange. GitHub Actions CI here runs against Windows and installs OK. Marking this as "Help wanted" to see if anyone can figure out what's going on here. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reading rows from a file => AttributeError: '_io.StringIO' object has no attribute 'readinto' 1279144769 | |
1186002019 | https://github.com/simonw/sqlite-utils/issues/450#issuecomment-1186002019 | https://api.github.com/repos/simonw/sqlite-utils/issues/450 | IC_kwDOCGYnMM5GsPRj | simonw 9599 | 2022-07-15T22:39:09Z | 2022-07-15T22:39:09Z | OWNER | Here are all of the changes I made in this issue: https://github.com/simonw/sqlite-utils/compare/e10536c7f59abbb785f092bf83c4ab94c00e31a3...b9a89a0f2c3559989efe65f25a6e1f8fa76fe8b0 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --ignore option to more commands 1292060682 | |
1186001408 | https://github.com/simonw/sqlite-utils/issues/450#issuecomment-1186001408 | https://api.github.com/repos/simonw/sqlite-utils/issues/450 | IC_kwDOCGYnMM5GsPIA | simonw 9599 | 2022-07-15T22:37:40Z | 2022-07-15T22:37:40Z | OWNER | I'm going to skip |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --ignore option to more commands 1292060682 | |
1185983894 | https://github.com/simonw/sqlite-utils/issues/450#issuecomment-1185983894 | https://api.github.com/repos/simonw/sqlite-utils/issues/450 | IC_kwDOCGYnMM5GsK2W | simonw 9599 | 2022-07-15T22:06:29Z | 2022-07-15T22:37:20Z | OWNER | Commands that could have
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --ignore option to more commands 1292060682 | |
1185997860 | https://github.com/simonw/sqlite-utils/issues/450#issuecomment-1185997860 | https://api.github.com/repos/simonw/sqlite-utils/issues/450 | IC_kwDOCGYnMM5GsOQk | simonw 9599 | 2022-07-15T22:32:51Z | 2022-07-15T22:32:51Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --ignore option to more commands 1292060682 | |
1185994282 | https://github.com/simonw/sqlite-utils/issues/450#issuecomment-1185994282 | https://api.github.com/repos/simonw/sqlite-utils/issues/450 | IC_kwDOCGYnMM5GsNYq | simonw 9599 | 2022-07-15T22:24:12Z | 2022-07-15T22:24:12Z | OWNER | I can do this for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --ignore option to more commands 1292060682 | |
1185993791 | https://github.com/simonw/sqlite-utils/issues/450#issuecomment-1185993791 | https://api.github.com/repos/simonw/sqlite-utils/issues/450 | IC_kwDOCGYnMM5GsNQ_ | simonw 9599 | 2022-07-15T22:23:02Z | 2022-07-15T22:23:02Z | OWNER |
Really this highlights that I'm tempted to add |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --ignore option to more commands 1292060682 | |
1185988480 | https://github.com/simonw/sqlite-utils/issues/450#issuecomment-1185988480 | https://api.github.com/repos/simonw/sqlite-utils/issues/450 | IC_kwDOCGYnMM5GsL-A | simonw 9599 | 2022-07-15T22:12:20Z | 2022-07-15T22:12:20Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --ignore option to more commands 1292060682 | |
1185988277 | https://github.com/simonw/sqlite-utils/issues/450#issuecomment-1185988277 | https://api.github.com/repos/simonw/sqlite-utils/issues/450 | IC_kwDOCGYnMM5GsL61 | simonw 9599 | 2022-07-15T22:11:52Z | 2022-07-15T22:11:52Z | OWNER | For |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --ignore option to more commands 1292060682 | |
1185987117 | https://github.com/simonw/sqlite-utils/issues/451#issuecomment-1185987117 | https://api.github.com/repos/simonw/sqlite-utils/issues/451 | IC_kwDOCGYnMM5GsLot | simonw 9599 | 2022-07-15T22:09:33Z | 2022-07-15T22:09:33Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Make sqlite_utils.utils.chunks a documented function 1298531653 | ||
1185982012 | https://github.com/simonw/sqlite-utils/issues/450#issuecomment-1185982012 | https://api.github.com/repos/simonw/sqlite-utils/issues/450 | IC_kwDOCGYnMM5GsKY8 | simonw 9599 | 2022-07-15T22:02:59Z | 2022-07-15T22:03:49Z | OWNER | From https://sqlite-utils.datasette.io/en/latest/cli-reference.html Commands that currently have an
And
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --ignore option to more commands 1292060682 | |
1185975132 | https://github.com/simonw/sqlite-utils/issues/451#issuecomment-1185975132 | https://api.github.com/repos/simonw/sqlite-utils/issues/451 | IC_kwDOCGYnMM5GsItc | simonw 9599 | 2022-07-15T21:53:42Z | 2022-07-15T21:53:42Z | OWNER | Documentation can go here: https://sqlite-utils.datasette.io/en/stable/reference.html#sqlite-utils-utils |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Make sqlite_utils.utils.chunks a documented function 1298531653 | |
1185974145 | https://github.com/simonw/sqlite-utils/issues/453#issuecomment-1185974145 | https://api.github.com/repos/simonw/sqlite-utils/issues/453 | IC_kwDOCGYnMM5GsIeB | simonw 9599 | 2022-07-15T21:52:18Z | 2022-07-15T21:52:18Z | OWNER | I should warn you that this isn't a supported API - I reserve the right to change how it works between release without a major version bump, because it's not part of the documented API surface. You'll be fine if you pin to exact versions of the library though! You may find this recently-documented function useful though: https://sqlite-utils.datasette.io/en/latest/python-api.html#reading-rows-from-a-file See: - #443 I'm going to close this issue for the moment, but if anyone wants to submit a PR that cleans up this I'll happily review it. |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
'unclosed file' warning when using insert_upsert_implementation from Python 1303169663 | |
1185971600 | https://github.com/simonw/sqlite-utils/issues/454#issuecomment-1185971600 | https://api.github.com/repos/simonw/sqlite-utils/issues/454 | IC_kwDOCGYnMM5GsH2Q | simonw 9599 | 2022-07-15T21:48:23Z | 2022-07-15T21:48:23Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI command for duplicating tables 1306548397 | ||
1185970114 | https://github.com/simonw/sqlite-utils/issues/449#issuecomment-1185970114 | https://api.github.com/repos/simonw/sqlite-utils/issues/449 | IC_kwDOCGYnMM5GsHfC | simonw 9599 | 2022-07-15T21:46:13Z | 2022-07-15T21:46:13Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utilities for duplicating tables and creating a table with the results of a query 1279863844 | ||
1185949850 | https://github.com/simonw/sqlite-utils/pull/452#issuecomment-1185949850 | https://api.github.com/repos/simonw/sqlite-utils/issues/452 | IC_kwDOCGYnMM5GsCia | codecov[bot] 22429695 | 2022-07-15T21:15:45Z | 2022-07-15T21:18:34Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #452 +/-=======================================
Coverage 96.60% 96.61% | Impacted Files | Coverage Δ | |
|---|---|---|
| sqlite_utils/db.py | Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add duplicate table feature 1299760627 | |
1185944799 | https://github.com/simonw/datasette/issues/1770#issuecomment-1185944799 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5GsBTf | simonw 9599 | 2022-07-15T21:09:08Z | 2022-07-15T21:09:08Z | OWNER | Had to lookup that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1185943887 | https://github.com/simonw/datasette/issues/1770#issuecomment-1185943887 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5GsBFP | simonw 9599 | 2022-07-15T21:07:53Z | 2022-07-15T21:07:53Z | OWNER | In |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1185939664 | https://github.com/simonw/datasette/issues/1770#issuecomment-1185939664 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5GsADQ | simonw 9599 | 2022-07-15T21:04:19Z | 2022-07-15T21:04:19Z | OWNER | I'll implement this hook and then release it as |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1185935764 | https://github.com/simonw/datasette/issues/1770#issuecomment-1185935764 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5Gr_GU | simonw 9599 | 2022-07-15T21:02:00Z | 2022-07-15T21:02:12Z | OWNER | Returning a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1185933972 | https://github.com/simonw/datasette/issues/1770#issuecomment-1185933972 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5Gr-qU | simonw 9599 | 2022-07-15T21:00:56Z | 2022-07-15T21:00:56Z | OWNER | It's weird to return a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1185931417 | https://github.com/simonw/datasette/issues/1770#issuecomment-1185931417 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5Gr-CZ | simonw 9599 | 2022-07-15T20:59:25Z | 2022-07-15T20:59:25Z | OWNER | ... maybe it should take |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1185929360 | https://github.com/simonw/datasette/issues/1770#issuecomment-1185929360 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5Gr9iQ | simonw 9599 | 2022-07-15T20:58:11Z | 2022-07-15T20:58:11Z | OWNER | Proposed hook design:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1185925081 | https://github.com/simonw/datasette/issues/1770#issuecomment-1185925081 | https://api.github.com/repos/simonw/datasette/issues/1770 | IC_kwDOBm6k_c5Gr8fZ | simonw 9599 | 2022-07-15T20:55:41Z | 2022-07-15T20:56:16Z | OWNER | I think the hook gets called any time any exception makes it to this function: https://github.com/simonw/datasette/blob/950cc7677f65aa2543067b3bbfc2b6acb98b62c8/datasette/app.py#L1374-L1440 Multiple plugins can register for the hook. If they return a I think Datasette should have a default plugin hook implementation which returns the 500 error page. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`handle_exception` plugin hook for custom error handling 1306492437 | |
1185536255 | https://github.com/simonw/datasette/pull/1769#issuecomment-1185536255 | https://api.github.com/repos/simonw/datasette/issues/1769 | IC_kwDOBm6k_c5Gqdj_ | codecov[bot] 22429695 | 2022-07-15T13:16:42Z | 2022-07-15T13:16:42Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1769 +/-=======================================
Coverage 91.67% 91.67% Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update pytest-asyncio requirement from <0.19,>=0.17 to >=0.17,<0.20 1306020162 | |
1179758180 | https://github.com/simonw/datasette/issues/1048#issuecomment-1179758180 | https://api.github.com/repos/simonw/datasette/issues/1048 | IC_kwDOBm6k_c5GUa5k | simonw 9599 | 2022-07-10T16:23:34Z | 2022-07-10T16:23:57Z | OWNER | But do I need to pass the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation and unit tests for urls.row() urls.row_blob() methods 728905098 | |
719996693 | https://github.com/simonw/datasette/issues/1048#issuecomment-719996693 | https://api.github.com/repos/simonw/datasette/issues/1048 | MDEyOklzc3VlQ29tbWVudDcxOTk5NjY5Mw== | simonw 9599 | 2020-10-31T22:32:09Z | 2022-07-10T16:22:48Z | OWNER | The This feels like it should be improved before I turn it into a documented API. (Note that this API deals with a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation and unit tests for urls.row() urls.row_blob() methods 728905098 | |
1179757912 | https://github.com/simonw/datasette/issues/1048#issuecomment-1179757912 | https://api.github.com/repos/simonw/datasette/issues/1048 | IC_kwDOBm6k_c5GUa1Y | simonw 9599 | 2022-07-10T16:21:38Z | 2022-07-10T16:21:38Z | OWNER | I think the best way to do this is to change the method signatures to: ```python def row(self, database, table, row, pks): ... def row_blob(self, database, table, row, pks, column): ... ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation and unit tests for urls.row() urls.row_blob() methods 728905098 | |
1179757605 | https://github.com/simonw/datasette/issues/1048#issuecomment-1179757605 | https://api.github.com/repos/simonw/datasette/issues/1048 | IC_kwDOBm6k_c5GUawl | simonw 9599 | 2022-07-10T16:19:42Z | 2022-07-10T16:21:03Z | OWNER | If I do require Current hook: https://docs.datasette.io/en/latest/plugin_hooks.html#render-cell-row-value-column-table-database-datasette The hook is called in two places in the codebase - when rendering a table ( And when rendering an arbitrary query: Note that in that second one |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation and unit tests for urls.row() urls.row_blob() methods 728905098 | |
1179757067 | https://github.com/simonw/datasette/issues/1048#issuecomment-1179757067 | https://api.github.com/repos/simonw/datasette/issues/1048 | IC_kwDOBm6k_c5GUaoL | simonw 9599 | 2022-07-10T16:16:19Z | 2022-07-10T16:16:19Z | OWNER | None of the potential solutions for that problem are particularly appealing:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation and unit tests for urls.row() urls.row_blob() methods 728905098 | |
1179756689 | https://github.com/simonw/datasette/issues/1048#issuecomment-1179756689 | https://api.github.com/repos/simonw/datasette/issues/1048 | IC_kwDOBm6k_c5GUaiR | simonw 9599 | 2022-07-10T16:14:03Z | 2022-07-10T16:14:03Z | OWNER | I'm considering changing these functions to accept the ```python def row(self, database, table, row): ... def row_blob(self, database, table, row, column):
...
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation and unit tests for urls.row() urls.row_blob() methods 728905098 | |
1179756391 | https://github.com/simonw/datasette/issues/1048#issuecomment-1179756391 | https://api.github.com/repos/simonw/datasette/issues/1048 | IC_kwDOBm6k_c5GUadn | simonw 9599 | 2022-07-10T16:12:23Z | 2022-07-10T16:12:23Z | OWNER | Also related: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation and unit tests for urls.row() urls.row_blob() methods 728905098 | |
1179579878 | https://github.com/simonw/sqlite-utils/issues/449#issuecomment-1179579878 | https://api.github.com/repos/simonw/sqlite-utils/issues/449 | IC_kwDOCGYnMM5GTvXm | davidleejy 1690072 | 2022-07-09T17:41:32Z | 2022-07-09T17:41:50Z | CONTRIBUTOR | Learnt that the types in Sqlite-utils differ somewhat from those in Sqlite. I've changed my test to account for this difference and the test has passed successfully. I will submit a PR. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utilities for duplicating tables and creating a table with the results of a query 1279863844 | |
1177966193 | https://github.com/simonw/datasette/issues/1768#issuecomment-1177966193 | https://api.github.com/repos/simonw/datasette/issues/1768 | IC_kwDOBm6k_c5GNlZx | simonw 9599 | 2022-07-07T17:25:22Z | 2022-07-07T17:25:22Z | OWNER | I tried this on Datasette Cloud and swapping |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to 3.10.6-slim-bullseye Docker base image 1296222572 | |
1155815956 | https://github.com/simonw/sqlite-utils/issues/444#issuecomment-1155815956 | https://api.github.com/repos/simonw/sqlite-utils/issues/444 | IC_kwDOCGYnMM5E5FoU | simonw 9599 | 2022-06-14T23:49:56Z | 2022-07-07T16:39:18Z | OWNER | Yeah my initial implementation there makes no sense:
In fact, what's happening here is that ```pycon
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CSV `extras_key=` and `ignore_extras=` equivalents for CLI tool 1271426387 | |
1177901762 | https://github.com/simonw/datasette/issues/1300#issuecomment-1177901762 | https://api.github.com/repos/simonw/datasette/issues/1300 | IC_kwDOBm6k_c5GNVrC | simonw 9599 | 2022-07-07T16:34:05Z | 2022-07-07T16:34:05Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Make row available to `render_cell` plugin hook 860625833 | ||
1177893425 | https://github.com/simonw/datasette/issues/1300#issuecomment-1177893425 | https://api.github.com/repos/simonw/datasette/issues/1300 | IC_kwDOBm6k_c5GNTox | simonw 9599 | 2022-07-07T16:28:13Z | 2022-07-07T16:28:13Z | OWNER | Adding |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Make row available to `render_cell` plugin hook 860625833 | |
1176550192 | https://github.com/simonw/datasette/issues/1768#issuecomment-1176550192 | https://api.github.com/repos/simonw/datasette/issues/1768 | IC_kwDOBm6k_c5GILsw | simonw 9599 | 2022-07-06T18:39:11Z | 2022-07-06T18:39:11Z | OWNER | Relevant Twitter thread: https://twitter.com/simonw/status/1544710944462254080 Looks like |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade to 3.10.6-slim-bullseye Docker base image 1296222572 | |
1175396774 | https://github.com/simonw/datasette/issues/1767#issuecomment-1175396774 | https://api.github.com/repos/simonw/datasette/issues/1767 | IC_kwDOBm6k_c5GDyGm | simonw 9599 | 2022-07-05T18:56:43Z | 2022-07-05T18:56:43Z | OWNER | Based on https://github.com/python/cpython/blob/3.11/Lib/imghdr.py I'm tempted to say that if the file starts with |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom favicon 1294641696 | |
1175391899 | https://github.com/simonw/datasette/issues/1767#issuecomment-1175391899 | https://api.github.com/repos/simonw/datasette/issues/1767 | IC_kwDOBm6k_c5GDw6b | simonw 9599 | 2022-07-05T18:53:07Z | 2022-07-05T18:53:07Z | OWNER | https://www.w3.org/2005/10/howto-favicon suggests that it only needs to be able to identify PNG, GIF or ICO. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom favicon 1294641696 | |
1175388492 | https://github.com/simonw/datasette/issues/1767#issuecomment-1175388492 | https://api.github.com/repos/simonw/datasette/issues/1767 | IC_kwDOBm6k_c5GDwFM | simonw 9599 | 2022-07-05T18:51:26Z | 2022-07-05T18:51:26Z | OWNER | I could vendor the necessary parts of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom favicon 1294641696 | |
1175385249 | https://github.com/simonw/datasette/issues/1767#issuecomment-1175385249 | https://api.github.com/repos/simonw/datasette/issues/1767 | IC_kwDOBm6k_c5GDvSh | simonw 9599 | 2022-07-05T18:49:52Z | 2022-07-05T18:49:52Z | OWNER | I could use the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom favicon 1294641696 | |
1175381896 | https://github.com/simonw/datasette/issues/1767#issuecomment-1175381896 | https://api.github.com/repos/simonw/datasette/issues/1767 | IC_kwDOBm6k_c5GDueI | simonw 9599 | 2022-07-05T18:48:14Z | 2022-07-05T18:48:50Z | OWNER | Annoyingly it looks like the standard library I'm using that here: https://github.com/simonw/datasette/blob/9f1eb0d4eac483b953392157bd9fd6cc4df37de7/datasette/utils/asgi.py#L261-L277 https://pypi.org/project/python-magic/ can inspect files, but I don't want to add a whole new dependency just for this one feature. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom favicon 1294641696 | |
1175378678 | https://github.com/simonw/datasette/issues/1767#issuecomment-1175378678 | https://api.github.com/repos/simonw/datasette/issues/1767 | IC_kwDOBm6k_c5GDtr2 | simonw 9599 | 2022-07-05T18:45:23Z | 2022-07-05T18:45:23Z | OWNER | The content type thing is a bit weird because usually I'd base that on the file extension, but here the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom favicon 1294641696 | |
1175377618 | https://github.com/simonw/datasette/issues/1767#issuecomment-1175377618 | https://api.github.com/repos/simonw/datasette/issues/1767 | IC_kwDOBm6k_c5GDtbS | simonw 9599 | 2022-07-05T18:44:08Z | 2022-07-05T18:44:08Z | OWNER | Loading it using the existing templating system would be better I think, since that way both custom installations AND plugins could influence the favicon in the same way that they influence the templates. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom favicon 1294641696 | |
1175377125 | https://github.com/simonw/datasette/issues/1767#issuecomment-1175377125 | https://api.github.com/repos/simonw/datasette/issues/1767 | IC_kwDOBm6k_c5GDtTl | simonw 9599 | 2022-07-05T18:43:35Z | 2022-07-05T18:43:35Z | OWNER | I think I want this to be a default feature, not a plugin. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom favicon 1294641696 | |
1175376866 | https://github.com/simonw/datasette/issues/1767#issuecomment-1175376866 | https://api.github.com/repos/simonw/datasette/issues/1767 | IC_kwDOBm6k_c5GDtPi | simonw 9599 | 2022-07-05T18:43:12Z | 2022-07-05T18:43:12Z | OWNER | Some options:
Note that I need a way to set the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom favicon 1294641696 | |
1174027079 | https://github.com/simonw/sqlite-utils/issues/449#issuecomment-1174027079 | https://api.github.com/repos/simonw/sqlite-utils/issues/449 | IC_kwDOCGYnMM5F-jtH | davidleejy 1690072 | 2022-07-04T17:33:04Z | 2022-07-04T17:48:43Z | CONTRIBUTOR | I've written the code and test. Would you be able to advise how to compare table columns in a pytest function properly? Experiencing a challenge when comparing columns. Test:
Result: Failure is due to column types being named differently -- e.g. 'FLOAT' vs 'REAL', 'INTEGER' vs 'INT'. How should I go about comparing columns while accounting for equivalent types? Or did I miss out something in my duplication code correctly? Here's how I did it: in
``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utilities for duplicating tables and creating a table with the results of a query 1279863844 | |
1173358747 | https://github.com/simonw/datasette/issues/1713#issuecomment-1173358747 | https://api.github.com/repos/simonw/datasette/issues/1713 | IC_kwDOBm6k_c5F8Aib | brandonrobertz 2670795 | 2022-07-04T05:16:35Z | 2022-07-04T05:16:35Z | CONTRIBUTOR | This feature is pretty important and would be nice if it would be all within Datasette (no separate CLI/deploy required). My workflow now is to basically just copy the result and paste into a Google Sheet, which works, but then it's not discoverable to other journalists browsing the Datasette instance. I started building a plugin similar to datasette-saved-queries but one that maintains its own DB (required if you're working with all immutable DBs), but got bogged down in details. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette feature for publishing snapshots of query results 1203943272 | |
1173142896 | https://github.com/simonw/datasette/pull/1766#issuecomment-1173142896 | https://api.github.com/repos/simonw/datasette/issues/1766 | IC_kwDOBm6k_c5F7L1w | codecov[bot] 22429695 | 2022-07-03T17:43:51Z | 2022-07-03T17:43:51Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1766 +/-=======================================
Coverage 91.67% 91.67% | Impacted Files | Coverage Δ | |
|---|---|---|
| datasette/app.py | Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Keep track of config_dir 1292377561 | |
1172970910 | https://github.com/simonw/datasette/issues/1646#issuecomment-1172970910 | https://api.github.com/repos/simonw/datasette/issues/1646 | IC_kwDOBm6k_c5F6h2e | simonw 9599 | 2022-07-02T22:13:13Z | 2022-07-02T22:17:16Z | OWNER | Adding I don't think it's worth having a Here: https://github.com/simonw/datasette-upload-dbs/blob/81510ef4f0004371a3adda18100936b430535cc1/datasette_upload_dbs/init.py#L41-L50 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Configuration directory mode does not pick up other file extensions than .db 1157182254 | |
1172930092 | https://github.com/simonw/datasette/issues/1646#issuecomment-1172930092 | https://api.github.com/repos/simonw/datasette/issues/1646 | IC_kwDOBm6k_c5F6X4s | mustafa0x 1473102 | 2022-07-02T17:12:18Z | 2022-07-02T17:12:18Z | NONE | I'm affected by this as well. Would be nice to be able to pass in an extension, eg |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Configuration directory mode does not pick up other file extensions than .db 1157182254 | |
1172903355 | https://github.com/simonw/sqlite-utils/issues/427#issuecomment-1172903355 | https://api.github.com/repos/simonw/sqlite-utils/issues/427 | IC_kwDOCGYnMM5F6RW7 | simonw 9599 | 2022-07-02T13:59:30Z | 2022-07-02T13:59:30Z | OWNER | This should work to avoid that:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils convert date parsing recipe complains about trying to parse "*" 1212701569 | |
1172902594 | https://github.com/simonw/sqlite-utils/issues/449#issuecomment-1172902594 | https://api.github.com/repos/simonw/sqlite-utils/issues/449 | IC_kwDOCGYnMM5F6RLC | simonw 9599 | 2022-07-02T13:55:51Z | 2022-07-02T13:55:51Z | OWNER | I like the idea of this as a feature - design could look like this:
Then for the CLI tool:
Additional features that might be useful:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utilities for duplicating tables and creating a table with the results of a query 1279863844 | |
1172766270 | https://github.com/simonw/sqlite-utils/issues/235#issuecomment-1172766270 | https://api.github.com/repos/simonw/sqlite-utils/issues/235 | IC_kwDOCGYnMM5F5v4- | mdrovdahl 474467 | 2022-07-01T22:40:26Z | 2022-07-01T22:40:26Z | NONE | Note, I do not get this issue using my Intel MacBook Pro =/ Environment
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extract columns cannot create foreign key relation: sqlite3.OperationalError: table sqlite_master may not be modified 810618495 | |
1172697090 | https://github.com/simonw/sqlite-utils/issues/235#issuecomment-1172697090 | https://api.github.com/repos/simonw/sqlite-utils/issues/235 | IC_kwDOCGYnMM5F5fAC | mdrovdahl 474467 | 2022-07-01T20:37:40Z | 2022-07-01T20:37:55Z | NONE | I just ran into what appears to be the same issue on a MacBook Pro, M1 Pro. Environment:
Error
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extract columns cannot create foreign key relation: sqlite3.OperationalError: table sqlite_master may not be modified 810618495 | |
1170595021 | https://github.com/simonw/sqlite-utils/issues/26#issuecomment-1170595021 | https://api.github.com/repos/simonw/sqlite-utils/issues/26 | IC_kwDOCGYnMM5FxdzN | izzues 60892516 | 2022-06-29T23:35:29Z | 2022-06-29T23:35:29Z | NONE | Have you seen MakeTypes? Not the exact same thing but it may be relevant. And it's inspired by the paper "Types from Data: Making Structured Data First-Class Citizens in F#". |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for turning nested JSON into foreign keys / many-to-many 455486286 | |
1168715058 | https://github.com/simonw/datasette/pull/1763#issuecomment-1168715058 | https://api.github.com/repos/simonw/datasette/issues/1763 | IC_kwDOBm6k_c5FqS0y | codecov[bot] 22429695 | 2022-06-28T13:19:28Z | 2022-06-28T13:19:28Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1763 +/-=======================================
Coverage 91.67% 91.67% Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump black from 22.1.0 to 22.6.0 1287325944 | |
1168704157 | https://github.com/simonw/datasette/pull/1693#issuecomment-1168704157 | https://api.github.com/repos/simonw/datasette/issues/1693 | IC_kwDOBm6k_c5FqQKd | dependabot[bot] 49699333 | 2022-06-28T13:11:36Z | 2022-06-28T13:11:36Z | CONTRIBUTOR | Superseded by #1763. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump black from 22.1.0 to 22.3.0 1184850337 | |
1164460052 | https://github.com/simonw/sqlite-utils/issues/431#issuecomment-1164460052 | https://api.github.com/repos/simonw/sqlite-utils/issues/431 | IC_kwDOCGYnMM5FaEAU | rafguns 738408 | 2022-06-23T14:12:51Z | 2022-06-23T14:12:51Z | NONE | Yeah, I think I prefer your suggestion: it seems cleaner than my initial |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Allow making m2m relation of a table to itself 1227571375 | |
1163917719 | https://github.com/dogsheep/healthkit-to-sqlite/issues/12#issuecomment-1163917719 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/12 | IC_kwDOC8tyDs5FX_mX | Mjboothaus 956433 | 2022-06-23T04:35:02Z | 2022-06-23T04:35:02Z | NONE | In terms of unique identifiers - could you use values stored in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Some workout columns should be float, not text 727848625 | |
1163097455 | https://github.com/simonw/datasette/pull/1760#issuecomment-1163097455 | https://api.github.com/repos/simonw/datasette/issues/1760 | IC_kwDOBm6k_c5FU3Vv | codecov[bot] 22429695 | 2022-06-22T13:27:08Z | 2022-06-22T13:27:08Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1760 +/-=======================================
Coverage 91.67% 91.67% Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump furo from 2022.4.7 to 2022.6.21 1280136357 | |
1163091750 | https://github.com/simonw/datasette/pull/1753#issuecomment-1163091750 | https://api.github.com/repos/simonw/datasette/issues/1753 | IC_kwDOBm6k_c5FU18m | dependabot[bot] 49699333 | 2022-06-22T13:22:34Z | 2022-06-22T13:22:34Z | CONTRIBUTOR | Superseded by #1760. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Bump furo from 2022.4.7 to 2022.6.4.1 1261826957 | |
1162500525 | https://github.com/simonw/sqlite-utils/issues/448#issuecomment-1162500525 | https://api.github.com/repos/simonw/sqlite-utils/issues/448 | IC_kwDOCGYnMM5FSlmt | mungewell 236907 | 2022-06-22T00:46:43Z | 2022-06-22T00:46:43Z | NONE | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reading rows from a file => AttributeError: '_io.StringIO' object has no attribute 'readinto' 1279144769 | ||
1162498734 | https://github.com/simonw/sqlite-utils/issues/448#issuecomment-1162498734 | https://api.github.com/repos/simonw/sqlite-utils/issues/448 | IC_kwDOCGYnMM5FSlKu | mungewell 236907 | 2022-06-22T00:43:45Z | 2022-06-22T00:43:45Z | NONE | Attempted to test on a machine with a new version of Python, but install failed with an error message for the 'click' package. ``` C:\WINDOWS\system32>"c:\Program Files\Python310\python.exe" Python 3.10.2 (tags/v3.10.2:a58ebcc, Jan 17 2022, 14:12:15) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.
C:\WINDOWS\system32>cd C:\Users\swood\Downloads\sqlite-utils-main-20220621\sqlite-utils-main C:\Users\swood\Downloads\sqlite-utils-main-20220621\sqlite-utils-main>"c:\Program Files\Python310\python.exe" setup.py install running install running bdist_egg running egg_info ... Installed c:\program files\python310\lib\site-packages\click_default_group_wheel-1.2.2-py3.10.egg Searching for click Downloading https://files.pythonhosted.org/packages/3d/da/f3bbf30f7e71d881585d598f67f4424b2cc4c68f39849542e81183218017/click-default-group-wheel-1.2.2.tar.gz#sha256=e90da42d92c03e88a12ed0c0b69c8a29afb5d36e3dc8d29c423ba4219e6d7747 Best match: click default-group-wheel-1.2.2 Processing click-default-group-wheel-1.2.2.tar.gz Writing C:\Users\swood\AppData\Local\Temp\easy_install-aiaj0_eh\click-default-group-wheel-1.2.2\setup.cfg Running click-default-group-wheel-1.2.2\setup.py -q bdist_egg --dist-dir C:\Users\swood\AppData\Local\Temp\easy_install-aiaj0_eh\click-default-group-wheel-1.2.2\egg-dist-tmp-z61a4h8n zip_safe flag not set; analyzing archive contents... removing 'c:\program files\python310\lib\site-packages\click_default_group_wheel-1.2.2-py3.10.egg' (and everything under it) Copying click_default_group_wheel-1.2.2-py3.10.egg to c:\program files\python310\lib\site-packages click-default-group-wheel 1.2.2 is already the active version in easy-install.pth Installed c:\program files\python310\lib\site-packages\click_default_group_wheel-1.2.2-py3.10.egg error: The 'click' distribution was not found and is required by click-default-group-wheel, sqlite-utils ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reading rows from a file => AttributeError: '_io.StringIO' object has no attribute 'readinto' 1279144769 | |
1162234441 | https://github.com/simonw/sqlite-utils/issues/446#issuecomment-1162234441 | https://api.github.com/repos/simonw/sqlite-utils/issues/446 | IC_kwDOCGYnMM5FRkpJ | simonw 9599 | 2022-06-21T19:28:35Z | 2022-06-21T19:28:35Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use Just to automate running tests and linters locally 1277328147 | |
1162231111 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1162231111 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5FRj1H | simonw 9599 | 2022-06-21T19:25:44Z | 2022-06-21T19:25:44Z | OWNER | Pushed that prototype to a branch. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option for importing CSV data using the SQLite .import mechanism 944846776 | |
1162223668 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1162223668 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5FRiA0 | simonw 9599 | 2022-06-21T19:19:22Z | 2022-06-21T19:22:15Z | OWNER | Built a prototype of ``` % time sqlite-utils memory taxi.csv 'SELECT passenger_count, COUNT(), AVG(total_amount) FROM taxi GROUP BY passenger_count' --fast passenger_count COUNT() AVG(total_amount)
0 42228 17.0214016766151
1 1533197 17.6418833067999
2 286461 18.0975870711456
3 72852 17.9153958710923
4 25510 18.452774990196 Without the Here's the prototype so far: ```diff diff --git a/sqlite_utils/cli.py b/sqlite_utils/cli.py index 86eddfb..1c83ef6 100644 --- a/sqlite_utils/cli.py +++ b/sqlite_utils/cli.py @@ -14,6 +14,8 @@ import io import itertools import json import os +import shutil +import subprocess import sys import csv as csv_std import tabulate @@ -1669,6 +1671,7 @@ def query( is_flag=True, help="Analyze resulting tables and output results", ) +@click.option("--fast", is_flag=True, help="Fast mode, only works with CSV and TSV") @load_extension_option def memory( paths, @@ -1692,6 +1695,7 @@ def memory( save, analyze, load_extension, + fast, ): """Execute SQL query against an in-memory database, optionally populated by imported data @@ -1719,6 +1723,22 @@ def memory( \b sqlite-utils memory animals.csv --schema """ + if fast: + if ( + attach + or flatten + or param + or encoding + or no_detect_types + or analyze + or load_extension + ): + raise click.ClickException( + "--fast mode does not support any of the following options: --attach, --flatten, --param, --encoding, --no-detect-types, --analyze, --load-extension" + ) + # TODO: Figure out and pass other supported options + memory_fast(paths, sql) + return db = sqlite_utils.Database(memory=True) # If --dump or --save or --analyze used but no paths detected, assume SQL query is a path: if (dump or save or schema or analyze) and not paths: @@ -1791,6 +1811,33 @@ def memory( ) +def memory_fast(paths, sql): + if not shutil.which("sqlite3"): + raise click.ClickException("sqlite3 not found in PATH") + args = ["sqlite3", ":memory:", "-cmd", ".mode csv"] + table_names = [] + + def name(path): + base_name = pathlib.Path(path).stem or "t" + table_name = base_name + prefix = 1 + while table_name in table_names: + prefix += 1 + table_name = "{}_{}".format(base_name, prefix) + return table_name + + for path in paths: + table_name = name(path) + table_names.append(table_name) + args.extend( + ["-cmd", ".import {} {}".format(pathlib.Path(path).resolve(), table_name)] + ) + + args.extend(["-cmd", ".mode column"]) + args.append(sql) + subprocess.run(args) + + def _execute_query( db, sql, param, raw, table, csv, tsv, no_headers, fmt, nl, arrays, json_cols ): ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option for importing CSV data using the SQLite .import mechanism 944846776 | |
1162186856 | https://github.com/simonw/sqlite-utils/issues/447#issuecomment-1162186856 | https://api.github.com/repos/simonw/sqlite-utils/issues/447 | IC_kwDOCGYnMM5FRZBo | simonw 9599 | 2022-06-21T18:48:46Z | 2022-06-21T18:48:46Z | OWNER | That fixed it: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Incorrect syntax highlighting in docs CLI reference 1278571700 | |
1162179354 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1162179354 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5FRXMa | simonw 9599 | 2022-06-21T18:44:03Z | 2022-06-21T18:44:03Z | OWNER | The thing I like about that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option for importing CSV data using the SQLite .import mechanism 944846776 | |
1161869859 | https://github.com/simonw/sqlite-utils/issues/447#issuecomment-1161869859 | https://api.github.com/repos/simonw/sqlite-utils/issues/447 | IC_kwDOCGYnMM5FQLoj | simonw 9599 | 2022-06-21T15:00:42Z | 2022-06-21T15:00:42Z | OWNER | Deploying that to https://sqlite-utils.datasette.io/en/latest/cli-reference.html#insert |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Incorrect syntax highlighting in docs CLI reference 1278571700 | |
1161857806 | https://github.com/simonw/sqlite-utils/issues/447#issuecomment-1161857806 | https://api.github.com/repos/simonw/sqlite-utils/issues/447 | IC_kwDOCGYnMM5FQIsO | simonw 9599 | 2022-06-21T14:55:51Z | 2022-06-21T14:58:14Z | OWNER | https://stackoverflow.com/a/44379513 suggests that the fix is:
Or set this in
I like that better - I don't like that all |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Incorrect syntax highlighting in docs CLI reference 1278571700 | |
1161849874 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1161849874 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5FQGwS | simonw 9599 | 2022-06-21T14:49:12Z | 2022-06-21T14:49:12Z | OWNER | Since there are all sorts of existing options for
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option for importing CSV data using the SQLite .import mechanism 944846776 | |
882052693 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-882052693 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM40kw5V | simonw 9599 | 2021-07-18T12:57:54Z | 2022-06-21T13:17:15Z | OWNER | Another implementation option would be to use the CSV virtual table mechanism. This could avoid shelling out to the (Would be neat to produce a Python wheel of this, see https://simonwillison.net/2022/May/23/bundling-binary-tools-in-python-wheels/) This would also help solve the challenge of making this optimization available to the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option for importing CSV data using the SQLite .import mechanism 944846776 | |
1160991031 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1160991031 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5FM1E3 | simonw 9599 | 2022-06-21T00:35:20Z | 2022-06-21T00:35:20Z | OWNER | { "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option for importing CSV data using the SQLite .import mechanism 944846776 | ||
1160798645 | https://github.com/simonw/sqlite-utils/issues/446#issuecomment-1160798645 | https://api.github.com/repos/simonw/sqlite-utils/issues/446 | IC_kwDOCGYnMM5FMGG1 | simonw 9599 | 2022-06-20T19:55:34Z | 2022-06-20T19:55:34Z | OWNER |
In all case it assumes you are using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use Just to automate running tests and linters locally 1277328147 | |
1160794604 | https://github.com/simonw/sqlite-utils/issues/443#issuecomment-1160794604 | https://api.github.com/repos/simonw/sqlite-utils/issues/443 | IC_kwDOCGYnMM5FMFHs | simonw 9599 | 2022-06-20T19:49:37Z | 2022-06-20T19:49:37Z | OWNER | Also now shows up here: https://sqlite-utils.datasette.io/en/latest/reference.html#sqlite-utils-utils-rows-from-file |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Make `utils.rows_from_file()` a documented API 1269998342 | |
1160794175 | https://github.com/simonw/sqlite-utils/issues/445#issuecomment-1160794175 | https://api.github.com/repos/simonw/sqlite-utils/issues/445 | IC_kwDOCGYnMM5FMFA_ | simonw 9599 | 2022-06-20T19:49:02Z | 2022-06-20T19:49:02Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`sqlite_utils.utils.TypeTracker` should be a documented API 1277295119 | ||
1160793114 | https://github.com/simonw/sqlite-utils/issues/445#issuecomment-1160793114 | https://api.github.com/repos/simonw/sqlite-utils/issues/445 | IC_kwDOCGYnMM5FMEwa | simonw 9599 | 2022-06-20T19:47:36Z | 2022-06-20T19:47:36Z | OWNER | I also added inline documentation and types: https://github.com/simonw/sqlite-utils/blob/773f2b6b20622bb986984a1c3161d5b3aaa1046b/sqlite_utils/utils.py#L318-L360 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`sqlite_utils.utils.TypeTracker` should be a documented API 1277295119 | |
1160763268 | https://github.com/simonw/sqlite-utils/issues/445#issuecomment-1160763268 | https://api.github.com/repos/simonw/sqlite-utils/issues/445 | IC_kwDOCGYnMM5FL9eE | simonw 9599 | 2022-06-20T19:09:21Z | 2022-06-20T19:09:21Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`sqlite_utils.utils.TypeTracker` should be a documented API 1277295119 | ||
1160717784 | https://github.com/simonw/datasette/pull/1759#issuecomment-1160717784 | https://api.github.com/repos/simonw/datasette/issues/1759 | IC_kwDOBm6k_c5FLyXY | codecov[bot] 22429695 | 2022-06-20T18:04:46Z | 2022-06-20T18:04:46Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1759 +/-=======================================
Coverage 91.67% 91.67% Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extract facet portions of table.html out into included templates 1275523220 | |
1160717735 | https://github.com/simonw/datasette/pull/1759#issuecomment-1160717735 | https://api.github.com/repos/simonw/datasette/issues/1759 | IC_kwDOBm6k_c5FLyWn | simonw 9599 | 2022-06-20T18:04:41Z | 2022-06-20T18:04:41Z | OWNER | I don't think this change needs any changes to the documentation: https://docs.datasette.io/en/stable/custom_templates.html#custom-templates |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extract facet portions of table.html out into included templates 1275523220 | |
1160712911 | https://github.com/simonw/datasette/pull/1759#issuecomment-1160712911 | https://api.github.com/repos/simonw/datasette/issues/1759 | IC_kwDOBm6k_c5FLxLP | simonw 9599 | 2022-06-20T17:58:37Z | 2022-06-20T17:58:37Z | OWNER | This is a great idea. |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 } |
Extract facet portions of table.html out into included templates 1275523220 | |
1155966234 | https://github.com/simonw/sqlite-utils/issues/444#issuecomment-1155966234 | https://api.github.com/repos/simonw/sqlite-utils/issues/444 | IC_kwDOCGYnMM5E5qUa | simonw 9599 | 2022-06-15T04:18:05Z | 2022-06-15T04:18:05Z | OWNER | I'm going to push a branch with my not-yet-working code (which does at least include a test). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CSV `extras_key=` and `ignore_extras=` equivalents for CLI tool 1271426387 | |
1155953345 | https://github.com/simonw/sqlite-utils/issues/439#issuecomment-1155953345 | https://api.github.com/repos/simonw/sqlite-utils/issues/439 | IC_kwDOCGYnMM5E5nLB | simonw 9599 | 2022-06-15T03:53:43Z | 2022-06-15T03:53:43Z | OWNER | I tried fixing this by using
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Misleading progress bar against utf-16-le CSV input 1250495688 |
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