{"html_url": "https://github.com/simonw/datasette/issues/1176#issuecomment-1031108559", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1176", "id": 1031108559, "node_id": "IC_kwDOBm6k_c49dXfP", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T06:11:27Z", "updated_at": "2022-02-07T06:11:27Z", "author_association": "OWNER", "body": "I'm going with `@documented` as the decorator for functions that should be documented.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 779691739, "label": "Policy on documenting \"public\" datasette.utils functions"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1176#issuecomment-1031122800", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1176", "id": 1031122800, "node_id": "IC_kwDOBm6k_c49da9w", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T06:34:21Z", "updated_at": "2022-02-07T06:34:21Z", "author_association": "OWNER", "body": "New section is here: https://docs.datasette.io/en/latest/internals.html#the-datasette-utils-module\r\n\r\nBut it's not correctly displaying the new autodoc stuff:\r\n\r\n\"image\"\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 779691739, "label": "Policy on documenting \"public\" datasette.utils functions"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1176#issuecomment-1031123719", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1176", "id": 1031123719, "node_id": "IC_kwDOBm6k_c49dbMH", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T06:36:32Z", "updated_at": "2022-02-07T06:36:32Z", "author_association": "OWNER", "body": "https://github.com/simonw/sqlite-utils/blob/main/.readthedocs.yaml looks like this (it works correctly):\r\n\r\n```yaml\r\nversion: 2\r\n\r\nsphinx:\r\n configuration: docs/conf.py\r\n\r\npython:\r\n version: \"3.8\"\r\n install:\r\n - method: pip\r\n path: .\r\n extra_requirements:\r\n - docs\r\n```\r\nCompare to the current Datasette one here: https://github.com/simonw/datasette/blob/d9b508ffaa91f9f1840b366f5d282712d445f16b/.readthedocs.yaml#L1-L13\r\n\r\nLooks like I need this bit:\r\n```python\r\npython:\r\n version: \"3.8\"\r\n install:\r\n - method: pip\r\n path: .\r\n extra_requirements:\r\n - docs\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 779691739, "label": "Policy on documenting \"public\" datasette.utils functions"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1176#issuecomment-1031125347", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1176", "id": 1031125347, "node_id": "IC_kwDOBm6k_c49dblj", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T06:40:16Z", "updated_at": "2022-02-07T06:40:16Z", "author_association": "OWNER", "body": "Read The Docs error:\r\n\r\n> Problem in your project's configuration. Invalid \"python.version\": .readthedocs.yaml: Invalid configuration option: python.version. Make sure the key name is correct.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 779691739, "label": "Policy on documenting \"public\" datasette.utils functions"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1176#issuecomment-1031126547", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1176", "id": 1031126547, "node_id": "IC_kwDOBm6k_c49db4T", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T06:42:58Z", "updated_at": "2022-02-07T06:42:58Z", "author_association": "OWNER", "body": "That fixed it: https://docs.datasette.io/en/latest/internals.html#parse-metadata-content\r\n\r\n\"image\"\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 779691739, "label": "Policy on documenting \"public\" datasette.utils functions"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1176#issuecomment-1031126801", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1176", "id": 1031126801, "node_id": "IC_kwDOBm6k_c49db8R", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T06:43:31Z", "updated_at": "2022-02-07T06:43:31Z", "author_association": "OWNER", "body": "Here's the new test: https://github.com/simonw/datasette/blob/03305ea183b1534bc4cef3a721fe5f3700273b84/tests/test_docs.py#L91-L104", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 779691739, "label": "Policy on documenting \"public\" datasette.utils functions"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1439#issuecomment-1031141849", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1439", "id": 1031141849, "node_id": "IC_kwDOBm6k_c49dfnZ", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T07:11:11Z", "updated_at": "2022-02-07T07:11:11Z", "author_association": "OWNER", "body": "I added a Link header to solve this problem for the JSON version in:\r\n- #1533 ", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 973139047, "label": "Rethink how .ext formats (v.s. ?_format=) works before 1.0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1593#issuecomment-1031455498", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1593", "id": 1031455498, "node_id": "IC_kwDOBm6k_c49esMK", "user": {"value": 49699333, "label": "dependabot[bot]"}, "created_at": "2022-02-07T13:13:22Z", "updated_at": "2022-02-07T13:13:22Z", "author_association": "CONTRIBUTOR", "body": "Superseded by #1631.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1101705012, "label": "Update pytest-asyncio requirement from <0.17,>=0.10 to >=0.10,<0.18"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1631#issuecomment-1031463789", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1631", "id": 1031463789, "node_id": "IC_kwDOBm6k_c49euNt", "user": {"value": 22429695, "label": "codecov[bot]"}, "created_at": "2022-02-07T13:21:48Z", "updated_at": "2022-02-07T13:21:48Z", "author_association": "NONE", "body": "# [Codecov](https://codecov.io/gh/simonw/datasette/pull/1631?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report\n> Merging [#1631](https://codecov.io/gh/simonw/datasette/pull/1631?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (62eed84) into [main](https://codecov.io/gh/simonw/datasette/commit/03305ea183b1534bc4cef3a721fe5f3700273b84?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (03305ea) will **not change** coverage.\n> The diff coverage is `n/a`.\n\n[![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1631/graphs/tree.svg?width=650&height=150&src=pr&token=eSahVY7kw1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/datasette/pull/1631?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)\n\n```diff\n@@ Coverage Diff @@\n## main #1631 +/- ##\n=======================================\n Coverage 92.19% 92.19% \n=======================================\n Files 34 34 \n Lines 4546 4546 \n=======================================\n Hits 4191 4191 \n Misses 355 355 \n```\n\n\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1631?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)\n> `\u0394 = absolute (impact)`, `\u00f8 = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/simonw/datasette/pull/1631?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). Last update [03305ea...62eed84](https://codecov.io/gh/simonw/datasette/pull/1631?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison).\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1125973221, "label": "Update pytest-asyncio requirement from <0.17,>=0.10 to >=0.10,<0.19"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/402#issuecomment-1031779460", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/402", "id": 1031779460, "node_id": "IC_kwDOCGYnMM49f7SE", "user": {"value": 25778, "label": "eyeseast"}, "created_at": "2022-02-07T18:24:56Z", "updated_at": "2022-02-07T18:24:56Z", "author_association": "CONTRIBUTOR", "body": "I wonder if there's any overlap with the goals here and the `sqlite3` module's concept of adapters and converters: https://docs.python.org/3/library/sqlite3.html#sqlite-and-python-types\r\n\r\nI'm not sure that's _exactly_ what we're talking about here, but it might be a parallel with some useful ideas to borrow.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1125297737, "label": "Advanced class-based `conversions=` mechanism"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/402#issuecomment-1031787865", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/402", "id": 1031787865, "node_id": "IC_kwDOCGYnMM49f9VZ", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T18:33:27Z", "updated_at": "2022-02-07T18:33:27Z", "author_association": "OWNER", "body": "Hah, that's interesting - I've never used that mechanism before so it wasn't something that came to mind.\r\n\r\nThey seem to be using a pretty surprising trick there that takes advantage of SQLite allowing you to define a column \"type\" using a made-up type name, which you can then introspect later.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1125297737, "label": "Advanced class-based `conversions=` mechanism"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/402#issuecomment-1031791783", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/402", "id": 1031791783, "node_id": "IC_kwDOCGYnMM49f-Sn", "user": {"value": 25778, "label": "eyeseast"}, "created_at": "2022-02-07T18:37:40Z", "updated_at": "2022-02-07T18:37:40Z", "author_association": "CONTRIBUTOR", "body": "I've never used it either, but it's interesting, right? Feel like I should try it for something. \r\n\r\nI'm trying to get my head around how this conversions feature might work, because I really like the idea of it.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1125297737, "label": "Advanced class-based `conversions=` mechanism"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1632#issuecomment-1032032686", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1632", "id": 1032032686, "node_id": "IC_kwDOBm6k_c49g5Gu", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T23:16:10Z", "updated_at": "2022-02-07T23:16:10Z", "author_association": "OWNER", "body": "I found this bug while trying to get the following to work:\r\n\r\n datasette /data/one.db /data/two.db /data/*.db --create\r\n\r\nI want this to create any missing database files on startup out of that literal list of `one.db` and `two.db` and to also open any other `*.db` files in that folder - needed for `datasette-publish-fly` in https://github.com/simonw/datasette-publish-fly/pull/12#issuecomment-1032029874", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1126604194, "label": "datasette one.db one.db opens database twice, as one and one_2"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1632#issuecomment-1032034015", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1632", "id": 1032034015, "node_id": "IC_kwDOBm6k_c49g5bf", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T23:17:57Z", "updated_at": "2022-02-07T23:17:57Z", "author_association": "OWNER", "body": "I'm going to fix this in a 0.60.2 bug fix release.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1126604194, "label": "datasette one.db one.db opens database twice, as one and one_2"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1632#issuecomment-1032036525", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1632", "id": 1032036525, "node_id": "IC_kwDOBm6k_c49g6Ct", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T23:19:59Z", "updated_at": "2022-02-07T23:19:59Z", "author_association": "OWNER", "body": "I'm going to fix this in the CLI code itself, rather than fixing it in the `Datasette` constructor. That way if someone has a truly weird reason to want this behaviour they can construct Datasette directly.\r\n\r\nhttps://github.com/simonw/datasette/blob/03305ea183b1534bc4cef3a721fe5f3700273b84/datasette/cli.py#L535-L550", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1126604194, "label": "datasette one.db one.db opens database twice, as one and one_2"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1632#issuecomment-1032037391", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1632", "id": 1032037391, "node_id": "IC_kwDOBm6k_c49g6QP", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T23:21:07Z", "updated_at": "2022-02-07T23:21:07Z", "author_association": "OWNER", "body": "For the record, here's the code that picks the `one_2` name if that stem is already used as a database name: https://github.com/simonw/datasette/blob/03305ea183b1534bc4cef3a721fe5f3700273b84/datasette/app.py#L401-L417", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1126604194, "label": "datasette one.db one.db opens database twice, as one and one_2"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1632#issuecomment-1032050489", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1632", "id": 1032050489, "node_id": "IC_kwDOBm6k_c49g9c5", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T23:39:11Z", "updated_at": "2022-02-07T23:42:08Z", "author_association": "OWNER", "body": "That implementation broke on Python 3.6 - which is still a supported Python version for the 0.60.x branch - `test_homepage` failed.\r\n\r\n```\r\n> assert (\r\n \"2 rows in 1 table, 5 rows in 4 hidden tables, 1 view\" == counts_p.text.strip()\r\n )\r\nE AssertionError: assert '2 rows in 1 ...ables, 1 view' == '1 table, 4 h...ables, 1 view'\r\nE - 1 table, 4 hidden tables, 1 view\r\nE + 2 rows in 1 table, 5 rows in 4 hidden tables, 1 view\r\nE ? ++++++++++ ++++++++++\r\n```\r\nThat's because this idiom isn't guaranteed to preserve order in versions earlier than Python 3.7:\r\n\r\nhttps://github.com/simonw/datasette/blob/fa5fc327adbbf70656ac533912f3fc0526a3873d/datasette/cli.py#L552-L553\r\n\r\nI could say that `0.60.2` is the first version to require Python 3.7 - but that feels a little surprising.\r\n\r\nI'm going to use a different idiom for order-preserving de-duplication from [this StackOverflow](https://stackoverflow.com/questions/480214/how-do-you-remove-duplicates-from-a-list-whilst-preserving-order) instead.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1126604194, "label": "datasette one.db one.db opens database twice, as one and one_2"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1632#issuecomment-1032057472", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1632", "id": 1032057472, "node_id": "IC_kwDOBm6k_c49g_KA", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-02-07T23:50:01Z", "updated_at": "2022-02-07T23:50:01Z", "author_association": "OWNER", "body": "Released in https://github.com/simonw/datasette/releases/tag/0.60.2", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1126604194, "label": "datasette one.db one.db opens database twice, as one and one_2"}, "performed_via_github_app": null}