{"html_url": "https://github.com/simonw/datasette/issues/1050#issuecomment-718317997", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1050", "id": 718317997, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODMxNzk5Nw==", "user": {"value": 283343, "label": "thadk"}, "created_at": "2020-10-29T02:24:50Z", "updated_at": "2020-10-29T02:29:24Z", "author_association": "NONE", "body": "Unsolicited feedback for an unreleased feature of the [current](https://github.com/simonw/datasette/commit/5e0b72247ecab4ce0fcec599b77a83d73a480872) unreleased GitHub version (I casually wanted to access a blob row) \u2013 the existing #1036 route doesn't support special characters in database or table names (e.g. `@()` ). Maybe this is motivation for your new idea here.\r\n\r\nAlso I got this error/crash with my blob and wasn't able to get the file: https://gist.github.com/thadk/28ac32af0e88747ce9056c90b0b19d34", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729057388, "label": "Switch to .blob render extension for BLOB downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1049#issuecomment-718340847", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1049", "id": 718340847, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODM0MDg0Nw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T03:45:47Z", "updated_at": "2020-10-29T03:48:26Z", "author_association": "OWNER", "body": "[thebe](https://thebelab.readthedocs.io/en/latest/examples/minimal_example.html) is the first time I've seen a library that requires you to set up some global JavaScript configuration before loading the script itself.\r\n\r\nI'm hesitant to add an extra template block just to cover that one case since it's such a rare pattern. But it's important that `thebelab` can be used with Datasette.\r\n\r\nWould this pattern work for you instead?\r\n\r\n```html+jinja\r\n{% block extra_head %}\r\n\r\n\r\n{% endblock %}\r\n```\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729017519, "label": "Add template block prior to extra URL loaders"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1049#issuecomment-718341542", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1049", "id": 718341542, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODM0MTU0Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T03:48:12Z", "updated_at": "2020-10-29T03:48:12Z", "author_association": "OWNER", "body": "You could use Datasette's new `{{ urls.static_plugins(...) }}` template option - see https://docs.datasette.io/en/latest/internals.html#internals-datasette-urls - to generate a link to code that was bundled with the plugin:\r\n\r\n```html+jinja\r\n{% block extra_head %}\r\n\r\n\r\n{% endblock %}\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729017519, "label": "Add template block prior to extra URL loaders"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1050#issuecomment-718342036", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1050", "id": 718342036, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODM0MjAzNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T03:49:57Z", "updated_at": "2020-10-29T03:49:57Z", "author_association": "OWNER", "body": "@thadk from that error it looks like the problem may have been that you had a BLOB column containing a `null` value? If so that's definitely a bug, I'll fix that.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729057388, "label": "Switch to .blob render extension for BLOB downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1050#issuecomment-718346019", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1050", "id": 718346019, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODM0NjAxOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T04:05:07Z", "updated_at": "2020-10-29T04:05:07Z", "author_association": "OWNER", "body": "Yes, confirmed - this is a bug where if the `BLOB` column contains a `null` you get a nasty exception if you try to download it.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729057388, "label": "Switch to .blob render extension for BLOB downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1049#issuecomment-718528252", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1049", "id": 718528252, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODUyODI1Mg==", "user": {"value": 82988, "label": "psychemedia"}, "created_at": "2020-10-29T09:20:34Z", "updated_at": "2020-10-29T09:20:34Z", "author_association": "CONTRIBUTOR", "body": "That workaround is probably fine. I was trying to work out whether there might be other situations where a pre-external package load might be useful but couldn't offhand bring any other examples to mind. The static plugins option also looks interesting.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729017519, "label": "Add template block prior to extra URL loaders"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1053#issuecomment-718976679", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1053", "id": 718976679, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODk3NjY3OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T19:37:57Z", "updated_at": "2020-10-29T19:37:57Z", "author_association": "OWNER", "body": "https://docs.datasette.io/en/latest/writing_plugins.html#designing-urls-for-your-plugin", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729604838, "label": "Document recommendations for plugin authors to design URLs"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1051#issuecomment-718980659", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1051", "id": 718980659, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODk4MDY1OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T19:45:42Z", "updated_at": "2020-10-29T19:45:42Z", "author_association": "OWNER", "body": "OK, alternative idea. The `.blob` output renderer from #1050 gets to see multiple rows at once. \r\n\r\nFor an arbitrary SQL query, how about if I link to this?\r\n\r\n`/db.blob?sql=...&_blob_column=data&_blob_hash=bc4c24181ed3ce666`\r\n\r\nThen the output renderer loops through all of the `data` results that are available to it and, if one of them hashes to that value, serves up that data?\r\n\r\nIf no matches are found it can show an error message telling you that the link has expired (presumably because the underlying database has changed since the link was generated).\r\n\r\nI think this might be the best solution to the problem.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729096595, "label": "Better display of binary data on arbitrary query results page"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1050#issuecomment-718980944", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1050", "id": 718980944, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODk4MDk0NA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T19:46:19Z", "updated_at": "2020-10-29T19:46:19Z", "author_association": "OWNER", "body": "Had an idea in https://github.com/simonw/datasette/issues/1051#issuecomment-718980659\r\n\r\n> OK, alternative idea. The `.blob` output renderer from #1050 gets to see multiple rows at once.\r\n> \r\n> For an arbitrary SQL query, how about if I link to this?\r\n> \r\n> `/db.blob?sql=...&_blob_column=data&_blob_hash=bc4c24181ed3ce666`\r\n> \r\n> Then the output renderer loops through all of the `data` results that are available to it and, if one of them hashes to that value, serves up that data?\r\n> \r\n> If no matches are found it can show an error message telling you that the link has expired (presumably because the underlying database has changed since the link was generated).\r\n> \r\n> I think this might be the best solution to the problem.\r\n\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729057388, "label": "Switch to .blob render extension for BLOB downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1050#issuecomment-718987852", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1050", "id": 718987852, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODk4Nzg1Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T20:00:32Z", "updated_at": "2020-10-29T20:00:32Z", "author_association": "OWNER", "body": "The reason I like the `?_blob_hash=` solution is that it feels really misleading to provide a link to \"download this binary\" which could conceivably download some other data.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729057388, "label": "Switch to .blob render extension for BLOB downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1050#issuecomment-718989895", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1050", "id": 718989895, "node_id": "MDEyOklzc3VlQ29tbWVudDcxODk4OTg5NQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T20:04:15Z", "updated_at": "2020-10-29T20:04:15Z", "author_association": "OWNER", "body": "I'll use `hashlib.sha256` for these hashes.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729057388, "label": "Switch to .blob render extension for BLOB downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1050#issuecomment-719001701", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1050", "id": 719001701, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTAwMTcwMQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T20:26:44Z", "updated_at": "2020-10-29T20:26:44Z", "author_association": "OWNER", "body": "I'll do the rest of the work on this in the pull request #1061.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729057388, "label": "Switch to .blob render extension for BLOB downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1050#issuecomment-719021514", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1050", "id": 719021514, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTAyMTUxNA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T21:05:08Z", "updated_at": "2020-10-29T21:05:08Z", "author_association": "OWNER", "body": "Idea: what if Datasette had a custom SQLite function that could be used to generate URLs to the row-level BLOB download for a value? Then custom SQL query authors could use that function to link to the relevant content.\r\n\r\nThis could be expanded to exposing other `datasette.urls` functionality as well.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729057388, "label": "Switch to .blob render extension for BLOB downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1062#issuecomment-719031901", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1062", "id": 719031901, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTAzMTkwMQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T21:25:54Z", "updated_at": "2020-10-29T21:25:54Z", "author_association": "OWNER", "body": "Relevant code: https://github.com/simonw/datasette/blob/d6f9ff71378c4eab34dad181c23cfc143a4aef2d/datasette/views/base.py#L258-L345", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 732674148, "label": "Refactor .csv to be an output renderer - and teach register_output_renderer to stream all rows"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1061#issuecomment-719033013", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1061", "id": 719033013, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTAzMzAxMw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T21:27:14Z", "updated_at": "2020-10-29T21:27:14Z", "author_association": "OWNER", "body": "Next challenge: link to `.blob` downloads from https://latest.datasette.io/fixtures?sql=select+rowid%2C+data+from+binary_data\r\n\r\nThis will be a bit tricky. Here's how that template works at the moment: https://github.com/simonw/datasette/blob/d6f9ff71378c4eab34dad181c23cfc143a4aef2d/datasette/templates/query.html#L69-L77", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 732634375, "label": ".blob output renderer"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1061#issuecomment-719035336", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1061", "id": 719035336, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTAzNTMzNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T21:29:29Z", "updated_at": "2020-10-29T21:29:29Z", "author_association": "OWNER", "body": "Those display_rows have already been processed by the `render_cell` plugin hook: https://github.com/simonw/datasette/blob/d6f9ff71378c4eab34dad181c23cfc143a4aef2d/datasette/views/database.py#L320-L346", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 732634375, "label": ".blob output renderer"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1061#issuecomment-719042601", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1061", "id": 719042601, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTA0MjYwMQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T21:45:35Z", "updated_at": "2020-10-29T21:50:42Z", "author_association": "OWNER", "body": "Moving the CSV work to a separate issue.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 732634375, "label": ".blob output renderer"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1063#issuecomment-719043108", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1063", "id": 719043108, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTA0MzEwOA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T21:46:48Z", "updated_at": "2020-10-29T21:46:48Z", "author_association": "OWNER", "body": "Remove this `xfail` and `import pytest`: https://github.com/simonw/datasette/blob/503a5b7b4080a26ef9ceb1ecd1a4a6f4ef4ffc59/tests/test_csv.py#L83-L96", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 732685643, "label": ".csv should link to .blob downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/1061#issuecomment-719049115", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1061", "id": 719049115, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTA0OTExNQ==", "user": {"value": 22429695, "label": "codecov[bot]"}, "created_at": "2020-10-29T22:00:57Z", "updated_at": "2020-10-29T22:00:57Z", "author_association": "NONE", "body": "# [Codecov](https://codecov.io/gh/simonw/datasette/pull/1061?src=pr&el=h1) Report\n> Merging [#1061](https://codecov.io/gh/simonw/datasette/pull/1061?src=pr&el=desc) into [main](https://codecov.io/gh/simonw/datasette/commit/d6f9ff71378c4eab34dad181c23cfc143a4aef2d?el=desc) will **increase** coverage by `0.07%`.\n> The diff coverage is `96.87%`.\n\n[![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1061/graphs/tree.svg?width=650&height=150&src=pr&token=eSahVY7kw1)](https://codecov.io/gh/simonw/datasette/pull/1061?src=pr&el=tree)\n\n```diff\n@@ Coverage Diff @@\n## main #1061 +/- ##\n==========================================\n+ Coverage 91.13% 91.20% +0.07% \n==========================================\n Files 27 28 +1 \n Lines 3677 3697 +20 \n==========================================\n+ Hits 3351 3372 +21 \n+ Misses 326 325 -1 \n```\n\n\n| [Impacted Files](https://codecov.io/gh/simonw/datasette/pull/1061?src=pr&el=tree) | Coverage \u0394 | |\n|---|---|---|\n| [datasette/plugins.py](https://codecov.io/gh/simonw/datasette/pull/1061/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3BsdWdpbnMucHk=) | `82.35% <\u00f8> (\u00f8)` | |\n| [datasette/views/base.py](https://codecov.io/gh/simonw/datasette/pull/1061/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3ZpZXdzL2Jhc2UucHk=) | `93.77% <0.00%> (\u00f8)` | |\n| [datasette/app.py](https://codecov.io/gh/simonw/datasette/pull/1061/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL2FwcC5weQ==) | `96.38% <100.00%> (+0.15%)` | :arrow_up: |\n| [datasette/blob\\_renderer.py](https://codecov.io/gh/simonw/datasette/pull/1061/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL2Jsb2JfcmVuZGVyZXIucHk=) | `100.00% <100.00%> (\u00f8)` | |\n| [datasette/utils/asgi.py](https://codecov.io/gh/simonw/datasette/pull/1061/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3V0aWxzL2FzZ2kucHk=) | `92.13% <100.00%> (+0.17%)` | :arrow_up: |\n| [datasette/views/database.py](https://codecov.io/gh/simonw/datasette/pull/1061/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3ZpZXdzL2RhdGFiYXNlLnB5) | `97.04% <100.00%> (+0.07%)` | :arrow_up: |\n| [datasette/views/table.py](https://codecov.io/gh/simonw/datasette/pull/1061/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3ZpZXdzL3RhYmxlLnB5) | `95.86% <100.00%> (-0.22%)` | :arrow_down: |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1061?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `\u0394 = absolute (impact)`, `\u00f8 = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/simonw/datasette/pull/1061?src=pr&el=footer). Last update [d6f9ff7...1196d08](https://codecov.io/gh/simonw/datasette/pull/1061?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 732634375, "label": ".blob output renderer"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1063#issuecomment-719050390", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1063", "id": 719050390, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTA1MDM5MA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T22:04:00Z", "updated_at": "2020-10-29T22:04:00Z", "author_association": "OWNER", "body": "This will close #1034.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 732685643, "label": ".csv should link to .blob downloads"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1034#issuecomment-719050754", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1034", "id": 719050754, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTA1MDc1NA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T22:04:52Z", "updated_at": "2020-10-29T22:04:52Z", "author_association": "OWNER", "body": "I'm going to link to. the new `.blob` representation using the new `?_blob_hash=xxx` argument to ensure that the content served is the expected binary blob.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 725184645, "label": "Better way of representing binary data in .csv output"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1051#issuecomment-719053669", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1051", "id": 719053669, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTA1MzY2OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T22:12:16Z", "updated_at": "2020-10-29T22:12:16Z", "author_association": "OWNER", "body": "https://latest.datasette.io/fixtures?sql=select+rowid%2C+data+from+binary_data+order+by+rowid+limit+101 now looks like this:\r\n\r\n\"fixtures__select_rowid__data_from_binary_data_order_by_rowid_limit_101_and_understanding_Google_auths_-_for_your_information\"\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 729096595, "label": "Better display of binary data on arbitrary query results page"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/1063#issuecomment-719066706", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1063", "id": 719066706, "node_id": "MDEyOklzc3VlQ29tbWVudDcxOTA2NjcwNg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-10-29T22:46:28Z", "updated_at": "2020-10-29T22:46:28Z", "author_association": "OWNER", "body": "I'm not going to do the base64 thing unless someone asks for it.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 732685643, "label": ".csv should link to .blob downloads"}, "performed_via_github_app": null}