{"html_url": "https://github.com/simonw/datasette/issues/2195#issuecomment-1730458954", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2195", "id": 1730458954, "node_id": "IC_kwDOBm6k_c5nJLVK", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:57:39Z", "updated_at": "2023-09-21T22:57:48Z", "author_association": "OWNER", "body": "Worth noting that it already sets `--cors` automatically without you needing to specify it:\r\n\r\nhttps://github.com/simonw/datasette/blob/d97e82df3c8a3f2e97038d7080167be9bb74a68d/datasette/utils/__init__.py#L374-L374\r\n\r\nI wonder if that's actually surprising behaviour that we should change before 1.0.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907765514, "label": "`datasette publish` needs support for the new config/metadata split"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2195#issuecomment-1730457374", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2195", "id": 1730457374, "node_id": "IC_kwDOBm6k_c5nJK8e", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:56:18Z", "updated_at": "2023-09-21T22:56:18Z", "author_association": "OWNER", "body": "Maybe I should add `--cors` and `--crossdb` to `datasette publish cloudrun` as well?", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907765514, "label": "`datasette publish` needs support for the new config/metadata split"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2195#issuecomment-1730446937", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2195", "id": 1730446937, "node_id": "IC_kwDOBm6k_c5nJIZZ", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:46:42Z", "updated_at": "2023-09-21T22:46:52Z", "author_association": "OWNER", "body": "Found more when I [searched for YAML](https://github.com/search?q=datasette+publish+extra-options++language%3AYAML&type=code).\r\n\r\nHere's the most interesting: https://github.com/labordata/warehouse/blob/0029a72fc1ceae9091932da6566f891167179012/.github/workflows/build.yml#L59\r\n\r\n`--extra-options=\"--crossdb --setting sql_time_limit_ms 100000 --cors --setting facet_time_limit_ms 500 --setting allow_facet off --setting trace_debug 1\"`\r\n\r\nUses both `--cors` and `--crossdb`.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907765514, "label": "`datasette publish` needs support for the new config/metadata split"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2195#issuecomment-1730441613", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2195", "id": 1730441613, "node_id": "IC_kwDOBm6k_c5nJHGN", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:42:12Z", "updated_at": "2023-09-21T22:42:12Z", "author_association": "OWNER", "body": "https://github.com/search?q=datasette+publish+extra-options+language%3AShell&type=code&l=Shell shows 17 matches, I'll copy in illustrative examples here:\r\n\r\n```\r\n--extra-options=\"--setting sql_time_limit_ms 5000\"\r\n--extra-options=\"--config default_cache_ttl:3600 --config hash_urls:1\"\r\n--extra-options \"--setting sql_time_limit_ms 3500 --setting default_page_size 20 --setting trace_debug 1\"\r\n--extra-options=\"--config default_page_size:50 --config sql_time_limit_ms:30000 --config facet_time_limit_ms:10000\"\r\n--extra-options=\"--setting sql_time_limit_ms 5000\"\r\n--extra-options \"--setting suggest_facets off --setting allow_download on --setting truncate_cells_html 0 --setting max_csv_mb 0 --setting sql_time_limit_ms 2000\"\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907765514, "label": "`datasette publish` needs support for the new config/metadata split"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2195#issuecomment-1730438503", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2195", "id": 1730438503, "node_id": "IC_kwDOBm6k_c5nJGVn", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:38:10Z", "updated_at": "2023-09-21T22:38:10Z", "author_association": "OWNER", "body": "I'd really like to remove `--extra-options`. I think the new design makes that completely obsolete?\r\n\r\nMaybe it doesn't. You still need `--extra-options` for the `--crossdb` option for example.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907765514, "label": "`datasette publish` needs support for the new config/metadata split"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2195#issuecomment-1730437934", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2195", "id": 1730437934, "node_id": "IC_kwDOBm6k_c5nJGMu", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:37:22Z", "updated_at": "2023-09-21T22:37:22Z", "author_association": "OWNER", "body": "Here's the full help for Cloud Run at the moment:\r\n```bash\r\ndatasette publish cloudrun --help\r\n```\r\n```\r\nUsage: datasette publish cloudrun [OPTIONS] [FILES]...\r\n\r\n Publish databases to Datasette running on Cloud Run\r\n\r\nOptions:\r\n -m, --metadata FILENAME Path to JSON/YAML file containing metadata\r\n to publish\r\n --extra-options TEXT Extra options to pass to datasette serve\r\n --branch TEXT Install datasette from a GitHub branch e.g.\r\n main\r\n --template-dir DIRECTORY Path to directory containing custom\r\n templates\r\n --plugins-dir DIRECTORY Path to directory containing custom plugins\r\n --static MOUNT:DIRECTORY Serve static files from this directory at\r\n /MOUNT/...\r\n --install TEXT Additional packages (e.g. plugins) to\r\n install\r\n --plugin-secret ...\r\n Secrets to pass to plugins, e.g. --plugin-\r\n secret datasette-auth-github client_id xxx\r\n --version-note TEXT Additional note to show on /-/versions\r\n --secret TEXT Secret used for signing secure values, such\r\n as signed cookies\r\n --title TEXT Title for metadata\r\n --license TEXT License label for metadata\r\n --license_url TEXT License URL for metadata\r\n --source TEXT Source label for metadata\r\n --source_url TEXT Source URL for metadata\r\n --about TEXT About label for metadata\r\n --about_url TEXT About URL for metadata\r\n -n, --name TEXT Application name to use when building\r\n --service TEXT Cloud Run service to deploy (or over-write)\r\n --spatialite Enable SpatialLite extension\r\n --show-files Output the generated Dockerfile and\r\n metadata.json\r\n --memory TEXT Memory to allocate in Cloud Run, e.g. 1Gi\r\n --cpu [1|2|4] Number of vCPUs to allocate in Cloud Run\r\n --timeout INTEGER Build timeout in seconds\r\n --apt-get-install TEXT Additional packages to apt-get install\r\n --max-instances INTEGER Maximum Cloud Run instances\r\n --min-instances INTEGER Minimum Cloud Run instances\r\n --help Show this message and exit.\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907765514, "label": "`datasette publish` needs support for the new config/metadata split"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2195#issuecomment-1730437237", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2195", "id": 1730437237, "node_id": "IC_kwDOBm6k_c5nJGB1", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:36:22Z", "updated_at": "2023-09-21T22:36:22Z", "author_association": "OWNER", "body": "I think the actual design of this is pretty simple. Current help starts like this:\r\n\r\n```\r\nUsage: datasette publish cloudrun [OPTIONS] [FILES]...\r\n\r\n Publish databases to Datasette running on Cloud Run\r\n\r\nOptions:\r\n -m, --metadata FILENAME Path to JSON/YAML file containing metadata\r\n to publish\r\n --extra-options TEXT Extra options to pass to datasette serve\r\n```\r\nThe `-s` and `-c` short options are not being used.\r\n\r\nSo I think `-c/--config` can point to a JSON or YAML `datasette.yaml` file, and `-s/--setting key value` can mirror the new `-s/--setting` option in `datasette serve` itself (a shortcut for populating the config file directly from the CLI).\r\n\r\nHere's the relevant help section from `datasette serve`:\r\n```\r\n -m, --metadata FILENAME Path to JSON/YAML file containing\r\n license/source metadata\r\n -c, --config FILENAME Path to JSON/YAML Datasette configuration\r\n file\r\n -s, --setting SETTING... nested.key, value setting to use in\r\n Datasette configuration\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907765514, "label": "`datasette publish` needs support for the new config/metadata split"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2189#issuecomment-1730388418", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2189", "id": 1730388418, "node_id": "IC_kwDOBm6k_c5nI6HC", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:26:19Z", "updated_at": "2023-09-21T22:26:19Z", "author_association": "OWNER", "body": "1.0a7 is out with this fix as well now: https://docs.datasette.io/en/1.0a7/changelog.html#a7-2023-09-21", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1901416155, "label": "Server hang on parallel execution of queries to named in-memory databases"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730363182", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730363182, "node_id": "IC_kwDOBm6k_c5nIz8u", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:09:10Z", "updated_at": "2023-09-21T22:09:10Z", "author_association": "OWNER", "body": "Tests all pass now.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2194#issuecomment-1730362441", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2194", "id": 1730362441, "node_id": "IC_kwDOBm6k_c5nIzxJ", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:08:19Z", "updated_at": "2023-09-21T22:08:19Z", "author_association": "OWNER", "body": "That worked\r\n\r\nhttps://github.com/simonw/datasette/commit/e4f868801a6633400045f59584cfe650961c3fa6 is the latest commit right now and https://latest.datasette.io/-/versions shows that as the deployed version.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907695234, "label": "Deploy failing with \"plugins/alternative_route.py: Not a directory\""}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730356422", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730356422, "node_id": "IC_kwDOBm6k_c5nIyTG", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T22:01:00Z", "updated_at": "2023-09-21T22:01:00Z", "author_association": "OWNER", "body": "Tested that locally with Python 3.9 from `pyenv` and it worked.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730353462", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730353462, "node_id": "IC_kwDOBm6k_c5nIxk2", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T21:57:17Z", "updated_at": "2023-09-21T21:57:17Z", "author_association": "OWNER", "body": "Still fails in Python 3.9: https://github.com/simonw/datasette/actions/runs/6266752548/job/17018363302\r\n```\r\n plugin_info[\"name\"] = distinfo.name or distinfo.project_name\r\nAttributeError: 'PathDistribution' object has no attribute 'name'\r\nTest failed: datasette-json-html should not have been loaded\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2193#issuecomment-1730353006", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2193", "id": 1730353006, "node_id": "IC_kwDOBm6k_c5nIxdu", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T21:56:43Z", "updated_at": "2023-09-21T21:56:43Z", "author_association": "OWNER", "body": "The test fails as expected now. Closing this issue, will solve the remaining problems in:\r\n- #2057", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907655261, "label": "\"Test DATASETTE_LOAD_PLUGINS\" test shows errors but did not fail the CI run"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2193#issuecomment-1730352111", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2193", "id": 1730352111, "node_id": "IC_kwDOBm6k_c5nIxPv", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T21:55:41Z", "updated_at": "2023-09-21T21:55:41Z", "author_association": "OWNER", "body": "https://github.com/simonw/datasette/actions/runs/6267146158/job/17019594849 failed on 3.9 this time.\r\n\r\n```\r\n plugin_info[\"name\"] = distinfo.name or distinfo.project_name\r\nAttributeError: 'PathDistribution' object has no attribute 'name'\r\nTest failed: datasette-json-html should not have been loaded\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907655261, "label": "\"Test DATASETTE_LOAD_PLUGINS\" test shows errors but did not fail the CI run"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2195#issuecomment-1730313565", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2195", "id": 1730313565, "node_id": "IC_kwDOBm6k_c5nIn1d", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T21:16:31Z", "updated_at": "2023-09-21T21:16:31Z", "author_association": "OWNER", "body": "The `@add_common_publish_arguments_and_options` decorator described here is bad. If I update it to support a new `config` option all plugins that use it will break.\r\n\r\nhttps://github.com/simonw/datasette/blob/f130c7c0a88e50cea4121ea18d1f6db2431b6fab/docs/plugin_hooks.rst#L347-L355\r\n\r\nI want to deprecate it and switch to a different, better design to address the same problem.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907765514, "label": "`datasette publish` needs support for the new config/metadata split"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2195#issuecomment-1730312128", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2195", "id": 1730312128, "node_id": "IC_kwDOBm6k_c5nInfA", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T21:15:11Z", "updated_at": "2023-09-21T21:15:11Z", "author_association": "OWNER", "body": "As soon as `datasette publish cloudrun` has this I can re-enable this bit of the demo deploy:\r\n\r\nhttps://github.com/simonw/datasette/blob/2da1a6acec915b81a16127008fd739c7d6075681/.github/workflows/deploy-latest.yml#L91-L97\r\n\r\nWhich should fix this broken demo from https://simonwillison.net/2022/Dec/2/datasette-write-api/\r\n\r\nhttps://todomvc.datasette.io/", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907765514, "label": "`datasette publish` needs support for the new config/metadata split"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2194#issuecomment-1730305920", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2194", "id": 1730305920, "node_id": "IC_kwDOBm6k_c5nIl-A", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T21:09:21Z", "updated_at": "2023-09-21T21:09:21Z", "author_association": "OWNER", "body": "I'm going to disable this bit of the deploy for the moment, which will break the demo linked to from https://simonwillison.net/2022/Dec/2/datasette-write-api/\r\n\r\nhttps://github.com/simonw/datasette/blob/2da1a6acec915b81a16127008fd739c7d6075681/.github/workflows/deploy-latest.yml#L91-L97\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907695234, "label": "Deploy failing with \"plugins/alternative_route.py: Not a directory\""}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2194#issuecomment-1730259871", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2194", "id": 1730259871, "node_id": "IC_kwDOBm6k_c5nIauf", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:34:09Z", "updated_at": "2023-09-21T20:34:09Z", "author_association": "OWNER", "body": "... which raises the challenge that `datasette publish` doesn't yet know what to do with a config file!\r\n\r\nhttps://github.com/simonw/datasette/blob/2da1a6acec915b81a16127008fd739c7d6075681/.github/workflows/deploy-latest.yml#L114-L122", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907695234, "label": "Deploy failing with \"plugins/alternative_route.py: Not a directory\""}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2194#issuecomment-1730258302", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2194", "id": 1730258302, "node_id": "IC_kwDOBm6k_c5nIaV-", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:32:53Z", "updated_at": "2023-09-21T20:33:02Z", "author_association": "OWNER", "body": "Correct usage is now:\r\n```bash\r\npython tests/fixtures.py fixtures.db fixtures-config.json fixtures-metadata.json \\\r\n plugins --extra-db-filename extra_database.db\r\n```\r\n```\r\nTest tables written to fixtures.db\r\n- metadata written to fixtures-metadata.json\r\n- config written to fixtures-config.json\r\n Wrote plugin: plugins/register_output_renderer.py\r\n Wrote plugin: plugins/view_name.py\r\n Wrote plugin: plugins/my_plugin.py\r\n Wrote plugin: plugins/messages_output_renderer.py\r\n Wrote plugin: plugins/sleep_sql_function.py\r\n Wrote plugin: plugins/my_plugin_2.py\r\nTest tables written to extra_database.db\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907695234, "label": "Deploy failing with \"plugins/alternative_route.py: Not a directory\""}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2194#issuecomment-1730256435", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2194", "id": 1730256435, "node_id": "IC_kwDOBm6k_c5nIZ4z", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:31:22Z", "updated_at": "2023-09-21T20:31:31Z", "author_association": "OWNER", "body": "New error: \"Error: Metadata should end with .json\"\r\n\r\nhttps://github.com/simonw/datasette/actions/runs/6266720924/job/17018265851\r\n\r\n\"CleanShot", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907695234, "label": "Deploy failing with \"plugins/alternative_route.py: Not a directory\""}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730250337", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730250337, "node_id": "IC_kwDOBm6k_c5nIYZh", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:26:12Z", "updated_at": "2023-09-21T20:26:12Z", "author_association": "OWNER", "body": "That does seem to fix the problem! ", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730247545", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730247545, "node_id": "IC_kwDOBm6k_c5nIXt5", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:23:47Z", "updated_at": "2023-09-21T20:23:47Z", "author_association": "OWNER", "body": "Hunch: https://pypi.org/project/importlib-metadata/ may help here.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2194#issuecomment-1730245204", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2194", "id": 1730245204, "node_id": "IC_kwDOBm6k_c5nIXJU", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:21:42Z", "updated_at": "2023-09-21T20:21:42Z", "author_association": "OWNER", "body": "I think I see the problem - it's from here: https://github.com/simonw/datasette/commit/b2ec8717c3619260a1b535eea20e618bf95aa30b#diff-5dbc88d6e5c3615caf10e32a9d6fc6ff683f5b5814948928cb84c3ab91c038b6L770\r\n\r\nThe `config` and `metadata` Click options are the wrong way round:\r\n\r\nhttps://github.com/simonw/datasette/blob/80a9cd9620fddf2695d12d8386a91e7c6b145ef2/tests/fixtures.py#L785-L786\r\n\r\nhttps://github.com/simonw/datasette/blob/80a9cd9620fddf2695d12d8386a91e7c6b145ef2/tests/fixtures.py#L801", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907695234, "label": "Deploy failing with \"plugins/alternative_route.py: Not a directory\""}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2194#issuecomment-1730242734", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2194", "id": 1730242734, "node_id": "IC_kwDOBm6k_c5nIWiu", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:19:29Z", "updated_at": "2023-09-21T20:19:29Z", "author_association": "OWNER", "body": "Maybe `plugins/` does not exist? It should have been created by this line:\r\n\r\nhttps://github.com/simonw/datasette/blob/80a9cd9620fddf2695d12d8386a91e7c6b145ef2/.github/workflows/deploy-latest.yml#L41-L42", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907695234, "label": "Deploy failing with \"plugins/alternative_route.py: Not a directory\""}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2194#issuecomment-1730241813", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2194", "id": 1730241813, "node_id": "IC_kwDOBm6k_c5nIWUV", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:18:40Z", "updated_at": "2023-09-21T20:18:40Z", "author_association": "OWNER", "body": "This looks to be the step that is failing:\r\n\r\nhttps://github.com/simonw/datasette/blob/80a9cd9620fddf2695d12d8386a91e7c6b145ef2/.github/workflows/deploy-latest.yml#L50-L60", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907695234, "label": "Deploy failing with \"plugins/alternative_route.py: Not a directory\""}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2189#issuecomment-1730232308", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2189", "id": 1730232308, "node_id": "IC_kwDOBm6k_c5nIT_0", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:11:16Z", "updated_at": "2023-09-21T20:11:16Z", "author_association": "OWNER", "body": "We're planning a breaking change in `1.0a7`:\r\n- #2191 \r\n\r\nSince that's a breaking change I'm going to ship 1.0a7 right now with this fix, then ship that breaking change as `1.0a8` instead.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1901416155, "label": "Server hang on parallel execution of queries to named in-memory databases"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2189#issuecomment-1730231404", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2189", "id": 1730231404, "node_id": "IC_kwDOBm6k_c5nITxs", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:10:28Z", "updated_at": "2023-09-21T20:10:28Z", "author_association": "OWNER", "body": "Release 0.64.4: https://docs.datasette.io/en/stable/changelog.html#v0-64-4", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1901416155, "label": "Server hang on parallel execution of queries to named in-memory databases"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730226107", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730226107, "node_id": "IC_kwDOBm6k_c5nISe7", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:06:19Z", "updated_at": "2023-09-21T20:06:19Z", "author_association": "OWNER", "body": "No that's not it actually, it's something else.\r\n\r\nGot to this point:\r\n```bash\r\nDATASETTE_LOAD_PLUGINS=datasette-init python -i $(which datasette) plugins\r\n```\r\nThat fails and drops me into a debugger:\r\n\r\n```\r\n File \"/Users/simon/Dropbox/Development/datasette/datasette/cli.py\", line 186, in plugins\r\n app = Datasette([], plugins_dir=plugins_dir)\r\n File \"/Users/simon/Dropbox/Development/datasette/datasette/app.py\", line 405, in __init__\r\n for plugin in get_plugins()\r\n File \"/Users/simon/Dropbox/Development/datasette/datasette/plugins.py\", line 89, in get_plugins\r\n plugin_info[\"name\"] = distinfo.name or distinfo.project_name\r\nAttributeError: 'PathDistribution' object has no attribute 'name'\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730219703", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730219703, "node_id": "IC_kwDOBm6k_c5nIQ63", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T20:01:54Z", "updated_at": "2023-09-21T20:01:54Z", "author_association": "OWNER", "body": "The problem is here:\r\n```\r\n 86 \t distinfo = plugin_to_distinfo.get(plugin)\r\n 87 \t if distinfo is None:\r\n 88 \t breakpoint()\r\n 89 ->\t assert False\r\n 90 \t if distinfo.name is None:\r\n 91 \t breakpoint()\r\n 92 \t assert False\r\n 93 \t if distinfo:\r\n 94 \t plugin_info[\"version\"] = distinfo.version\r\n(Pdb) distinfo\r\n(Pdb) plugin\r\n\r\n```\r\nThat `plugin_to_distinfo` is missing some stuff.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730214654", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730214654, "node_id": "IC_kwDOBm6k_c5nIPr-", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:59:51Z", "updated_at": "2023-09-21T19:59:51Z", "author_association": "OWNER", "body": "So the problem is the `get_plugins()` function returning plugins with `None` for their name:\r\n\r\nhttps://github.com/simonw/datasette/blob/80a9cd9620fddf2695d12d8386a91e7c6b145ef2/datasette/plugins.py#L61-L91", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730212597", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730212597, "node_id": "IC_kwDOBm6k_c5nIPL1", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:58:38Z", "updated_at": "2023-09-21T19:58:38Z", "author_association": "OWNER", "body": "Relevant code: https://github.com/simonw/datasette/blob/80a9cd9620fddf2695d12d8386a91e7c6b145ef2/datasette/app.py#L1127-L1146", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730211445", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730211445, "node_id": "IC_kwDOBm6k_c5nIO51", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:57:44Z", "updated_at": "2023-09-21T19:57:44Z", "author_association": "OWNER", "body": "In the debugger:\r\n```\r\n>>> import pdb\r\n>>> pdb.pm()\r\n> /Users/simon/Dropbox/Development/datasette/datasette/app.py(1136)_plugins()\r\n-> ps.sort(key=lambda p: p[\"name\"])\r\n(Pdb) ps\r\n[{'name': None, 'static_path': None, 'templates_path': None, 'hooks': ['prepare_connection', 'render_cell'], 'version': '1.0.1'}, {'name': None, 'static_path': None, 'templates_path': None, 'hooks': ['startup'], 'version': '0.2'}]\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730210728", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730210728, "node_id": "IC_kwDOBm6k_c5nIOuo", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:57:08Z", "updated_at": "2023-09-21T19:57:08Z", "author_association": "OWNER", "body": "In my Python 3.8 environment I ran:\r\n```bash\r\ndatasette install datasette-init datasette-json-html\r\n```\r\nAnd now `datasette plugins` produces this error:\r\n```\r\n File \"/Users/simon/Dropbox/Development/datasette/datasette/cli.py\", line 192, in plugins\r\n click.echo(json.dumps(app._plugins(all=all), indent=4))\r\n File \"/Users/simon/Dropbox/Development/datasette/datasette/app.py\", line 1136, in _plugins\r\n ps.sort(key=lambda p: p[\"name\"])\r\nTypeError: '<' not supported between instances of 'NoneType' and 'NoneType'\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2193#issuecomment-1730208566", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2193", "id": 1730208566, "node_id": "IC_kwDOBm6k_c5nIOM2", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:55:19Z", "updated_at": "2023-09-21T19:55:19Z", "author_association": "OWNER", "body": "Yes, the new script seems to work. On Python 3.11:\r\n\r\n```\r\ntests/test-datasette-load-plugins.sh \r\necho $?\r\n0\r\n```\r\nOn Python 3.8:\r\n```\r\ntests/test-datasette-load-plugins.sh\r\nTest failed: datasette-json-html not found\r\necho $?\r\n1\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907655261, "label": "\"Test DATASETTE_LOAD_PLUGINS\" test shows errors but did not fail the CI run"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2193#issuecomment-1730206629", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2193", "id": 1730206629, "node_id": "IC_kwDOBm6k_c5nINul", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:53:39Z", "updated_at": "2023-09-21T19:53:39Z", "author_association": "OWNER", "body": "[GPT-4 says](https://chat.openai.com/share/65a95561-8f3c-4f9b-a4ab-c2508e87d2a9):\r\n\r\n> In the script, you're using a subshell `( ... )` to group commands. If you `exit 1` within the subshell, it will only exit the subshell and not the main script. This is why GitHub Actions does not see it as a failure.\r\n\r\nIt suggested doing this instead:\r\n\r\n```bash\r\n#!/bin/bash\r\n\r\nPLUGINS=$(datasette plugins)\r\nif ! echo \"$PLUGINS\" | jq 'any(.[]; .name == \"datasette-json-html\")' | grep -q true; then\r\n echo \"Test failed: datasette-json-html not found\"\r\n exit 1\r\nfi\r\n\r\nPLUGINS2=$(DATASETTE_LOAD_PLUGINS=datasette-init datasette plugins)\r\nif ! echo \"$PLUGINS2\" | jq 'any(.[]; .name == \"datasette-json-html\")' | grep -q false; then\r\n echo \"Test failed: datasette-json-html should not have been loaded\"\r\n exit 1\r\nfi\r\n\r\nif ! echo \"$PLUGINS2\" | jq 'any(.[]; .name == \"datasette-init\")' | grep -q true; then\r\n echo \"Test failed: datasette-init should have been loaded\"\r\n exit 1\r\nfi\r\n\r\nPLUGINS3=$(DATASETTE_LOAD_PLUGINS='' datasette plugins)\r\nif ! echo \"$PLUGINS3\" | grep -q '\\[\\]'; then\r\n echo \"Test failed: datasette plugins should have returned []\"\r\n exit 1\r\nfi\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": 1907655261, "label": "\"Test DATASETTE_LOAD_PLUGINS\" test shows errors but did not fail the CI run"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2193#issuecomment-1730203356", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2193", "id": 1730203356, "node_id": "IC_kwDOBm6k_c5nIM7c", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:51:04Z", "updated_at": "2023-09-21T19:51:04Z", "author_association": "OWNER", "body": "The script:\r\n\r\nhttps://github.com/simonw/datasette/blob/b0d0a0e5de8bb5b9b6c253e8af451a532266bcf1/tests/test-datasette-load-plugins.sh#L1-L29\r\n\r\nI'm not sure why those `exit 1` lines did not cause a CI failure.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907655261, "label": "\"Test DATASETTE_LOAD_PLUGINS\" test shows errors but did not fail the CI run"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2193#issuecomment-1730202533", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2193", "id": 1730202533, "node_id": "IC_kwDOBm6k_c5nIMul", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:50:22Z", "updated_at": "2023-09-21T19:50:22Z", "author_association": "OWNER", "body": "Here's the failure in CI, which did not cause the workflow to fail even though it should have:\r\n\r\n\"CleanShot\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1907655261, "label": "\"Test DATASETTE_LOAD_PLUGINS\" test shows errors but did not fail the CI run"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730201226", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730201226, "node_id": "IC_kwDOBm6k_c5nIMaK", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:49:20Z", "updated_at": "2023-09-21T19:49:20Z", "author_association": "OWNER", "body": "That passed on 3.8 but should have failed: https://github.com/simonw/datasette/actions/runs/6266341481/job/17017099801 - the \"Test DATASETTE_LOAD_PLUGINS\" test shows errors but did not fail the CI run.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730188367", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730188367, "node_id": "IC_kwDOBm6k_c5nIJRP", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:38:28Z", "updated_at": "2023-09-21T19:40:38Z", "author_association": "OWNER", "body": "I'll imitate `certbot`:\r\n\r\nhttps://github.com/certbot/certbot/blob/694c758db7fcd8410b5dadcd136c61b3eb028fdc/certbot-ci/setup.py#L9\r\n\r\n```python\r\n 'importlib_resources>=1.3.1; python_version < \"3.9\"',\r\n```\r\nLooks like `1.3` is the minimum version needed for compatibility with the 3.9 standard library, according to https://github.com/python/importlib_resources/blob/main/README.rst#compatibility\r\n\r\nhttps://github.com/certbot/certbot/blob/694c758db7fcd8410b5dadcd136c61b3eb028fdc/certbot/certbot/_internal/constants.py#L13C29-L16\r\n\r\n```python\r\nif sys.version_info >= (3, 9): # pragma: no cover\r\n import importlib.resources as importlib_resources\r\nelse: # pragma: no cover\r\n import importlib_resources\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730185322", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730185322, "node_id": "IC_kwDOBm6k_c5nIIhq", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:35:49Z", "updated_at": "2023-09-21T19:35:49Z", "author_association": "OWNER", "body": "I think I can fix this using https://importlib-resources.readthedocs.io/en/latest/using.html - maybe as a dependency only installed if the Python version is less than 3.9.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730183405", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730183405, "node_id": "IC_kwDOBm6k_c5nIIDt", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:34:09Z", "updated_at": "2023-09-21T19:34:09Z", "author_association": "OWNER", "body": "Confirmed: https://docs.python.org/3/library/importlib.resources.html#importlib.resources.files\r\n\r\n> `importlib.resources.files(package)`\r\n> [...]\r\n> New in version 3.9.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2057#issuecomment-1730171241", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2057", "id": 1730171241, "node_id": "IC_kwDOBm6k_c5nIFFp", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:27:25Z", "updated_at": "2023-09-21T19:27:25Z", "author_association": "OWNER", "body": "This broke in Python 3.8:\r\n\r\n```\r\nif plugin.__name__ not in DEFAULT_PLUGINS:\r\n try:\r\n if (importlib.resources.files(plugin.__name__) / \"static\").is_dir():\r\nE AttributeError: module 'importlib.resources' has no attribute 'files'\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1662951875, "label": "DeprecationWarning: pkg_resources is deprecated as an API"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2189#issuecomment-1730162283", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2189", "id": 1730162283, "node_id": "IC_kwDOBm6k_c5nIC5r", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-09-21T19:19:47Z", "updated_at": "2023-09-21T19:19:47Z", "author_association": "OWNER", "body": "I'm going to release this in `1.0a7`, and I'll backport it to a `0.64.4` release too.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1901416155, "label": "Server hang on parallel execution of queries to named in-memory databases"}, "performed_via_github_app": null}