{"html_url": "https://github.com/simonw/datasette/issues/1365#issuecomment-856212136", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1365", "id": 856212136, "node_id": "MDEyOklzc3VlQ29tbWVudDg1NjIxMjEzNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-06-07T19:54:04Z", "updated_at": "2021-06-07T19:54:04Z", "author_association": "OWNER", "body": "I've hit this one too. I agree, fixing this in Datasette itself is better than fixing it in the tests across multiple other projects.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 913017577, "label": "pathlib.Path breaks internal schema"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1366#issuecomment-856147450", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1366", "id": 856147450, "node_id": "MDEyOklzc3VlQ29tbWVudDg1NjE0NzQ1MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-06-07T18:02:13Z", "updated_at": "2021-06-07T18:02:13Z", "author_association": "OWNER", "body": "The hack in question is this fixture, which I've been using in an ad-hoc manner to work around errors while running the tests: https://github.com/simonw/datasette/blob/030deb4b25cda842ff7129ab7c18550c44dd8379/tests/conftest.py#L62-L75\r\n\r\nI don't understand the underlying issue well enough to know how to get rid of it.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 913809802, "label": "Get rid of this `restore_working_directory` hack entirely"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1366#issuecomment-856147969", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1366", "id": 856147969, "node_id": "MDEyOklzc3VlQ29tbWVudDg1NjE0Nzk2OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-06-07T18:03:03Z", "updated_at": "2021-06-07T18:03:03Z", "author_association": "OWNER", "body": "Here's an example of a test that uses it. It's necessary because sometimes fixtures that create temporary directories break in unexpected ways:\r\n\r\nhttps://github.com/simonw/datasette/blob/0a7621f96f8ad14da17e7172e8a7bce24ef78966/tests/test_plugins.py#L658-L666", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 913809802, "label": "Get rid of this `restore_working_directory` hack entirely"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1367#issuecomment-856160770", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1367", "id": 856160770, "node_id": "MDEyOklzc3VlQ29tbWVudDg1NjE2MDc3MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-06-07T18:22:33Z", "updated_at": "2021-06-07T18:22:33Z", "author_association": "OWNER", "body": "Here's why: https://github.com/simonw/datasette/blob/03ec71193b9545536898a4bc7493274fec48bdd7/datasette/static/app.css#L455-L458", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 913823889, "label": "Navigation menu display bug"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1369#issuecomment-856208637", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1369", "id": 856208637, "node_id": "MDEyOklzc3VlQ29tbWVudDg1NjIwODYzNw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-06-07T19:47:23Z", "updated_at": "2021-06-07T19:47:23Z", "author_association": "OWNER", "body": "No point in showing the IDs twice if the blue label doesn't differ from the gray ID", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 913900374, "label": "Don't show foreign key IDs twice if no label"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1368#issuecomment-856182547", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1368", "id": 856182547, "node_id": "MDEyOklzc3VlQ29tbWVudDg1NjE4MjU0Nw==", "user": {"value": 2670795, "label": "brandonrobertz"}, "created_at": "2021-06-07T18:59:47Z", "updated_at": "2021-06-07T23:04:25Z", "author_association": "CONTRIBUTOR", "body": "Note that if we went with a \"update_metadata\" hook, the hook signature would look something like this (it would return nothing):\r\n\r\n```\r\nupdate_metadata(\r\n datasette=self, metadata=metadata, key=key, database=database, table=table,\r\n fallback=fallback\r\n)\r\n```\r\n\r\nThe Datasette function `_metadata_recursive_update(self, orig, updated)` would disappear into the plugins. Doing this, though, we'd lose the easy ability to make the local metadata.yaml immutable (since we'd no longer have the recursive update).", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 913865304, "label": "DRAFT: A new plugin hook for dynamic metadata"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/266#issuecomment-855611939", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/266", "id": 855611939, "node_id": "MDEyOklzc3VlQ29tbWVudDg1NTYxMTkzOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-06-07T06:07:41Z", "updated_at": "2021-06-07T06:07:41Z", "author_association": "OWNER", "body": "Looks like this is the way to do this:\r\n```python\r\nPoint = typing.NamedTuple(\r\n \"Point\", [('x', int), ('y', int)]\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": 913135723, "label": "Add some types, enforce with mypy"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/266#issuecomment-856231119", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/266", "id": 856231119, "node_id": "MDEyOklzc3VlQ29tbWVudDg1NjIzMTExOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-06-07T20:26:05Z", "updated_at": "2021-06-07T20:26:05Z", "author_association": "OWNER", "body": "https://github.com/python/cpython/blob/2ab27c4af4ddf7528e1375e77c787c7fbb09b5e6/Lib/typing.py#L2173-L2195\r\n\r\nIn Python 3.6 or higher can do this:\r\n\r\n```python\r\nclass Employee(NamedTuple):\r\n name: str\r\n id: int\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 913135723, "label": "Add some types, enforce with mypy"}, "performed_via_github_app": null}