, sql = 'select seq, name, file from pragma_database_list() where seq > 0', params = None: no such table: pragma_database_list`\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 841456306, "label": "Invalid SQL: \"no such table: pragma_database_list\" on database page"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1276#issuecomment-808978808", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1276", "id": 808978808, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODk3ODgwOA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-28T23:32:58Z", "updated_at": "2021-03-28T23:33:58Z", "author_association": "OWNER", "body": "I just managed to replicate this bug on Glitch: https://nicar-2020.glitch.me/data\r\n\r\n> Invalid SQL\r\n> no such table: pragma_database_list\r\n\r\nhttps://nicar-2020.glitch.me/-/versions says:\r\n\r\n```json\r\n{\r\n \"python\": {\r\n \"version\": \"3.7.10\",\r\n \"full\": \"3.7.10 (default, Feb 20 2021, 21:21:24) \\n[GCC 5.4.0 20160609]\"\r\n },\r\n \"datasette\": {\r\n \"version\": \"0.55\"\r\n },\r\n \"asgi\": \"3.0\",\r\n \"uvicorn\": \"0.13.4\",\r\n \"sqlite\": {\r\n \"version\": \"3.11.0\",\r\n \"fts_versions\": [\r\n \"FTS4\",\r\n \"FTS3\"\r\n ],\r\n \"extensions\": {\r\n \"json1\": null\r\n },\r\n \"compile_options\": [\r\n \"ENABLE_COLUMN_METADATA\",\r\n \"ENABLE_DBSTAT_VTAB\",\r\n \"ENABLE_FTS3\",\r\n \"ENABLE_FTS3_PARENTHESIS\",\r\n \"ENABLE_JSON1\",\r\n \"ENABLE_LOAD_EXTENSION\",\r\n \"ENABLE_RTREE\",\r\n \"ENABLE_UNLOCK_NOTIFY\",\r\n \"ENABLE_UPDATE_DELETE_LIMIT\",\r\n \"HAVE_ISNAN\",\r\n \"LIKE_DOESNT_MATCH_BLOBS\",\r\n \"MAX_SCHEMA_RETRY=25\",\r\n \"OMIT_LOOKASIDE\",\r\n \"SECURE_DELETE\",\r\n \"SOUNDEX\",\r\n \"SYSTEM_MALLOC\",\r\n \"TEMP_STORE=1\",\r\n \"THREADSAFE=1\"\r\n ]\r\n }\r\n}\r\n```\r\nThat's [SQLite 3.11.0 from 2016-02-15](https://www.sqlite.org/releaselog/3_11_0.html) with no FTS5.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 841456306, "label": "Invalid SQL: \"no such table: pragma_database_list\" on database page"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1273#issuecomment-808759984", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1273", "id": 808759984, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODc1OTk4NA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T16:43:17Z", "updated_at": "2021-03-27T16:43:17Z", "author_association": "OWNER", "body": "That rivers example in the tutorial would work a lot better with a live demo.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 838382890, "label": "Refresh SpatiaLite documentation"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1273#issuecomment-808757721", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1273", "id": 808757721, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODc1NzcyMQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T16:25:48Z", "updated_at": "2021-03-27T16:25:48Z", "author_association": "OWNER", "body": "> This will give you back an additional column of GeoJSON. You can copy and paste GeoJSON from this column into the debugging tool at geojson.io to visualize it on a map.\r\n\r\nThat should promote `datasette-leaflet-geojson` instead.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 838382890, "label": "Refresh SpatiaLite documentation"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1090#issuecomment-808757659", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1090", "id": 808757659, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODc1NzY1OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T16:25:25Z", "updated_at": "2021-03-27T16:25:25Z", "author_association": "OWNER", "body": "Related feature request: ability to set default values for canned queries: #1258", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 741862364, "label": "Custom widgets for canned query forms"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1090#issuecomment-808757155", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1090", "id": 808757155, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODc1NzE1NQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T16:21:43Z", "updated_at": "2021-03-27T16:21:43Z", "author_association": "OWNER", "body": "Idea for these: imitate https://django-sql-dashboard.readthedocs.io/en/latest/widgets.html#custom-widgets and drive them with templates.\r\n\r\nSo a custom widget type of `textarea` would look for a template called `widgets/textarea.html` - which means users could define brand new custom widgets just by creating their own template files.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 741862364, "label": "Custom widgets for canned query forms"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1273#issuecomment-808756921", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1273", "id": 808756921, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODc1NjkyMQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T16:19:45Z", "updated_at": "2021-03-27T16:26:28Z", "author_association": "OWNER", "body": "I have a better recipe for using spatial indexes now on https://simonwillison.net/2021/Jan/24/drawing-shapes-spatialite/\r\n```sql\r\nselect\r\n AsGeoJSON(geometry), *\r\nfrom\r\n CPAD_2020a_SuperUnits\r\nwhere\r\n PARK_NAME like '%mini%' and\r\n Intersects(GeomFromGeoJSON(:freedraw), geometry) = 1\r\n and CPAD_2020a_SuperUnits.rowid in (\r\n select\r\n rowid\r\n from\r\n SpatialIndex\r\n where\r\n f_table_name = 'CPAD_2020a_SuperUnits'\r\n and search_frame = GeomFromGeoJSON(:freedraw)\r\n )\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 838382890, "label": "Refresh SpatiaLite documentation"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1278#issuecomment-808756366", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1278", "id": 808756366, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODc1NjM2Ng==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T16:15:47Z", "updated_at": "2021-03-27T16:15:47Z", "author_association": "OWNER", "body": "https://timezones-api.datasette.io/ is now up and running on Cloud Run.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 842416110, "label": "SpatiaLite timezones demo is broken"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1278#issuecomment-808652008", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1278", "id": 808652008, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODY1MjAwOA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T04:47:17Z", "updated_at": "2021-03-27T04:47:17Z", "author_association": "OWNER", "body": "https://github.com/simonw/timezones-api is that project, it's pretty old now. I'll try to get it running on Cloud Run.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 842416110, "label": "SpatiaLite timezones demo is broken"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1258#issuecomment-808651088", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1258", "id": 808651088, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODY1MTA4OA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T04:41:52Z", "updated_at": "2021-03-27T04:42:14Z", "author_association": "OWNER", "body": "Right now they look like this:\r\n```yaml\r\ndatabases:\r\n fixtures:\r\n queries:\r\n neighborhood_search:\r\n params:\r\n - text\r\n```\r\nIn addition to being able to specify defaults, I'd also like to add other things in the future - most significantly the ability to specify a different input widget (e.g. textarea v.s. single-line input)\r\n\r\nSo maybe this looks like:\r\n```yaml\r\nparams:\r\n- name: text\r\n default: \"\"\r\n- name: age\r\n widget: number\r\n```", "reactions": "{\"total_count\": 3, \"+1\": 3, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 828858421, "label": "Allow canned query params to specify default values"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1258#issuecomment-808650266", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1258", "id": 808650266, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODY1MDI2Ng==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T04:37:07Z", "updated_at": "2021-03-27T04:37:07Z", "author_association": "OWNER", "body": "I like that idea.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 828858421, "label": "Allow canned query params to specify default values"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1249#issuecomment-808649480", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1249", "id": 808649480, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODY0OTQ4MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T04:32:10Z", "updated_at": "2021-03-27T04:32:10Z", "author_association": "OWNER", "body": "I'll close this issue after I ship Datasette 0.56 and confirm that the Dockerfile was correctly built and published to Docker Hub.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 824064069, "label": "Updated Dockerfile with SpatiaLite version 5.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1249#issuecomment-808649322", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1249", "id": 808649322, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODY0OTMyMg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T04:31:28Z", "updated_at": "2021-03-27T04:31:28Z", "author_association": "OWNER", "body": "One last test of that Dockerfile:\r\n```\r\n(datasette) datasette % docker build -f Dockerfile -t datasetteproject/datasette:0.55a --build-arg VERSION=0.55 .\r\n(datasette) datasette % docker run datasetteproject/datasette:0.55a datasette --get '/-/versions.json' | jq\r\n{\r\n \"python\": {\r\n \"version\": \"3.9.2\",\r\n \"full\": \"3.9.2 (default, Feb 19 2021, 17:23:45) \\n[GCC 8.3.0]\"\r\n },\r\n \"datasette\": {\r\n \"version\": \"0.55\"\r\n },\r\n \"asgi\": \"3.0\",\r\n \"uvicorn\": \"0.13.4\",\r\n \"sqlite\": {\r\n \"version\": \"3.27.2\",\r\n \"fts_versions\": [\r\n \"FTS5\",\r\n \"FTS4\",\r\n \"FTS3\"\r\n ],\r\n \"extensions\": {\r\n \"json1\": null\r\n },\r\n \"compile_options\": [\r\n \"COMPILER=gcc-8.3.0\",\r\n \"ENABLE_COLUMN_METADATA\",\r\n \"ENABLE_DBSTAT_VTAB\",\r\n \"ENABLE_FTS3\",\r\n \"ENABLE_FTS3_PARENTHESIS\",\r\n \"ENABLE_FTS3_TOKENIZER\",\r\n \"ENABLE_FTS4\",\r\n \"ENABLE_FTS5\",\r\n \"ENABLE_JSON1\",\r\n \"ENABLE_LOAD_EXTENSION\",\r\n \"ENABLE_PREUPDATE_HOOK\",\r\n \"ENABLE_RTREE\",\r\n \"ENABLE_SESSION\",\r\n \"ENABLE_STMTVTAB\",\r\n \"ENABLE_UNLOCK_NOTIFY\",\r\n \"ENABLE_UPDATE_DELETE_LIMIT\",\r\n \"HAVE_ISNAN\",\r\n \"LIKE_DOESNT_MATCH_BLOBS\",\r\n \"MAX_SCHEMA_RETRY=25\",\r\n \"MAX_VARIABLE_NUMBER=250000\",\r\n \"OMIT_LOOKASIDE\",\r\n \"SECURE_DELETE\",\r\n \"SOUNDEX\",\r\n \"TEMP_STORE=1\",\r\n \"THREADSAFE=1\",\r\n \"USE_URI\"\r\n ]\r\n }\r\n}\r\n(datasette) datasette % docker run datasetteproject/datasette:0.55a datasette --get '/-/versions.json' --load-extension=spatialite | jq\r\n{\r\n \"python\": {\r\n \"version\": \"3.9.2\",\r\n \"full\": \"3.9.2 (default, Feb 19 2021, 17:23:45) \\n[GCC 8.3.0]\"\r\n },\r\n \"datasette\": {\r\n \"version\": \"0.55\"\r\n },\r\n \"asgi\": \"3.0\",\r\n \"uvicorn\": \"0.13.4\",\r\n \"sqlite\": {\r\n \"version\": \"3.27.2\",\r\n \"fts_versions\": [\r\n \"FTS5\",\r\n \"FTS4\",\r\n \"FTS3\"\r\n ],\r\n \"extensions\": {\r\n \"json1\": null,\r\n \"spatialite\": \"5.0.1\"\r\n },\r\n \"compile_options\": [\r\n \"COMPILER=gcc-8.3.0\",\r\n \"ENABLE_COLUMN_METADATA\",\r\n \"ENABLE_DBSTAT_VTAB\",\r\n \"ENABLE_FTS3\",\r\n \"ENABLE_FTS3_PARENTHESIS\",\r\n \"ENABLE_FTS3_TOKENIZER\",\r\n \"ENABLE_FTS4\",\r\n \"ENABLE_FTS5\",\r\n \"ENABLE_JSON1\",\r\n \"ENABLE_LOAD_EXTENSION\",\r\n \"ENABLE_PREUPDATE_HOOK\",\r\n \"ENABLE_RTREE\",\r\n \"ENABLE_SESSION\",\r\n \"ENABLE_STMTVTAB\",\r\n \"ENABLE_UNLOCK_NOTIFY\",\r\n \"ENABLE_UPDATE_DELETE_LIMIT\",\r\n \"HAVE_ISNAN\",\r\n \"LIKE_DOESNT_MATCH_BLOBS\",\r\n \"MAX_SCHEMA_RETRY=25\",\r\n \"MAX_VARIABLE_NUMBER=250000\",\r\n \"OMIT_LOOKASIDE\",\r\n \"SECURE_DELETE\",\r\n \"SOUNDEX\",\r\n \"TEMP_STORE=1\",\r\n \"THREADSAFE=1\",\r\n \"USE_URI\"\r\n ]\r\n }\r\n}\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 824064069, "label": "Updated Dockerfile with SpatiaLite version 5.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1272#issuecomment-808648974", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1272", "id": 808648974, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODY0ODk3NA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T04:29:42Z", "updated_at": "2021-03-27T04:29:42Z", "author_association": "OWNER", "body": "I'm skipping this for the moment because the new Dockerfile shape introduced in https://github.com/simonw/datasette/issues/1249#issuecomment-804404544 isn't compatible with this technique, since it installs Datasette from PyPI rather than directly from the repo.\r\n\r\nWill need to change that if I want to do this unit tests thing.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 838245338, "label": "Unit tests for the Dockerfile"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1272#issuecomment-808647937", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1272", "id": 808647937, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODY0NzkzNw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T04:23:19Z", "updated_at": "2021-03-27T04:23:36Z", "author_association": "OWNER", "body": "Part of the challenge here is only running if a Docker daemon is available. I think this pattern works, in `tests/test_dockerfile.py`:\r\n```python\r\nimport httpx\r\nimport pathlib\r\nimport pytest\r\nimport subprocess\r\n\r\nroot = pathlib.Path(__file__).parent.parent\r\n\r\ndef docker_is_available():\r\n try:\r\n client = httpx.Client(\r\n transport=httpx.HTTPTransport(uds=\"/var/run/docker.sock\")\r\n )\r\n client.get(\"http://docker/info\")\r\n return True\r\n except httpx.ConnectError:\r\n return False\r\n\r\n\r\n@pytest.fixture\r\ndef build_container():\r\n assert (root / \"Dockerfile\").exists()\r\n subprocess.check_call([\r\n \"docker\", \"build\", str(root), \"-t\", \"datasette-dockerfile-test\"\r\n ])\r\n\r\n\r\n@pytest.mark.skipif(not docker_is_available(),\r\n reason=\"Docker is not available\"\r\n)\r\ndef test_dockerfile(build_container):\r\n output = subprocess.check_output([\r\n \"docker\", \"run\", \"datasette-dockerfile-test\", \"datasette\", \"--get\", \"/_memory?sql=select+1&shape=_array\"\r\n ])\r\n assert False, \"Implement better assertion here\"\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 838245338, "label": "Unit tests for the Dockerfile"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1276#issuecomment-808642405", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1276", "id": 808642405, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODY0MjQwNQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T03:53:18Z", "updated_at": "2021-03-27T03:53:18Z", "author_association": "OWNER", "body": "That's really odd. What version of SQLite are you using on the server? You can tell by visiting `https://your-site/-/versions`", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 841456306, "label": "Invalid SQL: \"no such table: pragma_database_list\" on database page"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1277#issuecomment-808641846", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1277", "id": 808641846, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODY0MTg0Ng==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-27T03:49:34Z", "updated_at": "2021-03-27T03:49:34Z", "author_association": "OWNER", "body": "I fixed this already, it's a duplicate of #1239", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 842212586, "label": "Facet by array breaks if table name contains a space"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/252#issuecomment-808302971", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/252", "id": 808302971, "node_id": "MDEyOklzc3VlQ29tbWVudDgwODMwMjk3MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-26T15:21:38Z", "updated_at": "2021-03-26T15:21:38Z", "author_association": "OWNER", "body": "Already got that! It's the `--nl` option - works for both importing and exporting data: https://sqlite-utils.datasette.io/en/stable/cli.html#inserting-json-data", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 842062949, "label": "Support json-line files"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/251#issuecomment-807647791", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/251", "id": 807647791, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNzY0Nzc5MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-25T22:42:48Z", "updated_at": "2021-03-25T22:44:31Z", "author_association": "OWNER", "body": "Idea: enhance `lambda` to allow it to return a dictionary of values, which will then be used to populate new columns. Use a `--multicolumn` option to indicate this:\r\n\r\n sqlite-utils convert lambda mydb.db mytable mycolumn \\\r\n --code '{\"first_name\": value.split()[0], \"last_name\": value.split()[1]}' \\\r\n --multicolumn --drop\r\n\r\nThe `--drop` means \"drop the `mycolumn` column after making this change\".\r\n\r\nMaybe `--multi` is a better name than `--multicolumn` here, since either way it's going to need additional explanation somewhere.\r\n\r\nWould this overlap with #239 at all?", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 841377702, "label": "\"sqlite-utils convert\" command to replace the separate \"sqlite-transform\" tool"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/251#issuecomment-807642041", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/251", "id": 807642041, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNzY0MjA0MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-25T22:39:22Z", "updated_at": "2021-03-25T22:39:22Z", "author_association": "OWNER", "body": "Here's the full current implementation of that tool: https://github.com/simonw/sqlite-transform/blob/0.5/sqlite_transform/cli.py\r\n\r\nMy current plan is to make this functionality available as the following:\r\n\r\n sqlite-utils convert jsonsplit mydb.db mytable mycolumn\r\n sqlite-utils convert parsedatetime mydb.db mytable mycolumn\r\n sqlite-utils convert parsedate mydb.db mytable mycolumn\r\n sqlite-utils convert lambda mydb.db mytable mycolumn --code='str(value).upper()'\r\n\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 841377702, "label": "\"sqlite-utils convert\" command to replace the separate \"sqlite-transform\" tool"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/741#issuecomment-806166575", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/741", "id": 806166575, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNjE2NjU3NQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-24T20:30:33Z", "updated_at": "2021-03-24T20:30:33Z", "author_association": "OWNER", "body": "`datasette package` is a mostly unmaintained feature at this point - it has a bit of test coverage but I've not made any improvements to it in a few years, and I don't use it for my own projects.\r\n\r\nI'll make this change to `package` at the same time as I land it for `publish` though.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 607223136, "label": "Replace \"datasette publish --extra-options\" with \"--setting\""}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1274#issuecomment-805216038", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1274", "id": 805216038, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTIxNjAzOA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T20:14:53Z", "updated_at": "2021-03-23T20:14:53Z", "author_association": "OWNER", "body": "Yes this is one of the main reasons I'm planning to switch to encouraging YAML be default instead of JSON (while still supporting JSON) - YAML supports comments and multi-line strings.\r\n\r\nSee #1153 for YAML by default in the documentation.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 839008371, "label": "Might there be some way to comment metadata.json?"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1153#issuecomment-805109341", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1153", "id": 805109341, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTEwOTM0MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T17:55:48Z", "updated_at": "2021-03-23T18:41:57Z", "author_association": "OWNER", "body": "Beginnings of a UI element for switching between them:\r\n```html\r\n\r\n```\r\n\r\n\r\nThat `` has a padding of 12px, so using 12px padding on the tab links should get them to line up better.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 771202454, "label": "Use YAML examples in documentation by default, not JSON"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1249#issuecomment-805033155", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1249", "id": 805033155, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTAzMzE1NQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T16:12:13Z", "updated_at": "2021-03-23T16:12:13Z", "author_association": "OWNER", "body": "Don't forget to update this bit of the docs: https://docs.datasette.io/en/0.55/spatialite.html#building-spatialite-from-source\r\n\r\n> The packaged versions of SpatiaLite usually provide SpatiaLite 4.3.0a. For an example of how to build the most recent unstable version, 4.4.0-RC0 (which includes the powerful [VirtualKNN module](https://www.gaia-gis.it/fossil/libspatialite/wiki?name=KNN)), take a look at the [Datasette Dockerfile](https://github.com/simonw/datasette/blob/master/Dockerfile).\r\n\r\nSee also #1273", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 824064069, "label": "Updated Dockerfile with SpatiaLite version 5.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1270#issuecomment-805058241", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1270", "id": 805058241, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTA1ODI0MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T16:45:39Z", "updated_at": "2021-03-23T16:45:39Z", "author_association": "OWNER", "body": "I managed to build SpatiaLite such that this isn't necessary any more. I'm still interested in pursuing this further though - it feels like it could be a more robust way of implementing timeouts, but I need to prove to myself that it's better (maybe better performance, or handles more edge-cases?). Not sure how to prove that yet.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 837350092, "label": "Try implementing SQLite timeouts using .interrupt() instead of using .set_progress_handler()"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1153#issuecomment-805056806", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1153", "id": 805056806, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTA1NjgwNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T16:43:38Z", "updated_at": "2021-03-23T16:43:38Z", "author_association": "OWNER", "body": "I used this code to get that:\r\n```javascript\r\nvar jsonVersion = JSON.stringify(window.jsyaml.load(document.querySelector('.highlight-yaml').textContent), null, 4);\r\ndiv.querySelector('.highlight pre').innerText = jsonVersion;\r\ndiv.querySelector('.highlight pre').style.whiteSpace = 'pre-wrap'\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 771202454, "label": "Use YAML examples in documentation by default, not JSON"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1153#issuecomment-805055291", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1153", "id": 805055291, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTA1NTI5MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T16:41:31Z", "updated_at": "2021-03-23T16:41:31Z", "author_association": "OWNER", "body": "One downside of doing this conversion in JavaScript: it's much harder to get the same JSON syntax highlighting as that provided by Sphinx:\r\n\r\n\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 771202454, "label": "Use YAML examples in documentation by default, not JSON"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1153#issuecomment-805050163", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1153", "id": 805050163, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTA1MDE2Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T16:34:35Z", "updated_at": "2021-03-23T16:35:32Z", "author_association": "OWNER", "body": "https://docs.datasette.io/en/stable/metadata.html has this example:\r\n```yaml\r\ntitle: Demonstrating Metadata from YAML\r\ndescription_html: |-\r\n This description includes a long HTML string
\r\n
\r\n - YAML is better for embedding HTML strings than JSON!
\r\n
\r\nlicense: ODbL\r\nlicense_url: https://opendatacommons.org/licenses/odbl/\r\ndatabases:\r\n fixtures:\r\n tables:\r\n no_primary_key:\r\n hidden: true\r\n queries:\r\n neighborhood_search:\r\n sql: |-\r\n select neighborhood, facet_cities.name, state\r\n from facetable join facet_cities on facetable.city_id = facet_cities.id\r\n where neighborhood like '%' || :text || '%' order by neighborhood;\r\n title: Search neighborhoods\r\n description_html: |-\r\n This demonstrates basic LIKE search\r\n```\r\n\r\nI ran this in the browser dev tools:\r\n```javascript\r\nvar s = document.createElement('script')\r\ns.src = 'https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.0.0/js-yaml.min.js'\r\ndocument.head.appendChild(s)\r\nvar yamlExample = document.querySelector('.highlight-yaml').textContent);\r\nconsole.log(JSON.stringify(window.jsyaml.load(yamlExample), null, 4))\r\n```\r\nAnd got:\r\n```json\r\n{\r\n \"title\": \"Demonstrating Metadata from YAML\",\r\n \"description_html\": \"
This description includes a long HTML string
\\n\\n - YAML is better for embedding HTML strings than JSON!
\\n
\",\r\n \"license\": \"ODbL\",\r\n \"license_url\": \"https://opendatacommons.org/licenses/odbl/\",\r\n \"databases\": {\r\n \"fixtures\": {\r\n \"tables\": {\r\n \"no_primary_key\": {\r\n \"hidden\": true\r\n }\r\n },\r\n \"queries\": {\r\n \"neighborhood_search\": {\r\n \"sql\": \"select neighborhood, facet_cities.name, state\\nfrom facetable join facet_cities on facetable.city_id = facet_cities.id\\nwhere neighborhood like '%' || :text || '%' order by neighborhood;\",\r\n \"title\": \"Search neighborhoods\",\r\n \"description_html\": \"This demonstrates basic LIKE search\"\r\n }\r\n }\r\n }\r\n }\r\n}\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 771202454, "label": "Use YAML examples in documentation by default, not JSON"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1153#issuecomment-805047117", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1153", "id": 805047117, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTA0NzExNw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T16:30:15Z", "updated_at": "2021-03-23T16:46:06Z", "author_association": "OWNER", "body": "https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.0.0/js-yaml.min.js is only 12.5KB zipped, 38KB total - so that's not a bad option.\r\n\r\nhttps://github.com/nodeca/js-yaml", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 771202454, "label": "Use YAML examples in documentation by default, not JSON"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1153#issuecomment-805042880", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1153", "id": 805042880, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTA0Mjg4MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T16:24:32Z", "updated_at": "2021-03-23T16:24:32Z", "author_association": "OWNER", "body": "... actually I think I would do that conversion in Python. The client-side YAML parsers all look a little bit heavy to me in terms of additional page weight.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 771202454, "label": "Use YAML examples in documentation by default, not JSON"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1153#issuecomment-805041522", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1153", "id": 805041522, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNTA0MTUyMg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T16:22:46Z", "updated_at": "2021-03-23T16:22:46Z", "author_association": "OWNER", "body": "That's a good idea. I could do that with JavaScript - loading YAML and converting it to JSON in JavaScript shouldn't be hard, and it's better than JSON-to-YAML because there's only one correct JSON representation of a YAML file whereas you can represent a JSON document in YAML in a bunch of different ways.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 771202454, "label": "Use YAML examples in documentation by default, not JSON"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/163#issuecomment-804540869", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/163", "id": 804540869, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNDU0MDg2OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-23T02:44:33Z", "updated_at": "2021-03-23T02:44:33Z", "author_association": "OWNER", "body": "Comments welcome!", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 279547886, "label": "Document the querystring argument for setting a different time limit"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1249#issuecomment-804406675", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1249", "id": 804406675, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNDQwNjY3NQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-22T21:26:27Z", "updated_at": "2021-03-22T21:26:27Z", "author_association": "OWNER", "body": "(Without the `apt-get update ...` SpatiaLite line it's 125MB)", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 824064069, "label": "Updated Dockerfile with SpatiaLite version 5.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1249#issuecomment-804404544", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1249", "id": 804404544, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNDQwNDU0NA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-22T21:22:56Z", "updated_at": "2021-03-22T21:24:24Z", "author_association": "OWNER", "body": "Final version of Dockerfile which installs the specified version from GitHub:\r\n\r\n docker build . -t datasette-spatialite --build-arg VERSION=0.55\r\n\r\n```dockerfile\r\nFROM python:3.9.2-slim-buster as build\r\n\r\n# Version of Datasette to install, e.g. 0.55\r\n# docker build . -t datasette --build-arg VERSION=0.55\r\nARG VERSION\r\n\r\n# software-properties-common provides add-apt-repository\r\n# which we need in order to install a more recent release\r\n# of libsqlite3-mod-spatialite from the sid distribution\r\nRUN apt-get update && \\\r\n apt-get -y --no-install-recommends install software-properties-common && \\\r\n add-apt-repository \"deb http://httpredir.debian.org/debian sid main\" && \\\r\n apt-get update && \\\r\n apt-get -t sid install -y --no-install-recommends libsqlite3-mod-spatialite && \\\r\n apt-get remove -y software-properties-common && \\\r\n apt clean && \\\r\n rm -rf /var/lib/apt && \\\r\n rm -rf /var/lib/dpkg\r\n\r\nRUN pip install https://github.com/simonw/datasette/archive/refs/tags/${VERSION}.zip && \\\r\n find /usr/local/lib -name '__pycache__' | xargs rm -r && \\\r\n rm -rf /root/.cache/pip\r\n\r\nEXPOSE 8001\r\nCMD [\"datasette\"]\r\n```\r\nRun against 0.55 this produces an image of 262MB", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 824064069, "label": "Updated Dockerfile with SpatiaLite version 5.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1249#issuecomment-804338678", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1249", "id": 804338678, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNDMzODY3OA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-22T19:33:43Z", "updated_at": "2021-03-22T19:33:43Z", "author_association": "OWNER", "body": "Replacing `rm -rf /var/lib/{apt,dpkg,cache,log}/` with \r\n```\r\n rm -rf /var/lib/apt && \\\r\n rm -rf /var/lib/dpkg\r\n```\r\nGot the size down to 305MB.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 824064069, "label": "Updated Dockerfile with SpatiaLite version 5.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1249#issuecomment-804318314", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1249", "id": 804318314, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNDMxODMxNA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-22T19:04:30Z", "updated_at": "2021-03-22T19:04:30Z", "author_association": "OWNER", "body": "Considering the image on Docker Hub right now is `383MB` this is actually an improvement.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 824064069, "label": "Updated Dockerfile with SpatiaLite version 5.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1249#issuecomment-804317545", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1249", "id": 804317545, "node_id": "MDEyOklzc3VlQ29tbWVudDgwNDMxNzU0NQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-03-22T19:03:22Z", "updated_at": "2021-03-22T19:03:22Z", "author_association": "OWNER", "body": "This Dockerfile:\r\n```dockerfile\r\nFROM python:3.9.2-slim-buster as build\r\n\r\n# software-properties-common provides add-apt-repository\r\nRUN apt-get update && \\\r\n apt-get -y install software-properties-common && \\\r\n add-apt-repository \"deb http://httpredir.debian.org/debian sid main\" && \\\r\n apt-get update && \\\r\n apt-get -t sid install -y libsqlite3-mod-spatialite && \\\r\n apt clean && \\\r\n rm -rf /var/lib/{apt,dpkg,cache,log}/\r\n\r\nRUN pip install datasette\r\n\r\nEXPOSE 8001\r\nCMD [\"datasette\"]\r\n```\r\nProduces a 344MB image that includes a working SpatiaLite 5.0 module. And weirdly... it doesn't exhibit the hanging bug!", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 824064069, "label": "Updated Dockerfile with SpatiaLite version 5.0"}, "performed_via_github_app": null}