{"html_url": "https://github.com/simonw/datasette/issues/1605#issuecomment-1331187551", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1605", "id": 1331187551, "node_id": "IC_kwDOBm6k_c5PWE9f", "user": {"value": 25778, "label": "eyeseast"}, "created_at": "2022-11-29T19:29:42Z", "updated_at": "2022-11-29T19:29:42Z", "author_association": "CONTRIBUTOR", "body": "Interesting. I started a version using metadata like I outlined up top, but I realized that there's no documented way for a plugin to access either metadata or canned queries. Or at least, I couldn't find a way.\r\n\r\nThere is this method: https://github.com/simonw/datasette/blob/main/datasette/app.py#L472 but I don't want to rely on it if it's not documented. Same with this: https://github.com/simonw/datasette/blob/main/datasette/app.py#L544\r\n\r\nIf those are safe, I'll build on them. I'm also happy to document them, if that greases the wheels.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1108671952, "label": "Scripted exports"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1850#issuecomment-1331238841", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1850", "id": 1331238841, "node_id": "IC_kwDOBm6k_c5PWRe5", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T20:11:20Z", "updated_at": "2022-11-29T20:11:20Z", "author_association": "OWNER", "body": "Released this in Datasette 1.0a0:\r\n- #1913", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1421529723, "label": "Write API in Datasette core"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1863#issuecomment-1330974099", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1863", "id": 1330974099, "node_id": "IC_kwDOBm6k_c5PVQ2T", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T17:03:00Z", "updated_at": "2022-11-29T17:11:05Z", "author_association": "OWNER", "body": "I've decided that I won't do that validation for the first version of this - I'm going to teach `dclient` to send the correct types instead: https://github.com/simonw/dclient/issues/6#issuecomment-1330963953", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1425029242, "label": "Update a single record in an existing table"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1863#issuecomment-1331089156", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1863", "id": 1331089156, "node_id": "IC_kwDOBm6k_c5PVs8E", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T18:08:53Z", "updated_at": "2022-11-29T18:08:53Z", "author_association": "OWNER", "body": "I do think this needs type checking - I just tried and you really can send a string to an integer column and have it work, which feels bad.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1425029242, "label": "Update a single record in an existing table"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1877#issuecomment-1331201207", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1877", "id": 1331201207, "node_id": "IC_kwDOBm6k_c5PWIS3", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:44:07Z", "updated_at": "2022-11-29T19:44:07Z", "author_association": "OWNER", "body": "I fixed the duplicate logic issue here: https://github.com/simonw/datasette/commit/ee64130fa8a5ff4a24791916c696e10cf2375102\r\n\r\n- #1896\r\n\r\nDecided not to address `views/table.py`.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1432012302, "label": "Refactor and tidy up final write API code"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1891#issuecomment-1331140747", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1891", "id": 1331140747, "node_id": "IC_kwDOBm6k_c5PV5iL", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T18:55:42Z", "updated_at": "2022-11-29T18:55:42Z", "author_association": "OWNER", "body": "All features for the alpha are complete now. Release notes should be based on these commits:\r\n\r\nhttps://github.com/simonw/datasette/compare/0.63.2...6bda2257868a2cbd70b84b7a86a5bcb47dcc4874", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450303205, "label": "1.0a0 release notes"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1891#issuecomment-1331143292", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1891", "id": 1331143292, "node_id": "IC_kwDOBm6k_c5PV6J8", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T18:57:40Z", "updated_at": "2022-11-29T18:57:40Z", "author_association": "OWNER", "body": "I'm going to keep these short - they'll mostly be links to the documentation for the new features.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450303205, "label": "1.0a0 release notes"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1891#issuecomment-1331181922", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1891", "id": 1331181922, "node_id": "IC_kwDOBm6k_c5PWDli", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:23:41Z", "updated_at": "2022-11-29T19:23:41Z", "author_association": "OWNER", "body": "https://github.com/simonw/datasette/blob/4d49a5a39739476e1ada43f70a0029abcef07977/docs/changelog.rst#10a0-2022-11-29", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450303205, "label": "1.0a0 release notes"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1911#issuecomment-1331120055", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1911", "id": 1331120055, "node_id": "IC_kwDOBm6k_c5PV0e3", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T18:36:01Z", "updated_at": "2022-11-29T18:36:01Z", "author_association": "OWNER", "body": "Current API design:\r\n```\r\nPOST //-/create\r\n```\r\n```json\r\n{\r\n \"table\": \"name_of_new_table\",\r\n \"columns\": [\r\n {\r\n \"name\": \"id\",\r\n \"type\": \"integer\"\r\n },\r\n {\r\n \"name\": \"title\",\r\n \"type\": \"text\"\r\n }\r\n ],\r\n \"pk\": \"id\"\r\n}\r\n```\r\nI'm going to add a new `\"pks\"` key which is a list, and can be used in place of `\"pk\"`.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468519699, "label": "`/db/-/create` should support creating tables with compound primary keys"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1911#issuecomment-1331135709", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1911", "id": 1331135709, "node_id": "IC_kwDOBm6k_c5PV4Td", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T18:50:58Z", "updated_at": "2022-11-29T18:50:58Z", "author_association": "OWNER", "body": "Updated docs: https://docs.datasette.io/en/1.0-dev/json_api.html#creating-a-table", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468519699, "label": "`/db/-/create` should support creating tables with compound primary keys"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1912#issuecomment-1331196531", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1912", "id": 1331196531, "node_id": "IC_kwDOBm6k_c5PWHJz", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:39:10Z", "updated_at": "2022-11-29T19:39:10Z", "author_association": "OWNER", "body": "Annoyingly it looks like I can't rebase this one, and I don't want to squash-merge and lose the commits, so I'm going to do a regular merge instead.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468592292, "label": "Merge 1.0-dev (with initial write API) back into main"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1913#issuecomment-1331203997", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1913", "id": 1331203997, "node_id": "IC_kwDOBm6k_c5PWI-d", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:47:13Z", "updated_at": "2022-11-29T19:47:13Z", "author_association": "OWNER", "body": "Weird, retrying the tests DID get them to pass. https://github.com/simonw/datasette/actions/runs/3577355358/jobs/6016518244", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468603401, "label": "Release Datasette 1.0a0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1913#issuecomment-1331204360", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1913", "id": 1331204360, "node_id": "IC_kwDOBm6k_c5PWJEI", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:47:40Z", "updated_at": "2022-11-29T19:47:40Z", "author_association": "OWNER", "body": "... but the last step of the deploy failed, when it was meant to push to PyPI!\r\n```\r\nUploading distributions to https://upload.pypi.org/legacy/\r\nTraceback (most recent call last):\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/bin/twine\", line 8, in \r\n sys.exit(main())\r\n ^^^^^^\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/twine/__main__.py\", line 33, in main\r\n error = cli.dispatch(sys.argv[1:])\r\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/twine/cli.py\", line 123, in dispatch\r\n return main(args.args)\r\n ^^^^^^^^^^^^^^^\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/twine/commands/upload.py\", line 198, in main\r\n return upload(upload_settings, parsed_args.dists)\r\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/twine/commands/upload.py\", line 123, in upload\r\n packages_to_upload = [\r\n ^\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/twine/commands/upload.py\", line 124, in \r\n _make_package(filename, signatures, upload_settings) for filename in uploads\r\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/twine/commands/upload.py\", line 77, in _make_package\r\n package = package_file.PackageFile.from_filename(filename, upload_settings.comment)\r\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/twine/package.py\", line 96, in from_filename\r\n meta = DIST_TYPES[dtype](filename)\r\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/twine/wheel.py\", line 42, in __init__\r\n self.extractMetadata()\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/pkginfo/distribution.py\", line 121, in extractMetadata\r\n self.parse(data)\r\n File \"/opt/hostedtoolcache/Python/3.11.0/x64/lib/python3.11/site-packages/twine/wheel.py\", line 89, in parse\r\n fp = io.StringIO(distribution.must_decode(data))\r\n ^^^^^^^^^^^^^^^^^^^^^^^^\r\nAttributeError: module 'pkginfo.distribution' has no attribute 'must_decode'. Did you mean: '_must_decode'?\r\nError: Process completed with exit code 1.\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468603401, "label": "Release Datasette 1.0a0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1913#issuecomment-1331205613", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1913", "id": 1331205613, "node_id": "IC_kwDOBm6k_c5PWJXt", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:48:52Z", "updated_at": "2022-11-29T19:48:52Z", "author_association": "OWNER", "body": "https://github.com/simonw/datasette/blob/07aad511769da9242260c850e8d975cbd8c29552/.github/workflows/publish.yml#L52-L61", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468603401, "label": "Release Datasette 1.0a0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1913#issuecomment-1331207334", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1913", "id": 1331207334, "node_id": "IC_kwDOBm6k_c5PWJym", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:50:37Z", "updated_at": "2022-11-29T19:50:37Z", "author_association": "OWNER", "body": "https://pypi.org/project/setuptools/65.6.3/ came out most recently - 23rd November (wheel and twine are older).\r\n\r\nNo search results at all for that error message. This is very weird, I would have expected it to have been reported by now.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468603401, "label": "Release Datasette 1.0a0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1913#issuecomment-1331208206", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1913", "id": 1331208206, "node_id": "IC_kwDOBm6k_c5PWKAO", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:51:31Z", "updated_at": "2022-11-29T19:51:31Z", "author_association": "OWNER", "body": "https://pypi.org/project/pkginfo/#history - 1.9.0 came out 39 minutes ago!", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468603401, "label": "Release Datasette 1.0a0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1913#issuecomment-1331216652", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1913", "id": 1331216652, "node_id": "IC_kwDOBm6k_c5PWMEM", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:54:22Z", "updated_at": "2022-11-29T19:54:22Z", "author_association": "OWNER", "body": "Filed a bug report here: https://bugs.launchpad.net/pkginfo/+bug/1998249", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468603401, "label": "Release Datasette 1.0a0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1913#issuecomment-1331225277", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1913", "id": 1331225277, "node_id": "IC_kwDOBm6k_c5PWOK9", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T19:59:14Z", "updated_at": "2022-11-29T19:59:34Z", "author_association": "OWNER", "body": "I deleted the tag and tried creating a new release. Now running here: https://github.com/simonw/datasette/actions/runs/3577554546", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468603401, "label": "Release Datasette 1.0a0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1913#issuecomment-1331226346", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1913", "id": 1331226346, "node_id": "IC_kwDOBm6k_c5PWObq", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T20:00:16Z", "updated_at": "2022-11-29T20:00:36Z", "author_association": "OWNER", "body": "Looks like a fix is coming: https://github.com/pypa/twine/issues/940#issuecomment-1331225509\r\n\r\n> > Note that `must_decode` was defined in `pkg_info/_compat.py`, and was thus never an API: before 1.9.0, it was only imported and used in `pkginfo/distribution.py'.\r\n> \r\n> Nevertheless, I will push out a 1.9.1 release of `pkginfo` which restores a deprecated compatibility alias.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468603401, "label": "Release Datasette 1.0a0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1913#issuecomment-1331238029", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1913", "id": 1331238029, "node_id": "IC_kwDOBm6k_c5PWRSN", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T20:10:35Z", "updated_at": "2022-11-29T20:10:35Z", "author_association": "OWNER", "body": "Released:\r\n\r\n- https://pypi.org/project/datasette/1.0a0/\r\n- https://docs.datasette.io/en/latest/changelog.html#a0-2022-11-29", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468603401, "label": "Release Datasette 1.0a0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1915#issuecomment-1331331082", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1915", "id": 1331331082, "node_id": "IC_kwDOBm6k_c5PWoAK", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T21:24:59Z", "updated_at": "2022-11-29T21:34:53Z", "author_association": "OWNER", "body": "Maybe a plugin called `datasette-temporary-tables` or `datasette-demo-tables` or `datasette-demo-database`.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468709531, "label": "Interactive demo of Datasette 1.0 write APIs"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1915#issuecomment-1331432223", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1915", "id": 1331432223, "node_id": "IC_kwDOBm6k_c5PXAsf", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-29T23:06:17Z", "updated_at": "2022-11-29T23:06:17Z", "author_association": "OWNER", "body": "To (slightly) discourage abuse I'm going to make the demo database only visible to the root user - so people can't create tables with rude names and have them show to the public on https://latest.datasette.io/", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1468709531, "label": "Interactive demo of Datasette 1.0 write APIs"}, "performed_via_github_app": null}