issue_comments
8,358 rows where author_association = "OWNER" sorted by updated_at descending
This data as json, CSV (advanced)
user 1
- simonw 2,717
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
674547788 | https://github.com/simonw/datasette/issues/939#issuecomment-674547788 | https://api.github.com/repos/simonw/datasette/issues/939 | MDEyOklzc3VlQ29tbWVudDY3NDU0Nzc4OA== | simonw 9599 | 2020-08-16T16:31:08Z | 2020-08-16T16:31:08Z | OWNER | Also: they should all be able to return |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
extra_ plugin hooks should take the same arguments 679779797 | |
674545058 | https://github.com/simonw/datasette/issues/939#issuecomment-674545058 | https://api.github.com/repos/simonw/datasette/issues/939 | MDEyOklzc3VlQ29tbWVudDY3NDU0NTA1OA== | simonw 9599 | 2020-08-16T16:07:20Z | 2020-08-16T16:07:20Z | OWNER | I'm going to implement this first as a single commit, then implement |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
extra_ plugin hooks should take the same arguments 679779797 | |
674544973 | https://github.com/simonw/datasette/issues/939#issuecomment-674544973 | https://api.github.com/repos/simonw/datasette/issues/939 | MDEyOklzc3VlQ29tbWVudDY3NDU0NDk3Mw== | simonw 9599 | 2020-08-16T16:06:34Z | 2020-08-16T16:06:34Z | OWNER | They should also be next to each other in the documentation - right now they're a bit scattered in terms of page order: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
extra_ plugin hooks should take the same arguments 679779797 | |
674544875 | https://github.com/simonw/datasette/issues/939#issuecomment-674544875 | https://api.github.com/repos/simonw/datasette/issues/939 | MDEyOklzc3VlQ29tbWVudDY3NDU0NDg3NQ== | simonw 9599 | 2020-08-16T16:05:36Z | 2020-08-16T16:05:36Z | OWNER | They should all take:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
extra_ plugin hooks should take the same arguments 679779797 | |
674544691 | https://github.com/simonw/datasette/issues/938#issuecomment-674544691 | https://api.github.com/repos/simonw/datasette/issues/938 | MDEyOklzc3VlQ29tbWVudDY3NDU0NDY5MQ== | simonw 9599 | 2020-08-16T16:03:52Z | 2020-08-16T16:03:52Z | OWNER | Four plugin hooks need this extra
It's weird that these take different arguments. I should fix that too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Pass columns to extra CSS/JS/etc plugin hooks 679700269 | |
674453318 | https://github.com/simonw/datasette/pull/936#issuecomment-674453318 | https://api.github.com/repos/simonw/datasette/issues/936 | MDEyOklzc3VlQ29tbWVudDY3NDQ1MzMxOA== | simonw 9599 | 2020-08-15T22:29:15Z | 2020-08-15T22:32:58Z | OWNER | Test failure: ``` tests/test_canned_queries.py F
canned_write_client = <datasette.utils.testing.TestClient object at 0x108ec5040>
/Users/simon/Dropbox/Development/datasette/tests/test_canned_queries.py:66: AssertionError ``` No idea why this change would affect that test. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Don't hang in db.execute_write_fn() if connection fails 679650632 | |
674451012 | https://github.com/simonw/datasette/issues/935#issuecomment-674451012 | https://api.github.com/repos/simonw/datasette/issues/935 | MDEyOklzc3VlQ29tbWVudDY3NDQ1MTAxMg== | simonw 9599 | 2020-08-15T21:56:13Z | 2020-08-15T21:56:13Z | OWNER | This implementation seems to fix it, need to work out how to test though. ```diff diff --git a/datasette/database.py b/datasette/database.py index ffa7a79..7ba1456 100644 --- a/datasette/database.py +++ b/datasette/database.py @@ -89,14 +89,22 @@ class Database: def _execute_writes(self): # Infinite looping thread that protects the single write connection # to this database - conn = self.connect(write=True) + conn_exception = None + conn = None + try: + conn = self.connect(write=True) + except Exception as e: + conn_exception = e while True: task = self._write_queue.get() - try: - result = task.fn(conn) - except Exception as e: - print(e) - result = e + if conn_exception is not None: + result = conn_exception + else: + try: + result = task.fn(conn) + except Exception as e: + print(e) + result = e task.reply_queue.sync_q.put(result)
``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db.execute_write_fn(create_tables, block=True) hangs a thread if connection fails 679646710 | |
674450652 | https://github.com/simonw/datasette/issues/935#issuecomment-674450652 | https://api.github.com/repos/simonw/datasette/issues/935 | MDEyOklzc3VlQ29tbWVudDY3NDQ1MDY1Mg== | simonw 9599 | 2020-08-15T21:51:22Z | 2020-08-15T21:51:22Z | OWNER | The easiest way to recreate this is to attempt a write against an immutable database, which triggers this assertion error: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db.execute_write_fn(create_tables, block=True) hangs a thread if connection fails 679646710 | |
674450607 | https://github.com/simonw/datasette/issues/935#issuecomment-674450607 | https://api.github.com/repos/simonw/datasette/issues/935 | MDEyOklzc3VlQ29tbWVudDY3NDQ1MDYwNw== | simonw 9599 | 2020-08-15T21:50:41Z | 2020-08-15T21:50:41Z | OWNER | The bug is here: If ... server hangs here ... ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
db.execute_write_fn(create_tables, block=True) hangs a thread if connection fails 679646710 | |
674144798 | https://github.com/simonw/datasette/issues/932#issuecomment-674144798 | https://api.github.com/repos/simonw/datasette/issues/932 | MDEyOklzc3VlQ29tbWVudDY3NDE0NDc5OA== | simonw 9599 | 2020-08-14T16:02:24Z | 2020-08-14T16:02:24Z | OWNER | Things to go in here:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
End-user documentation 678760988 | |
673735299 | https://github.com/simonw/datasette/issues/932#issuecomment-673735299 | https://api.github.com/repos/simonw/datasette/issues/932 | MDEyOklzc3VlQ29tbWVudDY3MzczNTI5OQ== | simonw 9599 | 2020-08-13T22:10:40Z | 2020-08-13T22:11:06Z | OWNER | Idea: plugins can provide their own user-facing documentation. Datasette can like to eg Or... link to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
End-user documentation 678760988 | |
673734387 | https://github.com/simonw/datasette/issues/932#issuecomment-673734387 | https://api.github.com/repos/simonw/datasette/issues/932 | MDEyOklzc3VlQ29tbWVudDY3MzczNDM4Nw== | simonw 9599 | 2020-08-13T22:08:06Z | 2020-08-13T22:08:06Z | OWNER | One challenge: how does this interact with plugins? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
End-user documentation 678760988 | |
673733904 | https://github.com/simonw/datasette/issues/932#issuecomment-673733904 | https://api.github.com/repos/simonw/datasette/issues/932 | MDEyOklzc3VlQ29tbWVudDY3MzczMzkwNA== | simonw 9599 | 2020-08-13T22:06:50Z | 2020-08-13T22:06:50Z | OWNER | Title: Using Datasette. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
End-user documentation 678760988 | |
673123213 | https://github.com/simonw/datasette/issues/931#issuecomment-673123213 | https://api.github.com/repos/simonw/datasette/issues/931 | MDEyOklzc3VlQ29tbWVudDY3MzEyMzIxMw== | simonw 9599 | 2020-08-12T21:36:20Z | 2020-08-12T21:36:20Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker container is no longer being pushed (it's stuck on 0.45) 677926613 | ||
673104851 | https://github.com/simonw/datasette/issues/931#issuecomment-673104851 | https://api.github.com/repos/simonw/datasette/issues/931 | MDEyOklzc3VlQ29tbWVudDY3MzEwNDg1MQ== | simonw 9599 | 2020-08-12T20:52:08Z | 2020-08-12T20:52:08Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker container is no longer being pushed (it's stuck on 0.45) 677926613 | |
673088110 | https://github.com/simonw/datasette/issues/931#issuecomment-673088110 | https://api.github.com/repos/simonw/datasette/issues/931 | MDEyOklzc3VlQ29tbWVudDY3MzA4ODExMA== | simonw 9599 | 2020-08-12T20:15:28Z | 2020-08-12T20:15:28Z | OWNER | I changed the Dockerfile and built it on my laptop using:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker container is no longer being pushed (it's stuck on 0.45) 677926613 | |
673074297 | https://github.com/simonw/datasette/issues/931#issuecomment-673074297 | https://api.github.com/repos/simonw/datasette/issues/931 | MDEyOklzc3VlQ29tbWVudDY3MzA3NDI5Nw== | simonw 9599 | 2020-08-12T19:46:29Z | 2020-08-12T19:46:29Z | OWNER | Looks like the old files have moved to: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker container is no longer being pushed (it's stuck on 0.45) 677926613 | |
673070308 | https://github.com/simonw/datasette/issues/931#issuecomment-673070308 | https://api.github.com/repos/simonw/datasette/issues/931 | MDEyOklzc3VlQ29tbWVudDY3MzA3MDMwOA== | simonw 9599 | 2020-08-12T19:37:55Z | 2020-08-12T19:37:55Z | OWNER | Project news here: https://groups.google.com/g/spatialite-users/c/8AG3hQzXDmo
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker container is no longer being pushed (it's stuck on 0.45) 677926613 | |
673068919 | https://github.com/simonw/datasette/issues/931#issuecomment-673068919 | https://api.github.com/repos/simonw/datasette/issues/931 | MDEyOklzc3VlQ29tbWVudDY3MzA2ODkxOQ== | simonw 9599 | 2020-08-12T19:34:57Z | 2020-08-12T19:34:57Z | OWNER | Looks like SpatiaLite released new versions: https://www.gaia-gis.it/fossil/freexl/index says "Sources: current version is 1.0.6 (released on 2020-08-02)" and links to http://www.gaia-gis.it/gaia-sins/freexl-1.0.6.tar.gz |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker container is no longer being pushed (it's stuck on 0.45) 677926613 | |
673068327 | https://github.com/simonw/datasette/issues/931#issuecomment-673068327 | https://api.github.com/repos/simonw/datasette/issues/931 | MDEyOklzc3VlQ29tbWVudDY3MzA2ODMyNw== | simonw 9599 | 2020-08-12T19:33:42Z | 2020-08-12T19:33:42Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Docker container is no longer being pushed (it's stuck on 0.45) 677926613 | ||
672997703 | https://github.com/simonw/sqlite-utils/issues/133#issuecomment-672997703 | https://api.github.com/repos/simonw/sqlite-utils/issues/133 | MDEyOklzc3VlQ29tbWVudDY3Mjk5NzcwMw== | simonw 9599 | 2020-08-12T17:05:06Z | 2020-08-12T17:05:06Z | OWNER | Released. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Release a sdist to PyPI 677839979 | |
672550662 | https://github.com/simonw/datasette/issues/930#issuecomment-672550662 | https://api.github.com/repos/simonw/datasette/issues/930 | MDEyOklzc3VlQ29tbWVudDY3MjU1MDY2Mg== | simonw 9599 | 2020-08-12T03:30:59Z | 2020-08-12T03:30:59Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette sdist is missing templates (hence broken when installing from Homebrew) 677326155 | ||
672519787 | https://github.com/simonw/datasette/issues/930#issuecomment-672519787 | https://api.github.com/repos/simonw/datasette/issues/930 | MDEyOklzc3VlQ29tbWVudDY3MjUxOTc4Nw== | simonw 9599 | 2020-08-12T02:52:46Z | 2020-08-12T02:52:46Z | OWNER | Homebrew install is now fixed, using a temporary URL while waiting for Travis to ship the new release to PyPI: https://github.com/simonw/homebrew-datasette/issues/6 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette sdist is missing templates (hence broken when installing from Homebrew) 677326155 | |
672488293 | https://github.com/simonw/datasette/issues/930#issuecomment-672488293 | https://api.github.com/repos/simonw/datasette/issues/930 | MDEyOklzc3VlQ29tbWVudDY3MjQ4ODI5Mw== | simonw 9599 | 2020-08-12T02:35:34Z | 2020-08-12T02:35:34Z | OWNER | OK, this has fixed it - I used |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette sdist is missing templates (hence broken when installing from Homebrew) 677326155 | |
672480811 | https://github.com/simonw/datasette/issues/930#issuecomment-672480811 | https://api.github.com/repos/simonw/datasette/issues/930 | MDEyOklzc3VlQ29tbWVudDY3MjQ4MDgxMQ== | simonw 9599 | 2020-08-12T02:31:38Z | 2020-08-12T02:31:38Z | OWNER | The root cause appears to be that the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette sdist is missing templates (hence broken when installing from Homebrew) 677326155 | |
672472518 | https://github.com/simonw/datasette/issues/930#issuecomment-672472518 | https://api.github.com/repos/simonw/datasette/issues/930 | MDEyOklzc3VlQ29tbWVudDY3MjQ3MjUxOA== | simonw 9599 | 2020-08-12T02:24:49Z | 2020-08-12T02:24:49Z | OWNER | I checked and |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette sdist is missing templates (hence broken when installing from Homebrew) 677326155 | |
672471431 | https://github.com/simonw/datasette/issues/930#issuecomment-672471431 | https://api.github.com/repos/simonw/datasette/issues/930 | MDEyOklzc3VlQ29tbWVudDY3MjQ3MTQzMQ== | simonw 9599 | 2020-08-12T02:21:19Z | 2020-08-12T02:21:19Z | OWNER | Correction: pip installed Datasette works fine, it's just the Homebrew release that is broken. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette sdist is missing templates (hence broken when installing from Homebrew) 677326155 | |
672393737 | https://github.com/simonw/datasette/issues/926#issuecomment-672393737 | https://api.github.com/repos/simonw/datasette/issues/926 | MDEyOklzc3VlQ29tbWVudDY3MjM5MzczNw== | simonw 9599 | 2020-08-12T00:26:17Z | 2020-08-12T00:26:17Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette fixtures.db --get "/fixtures.json" 677250834 | |
672391299 | https://github.com/simonw/datasette/pull/927#issuecomment-672391299 | https://api.github.com/repos/simonw/datasette/issues/927 | MDEyOklzc3VlQ29tbWVudDY3MjM5MTI5OQ== | simonw 9599 | 2020-08-12T00:19:20Z | 2020-08-12T00:19:20Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
'datasette --get' option, refs #926 677265716 | ||
672382108 | https://github.com/simonw/datasette/pull/927#issuecomment-672382108 | https://api.github.com/repos/simonw/datasette/issues/927 | MDEyOklzc3VlQ29tbWVudDY3MjM4MjEwOA== | simonw 9599 | 2020-08-12T00:09:18Z | 2020-08-12T00:09:18Z | OWNER | Documentation can go here: https://datasette.readthedocs.io/en/latest/getting_started.html#datasette-serve-options |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
'datasette --get' option, refs #926 677265716 | |
672373061 | https://github.com/simonw/datasette/issues/928#issuecomment-672373061 | https://api.github.com/repos/simonw/datasette/issues/928 | MDEyOklzc3VlQ29tbWVudDY3MjM3MzA2MQ== | simonw 9599 | 2020-08-11T23:56:19Z | 2020-08-11T23:56:19Z | OWNER | New implementation of the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Test failures caused by failed attempts to mock pip 677272618 | |
672372465 | https://github.com/simonw/datasette/issues/928#issuecomment-672372465 | https://api.github.com/repos/simonw/datasette/issues/928 | MDEyOklzc3VlQ29tbWVudDY3MjM3MjQ2NQ== | simonw 9599 | 2020-08-11T23:54:28Z | 2020-08-11T23:54:28Z | OWNER | While debugging this I found a useful clue in https://github.com/pypa/pip/blob/e060970d51c5946beac8447eb95585d83019582d/src/pip/_internal/cli/main.py#L23-L47 ``` Do not import and use main() directly! Using it directly is activelydiscouraged by pip's maintainers. The name, location and behavior ofthis function is subject to change, so calling it directly is notportable across different pip versions.In addition, running pip in-process is unsupported and unsafe. This iselaborated in detail athttps://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program.That document also provides suggestions that should work for nearlyall users that are considering importing and using main() directly.However, we know that certain users will still want to invoke pipin-process. If you understand and accept the implications of using pipin an unsupported manner, the best approach is to use runpy to avoiddepending on the exact location of this entry point.The following example shows how to use runpy to invoke pip in thatcase:sys.argv = ["pip", your, args, here]runpy.run_module("pip", run_name="main")Note that this will exit the process after running, unlike a directcall to main. As it is not safe to do any processing after callingmain, this should not be an issue in practice.``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Test failures caused by failed attempts to mock pip 677272618 | |
672372197 | https://github.com/simonw/datasette/issues/928#issuecomment-672372197 | https://api.github.com/repos/simonw/datasette/issues/928 | MDEyOklzc3VlQ29tbWVudDY3MjM3MjE5Nw== | simonw 9599 | 2020-08-11T23:53:38Z | 2020-08-11T23:53:38Z | OWNER | Caused by the tests for #925 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Test failures caused by failed attempts to mock pip 677272618 | |
672357176 | https://github.com/simonw/datasette/pull/927#issuecomment-672357176 | https://api.github.com/repos/simonw/datasette/issues/927 | MDEyOklzc3VlQ29tbWVudDY3MjM1NzE3Ng== | simonw 9599 | 2020-08-11T23:32:08Z | 2020-08-11T23:33:09Z | OWNER | Needs documentation and tests. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
'datasette --get' option, refs #926 677265716 | |
672357902 | https://github.com/simonw/datasette/pull/927#issuecomment-672357902 | https://api.github.com/repos/simonw/datasette/issues/927 | MDEyOklzc3VlQ29tbWVudDY3MjM1NzkwMg== | simonw 9599 | 2020-08-11T23:32:39Z | 2020-08-11T23:32:39Z | OWNER | It works:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
'datasette --get' option, refs #926 677265716 | |
672338113 | https://github.com/simonw/datasette/issues/926#issuecomment-672338113 | https://api.github.com/repos/simonw/datasette/issues/926 | MDEyOklzc3VlQ29tbWVudDY3MjMzODExMw== | simonw 9599 | 2020-08-11T22:57:28Z | 2020-08-11T22:57:28Z | OWNER | I partly want this so I can easily implement a better
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette fixtures.db --get "/fixtures.json" 677250834 | |
672336720 | https://github.com/simonw/datasette/issues/923#issuecomment-672336720 | https://api.github.com/repos/simonw/datasette/issues/923 | MDEyOklzc3VlQ29tbWVudDY3MjMzNjcyMA== | simonw 9599 | 2020-08-11T22:53:07Z | 2020-08-11T22:53:07Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add homebrew installation to documentation 677037043 | ||
672329101 | https://github.com/simonw/datasette/issues/923#issuecomment-672329101 | https://api.github.com/repos/simonw/datasette/issues/923 | MDEyOklzc3VlQ29tbWVudDY3MjMyOTEwMQ== | simonw 9599 | 2020-08-11T22:35:13Z | 2020-08-11T22:35:13Z | OWNER | I added the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add homebrew installation to documentation 677037043 | |
672328807 | https://github.com/simonw/datasette/issues/925#issuecomment-672328807 | https://api.github.com/repos/simonw/datasette/issues/925 | MDEyOklzc3VlQ29tbWVudDY3MjMyODgwNw== | simonw 9599 | 2020-08-11T22:34:37Z | 2020-08-11T22:34:37Z | OWNER | This will simplify the instructions for installing plugins with Datasette install via homebrew, refs #923 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette install" and "datasette uninstall" commands 677227912 | |
672328436 | https://github.com/simonw/datasette/issues/925#issuecomment-672328436 | https://api.github.com/repos/simonw/datasette/issues/925 | MDEyOklzc3VlQ29tbWVudDY3MjMyODQzNg== | simonw 9599 | 2020-08-11T22:33:32Z | 2020-08-11T22:33:42Z | OWNER | ``` $ datasette install --help Usage: datasette install [OPTIONS] PACKAGES... Install Python packages - e.g. Datasette plugins - into the same environment as Datasette Options: --help Show this message and exit. $ datasette uninstall --help Usage: datasette uninstall [OPTIONS] PACKAGES... Uninstall Python packages (e.g. plugins) from the Datasette environment Options: -y, --yes Don't ask for confirmation --help Show this message and exit. ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette install" and "datasette uninstall" commands 677227912 | |
672304650 | https://github.com/simonw/datasette/issues/925#issuecomment-672304650 | https://api.github.com/repos/simonw/datasette/issues/925 | MDEyOklzc3VlQ29tbWVudDY3MjMwNDY1MA== | simonw 9599 | 2020-08-11T22:04:48Z | 2020-08-11T22:04:48Z | OWNER | Prototyped in this thread: https://github.com/simonw/datasette/issues/335#issuecomment-671005731 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"datasette install" and "datasette uninstall" commands 677227912 | |
672288845 | https://github.com/simonw/datasette/issues/923#issuecomment-672288845 | https://api.github.com/repos/simonw/datasette/issues/923 | MDEyOklzc3VlQ29tbWVudDY3MjI4ODg0NQ== | simonw 9599 | 2020-08-11T21:28:17Z | 2020-08-11T21:28:17Z | OWNER | Here's a pattern for installing plugins:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add homebrew installation to documentation 677037043 | |
672287754 | https://github.com/simonw/datasette/issues/923#issuecomment-672287754 | https://api.github.com/repos/simonw/datasette/issues/923 | MDEyOklzc3VlQ29tbWVudDY3MjI4Nzc1NA== | simonw 9599 | 2020-08-11T21:25:33Z | 2020-08-11T21:25:33Z | OWNER | .. and confirm if |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add homebrew installation to documentation 677037043 | |
672089281 | https://github.com/simonw/datasette/issues/923#issuecomment-672089281 | https://api.github.com/repos/simonw/datasette/issues/923 | MDEyOklzc3VlQ29tbWVudDY3MjA4OTI4MQ== | simonw 9599 | 2020-08-11T16:54:50Z | 2020-08-11T16:54:50Z | OWNER | Also need to talk about how you install plugins. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add homebrew installation to documentation 677037043 | |
672088880 | https://github.com/simonw/datasette/issues/335#issuecomment-672088880 | https://api.github.com/repos/simonw/datasette/issues/335 | MDEyOklzc3VlQ29tbWVudDY3MjA4ODg4MA== | simonw 9599 | 2020-08-11T16:54:06Z | 2020-08-11T16:54:06Z | OWNER | It works!
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package datasette for installation using homebrew 339505204 | |
671733187 | https://github.com/simonw/datasette/issues/335#issuecomment-671733187 | https://api.github.com/repos/simonw/datasette/issues/335 | MDEyOklzc3VlQ29tbWVudDY3MTczMzE4Nw== | simonw 9599 | 2020-08-11T05:25:23Z | 2020-08-11T05:25:23Z | OWNER | I got this almost working in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package datasette for installation using homebrew 339505204 | |
671151461 | https://github.com/simonw/sqlite-utils/issues/132#issuecomment-671151461 | https://api.github.com/repos/simonw/sqlite-utils/issues/132 | MDEyOklzc3VlQ29tbWVudDY3MTE1MTQ2MQ== | simonw 9599 | 2020-08-10T03:54:06Z | 2020-08-10T03:54:06Z | OWNER | For the moment I'll build it without the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Features for enabling and disabling WAL mode 675839512 | |
671151170 | https://github.com/simonw/sqlite-utils/issues/132#issuecomment-671151170 | https://api.github.com/repos/simonw/sqlite-utils/issues/132 | MDEyOklzc3VlQ29tbWVudDY3MTE1MTE3MA== | simonw 9599 | 2020-08-10T03:52:02Z | 2020-08-10T03:52:02Z | OWNER | I'm having trouble figuring out how to write a test that locks a SQLite database (so I can test that ```python import time import sys import sqlite3 filename = sys.argv[-1] db = sqlite3.connect(filename) with db: db.execute("create table if not exists counter(id integer primary key, counter text)") time.sleep(100) ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Features for enabling and disabling WAL mode 675839512 | |
671147344 | https://github.com/simonw/sqlite-utils/issues/132#issuecomment-671147344 | https://api.github.com/repos/simonw/sqlite-utils/issues/132 | MDEyOklzc3VlQ29tbWVudDY3MTE0NzM0NA== | simonw 9599 | 2020-08-10T03:29:00Z | 2020-08-10T03:29:00Z | OWNER | The CLI options should take multiple database files:
It's possible for this to fail if the DB is locked. How about a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Features for enabling and disabling WAL mode 675839512 | |
671147148 | https://github.com/simonw/sqlite-utils/issues/132#issuecomment-671147148 | https://api.github.com/repos/simonw/sqlite-utils/issues/132 | MDEyOklzc3VlQ29tbWVudDY3MTE0NzE0OA== | simonw 9599 | 2020-08-10T03:27:50Z | 2020-08-10T03:27:50Z | OWNER | https://www.sqlite.org/pragma.html#pragma_journal_mode lists six modes: DELETE | TRUNCATE | PERSIST | MEMORY | WAL | OFF I'm only going to implement utilities for DELETE (wal-off) and WAL (wal-on) - the other modes look like they're for specialist purposes that I don't need to support. If it turns out I do need them I can add those to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Features for enabling and disabling WAL mode 675839512 | |
671146948 | https://github.com/simonw/sqlite-utils/issues/132#issuecomment-671146948 | https://api.github.com/repos/simonw/sqlite-utils/issues/132 | MDEyOklzc3VlQ29tbWVudDY3MTE0Njk0OA== | simonw 9599 | 2020-08-10T03:26:51Z | 2020-08-10T03:26:51Z | OWNER | For the CLI:
For the Python library: ```python import sqlite_utils db = sqlite_utils.Database("github.db") db.enable_wal() db.disable_wal() mode = db.journal_mode # "wal" or "delete" or others ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Features for enabling and disabling WAL mode 675839512 | |
671088832 | https://github.com/simonw/sqlite-utils/issues/131#issuecomment-671088832 | https://api.github.com/repos/simonw/sqlite-utils/issues/131 | MDEyOklzc3VlQ29tbWVudDY3MTA4ODgzMg== | simonw 9599 | 2020-08-09T19:00:41Z | 2020-08-09T19:00:41Z | OWNER | Should be consistent with the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils insert: options for column types 675753042 | |
671077168 | https://github.com/simonw/datasette/issues/335#issuecomment-671077168 | https://api.github.com/repos/simonw/datasette/issues/335 | MDEyOklzc3VlQ29tbWVudDY3MTA3NzE2OA== | simonw 9599 | 2020-08-09T17:10:15Z | 2020-08-09T18:13:39Z | OWNER | Here's the issue that explains that warning: https://github.com/pypa/pip/issues/5599 This should fix it (risky):
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package datasette for installation using homebrew 339505204 | |
671076975 | https://github.com/simonw/datasette/issues/335#issuecomment-671076975 | https://api.github.com/repos/simonw/datasette/issues/335 | MDEyOklzc3VlQ29tbWVudDY3MTA3Njk3NQ== | simonw 9599 | 2020-08-09T17:08:34Z | 2020-08-09T17:09:21Z | OWNER | Quick prototype of +@cli.command() +@click.argument("packages", nargs=-1, required=True) +def install(packages): + "Install Python packages - e.g. Datasette plugins - into the same environment as Datasett" + import pip + + try: + pip.main(["install"] + list(packages)) + except SystemExit as e: + pass + + @cli.command() @click.argument("files", type=click.Path(exists=True), nargs=-1) @click.option( ``` ``` $ datasette install Usage: datasette install [OPTIONS] PACKAGES... Try 'datasette install --help' for help. Error: Missing argument 'PACKAGES...'. $ datasette install datasette-vega WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip. Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue. To avoid this problem you can invoke Python with '-m pip' instead of running pip directly. Collecting datasette-vega Using cached datasette_vega-0.6.2-py3-none-any.whl (1.8 MB) ... ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package datasette for installation using homebrew 339505204 | |
671005731 | https://github.com/simonw/datasette/issues/335#issuecomment-671005731 | https://api.github.com/repos/simonw/datasette/issues/335 | MDEyOklzc3VlQ29tbWVudDY3MTAwNTczMQ== | simonw 9599 | 2020-08-09T04:44:13Z | 2020-08-09T17:04:21Z | OWNER | Telling people how to figure out that How about instead providing a Or It would run http://jelly.codes/articles/python-pip-module/ shows how to do this: ```python import pip try: pip.main(["install", "plumbum"]) except SystemExit as e: pass ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package datasette for installation using homebrew 339505204 | |
671075764 | https://github.com/simonw/datasette/issues/918#issuecomment-671075764 | https://api.github.com/repos/simonw/datasette/issues/918 | MDEyOklzc3VlQ29tbWVudDY3MTA3NTc2NA== | simonw 9599 | 2020-08-09T16:56:48Z | 2020-08-09T16:56:48Z | OWNER | GitHub security advisory: https://github.com/simonw/datasette/security/advisories/GHSA-q6j3-c4wc-63vw |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Security issue: read-only canned queries leak CSRF token in URL 675724951 | |
671073223 | https://github.com/simonw/datasette/issues/915#issuecomment-671073223 | https://api.github.com/repos/simonw/datasette/issues/915 | MDEyOklzc3VlQ29tbWVudDY3MTA3MzIyMw== | simonw 9599 | 2020-08-09T16:35:20Z | 2020-08-09T16:36:10Z | OWNER |
```python request = Request.fake(path_with_query_string)
``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor TableView class so things like datasette-graphql can reuse the logic 671763164 | |
671072223 | https://github.com/simonw/datasette/issues/919#issuecomment-671072223 | https://api.github.com/repos/simonw/datasette/issues/919 | MDEyOklzc3VlQ29tbWVudDY3MTA3MjIyMw== | simonw 9599 | 2020-08-09T16:26:17Z | 2020-08-09T16:26:17Z | OWNER | Should be released in a couple of minutes: https://travis-ci.org/github/simonw/datasette/builds/716328883 |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 } |
Travis should not build the master branch, only the main branch 675727366 | |
671071710 | https://github.com/simonw/datasette/issues/918#issuecomment-671071710 | https://api.github.com/repos/simonw/datasette/issues/918 | MDEyOklzc3VlQ29tbWVudDY3MTA3MTcxMA== | simonw 9599 | 2020-08-09T16:21:41Z | 2020-08-09T16:21:41Z | OWNER | Submitting the form on https://latest.datasette.io/fixtures/neighborhood_search demonstrates that this is fixed. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Security issue: read-only canned queries leak CSRF token in URL 675724951 | |
671071461 | https://github.com/simonw/datasette/issues/919#issuecomment-671071461 | https://api.github.com/repos/simonw/datasette/issues/919 | MDEyOklzc3VlQ29tbWVudDY3MTA3MTQ2MQ== | simonw 9599 | 2020-08-09T16:19:37Z | 2020-08-09T16:19:37Z | OWNER | That appears to have worked. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Travis should not build the master branch, only the main branch 675727366 | |
671070528 | https://github.com/simonw/datasette/issues/918#issuecomment-671070528 | https://api.github.com/repos/simonw/datasette/issues/918 | MDEyOklzc3VlQ29tbWVudDY3MTA3MDUyOA== | simonw 9599 | 2020-08-09T16:12:16Z | 2020-08-09T16:12:16Z | OWNER | It's worth noting that in order to exploit this issue the following would all need to be true:
The attacker would need full knowledge of the URL and form layout of the Datasette instance that they are exploiting. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Security issue: read-only canned queries leak CSRF token in URL 675724951 | |
671070486 | https://github.com/simonw/datasette/issues/918#issuecomment-671070486 | https://api.github.com/repos/simonw/datasette/issues/918 | MDEyOklzc3VlQ29tbWVudDY3MTA3MDQ4Ng== | simonw 9599 | 2020-08-09T16:11:59Z | 2020-08-09T16:11:59Z | OWNER | Fix has been released in Datasette 0.46: https://datasette.readthedocs.io/en/latest/changelog.html#v0-46 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Security issue: read-only canned queries leak CSRF token in URL 675724951 | |
671001457 | https://github.com/simonw/datasette/issues/335#issuecomment-671001457 | https://api.github.com/repos/simonw/datasette/issues/335 | MDEyOklzc3VlQ29tbWVudDY3MTAwMTQ1Nw== | simonw 9599 | 2020-08-09T03:37:39Z | 2020-08-09T03:37:39Z | OWNER | Here's what happened when I installed It worked! And from digging around, it has a virtual environment at Which means And I tried running these commands and confirmed that I get a
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package datasette for installation using homebrew 339505204 | |
670999860 | https://github.com/simonw/datasette/issues/335#issuecomment-670999860 | https://api.github.com/repos/simonw/datasette/issues/335 | MDEyOklzc3VlQ29tbWVudDY3MDk5OTg2MA== | simonw 9599 | 2020-08-09T03:12:44Z | 2020-08-09T03:12:44Z | OWNER | How would plugin installation work if Datasette was installed via homebrew? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package datasette for installation using homebrew 339505204 | |
670999832 | https://github.com/simonw/datasette/issues/335#issuecomment-670999832 | https://api.github.com/repos/simonw/datasette/issues/335 | MDEyOklzc3VlQ29tbWVudDY3MDk5OTgzMg== | simonw 9599 | 2020-08-09T03:12:14Z | 2020-08-09T03:12:14Z | OWNER | Another useful example: https://github.com/Homebrew/homebrew-core/blob/master/Formula/trailscraper.rb |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package datasette for installation using homebrew 339505204 | |
667585598 | https://github.com/simonw/sqlite-utils/issues/130#issuecomment-667585598 | https://api.github.com/repos/simonw/sqlite-utils/issues/130 | MDEyOklzc3VlQ29tbWVudDY2NzU4NTU5OA== | simonw 9599 | 2020-08-01T20:51:28Z | 2020-08-01T20:51:28Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support tokenize option for FTS 671130371 | ||
667585561 | https://github.com/simonw/sqlite-utils/issues/130#issuecomment-667585561 | https://api.github.com/repos/simonw/sqlite-utils/issues/130 | MDEyOklzc3VlQ29tbWVudDY2NzU4NTU2MQ== | simonw 9599 | 2020-08-01T20:50:59Z | 2020-08-01T20:50:59Z | OWNER | Turns out it works for FTS4 as well: https://www.sqlite.org/fts3.html#tokenizer |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support tokenize option for FTS 671130371 | |
667584567 | https://github.com/simonw/sqlite-utils/issues/130#issuecomment-667584567 | https://api.github.com/repos/simonw/sqlite-utils/issues/130 | MDEyOklzc3VlQ29tbWVudDY2NzU4NDU2Nw== | simonw 9599 | 2020-08-01T20:41:09Z | 2020-08-01T20:41:09Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support tokenize option for FTS 671130371 | ||
667431123 | https://github.com/simonw/datasette/issues/900#issuecomment-667431123 | https://api.github.com/repos/simonw/datasette/issues/900 | MDEyOklzc3VlQ29tbWVudDY2NzQzMTEyMw== | simonw 9599 | 2020-07-31T23:56:33Z | 2020-07-31T23:56:33Z | OWNER | I think this is the same issue as #865. I'll look at these together! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Some links don't honor base_url 661605489 | |
667430790 | https://github.com/simonw/datasette/issues/899#issuecomment-667430790 | https://api.github.com/repos/simonw/datasette/issues/899 | MDEyOklzc3VlQ29tbWVudDY2NzQzMDc5MA== | simonw 9599 | 2020-07-31T23:54:40Z | 2020-07-31T23:54:40Z | OWNER | There's no mechanism that can do this at the moment. You could absolutely support this with a plugin, probably using the Using a separate revers proxy would also be a good way to solve this. It depends which option would work best in your environment. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How to setup a request limit per user 660827546 | |
667430352 | https://github.com/simonw/datasette/issues/913#issuecomment-667430352 | https://api.github.com/repos/simonw/datasette/issues/913 | MDEyOklzc3VlQ29tbWVudDY2NzQzMDM1Mg== | simonw 9599 | 2020-07-31T23:52:10Z | 2020-07-31T23:52:10Z | OWNER | The bigger question here is when this mechanism should be used in place of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for passing additional options to `datasette my.db` that affect plugins 670209331 | |
667429616 | https://github.com/simonw/datasette/issues/913#issuecomment-667429616 | https://api.github.com/repos/simonw/datasette/issues/913 | MDEyOklzc3VlQ29tbWVudDY2NzQyOTYxNg== | simonw 9599 | 2020-07-31T23:48:25Z | 2020-07-31T23:49:59Z | OWNER | I could let plugins add additional options to A better solution could be to use the existing
Maybe even drop the
I think I prefer keeping the prefix to be honest - it makes it more obvious that this is a setting which comes from a specific named plugin. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for passing additional options to `datasette my.db` that affect plugins 670209331 | |
667429690 | https://github.com/simonw/datasette/issues/913#issuecomment-667429690 | https://api.github.com/repos/simonw/datasette/issues/913 | MDEyOklzc3VlQ29tbWVudDY2NzQyOTY5MA== | simonw 9599 | 2020-07-31T23:48:48Z | 2020-07-31T23:48:48Z | OWNER | Here's the code in Datasette that parses |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mechanism for passing additional options to `datasette my.db` that affect plugins 670209331 | |
667424128 | https://github.com/simonw/datasette/issues/849#issuecomment-667424128 | https://api.github.com/repos/simonw/datasette/issues/849 | MDEyOklzc3VlQ29tbWVudDY2NzQyNDEyOA== | simonw 9599 | 2020-07-31T23:21:56Z | 2020-07-31T23:23:24Z | OWNER | I'm going to change the default branch on the GitHub repository. If something breaks I can always change it back again. Done that! Default is now |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename master branch to main 639072811 | |
667424020 | https://github.com/simonw/datasette/issues/849#issuecomment-667424020 | https://api.github.com/repos/simonw/datasette/issues/849 | MDEyOklzc3VlQ29tbWVudDY2NzQyNDAyMA== | simonw 9599 | 2020-07-31T23:21:30Z | 2020-07-31T23:21:30Z | OWNER | https://github.com/simonw/datasette/tree/main branch now exists and will automatically mirror master (and vice-versa). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename master branch to main 639072811 | |
667295759 | https://github.com/simonw/datasette/issues/849#issuecomment-667295759 | https://api.github.com/repos/simonw/datasette/issues/849 | MDEyOklzc3VlQ29tbWVudDY2NzI5NTc1OQ== | simonw 9599 | 2020-07-31T18:45:35Z | 2020-07-31T18:45:35Z | OWNER | Watch out for places in the documentation that might link to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rename master branch to main 639072811 | |
664105302 | https://github.com/simonw/sqlite-utils/issues/124#issuecomment-664105302 | https://api.github.com/repos/simonw/sqlite-utils/issues/124 | MDEyOklzc3VlQ29tbWVudDY2NDEwNTMwMg== | simonw 9599 | 2020-07-27T03:54:24Z | 2020-07-30T22:57:51Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils query should support named parameters 665802405 | |
666752039 | https://github.com/simonw/sqlite-utils/issues/129#issuecomment-666752039 | https://api.github.com/repos/simonw/sqlite-utils/issues/129 | MDEyOklzc3VlQ29tbWVudDY2Njc1MjAzOQ== | simonw 9599 | 2020-07-30T22:40:55Z | 2020-07-30T22:40:55Z | OWNER | This should be a separate command from So if I write this command it should be this instead:
But at that point, why bother? Users can use So I'm not going to bother implementing this. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"insert-files --sqlar" for creating SQLite archives 668308777 | |
666063689 | https://github.com/simonw/sqlite-utils/issues/127#issuecomment-666063689 | https://api.github.com/repos/simonw/sqlite-utils/issues/127 | MDEyOklzc3VlQ29tbWVudDY2NjA2MzY4OQ== | simonw 9599 | 2020-07-30T03:08:51Z | 2020-07-30T03:08:51Z | OWNER | Documentation at the bottom of this section: https://github.com/simonw/sqlite-utils/blob/8fe1e6d1be021aeeb8f08b0f77f03b75a83b6f75/docs/cli.rst#inserting-binary-data-from-files |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to insert files piped to insert-files stdin 666040390 | |
666047928 | https://github.com/simonw/sqlite-utils/issues/127#issuecomment-666047928 | https://api.github.com/repos/simonw/sqlite-utils/issues/127 | MDEyOklzc3VlQ29tbWVudDY2NjA0NzkyOA== | simonw 9599 | 2020-07-30T02:31:05Z | 2020-07-30T02:31:05Z | OWNER | Maybe could do this using an improved version of this lambda? Could teach it to look for |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to insert files piped to insert-files stdin 666040390 | |
666046819 | https://github.com/simonw/sqlite-utils/issues/129#issuecomment-666046819 | https://api.github.com/repos/simonw/sqlite-utils/issues/129 | MDEyOklzc3VlQ29tbWVudDY2NjA0NjgxOQ== | simonw 9599 | 2020-07-30T02:28:34Z | 2020-07-30T02:28:34Z | OWNER | This code looks useful as inspiration: https://github.com/j4mie/sqlsite/blob/f2dadb8db5ed7880f8872b6591d8cb1487f777ea/sqlsite/sqlar.py |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"insert-files --sqlar" for creating SQLite archives 668308777 | |
666010395 | https://github.com/simonw/datasette/issues/909#issuecomment-666010395 | https://api.github.com/repos/simonw/datasette/issues/909 | MDEyOklzc3VlQ29tbWVudDY2NjAxMDM5NQ== | simonw 9599 | 2020-07-30T00:56:17Z | 2020-07-30T00:56:17Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
AsgiFileDownload: filename not correctly passed 667467128 | |
665854704 | https://github.com/simonw/datasette/issues/909#issuecomment-665854704 | https://api.github.com/repos/simonw/datasette/issues/909 | MDEyOklzc3VlQ29tbWVudDY2NTg1NDcwNA== | simonw 9599 | 2020-07-29T19:22:31Z | 2020-07-29T19:22:31Z | OWNER | I think this results in a bug where the "download database" link doesn't include the correct filename: https://github.com/simonw/datasette/blob/549b1c2063db48c4622ee5c7b478a1e3cbc1ac07/datasette/views/database.py#L110-L131 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
AsgiFileDownload: filename not correctly passed 667467128 | |
664683608 | https://github.com/simonw/sqlite-utils/issues/128#issuecomment-664683608 | https://api.github.com/repos/simonw/sqlite-utils/issues/128 | MDEyOklzc3VlQ29tbWVudDY2NDY4MzYwOA== | simonw 9599 | 2020-07-27T23:09:22Z | 2020-07-27T23:09:22Z | OWNER | This seems to work, but needs more tests: ```diff diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index d6b9ecf..ee26433 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -7,6 +7,7 @@ import itertools import json import os import pathlib +import uuid SQLITE_MAX_VARS = 999 @@ -40,11 +41,13 @@ COLUMN_TYPE_MAPPING = { str: "TEXT", bytes.class: "BLOB", bytes: "BLOB", + memoryview: "BLOB", datetime.datetime: "TEXT", datetime.date: "TEXT", datetime.time: "TEXT", decimal.Decimal: "FLOAT", None.class: "TEXT", + uuid.UUID: "TEXT", # SQLite explicit types "TEXT": "TEXT", "INTEGER": "INTEGER", @@ -1336,6 +1339,8 @@ def jsonify_if_needed(value): return json.dumps(value, default=repr) elif isinstance(value, (datetime.time, datetime.date, datetime.datetime)): return value.isoformat() + elif isinstance(value, uuid.UUID): + return str(value) else: return value ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support UUID and memoryview types 666639051 | |
664163524 | https://github.com/simonw/sqlite-utils/issues/122#issuecomment-664163524 | https://api.github.com/repos/simonw/sqlite-utils/issues/122 | MDEyOklzc3VlQ29tbWVudDY2NDE2MzUyNA== | simonw 9599 | 2020-07-27T07:10:41Z | 2020-07-27T07:10:41Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI utility for inserting binary files into SQLite 665700495 | ||
664163206 | https://github.com/simonw/sqlite-utils/issues/127#issuecomment-664163206 | https://api.github.com/repos/simonw/sqlite-utils/issues/127 | MDEyOklzc3VlQ29tbWVudDY2NDE2MzIwNg== | simonw 9599 | 2020-07-27T07:10:05Z | 2020-07-27T07:10:05Z | OWNER | I tried to get this working but it was a bit tricky because |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to insert files piped to insert-files stdin 666040390 | |
664128071 | https://github.com/simonw/sqlite-utils/issues/122#issuecomment-664128071 | https://api.github.com/repos/simonw/sqlite-utils/issues/122 | MDEyOklzc3VlQ29tbWVudDY2NDEyODA3MQ== | simonw 9599 | 2020-07-27T05:30:54Z | 2020-07-27T05:30:54Z | OWNER | Inserting files by piping them in should work - but since a filename cannot be derived this will need a
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI utility for inserting binary files into SQLite 665700495 | |
664127741 | https://github.com/simonw/sqlite-utils/issues/122#issuecomment-664127741 | https://api.github.com/repos/simonw/sqlite-utils/issues/122 | MDEyOklzc3VlQ29tbWVudDY2NDEyNzc0MQ== | simonw 9599 | 2020-07-27T05:29:48Z | 2020-07-27T05:29:48Z | OWNER | Test command:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI utility for inserting binary files into SQLite 665700495 | |
663931279 | https://github.com/simonw/sqlite-utils/issues/122#issuecomment-663931279 | https://api.github.com/repos/simonw/sqlite-utils/issues/122 | MDEyOklzc3VlQ29tbWVudDY2MzkzMTI3OQ== | simonw 9599 | 2020-07-26T03:33:23Z | 2020-07-27T04:30:49Z | OWNER | One idea: It could work something like this:
This would insert those two image files into the database in a table called
The
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI utility for inserting binary files into SQLite 665700495 | |
664106621 | https://github.com/simonw/sqlite-utils/issues/114#issuecomment-664106621 | https://api.github.com/repos/simonw/sqlite-utils/issues/114 | MDEyOklzc3VlQ29tbWVudDY2NDEwNjYyMQ== | simonw 9599 | 2020-07-27T04:01:13Z | 2020-07-27T04:01:13Z | OWNER | Work in progress in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.transform() method for advanced alter table 621989740 | |
664106405 | https://github.com/simonw/sqlite-utils/issues/126#issuecomment-664106405 | https://api.github.com/repos/simonw/sqlite-utils/issues/126 | MDEyOklzc3VlQ29tbWVudDY2NDEwNjQwNQ== | simonw 9599 | 2020-07-27T04:00:08Z | 2020-07-27T04:00:33Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to insert binary data on the CLI using JSON 665819048 | |
664065597 | https://github.com/simonw/sqlite-utils/issues/126#issuecomment-664065597 | https://api.github.com/repos/simonw/sqlite-utils/issues/126 | MDEyOklzc3VlQ29tbWVudDY2NDA2NTU5Nw== | simonw 9599 | 2020-07-27T00:51:11Z | 2020-07-27T00:51:11Z | OWNER | I'm going to implement this as the reverse of #125 - binary columns in JSON are now output like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to insert binary data on the CLI using JSON 665819048 | |
664065341 | https://github.com/simonw/sqlite-utils/issues/125#issuecomment-664065341 | https://api.github.com/repos/simonw/sqlite-utils/issues/125 | MDEyOklzc3VlQ29tbWVudDY2NDA2NTM0MQ== | simonw 9599 | 2020-07-27T00:49:41Z | 2020-07-27T00:49:41Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Output binary columns in "sqlite-utils query" JSON 665817570 | ||
664062546 | https://github.com/simonw/sqlite-utils/issues/125#issuecomment-664062546 | https://api.github.com/repos/simonw/sqlite-utils/issues/125 | MDEyOklzc3VlQ29tbWVudDY2NDA2MjU0Ng== | simonw 9599 | 2020-07-27T00:33:03Z | 2020-07-27T00:33:03Z | OWNER | I'm going to imitate how Datasette solves this problem:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Output binary columns in "sqlite-utils query" JSON 665817570 | |
664048720 | https://github.com/simonw/sqlite-utils/issues/122#issuecomment-664048720 | https://api.github.com/repos/simonw/sqlite-utils/issues/122 | MDEyOklzc3VlQ29tbWVudDY2NDA0ODcyMA== | simonw 9599 | 2020-07-26T22:32:50Z | 2020-07-26T22:33:20Z | OWNER | This seems to work in creating a SQLite archive containing all
Then listing files like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI utility for inserting binary files into SQLite 665700495 | |
664048432 | https://github.com/simonw/sqlite-utils/issues/122#issuecomment-664048432 | https://api.github.com/repos/simonw/sqlite-utils/issues/122 | MDEyOklzc3VlQ29tbWVudDY2NDA0ODQzMg== | simonw 9599 | 2020-07-26T22:29:31Z | 2020-07-26T22:29:31Z | OWNER | I'm trying to play with
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI utility for inserting binary files into SQLite 665700495 | |
664013338 | https://github.com/simonw/sqlite-utils/issues/122#issuecomment-664013338 | https://api.github.com/repos/simonw/sqlite-utils/issues/122 | MDEyOklzc3VlQ29tbWVudDY2NDAxMzMzOA== | simonw 9599 | 2020-07-26T16:57:35Z | 2020-07-26T16:57:35Z | OWNER | I should consider easy compatibility with https://www.sqlite.org/sqlar.html
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI utility for inserting binary files into SQLite 665700495 | |
664012247 | https://github.com/simonw/sqlite-utils/issues/125#issuecomment-664012247 | https://api.github.com/repos/simonw/sqlite-utils/issues/125 | MDEyOklzc3VlQ29tbWVudDY2NDAxMjI0Nw== | simonw 9599 | 2020-07-26T16:48:46Z | 2020-07-26T16:48:46Z | OWNER | I could solve round tripping (at least a bit) by allowing insert to be run with a flag that says "these columns are base64 encoded, store the decoded data in a BLOB". That would solve inserting binary data using JSON too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Output binary columns in "sqlite-utils query" JSON 665817570 | |
664012148 | https://github.com/simonw/sqlite-utils/issues/125#issuecomment-664012148 | https://api.github.com/repos/simonw/sqlite-utils/issues/125 | MDEyOklzc3VlQ29tbWVudDY2NDAxMjE0OA== | simonw 9599 | 2020-07-26T16:47:51Z | 2020-07-26T16:47:51Z | OWNER | Best solution I can think of is to return the data as base64. It's a bit nasty since it means you can't round trip it back again. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Output binary columns in "sqlite-utils query" JSON 665817570 | |
663931426 | https://github.com/simonw/sqlite-utils/issues/122#issuecomment-663931426 | https://api.github.com/repos/simonw/sqlite-utils/issues/122 | MDEyOklzc3VlQ29tbWVudDY2MzkzMTQyNg== | simonw 9599 | 2020-07-26T03:35:58Z | 2020-07-26T16:44:33Z | OWNER | Related: #123 ( |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CLI utility for inserting binary files into SQLite 665700495 |
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