issue_comments
10,495 rows sorted by updated_at descending
This data as json, CSV (advanced)
issue >30
- Port Datasette to ASGI 42
- Authentication (and permissions) as a core concept 40
- await datasette.client.get(path) mechanism for executing internal requests 33
- Ability to sort (and paginate) by column 31
- link_or_copy_directory() error - Invalid cross-device link 28
- Export to CSV 27
- base_url configuration setting 27
- Documentation with recommendations on running Datasette in production without using Docker 27
- Ability for a canned query to write to the database 26
- table.transform() method for advanced alter table 26
- Proof of concept for Datasette on AWS Lambda with EFS 25
- Redesign register_output_renderer callback 24
- Datasette Plugins 22
- table.extract(...) method and "sqlite-utils extract" command 21
- "flash messages" mechanism 20
- Move CI to GitHub Issues 20
- Handle spatialite geometry columns better 19
- Ability to ship alpha and beta releases 18
- Magic parameters for canned queries 18
- datasette.client internal requests mechanism 18
- Facets 16
- Support "allow" block on root, databases and tables, not just queries 16
- Database page loads too slowly with many large tables (due to table counts) 16
- Action menu for table columns 16
- Bug: Sort by column with NULL in next_page URL 15
- Support cross-database joins 15
- The ".upsert()" method is misnamed 15
- --dirs option for scanning directories for SQLite databases 15
- Document (and reconsider design of) Database.execute() and Database.execute_against_connection_in_thread() 15
- latest.datasette.io is no longer updating 15
- …
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
706776180 | https://github.com/dogsheep/evernote-to-sqlite/issues/5#issuecomment-706776180 | https://api.github.com/repos/dogsheep/evernote-to-sqlite/issues/5 | MDEyOklzc3VlQ29tbWVudDcwNjc3NjE4MA== | simonw 9599 | 2020-10-11T22:17:55Z | 2020-10-11T22:17:55Z | MEMBER | We could even do server-side thumbnailing for some of these images, but I'm inclined to serve up the full size ones and set a width on the image element based on the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Figure out how to display images from <en-media> tags inline in Datasette 718938889 | |
706775706 | https://github.com/dogsheep/evernote-to-sqlite/issues/1#issuecomment-706775706 | https://api.github.com/repos/dogsheep/evernote-to-sqlite/issues/1 | MDEyOklzc3VlQ29tbWVudDcwNjc3NTcwNg== | simonw 9599 | 2020-10-11T22:14:00Z | 2020-10-11T22:14:00Z | MEMBER | A live demo would be good too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation on how to use this with Datasette 718934942 | |
706756879 | https://github.com/simonw/datasette/issues/1015#issuecomment-706756879 | https://api.github.com/repos/simonw/datasette/issues/1015 | MDEyOklzc3VlQ29tbWVudDcwNjc1Njg3OQ== | simonw 9599 | 2020-10-11T19:35:03Z | 2020-10-11T19:35:03Z | OWNER | Since plugins are installed via pip this would require Datasette to be restarted. This StackOverflow thread looks relevant to that: https://stackoverflow.com/questions/11329917/restart-python-script-from-within-itself This recipe looks promising: ```python import os import sys import psutil import logging def restart_program(): """Restarts the current program, with file objects and descriptors cleanup """
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Research: could Datasette install its own plugins? 718910318 | |
706745236 | https://github.com/simonw/datasette/issues/782#issuecomment-706745236 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDcwNjc0NTIzNg== | simonw 9599 | 2020-10-11T18:16:05Z | 2020-10-11T18:16:05Z | OWNER | Here's the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
706740250 | https://github.com/simonw/datasette/issues/782#issuecomment-706740250 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDcwNjc0MDI1MA== | simonw 9599 | 2020-10-11T17:40:48Z | 2020-10-11T17:43:07Z | OWNER | Building this plugin reminded me of an oddity of the That's not ideal. I'd like custom renderers to be able to access this data to get at things like suggested facets, on an opt-in basis. So maybe that kind of stuff is re-implemented as "extras" which are awaitable callables - then renderer plugins can call the extras that they need to as part of their execution. To illustrate the problem (in this case the need to access @hookimpl def register_output_renderer(datasette): return { "extension": "json-preview", "render": json_preview, } def json_preview(data, columns, rows): next_url = data.get("next_url") headers = {} if next_url: headers["link"] = '<{}>; rel="next"'.format(next_url) return Response.json([dict(zip(columns, row)) for row in rows], headers=headers) ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
706738020 | https://github.com/simonw/datasette/issues/782#issuecomment-706738020 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDcwNjczODAyMA== | simonw 9599 | 2020-10-11T17:23:18Z | 2020-10-11T17:23:48Z | OWNER | I'm going to prototype what it would look like if the default shape was a list of objects and |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
706735341 | https://github.com/simonw/datasette/issues/782#issuecomment-706735341 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDcwNjczNTM0MQ== | simonw 9599 | 2020-10-11T17:03:29Z | 2020-10-11T17:15:34Z | OWNER | Maybe Or... |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
706735200 | https://github.com/simonw/datasette/issues/782#issuecomment-706735200 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDcwNjczNTIwMA== | simonw 9599 | 2020-10-11T17:02:11Z | 2020-10-11T17:14:51Z | OWNER | Since the total count can be expensive to calculate, I'm inclined to make that an opt-in extra - maybe Based on that, the default JSON shape could look something like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
706736541 | https://github.com/simonw/datasette/issues/782#issuecomment-706736541 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDcwNjczNjU0MQ== | simonw 9599 | 2020-10-11T17:12:27Z | 2020-10-11T17:12:27Z | OWNER | The core issue that I keep reconsidering is whether the default Arguments in favour of a list:
Arguments against:
But maybe that last point is a positive? It ensures the default If Maybe
The thing I care about most though is
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
706735280 | https://github.com/simonw/datasette/issues/782#issuecomment-706735280 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDcwNjczNTI4MA== | simonw 9599 | 2020-10-11T17:03:01Z | 2020-10-11T17:03:01Z | OWNER | Should that default also include |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
706631006 | https://github.com/simonw/datasette/issues/1014#issuecomment-706631006 | https://api.github.com/repos/simonw/datasette/issues/1014 | MDEyOklzc3VlQ29tbWVudDcwNjYzMTAwNg== | simonw 9599 | 2020-10-11T00:36:43Z | 2020-10-11T00:36:43Z | OWNER | Demo using paginate-json:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add Link: pagination HTTP headers 718723543 | |
706627035 | https://github.com/simonw/datasette/issues/1014#issuecomment-706627035 | https://api.github.com/repos/simonw/datasette/issues/1014 | MDEyOklzc3VlQ29tbWVudDcwNjYyNzAzNQ== | simonw 9599 | 2020-10-10T23:50:40Z | 2020-10-10T23:50:40Z | OWNER | First example page to add this to: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add Link: pagination HTTP headers 718723543 | |
706626971 | https://github.com/simonw/datasette/issues/1014#issuecomment-706626971 | https://api.github.com/repos/simonw/datasette/issues/1014 | MDEyOklzc3VlQ29tbWVudDcwNjYyNjk3MQ== | simonw 9599 | 2020-10-10T23:49:57Z | 2020-10-10T23:49:57Z | OWNER | I won't offer a total-number header. That's expensive to calculate - no need to calculate it unless it's explicitly asked for. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add Link: pagination HTTP headers 718723543 | |
706626934 | https://github.com/simonw/datasette/issues/1014#issuecomment-706626934 | https://api.github.com/repos/simonw/datasette/issues/1014 | MDEyOklzc3VlQ29tbWVudDcwNjYyNjkzNA== | simonw 9599 | 2020-10-10T23:49:25Z | 2020-10-10T23:49:25Z | OWNER | I'm just going to implement the 'next' one. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add Link: pagination HTTP headers 718723543 | |
706626913 | https://github.com/simonw/datasette/issues/1014#issuecomment-706626913 | https://api.github.com/repos/simonw/datasette/issues/1014 | MDEyOklzc3VlQ29tbWVudDcwNjYyNjkxMw== | simonw 9599 | 2020-10-10T23:49:08Z | 2020-10-10T23:49:08Z | OWNER | This should be documented on https://docs.datasette.io/en/stable/json_api.html |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add Link: pagination HTTP headers 718723543 | |
706626796 | https://github.com/simonw/datasette/issues/1014#issuecomment-706626796 | https://api.github.com/repos/simonw/datasette/issues/1014 | MDEyOklzc3VlQ29tbWVudDcwNjYyNjc5Ng== | simonw 9599 | 2020-10-10T23:47:23Z | 2020-10-10T23:48:26Z | OWNER | The GitHub API has these:
WordPress API: https://css-tricks.com/wp-json/wp/v2/posts
It also has these:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add Link: pagination HTTP headers 718723543 | |
706483680 | https://github.com/simonw/datasette/issues/1011#issuecomment-706483680 | https://api.github.com/repos/simonw/datasette/issues/1011 | MDEyOklzc3VlQ29tbWVudDcwNjQ4MzY4MA== | simonw 9599 | 2020-10-10T04:09:32Z | 2020-10-10T04:09:32Z | OWNER | OK, Datasette 0.50.2 is live on PyPI now. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
column name links broken in 0.50.1 718521469 | |
706482542 | https://github.com/simonw/datasette/issues/1011#issuecomment-706482542 | https://api.github.com/repos/simonw/datasette/issues/1011 | MDEyOklzc3VlQ29tbWVudDcwNjQ4MjU0Mg== | simonw 9599 | 2020-10-10T03:58:58Z | 2020-10-10T03:58:58Z | OWNER | The fix is live on the demo: https://latest.datasette.io/fixtures/compound_three_primary_keys?_sort_desc=pk2 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
column name links broken in 0.50.1 718521469 | |
706480791 | https://github.com/simonw/datasette/issues/1011#issuecomment-706480791 | https://api.github.com/repos/simonw/datasette/issues/1011 | MDEyOklzc3VlQ29tbWVudDcwNjQ4MDc5MQ== | simonw 9599 | 2020-10-10T03:43:13Z | 2020-10-10T03:43:13Z | OWNER | Demo: click column headers on https://latest.datasette.io/fixtures/compound_three_primary_keys |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
column name links broken in 0.50.1 718521469 | |
706480763 | https://github.com/simonw/datasette/issues/1011#issuecomment-706480763 | https://api.github.com/repos/simonw/datasette/issues/1011 | MDEyOklzc3VlQ29tbWVudDcwNjQ4MDc2Mw== | simonw 9599 | 2020-10-10T03:42:58Z | 2020-10-10T03:42:58Z | OWNER | Oh no! It's the same bug as #1010. Thanks for the report, I shall push out 0.50.2 as quickly as possible. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
column name links broken in 0.50.1 718521469 | |
706473306 | https://github.com/simonw/datasette/issues/1005#issuecomment-706473306 | https://api.github.com/repos/simonw/datasette/issues/1005 | MDEyOklzc3VlQ29tbWVudDcwNjQ3MzMwNg== | simonw 9599 | 2020-10-10T02:45:46Z | 2020-10-10T02:45:46Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Remove xfail tests when new httpx is released 718259202 | ||
706455505 | https://github.com/simonw/datasette/issues/1010#issuecomment-706455505 | https://api.github.com/repos/simonw/datasette/issues/1010 | MDEyOklzc3VlQ29tbWVudDcwNjQ1NTUwNQ== | simonw 9599 | 2020-10-10T00:35:41Z | 2020-10-10T00:35:41Z | OWNER | I missed the links on the query page: https://latest.datasette.io/fixtures?sql=select+pk1%2C+pk2%2C+pk3%2C+content+from+compound_three_primary_keys+order+by+pk1%2C+pk2%2C+pk3+limit+101 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
json / CSV links are broken in Datasette 0.50 718484082 | |
706455202 | https://github.com/simonw/datasette/issues/1010#issuecomment-706455202 | https://api.github.com/repos/simonw/datasette/issues/1010 | MDEyOklzc3VlQ29tbWVudDcwNjQ1NTIwMg== | simonw 9599 | 2020-10-10T00:33:46Z | 2020-10-10T00:33:46Z | OWNER | Since this is an urgent fix that needs to go out I've marked the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
json / CSV links are broken in Datasette 0.50 718484082 | |
706450418 | https://github.com/simonw/datasette/issues/1010#issuecomment-706450418 | https://api.github.com/repos/simonw/datasette/issues/1010 | MDEyOklzc3VlQ29tbWVudDcwNjQ1MDQxOA== | simonw 9599 | 2020-10-10T00:08:27Z | 2020-10-10T00:09:13Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
json / CSV links are broken in Datasette 0.50 718484082 | ||
706413753 | https://github.com/simonw/datasette/issues/983#issuecomment-706413753 | https://api.github.com/repos/simonw/datasette/issues/983 | MDEyOklzc3VlQ29tbWVudDcwNjQxMzc1Mw== | yozlet 173848 | 2020-10-09T21:41:12Z | 2020-10-09T21:41:12Z | NONE | If you don't mind a somewhat bonkers idea: how about a JS client-side plugin capability that allows any user looking at a Datasette site to pull in external plugins for data manipulation, even if the Datasette owner hasn't added them? (Yes, this may be much too ambitious. If you're remotely interested, maybe fork this discussion to a different issue.) This is some fascinating reading about what JS sandboxing looks like these days: https://www.figma.com/blog/how-we-built-the-figma-plugin-system/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
JavaScript plugin hooks mechanism similar to pluggy 712260429 | |
706383750 | https://github.com/simonw/datasette/pull/1008#issuecomment-706383750 | https://api.github.com/repos/simonw/datasette/issues/1008 | MDEyOklzc3VlQ29tbWVudDcwNjM4Mzc1MA== | codecov[bot] 22429695 | 2020-10-09T20:17:29Z | 2020-10-09T20:17:29Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1008 +/-=======================================
Coverage 84.55% 84.56% | Impacted Files | Coverage Δ | |
|---|---|---|
| datasette/app.py | Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add json_loads and json_dumps jinja2 filters 718395987 | |
706306214 | https://github.com/simonw/datasette/issues/1002#issuecomment-706306214 | https://api.github.com/repos/simonw/datasette/issues/1002 | MDEyOklzc3VlQ29tbWVudDcwNjMwNjIxNA== | simonw 9599 | 2020-10-09T17:23:51Z | 2020-10-09T17:23:51Z | OWNER | I can start by combining the release notes for the 0.50 alphas. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Release notes for Datasette 0.50 717783692 | |
706305784 | https://github.com/simonw/datasette/issues/943#issuecomment-706305784 | https://api.github.com/repos/simonw/datasette/issues/943 | MDEyOklzc3VlQ29tbWVudDcwNjMwNTc4NA== | simonw 9599 | 2020-10-09T17:22:55Z | 2020-10-09T17:22:55Z | OWNER | Documentation (from #1006): https://docs.datasette.io/en/latest/internals.html#client |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
await datasette.client.get(path) mechanism for executing internal requests 681375466 | |
706305601 | https://github.com/simonw/datasette/issues/1006#issuecomment-706305601 | https://api.github.com/repos/simonw/datasette/issues/1006 | MDEyOklzc3VlQ29tbWVudDcwNjMwNTYwMQ== | simonw 9599 | 2020-10-09T17:22:31Z | 2020-10-09T17:22:31Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation for datasette.client 718264811 | ||
706302863 | https://github.com/simonw/datasette/issues/1003#issuecomment-706302863 | https://api.github.com/repos/simonw/datasette/issues/1003 | MDEyOklzc3VlQ29tbWVudDcwNjMwMjg2Mw== | mhalle 649467 | 2020-10-09T17:17:06Z | 2020-10-09T17:17:06Z | NONE | I agree on the descriptive and python-consistent naming. There is already a tojson, but frankly i find the "to" and "from" confusing in a text templating language where what's a string and what's data isn't 100% transparent. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
from_json jinja2 filter 718238967 | |
706281451 | https://github.com/simonw/datasette/issues/1003#issuecomment-706281451 | https://api.github.com/repos/simonw/datasette/issues/1003 | MDEyOklzc3VlQ29tbWVudDcwNjI4MTQ1MQ== | simonw 9599 | 2020-10-09T16:33:01Z | 2020-10-09T16:33:01Z | OWNER | I think |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
from_json jinja2 filter 718238967 | |
706276831 | https://github.com/simonw/datasette/issues/1007#issuecomment-706276831 | https://api.github.com/repos/simonw/datasette/issues/1007 | MDEyOklzc3VlQ29tbWVudDcwNjI3NjgzMQ== | simonw 9599 | 2020-10-09T16:23:51Z | 2020-10-09T16:23:51Z | OWNER | I don't appear to be using these anywhere, not sure why I spotted a warning (which I now can't find). |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
set-env and add-path commands have been deprecated 718272593 | |
703878831 | https://github.com/simonw/datasette/pull/994#issuecomment-703878831 | https://api.github.com/repos/simonw/datasette/issues/994 | MDEyOklzc3VlQ29tbWVudDcwMzg3ODgzMQ== | codecov[bot] 22429695 | 2020-10-05T20:45:39Z | 2020-10-09T16:18:24Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #994 +/-==========================================
+ Coverage 84.28% 84.55% +0.26% | Impacted Files | Coverage Δ | |
|---|---|---|
| datasette/utils/testing.py | Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Run tests against Python 3.9 715146588 | |
706273211 | https://github.com/simonw/datasette/issues/1003#issuecomment-706273211 | https://api.github.com/repos/simonw/datasette/issues/1003 | MDEyOklzc3VlQ29tbWVudDcwNjI3MzIxMQ== | simonw 9599 | 2020-10-09T16:16:38Z | 2020-10-09T16:16:38Z | OWNER | I'm not a huge fan of
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
from_json jinja2 filter 718238967 | |
706272322 | https://github.com/simonw/datasette/issues/1003#issuecomment-706272322 | https://api.github.com/repos/simonw/datasette/issues/1003 | MDEyOklzc3VlQ29tbWVudDcwNjI3MjMyMg== | simonw 9599 | 2020-10-09T16:14:56Z | 2020-10-09T16:14:56Z | OWNER | Yes I think that makes sense. I added |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
from_json jinja2 filter 718238967 | |
706270877 | https://github.com/simonw/datasette/issues/1006#issuecomment-706270877 | https://api.github.com/repos/simonw/datasette/issues/1006 | MDEyOklzc3VlQ29tbWVudDcwNjI3MDg3Nw== | simonw 9599 | 2020-10-09T16:12:09Z | 2020-10-09T16:12:09Z | OWNER | This can become a section on https://docs.datasette.io/en/stable/internals.html |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation for datasette.client 718264811 | |
706269271 | https://github.com/simonw/datasette/pull/1000#issuecomment-706269271 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNjI2OTI3MQ== | simonw 9599 | 2020-10-09T16:08:49Z | 2020-10-09T16:08:49Z | OWNER | I'm going to document this in a separate issue. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705890365 | https://github.com/simonw/datasette/pull/1000#issuecomment-705890365 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTg5MDM2NQ== | codecov[bot] 22429695 | 2020-10-09T00:03:29Z | 2020-10-09T16:07:03Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #1000 +/-==========================================
+ Coverage 84.37% 84.52% +0.15% | Impacted Files | Coverage Δ | |
|---|---|---|
| datasette/app.py | Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
706263157 | https://github.com/simonw/datasette/pull/1000#issuecomment-706263157 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNjI2MzE1Nw== | simonw 9599 | 2020-10-09T15:57:15Z | 2020-10-09T15:57:15Z | OWNER | My I'm going to mark these tests as |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705946360 | https://github.com/simonw/datasette/pull/1000#issuecomment-705946360 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTk0NjM2MA== | simonw 9599 | 2020-10-09T03:28:08Z | 2020-10-09T03:28:08Z | OWNER | Here's where
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705946120 | https://github.com/simonw/datasette/pull/1000#issuecomment-705946120 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTk0NjEyMA== | simonw 9599 | 2020-10-09T03:27:05Z | 2020-10-09T03:27:05Z | OWNER | I may need to fuss around with how the https://github.com/encode/httpx/blob/92ca4d0cc654859fc2257c492e55d8752370d427/httpx/_transports/asgi.py#L26 is relevant:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705945591 | https://github.com/simonw/datasette/pull/1000#issuecomment-705945591 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTk0NTU5MQ== | simonw 9599 | 2020-10-09T03:24:48Z | 2020-10-09T03:24:48Z | OWNER | I'm testing this with a Against the
Against the broken branch:
This is on my laptop though so both of those pass the tests. Key difference: the The non-httpx version sets |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705941580 | https://github.com/simonw/datasette/pull/1000#issuecomment-705941580 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTk0MTU4MA== | simonw 9599 | 2020-10-09T03:08:43Z | 2020-10-09T03:08:43Z | OWNER | Most likely reason for those failures is that But now I'm delegating that to WEIRD that it passes on my laptop but fails in GitHub Actions CI though. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705940507 | https://github.com/simonw/datasette/pull/1000#issuecomment-705940507 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTk0MDUwNw== | simonw 9599 | 2020-10-09T03:04:15Z | 2020-10-09T03:04:15Z | OWNER | This is really weird: new set of test failures that I wasn't seeing before, and those tests aren't failing on my laptop:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705937696 | https://github.com/simonw/datasette/pull/1000#issuecomment-705937696 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTkzNzY5Ng== | simonw 9599 | 2020-10-09T02:52:53Z | 2020-10-09T02:52:53Z | OWNER | These failures are giving me a severe "how did this ever work in the first place?" vibe:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705926445 | https://github.com/simonw/datasette/pull/1000#issuecomment-705926445 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTkyNjQ0NQ== | simonw 9599 | 2020-10-09T02:15:38Z | 2020-10-09T02:15:38Z | OWNER |
That one is caused by |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705926035 | https://github.com/simonw/datasette/pull/1000#issuecomment-705926035 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTkyNjAzNQ== | simonw 9599 | 2020-10-09T02:14:14Z | 2020-10-09T02:14:14Z | OWNER | Still need to handle these six failing tests:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705921006 | https://github.com/simonw/datasette/pull/1000#issuecomment-705921006 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTkyMTAwNg== | simonw 9599 | 2020-10-09T01:55:01Z | 2020-10-09T01:55:01Z | OWNER | With the single client that is reused for all tests:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705920228 | https://github.com/simonw/datasette/pull/1000#issuecomment-705920228 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTkyMDIyOA== | simonw 9599 | 2020-10-09T01:51:44Z | 2020-10-09T01:51:44Z | OWNER | I'm going to switch back to having each request run through a new client. I'm worried about the impact on test performance though. I'll run a microbenchmark before and after. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705920055 | https://github.com/simonw/datasette/pull/1000#issuecomment-705920055 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTkyMDA1NQ== | simonw 9599 | 2020-10-09T01:51:05Z | 2020-10-09T01:51:05Z | OWNER | The topic of disabling cookie persistence is discussed a little here: https://github.com/encode/httpx/issues/422#issuecomment-537906693
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705918844 | https://github.com/simonw/datasette/pull/1000#issuecomment-705918844 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTkxODg0NA== | simonw 9599 | 2020-10-09T01:46:06Z | 2020-10-09T01:46:06Z | OWNER | For this failing test I'm suspicious that the AsyncClient may be persisting cookies in between requests: ``` def test_actor_cookie(app_client): "A valid actor cookie sets request.scope['actor']" cookie = app_client.actor_cookie({"id": "test"}) response = app_client.get("/", cookies={"ds_actor": cookie})
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705917015 | https://github.com/simonw/datasette/issues/1001#issuecomment-705917015 | https://api.github.com/repos/simonw/datasette/issues/1001 | MDEyOklzc3VlQ29tbWVudDcwNTkxNzAxNQ== | simonw 9599 | 2020-10-09T01:38:49Z | 2020-10-09T01:38:49Z | OWNER | I actually have a sensible I'm going to set the default one to return a 405 (Method Not Allowed) like Google does. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OPTIONS requests return a 500 error 717768441 | |
705916614 | https://github.com/simonw/datasette/issues/1001#issuecomment-705916614 | https://api.github.com/repos/simonw/datasette/issues/1001 | MDEyOklzc3VlQ29tbWVudDcwNTkxNjYxNA== | simonw 9599 | 2020-10-09T01:37:06Z | 2020-10-09T01:37:06Z | OWNER | I'm tempted to imitate Django Rest Framework here: https://github.com/encode/django-rest-framework/blob/2e721cdbc85a924d0b0f093b86fe1497b58fe287/rest_framework/views.py#L514-L521
Note the comment at the top:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OPTIONS requests return a 500 error 717768441 | |
705905418 | https://github.com/simonw/datasette/issues/1001#issuecomment-705905418 | https://api.github.com/repos/simonw/datasette/issues/1001 | MDEyOklzc3VlQ29tbWVudDcwNTkwNTQxOA== | simonw 9599 | 2020-10-09T01:00:54Z | 2020-10-09T01:00:54Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OPTIONS requests return a 500 error 717768441 | ||
705905121 | https://github.com/simonw/datasette/issues/1001#issuecomment-705905121 | https://api.github.com/repos/simonw/datasette/issues/1001 | MDEyOklzc3VlQ29tbWVudDcwNTkwNTEyMQ== | simonw 9599 | 2020-10-09T01:00:07Z | 2020-10-09T01:00:07Z | OWNER | The www.djangoproject.com site returns an empty page: ``` ~ % curl -vv -XOPTIONS https://www.djangoproject.com/ * Trying 151.101.42.217:443... * Connected to www.djangoproject.com (151.101.42.217) port 443 (#0) * ALPN, offering http/1.1 * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 * Server certificate: osff2.map.fastly.net * Server certificate: GlobalSign CloudSSL CA - SHA256 - G3 * Server certificate: GlobalSign Root CA
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OPTIONS requests return a 500 error 717768441 | |
705904917 | https://github.com/simonw/datasette/issues/1001#issuecomment-705904917 | https://api.github.com/repos/simonw/datasette/issues/1001 | MDEyOklzc3VlQ29tbWVudDcwNTkwNDkxNw== | simonw 9599 | 2020-10-09T00:59:25Z | 2020-10-09T00:59:25Z | OWNER | ``` ~ % curl -XOPTIONS https://www.google.com/ <html lang=en> <meta charset=utf-8> <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width"> <title>Error 405 (Method Not Allowed)!!1</title> ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OPTIONS requests return a 500 error 717768441 | |
705904759 | https://github.com/simonw/datasette/issues/1001#issuecomment-705904759 | https://api.github.com/repos/simonw/datasette/issues/1001 | MDEyOklzc3VlQ29tbWVudDcwNTkwNDc1OQ== | simonw 9599 | 2020-10-09T00:58:47Z | 2020-10-09T00:58:47Z | OWNER | What should an OPTIONS request return, anyway? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OPTIONS requests return a 500 error 717768441 | |
705904679 | https://github.com/simonw/datasette/issues/1001#issuecomment-705904679 | https://api.github.com/repos/simonw/datasette/issues/1001 | MDEyOklzc3VlQ29tbWVudDcwNTkwNDY3OQ== | simonw 9599 | 2020-10-09T00:58:32Z | 2020-10-09T00:58:32Z | OWNER | So the bug is in this code here: https://github.com/simonw/datasette/blob/703439bdc37e724b01bc6d7a1fc1d955795132f2/datasette/views/base.py#L113-L115 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OPTIONS requests return a 500 error 717768441 | |
705904566 | https://github.com/simonw/datasette/issues/1001#issuecomment-705904566 | https://api.github.com/repos/simonw/datasette/issues/1001 | MDEyOklzc3VlQ29tbWVudDcwNTkwNDU2Ng== | simonw 9599 | 2020-10-09T00:58:08Z | 2020-10-09T00:58:08Z | OWNER | To get a traceback:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
OPTIONS requests return a 500 error 717768441 | |
705902902 | https://github.com/simonw/datasette/pull/1000#issuecomment-705902902 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTkwMjkwMg== | simonw 9599 | 2020-10-09T00:50:49Z | 2020-10-09T00:50:49Z | OWNER | Almost all of the tests are passing:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705899629 | https://github.com/simonw/datasette/pull/1000#issuecomment-705899629 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTg5OTYyOQ== | simonw 9599 | 2020-10-09T00:37:02Z | 2020-10-09T00:37:02Z | OWNER | I'm going to route the existing |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705889120 | https://github.com/simonw/datasette/pull/1000#issuecomment-705889120 | https://api.github.com/repos/simonw/datasette/issues/1000 | MDEyOklzc3VlQ29tbWVudDcwNTg4OTEyMA== | simonw 9599 | 2020-10-08T23:59:01Z | 2020-10-08T23:59:01Z | OWNER | Needs tests and documentation. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette.client internal requests mechanism 717746043 | |
705887638 | https://github.com/simonw/datasette/issues/943#issuecomment-705887638 | https://api.github.com/repos/simonw/datasette/issues/943 | MDEyOklzc3VlQ29tbWVudDcwNTg4NzYzOA== | simonw 9599 | 2020-10-08T23:53:13Z | 2020-10-08T23:53:13Z | OWNER | I want this in Datasette 0.50, so I can use it in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
await datasette.client.get(path) mechanism for executing internal requests 681375466 | |
705883053 | https://github.com/simonw/datasette/issues/997#issuecomment-705883053 | https://api.github.com/repos/simonw/datasette/issues/997 | MDEyOklzc3VlQ29tbWVudDcwNTg4MzA1Mw== | simonw 9599 | 2020-10-08T23:36:55Z | 2020-10-08T23:36:55Z | OWNER | Docs are now live here: https://docs.datasette.io/en/latest/deploying.html#deploying-using-buildpacks |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation covering buildpack deployment 716988478 | |
705878827 | https://github.com/simonw/datasette/issues/514#issuecomment-705878827 | https://api.github.com/repos/simonw/datasette/issues/514 | MDEyOklzc3VlQ29tbWVudDcwNTg3ODgyNw== | simonw 9599 | 2020-10-08T23:33:05Z | 2020-10-08T23:33:05Z | OWNER | Documentation is now live at https://docs.datasette.io/en/latest/deploying.html#running-datasette-using-systemd |
{ "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 | |
705874457 | https://github.com/simonw/datasette/issues/969#issuecomment-705874457 | https://api.github.com/repos/simonw/datasette/issues/969 | MDEyOklzc3VlQ29tbWVudDcwNTg3NDQ1Nw== | simonw 9599 | 2020-10-08T23:27:30Z | 2020-10-08T23:27:30Z | OWNER | For the moment I'm going to ship this as the |
{ "total_count": 2, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 1, "eyes": 0 } |
Add --tar option to "datasette publish heroku" 705057955 | |
705874317 | https://github.com/simonw/datasette/issues/969#issuecomment-705874317 | https://api.github.com/repos/simonw/datasette/issues/969 | MDEyOklzc3VlQ29tbWVudDcwNTg3NDMxNw== | simonw 9599 | 2020-10-08T23:27:00Z | 2020-10-08T23:27:00Z | OWNER | I'm working on this now. Just ran this test and it worked (no longer showed my the warning message).
But... I wonder if it should automatically do this if it detects that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add --tar option to "datasette publish heroku" 705057955 | |
705872767 | https://github.com/simonw/datasette/issues/999#issuecomment-705872767 | https://api.github.com/repos/simonw/datasette/issues/999 | MDEyOklzc3VlQ29tbWVudDcwNTg3Mjc2Nw== | simonw 9599 | 2020-10-08T23:21:36Z | 2020-10-08T23:21:36Z | OWNER | I ran this to prove that it breaks:
https://datasette-issue-999.herokuapp.com/ returned an error, as expected - here's the relevant logs:
This time the deploy worked OK. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette should default to running Uvicorn with workers=1 717729056 | |
705871513 | https://github.com/simonw/datasette/issues/999#issuecomment-705871513 | https://api.github.com/repos/simonw/datasette/issues/999 | MDEyOklzc3VlQ29tbWVudDcwNTg3MTUxMw== | simonw 9599 | 2020-10-08T23:17:31Z | 2020-10-08T23:17:31Z | OWNER | This does mean that any deploys to Heroku will fail with an error until this code has been released in a non-alpha Datasette release (unless you use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette should default to running Uvicorn with workers=1 717729056 | |
705869129 | https://github.com/simonw/datasette/issues/999#issuecomment-705869129 | https://api.github.com/repos/simonw/datasette/issues/999 | MDEyOklzc3VlQ29tbWVudDcwNTg2OTEyOQ== | simonw 9599 | 2020-10-08T23:09:41Z | 2020-10-08T23:09:41Z | OWNER | I want to fix this now because then I don't need to document it in #997. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette should default to running Uvicorn with workers=1 717729056 | |
705851405 | https://github.com/simonw/datasette/issues/998#issuecomment-705851405 | https://api.github.com/repos/simonw/datasette/issues/998 | MDEyOklzc3VlQ29tbWVudDcwNTg1MTQwNQ== | simonw 9599 | 2020-10-08T22:14:31Z | 2020-10-08T22:14:31Z | OWNER | So maybe this is blocked on #987 and adding a new hook in the HTML which plugins like |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Wide tables should scroll horizontally within the page 717699884 | |
705851211 | https://github.com/simonw/datasette/issues/998#issuecomment-705851211 | https://api.github.com/repos/simonw/datasette/issues/998 | MDEyOklzc3VlQ29tbWVudDcwNTg1MTIxMQ== | simonw 9599 | 2020-10-08T22:14:00Z | 2020-10-08T22:14:00Z | OWNER | I tried this out and it did cause one problem with plugins: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Wide tables should scroll horizontally within the page 717699884 | |
705799046 | https://github.com/simonw/datasette/issues/865#issuecomment-705799046 | https://api.github.com/repos/simonw/datasette/issues/865 | MDEyOklzc3VlQ29tbWVudDcwNTc5OTA0Ng== | simonw 9599 | 2020-10-08T20:15:26Z | 2020-10-08T20:15:26Z | OWNER | Can anyone give me some detailed steps to reproduce for this issue? I think I need to set up my own local nginx or Apache proxy so I can really dig into this and figure out what's going on. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url doesn't seem to work when adding criteria and clicking "apply" 644582921 | |
705466873 | https://github.com/simonw/datasette/issues/997#issuecomment-705466873 | https://api.github.com/repos/simonw/datasette/issues/997 | MDEyOklzc3VlQ29tbWVudDcwNTQ2Njg3Mw== | simonw 9599 | 2020-10-08T10:02:02Z | 2020-10-08T10:02:02Z | OWNER | I asked about other hosts for these on Twitter https://twitter.com/simonw/status/1314042631949676544 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation covering buildpack deployment 716988478 | |
705306117 | https://github.com/simonw/datasette/issues/997#issuecomment-705306117 | https://api.github.com/repos/simonw/datasette/issues/997 | MDEyOklzc3VlQ29tbWVudDcwNTMwNjExNw== | simonw 9599 | 2020-10-08T03:22:16Z | 2020-10-08T03:22:16Z | OWNER | Note #633 - you need to set WEB_CONCURRENCY=1 on Heroku for this to work. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documentation covering buildpack deployment 716988478 | |
705244583 | https://github.com/simonw/datasette/issues/991#issuecomment-705244583 | https://api.github.com/repos/simonw/datasette/issues/991 | MDEyOklzc3VlQ29tbWVudDcwNTI0NDU4Mw== | simonw 9599 | 2020-10-07T23:24:56Z | 2020-10-07T23:24:56Z | OWNER | Sketched out an option: ```diff diff --git a/datasette/templates/index.html b/datasette/templates/index.html index c1adfc5..eab3053 100644 --- a/datasette/templates/index.html +++ b/datasette/templates/index.html @@ -5,6 +5,14 @@ {% block body_class %}index{% endblock %} {% block content %} +<style> +.db-table { + padding-left: 2em; +} +.db-table h3 { + margin: 0 0 0.15em 0; +} +</style> {{ metadata.title or "Datasette" }}{% if private %} 🔒{% endif %}{% block description_source_license %}{% include "_description_source_license.html" %}{% endblock %} @@ -21,8 +29,20 @@ {{ "{:,}".format(database.views_count) }} view{% if database.views_count != 1 %}s{% endif %} {% endif %} -{% for table in database.tables_and_views_truncated %}{{ table.name }}{% if table.private %} 🔒{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if database.tables_and_views_more %}, ...{% endif %} + {% for table in database.tables_and_views_truncated %} + {% if show_hidden or not table.hidden %} +
+
+ {% endif %}
+ {% endfor %}
+
+ {% if database.tables_and_views_more %}
+ {{ table.name }}{% if table.private %} 🔒{% endif %}{% if table.hidden %} (hidden){% endif %}+{% for column in table.columns[:9] %}{{ column }}{% if not loop.last %}, {% endif %}{% endfor %}{% if table.columns|length > 9 %}...{% endif %} +{% if table.count is none %}Many rows{% else %}{{ "{:,}".format(table.count) }} row{% if table.count == 1 %}{% else %}s{% endif %}{% endif %} +All {{ database.tables_count }} tables in {{ database.name }} + {% endif %} + {% endfor %}{% endblock %} ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign application homepage 714377268 | |
705119801 | https://github.com/simonw/datasette/issues/996#issuecomment-705119801 | https://api.github.com/repos/simonw/datasette/issues/996 | MDEyOklzc3VlQ29tbWVudDcwNTExOTgwMQ== | simonw 9599 | 2020-10-07T18:34:58Z | 2020-10-07T18:34:58Z | OWNER | One option: compare the length of the matches and pick the shortest one. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better handling of multiple matching template wildcard paths 716756082 | |
705116123 | https://github.com/simonw/datasette/issues/996#issuecomment-705116123 | https://api.github.com/repos/simonw/datasette/issues/996 | MDEyOklzc3VlQ29tbWVudDcwNTExNjEyMw== | simonw 9599 | 2020-10-07T18:27:57Z | 2020-10-07T18:28:36Z | OWNER | This line was meant to handle this case, by only matching non-/ characters. Looks like it did not have the desired effect: https://github.com/simonw/datasette/blob/14982bd900f17a66acc3930ec1a2ff138716d198/datasette/app.py#L1204 Maybe because the finished regex doesn't include |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better handling of multiple matching template wildcard paths 716756082 | |
705115185 | https://github.com/simonw/datasette/issues/996#issuecomment-705115185 | https://api.github.com/repos/simonw/datasette/issues/996 | MDEyOklzc3VlQ29tbWVudDcwNTExNTE4NQ== | simonw 9599 | 2020-10-07T18:26:11Z | 2020-10-07T18:26:45Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Better handling of multiple matching template wildcard paths 716756082 | ||
704553385 | https://github.com/dogsheep/github-to-sqlite/pull/48#issuecomment-704553385 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/48 | MDEyOklzc3VlQ29tbWVudDcwNDU1MzM4NQ== | simonw 9599 | 2020-10-06T21:07:44Z | 2020-10-06T21:07:44Z | MEMBER | Sorry for not looking at this sooner, trying it out now - pull request looks great! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add pull requests 681228542 | |
704503719 | https://github.com/dogsheep/github-to-sqlite/pull/48#issuecomment-704503719 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/48 | MDEyOklzc3VlQ29tbWVudDcwNDUwMzcxOQ== | adamjonas 755825 | 2020-10-06T19:26:59Z | 2020-10-06T19:26:59Z | CONTRIBUTOR | ref #46 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add pull requests 681228542 | |
704395913 | https://github.com/simonw/datasette/pull/995#issuecomment-704395913 | https://api.github.com/repos/simonw/datasette/issues/995 | MDEyOklzc3VlQ29tbWVudDcwNDM5NTkxMw== | simonw 9599 | 2020-10-06T16:25:20Z | 2020-10-06T16:25:20Z | OWNER | This is great, thank you! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Document setting Google Cloud SDK properties 715779909 | |
704347565 | https://github.com/simonw/datasette/pull/995#issuecomment-704347565 | https://api.github.com/repos/simonw/datasette/issues/995 | MDEyOklzc3VlQ29tbWVudDcwNDM0NzU2NQ== | codecov[bot] 22429695 | 2020-10-06T15:22:55Z | 2020-10-06T15:22:55Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #995 +/-=======================================
Coverage 84.34% 84.34% Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Document setting Google Cloud SDK properties 715779909 | |
704013305 | https://github.com/simonw/datasette/issues/992#issuecomment-704013305 | https://api.github.com/repos/simonw/datasette/issues/992 | MDEyOklzc3VlQ29tbWVudDcwNDAxMzMwNQ== | simonw 9599 | 2020-10-06T04:00:00Z | 2020-10-06T04:00:00Z | OWNER | I can add this well in advance of Datasette 1.0 as an alias to the existing |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Change "--config foo:bar" to "--setting foo bar" 714449879 | |
703963211 | https://github.com/simonw/datasette/issues/993#issuecomment-703963211 | https://api.github.com/repos/simonw/datasette/issues/993 | MDEyOklzc3VlQ29tbWVudDcwMzk2MzIxMQ== | simonw 9599 | 2020-10-06T00:40:48Z | 2020-10-06T00:40:48Z | OWNER | Now live at https://latest.datasette.io/fixtures/facetable New |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Column action menu should show column type 715072935 | |
703928029 | https://github.com/simonw/datasette/issues/993#issuecomment-703928029 | https://api.github.com/repos/simonw/datasette/issues/993 | MDEyOklzc3VlQ29tbWVudDcwMzkyODAyOQ== | simonw 9599 | 2020-10-05T22:42:45Z | 2020-10-05T22:42:59Z | OWNER | The |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Column action menu should show column type 715072935 | |
703351641 | https://github.com/simonw/datasette/issues/992#issuecomment-703351641 | https://api.github.com/repos/simonw/datasette/issues/992 | MDEyOklzc3VlQ29tbWVudDcwMzM1MTY0MQ== | simonw 9599 | 2020-10-05T01:31:36Z | 2020-10-05T01:31:36Z | OWNER | If I rename metadata to config in #493 then this should be |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Change "--config foo:bar" to "--setting foo bar" 714449879 | |
703350401 | https://github.com/simonw/datasette/issues/741#issuecomment-703350401 | https://api.github.com/repos/simonw/datasette/issues/741 | MDEyOklzc3VlQ29tbWVudDcwMzM1MDQwMQ== | simonw 9599 | 2020-10-05T01:26:12Z | 2020-10-05T01:26:12Z | OWNER | Relevant support question on Twitter: https://twitter.com/simonw/status/1312926103627988993 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Replace "datasette publish --extra-options" with "--setting" 607223136 | |
702493047 | https://github.com/simonw/datasette/issues/778#issuecomment-702493047 | https://api.github.com/repos/simonw/datasette/issues/778 | MDEyOklzc3VlQ29tbWVudDcwMjQ5MzA0Nw== | simonw 9599 | 2020-10-02T02:26:25Z | 2020-10-02T02:26:25Z | OWNER | I think this could work for arbitrary SQL queries too. Those would need querystring configuration that specifies which sorted column(s) should be used for the "next" cursor. One example: I'd like to be able to offer a paginated list of counts of values in a table - e.g. this query: https://fivethirtyeight.datasettes.com/fivethirtyeight?sql=select+replies%2C+count%28%29+from+%5Btwitter-ratio%2Fsenators%5D+group+by+replies+order+by+count%28%29+desc%3B That could even become a query that gets linked to from the column actions menu. |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to configure keyset pagination for views and queries 626211658 | |
702459747 | https://github.com/simonw/datasette/issues/565#issuecomment-702459747 | https://api.github.com/repos/simonw/datasette/issues/565 | MDEyOklzc3VlQ29tbWVudDcwMjQ1OTc0Nw== | simonw 9599 | 2020-10-02T00:09:55Z | 2020-10-02T00:09:55Z | OWNER | Today Datasette uses |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Conflict between datasette and uvicorn click versions 473307794 | |
702459432 | https://github.com/simonw/datasette/issues/446#issuecomment-702459432 | https://api.github.com/repos/simonw/datasette/issues/446 | MDEyOklzc3VlQ29tbWVudDcwMjQ1OTQzMg== | simonw 9599 | 2020-10-02T00:08:47Z | 2020-10-02T00:08:47Z | OWNER | I've decided not to bother with this, especially having redesigned some hooks to return Datasette standard |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Define mechanism for plugins to return structured data 440134714 | |
702418045 | https://github.com/simonw/datasette/issues/865#issuecomment-702418045 | https://api.github.com/repos/simonw/datasette/issues/865 | MDEyOklzc3VlQ29tbWVudDcwMjQxODA0NQ== | simonw 9599 | 2020-10-01T21:54:00Z | 2020-10-01T21:54:00Z | OWNER | Had a thought: this is likely to break in plugins too, such as |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url doesn't seem to work when adding criteria and clicking "apply" 644582921 | |
702265255 | https://github.com/simonw/datasette/pull/986#issuecomment-702265255 | https://api.github.com/repos/simonw/datasette/issues/986 | MDEyOklzc3VlQ29tbWVudDcwMjI2NTI1NQ== | simonw 9599 | 2020-10-01T16:51:45Z | 2020-10-01T16:51:45Z | OWNER | Thanks for taking a look! The fix ended up being a little different from this because I still want to disable faceting on regular single primary keys (since faceting by those won't ever produce interesting results) - here's what I used: https://github.com/simonw/datasette/commit/5d6bc4c268f9f155e59561671f8617addd3e91bc |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Allow facet by primary keys, fixes #985 712889459 | |
702241397 | https://github.com/simonw/datasette/issues/987#issuecomment-702241397 | https://api.github.com/repos/simonw/datasette/issues/987 | MDEyOklzc3VlQ29tbWVudDcwMjI0MTM5Nw== | simonw 9599 | 2020-10-01T16:11:31Z | 2020-10-01T16:11:31Z | OWNER | This should be a new page in the documentation, which will be expanded later on to cover things like the proposed JavaScript plugin hooks system from #983. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented HTML hooks for JavaScript plugin authors 712984738 | |
702240916 | https://github.com/simonw/datasette/issues/987#issuecomment-702240916 | https://api.github.com/repos/simonw/datasette/issues/987 | MDEyOklzc3VlQ29tbWVudDcwMjI0MDkxNg== | simonw 9599 | 2020-10-01T16:10:44Z | 2020-10-01T16:10:44Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented HTML hooks for JavaScript plugin authors 712984738 | ||
702171636 | https://github.com/simonw/datasette/pull/986#issuecomment-702171636 | https://api.github.com/repos/simonw/datasette/issues/986 | MDEyOklzc3VlQ29tbWVudDcwMjE3MTYzNg== | codecov[bot] 22429695 | 2020-10-01T14:24:11Z | 2020-10-01T14:24:11Z | NONE | Codecov Report
```diff @@ Coverage Diff @@ main #986 +/-=======================================
Coverage 84.28% 84.28% Continue to review full report at Codecov.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Allow facet by primary keys, fixes #985 712889459 | |
702132019 | https://github.com/simonw/datasette/issues/985#issuecomment-702132019 | https://api.github.com/repos/simonw/datasette/issues/985 | MDEyOklzc3VlQ29tbWVudDcwMjEzMjAxOQ== | simonw 9599 | 2020-10-01T13:23:48Z | 2020-10-01T13:23:48Z | OWNER | The code that skips the "facet by this" menu option for primary key columns could take into account if there are multiple primary keys. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Column actions should support facet by compound primary keys 712839383 | |
701720034 | https://github.com/simonw/datasette/issues/530#issuecomment-701720034 | https://api.github.com/repos/simonw/datasette/issues/530 | MDEyOklzc3VlQ29tbWVudDcwMTcyMDAzNA== | simonw 9599 | 2020-10-01T00:42:08Z | 2020-10-01T00:42:08Z | OWNER | I've changed my mind - especially since Datasette now ships with default JavaScript for the column menus in #981. I'm not going to extract CodeMirror into a plugin, I'll leave it where it is. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Extract codemirror SQL editor out into a plugin 460540321 | |
701708072 | https://github.com/simonw/datasette/issues/984#issuecomment-701708072 | https://api.github.com/repos/simonw/datasette/issues/984 | MDEyOklzc3VlQ29tbWVudDcwMTcwODA3Mg== | simonw 9599 | 2020-10-01T00:01:36Z | 2020-10-01T00:01:36Z | OWNER | Column action menus are the cog icons on https://latest.datasette.io/fixtures/facetable |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Review accessibility of new column action menus 712368432 | |
701707116 | https://github.com/simonw/datasette/issues/981#issuecomment-701707116 | https://api.github.com/repos/simonw/datasette/issues/981 | MDEyOklzc3VlQ29tbWVudDcwMTcwNzExNg== | simonw 9599 | 2020-09-30T23:58:17Z | 2020-09-30T23:58:17Z | OWNER | Now live at https://latest.datasette.io/fixtures/facetable |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Action menu for table columns 711627628 |
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]);
user >30