issue_comments
27 rows where author_association = "OWNER" and "updated_at" is on date 2019-06-23 sorted by updated_at descending
This data as json, CSV (advanced)
Suggested facets: updated_at (date)
user 1
- simonw 27
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
504798977 | https://github.com/simonw/datasette/pull/518#issuecomment-504798977 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc5ODk3Nw== | simonw 9599 | 2019-06-23T23:52:38Z | 2019-06-23T23:52:38Z | OWNER | Last thing is to replace
Implementations here: https://github.com/huge-success/sanic/blob/0.7.0/sanic/response.py#L175-L285 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504795648 | https://github.com/simonw/datasette/pull/518#issuecomment-504795648 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc5NTY0OA== | simonw 9599 | 2019-06-23T23:07:06Z | 2019-06-23T23:07:06Z | OWNER | For the request object.... what are the fields of it I actually use?
ALL of those are things that can be derived from the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504793988 | https://github.com/simonw/datasette/issues/498#issuecomment-504793988 | https://api.github.com/repos/simonw/datasette/issues/498 | MDEyOklzc3VlQ29tbWVudDUwNDc5Mzk4OA== | simonw 9599 | 2019-06-23T22:40:25Z | 2019-06-23T22:41:25Z | OWNER | You can use a database query against
You could then construct a crafty UNION query to get results back from all of those tables at once: (I'm searching for The problem, as discussed earlier, is relevance: there's no way to compare the scores you're getting across different tables, so you won't be able to order by anything. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Full text search of all tables at once? 451513541 | |
504793379 | https://github.com/simonw/datasette/issues/514#issuecomment-504793379 | https://api.github.com/repos/simonw/datasette/issues/514 | MDEyOklzc3VlQ29tbWVudDUwNDc5MzM3OQ== | simonw 9599 | 2019-06-23T22:31:29Z | 2019-06-23T22:31:48Z | OWNER | I suggest trying a full path in
That should eliminate the chance of some kind of path confusion. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation with recommendations on running Datasette in production without using Docker 459397625 | |
504791053 | https://github.com/simonw/datasette/pull/518#issuecomment-504791053 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc5MTA1Mw== | simonw 9599 | 2019-06-23T22:00:56Z | 2019-06-23T22:00:56Z | OWNER | The I'm going to replace it with specific handling for HEAD requests plus a unit test. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504790825 | https://github.com/simonw/datasette/pull/518#issuecomment-504790825 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc5MDgyNQ== | simonw 9599 | 2019-06-23T21:57:58Z | 2019-06-23T21:57:58Z | OWNER | The big one: Replace Sanic request and response objects with my own classes, so I can remove Sanic dependency |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504782618 | https://github.com/simonw/datasette/pull/518#issuecomment-504782618 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc4MjYxOA== | simonw 9599 | 2019-06-23T20:05:44Z | 2019-06-23T20:05:59Z | OWNER | Replacement for @app.listener("before_server_start") - this is what the ASGI lifespan protocol is for. I know Uvicorn supports this because it keeps saying I think the solution here will be to introduce another ASGI wrapper class similar to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504772599 | https://github.com/simonw/datasette/issues/520#issuecomment-504772599 | https://api.github.com/repos/simonw/datasette/issues/520 | MDEyOklzc3VlQ29tbWVudDUwNDc3MjU5OQ== | simonw 9599 | 2019-06-23T17:44:36Z | 2019-06-23T17:44:36Z | OWNER | These plugins will need access to configuration and the ability to execute SQL - which means we need to make the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
asgi_wrapper plugin hook 459598080 | |
504768147 | https://github.com/simonw/datasette/issues/516#issuecomment-504768147 | https://api.github.com/repos/simonw/datasette/issues/516 | MDEyOklzc3VlQ29tbWVudDUwNDc2ODE0Nw== | simonw 9599 | 2019-06-23T16:43:23Z | 2019-06-23T16:43:23Z | OWNER | The Starlette lint and test scripts do this, and also apply autoflake to remove any unnecessary imports: https://github.com/encode/starlette/tree/8c8cc2ec0a5cb834a9a15b871ae8b480503abb67/scripts |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Enforce import sort order with isort 459509126 | |
504765738 | https://github.com/simonw/datasette/pull/518#issuecomment-504765738 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc2NTczOA== | simonw 9599 | 2019-06-23T16:11:49Z | 2019-06-23T16:20:44Z | OWNER | OK, for Get ?_trace=1 working again. The old code lives in two places: And then: So it's stashing something on the request to tell the rest of the code it should be tracing, then using that collected data from the request to add information to the final body. One possible shape for the replacement is a new ASGI middleware that wraps everything else. We don't have a mutable request object here though, so we will need to untangle this entirely from the request object. Also tricky is that in ASGI land we handle streams - we don't usually wait around for the entire response body to be compiled for us. This means the code that modifies the response (adding to the JSON or appending inside the As usual, Starlette seems to have figured this out: https://github.com/encode/starlette/blob/8c8cc2ec0a5cb834a9a15b871ae8b480503abb67/starlette/middleware/gzip.py |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504765145 | https://github.com/simonw/datasette/pull/518#issuecomment-504765145 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc2NTE0NQ== | simonw 9599 | 2019-06-23T16:04:37Z | 2019-06-23T16:04:37Z | OWNER | Another bug: JSON is being served without a content-type header: ``` ~ $ curl -i 'http://127.0.0.1:8001/fivethirtyeight/ahca-polls%2Fahca_polls.json' HTTP/1.1 200 OK date: Sun, 23 Jun 2019 16:04:01 GMT server: uvicorn referrer-policy: no-referrer transfer-encoding: chunked {"database": "fivethirtyeight", "table": "ahca-polls/ahca_polls", ... ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504765018 | https://github.com/simonw/datasette/pull/518#issuecomment-504765018 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc2NTAxOA== | simonw 9599 | 2019-06-23T16:03:20Z | 2019-06-23T16:03:20Z | OWNER | Weird new bug: http://127.0.0.1:8001/fixtures/table%2Fwith%2Fslashes.csv?_format=json is downloading CSV for me now. https://latest.datasette.io/fixtures/table%2Fwith%2Fslashes.csv?_format=json does the right thing. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504763919 | https://github.com/simonw/datasette/issues/498#issuecomment-504763919 | https://api.github.com/repos/simonw/datasette/issues/498 | MDEyOklzc3VlQ29tbWVudDUwNDc2MzkxOQ== | simonw 9599 | 2019-06-23T15:50:49Z | 2019-06-23T15:50:49Z | OWNER | One interesting way to approach this could be to do it entirely in JavaScript. I've had a lot of success building small apps on top of Datasette's JavaScript API - I wrote up one example here: https://24ways.org/2018/fast-autocomplete-search-for-your-website/ Once #272 is done I'll be adding a plugin hook that allows plugins to define entirely new pages within the Datasette application, which may also be a good way to work on this. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Full text search of all tables at once? 451513541 | |
504762887 | https://github.com/simonw/datasette/pull/518#issuecomment-504762887 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc2Mjg4Nw== | simonw 9599 | 2019-06-23T15:38:58Z | 2019-06-23T15:38:58Z | OWNER | Mystery solved: that's because I'm constructing my own scope object and testing via I don't want to introduce the complexity of launching a real Uvicorn as part of the tests, so I guess I'll have to carefully update my |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504762769 | https://github.com/simonw/datasette/pull/518#issuecomment-504762769 | https://api.github.com/repos/simonw/datasette/issues/518 | MDEyOklzc3VlQ29tbWVudDUwNDc2Mjc2OQ== | simonw 9599 | 2019-06-23T15:37:26Z | 2019-06-23T15:37:26Z | OWNER | This is strange: on my local machine |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette from Sanic to ASGI + Uvicorn 459587155 | |
504761039 | https://github.com/simonw/datasette/issues/272#issuecomment-504761039 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDc2MTAzOQ== | simonw 9599 | 2019-06-23T15:15:41Z | 2019-06-23T15:18:36Z | OWNER | And now the tests are all passing! Still to do:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 | |
504761165 | https://github.com/simonw/datasette/issues/272#issuecomment-504761165 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDc2MTE2NQ== | simonw 9599 | 2019-06-23T15:17:07Z | 2019-06-23T15:17:07Z | OWNER | I'm going to move the remaining work into a pull request. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 | |
504716988 | https://github.com/simonw/datasette/issues/272#issuecomment-504716988 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDcxNjk4OA== | simonw 9599 | 2019-06-23T03:43:46Z | 2019-06-23T15:15:26Z | OWNER | OK, it's beginning to shape up now. Next steps:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 | |
504760061 | https://github.com/simonw/datasette/issues/272#issuecomment-504760061 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDc2MDA2MQ== | simonw 9599 | 2019-06-23T15:02:52Z | 2019-06-23T15:02:52Z | OWNER | Tests are failing on Python 3.5: https://travis-ci.org/simonw/datasette/jobs/549380098 - error is |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 | |
504759842 | https://github.com/simonw/datasette/issues/272#issuecomment-504759842 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDc1OTg0Mg== | simonw 9599 | 2019-06-23T15:00:06Z | 2019-06-23T15:00:06Z | OWNER | I also need to actually take advantage of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 | |
504759683 | https://github.com/simonw/datasette/issues/272#issuecomment-504759683 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDc1OTY4Mw== | simonw 9599 | 2019-06-23T14:57:50Z | 2019-06-23T14:57:50Z | OWNER | All of the tests are now passing! I still need a solution for this: I think the answer is ASGI lifespan, which is supported by Uvicorn. https://asgi.readthedocs.io/en/latest/specs/lifespan.html#startup |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 | |
504754552 | https://github.com/simonw/datasette/issues/272#issuecomment-504754552 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDc1NDU1Mg== | simonw 9599 | 2019-06-23T13:53:39Z | 2019-06-23T13:53:39Z | OWNER | Next test to fix (because by new test harness doesn't actually obey the app_client_with_hash = <tests.fixtures.TestClient object at 0x10981f240>
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 | |
504754433 | https://github.com/simonw/datasette/issues/272#issuecomment-504754433 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDc1NDQzMw== | simonw 9599 | 2019-06-23T13:51:53Z | 2019-06-23T13:51:53Z | OWNER | CSV tests all pass as of https://github.com/simonw/datasette/commit/ff9efa668ebc33f17ef9b30139960e29906a18fb This code could be a lot neater though. At the very least I'm going to refactor The way I implemented streaming on top of a writer object (inspired by Sanic) is a bit of a weird hack. I think I'd rather use an abstraction where my view functions can yield chunks of body data. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 | |
504720379 | https://github.com/simonw/datasette/issues/226#issuecomment-504720379 | https://api.github.com/repos/simonw/datasette/issues/226 | MDEyOklzc3VlQ29tbWVudDUwNDcyMDM3OQ== | simonw 9599 | 2019-06-23T05:05:32Z | 2019-06-23T05:05:32Z | OWNER | The mechanism I described here - having a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Unit tests for installable plugins 315738696 | |
504720326 | https://github.com/simonw/datasette/issues/517#issuecomment-504720326 | https://api.github.com/repos/simonw/datasette/issues/517 | MDEyOklzc3VlQ29tbWVudDUwNDcyMDMyNg== | simonw 9599 | 2019-06-23T05:04:26Z | 2019-06-23T05:04:42Z | OWNER | See also #226 - "Unit tests for installable plugins" |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add unit test for "static" mechanism in plugins 459537047 | |
504711468 | https://github.com/simonw/datasette/issues/272#issuecomment-504711468 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDcxMTQ2OA== | simonw 9599 | 2019-06-23T01:36:33Z | 2019-06-23T01:36:33Z | OWNER | Published an in-progress demo:
Here it is: https://datasette-asgi-early-demo-qahhxctqpw.now.sh/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 | |
504710331 | https://github.com/simonw/datasette/issues/272#issuecomment-504710331 | https://api.github.com/repos/simonw/datasette/issues/272 | MDEyOklzc3VlQ29tbWVudDUwNDcxMDMzMQ== | simonw 9599 | 2019-06-23T01:08:45Z | 2019-06-23T01:08:45Z | OWNER | Lots still to do:
I'm going to work on getting the unit test framework to be ASGI-compatible next. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Port Datasette to ASGI 324188953 |
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]);
issue 8