issue_comments
9,947 rows sorted by node_id
This data as json, CSV (advanced)
id | html_url | issue_url | node_id ▼ | user | created_at | updated_at | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
901475812 | https://github.com/simonw/datasette/issues/1293#issuecomment-901475812 | https://api.github.com/repos/simonw/datasette/issues/1293 | IC_kwDOBm6k_c41u23k | simonw 9599 | 2021-08-18T22:41:19Z | 2021-08-18T22:41:19Z | OWNER | > Maybe I split this out into a separate Python library that gets tested against _every_ SQLite release I can possibly try it against, and then bakes out the supported release versions into the library code itself? I'm going to do this, and call the Python library `sqlite-explain`. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Show column metadata plus links for foreign keys on arbitrary query results 849978964 | |
902251316 | https://github.com/simonw/datasette/issues/1415#issuecomment-902251316 | https://api.github.com/repos/simonw/datasette/issues/1415 | IC_kwDOBm6k_c41x0M0 | simonw 9599 | 2021-08-19T21:14:15Z | 2021-08-19T21:14:15Z | OWNER | https://github.com/ahmetb/cloud-run-faq#how-do-i-continuously-deploy-to-cloud-run suggests the following: > - `roles/run.admin` to deploy applications > - `roles/iam.serviceAccountUser` on the service account that your app will use It also links to https://cloud.google.com/run/docs/reference/iam/roles | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | feature request: document minimum permissions for service account for cloudrun 959137143 | |
902258509 | https://github.com/simonw/datasette/issues/1443#issuecomment-902258509 | https://api.github.com/repos/simonw/datasette/issues/1443 | IC_kwDOBm6k_c41x19N | simonw 9599 | 2021-08-19T21:25:07Z | 2021-08-19T21:25:07Z | OWNER | https://docs.datasette.io/en/latest/internals.html#databases | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | datasette.databases should be a documented property 974995592 | |
902254712 | https://github.com/simonw/datasette/pull/1434#issuecomment-902254712 | https://api.github.com/repos/simonw/datasette/issues/1434 | IC_kwDOBm6k_c41x1B4 | simonw 9599 | 2021-08-19T21:18:31Z | 2021-08-19T21:18:57Z | OWNER | I deployed a demo to https://datasette-latest-query-info-j7hipcg4aq-uc.a.run.app using the mechanism from #1442. e.g. demo here: https://datasette-latest-query-info-j7hipcg4aq-uc.a.run.app/fixtures?sql=select+*+from+searchable | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Enrich arbitrary query results with foreign key links and column descriptions 970463436 | |
902260338 | https://github.com/simonw/datasette/issues/1426#issuecomment-902260338 | https://api.github.com/repos/simonw/datasette/issues/1426 | IC_kwDOBm6k_c41x2Zy | simonw 9599 | 2021-08-19T21:28:25Z | 2021-08-19T21:29:40Z | OWNER | Actually it looks like you can send a `sitemap.xml` to Google using an unauthenticated GET request to: https://www.google.com/ping?sitemap=FULL_URL_OF_SITEMAP According to https://developers.google.com/search/docs/advanced/sitemaps/build-sitemap | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Manage /robots.txt in Datasette core, block robots by default 964322136 | |
902260799 | https://github.com/simonw/datasette/issues/1426#issuecomment-902260799 | https://api.github.com/repos/simonw/datasette/issues/1426 | IC_kwDOBm6k_c41x2g_ | simonw 9599 | 2021-08-19T21:29:13Z | 2021-08-19T21:29:13Z | OWNER | Bing's equivalent is: https://www.bing.com/webmasters/help/Sitemaps-3b5cf6ed http://www.bing.com/ping?sitemap=FULL_URL_OF_SITEMAP | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Manage /robots.txt in Datasette core, block robots by default 964322136 | |
902263367 | https://github.com/simonw/datasette/issues/1426#issuecomment-902263367 | https://api.github.com/repos/simonw/datasette/issues/1426 | IC_kwDOBm6k_c41x3JH | simonw 9599 | 2021-08-19T21:33:51Z | 2021-08-19T21:36:28Z | OWNER | I was worried about if it's possible to allow access to `/fixtures` but deny access to `/fixtures?sql=...` From various answers on Stack Overflow it looks like this should handle that: ``` User-agent: * Disallow: /fixtures? ``` I could use this for tables too - it may well be OK to access table index pages while still avoiding pagination, facets etc. I think this should block both query strings and row pages while allowing the table page itself: ``` User-agent: * Disallow: /fixtures/searchable? Disallow: /fixtures/searchable/* ``` Could even accompany that with a `sitemap.xml` that explicitly lists all of the tables - which would mean adding sitemaps to Datasette core too. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Manage /robots.txt in Datasette core, block robots by default 964322136 | |
902191150 | https://github.com/simonw/datasette/issues/1442#issuecomment-902191150 | https://api.github.com/repos/simonw/datasette/issues/1442 | IC_kwDOBm6k_c41xlgu | simonw 9599 | 2021-08-19T19:43:05Z | 2021-08-19T19:43:59Z | OWNER | Maybe as simple as teaching https://github.com/simonw/datasette/blob/main/.github/workflows/deploy-latest.yml to run on pushes to ALL branches: https://github.com/simonw/datasette/blob/adb5b70de5cec3c3dd37184defe606a082c232cf/.github/workflows/deploy-latest.yml#L3-L6 And then quit early if the branch is not in some allow-list. If it IS in the allow-list, use the name of the branch to dynamically construct the name of the Cloud Run service here: https://github.com/simonw/datasette/blob/adb5b70de5cec3c3dd37184defe606a082c232cf/.github/workflows/deploy-latest.yml#L60 Need to skip the documentation build and deployment stuff for other branches though. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Mechanism to cause specific branches to deploy their own demos 974987856 | |
902217726 | https://github.com/simonw/datasette/issues/1442#issuecomment-902217726 | https://api.github.com/repos/simonw/datasette/issues/1442 | IC_kwDOBm6k_c41xr_- | simonw 9599 | 2021-08-19T20:21:47Z | 2021-08-19T20:21:47Z | OWNER | I think the neatest way to implement this would be for the `on -> push -> branches` list to be the list of branches that should be deployed in this way. The rest of the code can react to that. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Mechanism to cause specific branches to deploy their own demos 974987856 | |
902231018 | https://github.com/simonw/datasette/issues/1442#issuecomment-902231018 | https://api.github.com/repos/simonw/datasette/issues/1442 | IC_kwDOBm6k_c41xvPq | simonw 9599 | 2021-08-19T20:42:08Z | 2021-08-19T20:42:08Z | OWNER | If I get this working I should document it on https://docs.datasette.io/en/stable/contributing.html | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Mechanism to cause specific branches to deploy their own demos 974987856 | |
902235714 | https://github.com/simonw/datasette/issues/1442#issuecomment-902235714 | https://api.github.com/repos/simonw/datasette/issues/1442 | IC_kwDOBm6k_c41xwZC | simonw 9599 | 2021-08-19T20:50:38Z | 2021-08-19T20:50:38Z | OWNER | Would this allow anyone to push a PR to this repo that would result in their code being deployed against my Cloud Run account? I'm reasonably confident that it would not, since the secrets would not be visible to their PR branch. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Mechanism to cause specific branches to deploy their own demos 974987856 | |
902239215 | https://github.com/simonw/datasette/issues/1442#issuecomment-902239215 | https://api.github.com/repos/simonw/datasette/issues/1442 | IC_kwDOBm6k_c41xxPv | simonw 9599 | 2021-08-19T20:56:46Z | 2021-08-19T20:56:46Z | OWNER | I'm going to only run the tests if it's a push to `main` - that way I can ship demo branches really quickly, even if they don't yet have passing tests. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Mechanism to cause specific branches to deploy their own demos 974987856 | |
902243498 | https://github.com/simonw/datasette/issues/1442#issuecomment-902243498 | https://api.github.com/repos/simonw/datasette/issues/1442 | IC_kwDOBm6k_c41xySq | simonw 9599 | 2021-08-19T21:04:01Z | 2021-08-19T21:04:01Z | OWNER | That successfully deployed to https://datasette-latest-deploy-this-branch-j7hipcg4aq-uc.a.run.app/ even though the tests failed. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Mechanism to cause specific branches to deploy their own demos 974987856 | |
902250361 | https://github.com/simonw/datasette/issues/1415#issuecomment-902250361 | https://api.github.com/repos/simonw/datasette/issues/1415 | IC_kwDOBm6k_c41xz95 | simonw 9599 | 2021-08-19T21:12:28Z | 2021-08-19T21:12:28Z | OWNER | I would love to know this too! I always find figuring out minimal permissions to be really difficult. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | feature request: document minimum permissions for service account for cloudrun 959137143 | |
902375088 | https://github.com/simonw/datasette/issues/894#issuecomment-902375088 | https://api.github.com/repos/simonw/datasette/issues/894 | IC_kwDOBm6k_c41ySaw | simonw 9599 | 2021-08-20T02:07:13Z | 2021-08-20T02:07:26Z | OWNER | Maybe `?_sort_numeric=col` and `?_sort_numeric_desc=col` would be better here. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | ?sort=colname~numeric to sort by by column cast to real 657572753 | |
902375388 | https://github.com/simonw/datasette/issues/894#issuecomment-902375388 | https://api.github.com/repos/simonw/datasette/issues/894 | IC_kwDOBm6k_c41ySfc | simonw 9599 | 2021-08-20T02:07:53Z | 2021-08-20T02:07:53Z | OWNER | I could add these sorting links to the cog menu for any `TEXT` columns. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | ?sort=colname~numeric to sort by by column cast to real 657572753 | |
922363640 | https://github.com/simonw/datasette/issues/1473#issuecomment-922363640 | https://api.github.com/repos/simonw/datasette/issues/1473 | IC_kwDOBm6k_c42-ib4 | mroswell 192568 | 2021-09-18T19:45:47Z | 2021-09-18T19:45:47Z | CONTRIBUTOR | An update, if I remove the `img` tag and replace it with the text, "Safer or Toxic?" it links to the right place. Also, if I keep things exactly as they are, and it improperly, but consistently goes to the `undefined` page, on THAT 404 page, a click on the image properly clicks through to the www.SaferOrToxic.org page. Weird stuff. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | base logo link visits `undefined` rather than href url 999902754 | |
922394999 | https://github.com/simonw/datasette/issues/1473#issuecomment-922394999 | https://api.github.com/repos/simonw/datasette/issues/1473 | IC_kwDOBm6k_c42-qF3 | mroswell 192568 | 2021-09-19T00:44:39Z | 2021-09-19T00:45:32Z | CONTRIBUTOR | I replaced: ``` <a class="text-3xl font-bold leading-none" href="https://www.saferortoxic.org"> <img src="https://www.saferortoxic.org/images/logo_hu26e4dce8d5931af1ea33526b28fc8383_9734_c52a4f1635ef88bda858373270551ed2.webp" class="custom-logo" alt="Logo: Safer or Toxic?" width="300px"> </a> ``` with: ``` <img src="https://www.saferortoxic.org/images/logo_hu26e4dce8d5931af1ea33526b28fc8383_9734_c52a4f1635ef88bda858373270551ed2.webp" alt="Logo: Safer or Toxic?" style="width:300px; cursor:pointer;" onclick="window.location.href='https://saferortoxic.org';return false;"> ``` I'd still love to know what caused this (and how to troubleshoot to figure it out), so I'll leave it open for a bit, but I do have a functional logo linking to the Hugo home page, at least locally. I'll likely push tomorrow. (Before trying this, I tried to apply a background image to the `a` tag. That didn't work.) | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | base logo link visits `undefined` rather than href url 999902754 | |
920543967 | https://github.com/simonw/datasette/issues/236#issuecomment-920543967 | https://api.github.com/repos/simonw/datasette/issues/236 | IC_kwDOBm6k_c423mLf | sethvincent 164214 | 2021-09-16T03:19:08Z | 2021-09-16T03:19:08Z | NONE | :wave: I just put together a small example using the lambda container image support: https://github.com/sethvincent/datasette-aws-lambda-example It uses mangum and AWS's [python runtime interface client](https://github.com/aws/aws-lambda-python-runtime-interface-client) to handle the lambda event stuff. I'd be happy to help with a publish plugin for AWS lambda as I plan to use this for upcoming projects. The example uses the [serverless](https://www.serverless.com) cli for deployment but there might be a more suitable deployment approach for the plugin. It would be cool if users didn't have to install anything additional other than the aws cli and its associated config/credentials setup. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | datasette publish lambda plugin 317001500 | |
922075480 | https://github.com/simonw/datasette/issues/236#issuecomment-922075480 | https://api.github.com/repos/simonw/datasette/issues/236 | IC_kwDOBm6k_c429cFY | simonw 9599 | 2021-09-17T20:54:13Z | 2021-09-17T20:54:13Z | OWNER | That's so useful @sethvincent! Really interesting reading your code there, especially clever how you're using the `base_url` config. I'd be very interested to see what your demo looks like without using serverless - completely agree that the less additional dependencies there are for this the better. I'm also very interested in figuring out a way to run Datasette in Lambda but with the SQLite database on an EFS volume. Do you have a feel for how hard that would be? | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | datasette publish lambda plugin 317001500 | |
906414811 | https://github.com/simonw/datasette/pull/1448#issuecomment-906414811 | https://api.github.com/repos/simonw/datasette/issues/1448 | IC_kwDOBm6k_c42Bsrb | codecov[bot] 22429695 | 2021-08-26T13:29:02Z | 2021-08-26T13:29:02Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1448?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#1448](https://codecov.io/gh/simonw/datasette/pull/1448?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (a211747) into [main](https://codecov.io/gh/simonw/datasette/commit/a1a33bb5822214be1cebd98cd858b2058d91a4aa?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (a1a33bb) will **not change** coverage. > The diff coverage is `n/a`. [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1448/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/1448?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #1448 +/- ## ======================================= Coverage 91.82% 91.82% ======================================= Files 34 34 Lines 4418 4418 ======================================= Hits 4057 4057 Misses 361 361 ``` ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1448?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). > **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) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov… | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Update pluggy requirement from ~=0.13.0 to >=0.13,<1.1 980228553 | |
907537693 | https://github.com/simonw/datasette/issues/1449#issuecomment-907537693 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F-0d | simonw 9599 | 2021-08-28T00:31:26Z | 2021-08-28T00:31:26Z | OWNER | Terminology question: is it correct to call these subcommands or should they be commands? `publish_subcommand()` adds subcommands of the format `datasette publish X` - but are we instead adding commands with this new one? | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907537366 | https://github.com/simonw/datasette/issues/1449#issuecomment-907537366 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F-vW | simonw 9599 | 2021-08-28T00:29:16Z | 2021-08-28T00:29:29Z | OWNER | The closest plugin hook to this right now is [publish_subcommand](https://docs.datasette.io/en/stable/plugin_hooks.html#publish-subcommand-publish) - which looks like this: ```python @hookimpl def publish_subcommand(publish): @publish.command() @add_common_publish_arguments_and_options @click.option( "-k", "--api_key", help="API key for talking to my hosting provider", ) def my_hosting_provider(...): ``` But there are also several plugin hooks with `register_` prefixes, which may be a good naming convention to stick to here: `register_output_renderer(datasette)`, `register_routes(datasette)`, `register_facet_classes()`, `register_magic_parameters(datasette)`. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907537610 | https://github.com/simonw/datasette/issues/1449#issuecomment-907537610 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F-zK | simonw 9599 | 2021-08-28T00:30:51Z | 2021-08-28T00:30:51Z | OWNER | There's also the option for plugins to muck around with existing registered commands - this could get a bit untidy if multiple plugins try to do it, but being able to replace `serve` with a fresh implementation that adds an additional command-line option before calling back to the original might open up some interesting possibilities. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907542214 | https://github.com/simonw/datasette/issues/1449#issuecomment-907542214 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F_7G | simonw 9599 | 2021-08-28T01:02:38Z | 2021-08-28T01:02:38Z | OWNER | Partial prototype of `datasette-verify`: ```python from datasette import hookimpl import click @hookimpl def register_commands(cli): from datasette.cli import sqlite_extensions @cli.command() @click.argument("files", type=click.Path(exists=True), nargs=-1) @sqlite_extensions def verify(files, sqlite_extensions): "Verify that files can be opened by Datasette" for file in files: print(file) ``` I had to move the `from datasette.cli import sqlite_extensions` inside the hook function to avoid a circular import. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907538940 | https://github.com/simonw/datasette/issues/1449#issuecomment-907538940 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F_H8 | simonw 9599 | 2021-08-28T00:39:28Z | 2021-08-28T00:39:28Z | OWNER | Here's the answer to that: ``` ~ % datasette --help Usage: datasette [OPTIONS] COMMAND [ARGS]... Datasette! Options: --version Show the version and exit. --help Show this message and exit. Commands: serve* Serve up specified SQLite database files with a web UI inspect install Install Python packages - e.g. package Package specified SQLite files into a new datasette Docker... plugins List currently available plugins publish Publish specified SQLite database files to the internet... uninstall Uninstall Python packages (e.g. ``` Since it's adding extra things that show up in `--help` under the "Commands:" heading, I should call them commands. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907539065 | https://github.com/simonw/datasette/issues/1449#issuecomment-907539065 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F_J5 | simonw 9599 | 2021-08-28T00:40:24Z | 2021-08-28T00:40:24Z | OWNER | I'm going to call the new hook `register_commands` - since it will allow ambitious plugins to register more than one command if they want to. That's also pleasingly similar to `register_routes`. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907539251 | https://github.com/simonw/datasette/issues/1449#issuecomment-907539251 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F_Mz | simonw 9599 | 2021-08-28T00:41:37Z | 2021-08-28T00:41:50Z | OWNER | The first example plugin I'm going to build for this will be `datasette verify file.db file2.db` - it will take one or more paths to SQLite files and verify if they can be opened by Datasette or not. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907539668 | https://github.com/simonw/datasette/issues/1449#issuecomment-907539668 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F_TU | simonw 9599 | 2021-08-28T00:44:16Z | 2021-08-28T00:44:16Z | OWNER | Considering this piece of code: https://github.com/simonw/datasette/blob/a1a33bb5822214be1cebd98cd858b2058d91a4aa/datasette/cli.py#L122-L142 I think the hook itself gets called with a single argument, `cli`, which it can then use in the standard Click way to register extra stuff. I can't pass it `datasette` (like I do with `register_routes()`) because the Datasette object itself is instantiated by the `serve` command, which will not have been called. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907540240 | https://github.com/simonw/datasette/issues/1450#issuecomment-907540240 | https://api.github.com/repos/simonw/datasette/issues/1450 | IC_kwDOBm6k_c42F_cQ | simonw 9599 | 2021-08-28T00:48:30Z | 2021-08-28T00:48:30Z | OWNER | I'll go with this: ``` % datasette --help Usage: datasette [OPTIONS] COMMAND [ARGS]... Datasette is an open source multi-tool for exploring and publishing data About Datasette: https://datasette.io/ Full documentation: https://docs.datasette.io/ Options: --version Show the version and exit. --help Show this message and exit. ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Datasette --help should show something more useful than "Datasette!" 981681138 | |
907540790 | https://github.com/simonw/datasette/issues/1449#issuecomment-907540790 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F_k2 | simonw 9599 | 2021-08-28T00:52:32Z | 2021-08-28T00:52:32Z | OWNER | I don't think I can get this new hook to support the handy [--plugins-dir= mechanism](https://docs.datasette.io/en/stable/plugins.html#one-off-plugins-using-plugins-dir) for loading plugins from Python files as opposed to registering them with setuptools - that mechanism is itself implemented inside of code called by `datasette serve` so I don't have a way of taking advantage of it from outside that command. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907540928 | https://github.com/simonw/datasette/issues/1449#issuecomment-907540928 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42F_nA | simonw 9599 | 2021-08-28T00:53:37Z | 2021-08-28T00:53:37Z | OWNER | I'll probably have to use this mechanism for the tests then: https://til.simonwillison.net/pytest/registering-plugins-in-tests | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907543982 | https://github.com/simonw/datasette/issues/1449#issuecomment-907543982 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42GAWu | simonw 9599 | 2021-08-28T01:14:27Z | 2021-08-28T01:14:27Z | OWNER | Writing the test for this is proving difficult, because the `cli` module has already been imported when I attempt to register a new plugin - so it doesn't pick up on the additional command registrations. Trying to work around that with `importlib.reload(cli)`. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907547624 | https://github.com/simonw/datasette/issues/1449#issuecomment-907547624 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42GBPo | simonw 9599 | 2021-08-28T01:44:57Z | 2021-08-28T01:58:35Z | OWNER | Documentation: https://docs.datasette.io/en/latest/plugin_hooks.html#register-commands-cli | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
907547736 | https://github.com/simonw/datasette/issues/1449#issuecomment-907547736 | https://api.github.com/repos/simonw/datasette/issues/1449 | IC_kwDOBm6k_c42GBRY | simonw 9599 | 2021-08-28T01:45:36Z | 2021-08-28T01:45:36Z | OWNER | I need to push this out as an alpha so I can release a demo plugin that uses it. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | `register_commands()` plugin hook to register extra CLI commands 981676832 | |
908337614 | https://github.com/simonw/datasette/pull/1453#issuecomment-908337614 | https://api.github.com/repos/simonw/datasette/issues/1453 | IC_kwDOBm6k_c42JCHO | codecov[bot] 22429695 | 2021-08-30T13:20:26Z | 2021-08-30T13:20:26Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1453?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#1453](https://codecov.io/gh/simonw/datasette/pull/1453?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (4f492a7) into [main](https://codecov.io/gh/simonw/datasette/commit/67cbf0ae7243431bf13702e6e3ba466b619c4d6f?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (67cbf0a) will **not change** coverage. > The diff coverage is `n/a`. [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1453/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/1453?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #1453 +/- ## ======================================= Coverage 91.83% 91.83% ======================================= Files 34 34 Lines 4421 4421 ======================================= Hits 4060 4060 Misses 361 361 ``` ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1453?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). > **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) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov… | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Bump black from 21.7b0 to 21.8b0 982780906 | |
908832938 | https://github.com/simonw/datasette/issues/1446#issuecomment-908832938 | https://api.github.com/repos/simonw/datasette/issues/1446 | IC_kwDOBm6k_c42K7Cq | simonw 9599 | 2021-08-31T01:54:59Z | 2021-08-31T01:54:59Z | OWNER | I used the sticky footer mechanism in `datasette.app`: https://github.com/simonw/datasette.app/issues/3 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Modify base.html template to support optional sticky footer 978357984 | |
913001282 | https://github.com/simonw/datasette/pull/1455#issuecomment-913001282 | https://api.github.com/repos/simonw/datasette/issues/1455 | IC_kwDOBm6k_c42a0tC | ctb 51016 | 2021-09-04T16:31:24Z | 2021-09-04T16:31:24Z | CONTRIBUTOR | I love it! maybe 'researchers' instead? Or 'scientists and researchers'? | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add scientists to target groups 988325628 | |
913001298 | https://github.com/simonw/datasette/pull/1455#issuecomment-913001298 | https://api.github.com/repos/simonw/datasette/issues/1455 | IC_kwDOBm6k_c42a0tS | simonw 9599 | 2021-09-04T16:31:32Z | 2021-09-04T16:31:32Z | OWNER | Great idea! | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add scientists to target groups 988325628 | |
913001416 | https://github.com/simonw/datasette/pull/1455#issuecomment-913001416 | https://api.github.com/repos/simonw/datasette/issues/1455 | IC_kwDOBm6k_c42a0vI | simonw 9599 | 2021-09-04T16:32:21Z | 2021-09-04T16:32:21Z | OWNER | I'll add researchers too. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add scientists to target groups 988325628 | |
913218494 | https://github.com/simonw/datasette/issues/1459#issuecomment-913218494 | https://api.github.com/repos/simonw/datasette/issues/1459 | IC_kwDOBm6k_c42bpu- | simonw 9599 | 2021-09-05T19:58:51Z | 2021-09-05T19:59:15Z | OWNER | This idea makes sense to me. There's actually an existing option that takes a path, called `--get` - it returns the HTML or JSON for that oath directly to the console, eg `datasette my.db --get /mydb/mytable.json` So... one option would be to allow combining that with `-o` to open that URL in the browser: datasette my.db -o --get /mydb So some options here are: - `datasette my.db --open-url /mydb` - `datasette my.db --open-path /mydb` - `datasette my.db --open --get /mydb` I quite like that last combination option, mainly to avoid adding even more command options. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | suggestion: allow `datasette --open` to take a relative URL 988556488 | |
914439356 | https://github.com/simonw/datasette/issues/1461#issuecomment-914439356 | https://api.github.com/repos/simonw/datasette/issues/1461 | IC_kwDOBm6k_c42gTy8 | simonw 9599 | 2021-09-07T16:11:37Z | 2021-09-07T16:11:37Z | OWNER | ``` (datasette) datasette % blacken-docs docs/*.rst docs/authentication.rst: Rewriting... docs/internals.rst:169: code block parse error Cannot parse: 14:0: <line number missing in source> docs/plugin_hooks.rst:251: code block parse error Cannot parse: 6:4: ] docs/plugin_hooks.rst:312: code block parse error Cannot parse: 38:0: <line number missing in source> docs/spatialite.rst: Rewriting... docs/testing_plugins.rst:135: code block parse error Cannot parse: 5:0: <line number missing in source> docs/writing_plugins.rst: Rewriting... ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Try blacken-docs 989986586 | |
914440282 | https://github.com/simonw/datasette/issues/1461#issuecomment-914440282 | https://api.github.com/repos/simonw/datasette/issues/1461 | IC_kwDOBm6k_c42gUBa | simonw 9599 | 2021-09-07T16:12:57Z | 2021-09-07T16:12:57Z | OWNER | Here's the diff it produced from that first run: ```diff diff --git a/docs/authentication.rst b/docs/authentication.rst index 0d98cf8..8008023 100644 --- a/docs/authentication.rst +++ b/docs/authentication.rst @@ -381,11 +381,7 @@ Authentication plugins can set signed ``ds_actor`` cookies themselves like so: .. code-block:: python response = Response.redirect("/") - response.set_cookie("ds_actor", datasette.sign({ - "a": { - "id": "cleopaws" - } - }, "actor")) + response.set_cookie("ds_actor", datasette.sign({"a": {"id": "cleopaws"}}, "actor")) Note that you need to pass ``"actor"`` as the namespace to :ref:`datasette_sign`. @@ -412,12 +408,16 @@ To include an expiry, add a ``"e"`` key to the cookie value containing a `base62 expires_at = int(time.time()) + (24 * 60 * 60) response = Response.redirect("/") - response.set_cookie("ds_actor", datasette.sign({ - "a": { - "id": "cleopaws" - }, - "e": baseconv.base62.encode(expires_at), - }, "actor")) + response.set_cookie( + "ds_actor", + datasette.sign( + { + "a": {"id": "cleopaws"}, + "e": baseconv.base62.encode(expires_at), + }, + "actor", + ), + ) The resulting cookie will encode data that looks something like this: diff --git a/docs/spatialite.rst b/docs/spatialite.rst index d1b300b..556bad8 100644 --- a/docs/spatialite.rst +++ b/docs/spatialite.rst @@ -58,19 +58,22 @@ Here's a recipe for taking a table with existing latitude and longitude columns, .. code-block:: python import sqlite3 - conn = sqlite3.connect('museums.db') + + conn = sqlite3.connect("museums.db") # Lead the spatialite extension: conn.enable_load_extension(True) - conn.load_extension('/usr/local/lib/mod_spatialite.dylib') + conn.load_extension("/usr/local/lib/mod_spatialite.dylib") # Initialize spatial metadata for thi… | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Try blacken-docs 989986586 | |
914441037 | https://github.com/simonw/datasette/issues/1461#issuecomment-914441037 | https://api.github.com/repos/simonw/datasette/issues/1461 | IC_kwDOBm6k_c42gUNN | simonw 9599 | 2021-09-07T16:13:59Z | 2021-09-07T16:13:59Z | OWNER | I don't think I'll adopt it for this project. For example, here: ```diff response = Response.redirect("/") - response.set_cookie("ds_actor", datasette.sign({ - "a": { - "id": "cleopaws" - } - }, "actor")) + response.set_cookie("ds_actor", datasette.sign({"a": {"id": "cleopaws"}}, "actor")) ``` I chose to use the multi-line version to help emphasize the structure - the single-line replacement loses that. I think I'll continue to make my own editorial choices about how the code examples are laid out. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Try blacken-docs 989986586 | |
914644260 | https://github.com/simonw/datasette/issues/1462#issuecomment-914644260 | https://api.github.com/repos/simonw/datasette/issues/1462 | IC_kwDOBm6k_c42hF0k | simonw 9599 | 2021-09-07T21:34:32Z | 2021-09-07T21:34:32Z | OWNER | I think this is a setting. There are two relevant settings at the moment: ``` "template_debug": false, "trace_debug": false, ``` For consistence then this should be called `something_debug` - but do I want a single setting that exposes the `_internal` database and adds those debug options to the menu, or do I want those as two separate settings? - `internal_debug` to enable access to that `_internal` database - `menu_debug` for those menu options? | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Separate out "debug" options from "root" options 990367646 | |
915229323 | https://github.com/simonw/datasette/pull/1463#issuecomment-915229323 | https://api.github.com/repos/simonw/datasette/issues/1463 | IC_kwDOBm6k_c42jUqL | codecov[bot] 22429695 | 2021-09-08T13:15:26Z | 2021-10-13T21:52:23Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1463?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#1463](https://codecov.io/gh/simonw/datasette/pull/1463?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (2dd94c5) into [main](https://codecov.io/gh/simonw/datasette/commit/0d5cc20aeffa3537cfc9296d01ec24b9c6e23dcf?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (0d5cc20) will **decrease** coverage by `0.00%`. > The diff coverage is `n/a`. > :exclamation: Current head 2dd94c5 differs from pull request most recent head 481212c. Consider uploading reports for the commit 481212c to get more accurate results [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1463/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/1463?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #1463 +/- ## ========================================== - Coverage 91.83% 91.83% -0.01% ========================================== Files 34 34 Lines 4422 4421 -1 ========================================== - Hits 4061 4060 -1 Misses 361 361 ``` | [Impacted Files](https://codecov.io/gh/simonw/datasette/pull/1463?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [datasette/views/table.py](https://codecov.io/gh/simonw/datasette/pull/1463/diff?src=pr&el=tree&utm_medium=… | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Update beautifulsoup4 requirement from <4.10.0,>=4.8.1 to >=4.8.1,<4.11.0 991121619 | |
915279711 | https://github.com/simonw/datasette/issues/1464#issuecomment-915279711 | https://api.github.com/repos/simonw/datasette/issues/1464 | IC_kwDOBm6k_c42jg9f | ctb 51016 | 2021-09-08T14:16:49Z | 2021-09-08T14:16:49Z | CONTRIBUTOR | on commit d57ab156b35ec642 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | clean checkout & clean environment has test failures 991191951 | |
915299013 | https://github.com/simonw/datasette/issues/1464#issuecomment-915299013 | https://api.github.com/repos/simonw/datasette/issues/1464 | IC_kwDOBm6k_c42jlrF | bobwhitelock 7476523 | 2021-09-08T14:40:28Z | 2021-09-08T14:40:28Z | CONTRIBUTOR | What are the full errors you're getting? This *may* be the same issue as described in https://github.com/simonw/datasette/pull/1223 - essentially the test suite (and corresponding Datasette features I assume) are by default implicitly dependent on your Sqlite installation having been compiled with the `SQLITE_ENABLE_FTS3_PARENTHESIS` option. If this is the same issue then I think this can be fixed either by recompiling with that option or (probably more easily) by running `pip install pysqlite3-binary`, which will be used in preference to your system Sqlite installation and has this option enabled. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | clean checkout & clean environment has test failures 991191951 | |
915302885 | https://github.com/simonw/datasette/issues/1464#issuecomment-915302885 | https://api.github.com/repos/simonw/datasette/issues/1464 | IC_kwDOBm6k_c42jmnl | ctb 51016 | 2021-09-08T14:44:50Z | 2021-09-08T14:44:50Z | CONTRIBUTOR | thanks for the response! full errors attached; excerpt: ``` ... def test_searchmode(table_metadata, querystring, expected_rows): with make_app_client( metadata={"databases": {"fixtures": {"tables": {"searchable": table_metadata}}}} ) as client: response = client.get("/fixtures/searchable.json?" + querystring) > assert expected_rows == response.json["rows"] E AssertionError: assert [[1, 'barry c...sel', 'puma']] == [] E Left contains 2 more items, first extra item: [1, 'barry cat', 'terry dog', 'panther'] E Use -v to get the full diff /Users/t/dev/datasette/tests/test_api.py:1115: AssertionError ``` [errors.txt](https://github.com/simonw/datasette/files/7129719/errors.txt) A quick scan of #1223 suggests you're right. Unfortunately, pysqlite3-binary isn't available for Mac OS X, so I can't quickly check that that fixes it; will do so later. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | clean checkout & clean environment has test failures 991191951 | |
915343886 | https://github.com/simonw/datasette/issues/1464#issuecomment-915343886 | https://api.github.com/repos/simonw/datasette/issues/1464 | IC_kwDOBm6k_c42jwoO | bobwhitelock 7476523 | 2021-09-08T15:32:06Z | 2021-09-08T15:32:06Z | CONTRIBUTOR | Thanks, that does look similar! > Unfortunately, pysqlite3-binary isn't available for Mac OS X, so I can't quickly check that that fixes it; will do so later. Ah that makes sense, I guess that's why this isn't just always installed already. I wonder if a possible solution to this issue could be doing feature detection on whether this feature is supported by the current Sqlite version, and if not these tests could be disabled locally? But possibly there's a better way to handle this, will see what @simonw thinks | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | clean checkout & clean environment has test failures 991191951 | |
917642487 | https://github.com/simonw/datasette/issues/1464#issuecomment-917642487 | https://api.github.com/repos/simonw/datasette/issues/1464 | IC_kwDOBm6k_c42shz3 | ctb 51016 | 2021-09-12T14:03:09Z | 2021-09-12T14:03:09Z | CONTRIBUTOR | haven't had time to get back to this, but idle thought that I'm recording for later investigation: how does the continuous integration handle this installation issue? Is it documented there? | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | clean checkout & clean environment has test failures 991191951 | |
917839801 | https://github.com/simonw/datasette/issues/1468#issuecomment-917839801 | https://api.github.com/repos/simonw/datasette/issues/1468 | IC_kwDOBm6k_c42tR-5 | simonw 9599 | 2021-09-13T04:54:17Z | 2021-09-13T04:54:17Z | OWNER | Here's a already open issue for this: #972 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Faceting for custom SQL queries 994390593 | |
917839507 | https://github.com/simonw/datasette/issues/1468#issuecomment-917839507 | https://api.github.com/repos/simonw/datasette/issues/1468 | IC_kwDOBm6k_c42tR6T | simonw 9599 | 2021-09-13T04:53:22Z | 2021-09-13T04:53:22Z | OWNER | At the moment this isn't possible - though there's a workaround which is to define a SQL view for the query, at which point facets will be displayed again. I did a lot of the work required to support this when I refactored how facets worked a while back - but to finally implement this I need to refactor the table view and the arbitrary query view to share much more logic than they do at the moment. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Faceting for custom SQL queries 994390593 | |
917839062 | https://github.com/simonw/datasette/issues/1469#issuecomment-917839062 | https://api.github.com/repos/simonw/datasette/issues/1469 | IC_kwDOBm6k_c42tRzW | simonw 9599 | 2021-09-13T04:52:01Z | 2021-09-13T04:52:01Z | OWNER | Here's the code at fault: https://github.com/simonw/datasette/blob/b28b6cd2fe97f7e193a235877abeec2c8eb0a821/datasette/static/table.js#L137-L146 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Column cog shows "facet by this" when already default faceted 994450961 | |
917840012 | https://github.com/simonw/datasette/issues/1466#issuecomment-917840012 | https://api.github.com/repos/simonw/datasette/issues/1466 | IC_kwDOBm6k_c42tSCM | simonw 9599 | 2021-09-13T04:54:59Z | 2021-09-13T04:54:59Z | OWNER | Especially relevant now that 0.2.0 is out which is a much higher quality release. https://github.com/simonw/datasette-app/releases/tag/0.2.0 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add Datasette Desktop to installation documentation 991467558 | |
918621705 | https://github.com/simonw/datasette/issues/1464#issuecomment-918621705 | https://api.github.com/repos/simonw/datasette/issues/1464 | IC_kwDOBm6k_c42wQ4J | bobwhitelock 7476523 | 2021-09-13T22:17:17Z | 2021-09-13T22:17:17Z | CONTRIBUTOR | > haven't had time to get back to this, but idle thought that I'm recording for later investigation: how does the continuous integration handle this installation issue? Is it documented there? Not certain, but I think tests in CI run on Ubuntu and don't appear to install any additional Sqlite-related dependencies, and so my guess is the version of Sqlite installed by default on Ubuntu has the `SQLITE_ENABLE_FTS3_PARENTHESIS` option enabled and so doesn't run into this issue. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | clean checkout & clean environment has test failures 991191951 | |
919135732 | https://github.com/simonw/datasette/pull/1453#issuecomment-919135732 | https://api.github.com/repos/simonw/datasette/issues/1453 | IC_kwDOBm6k_c42yOX0 | dependabot[bot] 49699333 | 2021-09-14T13:10:38Z | 2021-09-14T13:10:38Z | CONTRIBUTOR | Superseded by #1471. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Bump black from 21.7b0 to 21.8b0 982780906 | |
919141156 | https://github.com/simonw/datasette/pull/1471#issuecomment-919141156 | https://api.github.com/repos/simonw/datasette/issues/1471 | IC_kwDOBm6k_c42yPsk | codecov[bot] 22429695 | 2021-09-14T13:16:29Z | 2021-10-13T21:12:25Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1471?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#1471](https://codecov.io/gh/simonw/datasette/pull/1471?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (01b05ed) into [main](https://codecov.io/gh/simonw/datasette/commit/0d5cc20aeffa3537cfc9296d01ec24b9c6e23dcf?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (0d5cc20) will **decrease** coverage by `0.00%`. > The diff coverage is `n/a`. > :exclamation: Current head 01b05ed differs from pull request most recent head 847238a. Consider uploading reports for the commit 847238a to get more accurate results [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1471/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/1471?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #1471 +/- ## ========================================== - Coverage 91.83% 91.83% -0.01% ========================================== Files 34 34 Lines 4422 4421 -1 ========================================== - Hits 4061 4060 -1 Misses 361 361 ``` | [Impacted Files](https://codecov.io/gh/simonw/datasette/pull/1471?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [datasette/views/table.py](https://codecov.io/gh/simonw/datasette/pull/1471/diff?src=pr&el=tree&utm_medium=… | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Bump black from 21.7b0 to 21.9b0 996002181 | |
939074818 | https://github.com/simonw/datasette/pull/1481#issuecomment-939074818 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c43-SUC | simonw 9599 | 2021-10-08T19:40:23Z | 2021-10-08T19:40:23Z | OWNER | Then I created myself a temporary 3.10 environment using `pipenv` like so: cd /tmp mkdir py310 cd py310 pipenv shell --python /Users/simon/.pyenv/versions/3.10.0/bin/python And used that with my Datasette checkout like so: cd ~/.../datasette pip install -e '.[test]' pytest | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
939075686 | https://github.com/simonw/datasette/pull/1481#issuecomment-939075686 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c43-Shm | simonw 9599 | 2021-10-08T19:42:00Z | 2021-10-08T19:42:00Z | OWNER | Running `pytest -x --pdb` helped me see this error: ``` File "/Users/simon/Dropbox/Development/datasette/datasette/views/base.py", line 122, in dispatch_request await self.ds.refresh_schemas() File "/Users/simon/Dropbox/Development/datasette/datasette/app.py", line 344, in refresh_schemas await self._refresh_schemas() File "/Users/simon/Dropbox/Development/datasette/datasette/app.py", line 349, in _refresh_schemas await init_internal_db(internal_db) File "/Users/simon/Dropbox/Development/datasette/datasette/utils/internal_db.py", line 5, in init_internal_db await db.execute_write( File "/Users/simon/Dropbox/Development/datasette/datasette/database.py", line 102, in execute_write return await self.execute_write_fn(_inner, block=block) File "/Users/simon/Dropbox/Development/datasette/datasette/database.py", line 113, in execute_write_fn reply_queue = janus.Queue() File "/Users/simon/.local/share/virtualenvs/py310-Z8fTATkJ/lib/python3.10/site-packages/janus/__init__.py", line 39, in __init__ self._async_not_empty = asyncio.Condition(self._async_mutex) File "/Users/simon/.pyenv/versions/3.10.0/lib/python3.10/asyncio/locks.py", line 234, in __init__ raise ValueError("loop argument must agree with lock") ValueError: loop argument must agree with lock ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
939076399 | https://github.com/simonw/datasette/pull/1481#issuecomment-939076399 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c43-Ssv | simonw 9599 | 2021-10-08T19:43:33Z | 2021-10-08T19:43:33Z | OWNER | So maybe this is an issue with Janus? I'm using https://pypi.org/project/janus/ 0.6.1 which is the latest release, from October 2020. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
939078095 | https://github.com/simonw/datasette/pull/1481#issuecomment-939078095 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c43-THP | simonw 9599 | 2021-10-08T19:47:29Z | 2021-10-08T19:47:29Z | OWNER | Only mention I can find of that "loop argument must agree with lock" error is here - which doesn't have any tips for a workaround yet: https://giters.com/django/channels_redis/issues/278 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
939078872 | https://github.com/simonw/datasette/pull/1481#issuecomment-939078872 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c43-TTY | simonw 9599 | 2021-10-08T19:49:08Z | 2021-10-08T19:49:08Z | OWNER | Here's the code that raises that error: https://github.com/python/cpython/blob/bb3e0c240bc60fe08d332ff5955d54197f79751c/Lib/asyncio/locks.py#L219-L234 ```python class Condition(_ContextManagerMixin, mixins._LoopBoundMixin): """Asynchronous equivalent to threading.Condition. This class implements condition variable objects. A condition variable allows one or more coroutines to wait until they are notified by another coroutine. A new Lock object is created and used as the underlying lock. """ def __init__(self, lock=None, *, loop=mixins._marker): super().__init__(loop=loop) if lock is None: lock = Lock() elif lock._loop is not self._get_loop(): raise ValueError("loop argument must agree with lock") ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
939079727 | https://github.com/simonw/datasette/pull/1481#issuecomment-939079727 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c43-Tgv | simonw 9599 | 2021-10-08T19:50:52Z | 2021-10-08T19:50:52Z | OWNER | And here's the relevant Janus code: https://github.com/aio-libs/janus/blob/d7970f8b76bcac2e087067ca4575ac845e481874/janus/__init__.py#L24-L42 ```python class Queue(Generic[T]): def __init__(self, maxsize: int = 0) -> None: self._loop = current_loop() self._maxsize = maxsize self._init(maxsize) self._unfinished_tasks = 0 self._sync_mutex = threading.Lock() self._sync_not_empty = threading.Condition(self._sync_mutex) self._sync_not_full = threading.Condition(self._sync_mutex) self._all_tasks_done = threading.Condition(self._sync_mutex) self._async_mutex = asyncio.Lock() # "loop argument must agree with lock" exception is raised here: self._async_not_empty = asyncio.Condition(self._async_mutex) self._async_not_full = asyncio.Condition(self._async_mutex) self._finished = asyncio.Event() self._finished.set() ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
939100803 | https://github.com/simonw/datasette/pull/1481#issuecomment-939100803 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c43-YqD | simonw 9599 | 2021-10-08T20:33:42Z | 2021-10-08T20:33:42Z | OWNER | There's a tiny chance this could be a bug in Python 3.10 itself - I filed an issue here: https://bugs.python.org/issue45416 - in which I said: > In Python 3.10 it is not possible to instantiate an asyncio.Condition that wraps an asyncio.Lock without raising a "loop argument must agree with lock" exception. > > This code raises that exception: > > asyncio.Condition(asyncio.Lock()) > > This worked in previous Python versions. > > Note that the error only occurs if an event loop is running. Here's a simple script that replicates the problem: > > import asyncio > > # This runs without an exception: > print(asyncio.Condition(asyncio.Lock())) > > # This does not work: > async def example(): > print(asyncio.Condition(asyncio.Lock())) > > # This raises "ValueError: loop argument must agree with lock": > asyncio.run(example()) | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
939180313 | https://github.com/simonw/datasette/pull/1481#issuecomment-939180313 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c43-sEZ | simonw 9599 | 2021-10-08T23:41:39Z | 2021-10-08T23:41:39Z | OWNER | I submitted a PR to Janus with a workaround for this: https://github.com/aio-libs/janus/pull/359 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
939185319 | https://github.com/simonw/datasette/pull/1481#issuecomment-939185319 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c43-tSn | simonw 9599 | 2021-10-09T00:04:54Z | 2021-10-09T00:04:54Z | OWNER | I applied my PR against Janus to my local copy of Datasette like so: pip uninstall janus pip install https://github.com/aio-libs/janus/archive/9e13d3fb74e2c93d7501443b370a455d1b302b1f.zip Then I ran the Datasette tests and got a much happier pass rate. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
939191311 | https://github.com/simonw/datasette/issues/1482#issuecomment-939191311 | https://api.github.com/repos/simonw/datasette/issues/1482 | IC_kwDOBm6k_c43-uwP | simonw 9599 | 2021-10-09T00:35:04Z | 2021-10-09T00:35:04Z | OWNER | I think that SQLite error message difference was caused by https://github.com/python/cpython/commit/a50e28377bcf37121b55c2de70d95a5386c478f8 or related work. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Support Python 3.10 1021550542 | |
938171377 | https://github.com/simonw/datasette/issues/1480#issuecomment-938171377 | https://api.github.com/repos/simonw/datasette/issues/1480 | IC_kwDOBm6k_c4361vx | ghing 110420 | 2021-10-07T21:33:12Z | 2021-10-07T21:33:12Z | CONTRIBUTOR | Thanks for the reply @simonw. What services have you had better success with than Cloud Run for larger database? Also, what about my issue description makes you think there may be a workaround? Is there any instrumentation I could add to see at which point in the deploy the memory usage spikes? Should I be able to see this whether it's running under Docker locally, or do you suspect this is Cloud Run-specific? | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Exceeding Cloud Run memory limits when deploying a 4.8G database 1015646369 | |
938124652 | https://github.com/simonw/datasette/issues/1470#issuecomment-938124652 | https://api.github.com/repos/simonw/datasette/issues/1470 | IC_kwDOBm6k_c436qVs | simonw 9599 | 2021-10-07T20:17:53Z | 2021-10-07T20:18:55Z | OWNER | Here's the exception: ``` -> params[f"p{len(params)}"] = components[0] (Pdb) list 603 604 # Figure out the SQL for next-based-on-primary-key first 605 next_by_pk_clauses = [] 606 if use_rowid: 607 next_by_pk_clauses.append(f"rowid > :p{len(params)}") 608 -> params[f"p{len(params)}"] = components[0] 609 else: 610 # Apply the tie-breaker based on primary keys 611 if len(components) == len(pks): 612 param_len = len(params) 613 next_by_pk_clauses.append( ``` Debugger shows that `components` is an empty array, so `components[0]` cannot be resolved: ``` -> params[f"p{len(params)}"] = components[0] (Pdb) params {'search': 'hello'} (Pdb) components [] ``` So the bug is in this code: https://github.com/simonw/datasette/blob/adb5b70de5cec3c3dd37184defe606a082c232cf/datasette/views/table.py#L604-L617 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | ?_sort=rowid with _next= returns error 995098231 | |
938131806 | https://github.com/simonw/datasette/issues/1470#issuecomment-938131806 | https://api.github.com/repos/simonw/datasette/issues/1470 | IC_kwDOBm6k_c436sFe | simonw 9599 | 2021-10-07T20:28:30Z | 2021-10-07T20:28:30Z | OWNER | On further investigation this isn't related to `_search` at all - it happens when you explicitly sort by `_sort=rowid` and apply a `_next` - https://global-power-plants.datasettes.com/global-power-plants/global-power-plants?_next=200 works without an error (currently) - https://global-power-plants.datasettes.com/global-power-plants/global-power-plants?_next=200&_sort=rowid shows that error | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | ?_sort=rowid with _next= returns error 995098231 | |
938134038 | https://github.com/simonw/datasette/issues/1480#issuecomment-938134038 | https://api.github.com/repos/simonw/datasette/issues/1480 | IC_kwDOBm6k_c436soW | simonw 9599 | 2021-10-07T20:31:46Z | 2021-10-07T20:31:46Z | OWNER | I've had this problem too - my solution was to not use Cloud Run for databases larger than about 2GB, but the way you describe it here makes me think that maybe there is a workaround here which could get it to work. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Exceeding Cloud Run memory limits when deploying a 4.8G database 1015646369 | |
938141121 | https://github.com/simonw/datasette/pull/1481#issuecomment-938141121 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c436uXB | codecov[bot] 22429695 | 2021-10-07T20:42:37Z | 2021-10-24T22:19:28Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1481?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#1481](https://codecov.io/gh/simonw/datasette/pull/1481?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (77542e7) into [main](https://codecov.io/gh/simonw/datasette/commit/63886178a649586b403966a27a45881709d2b868?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (6388617) will **decrease** coverage by `0.01%`. > The diff coverage is `n/a`. > :exclamation: Current head 77542e7 differs from pull request most recent head 50005bd. Consider uploading reports for the commit 50005bd to get more accurate results [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1481/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/1481?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #1481 +/- ## ========================================== - Coverage 91.83% 91.82% -0.02% ========================================== Files 34 34 Lines 4421 4426 +5 ========================================== + Hits 4060 4064 +4 - Misses 361 362 +1 ``` | [Impacted Files](https://codecov.io/gh/simonw/datasette/pull/1481?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [datasette/app.py](https://codecov.io/gh/simonw/datasette/pull/1481/diff?src=pr&el=tree&utm_medium=referral… | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
938142436 | https://github.com/simonw/datasette/pull/1481#issuecomment-938142436 | https://api.github.com/repos/simonw/datasette/issues/1481 | IC_kwDOBm6k_c436urk | simonw 9599 | 2021-10-07T20:44:43Z | 2021-10-07T20:44:43Z | OWNER | The 3.10 tests failed a lot. Trying to run this locally: ``` /tmp % pyenv install 3.10 python-build: definition not found: 3.10 The following versions contain `3.10' in the name: 3.10.0a6 3.10-dev miniconda-3.10.1 miniconda3-3.10.1 See all available versions with `pyenv install --list'. If the version you need is missing, try upgrading pyenv: brew update && brew upgrade pyenv ``` So trying: brew update && brew upgrade pyenv Then did this: ``` /tmp % brew upgrade pyenv ==> Upgrading 1 outdated package: pyenv 1.2.24.1 -> 2.1.0 ``` This decided to upgrade everything by downloaded everything on the internet. Aah, Homebrew. But it looks like I have `3.10.0` available to `pyenv` now. ``` /tmp % pyenv install 3.10.0 python-build: use openssl@1.1 from homebrew python-build: use readline from homebrew Downloading Python-3.10.0.tar.xz... -> https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tar.xz Installing Python-3.10.0... ... ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fix compatibility with Python 3.10 1020436713 | |
923106887 | https://github.com/simonw/datasette/issues/111#issuecomment-923106887 | https://api.github.com/repos/simonw/datasette/issues/111 | IC_kwDOBm6k_c43BX5H | simonw 9599 | 2021-09-20T16:58:39Z | 2021-09-20T16:58:39Z | OWNER | Still a good idea today too! Would be great for https://cdc-vaccination-history.datasette.io/ for example. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add “updated” to metadata 274615452 | |
923979964 | https://github.com/simonw/datasette/pull/1476#issuecomment-923979964 | https://api.github.com/repos/simonw/datasette/issues/1476 | IC_kwDOBm6k_c43EtC8 | codecov[bot] 22429695 | 2021-09-21T13:18:22Z | 2021-09-21T13:18:22Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1476?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#1476](https://codecov.io/gh/simonw/datasette/pull/1476?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (2eb01ff) into [main](https://codecov.io/gh/simonw/datasette/commit/b28b6cd2fe97f7e193a235877abeec2c8eb0a821?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (b28b6cd) will **not change** coverage. > The diff coverage is `n/a`. [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1476/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/1476?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #1476 +/- ## ======================================= Coverage 91.83% 91.83% ======================================= Files 34 34 Lines 4421 4421 ======================================= Hits 4060 4060 Misses 361 361 ``` ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1476?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). > **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) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov… | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Update pytest-xdist requirement from <2.4,>=2.2.1 to >=2.2.1,<2.5 1002459220 | |
924432643 | https://github.com/simonw/datasette/issues/111#issuecomment-924432643 | https://api.github.com/repos/simonw/datasette/issues/111 | IC_kwDOBm6k_c43GbkD | simonw 9599 | 2021-09-21T22:23:23Z | 2021-09-21T22:23:23Z | OWNER | I'm going to use https://github.com/dateutil/dateutil for this - it's been maintained constantly (by an evolving team of contributors) [since 2003](https://github.com/dateutil/dateutil/commit/68ae2757ae15c84bf947d47a82a314b3b975bc9b) and is a very trustworthy dependency. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add “updated” to metadata 274615452 | |
924437942 | https://github.com/simonw/datasette/issues/111#issuecomment-924437942 | https://api.github.com/repos/simonw/datasette/issues/111 | IC_kwDOBm6k_c43Gc22 | simonw 9599 | 2021-09-21T22:32:59Z | 2021-09-21T22:47:07Z | OWNER | Side-note: Django 4.0 [will switch](https://docs.djangoproject.com/en/dev/releases/4.0/#zoneinfo-default-timezone-implementation) from using `pytz` to using the standard library `zoneinfo` module introduced in Python 3.9, which has a backport that works as far back as 3.6: https://github.com/pganssle/zoneinfo (https://pypi.org/project/backports.zoneinfo/) If I need to handle timezones I'll use that, but I think I can get away without it? Django does this: https://github.com/django/django/blob/b0ed619303d2fb723330ca9efa3acf23d49f1d19/setup.cfg#L39-L43 ``` install_requires = asgiref >= 3.3.2 backports.zoneinfo; python_version<"3.9" sqlparse >= 0.2.2 tzdata; sys_platform == 'win32' ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add “updated” to metadata 274615452 | |
924435971 | https://github.com/simonw/datasette/issues/111#issuecomment-924435971 | https://api.github.com/repos/simonw/datasette/issues/111 | IC_kwDOBm6k_c43GcYD | simonw 9599 | 2021-09-21T22:29:15Z | 2021-09-21T22:29:49Z | OWNER | So this is a metadata key called `updated` which can be applied at the table, database or instance level. It is represented as a `.isoformat()` timestamp. Question: should I support just the date - `yyyy-mm-dd` - in addition to the datetime? I think so. I can easily imagine situations where the exact time of day that a change was made hasn't been recorded, but the overall date is known. But in that case, should the `updated` key sometimes be `yyyy-mm-dd` and sometimes be the full isoformat datetime? Or should there be an `updated_date` key that's used for just the date? | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add “updated” to metadata 274615452 | |
924438481 | https://github.com/simonw/datasette/issues/111#issuecomment-924438481 | https://api.github.com/repos/simonw/datasette/issues/111 | IC_kwDOBm6k_c43Gc_R | simonw 9599 | 2021-09-21T22:34:03Z | 2021-09-21T22:34:21Z | OWNER | The simplest possible version of this: it's always represented as a UTC ISO datetime, like this: "updated": "2020-10-31T12:00:00+00:00" Later versions of Datasette could extend this to handle other timezones or support just the date (though that's a backwards incompatible change so probably better to decide on the date thing right now). | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add “updated” to metadata 274615452 | |
924443089 | https://github.com/simonw/datasette/issues/111#issuecomment-924443089 | https://api.github.com/repos/simonw/datasette/issues/111 | IC_kwDOBm6k_c43GeHR | simonw 9599 | 2021-09-21T22:45:14Z | 2021-09-21T22:45:26Z | OWNER | The audiences I care about here are: - Producers of this timestamp - generally that will be users who are using `datasette publish` to share their data - Human consumers of this timestamp - end users who look at a Datasette site and want to know how recent the data is - Machine consumers of this timestamp - API integrations that might want to check if a Datasette instance has been updated before downloading new data For producers I think there are going to be two categories. The first is users who run "publish" and want the site to reflect when they did so (probably using `--updated=now` when they publish). The second are users who are willing to spend more time thinking about this - for example my various git scraping projects where I want to use a date derived from the git history. For humans... I'd like to be able to calculate a relative time (3 hours ago) in addition to showing the display time, because that helps avoid confusion over timezones. For machine consumers, it might be nice to offer the option of a calculated Unix timestamp-since-1970, since those can be easier to work with in some languages than running a full ISO date parser. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add “updated” to metadata 274615452 | |
939386591 | https://github.com/simonw/datasette/issues/1470#issuecomment-939386591 | https://api.github.com/repos/simonw/datasette/issues/1470 | IC_kwDOBm6k_c43_ebf | simonw 9599 | 2021-10-10T01:17:34Z | 2021-10-10T01:17:34Z | OWNER | I'll open a separate issue for removing `_next=` when running a search. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | ?_sort=rowid with _next= returns error 995098231 | |
930071625 | https://github.com/simonw/datasette/issues/1479#issuecomment-930071625 | https://api.github.com/repos/simonw/datasette/issues/1479 | IC_kwDOBm6k_c43b8RJ | kirajano 76450761 | 2021-09-29T11:01:30Z | 2021-09-29T11:01:30Z | NONE | Thanks, but this one has a different error type. Unfortunately, still not working. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Win32 "used by another process" error with datasette publish 1010112818 | |
929927144 | https://github.com/simonw/datasette/issues/1479#issuecomment-929927144 | https://api.github.com/repos/simonw/datasette/issues/1479 | IC_kwDOBm6k_c43bY_o | soobrosa 1244799 | 2021-09-29T07:49:40Z | 2021-09-29T07:49:40Z | NONE | My search yielded these four entries: https://github.com/simonw/datasette/issues?q=PermissionError%3A+%5BWinError+32%5D+ Maybe this is the closet hit? https://github.com/simonw/datasette/issues/744 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Win32 "used by another process" error with datasette publish 1010112818 | |
932807859 | https://github.com/simonw/datasette/issues/1479#issuecomment-932807859 | https://api.github.com/repos/simonw/datasette/issues/1479 | IC_kwDOBm6k_c43mYSz | simonw 9599 | 2021-10-02T19:22:35Z | 2021-10-02T19:22:35Z | OWNER | I'm pretty sure this is a Windows issue, not a Fly issue. I imagine it affects other forms of `datasette publish` too. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Win32 "used by another process" error with datasette publish 1010112818 | |
932808043 | https://github.com/simonw/datasette/issues/1479#issuecomment-932808043 | https://api.github.com/repos/simonw/datasette/issues/1479 | IC_kwDOBm6k_c43mYVr | simonw 9599 | 2021-10-02T19:23:52Z | 2021-10-02T19:23:52Z | OWNER | I suspect the root cause of this may be in this code: https://github.com/simonw/datasette/blob/63886178a649586b403966a27a45881709d2b868/datasette/utils/__init__.py#L673-L677 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Win32 "used by another process" error with datasette publish 1010112818 | |
932808216 | https://github.com/simonw/datasette/issues/1479#issuecomment-932808216 | https://api.github.com/repos/simonw/datasette/issues/1479 | IC_kwDOBm6k_c43mYYY | simonw 9599 | 2021-10-02T19:25:09Z | 2021-10-02T19:25:09Z | OWNER | Actually no, from that stack trace you provided: ``` File "c:\users\grott\anaconda3\lib\site-packages\click\core.py", line 610, in invoke return callback(*args, **kwargs) File "c:\users\grott\anaconda3\lib\site-packages\datasette\cli.py", line 283, in package call(args) File "c:\users\grott\anaconda3\lib\contextlib.py", line 119, in __exit__ next(self.gen) File "c:\users\grott\anaconda3\lib\site-packages\datasette\utils\__init__.py", line 451, in temporary_docker_directory tmp.cleanup() ``` It looks like the problem occurs here: https://github.com/simonw/datasette/blob/b1fed48a95516ae84c0f020582303ab50ab817e2/datasette/utils/__init__.py#L449-L452 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Win32 "used by another process" error with datasette publish 1010112818 | |
953334718 | https://github.com/simonw/datasette/issues/1380#issuecomment-953334718 | https://api.github.com/repos/simonw/datasette/issues/1380 | IC_kwDOBm6k_c440ru- | glasnt 813732 | 2021-10-27T21:45:04Z | 2021-10-27T21:45:04Z | CONTRIBUTOR | I am also getting this issue, using the currently most recent version of datasette ``` $ datasette --version datasette, version 0.59.1 ``` If I run `datasette` within just a folder of files, ``` $ datasette serve . ``` Adding new files while datasette is running shows no new files, and removing files causes datasette to return 500 errors. ``` home Error 500 [Errno 2] No such file or directory: 'mydatabase.db' Powered by Datasette ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Serve all db files in a folder 924748955 | |
953366110 | https://github.com/simonw/datasette/issues/1380#issuecomment-953366110 | https://api.github.com/repos/simonw/datasette/issues/1380 | IC_kwDOBm6k_c440zZe | glasnt 813732 | 2021-10-27T22:48:55Z | 2021-10-27T22:48:55Z | CONTRIBUTOR | It looks like if the files argument is a directory, `config_dir` is set, but files in that folder are only loaded into `self.files` at the `Datasette` class initialisation. I tried seeing if I could get `--reload` to work, but I'm getting issues trying to use that command when specifying a directory, as the command `serve` ends up in the files list(?): ``` datasette serve . --reload Error: Invalid value for '[FILES]...': Path 'serve' does not exist. ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Serve all db files in a folder 924748955 | |
953508979 | https://github.com/simonw/datasette/issues/1497#issuecomment-953508979 | https://api.github.com/repos/simonw/datasette/issues/1497 | IC_kwDOBm6k_c441WRz | simonw 9599 | 2021-10-28T05:13:49Z | 2021-10-28T05:13:49Z | OWNER | Wrote about this in my weeknotes: https://simonwillison.net/2021/Oct/28/weeknotes-kubernetes-web-components/ | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Publish to Docker Hub failing with "libcrypt.so.1: cannot open shared object file" 1034535001 | |
954384496 | https://github.com/simonw/datasette/pull/1495#issuecomment-954384496 | https://api.github.com/repos/simonw/datasette/issues/1495 | IC_kwDOBm6k_c444sBw | fgregg 536941 | 2021-10-29T03:07:13Z | 2021-10-29T03:07:13Z | CONTRIBUTOR | okay @simonw, made the requested changes. tests are running locally. i think this is ready for you to look at again. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Allow routes to have extra options 1033678984 | |
955384545 | https://github.com/simonw/datasette/issues/1253#issuecomment-955384545 | https://api.github.com/repos/simonw/datasette/issues/1253 | IC_kwDOBm6k_c448gLh | dufferzafar 1449512 | 2021-10-30T16:00:42Z | 2021-10-30T16:00:42Z | NONE | Yeah, I was pressing Ctrl + Enter as well. Came here to open this issue and found out Shift + Enter works. @simonw Any way to configure this? | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Capture "Ctrl + Enter" or "⌘ + Enter" to send SQL query? 826064552 | |
940023938 | https://github.com/simonw/datasette/pull/1485#issuecomment-940023938 | https://api.github.com/repos/simonw/datasette/issues/1485 | IC_kwDOBm6k_c44B6CC | codecov[bot] 22429695 | 2021-10-11T13:18:16Z | 2021-10-11T13:18:16Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1485?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#1485](https://codecov.io/gh/simonw/datasette/pull/1485?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (be9aed9) into [main](https://codecov.io/gh/simonw/datasette/commit/0d5cc20aeffa3537cfc9296d01ec24b9c6e23dcf?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (0d5cc20) will **not change** coverage. > The diff coverage is `n/a`. [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1485/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/1485?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #1485 +/- ## ======================================= Coverage 91.83% 91.83% ======================================= Files 34 34 Lines 4422 4422 ======================================= Hits 4061 4061 Misses 361 361 ``` ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1485?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). > **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) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov… | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Update pytest-timeout requirement from <1.5,>=1.4.2 to >=1.4.2,<2.1 1022688960 | |
941002127 | https://github.com/simonw/datasette/issues/1432#issuecomment-941002127 | https://api.github.com/repos/simonw/datasette/issues/1432 | IC_kwDOBm6k_c44Fo2P | ashishdotme 5802411 | 2021-10-12T13:14:31Z | 2021-10-12T13:14:39Z | NONE | Any workaround for making it work with datasette-publish-vercel. Currently getting below error module initialization error: __init__() got an unexpected keyword argument 'config' module initialization error __init__() got an unexpected keyword argument 'config' | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Rename Datasette.__init__(config=) parameter to settings= 969855774 | |
941585767 | https://github.com/simonw/datasette/issues/1432#issuecomment-941585767 | https://api.github.com/repos/simonw/datasette/issues/1432 | IC_kwDOBm6k_c44H3Vn | ashishdotme 5802411 | 2021-10-12T21:23:19Z | 2021-10-12T21:23:19Z | NONE | Nevermind, had to remove the branch argument in the workflow to make vercel publish work | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Rename Datasette.__init__(config=) parameter to settings= 969855774 | |
942722595 | https://github.com/simonw/datasette/pull/1487#issuecomment-942722595 | https://api.github.com/repos/simonw/datasette/issues/1487 | IC_kwDOBm6k_c44MM4j | simonw 9599 | 2021-10-13T21:08:53Z | 2021-10-13T21:08:53Z | OWNER | Thanks for this! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Added instructions for installing plugins via pipx, #1486 1023245060 | |
942725632 | https://github.com/simonw/datasette/issues/1469#issuecomment-942725632 | https://api.github.com/repos/simonw/datasette/issues/1469 | IC_kwDOBm6k_c44MNoA | simonw 9599 | 2021-10-13T21:13:30Z | 2021-10-13T21:13:30Z | OWNER | The core problem here is treating the `?_facet=` query string parameters as the point of truth for which facets are currently enabled. Instead, I could use a `data-` attribute on the displayed facets. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Column cog shows "facet by this" when already default faceted 994450961 | |
942779926 | https://github.com/simonw/datasette/issues/1488#issuecomment-942779926 | https://api.github.com/repos/simonw/datasette/issues/1488 | IC_kwDOBm6k_c44Ma4W | simonw 9599 | 2021-10-13T22:59:05Z | 2021-10-13T22:59:05Z | OWNER | This is weird - as far as I can tell `httpx` has included the query string in `raw_path` for well over a year: https://github.com/encode/httpx/commit/8e4a8a1c73f60fe5754f95b308beaa725cb8791d#diff-c9a78eb3b5f5c4fac4e5552165fbdd5320c7e3fadf9eedabcb5461393466c090R235 | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Upgrade to httpx 0.20.0 (request() got an unexpected keyword argument 'allow_redirects') 1025754125 | |
942777414 | https://github.com/simonw/datasette/issues/1488#issuecomment-942777414 | https://api.github.com/repos/simonw/datasette/issues/1488 | IC_kwDOBm6k_c44MaRG | simonw 9599 | 2021-10-13T22:52:40Z | 2021-10-13T22:52:40Z | OWNER | Upgrading to 0.20.0 gives me lots of the following errors: '{"ok": false, "error": "Database not found: .json?_sort=relationships", "status": 404, "title": null}' It looks like the full query string is now being treated as the name of the database. | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Upgrade to httpx 0.20.0 (request() got an unexpected keyword argument 'allow_redirects') 1025754125 | |
942778382 | https://github.com/simonw/datasette/issues/1488#issuecomment-942778382 | https://api.github.com/repos/simonw/datasette/issues/1488 | IC_kwDOBm6k_c44MagO | simonw 9599 | 2021-10-13T22:55:01Z | 2021-10-13T22:55:01Z | OWNER | I think the issue is in `route_path()`: ``` > /Users/simon/Dropbox/Development/datasette/datasette/app.py(1182)route_path() -> response = await view(request, send) (Pdb) path '/_memory.json?sql=select+sqlite_version()' ``` | {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Upgrade to httpx 0.20.0 (request() got an unexpected keyword argument 'allow_redirects') 1025754125 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
updated_at (date) >30 ✖