issue_comments
8,883 rows where user = 9599 sorted by updated_at descending
This data as json, CSV (advanced)
user 1
- simonw · 8,131 ✖
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1457117383 | https://github.com/simonw/datasette/issues/2033#issuecomment-1457117383 | https://api.github.com/repos/simonw/datasette/issues/2033 | IC_kwDOBm6k_c5W2djH | simonw 9599 | 2023-03-06T22:28:55Z | 2023-03-06T22:28:55Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette install -r requirements.txt` 1612296210 | ||
1456997425 | https://github.com/simonw/datasette/pull/2031#issuecomment-1456997425 | https://api.github.com/repos/simonw/datasette/issues/2031 | IC_kwDOBm6k_c5W2AQx | simonw 9599 | 2023-03-06T21:04:27Z | 2023-03-06T21:06:34Z | OWNER | This is a very neat fix, for something I've been wanting for a while. Add a unit test for the row HTML page - I suggest against this page: https://latest.datasette.io/fixtures/foreign_key_references/1 - and I'll land this PR. You can model it on this test here: https://github.com/simonw/datasette/blob/a53b893c46453f35decc8c145c138671cee6140c/tests/test_table_html.py#L609-L632 I think adding it to Thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Expand foreign key references in row view as well 1605481359 | |
1456914694 | https://github.com/simonw/datasette/pull/2028#issuecomment-1456914694 | https://api.github.com/repos/simonw/datasette/issues/2028 | IC_kwDOBm6k_c5W1sEG | simonw 9599 | 2023-03-06T20:19:37Z | 2023-03-06T20:19:37Z | OWNER | Thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
add Python 3.11 classifier 1590839187 | |
1426031395 | https://github.com/simonw/datasette/issues/2024#issuecomment-1426031395 | https://api.github.com/repos/simonw/datasette/issues/2024 | IC_kwDOBm6k_c5U_4Mj | simonw 9599 | 2023-02-10T16:11:53Z | 2023-02-10T16:11:53Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Mention WAL mode in documentation 1579973223 | ||
1423067724 | https://github.com/simonw/datasette/issues/262#issuecomment-1423067724 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5U0kpM | simonw 9599 | 2023-02-08T18:33:32Z | 2023-02-08T18:36:48Z | OWNER | Just realized that it's useful to be able to tell what parameters were used to generate a page... but reflecting things like So I'm going to add an extra for that information too. Not sure what to call it though:
I'm going to experiment with a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1421988953 | https://github.com/simonw/datasette/pull/1999#issuecomment-1421988953 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5UwdRZ | simonw 9599 | 2023-02-08T04:35:44Z | 2023-02-08T05:27:48Z | OWNER | Next step: get Then... figure out how to render HTML and other requested formats. Then get the tests to pass! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1421784930 | https://github.com/simonw/datasette/issues/2019#issuecomment-1421784930 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5Uvrdi | simonw 9599 | 2023-02-08T01:28:25Z | 2023-02-08T01:40:46Z | OWNER | Rather than duplicate this rather awful hack: I'm tempted to say that the code that calls the new pagination helper needs to ensure that the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1421600789 | https://github.com/simonw/datasette/issues/2019#issuecomment-1421600789 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5Uu-gV | simonw 9599 | 2023-02-07T23:12:40Z | 2023-02-07T23:16:20Z | OWNER |
The |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1421274434 | https://github.com/simonw/datasette/issues/2019#issuecomment-1421274434 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5Utu1C | simonw 9599 | 2023-02-07T18:42:42Z | 2023-02-07T18:42:42Z | OWNER | I'm going to build completely separate tests for this in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1420109153 | https://github.com/simonw/datasette/issues/2019#issuecomment-1420109153 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UpSVh | simonw 9599 | 2023-02-07T02:32:36Z | 2023-02-07T02:32:36Z | OWNER | Doing this as a class makes sense to me. There are a few steps:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1420106315 | https://github.com/simonw/datasette/issues/2019#issuecomment-1420106315 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UpRpL | simonw 9599 | 2023-02-07T02:28:03Z | 2023-02-07T02:28:36Z | OWNER | So I think I can write an abstraction that applies keyset pagination to ANY arbitrary SQL query provided it is given the query, the existing params (so it can pick names for the new params that won't overlap with them), the desired sort order, any existing Those tie breakers will be either the primary key(s) or What about the case of SQL views, where offset/limit should be used instead? I'm inclined to have that as a separate pagination abstraction entirely, with the calling code deciding which pagination helper to use based on if keyset pagination makes sense or not. Might be easier to design a class structure for this starting with Might put these in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1420104254 | https://github.com/simonw/datasette/issues/2019#issuecomment-1420104254 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UpRI- | simonw 9599 | 2023-02-07T02:24:46Z | 2023-02-07T02:24:46Z | OWNER | Even more complicated: https://latest.datasette.io/fixtures/sortable?sortable_with_nulls__notnull=1&_next=0~2E692704598586882%2Ce%2Cr&_sort=sortable_with_nulls_2 The rewritten SQL for that is:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1420101175 | https://github.com/simonw/datasette/issues/2019#issuecomment-1420101175 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UpQY3 | simonw 9599 | 2023-02-07T02:22:11Z | 2023-02-07T02:22:11Z | OWNER | A more complex example: https://latest.datasette.io/fixtures/sortable?_next=0~2E2650566289400591%2Ca%2Cu&_sort=sortable_with_nulls_2 SQL:
Rewritten with a subselect:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1420094396 | https://github.com/simonw/datasette/issues/2019#issuecomment-1420094396 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UpOu8 | simonw 9599 | 2023-02-07T02:18:11Z | 2023-02-07T02:19:16Z | OWNER | For the SQL underlying this page (the second page in that compound primary key paginated sequence): https://latest.datasette.io/fixtures/compound_three_primary_keys?_next=a%2Cd%2Cv The explain for that query rewritten as this:
Both explains have 31 steps and look pretty much identical. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1420088670 | https://github.com/simonw/datasette/issues/2019#issuecomment-1420088670 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UpNVe | simonw 9599 | 2023-02-07T02:14:35Z | 2023-02-07T02:14:35Z | OWNER | Maybe the correct level of abstraction here is that pagination is something that happens to a SQL query that is defined as SQL and params, without an order by or limit. That's then wrapped in a sub-select and those things are added to it, plus the necessary Need to check that the query plan for pagination of a subquery isn't slower than the plan for pagination as it works today. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1419953256 | https://github.com/simonw/datasette/issues/2019#issuecomment-1419953256 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UosRo | simonw 9599 | 2023-02-06T23:42:56Z | 2023-02-06T23:43:10Z | OWNER | Relevant issue: - https://github.com/simonw/datasette/issues/1773 Explains this comment: https://github.com/simonw/datasette/blob/0b4a28691468b5c758df74fa1d72a823813c96bf/datasette/views/table.py#L697 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1419928455 | https://github.com/simonw/datasette/issues/2019#issuecomment-1419928455 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UomOH | simonw 9599 | 2023-02-06T23:21:50Z | 2023-02-06T23:21:50Z | OWNER | Found more logic relating to this: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1419921228 | https://github.com/simonw/datasette/issues/2019#issuecomment-1419921228 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UokdM | simonw 9599 | 2023-02-06T23:14:15Z | 2023-02-06T23:14:15Z | OWNER | Crucial utility function: https://github.com/simonw/datasette/blob/0b4a28691468b5c758df74fa1d72a823813c96bf/datasette/utils/init.py#L137-L160 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1419917661 | https://github.com/simonw/datasette/issues/2019#issuecomment-1419917661 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5Uojld | simonw 9599 | 2023-02-06T23:10:51Z | 2023-02-06T23:10:51Z | OWNER | I should turn I should also create something that bundles together |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1419916684 | https://github.com/simonw/datasette/issues/2019#issuecomment-1419916684 | https://api.github.com/repos/simonw/datasette/issues/2019 | IC_kwDOBm6k_c5UojWM | simonw 9599 | 2023-02-06T23:09:51Z | 2023-02-06T23:10:13Z | OWNER | The inputs and outputs for this are pretty complex. Inputs:
Outputs:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Refactor out the keyset pagination code 1573424830 | |
1399343659 | https://github.com/simonw/datasette/pull/1999#issuecomment-1399343659 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5TaEor | simonw 9599 | 2023-01-21T22:19:20Z | 2023-02-06T23:02:12Z | OWNER | HTML mode needs a list of renderers so it can show links to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1418288327 | https://github.com/simonw/datasette/issues/262#issuecomment-1418288327 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5UiVzH | simonw 9599 | 2023-02-05T22:57:58Z | 2023-02-06T23:01:15Z | OWNER | I think that does make sense: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1418288077 | https://github.com/simonw/datasette/issues/2016#issuecomment-1418288077 | https://api.github.com/repos/simonw/datasette/issues/2016 | IC_kwDOBm6k_c5UiVvN | simonw 9599 | 2023-02-05T22:56:43Z | 2023-02-05T22:56:43Z | OWNER | This absolutely makes sense. One of the biggest goals for Datasette 1.0 is "documented template contexts" - for any default template in Datasette that people might want to over-ride there should be documentation that describes the available context variables, plus tests that ensure they don't accidentally get broken by future changes. Ensuring description/title/etc are available on the index page feels like it fits well into that bucket. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Database metadata fields like description are not available in the index page template's context 1571207083 | |
1410827249 | https://github.com/simonw/datasette/issues/2011#issuecomment-1410827249 | https://api.github.com/repos/simonw/datasette/issues/2011 | IC_kwDOBm6k_c5UF4Px | simonw 9599 | 2023-01-31T17:58:54Z | 2023-01-31T17:58:54Z | OWNER | I think this is the relevant code: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Applied facet did not result in an "x" icon to dismiss it 1564769997 | |
1409406327 | https://github.com/simonw/datasette/issues/2010#issuecomment-1409406327 | https://api.github.com/repos/simonw/datasette/issues/2010 | IC_kwDOBm6k_c5UAdV3 | simonw 9599 | 2023-01-30T21:51:58Z | 2023-01-30T21:51:58Z | OWNER | Here's a quick prototype I knocked up for this: ```diff diff --git a/datasette/static/app.css b/datasette/static/app.css index 71437bd4..d763bcff 100644 --- a/datasette/static/app.css +++ b/datasette/static/app.css @@ -695,7 +695,48 @@ p.zero-results { +/ Force table to not be like tables anymore / +body.row table.rows-and-columns, +body.row .rows-and-columns thead, +body.row .rows-and-columns tbody, +body.row .rows-and-columns th, +body.row .rows-and-columns td, +body.row .rows-and-columns tr { + display: block; +} + +/ Hide table headers (but not display: none;, for accessibility) / +body.row .rows-and-columns thead tr { + position: absolute; + top: -9999px; + left: -9999px; +} + +body.row .rows-and-columns tr { + border: 1px solid #ccc; + margin-bottom: 1em; + border-radius: 10px; + background-color: white; + padding: 0.2rem; +} +body.row .rows-and-columns td { + / Behave like a "row" / + border: none; + border-bottom: 1px solid #eee; + padding: 0; + padding-left: 10%; + padding-bottom: 0.3em; +} + +body.row .rows-and-columns td:before { + display: block; + color: black; + padding-bottom: 0.2em; + font-size: 0.8em; + font-weight: bold; + background-color: #f5f5f5; +} / Overrides ===============================================================/ diff --git a/datasette/templates/row.html b/datasette/templates/row.html index 1d1b0bfd..339eb643 100644 --- a/datasette/templates/row.html +++ b/datasette/templates/row.html @@ -5,6 +5,9 @@ {% block extra_head %} {{- super() -}} <style> +{% for column in columns %} +body.row .rows-and-columns td:nth-of-type({{ loop.index }}):before { content: "{{ column|escape_css_string }}"; } +{% endfor %} @media only screen and (max-width: 576px) { {% for column in columns %} .rows-and-columns td:nth-of-type({{ loop.index }}):before { content: "{{ column|escape_css_string }}"; } ``` Now the row page looks like this at all page widths: I think that's better (could do with a bit of tightening up). One catch: you can't copy and paste the column labels, since they are added using generated content like this: https://github.com/simonw/datasette/blob/0b4a28691468b5c758df74fa1d72a823813c96bf/datasette/static/app.css#L752-L757 https://github.com/simonw/datasette/blob/0b4a28691468b5c758df74fa1d72a823813c96bf/datasette/templates/row.html#L9-L11 I think the row page should switch to different HTML entirely, rather than continuing to share the `<table>` that's used by the table page. This will be a breaking change for users who customize Datasette, so I should aim to ship it before 1.0. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Row page should default to card view 1563264257 | |
1407733793 | https://github.com/simonw/datasette/pull/2008#issuecomment-1407733793 | https://api.github.com/repos/simonw/datasette/issues/2008 | IC_kwDOBm6k_c5T6FAh | simonw 9599 | 2023-01-29T18:17:40Z | 2023-01-29T18:17:40Z | OWNER |
Had an interesting conversation about this just now: https://fedi.simonwillison.net/@simon/109773800944614366 There's a risk that different runs will return different results due to the shared resource nature of GitHub Actions runners, but a good fix for that is to run comparative tests where you run the benchmark against e.g. both |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
array facet: don't materialize unnecessary columns 1560982210 | |
1407568923 | https://github.com/simonw/datasette/pull/2008#issuecomment-1407568923 | https://api.github.com/repos/simonw/datasette/issues/2008 | IC_kwDOBm6k_c5T5cwb | simonw 9599 | 2023-01-29T05:47:36Z | 2023-01-29T05:47:36Z | OWNER |
We don't have any performance tests yet - would be a useful thing to add, I've not built anything like that before (at least not in CI, I've always done as-hoc performance testing using something like Locust) so I don't have a great feel for how it could work. I see not having to change the tests at all for this change as a really positive sign. If you find any behaviour differences between this and the previous that's a sign we should add a mother test or two specifying the behaviour we want. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
array facet: don't materialize unnecessary columns 1560982210 | |
1407567753 | https://github.com/simonw/datasette/pull/2008#issuecomment-1407567753 | https://api.github.com/repos/simonw/datasette/issues/2008 | IC_kwDOBm6k_c5T5ceJ | simonw 9599 | 2023-01-29T05:39:54Z | 2023-01-29T05:40:34Z | OWNER | I absolutely love this performance boost - really nice find. One concern: this will be the first time Datasette ships a core feature that uses window functions. Window functions were added to SQLite in version 3.25.0 on 2018-09-15 - which means it's still very common for Datasette to run on versions that don't yet support them. So I see two options: - Detect window function support and switch between the old implementation and this better, new one - Detect window functions and disable the facet-by-JSON feature entirely if they are missing I like the first option a bit better. This also leads to a tricky CI challenge: Datasette needs to be able to run its test suite against more than one SQLite version to confidently test this feature going forward. I don't yet have a good GitHub Actions recipe for this, but I really need one - for Might be able to use this trick for that: https://til.simonwillison.net/sqlite/ld-preload |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
array facet: don't materialize unnecessary columns 1560982210 | |
1405488884 | https://github.com/simonw/datasette/issues/2006#issuecomment-1405488884 | https://api.github.com/repos/simonw/datasette/issues/2006 | IC_kwDOBm6k_c5Txg70 | simonw 9599 | 2023-01-26T19:20:53Z | 2023-01-26T19:20:53Z | OWNER | I can run a GitHub code search a week or so before the release to give me time to get in touch with anyone who has actions that look like they might break. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Teach `datasette publish` to pin to `datasette<1.0` in a 0.x release 1558644003 | |
1405488523 | https://github.com/simonw/datasette/issues/2006#issuecomment-1405488523 | https://api.github.com/repos/simonw/datasette/issues/2006 | IC_kwDOBm6k_c5Txg2L | simonw 9599 | 2023-01-26T19:20:32Z | 2023-01-26T19:20:32Z | OWNER | This won't actually help that much if the user's GitHub Actions workflow does the equivalent of this:
Since they'll need to make changes anyway, maybe a better solution is to document this and tell people they should use this instead:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Teach `datasette publish` to pin to `datasette<1.0` in a 0.x release 1558644003 | |
1404458011 | https://github.com/simonw/datasette/issues/2005#issuecomment-1404458011 | https://api.github.com/repos/simonw/datasette/issues/2005 | IC_kwDOBm6k_c5TtlQb | simonw 9599 | 2023-01-26T01:41:30Z | 2023-01-26T01:41:50Z | OWNER | My code looked like this: ```python @hookimpl def extra_template_vars(datasette, view_name, database): async def inner(): if view_name == "database": return {"blah": 1}
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`extra_template_vars` should be OK to return `None` 1557507274 | |
1404253358 | https://github.com/simonw/datasette/issues/262#issuecomment-1404253358 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5TszSu | simonw 9599 | 2023-01-25T21:35:32Z | 2023-01-25T21:35:32Z | OWNER | This issue here would benefit from some kid of mechanism for returning just the HTML of the table itself, without any of the surrounding material. I'm not sure if that would make sense as an extra or not: - https://github.com/simonw/datasette-search-all/issues/17 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1399341658 | https://github.com/simonw/datasette/pull/1999#issuecomment-1399341658 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5TaEJa | simonw 9599 | 2023-01-21T22:06:29Z | 2023-01-21T22:07:30Z | OWNER | Relevant: - #1101 - #1672 - #1062 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1399341761 | https://github.com/simonw/datasette/issues/1101#issuecomment-1399341761 | https://api.github.com/repos/simonw/datasette/issues/1101 | IC_kwDOBm6k_c5TaELB | simonw 9599 | 2023-01-21T22:07:19Z | 2023-01-21T22:07:19Z | OWNER | Idea for supporting streaming with the
I'll play around with the design of that function signature in:
|
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
register_output_renderer() should support streaming data 749283032 | |
1399341151 | https://github.com/simonw/datasette/pull/1999#issuecomment-1399341151 | https://api.github.com/repos/simonw/datasette/issues/1999 | IC_kwDOBm6k_c5TaEBf | simonw 9599 | 2023-01-21T22:03:20Z | 2023-01-21T22:03:20Z | OWNER | I think I'm going to have to write a new view function from scratch which completely ignores the existing BaseView/DataView/TableView hierarchy. Here's what I get on the incoming request:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
?_extra= support (draft) 1551694938 | |
1399184642 | https://github.com/simonw/datasette/issues/262#issuecomment-1399184642 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5TZd0C | simonw 9599 | 2023-01-21T05:36:22Z | 2023-01-21T05:41:06Z | OWNER | Maybe This could be quite neat, in that EVERY key in the JSON representation would be defined as an extra - just some would be on by default. There could even be a mechanism for turning them back off again, maybe using In which case maybe Being able to pass Although Would |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1399184540 | https://github.com/simonw/datasette/issues/262#issuecomment-1399184540 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5TZdyc | simonw 9599 | 2023-01-21T05:35:32Z | 2023-01-21T05:35:32Z | OWNER | It's annoying that the https://docs.datasette.io/en/0.64.1/plugin_hooks.html#register-output-renderer-datasette plugin hook passes https://docs.datasette.io/en/0.64.1/plugin_hooks.html#render-cell-row-value-column-table-database-datasette is documented as accepting
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1399178823 | https://github.com/simonw/datasette/issues/262#issuecomment-1399178823 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5TZcZH | simonw 9599 | 2023-01-21T04:54:49Z | 2023-01-21T04:54:49Z | OWNER | I pushed my prototype so far, going to start a draft PR for it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1399178591 | https://github.com/simonw/datasette/issues/262#issuecomment-1399178591 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5TZcVf | simonw 9599 | 2023-01-21T04:53:15Z | 2023-01-21T04:53:15Z | OWNER | Implementing this to work with the The challenge here is that we're working with the whole
I want this to work completely differently: I want the formats (including HTML) to have the option of adding some extra |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1399145981 | https://github.com/simonw/datasette/issues/262#issuecomment-1399145981 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5TZUX9 | simonw 9599 | 2023-01-21T01:56:52Z | 2023-01-21T01:56:52Z | OWNER | Got first prototype working using +from asyncinject import Registry import markupsafe from datasette.plugins import pm @@ -538,57 +539,60 @@ class TableView(DataView): # Execute the main query! results = await db.execute(sql, params, truncate=True, **extra_args)
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1398768399 | https://github.com/simonw/datasette/issues/1998#issuecomment-1398768399 | https://api.github.com/repos/simonw/datasette/issues/1998 | IC_kwDOBm6k_c5TX4MP | simonw 9599 | 2023-01-20T18:19:06Z | 2023-01-20T18:19:06Z | OWNER | Simplest solution would be to ditch the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette --version` should also show the SQLite version 1551113681 | |
1398767813 | https://github.com/simonw/datasette/issues/1998#issuecomment-1398767813 | https://api.github.com/repos/simonw/datasette/issues/1998 | IC_kwDOBm6k_c5TX4DF | simonw 9599 | 2023-01-20T18:18:27Z | 2023-01-20T18:18:27Z | OWNER | Fell down a bit of a rabbit hole trying to figure out how to get Click's ```python class _VersionMessage(UserString): @property def data(self): return "%(prog)s, version %(version)s (SQLite {})".format( sqlite3.connect(":memory:").execute("select sqlite_version()").fetchone()[0] )
@click.group(cls=DefaultGroup, default="serve", default_if_no_args=True) @click.version_option(version=version, message=_VersionMessage("")) def cli(): """ Datasette is an open source multi-tool for exploring and publishing data
``` But now:
I was trying to avoid running that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`datasette --version` should also show the SQLite version 1551113681 | |
1397942113 | https://github.com/simonw/datasette/issues/262#issuecomment-1397942113 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5TUudh | simonw 9599 | 2023-01-20T05:33:00Z | 2023-01-20T05:33:00Z | OWNER | I'm going to write code which parses It will return an error if you ask for an extra that does not exist. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1385807684 | https://github.com/simonw/datasette/issues/262#issuecomment-1385807684 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5Smb9E | simonw 9599 | 2023-01-17T17:51:54Z | 2023-01-19T23:20:59Z | OWNER | In most cases, the
Am I OK with that? I think so. Related issue: - #1558 Actually there's an edge-case here that's worth considering: it's possible to use metadata to set default facets for a table. If you do this for a table, then So maybe we don't include |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1397734424 | https://github.com/simonw/datasette/issues/1989#issuecomment-1397734424 | https://api.github.com/repos/simonw/datasette/issues/1989 | IC_kwDOBm6k_c5TT7wY | simonw 9599 | 2023-01-19T23:18:45Z | 2023-01-19T23:18:45Z | OWNER | There's a One solution right now is to define a SQL view for the things that you DO want people to be able to see, and then use Datasette's permission system to hide the tables ( If you want to redact specific columns there's a plugin for doing that: https://datasette.io/plugins/datasette-mask-columns This does make sense as more of a core Datasette feature though - tagging it as a feature suggestion. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Suggestion: Hiding columns 1531991339 | |
1385805702 | https://github.com/simonw/datasette/issues/262#issuecomment-1385805702 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5SmbeG | simonw 9599 | 2023-01-17T17:50:17Z | 2023-01-17T17:50:17Z | OWNER | Or maybe have a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1384752452 | https://github.com/simonw/datasette/issues/262#issuecomment-1384752452 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5SiaVE | simonw 9599 | 2023-01-17T02:14:41Z | 2023-01-17T02:15:58Z | OWNER | Thinking about
Stuff currently in https://latest.datasette.io/fixtures/facetable.json that is not yet covered by the above:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1368269732 | https://github.com/simonw/datasette/issues/782#issuecomment-1368269732 | https://api.github.com/repos/simonw/datasette/issues/782 | IC_kwDOBm6k_c5RjiOk | simonw 9599 | 2022-12-31T19:32:33Z | 2023-01-17T02:05:45Z | OWNER | New thinking on the trimmed-down default. Previously I was going to use This is even more succinct. I'm OK with people having to request 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 | |
1384743243 | https://github.com/simonw/datasette/issues/262#issuecomment-1384743243 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5SiYFL | simonw 9599 | 2023-01-17T02:01:26Z | 2023-01-17T02:01:26Z | OWNER | I'm tempted NOT to document the JSON for the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1384742385 | https://github.com/simonw/datasette/issues/262#issuecomment-1384742385 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5SiX3x | simonw 9599 | 2023-01-17T02:00:23Z | 2023-01-17T02:00:38Z | OWNER | I'm not actually too happy about how Maybe I can fix that disparity with extras too? The list of tables you see on This would also support running a SQL query but also returning a list of tables - which can be useful for building a SQL editor interface which hints at the tables that are available to the user - or even for generating the configuration needed by the CodeMirror editor's SQL completion, added in: - #1893 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1384741055 | https://github.com/simonw/datasette/issues/262#issuecomment-1384741055 | https://api.github.com/repos/simonw/datasette/issues/262 | IC_kwDOBm6k_c5SiXi_ | simonw 9599 | 2023-01-17T01:58:24Z | 2023-01-17T01:58:24Z | OWNER | As suggested in this issue: - #1721 There are three parts of the Datasette API that need to support extras:
There are two other pages I should consider though:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
712988146 | https://github.com/simonw/datasette/issues/262#issuecomment-712988146 | https://api.github.com/repos/simonw/datasette/issues/262 | MDEyOklzc3VlQ29tbWVudDcxMjk4ODE0Ng== | simonw 9599 | 2020-10-20T16:32:02Z | 2023-01-17T01:54:13Z | OWNER | Just realized I added an undocumented That will need to be made consistent with the new mechanism. I think So I could support I think I prefer allowing commas in |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add ?_extra= mechanism for requesting extra properties in JSON 323658641 | |
1379502161 | https://github.com/simonw/datasette/issues/1988#issuecomment-1379502161 | https://api.github.com/repos/simonw/datasette/issues/1988 | IC_kwDOBm6k_c5SOYhR | simonw 9599 | 2023-01-11T21:24:24Z | 2023-01-11T21:25:05Z | OWNER | Renaming |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reconsider pattern where plugins could break existing template context 1529707837 | |
1379500131 | https://github.com/simonw/datasette/issues/1988#issuecomment-1379500131 | https://api.github.com/repos/simonw/datasette/issues/1988 | IC_kwDOBm6k_c5SOYBj | simonw 9599 | 2023-01-11T21:22:31Z | 2023-01-11T21:22:31Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reconsider pattern where plugins could break existing template context 1529707837 | ||
1379492499 | https://github.com/simonw/datasette/issues/1988#issuecomment-1379492499 | https://api.github.com/repos/simonw/datasette/issues/1988 | IC_kwDOBm6k_c5SOWKT | simonw 9599 | 2023-01-11T21:15:01Z | 2023-01-11T21:20:14Z | OWNER | This is tricky. ```python @hookimpl def extra_template_vars(datasette): async def execute_sql(sql, args=None, database=None): db = datasette.get_database(database) return (await db.execute(sql, args)).rows
``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reconsider pattern where plugins could break existing template context 1529707837 | |
1379495504 | https://github.com/simonw/datasette/issues/1988#issuecomment-1379495504 | https://api.github.com/repos/simonw/datasette/issues/1988 | IC_kwDOBm6k_c5SOW5Q | simonw 9599 | 2023-01-11T21:18:00Z | 2023-01-11T21:18:25Z | OWNER | A few options:
- Ensure that the explicit template context overrides anything that plugins might do - so in this case the That last option actually fits quite well with my efforts to unify template rendering with JSON (and JSON extras) so it might be the best way to address this. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Reconsider pattern where plugins could break existing template context 1529707837 | |
1379313564 | https://github.com/simonw/datasette/issues/1987#issuecomment-1379313564 | https://api.github.com/repos/simonw/datasette/issues/1987 | IC_kwDOBm6k_c5SNqec | simonw 9599 | 2023-01-11T18:29:25Z | 2023-01-11T18:29:25Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
installpython3.com is now a spam website 1529452371 | ||
1379311498 | https://github.com/simonw/datasette/issues/1987#issuecomment-1379311498 | https://api.github.com/repos/simonw/datasette/issues/1987 | IC_kwDOBm6k_c5SNp-K | simonw 9599 | 2023-01-11T18:27:30Z | 2023-01-11T18:27:46Z | OWNER | I'm going to leave the bad link in the old versions, because I can't figure out a way to update them using ReadTheDocs - shipping 0.64.1 will at least mean that both |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
installpython3.com is now a spam website 1529452371 | |
1379282756 | https://github.com/simonw/datasette/issues/1987#issuecomment-1379282756 | https://api.github.com/repos/simonw/datasette/issues/1987 | IC_kwDOBm6k_c5SNi9E | simonw 9599 | 2023-01-11T18:04:22Z | 2023-01-11T18:04:22Z | OWNER | That change is now live on https://docs.datasette.io/en/latest/installation.html#using-pip I may need to ship a new stable dot-release to update the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
installpython3.com is now a spam website 1529452371 | |
1379276484 | https://github.com/simonw/datasette/issues/1987#issuecomment-1379276484 | https://api.github.com/repos/simonw/datasette/issues/1987 | IC_kwDOBm6k_c5SNhbE | simonw 9599 | 2023-01-11T18:00:35Z | 2023-01-11T18:00:35Z | OWNER | Next challenge: how to best deploy this. Ideally I'd like to fix all of the older versions of the docs too - pages like https://docs.datasette.io/en/0.59.4/installation.html#using-pip Not sure if ReadTheDocs has a mechanism for that. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
installpython3.com is now a spam website 1529452371 | |
1378253346 | https://github.com/simonw/datasette/issues/1985#issuecomment-1378253346 | https://api.github.com/repos/simonw/datasette/issues/1985 | IC_kwDOBm6k_c5SJnoi | simonw 9599 | 2023-01-11T05:18:05Z | 2023-01-11T05:18:05Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Don't let Datasette(path) without a list cause weird errors 1528448642 | |
1376619691 | https://github.com/simonw/datasette/pull/1984#issuecomment-1376619691 | https://api.github.com/repos/simonw/datasette/issues/1984 | IC_kwDOBm6k_c5SDYyr | simonw 9599 | 2023-01-10T02:02:16Z | 2023-01-10T02:02:16Z | OWNER | Preview at https://datasette--1984.org.readthedocs.build/en/1984/ looks good to me. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade Sphinx 1526635374 | |
1375801928 | https://github.com/simonw/datasette/issues/979#issuecomment-1375801928 | https://api.github.com/repos/simonw/datasette/issues/979 | IC_kwDOBm6k_c5SARJI | simonw 9599 | 2023-01-09T15:32:22Z | 2023-01-09T15:32:22Z | OWNER | This will not be part of the new default JSON design. It will be handled by an ?_extra instead. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Default table view JSON should include CREATE TABLE 710650633 | |
1375800361 | https://github.com/simonw/datasette/issues/1558#issuecomment-1375800361 | https://api.github.com/repos/simonw/datasette/issues/1558 | IC_kwDOBm6k_c5SAQwp | simonw 9599 | 2023-01-09T15:31:17Z | 2023-01-09T15:31:17Z | OWNER | Related: - #782 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign `facet_results` JSON structure prior to Datasette 1.0 1082584499 | |
1375797856 | https://github.com/simonw/datasette/issues/1983#issuecomment-1375797856 | https://api.github.com/repos/simonw/datasette/issues/1983 | IC_kwDOBm6k_c5SAQJg | simonw 9599 | 2023-01-09T15:29:34Z | 2023-01-09T15:29:34Z | OWNER | I had forgotten this had special handling for cursors! The default representation of a row as a tuple rather than a dictionary might not be the right thing to do based on: - #782 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Make CustomJSONEncoder a documented public API 1525815985 | |
1375795441 | https://github.com/simonw/datasette/issues/1983#issuecomment-1375795441 | https://api.github.com/repos/simonw/datasette/issues/1983 | IC_kwDOBm6k_c5SAPjx | simonw 9599 | 2023-01-09T15:27:53Z | 2023-01-09T15:27:53Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Make CustomJSONEncoder a documented public API 1525815985 | ||
1375142205 | https://github.com/simonw/datasette/issues/1981#issuecomment-1375142205 | https://api.github.com/repos/simonw/datasette/issues/1981 | IC_kwDOBm6k_c5R9wE9 | simonw 9599 | 2023-01-09T06:05:44Z | 2023-01-09T06:05:44Z | OWNER | I want the labels to take as much space as they need, but line up with each other. If they are more than half the width of the page then the form fields should break to another line. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Canned query field labels truncated 1524983536 | |
1375062405 | https://github.com/simonw/datasette/issues/1980#issuecomment-1375062405 | https://api.github.com/repos/simonw/datasette/issues/1980 | IC_kwDOBm6k_c5R9cmF | simonw 9599 | 2023-01-09T03:23:53Z | 2023-01-09T03:23:53Z | OWNER | Some potential solutions:
- Make it so the primary key is always sortable - not a bad idea, the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Cannot sort table by id" when sortable_columns is used 1524867951 | |
1375061747 | https://github.com/simonw/datasette/issues/1980#issuecomment-1375061747 | https://api.github.com/repos/simonw/datasette/issues/1980 | IC_kwDOBm6k_c5R9cbz | simonw 9599 | 2023-01-09T03:22:36Z | 2023-01-09T03:22:36Z | OWNER | The problem here is that the HTML ended up with this HTML in it:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Cannot sort table by id" when sortable_columns is used 1524867951 | |
1374916593 | https://github.com/simonw/datasette/issues/1978#issuecomment-1374916593 | https://api.github.com/repos/simonw/datasette/issues/1978 | IC_kwDOBm6k_c5R84_x | simonw 9599 | 2023-01-08T20:06:16Z | 2023-01-08T20:06:16Z | OWNER | Related issue - I'm not 100% settled on the design for these yet: - https://github.com/simonw/datasette/issues/1048#issuecomment-1179757912 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Document datasette.urls.row and row_blob 1522778923 | |
1374659874 | https://github.com/simonw/datasette/issues/1979#issuecomment-1374659874 | https://api.github.com/repos/simonw/datasette/issues/1979 | IC_kwDOBm6k_c5R76Ui | simonw 9599 | 2023-01-07T23:59:11Z | 2023-01-07T23:59:11Z | OWNER | I back-ported this fix to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
More useful error message if enable_load_extension is not available 1524076587 | |
1374659233 | https://github.com/simonw/datasette/issues/1979#issuecomment-1374659233 | https://api.github.com/repos/simonw/datasette/issues/1979 | IC_kwDOBm6k_c5R76Kh | simonw 9599 | 2023-01-07T23:56:25Z | 2023-01-07T23:56:25Z | OWNER | ```
% datasette --load-extension foo More information: https://datasette.io/help/extensions ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
More useful error message if enable_load_extension is not available 1524076587 | |
1374658468 | https://github.com/simonw/datasette/issues/1979#issuecomment-1374658468 | https://api.github.com/repos/simonw/datasette/issues/1979 | IC_kwDOBm6k_c5R75-k | simonw 9599 | 2023-01-07T23:53:41Z | 2023-01-07T23:53:41Z | OWNER | https://datasette.io/help/extensions now redirects to this new section of documentation: https://docs.datasette.io/en/latest/installation.html#a-note-about-extensions |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
More useful error message if enable_load_extension is not available 1524076587 | |
1374657204 | https://github.com/simonw/datasette/issues/1979#issuecomment-1374657204 | https://api.github.com/repos/simonw/datasette/issues/1979 | IC_kwDOBm6k_c5R75q0 | simonw 9599 | 2023-01-07T23:48:42Z | 2023-01-07T23:48:42Z | OWNER | Once I ship the next release I should change that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
More useful error message if enable_load_extension is not available 1524076587 | |
1374582375 | https://github.com/simonw/datasette/issues/1979#issuecomment-1374582375 | https://api.github.com/repos/simonw/datasette/issues/1979 | IC_kwDOBm6k_c5R7nZn | simonw 9599 | 2023-01-07T19:22:39Z | 2023-01-07T19:22:39Z | OWNER | This helps: ```diff diff --git a/datasette/cli.py b/datasette/cli.py index 2b61292b..ea98879c 100644 --- a/datasette/cli.py +++ b/datasette/cli.py @@ -4,13 +4,15 @@ import click from click import formatting from click.types import CompositeParamType from click_default_group import DefaultGroup +import functools import json import os import pathlib import shutil from subprocess import call -import sys from runpy import run_module +import sys +import textwrap import webbrowser from .app import ( OBSOLETE_SETTINGS, @@ -126,7 +128,7 @@ class Setting(CompositeParamType): def sqlite_extensions(fn): - return click.option( + fn = click.option( "sqlite_extensions", "--load-extension", type=LoadExtension(), @@ -134,6 +136,25 @@ def sqlite_extensions(fn): multiple=True, help="Path to a SQLite extension to load, and optional entrypoint", )(fn) + # Wrap it in a custom error handler + @functools.wraps(fn) + def wrapped(args, kwargs): + try: + return fn(args, **kwargs) + except AttributeError as e: + if "enable_load_extension" in str(e): + raise click.ClickException( + textwrap.dedent( + """ + Your Python installation does not have the ability to load SQLite extensions. + + More information: https://docs.datasette.io/en/stable/installation.html#extensions + """ + ).strip() + ) + raise + + return wrapped @click.group(cls=DefaultGroup, default="serve", default_if_no_args=True) ``` Need to write help for that to link to. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
More useful error message if enable_load_extension is not available 1524076587 | |
1374555507 | https://github.com/simonw/datasette/issues/1409#issuecomment-1374555507 | https://api.github.com/repos/simonw/datasette/issues/1409 | IC_kwDOBm6k_c5R7g1z | simonw 9599 | 2023-01-07T18:06:01Z | 2023-01-07T18:06:01Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
`default_allow_sql` setting (a re-imagining of the old `allow_sql` setting) 957310278 | ||
1369333759 | https://github.com/simonw/sqlite-utils/issues/520#issuecomment-1369333759 | https://api.github.com/repos/simonw/sqlite-utils/issues/520 | IC_kwDOCGYnMM5Rnl__ | simonw 9599 | 2023-01-03T02:23:43Z | 2023-01-03T02:23:43Z | OWNER | The documentation here does at least say the following: https://sqlite-utils.datasette.io/en/3.30/python-api.html#reading-rows-from-a-file
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
rows_from_file() raises confusing error if file-like object is not in binary mode 1516644980 | |
1368936146 | https://github.com/simonw/datasette/issues/1973#issuecomment-1368936146 | https://api.github.com/repos/simonw/datasette/issues/1973 | IC_kwDOBm6k_c5RmE7S | simonw 9599 | 2023-01-02T13:13:03Z | 2023-01-02T13:13:03Z | OWNER | It's quite handy that the label for foreign keys is made available to the custom render function here - if that was properly documented (and maybe had a slightly more intuitive API) I think it might be a good solution here. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
render_cell plugin hook's row object is not a sqlite.Row 1515815014 | |
1368935320 | https://github.com/simonw/datasette/issues/1973#issuecomment-1368935320 | https://api.github.com/repos/simonw/datasette/issues/1973 | IC_kwDOBm6k_c5RmEuY | simonw 9599 | 2023-01-02T13:12:00Z | 2023-01-02T13:12:00Z | OWNER | Thanks for catching this! Definitely a bug. This might be a good opportunity to reconsider how his should work though. It's possible that Datasette will eventually support alternative database backends - PostgreSQL, DuckDB and ClickHouse are all on my radar here. If that happens, this plugin hook returning a SQLite Row wouldn't make sense. Some kind of thing abstraction layer - maybe CustomRow, maybe something a little bit better - might be a good idea. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
render_cell plugin hook's row object is not a sqlite.Row 1515815014 | |
1368285442 | https://github.com/simonw/datasette/issues/782#issuecomment-1368285442 | https://api.github.com/repos/simonw/datasette/issues/782 | IC_kwDOBm6k_c5RjmEC | simonw 9599 | 2022-12-31T22:02:16Z | 2022-12-31T22:02:16Z | OWNER | https://latest.datasette.io/fixtures/compound_three_primary_keys.json?_size=2 now returns
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
1368278278 | https://github.com/simonw/datasette/issues/782#issuecomment-1368278278 | https://api.github.com/repos/simonw/datasette/issues/782 | IC_kwDOBm6k_c5RjkUG | simonw 9599 | 2022-12-31T20:49:38Z | 2022-12-31T20:49:38Z | OWNER | I'm going to rename |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
1368269811 | https://github.com/simonw/datasette/issues/782#issuecomment-1368269811 | https://api.github.com/repos/simonw/datasette/issues/782 | IC_kwDOBm6k_c5RjiPz | simonw 9599 | 2022-12-31T19:33:09Z | 2022-12-31T19:33:09Z | OWNER | Here's the so-far updated documentation for this change: https://github.com/simonw/datasette/blob/a2dca62360ad4a961d4c46f68eae41b7d5c7b2c9/docs/json_api.rst#different-shapes |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
1368269283 | https://github.com/simonw/datasette/issues/782#issuecomment-1368269283 | https://api.github.com/repos/simonw/datasette/issues/782 | IC_kwDOBm6k_c5RjiHj | simonw 9599 | 2022-12-31T19:29:45Z | 2022-12-31T19:29:45Z | OWNER | https://latest.datasette.io/fixtures/compound_three_primary_keys.json?_size=2 now shows the new default:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
1368268233 | https://github.com/simonw/datasette/issues/1970#issuecomment-1368268233 | https://api.github.com/repos/simonw/datasette/issues/1970 | IC_kwDOBm6k_c5Rjh3J | simonw 9599 | 2022-12-31T19:22:58Z | 2022-12-31T19:22:58Z | OWNER | https://latest.datasette.io/_internal/databases shows the fix now: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Path "None" in _internal database table 1515182998 | |
1368268148 | https://github.com/simonw/datasette/issues/782#issuecomment-1368268148 | https://api.github.com/repos/simonw/datasette/issues/782 | IC_kwDOBm6k_c5Rjh10 | simonw 9599 | 2022-12-31T19:22:07Z | 2022-12-31T19:22:07Z | OWNER | It turned out the most significant part of this change - switching from an array of arrays to an array of objects for 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 | |
1368267484 | https://github.com/simonw/datasette/pull/1967#issuecomment-1368267484 | https://api.github.com/repos/simonw/datasette/issues/1967 | IC_kwDOBm6k_c5Rjhrc | simonw 9599 | 2022-12-31T19:15:50Z | 2022-12-31T19:15:50Z | OWNER | My Firefox tab before: And after: |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 } |
Add favicon to documentation 1503010009 | |
1368267406 | https://github.com/simonw/datasette/issues/1966#issuecomment-1368267406 | https://api.github.com/repos/simonw/datasette/issues/1966 | IC_kwDOBm6k_c5RjhqO | simonw 9599 | 2022-12-31T19:15:10Z | 2022-12-31T19:15:10Z | OWNER | It's working again now - not sure what happened there, I was paying for Heroku for that already. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Broken link to live demo in Getting started docs 1501900064 | |
1368266904 | https://github.com/simonw/datasette/issues/1971#issuecomment-1368266904 | https://api.github.com/repos/simonw/datasette/issues/1971 | IC_kwDOBm6k_c5RjhiY | simonw 9599 | 2022-12-31T19:09:48Z | 2022-12-31T19:09:48Z | OWNER | For the moment I'm going to pin to Sphinx 5.3.0 Note that I got this warning there:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade for Sphinx 6.0 (once Furo has support for it) 1515185383 | |
1368266658 | https://github.com/simonw/datasette/issues/1971#issuecomment-1368266658 | https://api.github.com/repos/simonw/datasette/issues/1971 | IC_kwDOBm6k_c5Rjhei | simonw 9599 | 2022-12-31T19:07:19Z | 2022-12-31T19:07:19Z | OWNER | So it looks like Furo doesn't work with Sphinx 6.0 yet - there' s a fix on |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade for Sphinx 6.0 (once Furo has support for it) 1515185383 | |
1368266457 | https://github.com/simonw/datasette/issues/1971#issuecomment-1368266457 | https://api.github.com/repos/simonw/datasette/issues/1971 | IC_kwDOBm6k_c5RjhbZ | simonw 9599 | 2022-12-31T19:05:26Z | 2022-12-31T19:05:26Z | OWNER | Ran this locally:
Got these warnings:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Upgrade for Sphinx 6.0 (once Furo has support for it) 1515185383 | |
1368265354 | https://github.com/simonw/datasette/pull/1967#issuecomment-1368265354 | https://api.github.com/repos/simonw/datasette/issues/1967 | IC_kwDOBm6k_c5RjhKK | simonw 9599 | 2022-12-31T18:56:35Z | 2022-12-31T18:56:35Z | OWNER | Thanks for this! Datasette has a favicon in this file: https://github.com/simonw/datasette/blob/2b4a8aa0833068da25072b6247bf349949ca00ee/datasette/static/favicon.png - so I'll copy that over and use it here as well. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add favicon to documentation 1503010009 | |
1368264882 | https://github.com/simonw/datasette/issues/1970#issuecomment-1368264882 | https://api.github.com/repos/simonw/datasette/issues/1970 | IC_kwDOBm6k_c5RjhCy | simonw 9599 | 2022-12-31T18:52:01Z | 2022-12-31T18:52:01Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Path "None" in _internal database table 1515182998 | ||
1356827218 | https://github.com/simonw/datasette/pull/1965#issuecomment-1356827218 | https://api.github.com/repos/simonw/datasette/issues/1965 | IC_kwDOBm6k_c5Q34pS | simonw 9599 | 2022-12-18T16:01:36Z | 2022-12-18T16:01:36Z | OWNER | Will link to this from my TIL shortly. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detect server start/stop more reliably. 1501843596 | |
1356827167 | https://github.com/simonw/datasette/pull/1965#issuecomment-1356827167 | https://api.github.com/repos/simonw/datasette/issues/1965 | IC_kwDOBm6k_c5Q34of | simonw 9599 | 2022-12-18T16:01:22Z | 2022-12-18T16:01:22Z | 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 } |
Detect server start/stop more reliably. 1501843596 | |
1356697705 | https://github.com/simonw/datasette/issues/1964#issuecomment-1356697705 | https://api.github.com/repos/simonw/datasette/issues/1964 | IC_kwDOBm6k_c5Q3ZBp | simonw 9599 | 2022-12-18T06:37:23Z | 2022-12-18T06:37:23Z | OWNER | I'm certain the two other cog menus (the app menu on the right of the nav bar and the column action menus) have the same problem. Would be great to figure out the right ARIA attributes for these too. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Cog menu is not keyboard accessible (also no ARIA) 1501778647 | |
1356694671 | https://github.com/simonw/datasette/issues/1771#issuecomment-1356694671 | https://api.github.com/repos/simonw/datasette/issues/1771 | IC_kwDOBm6k_c5Q3YSP | simonw 9599 | 2022-12-18T06:34:20Z | 2022-12-18T06:34:20Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
minor a11y: <select> has no visual indicator when tabbed to 1306984363 | ||
1356680769 | https://github.com/simonw/datasette/issues/1771#issuecomment-1356680769 | https://api.github.com/repos/simonw/datasette/issues/1771 | IC_kwDOBm6k_c5Q3U5B | simonw 9599 | 2022-12-18T05:56:05Z | 2022-12-18T05:56:05Z | OWNER | This does the trick:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
minor a11y: <select> has no visual indicator when tabbed to 1306984363 | |
1356655630 | https://github.com/simonw/datasette/issues/1771#issuecomment-1356655630 | https://api.github.com/repos/simonw/datasette/issues/1771 | IC_kwDOBm6k_c5Q3OwO | simonw 9599 | 2022-12-18T03:43:12Z | 2022-12-18T03:43:12Z | OWNER | The border is actually on the div that wraps the select box: I tried adding a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
minor a11y: <select> has no visual indicator when tabbed to 1306984363 | |
1356655217 | https://github.com/simonw/datasette/issues/1771#issuecomment-1356655217 | https://api.github.com/repos/simonw/datasette/issues/1771 | IC_kwDOBm6k_c5Q3Opx | simonw 9599 | 2022-12-18T03:38:16Z | 2022-12-18T03:38:16Z | OWNER | OK I see what you mean: https://latest.datasette.io/fixtures/attraction_characteristic |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
minor a11y: <select> has no visual indicator when tabbed to 1306984363 | |
1356652057 | https://github.com/simonw/datasette/issues/1963#issuecomment-1356652057 | https://api.github.com/repos/simonw/datasette/issues/1963 | IC_kwDOBm6k_c5Q3N4Z | simonw 9599 | 2022-12-18T03:23:22Z | 2022-12-18T03:23:22Z | OWNER | https://pypi.org/project/datasette/0.63.3/ is released. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
0.63.3 bugfix release 1501713288 |
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 >30