github
html_url | issue_url | id | node_id | user | created_at | updated_at | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
https://github.com/simonw/sqlite-utils/issues/207#issuecomment-743966801 | https://api.github.com/repos/simonw/sqlite-utils/issues/207 | 743966801 | MDEyOklzc3VlQ29tbWVudDc0Mzk2NjgwMQ== | 9599 | 2020-12-13T07:25:23Z | 2020-12-13T07:25:23Z | OWNER | CLI documentation: https://sqlite-utils.readthedocs.io/en/latest/cli.html#analyzing-tables Python library documentation: https://sqlite-utils.readthedocs.io/en/latest/python-api.html#analyzing-a-column | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763283616 | |
https://github.com/simonw/sqlite-utils/pull/203#issuecomment-743966289 | https://api.github.com/repos/simonw/sqlite-utils/issues/203 | 743966289 | MDEyOklzc3VlQ29tbWVudDc0Mzk2NjI4OQ== | 9599 | 2020-12-13T07:20:51Z | 2020-12-13T07:20:51Z | OWNER | Sorry for not reviewing this yet! I'll try to carve out time to look at it in the next few days. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
743384829 | |
https://github.com/simonw/sqlite-utils/pull/208#issuecomment-743956666 | https://api.github.com/repos/simonw/sqlite-utils/issues/208 | 743956666 | MDEyOklzc3VlQ29tbWVudDc0Mzk1NjY2Ng== | 9599 | 2020-12-13T05:44:49Z | 2020-12-13T05:44:49Z | OWNER | Example output: ``` % sqlite-utils analyze-tables github.db tags tags.repo: (1/3) Total rows: 261 Null rows: 0 Blank rows: 0 Distinct values: 14 Most common: 88: 107914493 75: 140912432 27: 206156866 21: 207052882 17: 197431109 8: 197882382 5: 256834907 5: 205429375 4: 248903544 3: 206202864 Least common: 1: 209590345 2: 206649770 2: 303218369 3: 206202864 3: 213286752 4: 248903544 5: 205429375 5: 256834907 8: 197882382 17: 197431109 tags.name: (2/3) Total rows: 261 Null rows: 0 Blank rows: 0 Distinct values: 175 Most common: 10: 0.2 9: 0.1 7: 0.3 6: 0.4 5: 0.7 5: 0.5 5: 0.1a 4: 0.9 4: 0.8 4: 0.6 Least common: 1: 0.1.1 1: 0.11.1 1: 0.1a2 1: 0.20.1 1: 0.21.1 1: 0.21.2 1: 0.21.3 1: 0.22 1: 0.22.1 1: 0.23 tags.sha: (3/3) Total rows: 261 Null rows: 0 Blank rows: 0 Distinct values: 261 ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763320133 | |
https://github.com/simonw/datasette/issues/1142#issuecomment-743913004 | https://api.github.com/repos/simonw/datasette/issues/1142 | 743913004 | MDEyOklzc3VlQ29tbWVudDc0MzkxMzAwNA== | 9599 | 2020-12-12T22:17:46Z | 2020-12-12T22:17:46Z | OWNER | You're actually choosing between two options here: the 100 rows you can see on the screen, or the x,000 rows that match the current query. Maybe a radio box would be more obvious? | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763361458 | |
https://github.com/simonw/datasette/issues/1142#issuecomment-743912875 | https://api.github.com/repos/simonw/datasette/issues/1142 | 743912875 | MDEyOklzc3VlQ29tbWVudDc0MzkxMjg3NQ== | 9599 | 2020-12-12T22:16:38Z | 2020-12-12T22:16:38Z | OWNER | Yeah, maybe with the number of rows to make it completely clear. `Include all 2,455 rows` perhaps. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763361458 | |
https://github.com/simonw/datasette/issues/1142#issuecomment-743732440 | https://api.github.com/repos/simonw/datasette/issues/1142 | 743732440 | MDEyOklzc3VlQ29tbWVudDc0MzczMjQ0MA== | 6622733 | 2020-12-12T09:56:40Z | 2020-12-12T09:56:40Z | NONE | 'Include all rows' seem like a fairly obvious alternative | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763361458 | |
https://github.com/simonw/sqlite-utils/pull/208#issuecomment-743708524 | https://api.github.com/repos/simonw/sqlite-utils/issues/208 | 743708524 | MDEyOklzc3VlQ29tbWVudDc0MzcwODUyNA== | 9599 | 2020-12-12T05:48:20Z | 2020-12-12T05:48:32Z | OWNER | ``` % sqlite-utils analyze-tables ../datasette/fixtures.db facetable --column pk 1/1: ColumnDetails(table='facetable', column='pk', total_rows=15, num_null=0, num_blank=0, num_distinct=15, most_common=None, least_common=None) ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763320133 | |
https://github.com/simonw/sqlite-utils/pull/208#issuecomment-743708325 | https://api.github.com/repos/simonw/sqlite-utils/issues/208 | 743708325 | MDEyOklzc3VlQ29tbWVudDc0MzcwODMyNQ== | 9599 | 2020-12-12T05:46:27Z | 2020-12-12T05:46:27Z | OWNER | It would be neat if you could optionally specify a subset of columns to analyze, using `-c` or `--column`. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763320133 | |
https://github.com/simonw/sqlite-utils/pull/208#issuecomment-743708169 | https://api.github.com/repos/simonw/sqlite-utils/issues/208 | 743708169 | MDEyOklzc3VlQ29tbWVudDc0MzcwODE2OQ== | 9599 | 2020-12-12T05:44:46Z | 2020-12-12T05:44:46Z | OWNER | If there are less than ten values is it worth outputting them twice, once in `most_common` and then in reverse in `least_common`? Feels redundant - I think I should leave `least_common` empty in that case. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763320133 | |
https://github.com/simonw/sqlite-utils/pull/208#issuecomment-743708080 | https://api.github.com/repos/simonw/sqlite-utils/issues/208 | 743708080 | MDEyOklzc3VlQ29tbWVudDc0MzcwODA4MA== | 9599 | 2020-12-12T05:43:45Z | 2020-12-12T05:43:45Z | OWNER | CLI output looks like this at the moment, which is bad: ``` % sqlite-utils analyze-tables ../datasette/fixtures.db facetable 1/10: ColumnDetails(table='facetable', column='pk', total_rows=15, num_null=0, num_blank=0, num_distinct=15, most_common=None, least_common=None) 2/10: ColumnDetails(table='facetable', column='created', total_rows=15, num_null=0, num_blank=0, num_distinct=4, most_common=[('2019-01-17 08:00:00', 4), ('2019-01-15 08:00:00', 4), ('2019-01-14 08:00:00', 4), ('2019-01-16 08:00:00', 3)], least_common=[('2019-01-16 08:00:00', 3), ('2019-01-14 08:00:00', 4), ('2019-01-15 08:00:00', 4), ('2019-01-17 08:00:00', 4)]) 3/10: ColumnDetails(table='facetable', column='planet_int', total_rows=15, num_null=0, num_blank=0, num_distinct=2, most_common=[(1, 14), (2, 1)], least_common=[(2, 1), (1, 14)]) 4/10: ColumnDetails(table='facetable', column='on_earth', total_rows=15, num_null=0, num_blank=0, num_distinct=2, most_common=[(1, 14), (0, 1)], least_common=[(0, 1), (1, 14)]) 5/10: ColumnDetails(table='facetable', column='state', total_rows=15, num_null=0, num_blank=0, num_distinct=3, most_common=[('CA', 10), ('MI', 4), ('MC', 1)], least_common=[('MC', 1), ('MI', 4), ('CA', 10)]) 6/10: ColumnDetails(table='facetable', column='city_id', total_rows=15, num_null=0, num_blank=0, num_distinct=4, most_common=[(1, 6), (3, 4), (2, 4), (4, 1)], least_common=[(4, 1), (2, 4), (3, 4), (1, 6)]) 7/10: ColumnDetails(table='facetable', column='neighborhood', total_rows=15, num_null=0, num_blank=0, num_distinct=14, most_common=[('Downtown', 2), ('Tenderloin', 1), ('SOMA', 1), ('Mission', 1), ('Mexicantown', 1), ('Los Feliz', 1), ('Koreatown', 1), ('Hollywood', 1), ('Hayes Valley', 1), ('Greektown', 1)], least_common=[('Arcadia Planitia', 1), ('Bernal Heights', 1), ('Corktown', 1), ('Dogpatch', 1), ('Greektown', 1), ('Hayes Valley', 1), ('Hollywood', 1), ('Koreatown', 1), ('Los Feliz', 1), ('Mexicantown', 1)]) 8/10: ColumnDetails(table='facetable', column='tags', total_rows=15, num_null=0, num_blank=0, num_distinct=3,… | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763320133 | |
https://github.com/simonw/sqlite-utils/pull/208#issuecomment-743707969 | https://api.github.com/repos/simonw/sqlite-utils/issues/208 | 743707969 | MDEyOklzc3VlQ29tbWVudDc0MzcwNzk2OQ== | 9599 | 2020-12-12T05:42:26Z | 2020-12-12T05:43:06Z | OWNER | Should truncate values in the least/most common JSON array to a sensible length, otherwise you end up with stuff like this: ```json [ [ "b'\\x00\\x05barry\\x03\\x01\\x02\\x00\\x00\\x03cat\\x03\\x01\\x03\\x00\\x00\\x03dog\\x08\\x01\\x01\\x01\\x03\\x00\\x01\\x03\\x00\\x00\\x07panther\\x05\\x01\\x01\\x02\\x02\\x00\\x01\\x03uma\\x05\\x02\\x01\\x02\\x02\\x00\\x00\\x04sara\\x05\\x02\\x01\\x01\\x02\\x00\\x00\\x05terry\\x08\\x01\\x01\\x01\\x02\\x00\\x01\\x02\\x00\\x00\\x06weasel\\x05\\x02\\x01\\x01\\x03\\x00'", 1 ] ] ``` This example also shows that binary values (like those in `_fts` tables) look a bit weird, but I think I'm OK with that since binary data can't be represented neatly in JSON anyway. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763320133 | |
https://github.com/simonw/sqlite-utils/issues/207#issuecomment-743701697 | https://api.github.com/repos/simonw/sqlite-utils/issues/207 | 743701697 | MDEyOklzc3VlQ29tbWVudDc0MzcwMTY5Nw== | 9599 | 2020-12-12T04:39:51Z | 2020-12-12T04:39:51Z | OWNER | CLI could be: sqlite-utils analyze-tables To analyze all tables or: sqlite-utils analyze-tables table1 table2 To analyze specific tables. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763283616 | |
https://github.com/simonw/sqlite-utils/issues/207#issuecomment-743701599 | https://api.github.com/repos/simonw/sqlite-utils/issues/207 | 743701599 | MDEyOklzc3VlQ29tbWVudDc0MzcwMTU5OQ== | 9599 | 2020-12-12T04:38:52Z | 2020-12-12T04:39:07Z | OWNER | I'll add a `table.analyze_column(column)` method which is used by the CLI tool - with a note that this is an unstable interface which may change in the future. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763283616 | |
https://github.com/simonw/sqlite-utils/issues/207#issuecomment-743701422 | https://api.github.com/repos/simonw/sqlite-utils/issues/207 | 743701422 | MDEyOklzc3VlQ29tbWVudDc0MzcwMTQyMg== | 9599 | 2020-12-12T04:37:14Z | 2020-12-12T04:38:25Z | OWNER | Prototype: ```python from collections import namedtuple ColumnDetails = namedtuple("ColumnDetails", ("column", "num_null", "num_blank", "num_distinct", "most_common", "least_common")) def analyze_column(db, table, column, values=10): num_null = db.execute("select count(*) from [{}] where [{}] is null".format(table, column)).fetchone()[0] num_blank = db.execute("select count(*) from [{}] where [{}] = ''".format(table, column)).fetchone()[0] num_distinct = db.execute("select count(distinct [{}]) from [{}]".format(column, table)).fetchone()[0] most_common = None least_common = None if num_distinct != 1: most_common = [(r[0], r[1]) for r in db.execute( "select [{}], count(*) from [{}] group by [{}] order by count(*) desc limit ".format(column, table, column, values) ).fetchall()] if num_distinct <= values: # No need to run the query if it will just return the results in revers order least_common = most_common[::-1] else: least_common = [(r[0], r[1]) for r in db.execute( "select [{}], count(*) from [{}] group by [{}] order by count(*) limit {}".format(column, table, column, values) ).fetchall()] return ColumnDetails(column, num_null, num_blank, num_distinct, most_common, least_common) def analyze_table(db, table): for column in db[table].columns: details = analyze_column(db, table, column.name) print(details) ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
763283616 | |
https://github.com/simonw/datasette/issues/998#issuecomment-743080047 | https://api.github.com/repos/simonw/datasette/issues/998 | 743080047 | MDEyOklzc3VlQ29tbWVudDc0MzA4MDA0Nw== | 6371750 | 2020-12-11T09:25:09Z | 2020-12-11T09:25:09Z | CONTRIBUTOR | Hello Simon, I have a similar problem with horizontal scrollbar display with Datasette version 0.51 and superior for a table with more than 30 rows. With Datasette 0.50, the horizontal scrollbar is displayed, if I upgrade Datasette to 0.51 and superior, the horizontal scrollbar disappears. Datasette 0.50: horizontal scrollbar ![2020-12-11 10_23_28-CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US](https://user-images.githubusercontent.com/6371750/101885620-a5f17800-3b9a-11eb-8870-654e7d4372ca.png) Datasette 0.51 and superior: no horizontal scrollbar ![2020-12-11 10_24_55-CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US](https://user-images.githubusercontent.com/6371750/101885782-dfc27e80-3b9a-11eb-9d55-6c9a56227bf2.png) Thanks, | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
717699884 | |
https://github.com/simonw/sqlite-utils/issues/205#issuecomment-742737794 | https://api.github.com/repos/simonw/sqlite-utils/issues/205 | 742737794 | MDEyOklzc3VlQ29tbWVudDc0MjczNzc5NA== | 9599 | 2020-12-10T19:18:22Z | 2020-12-10T19:18:22Z | OWNER | Yup, it looks like you're using a window function that was added in SQLite 3.25.0: https://www.sqlite.org/changes.html#version_3_25_0 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760960559 | |
https://github.com/simonw/sqlite-utils/issues/205#issuecomment-742299584 | https://api.github.com/repos/simonw/sqlite-utils/issues/205 | 742299584 | MDEyOklzc3VlQ29tbWVudDc0MjI5OTU4NA== | 765871 | 2020-12-10T07:24:22Z | 2020-12-10T07:24:22Z | NONE | Bumping to ubuntu-20.04 appears to have solved my syntax error. 🤷 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760960559 | |
https://github.com/simonw/datasette/issues/1134#issuecomment-742260116 | https://api.github.com/repos/simonw/datasette/issues/1134 | 742260116 | MDEyOklzc3VlQ29tbWVudDc0MjI2MDExNg== | 2181410 | 2020-12-10T05:57:17Z | 2020-12-10T05:57:17Z | NONE | Hi Simon Thank you for the quick fix! And glad you like our use of Datasette (launches 1. january 2021). It's a site that currently (more to come) makes all minutes and their annexes from Aarhus City Council and the major committees (1997-2019) available to the public. So we're putting Datasette to good use :) | { "total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 2, "rocket": 0, "eyes": 0 } |
760312579 | |
https://github.com/simonw/datasette/issues/1091#issuecomment-741992106 | https://api.github.com/repos/simonw/datasette/issues/1091 | 741992106 | MDEyOklzc3VlQ29tbWVudDc0MTk5MjEwNg== | 9599 | 2020-12-09T19:19:54Z | 2020-12-09T20:27:45Z | OWNER | Could you try removing the `ProxyPassReverse /datasette http://0.0.0.0:8001` line? My hunch is that `ProxyPassReverse` is rewriting some of the links in the HTML (or maybe in the HTTP headers) in a way that breaks things. Normally you would need `ProxyPassReverse` to compensate for the underlying application being unable to rewrite its links - but Datasette's `base_url` setting causes Datasette to rewrite all of the links for you, so `ProxyPassReverse` should be unneccessary. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
742011049 | |
https://github.com/simonw/datasette/issues/1134#issuecomment-742024588 | https://api.github.com/repos/simonw/datasette/issues/1134 | 742024588 | MDEyOklzc3VlQ29tbWVudDc0MjAyNDU4OA== | 9599 | 2020-12-09T20:19:59Z | 2020-12-09T20:20:33Z | OWNER | https://byraadsarkivet.aarhus.dk/db/cases?_searchmode=raw&_search=sundhedsfrem%2A is an absolutely beautiful example of a themed Datasette! Very excited to show this to people. | { "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760312579 | |
https://github.com/simonw/datasette/issues/1134#issuecomment-742023775 | https://api.github.com/repos/simonw/datasette/issues/1134 | 742023775 | MDEyOklzc3VlQ29tbWVudDc0MjAyMzc3NQ== | 9599 | 2020-12-09T20:18:23Z | 2020-12-09T20:18:23Z | OWNER | A fix for this should be available if you upgrade to 0.52.5 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760312579 | |
https://github.com/simonw/datasette/issues/1091#issuecomment-742023541 | https://api.github.com/repos/simonw/datasette/issues/1091 | 742023541 | MDEyOklzc3VlQ29tbWVudDc0MjAyMzU0MQ== | 9599 | 2020-12-09T20:17:54Z | 2020-12-09T20:17:54Z | OWNER | OK that is really weird. I'll have another go at replicating this locally. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
742011049 | |
https://github.com/simonw/datasette/issues/1136#issuecomment-742023111 | https://api.github.com/repos/simonw/datasette/issues/1136 | 742023111 | MDEyOklzc3VlQ29tbWVudDc0MjAyMzExMQ== | 9599 | 2020-12-09T20:17:02Z | 2020-12-09T20:17:02Z | OWNER | Documentation for this procedure is now here: https://docs.datasette.io/en/latest/contributing.html#releasing-bug-fixes-from-a-branch | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760621356 | |
https://github.com/simonw/datasette/issues/1136#issuecomment-742022222 | https://api.github.com/repos/simonw/datasette/issues/1136 | 742022222 | MDEyOklzc3VlQ29tbWVudDc0MjAyMjIyMg== | 9599 | 2020-12-09T20:15:24Z | 2020-12-09T20:15:51Z | OWNER | Used this procedure for the first time for 0.52.5 - deploy run here: https://github.com/simonw/datasette/actions/runs/411465648 - PyPI release here: https://pypi.org/project/datasette/0.52.5/ | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760621356 | |
https://github.com/simonw/datasette/issues/1136#issuecomment-742017622 | https://api.github.com/repos/simonw/datasette/issues/1136 | 742017622 | MDEyOklzc3VlQ29tbWVudDc0MjAxNzYyMg== | 9599 | 2020-12-09T20:06:47Z | 2020-12-09T20:06:47Z | OWNER | Then I can ship the release directly from that branch, creating the tag as part of the release process: <img width="1057" alt="New_release_·_simonw_datasette" src="https://user-images.githubusercontent.com/9599/101681442-ffc93500-3a16-11eb-8801-3a0e357a2bc1.png"> | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760621356 | |
https://github.com/simonw/datasette/issues/1136#issuecomment-742014881 | https://api.github.com/repos/simonw/datasette/issues/1136 | 742014881 | MDEyOklzc3VlQ29tbWVudDc0MjAxNDg4MQ== | 9599 | 2020-12-09T20:01:27Z | 2020-12-09T20:01:27Z | OWNER | I'll write the release notes in the branch, then cherry-pick them over to `main`. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760621356 | |
https://github.com/simonw/datasette/issues/1136#issuecomment-742014366 | https://api.github.com/repos/simonw/datasette/issues/1136 | 742014366 | MDEyOklzc3VlQ29tbWVudDc0MjAxNDM2Ng== | 9599 | 2020-12-09T20:00:35Z | 2020-12-09T20:00:35Z | OWNER | Actually I'll start from 0.52.4 and then cherry-pick the fixes. git branch 0.52.x 0.52.4 git checkout 0.52.x git cherry-pick COMMIT | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760621356 | |
https://github.com/simonw/datasette/issues/1091#issuecomment-742010306 | https://api.github.com/repos/simonw/datasette/issues/1091 | 742010306 | MDEyOklzc3VlQ29tbWVudDc0MjAxMDMwNg== | 6739646 | 2020-12-09T19:53:18Z | 2020-12-09T19:59:52Z | NONE | I can't imagine this helps (esp. given your point about potential rewrites), but you can see that /datasette/ was correctly added to the sql form, but not to the "export-links" <img width="484" alt="Screen Shot 2020-12-09 at 2 51 09 PM" src="https://user-images.githubusercontent.com/6739646/101680055-234baa00-3a2e-11eb-8650-2b369bc6f031.png"> | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
742011049 | |
https://github.com/simonw/datasette/issues/1134#issuecomment-742012324 | https://api.github.com/repos/simonw/datasette/issues/1134 | 742012324 | MDEyOklzc3VlQ29tbWVudDc0MjAxMjMyNA== | 9599 | 2020-12-09T19:57:05Z | 2020-12-09T19:57:05Z | OWNER | Thanks for the bug report! | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760312579 | |
https://github.com/simonw/datasette/issues/1136#issuecomment-742009294 | https://api.github.com/repos/simonw/datasette/issues/1136 | 742009294 | MDEyOklzc3VlQ29tbWVudDc0MjAwOTI5NA== | 9599 | 2020-12-09T19:51:18Z | 2020-12-09T19:51:18Z | OWNER | Likewise, Read The Docs publishes as stable the docs from the latest tagged release, so I would expect that to work fine as well. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760621356 | |
https://github.com/simonw/datasette/issues/1136#issuecomment-742009101 | https://api.github.com/repos/simonw/datasette/issues/1136 | 742009101 | MDEyOklzc3VlQ29tbWVudDc0MjAwOTEwMQ== | 9599 | 2020-12-09T19:50:53Z | 2020-12-09T19:50:53Z | OWNER | My concern is if this will break anything about CI. I don't think it will - the code that deploys the latest `main` to https://latest.datasette.io/ should be unaffected, and the checkout code in `publish.yml` should check out the correct code based on the tag used for that release. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760621356 | |
https://github.com/simonw/datasette/issues/1136#issuecomment-742008087 | https://api.github.com/repos/simonw/datasette/issues/1136 | 742008087 | MDEyOklzc3VlQ29tbWVudDc0MjAwODA4Nw== | 9599 | 2020-12-09T19:48:56Z | 2020-12-09T19:48:56Z | OWNER | I think I'm going to create a branch called `0.52.x` that starts with `8ae0f9f7f0d644b0161165a1084f53acd2786f7c` and then tag the release from there. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
760621356 | |
https://github.com/simonw/datasette/issues/1091#issuecomment-742001510 | https://api.github.com/repos/simonw/datasette/issues/1091 | 742001510 | MDEyOklzc3VlQ29tbWVudDc0MjAwMTUxMA== | 6739646 | 2020-12-09T19:36:42Z | 2020-12-09T19:38:04Z | NONE | I don't think this fixes it: ``` grep -R datasette . ./sites-available/000-default.conf: ProxyPass /datasette http://127.0.0.1:8001/ ./sites-available/000-default.conf: #ProxyPassReverse /datasette http://127.0.0.1:8001/ ./sites-available/corpora-le-ssl.conf: ProxyPass /datasette http://0.0.0.0:8001 ./sites-available/corpora-le-ssl.conf: #ProxyPassReverse /datasette http://0.0.0.0:8001 ./sites-enabled/corpora-le-ssl.conf: ProxyPass /datasette http://0.0.0.0:8001 ./sites-enabled/corpora-le-ssl.conf: #ProxyPassReverse /datasette http://0.0.0.0:8001 ``` And I confirmed that I actually restarted the server. :rofl: https://corpora.tika.apache.org/datasette/file_profiles | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
742011049 | |
https://github.com/simonw/datasette/issues/1091#issuecomment-741804334 | https://api.github.com/repos/simonw/datasette/issues/1091 | 741804334 | MDEyOklzc3VlQ29tbWVudDc0MTgwNDMzNA== | 6739646 | 2020-12-09T14:26:05Z | 2020-12-09T14:26:05Z | NONE | Anything we can do to help debug this? Thank you, again! | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
742011049 | |
https://github.com/simonw/datasette/issues/766#issuecomment-741665253 | https://api.github.com/repos/simonw/datasette/issues/766 | 741665253 | MDEyOklzc3VlQ29tbWVudDc0MTY2NTI1Mw== | 2181410 | 2020-12-09T09:59:05Z | 2020-12-09T09:59:05Z | NONE | Hi Simon. Any news on using wildcard-searches with datasette? Thanks! | { "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
617323873 | |
https://github.com/simonw/datasette/issues/1133#issuecomment-740850920 | https://api.github.com/repos/simonw/datasette/issues/1133 | 740850920 | MDEyOklzc3VlQ29tbWVudDc0MDg1MDkyMA== | 9599 | 2020-12-08T18:55:59Z | 2020-12-08T18:55:59Z | OWNER | Inspiration was this script: https://gist.github.com/simonw/f6e3cd29fde5d15ea9cd746c942046ba - which pipes output through `tail -n +2` to strip off the headers. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
759695780 | |
https://github.com/simonw/datasette/issues/1133#issuecomment-740850057 | https://api.github.com/repos/simonw/datasette/issues/1133 | 740850057 | MDEyOklzc3VlQ29tbWVudDc0MDg1MDA1Nw== | 9599 | 2020-12-08T18:55:29Z | 2020-12-08T18:55:29Z | OWNER | Can work on this as part of #1062. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
759695780 | |
https://github.com/simonw/sqlite-utils/pull/204#issuecomment-740796067 | https://api.github.com/repos/simonw/sqlite-utils/issues/204 | 740796067 | MDEyOklzc3VlQ29tbWVudDc0MDc5NjA2Nw== | 9599 | 2020-12-08T17:49:22Z | 2020-12-08T17:49:22Z | OWNER | Great catch, thank you. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
752888228 | |
https://github.com/simonw/datasette/issues/815#issuecomment-740385032 | https://api.github.com/repos/simonw/datasette/issues/815 | 740385032 | MDEyOklzc3VlQ29tbWVudDc0MDM4NTAzMg== | 9599 | 2020-12-08T05:26:09Z | 2020-12-08T05:26:16Z | OWNER | Sure! It's a bit of a fiddle one - I've not found an approach that I like, but I also haven't thought about it since June. I'd love to see what you come up with! | { "total_count": 1, "+1": 0, "-1": 0, "laugh": 1, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
634663505 | |
https://github.com/simonw/datasette/issues/815#issuecomment-740383884 | https://api.github.com/repos/simonw/datasette/issues/815 | 740383884 | MDEyOklzc3VlQ29tbWVudDc0MDM4Mzg4NA== | 11761973 | 2020-12-08T05:23:18Z | 2020-12-08T05:23:18Z | NONE | hey! I'd like to take a look at this if you're open to a PR for it | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
634663505 | |
https://github.com/simonw/datasette/issues/1132#issuecomment-740228858 | https://api.github.com/repos/simonw/datasette/issues/1132 | 740228858 | MDEyOklzc3VlQ29tbWVudDc0MDIyODg1OA== | 9599 | 2020-12-07T22:50:36Z | 2020-12-07T22:50:36Z | OWNER | Documented here: https://docs.datasette.io/en/latest/json_api.html#column-filter-arguments Demo: https://latest.datasette.io/fixtures/facetable?tags__arraynotcontains=tag2 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
758899581 | |
https://github.com/simonw/datasette/issues/1131#issuecomment-739414118 | https://api.github.com/repos/simonw/datasette/issues/1131 | 739414118 | MDEyOklzc3VlQ29tbWVudDczOTQxNDExOA== | 9599 | 2020-12-05T20:48:33Z | 2020-12-05T20:48:33Z | OWNER | Oddly enough, I tried fixing this with `sys.stderr.write("{}\n".format(e))` - but my Click `CLIRunner` tests failed because `result.stderr` was an empty string. Adding `sys.stderr.flush()` to the code that output errors fixed that issue. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
757481949 | |
https://github.com/simonw/datasette/issues/398#issuecomment-739357330 | https://api.github.com/repos/simonw/datasette/issues/398 | 739357330 | MDEyOklzc3VlQ29tbWVudDczOTM1NzMzMA== | 9599 | 2020-12-05T19:36:27Z | 2020-12-05T19:36:27Z | OWNER | This was fixed in #749 by 88ac538b41a4753c3de9b509c3a0e13077f66182 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
398011658 | |
https://github.com/simonw/datasette/pull/1128#issuecomment-739355855 | https://api.github.com/repos/simonw/datasette/issues/1128 | 739355855 | MDEyOklzc3VlQ29tbWVudDczOTM1NTg1NQ== | 9599 | 2020-12-05T19:34:57Z | 2020-12-05T19:34:57Z | OWNER | Thanks for this! | { "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756867924 | |
https://github.com/simonw/datasette/issues/1131#issuecomment-739083673 | https://api.github.com/repos/simonw/datasette/issues/1131 | 739083673 | MDEyOklzc3VlQ29tbWVudDczOTA4MzY3Mw== | 9599 | 2020-12-05T00:02:10Z | 2020-12-05T00:02:10Z | OWNER | https://clig.dev/#the-basics > **Send messaging to stderr**. Log messages, errors, and so on should all be sent to stderr. This means that when commands are piped together, these messages are displayed to the user and not fed into the next command. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
757481949 | |
https://github.com/simonw/datasette/issues/1131#issuecomment-739083472 | https://api.github.com/repos/simonw/datasette/issues/1131 | 739083472 | MDEyOklzc3VlQ29tbWVudDczOTA4MzQ3Mg== | 9599 | 2020-12-05T00:01:12Z | 2020-12-05T00:01:12Z | OWNER | Here's why: https://github.com/simonw/datasette/blob/37f87b5e52e7f8ddd1c4ffcf368bd7a62a406a6d/datasette/database.py#L158-L163 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
757481949 | |
https://github.com/dogsheep/dogsheep-photos/pull/29#issuecomment-739058820 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/29 | 739058820 | MDEyOklzc3VlQ29tbWVudDczOTA1ODgyMA== | 9599 | 2020-12-04T22:32:35Z | 2020-12-04T22:32:35Z | MEMBER | Thanks for this! | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
638375985 | |
https://github.com/simonw/datasette/pull/1130#issuecomment-738907852 | https://api.github.com/repos/simonw/datasette/issues/1130 | 738907852 | MDEyOklzc3VlQ29tbWVudDczODkwNzg1Mg== | 3243482 | 2020-12-04T17:22:29Z | 2020-12-04T17:31:25Z | CONTRIBUTOR | EDIT: I misunderstood the problem. This seems like a fix better suited for Safari. But I don't have any Apple device to test it. ```css body { min-height: 100vh; min-height: -webkit-fill-available; } html { height: -webkit-fill-available; } ``` https://css-tricks.com/css-fix-for-100vh-in-mobile-webkit/ --- It's actually not that difficult to fix. Well, this is actually a workaround to keep viewport in place. I usually put a transition (forgot to do it here) that keeps page from resizing. ```css .container { min-height: 100vh; transition: height 10000s steps(0); } ``` `steps()` function prevents excessive layout calculations, and lets the page snap back into place (10000s ~= 3h later) in a single step. This fix also prevents page from jumping around when the keyboard pops up and down. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756876238 | |
https://github.com/simonw/datasette/issues/188#issuecomment-738905376 | https://api.github.com/repos/simonw/datasette/issues/188 | 738905376 | MDEyOklzc3VlQ29tbWVudDczODkwNTM3Ng== | 9599 | 2020-12-04T17:18:34Z | 2020-12-04T17:18:34Z | OWNER | This is likely to be covered by plugin hooks: #860 for the metadata and after investigating in #1042 it looks like the existing `prepare_jinja2_environment` hook may already be enough to load templates from the database. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
309047460 | |
https://github.com/simonw/datasette/issues/111#issuecomment-738904347 | https://api.github.com/repos/simonw/datasette/issues/111 | 738904347 | MDEyOklzc3VlQ29tbWVudDczODkwNDM0Nw== | 9599 | 2020-12-04T17:16:56Z | 2020-12-04T17:16:56Z | OWNER | This is STILL a good idea. | { "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
274615452 | |
https://github.com/simonw/datasette/pull/1130#issuecomment-738897582 | https://api.github.com/repos/simonw/datasette/issues/1130 | 738897582 | MDEyOklzc3VlQ29tbWVudDczODg5NzU4Mg== | 9599 | 2020-12-04T17:03:30Z | 2020-12-04T17:03:30Z | OWNER | I deployed this to https://datasette-issue-1129.vercel.app/ (using `datasette publish vercel fixtures.db --branch 8d4c69c6fb0ef741a19070f5172017ea3522e83c --about_url https://github.com/simonw/datasette/issues/1129 --about datasette/issues/1129 --project datasette-issue-1129`) - weirdly, on Mobile Safari the footer appears just below the visible window: ![RPReplay_Final1607100726](https://user-images.githubusercontent.com/9599/101191950-336b2000-360f-11eb-8f14-ed83bd86515c.gif) I've seen other problems with fixed footers on Mobile Safari too: at Eventbrite this was a really nasty problem for us to figure out: https://www.eventbrite.com/engineering/mobile-safari-why/ | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756876238 | |
https://github.com/simonw/datasette/pull/1130#issuecomment-738620153 | https://api.github.com/repos/simonw/datasette/issues/1130 | 738620153 | MDEyOklzc3VlQ29tbWVudDczODYyMDE1Mw== | 22429695 | 2020-12-04T07:34:48Z | 2020-12-04T07:34:48Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1130?src=pr&el=h1) Report > Merging [#1130](https://codecov.io/gh/simonw/datasette/pull/1130?src=pr&el=desc) (8d4c69c) into [main](https://codecov.io/gh/simonw/datasette/commit/49d8fc056844d5a537d6cfd96dab0dd5686fe718?el=desc) (49d8fc0) will **not change** coverage. > The diff coverage is `n/a`. [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1130/graphs/tree.svg?width=650&height=150&src=pr&token=eSahVY7kw1)](https://codecov.io/gh/simonw/datasette/pull/1130?src=pr&el=tree) ```diff @@ Coverage Diff @@ ## main #1130 +/- ## ======================================= Coverage 91.42% 91.42% ======================================= Files 31 31 Lines 3873 3873 ======================================= Hits 3541 3541 Misses 332 332 ``` ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1130?src=pr&el=continue). > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov.io/gh/simonw/datasette/pull/1130?src=pr&el=footer). Last update [49d8fc0...8d4c69c](https://codecov.io/gh/simonw/datasette/pull/1130?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments). | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756876238 | |
https://github.com/simonw/datasette/pull/1128#issuecomment-738613497 | https://api.github.com/repos/simonw/datasette/issues/1128 | 738613497 | MDEyOklzc3VlQ29tbWVudDczODYxMzQ5Nw== | 22429695 | 2020-12-04T07:17:12Z | 2020-12-04T07:17:12Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1128?src=pr&el=h1) Report > Merging [#1128](https://codecov.io/gh/simonw/datasette/pull/1128?src=pr&el=desc) (7004c3b) into [main](https://codecov.io/gh/simonw/datasette/commit/49d8fc056844d5a537d6cfd96dab0dd5686fe718?el=desc) (49d8fc0) will **decrease** coverage by `0.00%`. > The diff coverage is `n/a`. [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1128/graphs/tree.svg?width=650&height=150&src=pr&token=eSahVY7kw1)](https://codecov.io/gh/simonw/datasette/pull/1128?src=pr&el=tree) ```diff @@ Coverage Diff @@ ## main #1128 +/- ## ========================================== - Coverage 91.42% 91.42% -0.01% ========================================== Files 31 31 Lines 3873 3872 -1 ========================================== - Hits 3541 3540 -1 Misses 332 332 ``` | [Impacted Files](https://codecov.io/gh/simonw/datasette/pull/1128?src=pr&el=tree) | Coverage Δ | | |---|---|---| | [datasette/utils/asgi.py](https://codecov.io/gh/simonw/datasette/pull/1128/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3V0aWxzL2FzZ2kucHk=) | `92.13% <ø> (-0.04%)` | :arrow_down: | ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1128?src=pr&el=continue). > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov.io/gh/simonw/datasette/pull/1128?src=pr&el=footer). Last update [49d8fc0...7004c3b](https://codecov.io/gh/simonw/datasette/pull/1128?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments). | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756867924 | |
https://github.com/simonw/datasette/issues/1125#issuecomment-738554392 | https://api.github.com/repos/simonw/datasette/issues/1125 | 738554392 | MDEyOklzc3VlQ29tbWVudDczODU1NDM5Mg== | 9599 | 2020-12-04T04:16:57Z | 2020-12-04T04:16:57Z | OWNER | https://latest.datasette.io/-/versions now shows this: ```json { "python": { "version": "3.8.6", "full": "3.8.6 (default, Nov 18 2020, 13:49:49) \n[GCC 8.3.0]" }, "datasette": { "version": "0.52.3", "note": "49d8fc056844d5a537d6cfd96dab0dd5686fe718" }, "asgi": "3.0", "uvicorn": "0.12.3", "sqlite": { "version": "3.33.0", "fts_versions": [ "FTS5", "FTS4", "FTS3" ], "extensions": { "json1": null }, "compile_options": [] }, "pysqlite3": "0.4.4" } ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756622648 | |
https://github.com/simonw/datasette/issues/1125#issuecomment-738551280 | https://api.github.com/repos/simonw/datasette/issues/1125 | 738551280 | MDEyOklzc3VlQ29tbWVudDczODU1MTI4MA== | 9599 | 2020-12-04T04:03:54Z | 2020-12-04T04:03:54Z | OWNER | I'm going to check `pkg_resources.get_distribution("pysqlite3-binary").version` too. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756622648 | |
https://github.com/simonw/datasette/issues/1125#issuecomment-738550588 | https://api.github.com/repos/simonw/datasette/issues/1125 | 738550588 | MDEyOklzc3VlQ29tbWVudDczODU1MDU4OA== | 9599 | 2020-12-04T04:01:10Z | 2020-12-04T04:01:10Z | OWNER | Urgh, figuring out the version of `pysqlite3` is WAY harder than I expected. The `getversion` module looks like the smartest attempt at solving this problem generally, but I'd like to avoid adding another dependency just for this: https://github.com/smarie/python-getversion | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756622648 | |
https://github.com/simonw/datasette/issues/1125#issuecomment-738548693 | https://api.github.com/repos/simonw/datasette/issues/1125 | 738548693 | MDEyOklzc3VlQ29tbWVudDczODU0ODY5Mw== | 9599 | 2020-12-04T03:52:51Z | 2020-12-04T03:52:51Z | OWNER | That didn't work - https://latest.datasette.io/-/versions isn't showing the package. I bet that's because I'm actually installing `pysqlite3-binary` here: https://github.com/simonw/datasette/blob/e2fea36540e952d8d72c1bd0af7144b85b7a4671/.github/workflows/deploy-latest.yml#L57 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756622648 | |
https://github.com/simonw/datasette/issues/1126#issuecomment-738548393 | https://api.github.com/repos/simonw/datasette/issues/1126 | 738548393 | MDEyOklzc3VlQ29tbWVudDczODU0ODM5Mw== | 9599 | 2020-12-04T03:51:38Z | 2020-12-04T03:51:38Z | OWNER | That worked. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756761963 | |
https://github.com/simonw/datasette/issues/1125#issuecomment-738347171 | https://api.github.com/repos/simonw/datasette/issues/1125 | 738347171 | MDEyOklzc3VlQ29tbWVudDczODM0NzE3MQ== | 9599 | 2020-12-03T22:04:52Z | 2020-12-03T22:04:52Z | OWNER | ``` pkg_resources.get_distribution("pysqlite3").version Out[14]: '0.4.4' ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756622648 | |
https://github.com/simonw/datasette/issues/1124#issuecomment-738215686 | https://api.github.com/repos/simonw/datasette/issues/1124 | 738215686 | MDEyOklzc3VlQ29tbWVudDczODIxNTY4Ng== | 9599 | 2020-12-03T18:50:48Z | 2020-12-03T21:42:02Z | OWNER | I'm going to punt on writing a unit test for this (not sure how I'd simulate those symlinks) - I'll manually test it and push out a dot release instead. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756439516 | |
https://github.com/simonw/datasette/issues/1124#issuecomment-738215487 | https://api.github.com/repos/simonw/datasette/issues/1124 | 738215487 | MDEyOklzc3VlQ29tbWVudDczODIxNTQ4Nw== | 9599 | 2020-12-03T18:50:26Z | 2020-12-03T21:41:25Z | OWNER | This fix works - calling `.resolve()` on the `root_path` before the comparison to ensure symlinks are resolved: ```python # Ensure full_path is within root_path to avoid weird "../" tricks try: print("full_path={}, root_path={}".format(full_path, root_path)) full_path.relative_to(root_path.resolve()) except ValueError as e: print(" ValueError:", e) await asgi_send_html(send, "404", 404) return ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756439516 | |
https://github.com/simonw/datasette/issues/1124#issuecomment-738213342 | https://api.github.com/repos/simonw/datasette/issues/1124 | 738213342 | MDEyOklzc3VlQ29tbWVudDczODIxMzM0Mg== | 9599 | 2020-12-03T18:46:22Z | 2020-12-03T21:40:51Z | OWNER | I replaced that function with this code: ```python def asgi_static(root_path, chunk_size=4096, headers=None, content_type=None): async def inner_static(request, send): path = request.scope["url_route"]["kwargs"]["path"] print("path =", path) try: full_path = (Path(root_path) / path).resolve().absolute() except FileNotFoundError as e: print("FileNotFoundError:", e) await asgi_send_html(send, "404", 404) return if full_path.is_dir(): await asgi_send_html(send, "403: Directory listing is not allowed", 403) return # Ensure full_path is within root_path to avoid weird "../" tricks try: print("full_path={}, root_path={}".format(full_path, root_path)) full_path.relative_to(root_path) except ValueError as e: print(" ValueError:", e) await asgi_send_html(send, "404", 404) return try: await asgi_send_file(send, full_path, chunk_size=chunk_size) except FileNotFoundError: await asgi_send_html(send, "404", 404) return return inner_static ``` Edited using `vi /home/ec2-user/.local/pipx/venvs/datasette/lib/python3.7/site-packages/datasette/utils/asgi.py` The output shows me what the bug is: ``` $ datasette --get /-/static/app.css --pdb app_root = /home/ec2-user/.local/pipx/venvs/datasette/lib64/python3.7/site-packages path = app.css full_path=/home/ec2-user/.local/pipx/venvs/datasette/lib/python3.7/site-packages/datasette/static/app.css, root_path=/home/ec2-user/.local/pipx/venvs/datasette/lib64/python3.7/site-packages/datasette/static ValueError: '/home/ec2-user/.local/pipx/venvs/datasette/lib/python3.7/site-packages/datasette/static/app.css' does not start with '/home/ec2-user/.local/pipx/venvs/datasette/lib64/python3.7/site-packages/datasette/static' 404 ``` ` ValueError: '/home/ec2-user/.local/pipx/venvs/datasette/lib/python… | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756439516 | |
https://github.com/simonw/datasette/issues/1124#issuecomment-738313399 | https://api.github.com/repos/simonw/datasette/issues/1124 | 738313399 | MDEyOklzc3VlQ29tbWVudDczODMxMzM5OQ== | 9599 | 2020-12-03T21:10:54Z | 2020-12-03T21:10:54Z | OWNER | Confirmed that installing a fresh copy of Datasette 0.52.3 on that server works correctly as expected. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756439516 | |
https://github.com/simonw/datasette/issues/1124#issuecomment-738224865 | https://api.github.com/repos/simonw/datasette/issues/1124 | 738224865 | MDEyOklzc3VlQ29tbWVudDczODIyNDg2NQ== | 9599 | 2020-12-03T19:01:52Z | 2020-12-03T19:01:52Z | OWNER | https://github.com/simonw/datasette/runs/1494631261 ``` /home/runner/work/datasette/datasette/tests/test_html.py:81: AssertionError ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/home/runner/work/datasette/datasette/datasette/app.py", line 1039, in route_path response = await view(request, send) File "/home/runner/work/datasette/datasette/datasette/utils/asgi.py", line 297, in inner_static full_path.relative_to(root_path.resolve()) AttributeError: 'str' object has no attribute 'resolve' ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756439516 | |
https://github.com/simonw/datasette/issues/1124#issuecomment-738220067 | https://api.github.com/repos/simonw/datasette/issues/1124 | 738220067 | MDEyOklzc3VlQ29tbWVudDczODIyMDA2Nw== | 9599 | 2020-12-03T18:58:17Z | 2020-12-03T18:58:17Z | OWNER | I tested this by running: pipx uninstall datasette pipx install 'https://github.com/simonw/datasette/archive/6b4c55efea3e9d34d92cbe5f0066553ad9b14071.zip' To replace that version of Datasette (in the correct virtual environment) with this patch. It worked! ``` [ec2-user@ip-172-31-30-7 ~]$ datasette --get /-/static/app.css /* Reset and Page Setup ==================================================== */ ... ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756439516 | |
https://github.com/simonw/datasette/issues/1124#issuecomment-738211776 | https://api.github.com/repos/simonw/datasette/issues/1124 | 738211776 | MDEyOklzc3VlQ29tbWVudDczODIxMTc3Ng== | 9599 | 2020-12-03T18:43:21Z | 2020-12-03T18:43:21Z | OWNER | I'm suspicious of this code here:https://github.com/simonw/datasette/blob/e048791a9a2686f47d81a2c8aa88aa1966d82521/datasette/utils/asgi.py#L284-L307 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756439516 | |
https://github.com/simonw/datasette/issues/1124#issuecomment-738211152 | https://api.github.com/repos/simonw/datasette/issues/1124 | 738211152 | MDEyOklzc3VlQ29tbWVudDczODIxMTE1Mg== | 9599 | 2020-12-03T18:42:12Z | 2020-12-03T18:42:12Z | OWNER | Added a line to print out `app_root` from https://github.com/simonw/datasette/blob/e048791a9a2686f47d81a2c8aa88aa1966d82521/datasette/app.py#L848-L853 ``` app_root = /home/ec2-user/.local/pipx/venvs/datasette/lib64/python3.7/site-packages ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756439516 | |
https://github.com/simonw/datasette/issues/1124#issuecomment-738209642 | https://api.github.com/repos/simonw/datasette/issues/1124 | 738209642 | MDEyOklzc3VlQ29tbWVudDczODIwOTY0Mg== | 9599 | 2020-12-03T18:39:19Z | 2020-12-03T18:39:19Z | OWNER | The CSS files are in the expected location: ``` [ec2-user@ip-172-31-30-7 ~]$ find /home/ec2-user/.local/pipx/venvs/datasette | grep css /home/ec2-user/.local/pipx/venvs/datasette/lib/python3.7/site-packages/datasette/static/app.css /home/ec2-user/.local/pipx/venvs/datasette/lib/python3.7/site-packages/datasette/static/codemirror-5.57.0.min.css ``` Wow it's running an ANCIENT version of SQLite: ``` [ec2-user@ip-172-31-30-7 ~]$ datasette --get /-/versions.json {"python": {"version": "3.7.9", "full": "3.7.9 (default, Aug 27 2020, 21:58:41) \n[GCC 7.3.1 20180712 (Red Hat 7.3.1-9)]"}, "datasette": {"version": "0.52.2"}, "asgi": "3.0", "uvicorn": "0.12.3", "sqlite": {"version": "3.7.17", "fts_versions": ["FTS4", "FTS3"], "extensions": {}, "compile_options": ["DISABLE_DIRSYNC", "ENABLE_COLUMN_METADATA", "ENABLE_FTS3", "ENABLE_RTREE", "ENABLE_UNLOCK_NOTIFY", "SECURE_DELETE", "TEMP_STORE=1", "THREADSAFE=1"]}} ``` http://www.sqlite.org/releaselog/3_7_17.html - SQLite Release 3.7.17 On 2013-05-20 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
756439516 | |
https://github.com/simonw/datasette/issues/1121#issuecomment-737591281 | https://api.github.com/repos/simonw/datasette/issues/1121 | 737591281 | MDEyOklzc3VlQ29tbWVudDczNzU5MTI4MQ== | 9599 | 2020-12-03T01:03:18Z | 2020-12-03T01:03:18Z | OWNER | Demo: https://latest.datasette.io/fixtures?_bot=1 <img width="729" alt="fixtures" src="https://user-images.githubusercontent.com/9599/100950004-43c0b500-34c0-11eb-918c-aa959376461f.png"> | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
754178780 | |
https://github.com/simonw/datasette/issues/1100#issuecomment-737589314 | https://api.github.com/repos/simonw/datasette/issues/1100 | 737589314 | MDEyOklzc3VlQ29tbWVudDczNzU4OTMxNA== | 9599 | 2020-12-03T00:57:35Z | 2020-12-03T00:57:35Z | OWNER | Fixed in the demo: ``` % curl -XOPTIONS https://latest.datasette.io/fixtures.json ok% ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
747702144 | |
https://github.com/simonw/datasette/issues/1123#issuecomment-737586248 | https://api.github.com/repos/simonw/datasette/issues/1123 | 737586248 | MDEyOklzc3VlQ29tbWVudDczNzU4NjI0OA== | 9599 | 2020-12-03T00:47:37Z | 2020-12-03T00:47:37Z | OWNER | Affected tests: ``` FAILED tests/test_plugins.py::test_hook_table_actions[facetable] - AssertionE... FAILED tests/test_plugins.py::test_hook_table_actions[simple_view] - Assertio... ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
755721275 | |
https://github.com/simonw/datasette/issues/1100#issuecomment-737581719 | https://api.github.com/repos/simonw/datasette/issues/1100 | 737581719 | MDEyOklzc3VlQ29tbWVudDczNzU4MTcxOQ== | 9599 | 2020-12-03T00:35:23Z | 2020-12-03T00:35:23Z | OWNER | Replicated this against the live demo as well: ``` /tmp % curl -XOPTIONS https://latest.datasette.io/fixtures.json {"ok": false, "error": "object Response can't be used in 'await' expression", "status": 500, "title": null}% /tmp % ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
747702144 | |
https://github.com/simonw/datasette/pull/1122#issuecomment-737580813 | https://api.github.com/repos/simonw/datasette/issues/1122 | 737580813 | MDEyOklzc3VlQ29tbWVudDczNzU4MDgxMw== | 9599 | 2020-12-03T00:33:09Z | 2020-12-03T00:33:09Z | OWNER | This is a very neat fix, thank you. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
754179035 | |
https://github.com/simonw/datasette/issues/749#issuecomment-737580084 | https://api.github.com/repos/simonw/datasette/issues/749 | 737580084 | MDEyOklzc3VlQ29tbWVudDczNzU4MDA4NA== | 9599 | 2020-12-03T00:31:14Z | 2020-12-03T00:31:14Z | OWNER | This works! ``` /tmp % wget 'https://covid-19.datasettes.com/covid.db' --2020-12-02 16:28:02-- https://covid-19.datasettes.com/covid.db Resolving covid-19.datasettes.com (covid-19.datasettes.com)... 172.217.5.83 Connecting to covid-19.datasettes.com (covid-19.datasettes.com)|172.217.5.83|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [application/octet-stream] Saving to: ‘covid.db’ covid.db [ <=> ] 306.42M 3.27MB/s in 98s 2020-12-02 16:29:40 (3.13 MB/s) - ‘covid.db’ saved [321306624] ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
610829227 | |
https://github.com/simonw/datasette/issues/749#issuecomment-737563699 | https://api.github.com/repos/simonw/datasette/issues/749 | 737563699 | MDEyOklzc3VlQ29tbWVudDczNzU2MzY5OQ== | 9599 | 2020-12-02T23:45:42Z | 2020-12-02T23:45:42Z | OWNER | I asked about this on Twitter - https://twitter.com/steren/status/1334281184965140483 > You simply need to send the `Transfer-Encoding: chunked` header. | { "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
610829227 | |
https://github.com/simonw/datasette/issues/942#issuecomment-737463116 | https://api.github.com/repos/simonw/datasette/issues/942 | 737463116 | MDEyOklzc3VlQ29tbWVudDczNzQ2MzExNg== | 9599 | 2020-12-02T20:02:10Z | 2020-12-02T20:03:01Z | OWNER | My idea is that if you installed my proposed plugin you wouldn't need `metadata.json` at all - your metadata would instead live in a table in the connected SQLite database files - either one table per database (so the metadata can live in the same place as the data) or maybe also in a dedicated separate database file, for if you want to add metadata to an otherwise read-only database. The plugin would then provide a UI for editing that metadata - maybe by configuring some writable canned queries or maybe something more custom than that. Or you could edit the metadata by manually editing the SQLite database file (or loading data into it using a tool like [yaml-to-sqlite](https://github.com/simonw/yaml-to-sqlite)). | { "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
681334912 | |
https://github.com/simonw/datasette/issues/942#issuecomment-737428262 | https://api.github.com/repos/simonw/datasette/issues/942 | 737428262 | MDEyOklzc3VlQ29tbWVudDczNzQyODI2Mg== | 596279 | 2020-12-02T18:55:21Z | 2020-12-02T18:55:21Z | NONE | Are you thinking that those metadata tables would be added to the SQLite DB by Datasette, when you tell it to wrap up the database, with the metadata coming from the `metadata.json`? Would it be easy to allow the prepopulation of those tables in the database itself? We've been struggling with the best way to make sure that the data is always accompanied by metadata, and baking it all into the database itself would be nice, since then we wouldn't need to worry about separately distributing different files in different contexts. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
681334912 | |
https://github.com/simonw/datasette/issues/942#issuecomment-737402392 | https://api.github.com/repos/simonw/datasette/issues/942 | 737402392 | MDEyOklzc3VlQ29tbWVudDczNzQwMjM5Mg== | 9599 | 2020-12-02T18:08:55Z | 2020-12-02T18:08:55Z | OWNER | SQLite does let you add comments in your CREATE TABLE statements: ```sql CREATE TABLE something ( id integer primary key, -- integer primary key created text -- created date as ISO datetime ); ``` But the only mechanism for reading those back is to retrieve that `CREATE TABLE` block of SQL from the `sqlite_master` table and run a parser against it. I've so far resisted adding a SQL syntax parser to Datasette for complexity reasons - though I'm increasingly thinking I'll need to do it at some point. I think I'll leave this to plugins. I'm definitely going to build a plugin that lets you store metadata for tables and columns in a SQLite database table, which will then support interactively editing metadata through a UI. A plugin which extracts column comments from the SQLite CREATE TABLE comments would be feasible too, if I design the plugin hooks well. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
681334912 | |
https://github.com/simonw/datasette/issues/1111#issuecomment-736322290 | https://api.github.com/repos/simonw/datasette/issues/1111 | 736322290 | MDEyOklzc3VlQ29tbWVudDczNjMyMjI5MA== | 3243482 | 2020-12-01T08:54:47Z | 2020-12-01T08:54:47Z | CONTRIBUTOR | Somewhat related: https://github.com/simonw/datasette/issues/859 I fixed the issue with forking and disabling the counts for hidden tables. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
751195017 | |
https://github.com/simonw/datasette/pull/1122#issuecomment-736318377 | https://api.github.com/repos/simonw/datasette/issues/1122 | 736318377 | MDEyOklzc3VlQ29tbWVudDczNjMxODM3Nw== | 22429695 | 2020-12-01T08:47:33Z | 2020-12-01T08:47:33Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1122?src=pr&el=h1) Report > Merging [#1122](https://codecov.io/gh/simonw/datasette/pull/1122?src=pr&el=desc) (94ea22f) into [main](https://codecov.io/gh/simonw/datasette/commit/a970276b9999687b96c5e11ea1c817d814f5d267?el=desc) (a970276) will **not change** coverage. > The diff coverage is `n/a`. [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1122/graphs/tree.svg?width=650&height=150&src=pr&token=eSahVY7kw1)](https://codecov.io/gh/simonw/datasette/pull/1122?src=pr&el=tree) ```diff @@ Coverage Diff @@ ## main #1122 +/- ## ======================================= Coverage 91.49% 91.49% ======================================= Files 31 31 Lines 3856 3856 ======================================= Hits 3528 3528 Misses 328 328 ``` ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1122?src=pr&el=continue). > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov.io/gh/simonw/datasette/pull/1122?src=pr&el=footer). Last update [a970276...94ea22f](https://codecov.io/gh/simonw/datasette/pull/1122?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments). | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
754179035 | |
https://github.com/simonw/datasette/issues/942#issuecomment-736173084 | https://api.github.com/repos/simonw/datasette/issues/942 | 736173084 | MDEyOklzc3VlQ29tbWVudDczNjE3MzA4NA== | 596279 | 2020-12-01T02:20:58Z | 2020-12-01T02:20:58Z | NONE | Are there common patterns for storing column-based metadata inside SQLite itself? I know Postgres allows "comment" fields, which this is kind of trying to replicate. Should the `units` and `description` and possibly other per-column metadata fields be combined into a single (tabular?) structure, that would be displayed above the data on the table / query results page? | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
681334912 | |
https://github.com/simonw/datasette/issues/1119#issuecomment-736142201 | https://api.github.com/repos/simonw/datasette/issues/1119 | 736142201 | MDEyOklzc3VlQ29tbWVudDczNjE0MjIwMQ== | 9599 | 2020-12-01T00:41:14Z | 2020-12-01T00:41:14Z | OWNER | On my laptop: <img width="1123" alt="fixtures__generated_columns__1_row" src="https://user-images.githubusercontent.com/9599/100681839-8734eb00-3329-11eb-8aea-813bdc18efa1.png"> https://latest.datasette.io/-/versions is running SQLite 3.27.2 at the moment so it won't show that table until it gets to 3.31.0. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753876808 | |
https://github.com/simonw/datasette/pull/1120#issuecomment-736135125 | https://api.github.com/repos/simonw/datasette/issues/1120 | 736135125 | MDEyOklzc3VlQ29tbWVudDczNjEzNTEyNQ== | 22429695 | 2020-12-01T00:22:36Z | 2020-12-01T00:22:36Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1120?src=pr&el=h1) Report > Merging [#1120](https://codecov.io/gh/simonw/datasette/pull/1120?src=pr&el=desc) (ddad8db) into [main](https://codecov.io/gh/simonw/datasette/commit/461670a0b87efa953141b449a9a261919864ceb3?el=desc) (461670a) will **increase** coverage by `0.00%`. > The diff coverage is `100.00%`. [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1120/graphs/tree.svg?width=650&height=150&src=pr&token=eSahVY7kw1)](https://codecov.io/gh/simonw/datasette/pull/1120?src=pr&el=tree) ```diff @@ Coverage Diff @@ ## main #1120 +/- ## ======================================= Coverage 91.48% 91.49% ======================================= Files 31 31 Lines 3852 3856 +4 ======================================= + Hits 3524 3528 +4 Misses 328 328 ``` | [Impacted Files](https://codecov.io/gh/simonw/datasette/pull/1120?src=pr&el=tree) | Coverage Δ | | |---|---|---| | [datasette/utils/\_\_init\_\_.py](https://codecov.io/gh/simonw/datasette/pull/1120/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3V0aWxzL19faW5pdF9fLnB5) | `94.10% <100.00%> (ø)` | | | [datasette/utils/sqlite.py](https://codecov.io/gh/simonw/datasette/pull/1120/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3V0aWxzL3NxbGl0ZS5weQ==) | `100.00% <100.00%> (ø)` | | ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1120?src=pr&el=continue). > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov.io/gh/simonw/datasette/pull/1120?src=pr&el=footer). Last update [461670a...ddad8db](https://codecov.io/gh/simonw/datasette/pull/1120?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments). | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753898359 | |
https://github.com/simonw/datasette/pull/1117#issuecomment-736088949 | https://api.github.com/repos/simonw/datasette/issues/1117 | 736088949 | MDEyOklzc3VlQ29tbWVudDczNjA4ODk0OQ== | 2789593 | 2020-11-30T22:15:58Z | 2020-11-30T22:23:19Z | NONE | I just deployed this and its working great. ~In a very unscientific benchmark my response times went from around 22-25ms to 33-36ms, but I didn't even dig enough to confirm the latency is related to the change. It's on a VPS, so maybe the load changed.~ I don't see any difference in performance. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753767911 | |
https://github.com/simonw/datasette/pull/1117#issuecomment-736067475 | https://api.github.com/repos/simonw/datasette/issues/1117 | 736067475 | MDEyOklzc3VlQ29tbWVudDczNjA2NzQ3NQ== | 22429695 | 2020-11-30T21:28:22Z | 2020-11-30T21:28:22Z | NONE | # [Codecov](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=h1) Report > Merging [#1117](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=desc) (ccdf2c6) into [main](https://codecov.io/gh/simonw/datasette/commit/dea3c508b39528e566d711c38a467b3d372d220b?el=desc) (dea3c50) will **decrease** coverage by `0.00%`. > The diff coverage is `95.23%`. [![Impacted file tree graph](https://codecov.io/gh/simonw/datasette/pull/1117/graphs/tree.svg?width=650&height=150&src=pr&token=eSahVY7kw1)](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=tree) ```diff @@ Coverage Diff @@ ## main #1117 +/- ## ========================================== - Coverage 91.48% 91.48% -0.01% ========================================== Files 30 31 +1 Lines 3841 3852 +11 ========================================== + Hits 3514 3524 +10 - Misses 327 328 +1 ``` | [Impacted Files](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=tree) | Coverage Δ | | |---|---|---| | [datasette/utils/\_\_init\_\_.py](https://codecov.io/gh/simonw/datasette/pull/1117/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3V0aWxzL19faW5pdF9fLnB5) | `94.10% <87.50%> (-0.20%)` | :arrow_down: | | [datasette/utils/sqlite.py](https://codecov.io/gh/simonw/datasette/pull/1117/diff?src=pr&el=tree#diff-ZGF0YXNldHRlL3V0aWxzL3NxbGl0ZS5weQ==) | `100.00% <100.00%> (ø)` | | ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=continue). > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=footer). Last update [dea3c50...ccdf2c6](https://codecov.io/gh/simonw/datasette/pull/1117?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-co… | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753767911 | |
https://github.com/simonw/datasette/issues/1116#issuecomment-736030599 | https://api.github.com/repos/simonw/datasette/issues/1116 | 736030599 | MDEyOklzc3VlQ29tbWVudDczNjAzMDU5OQ== | 9599 | 2020-11-30T20:41:41Z | 2020-11-30T20:41:41Z | OWNER | Here's the problem: https://www.sqlite.org/changes.html#version_3_26_0 > ### 2018-12-01 (3.26.0) > > - Added [PRAGMA table_xinfo](https://www.sqlite.org/pragma.html#pragma_table_xinfo) that works just like [PRAGMA table_info](https://www.sqlite.org/pragma.html#pragma_table_info) except that it also shows [hidden columns](https://www.sqlite.org/vtab.html#hiddencol) in virtual tables. CI is running 3.22.0. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753668177 | |
https://github.com/simonw/datasette/pull/1117#issuecomment-736029337 | https://api.github.com/repos/simonw/datasette/issues/1117 | 736029337 | MDEyOklzc3VlQ29tbWVudDczNjAyOTMzNw== | 9599 | 2020-11-30T20:39:06Z | 2020-11-30T20:39:06Z | OWNER | Here's the problem: https://www.sqlite.org/changes.html#version_3_26_0 > ### 2018-12-01 (3.26.0) > > - Added [PRAGMA table_xinfo](https://www.sqlite.org/pragma.html#pragma_table_xinfo) that works just like [PRAGMA table_info](https://www.sqlite.org/pragma.html#pragma_table_info) except that it also shows [hidden columns](https://www.sqlite.org/vtab.html#hiddencol) in virtual tables. CI is running 3.22.0. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753767911 | |
https://github.com/simonw/datasette/pull/1117#issuecomment-736028726 | https://api.github.com/repos/simonw/datasette/issues/1117 | 736028726 | MDEyOklzc3VlQ29tbWVudDczNjAyODcyNg== | 9599 | 2020-11-30T20:37:50Z | 2020-11-30T20:37:50Z | OWNER | This kind of problem is why I have a `tmate` workflow: <img width="1086" alt="Actions_·_simonw_datasette" src="https://user-images.githubusercontent.com/9599/100660845-72dff680-3307-11eb-89dc-211d226f68dd.png"> | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753767911 | |
https://github.com/simonw/datasette/pull/1117#issuecomment-736023089 | https://api.github.com/repos/simonw/datasette/issues/1117 | 736023089 | MDEyOklzc3VlQ29tbWVudDczNjAyMzA4OQ== | 9599 | 2020-11-30T20:26:27Z | 2020-11-30T20:26:27Z | OWNER | On my laptop: ``` platform darwin -- Python 3.8.6, pytest-6.0.1, py-1.9.0, pluggy-0.13.1 SQLite: 3.33.0 ``` In CI they are all SQLite: 3.22.0 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753767911 | |
https://github.com/simonw/datasette/pull/1117#issuecomment-736018609 | https://api.github.com/repos/simonw/datasette/issues/1117 | 736018609 | MDEyOklzc3VlQ29tbWVudDczNjAxODYwOQ== | 9599 | 2020-11-30T20:17:31Z | 2020-11-30T20:17:31Z | OWNER | I need to replicate these failures on my laptop. My hunch is that this is down to the version of SQLite available to Python. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753767911 | |
https://github.com/simonw/datasette/issues/1116#issuecomment-736015487 | https://api.github.com/repos/simonw/datasette/issues/1116 | 736015487 | MDEyOklzc3VlQ29tbWVudDczNjAxNTQ4Nw== | 9599 | 2020-11-30T20:11:07Z | 2020-11-30T20:11:07Z | OWNER | Working on this in a pull request: https://github.com/simonw/datasette/pull/1117 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753668177 | |
https://github.com/simonw/datasette/issues/1116#issuecomment-736014372 | https://api.github.com/repos/simonw/datasette/issues/1116 | 736014372 | MDEyOklzc3VlQ29tbWVudDczNjAxNDM3Mg== | 9599 | 2020-11-30T20:08:48Z | 2020-11-30T20:08:48Z | OWNER | Ouch, the tests pass on my laptop but failed in CI: https://github.com/simonw/datasette/actions/runs/392367997 Lots of failures look like this: ``` ERROR: conn=<sqlite3.Connection object at 0x7f44f0494030>, sql = 'select rowid, from facetable order by rowid limit 51', params = {}: near "from": syntax error ``` Note the `select rowid, from...` - so it looks like invalid SQL queries are being constructed maybe due to mis-detecting columns somehow. I wonder why it didn't fail on my laptop? | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753668177 | |
https://github.com/simonw/datasette/issues/1116#issuecomment-736010720 | https://api.github.com/repos/simonw/datasette/issues/1116 | 736010720 | MDEyOklzc3VlQ29tbWVudDczNjAxMDcyMA== | 9599 | 2020-11-30T20:01:53Z | 2020-11-30T20:01:53Z | OWNER | I'm OK exposing hidden columns, unless someone comes up with a pressing reason not to. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753668177 | |
https://github.com/simonw/datasette/issues/1116#issuecomment-736005833 | https://api.github.com/repos/simonw/datasette/issues/1116 | 736005833 | MDEyOklzc3VlQ29tbWVudDczNjAwNTgzMw== | 2789593 | 2020-11-30T19:54:39Z | 2020-11-30T19:54:39Z | NONE | @simonw thanks for investigating so quickly. If it is undesirable to change that hidden behavior, maybe something like this is a suitable workaround: ``` SELECT * FROM pragma_table_xinfo('deeds') where hidden in (0,2); 0|body|TEXT|0||0|0 1|id|INT GENERATED ALWAYS|0||0|2 2|consideration|INT GENERATED ALWAYS|0||0|2 ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753668177 | |
https://github.com/simonw/datasette/issues/1116#issuecomment-736004383 | https://api.github.com/repos/simonw/datasette/issues/1116 | 736004383 | MDEyOklzc3VlQ29tbWVudDczNjAwNDM4Mw== | 9599 | 2020-11-30T19:51:51Z | 2020-11-30T19:51:51Z | OWNER | This change will also have an impact on how hidden virtual FTS tables are displayed, since apparently those have some hidden columns: https://latest.datasette.io/fixtures?sql=select+*+from+pragma_table_xinfo%28%27searchable_fts%27%29 | cid | name | type | notnull | dflt_value | pk | hidden | | --- | --- | --- | --- | --- | --- | --- | | 0 | text1 | | 0 | | 0 | 0 | | 1 | text2 | | 0 | | 0 | 0 | | 2 | name with . and spaces | | 0 | | 0 | 0 | | 3 | searchable_fts | | 0 | | 0 | 1 | | 4 | docid | | 0 | | 0 | 1 | | 5 | __langid | | 0 | | 0 | 1 | | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753668177 | |
https://github.com/simonw/datasette/issues/1116#issuecomment-735995695 | https://api.github.com/repos/simonw/datasette/issues/1116 | 735995695 | MDEyOklzc3VlQ29tbWVudDczNTk5NTY5NQ== | 9599 | 2020-11-30T19:34:15Z | 2020-11-30T19:34:15Z | OWNER | Generated column support was added in SQLite 3.31.0, so any unit tests I write for this should use skipIf to only run on that version or later. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753668177 | |
https://github.com/simonw/datasette/issues/1116#issuecomment-735993935 | https://api.github.com/repos/simonw/datasette/issues/1116 | 735993935 | MDEyOklzc3VlQ29tbWVudDczNTk5MzkzNQ== | 9599 | 2020-11-30T19:30:44Z | 2020-11-30T19:32:15Z | OWNER | It looks like `PRAGMA table_info` skips "hidden" columns: https://www.sqlite.org/pragma.html#pragma_table_info But `PRAGMA table_xinfo` does not: https://www.sqlite.org/pragma.html#pragma_table_xinfo Compare https://latest.datasette.io/fixtures?sql=select+*+from+pragma_table_info%28%27searchable%27%29 to https://latest.datasette.io/fixtures?sql=select+*+from+pragma_table_xinfo%28%27searchable%27%29 - the `xinfo` one has an additional `hidden` column. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753668177 | |
https://github.com/simonw/datasette/issues/1116#issuecomment-735992106 | https://api.github.com/repos/simonw/datasette/issues/1116 | 735992106 | MDEyOklzc3VlQ29tbWVudDczNTk5MjEwNg== | 9599 | 2020-11-30T19:27:10Z | 2020-11-30T19:27:10Z | OWNER | I'm treating this as a bug - these columns should definitely be visible in Datasette. I created my own test database using SQLite from Homebrew like this: ``` /usr/local/Cellar/sqlite/3.33.0/bin/sqlite3 deeds.db << EOF CREATE TABLE deeds ( body TEXT, id INT GENERATED ALWAYS AS (json_extract(body, '$.id')) STORED, consideration INT GENERATED ALWAYS AS (json_extract(body, '$.consideration')) STORED ); INSERT INTO deeds (body) VALUES ('{ "id": 1, "consideration": "This is the consideration" }'); EOF ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753668177 | |
https://github.com/simonw/datasette/issues/263#issuecomment-735960132 | https://api.github.com/repos/simonw/datasette/issues/263 | 735960132 | MDEyOklzc3VlQ29tbWVudDczNTk2MDEzMg== | 9599 | 2020-11-30T18:25:17Z | 2020-11-30T18:25:17Z | OWNER | Fixing this would unblock this issue for switching `datasette-graphql` to using `datasette.client` internally: https://github.com/simonw/datasette-graphql/issues/61 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
323671577 | |
https://github.com/dogsheep/github-to-sqlite/issues/53#issuecomment-735485677 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/53 | 735485677 | MDEyOklzc3VlQ29tbWVudDczNTQ4NTY3Nw== | 9599 | 2020-11-30T00:36:09Z | 2020-11-30T00:36:09Z | MEMBER | Given rate limits (see #51) this command might be better implemented by running a `git clone` into a temporary directory - doing so would retrieve all of the files in one go. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
753000405 | |
https://github.com/dogsheep/github-to-sqlite/issues/51#issuecomment-735484186 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/51 | 735484186 | MDEyOklzc3VlQ29tbWVudDczNTQ4NDE4Ng== | 9599 | 2020-11-30T00:29:31Z | 2020-11-30T00:29:31Z | MEMBER | This just caused a failure in deploying the demo: https://github.com/dogsheep/github-to-sqlite/runs/1471304407?check_suite_focus=true ``` File "/opt/hostedtoolcache/Python/3.8.6/x64/bin/github-to-sqlite", line 33, in <module> sys.exit(load_entry_point('github-to-sqlite', 'console_scripts', 'github-to-sqlite')()) File "/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py", line 829, in __call__ return self.main(*args, **kwargs) File "/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/opt/hostedtoolcache/Python/3.8.6/x64/lib/python3.8/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/home/runner/work/github-to-sqlite/github-to-sqlite/github_to_sqlite/cli.py", line 142, in issue_comments for comment in utils.fetch_issue_comments(repo, token, issue): File "/home/runner/work/github-to-sqlite/github-to-sqlite/github_to_sqlite/utils.py", line 380, in fetch_issue_comments for comments in paginate(url, headers): File "/home/runner/work/github-to-sqlite/github-to-sqlite/github_to_sqlite/utils.py", line 472, in paginate raise GitHubError.from_response(response) github_to_sqlite.utils.GitHubError: ('API rate limit exceeded for user ID 9599.', 403) Error: Process completed with exit code 1. ``` | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
703246031 |