issue_comments
8,358 rows where author_association = "OWNER" sorted by updated_at descending
This data as json, CSV (advanced)
user 1
- simonw 6,728
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1247161510 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1247161510 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5KViym | simonw 9599 | 2022-09-14T18:39:50Z | 2022-09-14T18:39:50Z | OWNER | Wrote that up as a TIL: https://til.simonwillison.net/python/pypy-macos |
{ "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 | |
1247149969 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1247149969 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5KVf-R | simonw 9599 | 2022-09-14T18:28:53Z | 2022-09-14T18:29:34Z | OWNER | As an aside, https://avi.im/blag/2021/fast-sqlite-inserts/ inspired my to try pypy since that article claimed to get a 2.5x speedup using pypy compared to regular Python for a CSV import script. Setup:
Then:
|
{ "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 | |
1246978641 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1246978641 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5KU2JR | simonw 9599 | 2022-09-14T15:57:41Z | 2022-09-14T15:57:41Z | OWNER | One solution suggested on Discord:
Converting empty to NULL for columns which are either FLOAT or INTEGERtime sqlite3 products.db ".schema all" | sed -nr 's/.[(.)] (INTEGER|FLOAT).*/\1/gp' | xargs -I % sqlite3 products.db -cmd "PRAGMA journal_mode=OFF;" "UPDATE [all] SET [%] = NULL WHERE [%] = '';" ``` |
{ "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 | |
1246977989 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1246977989 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5KU1_F | simonw 9599 | 2022-09-14T15:57:09Z | 2022-09-14T15:57:09Z | OWNER | Should consider how this could best handle creating columns that are integer and float as opposed to just text. https://discord.com/channels/823971286308356157/823971286941302908/1019630014544748584 is a relevant discussion on Discord. Even if you create the schema in advance with the correct column types, this import mechanism can put empty strings in blank float/integer columns when ideally you would want to have nulls. Related feature idea for Not sure how best to handle this for |
{ "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 | |
1246971764 | https://github.com/simonw/sqlite-utils/issues/488#issuecomment-1246971764 | https://api.github.com/repos/simonw/sqlite-utils/issues/488 | IC_kwDOCGYnMM5KU0d0 | simonw 9599 | 2022-09-14T15:52:14Z | 2022-09-14T15:52:14Z | OWNER | Frustratingly I think this counts as a backwards-incompatible change. Could have it be opt-in with a new option / method parameter, and then change it to the default if I release a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`sqlite-utils transform` should set empty strings to null when converting text columns to integer/float 1373224657 | |
1242409766 | https://github.com/simonw/sqlite-utils/issues/487#issuecomment-1242409766 | https://api.github.com/repos/simonw/sqlite-utils/issues/487 | IC_kwDOCGYnMM5KDasm | simonw 9599 | 2022-09-09T20:04:30Z | 2022-09-09T20:04:30Z | OWNER | This isn't supported yet - there's an older issue for that here:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Specify foreign key against compound key in other table 1367835380 | |
1242203798 | https://github.com/simonw/datasette/issues/1808#issuecomment-1242203798 | https://api.github.com/repos/simonw/datasette/issues/1808 | IC_kwDOBm6k_c5KCoaW | simonw 9599 | 2022-09-09T16:36:23Z | 2022-09-09T16:37:57Z | OWNER | Yes, it should do - actually this fix to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database() constructor currently defaults is_mutable to False 1368030952 | |
1242204717 | https://github.com/simonw/datasette/issues/1808#issuecomment-1242204717 | https://api.github.com/repos/simonw/datasette/issues/1808 | IC_kwDOBm6k_c5KCoot | simonw 9599 | 2022-09-09T16:37:12Z | 2022-09-09T16:37:12Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database() constructor currently defaults is_mutable to False 1368030952 | ||
1242181891 | https://github.com/simonw/datasette/issues/1808#issuecomment-1242181891 | https://api.github.com/repos/simonw/datasette/issues/1808 | IC_kwDOBm6k_c5KCjED | simonw 9599 | 2022-09-09T16:18:54Z | 2022-09-09T16:18:54Z | OWNER | Weirdly |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database() constructor currently defaults is_mutable to False 1368030952 | |
1242164484 | https://github.com/simonw/datasette/issues/1808#issuecomment-1242164484 | https://api.github.com/repos/simonw/datasette/issues/1808 | IC_kwDOBm6k_c5KCe0E | simonw 9599 | 2022-09-09T16:03:36Z | 2022-09-09T16:05:08Z | OWNER | Fixing this is technically a breaking change, but to my knowledge there are VERY few plugins out there that use this particular API directly - and I would be extremely surprised if any of them actually relied on it using this default. (Good thing I've not shipped 1.0 yet though!) |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database() constructor currently defaults is_mutable to False 1368030952 | |
1241185851 | https://github.com/simonw/datasette/issues/1807#issuecomment-1241185851 | https://api.github.com/repos/simonw/datasette/issues/1807 | IC_kwDOBm6k_c5J-v47 | simonw 9599 | 2022-09-08T20:14:05Z | 2022-09-08T20:14:05Z | OWNER | The entire concept of a "writable database" is something that's becoming increasingly important to be honest. Maybe Datasette should have that as a core concept which plugins can interact with? I had to write this code in
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin ecosystem needs to avoid crashes due to no available databases 1366915240 | |
1240882245 | https://github.com/simonw/sqlite-utils/issues/297#issuecomment-1240882245 | https://api.github.com/repos/simonw/sqlite-utils/issues/297 | IC_kwDOCGYnMM5J9lxF | simonw 9599 | 2022-09-08T15:33:11Z | 2022-09-08T15:33:11Z | OWNER | The more I think about this the more I like it - particularly for I used a variant of this trick with parquet files here: https://simonwillison.net/2022/Sep/5/laion-aesthetics-weeknotes/ |
{ "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 | |
1239772256 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239772256 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5Wxg | simonw 9599 | 2022-09-07T19:07:51Z | 2022-09-07T19:09:52Z | OWNER | Or... I could automatically register multiple copies of the function of different arities! If I'm going to do something like that though I need to think carefully about how functions that have keyword-only arguments should work: https://peps.python.org/pep-3102/
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1239766987 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239766987 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5VfL | simonw 9599 | 2022-09-07T19:01:49Z | 2022-09-07T19:01:49Z | OWNER | OK with this: ```diff diff --git a/sqlite_utils/cli.py b/sqlite_utils/cli.py index c51b101..93d82a9 100644 --- a/sqlite_utils/cli.py +++ b/sqlite_utils/cli.py @@ -30,6 +30,7 @@ from .utils import ( Format, TypeTracker, ) +from . import recipes CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"]) @@ -3029,7 +3030,7 @@ def load_extensions(db, load_extension): def _register_functions(db, functions): # Register any Python functions as SQL functions: sqlite3.enable_callback_tracebacks(True) - globals = {} + globals = {"r": recipes, "recipes": recipes} try: exec(functions, globals) except SyntaxError as ex: @@ -3037,4 +3038,4 @@ def _register_functions(db, functions): # Register all callables in the locals dict: for name, value in globals.items(): if callable(value) and not name.startswith(""): - db.register_function(value, name=name) + db.register_function(value, name=name, ignore_defaults=True) diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index 27c46b0..1407d23 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -370,6 +370,7 @@ class Database: self, fn: Callable = None, deterministic: bool = False, + ignore_defaults: bool = False, replace: bool = False, name: Optional[str] = None, ): @@ -397,7 +398,10 @@ class Database:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1239763997 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239763997 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5Uwd | simonw 9599 | 2022-09-07T18:57:59Z | 2022-09-07T18:58:10Z | OWNER | Here's how to detect defaults in the function signature: ```pycon
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1239762561 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239762561 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5UaB | simonw 9599 | 2022-09-07T18:56:13Z | 2022-09-07T18:56:13Z | OWNER | I could do this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1239762031 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239762031 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5URv | simonw 9599 | 2022-09-07T18:55:30Z | 2022-09-07T18:55:30Z | OWNER | That would be a breaking change though - existing code that registers functions with default parameters should continue to work unchanged (unless I want to ship |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1239761280 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239761280 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5UGA | simonw 9599 | 2022-09-07T18:54:51Z | 2022-09-07T18:54:51Z | OWNER | I could teach this code here to only register the function using arguments that don't have default parameters: Or even this code here: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1239760001 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239760001 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5TyB | simonw 9599 | 2022-09-07T18:53:17Z | 2022-09-07T18:53:17Z | OWNER | So you would need to do this instead:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1239759022 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239759022 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5Tiu | simonw 9599 | 2022-09-07T18:52:08Z | 2022-09-07T18:52:08Z | OWNER | It's not quite that simple. I tried applying this patch: ```diff diff --git a/sqlite_utils/cli.py b/sqlite_utils/cli.py index c51b101..33e4d90 100644 --- a/sqlite_utils/cli.py +++ b/sqlite_utils/cli.py @@ -30,6 +30,7 @@ from .utils import ( Format, TypeTracker, ) +from . import recipes CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"]) @@ -3029,7 +3030,7 @@ def _load_extensions(db, load_extension): def _register_functions(db, functions): # Register any Python functions as SQL functions: sqlite3.enable_callback_tracebacks(True) - globals = {} + globals = {"r": recipes, "recipes": recipes} try: exec(functions, globals) except SyntaxError as ex: ``` Then got this:
But the code that register SQL functions introspects that signature, so creates a SQL function that requires four arguments. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1239699276 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239699276 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5E9M | simonw 9599 | 2022-09-07T17:49:49Z | 2022-09-07T17:49:49Z | OWNER | This feature is a tiny bit weird though: the recipe functions are not exposed to SQL by default, they are instead designed to be used with
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1239697643 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1239697643 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J5Ejr | simonw 9599 | 2022-09-07T17:48:00Z | 2022-09-07T17:48:00Z | OWNER | Will also need to update documentation here: https://sqlite-utils.datasette.io/en/stable/cli.html#defining-custom-sql-functions |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1238873948 | https://github.com/simonw/sqlite-utils/issues/471#issuecomment-1238873948 | https://api.github.com/repos/simonw/sqlite-utils/issues/471 | IC_kwDOCGYnMM5J17dc | simonw 9599 | 2022-09-07T03:46:26Z | 2022-09-07T03:46:26Z | OWNER |
Not sure what you mean here? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils query --functions mechanism for registering extra functions 1352932716 | |
1238868091 | https://github.com/simonw/datasette/issues/1805#issuecomment-1238868091 | https://api.github.com/repos/simonw/datasette/issues/1805 | IC_kwDOBm6k_c5J16B7 | simonw 9599 | 2022-09-07T03:33:15Z | 2022-09-07T03:34:04Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
truncate_cells_html does not work for links? 1363552780 | ||
1238790634 | https://github.com/simonw/datasette/issues/596#issuecomment-1238790634 | https://api.github.com/repos/simonw/datasette/issues/596 | IC_kwDOBm6k_c5J1nHq | simonw 9599 | 2022-09-07T00:55:52Z | 2022-09-07T00:58:41Z | OWNER | Or there's this recipe on StackOverflow that does the same thing without jQuery - there's an interactive demo on that page if you click "Run code snippet": https://stackoverflow.com/a/47038108/6083 All sorts of other potential solutions in that thread too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Handle really wide tables better 507454958 | |
1238790158 | https://github.com/simonw/datasette/issues/596#issuecomment-1238790158 | https://api.github.com/repos/simonw/datasette/issues/596 | IC_kwDOBm6k_c5J1nAO | simonw 9599 | 2022-09-07T00:54:55Z | 2022-09-07T00:54:55Z | OWNER | The jqDoubleScroll plugin is interesting: https://github.com/avianey/jqDoubleScroll/blob/master/jquery.doubleScroll.js Here's a demo: https://6317eba21040d42c0228aab9--tiny-tarsier-c1f294.netlify.app/example.html Wouldn't be too hard to port that to work without jQuery. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Handle really wide tables better 507454958 | |
1238773577 | https://github.com/simonw/datasette/issues/1804#issuecomment-1238773577 | https://api.github.com/repos/simonw/datasette/issues/1804 | IC_kwDOBm6k_c5J1i9J | simonw 9599 | 2022-09-07T00:21:56Z | 2022-09-07T00:21:56Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom facet_size per table 1363440999 | |
1238760255 | https://github.com/simonw/datasette/issues/1805#issuecomment-1238760255 | https://api.github.com/repos/simonw/datasette/issues/1805 | IC_kwDOBm6k_c5J1fs_ | simonw 9599 | 2022-09-06T23:55:37Z | 2022-09-06T23:55:37Z | OWNER | While working on this I noticed that the arbitrary query page doesn't currently obey truncation, when it should do. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
truncate_cells_html does not work for links? 1363552780 | |
1238608921 | https://github.com/simonw/sqlite-utils/issues/477#issuecomment-1238608921 | https://api.github.com/repos/simonw/sqlite-utils/issues/477 | IC_kwDOCGYnMM5J06wZ | simonw 9599 | 2022-09-06T20:18:12Z | 2022-09-06T20:18:12Z | OWNER | Hi @thewchan - thanks for that! Yes I'm interested, can you invite |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Conda Forge 1353441389 | |
1238607591 | https://github.com/simonw/sqlite-utils/issues/484#issuecomment-1238607591 | https://api.github.com/repos/simonw/sqlite-utils/issues/484 | IC_kwDOCGYnMM5J06bn | simonw 9599 | 2022-09-06T20:16:39Z | 2022-09-06T20:16:39Z | OWNER | Here's the implementation for recipes at the moment: https://github.com/simonw/sqlite-utils/blob/5b969273f1244b1bcf3e4dc071cdf17dab35d5f8/sqlite_utils/utils.py#L434-L441 And here's the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expose convert recipes to `sqlite-utils --functions` 1363766973 | |
1238491632 | https://github.com/simonw/datasette/issues/1805#issuecomment-1238491632 | https://api.github.com/repos/simonw/datasette/issues/1805 | IC_kwDOBm6k_c5J0eHw | simonw 9599 | 2022-09-06T18:10:14Z | 2022-09-06T18:10:14Z | OWNER | I like the idea of defaulting this to the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
truncate_cells_html does not work for links? 1363552780 | |
1238347451 | https://github.com/simonw/datasette/issues/1804#issuecomment-1238347451 | https://api.github.com/repos/simonw/datasette/issues/1804 | IC_kwDOBm6k_c5Jz667 | simonw 9599 | 2022-09-06T15:59:26Z | 2022-09-06T15:59:26Z | OWNER | Still needs documentation. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom facet_size per table 1363440999 | |
1238313314 | https://github.com/simonw/datasette/issues/1804#issuecomment-1238313314 | https://api.github.com/repos/simonw/datasette/issues/1804 | IC_kwDOBm6k_c5Jzyli | simonw 9599 | 2022-09-06T15:31:36Z | 2022-09-06T15:31:36Z | OWNER | In that code So reading metadata via |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom facet_size per table 1363440999 | |
1238311565 | https://github.com/simonw/datasette/issues/1804#issuecomment-1238311565 | https://api.github.com/repos/simonw/datasette/issues/1804 | IC_kwDOBm6k_c5JzyKN | simonw 9599 | 2022-09-06T15:30:19Z | 2022-09-06T15:30:19Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom facet_size per table 1363440999 | ||
1238309481 | https://github.com/simonw/datasette/issues/1804#issuecomment-1238309481 | https://api.github.com/repos/simonw/datasette/issues/1804 | IC_kwDOBm6k_c5Jzxpp | simonw 9599 | 2022-09-06T15:28:35Z | 2022-09-06T15:28:35Z | OWNER | I'm going to do this just at the table level - if you want it at the database level I would imagine usually you would be OK running I may reconsider this in the future. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom facet_size per table 1363440999 | |
1238308213 | https://github.com/simonw/datasette/issues/1804#issuecomment-1238308213 | https://api.github.com/repos/simonw/datasette/issues/1804 | IC_kwDOBm6k_c5JzxV1 | simonw 9599 | 2022-09-06T15:27:31Z | 2022-09-06T15:27:31Z | OWNER | Relevant example from https://docs.datasette.io/en/stable/metadata.html#per-database-and-per-table-metadata
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to set a custom facet_size per table 1363440999 | |
1237553237 | https://github.com/simonw/datasette/pull/1757#issuecomment-1237553237 | https://api.github.com/repos/simonw/datasette/issues/1757 | IC_kwDOBm6k_c5Jw5BV | simonw 9599 | 2022-09-06T00:51:21Z | 2022-09-06T00:51:21Z | OWNER | Interesting feature idea. It's a weird edge-case, but it's the kind of thing I worry about: what if the user has a column called On that basis, I think |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
feat: add a wildcard for _json columns 1268121674 | |
1237551309 | https://github.com/simonw/datasette/pull/1794#issuecomment-1237551309 | https://api.github.com/repos/simonw/datasette/issues/1794 | IC_kwDOBm6k_c5Jw4jN | simonw 9599 | 2022-09-06T00:45:26Z | 2022-09-06T00:45:26Z | OWNER | Thanks for this - I've seen this issue too. Good fix. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
fix word break in facets by adding ul.tight-bullets li word-break: break-all 1352931076 | |
1237549678 | https://github.com/simonw/datasette/pull/1793#issuecomment-1237549678 | https://api.github.com/repos/simonw/datasette/issues/1793 | IC_kwDOBm6k_c5Jw4Ju | simonw 9599 | 2022-09-06T00:41:24Z | 2022-09-06T00:41:24Z | OWNER | I don't agree with the pros and cons listed in that article. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Added a useful resource 1351949898 | |
1237545794 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237545794 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jw3NC | simonw 9599 | 2022-09-06T00:31:31Z | 2022-09-06T00:31:31Z | OWNER | Well I'm not proud of it, but that did seem to do the trick! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237542803 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237542803 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jw2eT | simonw 9599 | 2022-09-06T00:23:27Z | 2022-09-06T00:23:27Z | OWNER | Trying this fix:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237542508 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237542508 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jw2Zs | simonw 9599 | 2022-09-06T00:22:37Z | 2022-09-06T00:22:37Z | OWNER | The code that I control that shows up in the trace is this: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237540231 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237540231 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jw12H | simonw 9599 | 2022-09-06T00:16:10Z | 2022-09-06T00:16:10Z | OWNER | Removing the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237537205 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237537205 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jw1G1 | simonw 9599 | 2022-09-06T00:08:03Z | 2022-09-06T00:08:46Z | OWNER | I'm suspicious that this hack here may be hurting me: I added that two years ago in https://github.com/simonw/datasette/commit/3159263f05ac4baf968929d59384d9223a539071 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237533471 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237533471 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jw0Mf | simonw 9599 | 2022-09-05T23:59:26Z | 2022-09-05T23:59:26Z | OWNER | https://docs.python.org/3/library/asyncio-task.html#asyncio.run notes that https://stackoverflow.com/a/56446830/6083 suggests that switching to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237532571 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237532571 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jwz-b | simonw 9599 | 2022-09-05T23:56:28Z | 2022-09-05T23:56:28Z | OWNER | That didn't help. This time it was 3.9 that failed first: https://github.com/simonw/datasette/runs/8197403744?check_suite_focus=true - same error though. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237530726 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237530726 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jwzhm | simonw 9599 | 2022-09-05T23:50:18Z | 2022-09-05T23:50:18Z | OWNER | Tried again, this time it failed with 3.8: https://github.com/simonw/datasette/runs/8197344556?check_suite_focus=true I'm going to try ditching the parallel test execution. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237527575 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237527575 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5JwywX | simonw 9599 | 2022-09-05T23:40:32Z | 2022-09-05T23:40:32Z | OWNER | That passed too: ``` ========================================================= test session starts ========================================================== platform linux -- Python 3.7.13, pytest-7.1.3, pluggy-1.0.0 SQLite: 3.27.2 rootdir: /mnt, configfile: pytest.ini plugins: asyncio-0.19.0, anyio-3.6.1, timeout-2.1.0, xdist-2.5.0, forked-1.4.0 asyncio: mode=strict gw0 [1024] / gw1 [1024] / gw2 [1024] / gw3 [1024] / gw4 [1024] / gw5 [1024] ................................................................................................................................ [ 12%] ................................................................................................................................ [ 25%] ...............................................................................................................ss............... [ 37%] ................................................................................................................................ [ 50%] ................................................................................................................................ [ 62%] .................................................s..........................s................................................... [ 75%] ................................................................................................................................ [ 87%] ................................................................................................................................ [100%] ============================================= 1020 passed, 4 skipped in 294.43s (0:04:54) ============================================== ========================================================= test session starts ========================================================== platform linux -- Python 3.7.13, pytest-7.1.3, pluggy-1.0.0 SQLite: 3.27.2 rootdir: /mnt, configfile: pytest.ini plugins: asyncio-0.19.0, anyio-3.6.1, timeout-2.1.0, xdist-2.5.0, forked-1.4.0 asyncio: mode=strict collected 1054 items / 1024 deselected / 30 selected tests/test_package.py . [ 3%] tests/test_cli_serve_server.py ... [ 13%] tests/test_publish_cloudrun.py ...................... [ 86%] tests/test_publish_heroku.py .... [100%] ================================================= 30 passed, 1024 deselected in 7.62s ================================================== ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237523178 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237523178 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jwxrq | simonw 9599 | 2022-09-05T23:28:11Z | 2022-09-05T23:28:11Z | OWNER | Trying this instead:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237522793 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237522793 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jwxlp | simonw 9599 | 2022-09-05T23:27:08Z | 2022-09-05T23:27:08Z | OWNER | Here's how GitHub Actions runs them: https://github.com/simonw/datasette/blob/294ecd45f7801971dbeef383d0c5456ee95ab839/.github/workflows/test.yml#L27-L37 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237522547 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237522547 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jwxhz | simonw 9599 | 2022-09-05T23:26:19Z | 2022-09-05T23:26:19Z | OWNER | Annoyingly those tests pass just fine on my machine using that Docker recipe. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237522407 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237522407 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jwxfn | simonw 9599 | 2022-09-05T23:25:53Z | 2022-09-05T23:25:53Z | OWNER | Turned that into a TIL: https://til.simonwillison.net/docker/pytest-docker |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237519153 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237519153 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5Jwwsx | simonw 9599 | 2022-09-05T23:17:03Z | 2022-09-05T23:17:03Z | OWNER | Some previous issues where I've run Python in Docker:
For this one I'm going to try this image:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237405647 | https://github.com/simonw/datasette/issues/1802#issuecomment-1237405647 | https://api.github.com/repos/simonw/datasette/issues/1802 | IC_kwDOBm6k_c5JwU_P | simonw 9599 | 2022-09-05T19:21:41Z | 2022-09-05T19:21:41Z | OWNER | Step one: replicate this failure on my local machine. I'll probably use Docker for this. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Tests reliably failing on Python 3.7 1362402998 | |
1237383202 | https://github.com/simonw/datasette/issues/1800#issuecomment-1237383202 | https://api.github.com/repos/simonw/datasette/issues/1800 | IC_kwDOBm6k_c5JwPgi | simonw 9599 | 2022-09-05T18:39:43Z | 2022-09-05T18:39:52Z | OWNER | Dependabot noticed: https://github.com/simonw/datasette/pull/1799#issuecomment-1237381569
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Remove upper bound dependencies as a default policy 1362363685 | |
1237375000 | https://github.com/simonw/datasette/issues/1800#issuecomment-1237375000 | https://api.github.com/repos/simonw/datasette/issues/1800 | IC_kwDOBm6k_c5JwNgY | simonw 9599 | 2022-09-05T18:24:34Z | 2022-09-05T18:24:34Z | OWNER | I'm going to leave |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Remove upper bound dependencies as a default policy 1362363685 | |
1237374713 | https://github.com/simonw/datasette/issues/1800#issuecomment-1237374713 | https://api.github.com/repos/simonw/datasette/issues/1800 | IC_kwDOBm6k_c5JwNb5 | simonw 9599 | 2022-09-05T18:24:00Z | 2022-09-05T18:24:00Z | OWNER | I'll do this in a PR to execute the tests before merging to main. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Remove upper bound dependencies as a default policy 1362363685 | |
1236511153 | https://github.com/simonw/sqlite-utils/issues/482#issuecomment-1236511153 | https://api.github.com/repos/simonw/sqlite-utils/issues/482 | IC_kwDOCGYnMM5Js6mx | simonw 9599 | 2022-09-05T03:38:29Z | 2022-09-05T03:38:29Z | OWNER | This is an interesting research area! Running the same experiment as the one in https://www.cybertec-postgresql.com/en/column-order-in-postgresql-does-matter/ could demonstrate one way or another if column ordering makes a difference with regards to performance or not. My hunch is that even if it does this wouldn't be a feature to bake into |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
balanced table default column_order 1361355564 | |
1236214402 | https://github.com/simonw/sqlite-utils/issues/239#issuecomment-1236214402 | https://api.github.com/repos/simonw/sqlite-utils/issues/239 | IC_kwDOCGYnMM5JryKC | simonw 9599 | 2022-09-03T23:46:02Z | 2022-09-03T23:46:02Z | OWNER | Yeah having a version of this that can setup m2m relationships would definitely be interesting. |
{ "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils extract could handle nested objects 816526538 | |
1235785955 | https://github.com/simonw/datasette/issues/260#issuecomment-1235785955 | https://api.github.com/repos/simonw/datasette/issues/260 | IC_kwDOBm6k_c5JqJjj | simonw 9599 | 2022-09-02T18:18:06Z | 2022-09-02T18:18:06Z | OWNER | Did some related research work in this issue: - https://github.com/simonw/shot-scraper/issues/28 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Validate metadata.json on startup 323223872 | |
1235752140 | https://github.com/simonw/datasette/issues/1293#issuecomment-1235752140 | https://api.github.com/repos/simonw/datasette/issues/1293 | IC_kwDOBm6k_c5JqBTM | simonw 9599 | 2022-09-02T17:34:09Z | 2022-09-02T17:34:09Z | OWNER | Accidentally closed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Show column metadata plus links for foreign keys on arbitrary query results 849978964 | |
1234927627 | https://github.com/simonw/datasette/issues/260#issuecomment-1234927627 | https://api.github.com/repos/simonw/datasette/issues/260 | IC_kwDOBm6k_c5Jm4AL | simonw 9599 | 2022-09-02T00:05:43Z | 2022-09-02T00:05:43Z | OWNER | I'm inclined to consider Pydantic for this, since it is widely used now and can generate really good error messages. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Validate metadata.json on startup 323223872 | |
1234926923 | https://github.com/simonw/datasette/issues/260#issuecomment-1234926923 | https://api.github.com/repos/simonw/datasette/issues/260 | IC_kwDOBm6k_c5Jm31L | simonw 9599 | 2022-09-02T00:04:26Z | 2022-09-02T00:04:45Z | OWNER | Interesting example of why this would be valuable here: - https://github.com/simonw/datasette/issues/1798 This YAML file:
```yaml
title: Some title
description_html: |-
This is an experiment. databases:
off:
tables:
products_from_owners:
title: products_from_owners
This is an experiment. ", "databases": { "false": { "tables": { "products_from_owners": { "title": "products_from_owners" } } } } } ``` Validation that caught this would have been useful. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Validate metadata.json on startup 323223872 | |
1234925975 | https://github.com/simonw/datasette/issues/1798#issuecomment-1234925975 | https://api.github.com/repos/simonw/datasette/issues/1798 | IC_kwDOBm6k_c5Jm3mX | simonw 9599 | 2022-09-02T00:02:53Z | 2022-09-02T00:02:53Z | OWNER | Here's a very old issue that suggests validating metadata: - https://github.com/simonw/datasette/issues/260 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Parts of YAML file do not work when db name is "off" 1359557737 | |
1234925621 | https://github.com/simonw/datasette/issues/1798#issuecomment-1234925621 | https://api.github.com/repos/simonw/datasette/issues/1798 | IC_kwDOBm6k_c5Jm3g1 | simonw 9599 | 2022-09-02T00:01:47Z | 2022-09-02T00:01:47Z | OWNER | It's a nasty gotcha though. I'm inclined to add validation to Datasette that fails to start the server with an error if you attempt to start it with metadata that accidentally has a boolean where a database name is expected. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Parts of YAML file do not work when db name is "off" 1359557737 | |
1234925618 | https://github.com/simonw/datasette/issues/1798#issuecomment-1234925618 | https://api.github.com/repos/simonw/datasette/issues/1798 | IC_kwDOBm6k_c5Jm3gy | simonw 9599 | 2022-09-02T00:01:00Z | 2022-09-02T00:01:00Z | OWNER | There's a thread about this here, but it doesn't have any workaround that look to me like they would be worth applying: https://stackoverflow.com/questions/36463531/pyyaml-automatically-converting-certain-keys-to-boolean-values |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Parts of YAML file do not work when db name is "off" 1359557737 | |
1234925616 | https://github.com/simonw/datasette/issues/1798#issuecomment-1234925616 | https://api.github.com/repos/simonw/datasette/issues/1798 | IC_kwDOBm6k_c5Jm3gw | simonw 9599 | 2022-09-01T23:56:33Z | 2022-09-01T23:56:33Z | OWNER | Oh that's a classic YAML problem, I hadn't realized it would affect Datasette like this! You should be able to fix it by quoting the ```yaml
title: Some title
description_html: |-
This is an experiment. databases: "off": tables: products_from_owners: title: products_from_owners* description_html: |- Description ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Parts of YAML file do not work when db name is "off" 1359557737 | |
1233697166 | https://github.com/simonw/datasette/issues/1775#issuecomment-1233697166 | https://api.github.com/repos/simonw/datasette/issues/1775 | IC_kwDOBm6k_c5JiLmO | simonw 9599 | 2022-09-01T03:36:44Z | 2022-09-01T03:36:44Z | OWNER | I don't want to start any efforts around documentation translation until after the Datasette 1.0 release, because I'd like to be confident that we're not translating documentation that may have some big changes before Datasette is fully stable! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
i18n support 1323346408 | |
1233682708 | https://github.com/simonw/datasette/issues/1775#issuecomment-1233682708 | https://api.github.com/repos/simonw/datasette/issues/1775 | IC_kwDOBm6k_c5JiIEU | simonw 9599 | 2022-09-01T03:09:36Z | 2022-09-01T03:09:36Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
i18n support 1323346408 | ||
1233680769 | https://github.com/simonw/datasette/issues/1775#issuecomment-1233680769 | https://api.github.com/repos/simonw/datasette/issues/1775 | IC_kwDOBm6k_c5JiHmB | simonw 9599 | 2022-09-01T03:06:44Z | 2022-09-01T03:06:44Z | OWNER | My hope is that Datasette actually has a relatively small i18n footprint - there really aren't that many screens with strings that will need translating. Translating the documentation would be a much bigger task, but that's not a blocker on getting the interface itself internationalized. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
i18n support 1323346408 | |
1233680261 | https://github.com/simonw/datasette/issues/1775#issuecomment-1233680261 | https://api.github.com/repos/simonw/datasette/issues/1775 | IC_kwDOBm6k_c5JiHeF | simonw 9599 | 2022-09-01T03:05:57Z | 2022-09-01T03:05:57Z | OWNER | OK, I'm convinced that it's time to start figuring this out. I've done a little bit of this with Django in the past, but Datasette isn't built on Django. It looks to me like the key library for implementing this is Babel: https://babel.pocoo.org/en/latest/ It's been around since 2007 and is very widely used: https://github.com/python-babel/babel/network/dependents?package_id=UGFja2FnZS01MDM0NTU3NQ%3D%3D Also found these hints on getting it to work with Jinja: https://stackoverflow.com/questions/12046998/babel-doesnt-recognize-jinja2-extraction-method-for-language-support |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
i18n support 1323346408 | |
1232424050 | https://github.com/simonw/sqlite-utils/issues/474#issuecomment-1232424050 | https://api.github.com/repos/simonw/sqlite-utils/issues/474 | IC_kwDOCGYnMM5JdUxy | simonw 9599 | 2022-08-31T03:42:28Z | 2022-08-31T03:42:28Z | OWNER | Yeah, having a way of inserting a CSV file but saying "only I want the It can use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add an option for specifying column names when inserting CSV data 1353074021 | |
1232419522 | https://github.com/simonw/sqlite-utils/pull/480#issuecomment-1232419522 | https://api.github.com/repos/simonw/sqlite-utils/issues/480 | IC_kwDOCGYnMM5JdTrC | simonw 9599 | 2022-08-31T03:33:27Z | 2022-08-31T03:33:27Z | OWNER | Tests look great, thank you! |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 } |
search_sql add include_rank option 1355433619 | |
1232089808 | https://github.com/simonw/sqlite-utils/pull/480#issuecomment-1232089808 | https://api.github.com/repos/simonw/sqlite-utils/issues/480 | IC_kwDOCGYnMM5JcDLQ | simonw 9599 | 2022-08-30T19:43:02Z | 2022-08-30T19:43:02Z | OWNER | Yeah this seems like a reasonable addition to me. Needs a test, which can go next to this one: https://github.com/simonw/sqlite-utils/blob/087753cd42c406f1e060c1822dcd9b5fda3d60f4/tests/test_fts.py#L561 |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
search_sql add include_rank option 1355433619 | |
1231127175 | https://github.com/simonw/datasette/issues/1796#issuecomment-1231127175 | https://api.github.com/repos/simonw/datasette/issues/1796 | IC_kwDOBm6k_c5JYYKH | simonw 9599 | 2022-08-30T04:30:29Z | 2022-08-30T04:30:29Z | OWNER | I wonder if CodeMirror 6 would be a good time to revisit this: - #1614 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Research an upgrade to CodeMirror 6 1355148385 | |
1231127022 | https://github.com/simonw/datasette/issues/1796#issuecomment-1231127022 | https://api.github.com/repos/simonw/datasette/issues/1796 | IC_kwDOBm6k_c5JYYHu | simonw 9599 | 2022-08-30T04:30:07Z | 2022-08-30T04:30:07Z | OWNER | Also relevant: Wikimedia are upgrading to CodeMirror 6 partly because of improved mobile support: https://phabricator.wikimedia.org/T259059 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Research an upgrade to CodeMirror 6 1355148385 | |
1231126795 | https://github.com/simonw/datasette/issues/1796#issuecomment-1231126795 | https://api.github.com/repos/simonw/datasette/issues/1796 | IC_kwDOBm6k_c5JYYEL | simonw 9599 | 2022-08-30T04:29:35Z | 2022-08-30T04:29:35Z | OWNER | I wrote upgrade instructions for CodeMirror here: https://docs.datasette.io/en/0.62/contributing.html#upgrading-codemirror See also: - #948 But... those instructions don't work any more, because they start with downloading the CodeMirror zip - but according to https://codemirror.net/docs/migration/
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Research an upgrade to CodeMirror 6 1355148385 | |
1229563718 | https://github.com/simonw/sqlite-utils/issues/478#issuecomment-1229563718 | https://api.github.com/repos/simonw/sqlite-utils/issues/478 | IC_kwDOCGYnMM5JSadG | simonw 9599 | 2022-08-28T22:07:03Z | 2022-08-28T22:07:03Z | OWNER | What should happen if you run this:
Where I think it should error rather than failing silently. That way you can use the error code to confirm that a list of expected tables exist. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`sqlite-utils tables data.db table1 table2` 1353481513 | |
1229438242 | https://github.com/simonw/sqlite-utils/issues/420#issuecomment-1229438242 | https://api.github.com/repos/simonw/sqlite-utils/issues/420 | IC_kwDOCGYnMM5JR70i | simonw 9599 | 2022-08-28T11:34:21Z | 2022-08-28T11:34:37Z | OWNER | I found a fix that makes that
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Document how to use a `--convert` function that runs initialization code first 1178546862 | |
1229370823 | https://github.com/simonw/sqlite-utils/issues/476#issuecomment-1229370823 | https://api.github.com/repos/simonw/sqlite-utils/issues/476 | IC_kwDOCGYnMM5JRrXH | simonw 9599 | 2022-08-28T04:07:15Z | 2022-08-28T04:07:15Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Release notes for 3.29 1353196970 | ||
1229320114 | https://github.com/simonw/sqlite-utils/issues/476#issuecomment-1229320114 | https://api.github.com/repos/simonw/sqlite-utils/issues/476 | IC_kwDOCGYnMM5JRe-y | simonw 9599 | 2022-08-27T23:26:48Z | 2022-08-27T23:26:48Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Release notes for 3.29 1353196970 | |
1229311612 | https://github.com/simonw/sqlite-utils/issues/467#issuecomment-1229311612 | https://api.github.com/repos/simonw/sqlite-utils/issues/467 | IC_kwDOCGYnMM5JRc58 | simonw 9599 | 2022-08-27T23:19:41Z | 2022-08-27T23:19:41Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for ensuring a table has all the columns 1348169997 | ||
1229303691 | https://github.com/simonw/sqlite-utils/pull/468#issuecomment-1229303691 | https://api.github.com/repos/simonw/sqlite-utils/issues/468 | IC_kwDOCGYnMM5JRa-L | simonw 9599 | 2022-08-27T23:13:06Z | 2022-08-27T23:13:06Z | OWNER | Documentation: - https://sqlite-utils--468.org.readthedocs.build/en/468/python-api.html#explicitly-creating-a-table - https://sqlite-utils--468.org.readthedocs.build/en/468/cli.html#creating-tables |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db[table].create(..., transform=True) and create-table --transform 1348294436 | |
1229284539 | https://github.com/simonw/sqlite-utils/pull/468#issuecomment-1229284539 | https://api.github.com/repos/simonw/sqlite-utils/issues/468 | IC_kwDOCGYnMM5JRWS7 | simonw 9599 | 2022-08-27T22:54:07Z | 2022-08-27T22:55:01Z | OWNER | Just needs documentation now, which can go here: https://sqlite-utils--468.org.readthedocs.build/en/468/python-api.html#explicitly-creating-a-table |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db[table].create(..., transform=True) and create-table --transform 1348294436 | |
1229283063 | https://github.com/simonw/sqlite-utils/issues/475#issuecomment-1229283063 | https://api.github.com/repos/simonw/sqlite-utils/issues/475 | IC_kwDOCGYnMM5JRV73 | simonw 9599 | 2022-08-27T22:44:45Z | 2022-08-27T22:44:45Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.default_values introspection property 1353189941 | ||
1229279539 | https://github.com/simonw/sqlite-utils/pull/468#issuecomment-1229279539 | https://api.github.com/repos/simonw/sqlite-utils/issues/468 | IC_kwDOCGYnMM5JRVEz | simonw 9599 | 2022-08-27T22:24:33Z | 2022-08-27T22:24:33Z | OWNER | Interesting challenge with Introspecting that is a bit tricky: ```pycon <Table blah (id, name)> >>> db["blah"].columns [Column(cid=0, name='id', type='INTEGER', notnull=0, default_value=None, is_pk=0), Column(cid=1, name='name', type='TEXT', notnull=1, default_value="'bob'", is_pk=0)] ``` Note how a default value of the Python string `bob` is represented in the results of `PRAGMA table_info()` as `default_value="'bob'"` - it's got single quotes added to it! So comparing default values from introspecting the database needs me to first parse that syntax. This may require a new table introspection method. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db[table].create(..., transform=True) and create-table --transform 1348294436 | |
1229276554 | https://github.com/simonw/sqlite-utils/pull/468#issuecomment-1229276554 | https://api.github.com/repos/simonw/sqlite-utils/issues/468 | IC_kwDOCGYnMM5JRUWK | simonw 9599 | 2022-08-27T22:05:40Z | 2022-08-27T22:05:51Z | OWNER | For the moment I'm not going to pay attention to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db[table].create(..., transform=True) and create-table --transform 1348294436 | |
1229207725 | https://github.com/simonw/sqlite-utils/pull/468#issuecomment-1229207725 | https://api.github.com/repos/simonw/sqlite-utils/issues/468 | IC_kwDOCGYnMM5JRDit | simonw 9599 | 2022-08-27T14:55:32Z | 2022-08-27T22:03:50Z | OWNER | The main challenge here is coming up with comprehensive tests. The cases I need to cover are from this block of code: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db[table].create(..., transform=True) and create-table --transform 1348294436 | |
1229265285 | https://github.com/simonw/sqlite-utils/issues/474#issuecomment-1229265285 | https://api.github.com/repos/simonw/sqlite-utils/issues/474 | IC_kwDOCGYnMM5JRRmF | simonw 9599 | 2022-08-27T20:52:53Z | 2022-08-27T20:52:53Z | OWNER | A couple of tricks I use here. Firstly, I often create the table before the import using the The other current option is to use the Do either of those options work here or is there a useful new feature that would work better? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add an option for specifying column names when inserting CSV data 1353074021 | |
1229206306 | https://github.com/simonw/sqlite-utils/issues/467#issuecomment-1229206306 | https://api.github.com/repos/simonw/sqlite-utils/issues/467 | IC_kwDOCGYnMM5JRDMi | simonw 9599 | 2022-08-27T14:47:04Z | 2022-08-27T14:47:04Z | OWNER | I could add a |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 1 } |
Mechanism for ensuring a table has all the columns 1348169997 | |
1229205990 | https://github.com/simonw/sqlite-utils/pull/455#issuecomment-1229205990 | https://api.github.com/repos/simonw/sqlite-utils/issues/455 | IC_kwDOCGYnMM5JRDHm | simonw 9599 | 2022-08-27T14:44:45Z | 2022-08-27T14:44:45Z | OWNER | I did not know
| 1 is 1 | 2.3 is 2.3 | true is true | true is false | 'dog' is 'dog' | 'dog' is 'cat' | null is null | null is not null | |----------|--------------|----------------|-----------------|------------------|------------------|----------------|--------------------| | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
in extract code, check equality with IS instead of = for nulls 1309542173 | |
1229130422 | https://github.com/simonw/sqlite-utils/issues/470#issuecomment-1229130422 | https://api.github.com/repos/simonw/sqlite-utils/issues/470 | IC_kwDOCGYnMM5JQwq2 | simonw 9599 | 2022-08-27T05:55:01Z | 2022-08-27T05:55:01Z | OWNER | cc @asg017 since this feature was inspired by his work on Datasette. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade `--load-extension` to accept entrypoints like Datasette 1352932038 | |
1229130242 | https://github.com/simonw/sqlite-utils/issues/470#issuecomment-1229130242 | https://api.github.com/repos/simonw/sqlite-utils/issues/470 | IC_kwDOCGYnMM5JQwoC | simonw 9599 | 2022-08-27T05:53:31Z | 2022-08-27T05:53:31Z | OWNER | Tests passed in CI against Ubuntu:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade `--load-extension` to accept entrypoints like Datasette 1352932038 | |
1229130158 | https://github.com/simonw/sqlite-utils/issues/470#issuecomment-1229130158 | https://api.github.com/repos/simonw/sqlite-utils/issues/470 | IC_kwDOCGYnMM5JQwmu | simonw 9599 | 2022-08-27T05:52:46Z | 2022-08-27T05:52:46Z | OWNER | To run the tests locally on my Mac I needed to run Ubuntu in Docker (for the compilation step). This worked:
Then:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade `--load-extension` to accept entrypoints like Datasette 1352932038 | |
1229128950 | https://github.com/simonw/sqlite-utils/issues/470#issuecomment-1229128950 | https://api.github.com/repos/simonw/sqlite-utils/issues/470 | IC_kwDOCGYnMM5JQwT2 | simonw 9599 | 2022-08-27T05:42:04Z | 2022-08-27T05:42:04Z | OWNER | Extension looks to be correctly compiled:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade `--load-extension` to accept entrypoints like Datasette 1352932038 | |
1229128617 | https://github.com/simonw/sqlite-utils/issues/470#issuecomment-1229128617 | https://api.github.com/repos/simonw/sqlite-utils/issues/470 | IC_kwDOCGYnMM5JQwOp | simonw 9599 | 2022-08-27T05:39:06Z | 2022-08-27T05:39:06Z | OWNER | That didn't run the tests as expected on Ubuntu: https://github.com/simonw/sqlite-utils/runs/8048229213?check_suite_focus=true
That should have worked because of this: https://github.com/simonw/sqlite-utils/blob/3f694e51a0212a297f663e2fc7f9cdad8775a550/.github/workflows/test.yml#L38-L41 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade `--load-extension` to accept entrypoints like Datasette 1352932038 | |
1229125890 | https://github.com/simonw/sqlite-utils/issues/472#issuecomment-1229125890 | https://api.github.com/repos/simonw/sqlite-utils/issues/472 | IC_kwDOCGYnMM5JQvkC | simonw 9599 | 2022-08-27T05:15:26Z | 2022-08-27T05:15:26Z | OWNER | Here's the docs I get to update to remove the documented |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reuse the locals/globals fix from --functions for other code accepting options 1352946135 | |
1229125614 | https://github.com/simonw/sqlite-utils/issues/472#issuecomment-1229125614 | https://api.github.com/repos/simonw/sqlite-utils/issues/472 | IC_kwDOCGYnMM5JQvfu | simonw 9599 | 2022-08-27T05:12:59Z | 2022-08-27T05:12:59Z | OWNER | Annoyingly this means the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reuse the locals/globals fix from --functions for other code accepting options 1352946135 | |
1229125114 | https://github.com/simonw/sqlite-utils/issues/471#issuecomment-1229125114 | https://api.github.com/repos/simonw/sqlite-utils/issues/471 | IC_kwDOCGYnMM5JQvX6 | simonw 9599 | 2022-08-27T05:08:58Z | 2022-08-27T05:08:58Z | OWNER | Testing
|
{ "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 } |
sqlite-utils query --functions mechanism for registering extra functions 1352932716 | |
1229124549 | https://github.com/simonw/sqlite-utils/issues/471#issuecomment-1229124549 | https://api.github.com/repos/simonw/sqlite-utils/issues/471 | IC_kwDOCGYnMM5JQvPF | simonw 9599 | 2022-08-27T05:03:39Z | 2022-08-27T05:03:39Z | OWNER | I don't think I need separate documentation for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils query --functions mechanism for registering extra functions 1352932716 |
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]);
issue >30