home / github

Menu
  • Search all tables
  • GraphQL API

issues

Table actions
  • GraphQL API for issues

43 rows where comments = 8 and user = 9599 sorted by updated_at descending

✖
✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: milestone, author_association, created_at (date), updated_at (date), closed_at (date)

repo 5

  • datasette 33
  • sqlite-utils 4
  • dogsheep-beta 2
  • github-to-sqlite 2
  • dogsheep-photos 2

type 2

  • issue 38
  • pull 5

state 2

  • closed 35
  • open 8
id node_id number title user state locked assignee milestone comments created_at updated_at ▲ closed_at author_association pull_request body repo type active_lock_reason performed_via_github_app reactions draft state_reason
1907695234 I_kwDOBm6k_c5xtR6C 2194 Deploy failing with "plugins/alternative_route.py: Not a directory" simonw 9599 closed 0     8 2023-09-21T20:17:49Z 2023-09-21T22:08:19Z 2023-09-21T22:08:19Z OWNER  

https://github.com/simonw/datasette/actions/runs/6266449018/job/17017460074

This is a bit of a mystery, I don't think I've changed anything recently that could have broken this.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/2194/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1865281760 PR_kwDOBm6k_c5Ys3C5 2154 Cascade for restricted token view-table/view-database/view-instance operations simonw 9599 closed 0     8 2023-08-24T14:24:23Z 2023-08-29T16:32:35Z 2023-08-29T16:32:34Z OWNER simonw/datasette/pulls/2154

Refs: - #2102

Also includes a prototype implementation of --actor option which I'm using for testing this, from: - #2153


:books: Documentation preview :books:: https://datasette--2154.org.readthedocs.build/en/2154/

datasette 107914493 pull    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/2154/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
0  
459509126 MDU6SXNzdWU0NTk1MDkxMjY= 516 Enforce import sort order with isort simonw 9599 open 0     8 2019-06-22T20:35:50Z 2023-08-23T02:15:36Z   OWNER  

I want to use isort to order imports. A few steps here:

  • [x] Add a .isort.cfg file (see below)
  • [x] Use isort -rc to reformat existing code
  • [ ] Commit this change
  • [x] Add a unit test that ensures future changes remain isort compatible
datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/516/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
1726531350 I_kwDOBm6k_c5m6McW 2079 Datasette should serve Access-Control-Max-Age simonw 9599 closed 0     8 2023-05-25T21:50:50Z 2023-05-25T22:56:28Z 2023-05-25T22:08:35Z OWNER  

Currently the CORS headers served are:

https://github.com/simonw/datasette/blob/9584879534ff0556e04e4c420262972884cac87b/datasette/utils/init.py#L1139-L1143

Serving Access-Control-Max-Age: 600 would allow browsers to cache that for 10 minutes, avoiding additional CORS pre-flight OPTIONS requests during that time.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/2079/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1432013704 I_kwDOBm6k_c5VWsuI 1878 /db/table/-/upsert API simonw 9599 closed 0   Datasette 1.0a2 8711695 8 2022-11-01T20:01:18Z 2022-12-08T01:12:18Z 2022-12-08T01:12:17Z OWNER  

Equivalent to sqlite-utils upsert: https://sqlite-utils.datasette.io/en/stable/python-api.html#upserting-data

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1878/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1473814539 PR_kwDOBm6k_c5EMVug 1931 /db/table/-/upsert simonw 9599 closed 0   Datasette 1.0a2 8711695 8 2022-12-03T07:01:44Z 2022-12-08T01:12:17Z 2022-12-08T01:12:16Z OWNER simonw/datasette/pulls/1931

Refs #1878

Still todo: - [x] Support "return": true properly for upserts (with tests) - [x] Require both insert-row and update-row permissions - [x] Tests are going to need to cover both rowid-only and compound primary key tables, including all of the error states - [x] Documentation


:books: Documentation preview :books:: https://datasette--1931.org.readthedocs.build/en/1931/

datasette 107914493 pull    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1931/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
0  
1396948693 I_kwDOBm6k_c5TQ77V 1829 Table/database that is private due to inherited permissions does not show padlock simonw 9599 closed 0     8 2022-10-04T23:14:16Z 2022-10-24T02:23:46Z 2022-10-24T02:11:37Z OWNER  

I noticed that a table page that is private because the database or instance is private, e.g. this one:

Is not displaying the padlock icon that indicates the table is not visible to the public.

Same issue for the database page too, which in this case is private due to view-instance.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1829/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1170144879 I_kwDOBm6k_c5Fvv5v 1660 Refactor and simplify Datasette routing and views simonw 9599 closed 0   Datasette 1.0 3268330 8 2022-03-15T19:56:56Z 2022-03-21T19:19:12Z 2022-03-21T19:19:01Z OWNER  

While working on: - https://github.com/simonw/datasette/issues/1657 - https://github.com/simonw/datasette/issues/1439

It became very clear that the least maintainable part of Datasette at the moment is the way routing to the database, table and row views work - in particular the subclassing mechanism with BaseView and DataView, but also the complex variety of ways in which the URL routes capture different named regular expression groups.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1660/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1161584460 I_kwDOBm6k_c5FPF9M 1651 Get rid of the no-longer necessary ?_format=json hack for tables called x.json simonw 9599 closed 0   Datasette 1.0 3268330 8 2022-03-07T15:40:42Z 2022-03-19T04:04:50Z 2022-03-15T18:25:42Z OWNER  

Tidy up from: - #1439

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1651/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
557842245 MDU6SXNzdWU1NTc4NDIyNDU= 79 Helper methods for working with SpatiaLite simonw 9599 closed 0     8 2020-01-31T00:39:19Z 2022-02-05T00:04:25Z 2022-02-04T05:55:11Z OWNER  

As demonstrated by this piece of documentation, using SpatiaLite with sqlite-utils requires a fair bit of boilerplate: https://github.com/simonw/sqlite-utils/blob/f7289174e66ae4d91d57de94bbd9d09fabf7aff4/docs/python-api.rst#L880-L909

sqlite-utils 140912432 issue    
{
    "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/79/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1083657868 I_kwDOBm6k_c5Al06M 1565 Documented JavaScript variables on different templates made available for plugins simonw 9599 open 0     8 2021-12-17T22:30:51Z 2021-12-19T22:37:29Z   OWNER  

While working on https://github.com/simonw/datasette-leaflet-freedraw/issues/10 I found myself writing this atrocity to figure out the SQL query used for a specific table page:

javascript let innerSql = Array.from(document.getElementsByTagName("span")).filter( el => el.innerText == "View and edit SQL" )[0].parentElement.getAttribute("title") This is obviously bad - it's very brittle, and will break if I ever change the text on that link (like localizing it for example).

Instead, I think pages like that one should have a block of script at the bottom something like this: javascript window.datasette = window.datasette || {}; datasette.view_name = 'table'; datasette.table_sql = 'select * from ...';

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1565/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
969855774 MDU6SXNzdWU5Njk4NTU3NzQ= 1432 Rename Datasette.__init__(config=) parameter to settings= simonw 9599 open 0     8 2021-08-13T01:00:27Z 2021-10-19T01:16:41Z   OWNER  

While I'm doing this I should rename this internal variable to avoid confusion in the future:

https://github.com/simonw/datasette/blob/e837095ef35ae155b4c78cc9a8b7133a48c94f03/datasette/app.py#L203

Originally posted by @simonw in https://github.com/simonw/datasette/issues/1431#issuecomment-898072940

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1432/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
956303470 MDU6SXNzdWU5NTYzMDM0NzA= 1406 Tests failing with FileNotFoundError in runner.isolated_filesystem simonw 9599 closed 0     8 2021-07-30T00:39:00Z 2021-07-31T18:56:35Z 2021-07-31T18:56:35Z OWNER  

e.g. https://github.com/simonw/datasette/runs/3197141955

I've seen this error before, but I don't yet have a good workaround for it.

``` @contextlib.contextmanager def isolated_filesystem( self, temp_dir: t.Optional[t.Union[str, os.PathLike]] = None ) -> t.Iterator[str]: """A context manager that creates a temporary directory and changes the current working directory to it. This isolates tests that affect the contents of the CWD to prevent them from interfering with each other.

    :param temp_dir: Create the temporary directory under this
        directory. If given, the created directory is not removed
        when exiting.

    .. versionchanged:: 8.0
        Added the ``temp_dir`` parameter.
    """
  cwd = os.getcwd()

E FileNotFoundError: [Errno 2] No such file or directory

/opt/hostedtoolcache/Python/3.6.14/x64/lib/python3.6/site-packages/click/testing.py:466: FileNotFoundError =========================== short test summary info ============================ FAILED tests/test_publish_cloudrun.py::test_publish_cloudrun_apt_get_install FAILED tests/test_publish_cloudrun.py::test_publish_cloudrun_extra_options[---setting force_https_urls on] FAILED tests/test_publish_cloudrun.py::test_publish_cloudrun_extra_options[--setting base_url /foo---setting base_url /foo --setting force_https_urls on] FAILED tests/test_publish_cloudrun.py::test_publish_cloudrun_extra_options[--setting force_https_urls off---setting force_https_urls off] FAILED tests/test_publish_heroku.py::test_publish_heroku_requires_heroku - Fi... FAILED tests/test_publish_heroku.py::test_publish_heroku_installs_plugin - Fi... FAILED tests/test_publish_heroku.py::test_publish_heroku - FileNotFoundError:... FAILED tests/test_publish_heroku.py::test_publish_heroku_plugin_secrets - Fil... ================== 8 failed, 920 passed in 188.22s (0:03:08) =================== ```

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1406/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
935930820 MDU6SXNzdWU5MzU5MzA4MjA= 1387 absolute_url() behind a proxy assembles incorrect http://127.0.0.1:8001/ URLs simonw 9599 closed 0     8 2021-07-02T16:58:25Z 2021-07-02T17:58:23Z 2021-07-02T17:33:05Z OWNER  

Reported in the wild on https://ilsweb.cincinnatilibrary.org/collection-analysis/current_collection-3d4a4b7/bib?_facet=bib_level_callnumber - the "next page" link links to https://127.0.0.1:8010/collection-analysis/current_collection-3d4a4b7/bib?_facet=bib_level_callnumber&_next=100

That installation uses "base_url": "/collection-analysis/"

Weirdly all of the other links on that page - to facet results, sort orders, row permalinks etc - work fine. It's JUST the next_url one that is broken.

Also broken in their JSON: https://ilsweb.cincinnatilibrary.org/collection-analysis/current_collection-3d4a4b7/bib.json?_size=1 returns

json "suggested_facets": [], "next": "1", "next_url": "https://127.0.0.1:8010/collection-analysis/current_collection-3d4a4b7/bib.json?_size=1&_next=1", "private": false,

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1387/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
922099793 MDExOlB1bGxSZXF1ZXN0NjcxMDE0NzUx 273 sqlite-utils memory command for directly querying CSV/JSON data simonw 9599 closed 0     8 2021-06-16T05:04:58Z 2021-06-18T15:01:17Z 2021-06-18T15:00:52Z OWNER simonw/sqlite-utils/pulls/273

Refs #272. Initial implementation only does CSV data, still needs:

  • [x] Implement --save
  • [x] Add --dump to the documentation
  • [x] Add --attach example to the documentation
  • [x] Replace :memory: in documentation
sqlite-utils 140912432 pull    
{
    "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/273/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
0  
811407131 MDExOlB1bGxSZXF1ZXN0NTc1OTQwMTkz 1232 --crossdb option for joining across databases simonw 9599 closed 0     8 2021-02-18T19:48:50Z 2021-02-18T22:09:13Z 2021-02-18T22:09:12Z OWNER simonw/datasette/pulls/1232

Refs #283. Still needs:

  • [x] Unit test for --crossdb queries
  • [x] Show warning on console if it truncates at ten databases (or on web interface)
  • [x] Show connected databases on the /_memory database page
  • [x] Documentation
  • [x] https://latest.datasette.io/ demo should demonstrate this feature
datasette 107914493 pull    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1232/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
0  
808008305 MDU6SXNzdWU4MDgwMDgzMDU= 230 --sniff option for sniffing delimiters simonw 9599 closed 0     8 2021-02-14T17:43:54Z 2021-02-14T21:15:33Z 2021-02-14T19:24:32Z OWNER  

I just spotted that csv.Sniffer in the Python standard library has a .has_header(sample) method which detects if the first row appears to be a header or not, which is interesting. https://docs.python.org/3/library/csv.html#csv.Sniffer

Originally posted by @simonw in https://github.com/simonw/sqlite-utils/issues/228#issuecomment-778812050

sqlite-utils 140912432 issue    
{
    "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/230/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
780278550 MDU6SXNzdWU3ODAyNzg1NTA= 1179 Make original path available to render hooks simonw 9599 open 0     8 2021-01-06T08:31:45Z 2021-01-25T04:44:33Z   OWNER  

https://github.com/simonw/datasette-export-notebook/blob/0.1/datasette_export_notebook/init.py

python async def render_notebook(datasette, request): return Response.html( await datasette.render_template( "export_notebook.html", { "csv_stream_url": datasette.absolute_url( request, path_with_format( request=request, format="csv", extra_qs={"_stream": "on"} ), ), "json_url": datasette.absolute_url( request, path_with_format( request=request, format="json", extra_qs={"_shape": "array"} ), ), "json": json, }, ) ) This results in https://latest-with-plugins.datasette.io/github/issue_comments.Notebook showing http://latest-with-plugins.datasette.io/github/issue_comments.Notebook?_format=json&_shape=array

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1179/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
778450486 MDU6SXNzdWU3Nzg0NTA0ODY= 1171 GitHub Actions workflow to build and sign macOS binary executables simonw 9599 open 0     8 2021-01-04T23:36:59Z 2021-01-07T19:36:00Z   OWNER  

Using PyInstaller, as explored in #93 and https://til.simonwillison.net/python/packaging-pyinstaller

The bigger challenge will be the code signing bit. I'll need a Apple Developer account ($99/year) and some extensive CI fiddling.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1171/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
634663505 MDU6SXNzdWU2MzQ2NjM1MDU= 815 Group permission checks by request on /-/permissions debug page simonw 9599 open 0     8 2020-06-08T14:25:23Z 2020-12-17T22:06:48Z   OWNER  

Now that we're making a LOT more permission checks (on the DB index page we do a check for every listed table for example) the /-/permissions page gets filled up pretty quickly.

Can make this more readable by grouping permission checks by request. Have most recent request at the top of the page but the permission requests within that page sorted chronologically by most recent last.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/815/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
717699884 MDU6SXNzdWU3MTc2OTk4ODQ= 998 Wide tables should scroll horizontally within the page simonw 9599 closed 0   0.51 6026070 8 2020-10-08T22:13:27Z 2020-12-11T09:25:09Z 2020-10-22T01:12:26Z OWNER  

Wrap the main table in <div style="overflow-x: auto">

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/998/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
760621356 MDU6SXNzdWU3NjA2MjEzNTY= 1136 Establish pattern for release branches to support bug fixes simonw 9599 closed 0     8 2020-12-09T19:48:18Z 2020-12-09T20:17:02Z 2020-12-09T20:14:41Z OWNER  

I want to fix the bug in #1134 and ship it as Datasette 0.52.5 - but the main branch now has a feature in it (4c25b035b2370983c8dd5e0c8762e9154e379774 added arraynotcontains, #1132).

I'm not ready for a feature release, so instead I want to release 0.52.5 with just that bug fix.

This is the first time I will have shipped a release from a branch. I need to establish that pattern and add it to the documentation in https://docs.datasette.io/en/stable/contributing.html

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1136/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
724878151 MDU6SXNzdWU3MjQ4NzgxNTE= 1032 Bring date parsing into Datasette core simonw 9599 open 0     8 2020-10-19T18:30:45Z 2020-10-19T19:37:55Z   OWNER  

Currently this is mainly handled by a plugin - https://github.com/simonw/datasette-dateutil - but I realise now that this really needs to be core functionality.

See also Twitter thread: https://twitter.com/simonw/status/1318234808653213696

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1032/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
717768441 MDU6SXNzdWU3MTc3Njg0NDE= 1001 OPTIONS requests return a 500 error simonw 9599 closed 0   Datasette 0.50 5971510 8 2020-10-09T00:57:13Z 2020-10-09T01:44:41Z 2020-10-09T01:43:58Z OWNER  

``` % curl -vv -XOPTIONS https://latest.datasette.io/ * Trying 216.58.195.83:443...

OPTIONS / HTTP/1.1 Host: latest.datasette.io User-Agent: curl/7.70.0 Accept: /

  • Mark bundle as not supporting multiuse < HTTP/1.1 500 Internal Server Error ```
datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1001/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
684925907 MDU6SXNzdWU2ODQ5MjU5MDc= 948 Upgrade CodeMirror simonw 9599 closed 0   Datasette 0.49 5818042 8 2020-08-24T19:55:33Z 2020-09-30T20:36:12Z 2020-08-30T18:03:07Z OWNER  

Datasette currently bundles 5.31.0 (from October 2017) - latest version is 5.57.0 (August 2020). https://codemirror.net/doc/releases.html

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/948/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
703970814 MDU6SXNzdWU3MDM5NzA4MTQ= 24 the JSON object must be str, bytes or bytearray, not 'Undefined' simonw 9599 closed 0     8 2020-09-17T23:21:41Z 2020-09-18T22:33:32Z 2020-09-18T22:33:32Z MEMBER  

Got this on a search results page.

dogsheep-beta 197431109 issue    
{
    "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/24/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
691521965 MDU6SXNzdWU2OTE1MjE5NjU= 9 Mechanism for defining custom display of results simonw 9599 closed 0     8 2020-09-03T00:14:07Z 2020-09-03T21:12:14Z 2020-09-03T21:09:55Z MEMBER  

Part of #3 - in particular I want to make sure my photos are displayed with a thumbnail.

dogsheep-beta 197431109 issue    
{
    "url": "https://api.github.com/repos/dogsheep/dogsheep-beta/issues/9/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
576582604 MDU6SXNzdWU1NzY1ODI2MDQ= 694 datasette publish cloudrun --memory option simonw 9599 closed 0     8 2020-03-05T22:59:57Z 2020-06-23T17:10:51Z 2020-03-05T23:49:41Z OWNER  

Got this error deploying large (603MB) database with Cloud Run X Deploying... Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revi sion might contain more information. X Creating Revision... Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information. . Routing traffic... ✓ Setting IAM Policy... Deployment failed ERROR: (gcloud.run.deploy) Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/694/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
626078521 MDU6SXNzdWU2MjYwNzg1MjE= 774 Consolidate request.raw_args and request.args simonw 9599 closed 0   Datasette 1.0 3268330 8 2020-05-27T22:30:59Z 2020-05-29T23:27:35Z 2020-05-29T23:22:38Z OWNER  

request.raw_args is not documented, and I'd like to remove it entirely. Originally posted by @simonw in https://github.com/simonw/datasette/issues/706#issuecomment-634975252

I use it in a few places in other projects though, so I'll have to fix those first: https://github.com/search?q=user%3Asimonw+raw_args&type=Code

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/774/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
621444763 MDU6SXNzdWU2MjE0NDQ3NjM= 26 Rename project to dogsheep-photos simonw 9599 closed 0     8 2020-05-20T04:12:34Z 2020-05-20T04:31:02Z 2020-05-20T04:30:40Z MEMBER  

photos-to-sqlite doesn't really capture the full scope of this project anymore.

dogsheep-photos 256834907 issue    
{
    "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/26/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
603295970 MDU6SXNzdWU2MDMyOTU5NzA= 729 Visually distinguish integer and text columns simonw 9599 closed 0     8 2020-04-20T14:47:26Z 2020-05-18T17:20:02Z 2020-05-15T18:16:56Z OWNER  

It would be useful if I could tell from looking at the table page if a column was a integer or a text (or a float I guess?). This is particularly important for knowing if it safe to sort by that column.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/729/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
613467382 MDU6SXNzdWU2MTM0NjczODI= 761 Allow-list pragma_table_info(tablename) and similar simonw 9599 closed 0     8 2020-05-06T16:54:14Z 2020-05-07T03:09:05Z 2020-05-06T17:18:38Z OWNER  

It would be great if pragma_table_info(tablename) was allowed to be used in queries. See also https://github.com/simonw/til/blob/master/sqlite/list-all-columns-in-a-database.md

select * from pragma_table_info(tablename); is currently disallowed for user-provided queries via a regex restriction - but could help here too.

https://github.com/simonw/datasette/blob/d349d57cdf3d577afb62bdf784af342a4d5be660/datasette/utils/init.py#L174

Originally posted by @simonw in https://github.com/simonw/datasette/issues/760#issuecomment-624729459

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/761/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
602533300 MDU6SXNzdWU2MDI1MzMzMDA= 1 Import photo metadata from Apple Photos into SQLite simonw 9599 open 0   Apple Photos online and securely browsable 5324096 8 2020-04-18T19:23:26Z 2020-05-04T02:41:40Z   MEMBER  

Faces, albums, locations, that kind of thing.

dogsheep-photos 256834907 issue    
{
    "url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/1/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
455496504 MDU6SXNzdWU0NTU0OTY1MDQ= 27 sqlite-utils create-table command simonw 9599 closed 0     8 2019-06-13T01:43:30Z 2020-05-03T15:26:15Z 2020-05-03T15:26:15Z OWNER  

Spun off from #24 - it would be useful if CLI users could create new tables (with explicit column types, not null rules and defaults) without having to insert an example record.

  • [x] Get it working
  • [x] Support --pk
  • [x] Support --not-null
  • [x] Support --default
  • [x] Support --fk colname othertable othercol
  • [x] Support --replace and --ignore
  • [x] Documentation
sqlite-utils 140912432 issue    
{
    "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/27/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
493670730 MDU6SXNzdWU0OTM2NzA3MzA= 4 Command to fetch stargazers for one or more repos simonw 9599 closed 0     8 2019-09-14T21:58:22Z 2020-05-02T21:30:27Z 2020-05-02T21:30:27Z MEMBER  

Maybe this:

$ github-to-sqlite stargazers github.db simonw/datasette

It could accept more than one repos.

Maybe have options similar to --sql in twitter-to-sqlite so you can e.g. fetch all stargazers for all of the repos you have fetched into the database already (or all of the repos belonging to owner X)

github-to-sqlite 207052882 issue    
{
    "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/4/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
594168758 MDU6SXNzdWU1OTQxNjg3NTg= 716 extra_template_vars() sending wrong view_name for index simonw 9599 closed 0     8 2020-04-04T23:57:09Z 2020-04-05T20:04:08Z 2020-04-05T18:28:48Z OWNER  

See https://github.com/simonw/museums/issues/20#issuecomment-609103663 - at some point between 286ed286b68793532c2a38436a08343b45cfbc91 and current master (e0e7a0facfc935a835cd73c720bc46661462f0b1 today) a bug was introduced where the extra_template_vars(request, view_name) plugin hook started being passed None instead of index for the view_name parameter on the site index page.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/716/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
315960272 MDU6SXNzdWUzMTU5NjAyNzI= 227 prepare_context() plugin hook simonw 9599 closed 0     8 2018-04-19T16:55:26Z 2020-03-24T22:19:54Z 2020-03-24T22:19:54Z OWNER  

This would be called with the context dictionary before each template is rendered. It would have the opportunity to modify that context.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/227/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
585411547 MDU6SXNzdWU1ODU0MTE1NDc= 18 Commits in GitHub API can have null author simonw 9599 closed 0   1.0 5225818 8 2020-03-21T02:20:56Z 2020-03-23T20:44:49Z 2020-03-23T20:44:26Z MEMBER  

Traceback (most recent call last): File "/home/ubuntu/datasette-venv/bin/github-to-sqlite", line 8, in <module> sys.exit(cli()) File "/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py", line 764, in __call__ return self.main(*args, **kwargs) File "/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py", line 717, in main rv = self.invoke(ctx) File "/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py", line 1137, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py", line 956, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/ubuntu/datasette-venv/lib/python3.6/site-packages/click/core.py", line 555, in invoke return callback(*args, **kwargs) File "/home/ubuntu/datasette-venv/lib/python3.6/site-packages/github_to_sqlite/cli.py", line 235, in commits utils.save_commits(db, commits, repo_full["id"]) File "/home/ubuntu/datasette-venv/lib/python3.6/site-packages/github_to_sqlite/utils.py", line 290, in save_commits commit_to_insert["author"] = save_user(db, commit["author"]) File "/home/ubuntu/datasette-venv/lib/python3.6/site-packages/github_to_sqlite/utils.py", line 54, in save_user for key, value in user.items() AttributeError: 'NoneType' object has no attribute 'items' Got this running the commits command from cron.

github-to-sqlite 207052882 issue    
{
    "url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/18/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
464449570 MDU6SXNzdWU0NjQ0NDk1NzA= 540 Add a universal navigation bar which can be modified by plugins simonw 9599 closed 0     8 2019-07-05T03:50:33Z 2019-07-06T23:13:29Z 2019-07-06T23:11:35Z OWNER  

Needed by https://github.com/simonw/datasette-auth-github/issues/5

We already have a navigation breadcrumbs header on some pages, I can extend that to be present on every page and make it easy to modify with custom templates.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/540/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
421348146 MDExOlB1bGxSZXF1ZXN0MjYxNDE4Mjg1 416 URL hashing now optional: turn on with --config hash_urls:1 (#418) simonw 9599 closed 0     8 2019-03-15T04:26:06Z 2019-03-17T22:55:04Z 2019-03-17T22:55:04Z OWNER simonw/datasette/pulls/416
datasette 107914493 pull    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/416/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
0  
278208011 MDU6SXNzdWUyNzgyMDgwMTE= 160 Ability to bundle and serve additional static files simonw 9599 closed 0   Custom templates edition 2949431 8 2017-11-30T17:37:51Z 2019-02-02T00:58:20Z 2017-12-09T18:29:11Z OWNER  

Since we now have custom templates, we should support including custom static files with them as well. Maybe something like this:

datasette mydb.db --template-dir=templates/ --static-dir=static/

This should also be supported by datasette publish - see also #157

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/160/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
273846123 MDU6SXNzdWUyNzM4NDYxMjM= 90 datasette publish heroku simonw 9599 closed 0     8 2017-11-14T16:01:39Z 2017-12-10T03:06:34Z 2017-12-10T03:05:48Z OWNER  

Heroku has Docker container support so this should not be too hard:

https://devcenter.heroku.com/articles/container-registry-and-runtime

See also #59

This should work exactly like the existing “datasette publish now....” command except it would be “datasette publish heroku...”

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/90/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
267515836 MDU6SXNzdWUyNjc1MTU4MzY= 4 Make URLs immutable simonw 9599 closed 0   Ship first public release 2857392 8 2017-10-23T01:13:30Z 2017-10-24T02:38:24Z 2017-10-24T02:38:24Z OWNER  

Absolutely everything should have a far-future expires header

Part of the URL will be the truncated sha1 hash of the database file itself, calculated at build time

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/4/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issues] (
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [number] INTEGER,
   [title] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [state] TEXT,
   [locked] INTEGER,
   [assignee] INTEGER REFERENCES [users]([id]),
   [milestone] INTEGER REFERENCES [milestones]([id]),
   [comments] INTEGER,
   [created_at] TEXT,
   [updated_at] TEXT,
   [closed_at] TEXT,
   [author_association] TEXT,
   [pull_request] TEXT,
   [body] TEXT,
   [repo] INTEGER REFERENCES [repos]([id]),
   [type] TEXT
, [active_lock_reason] TEXT, [performed_via_github_app] TEXT, [reactions] TEXT, [draft] INTEGER, [state_reason] TEXT);
CREATE INDEX [idx_issues_repo]
                ON [issues] ([repo]);
CREATE INDEX [idx_issues_milestone]
                ON [issues] ([milestone]);
CREATE INDEX [idx_issues_assignee]
                ON [issues] ([assignee]);
CREATE INDEX [idx_issues_user]
                ON [issues] ([user]);
Powered by Datasette · Queries took 578.798ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows