home / github

Menu
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

7,983 rows sorted by html_url descending

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: reactions, updated_at (date)

created_at (date) >30 ✖

  • 2021-03-22 66
  • 2021-11-19 60
  • 2020-10-15 52
  • 2020-09-22 51
  • 2020-10-30 49
  • 2022-03-21 46
  • 2020-12-18 43
  • 2020-06-09 42
  • 2020-06-18 41
  • 2020-10-20 40
  • 2022-01-09 40
  • 2020-05-27 39
  • 2021-11-16 39
  • 2021-12-16 39
  • 2020-12-30 38
  • 2020-10-09 36
  • 2021-11-20 36
  • 2022-01-20 36
  • 2022-03-19 36
  • 2020-09-15 34
  • 2021-11-29 34
  • 2020-06-08 33
  • 2021-01-04 33
  • 2021-05-27 33
  • 2022-02-06 33
  • 2020-06-01 32
  • 2022-03-05 32
  • 2019-06-24 31
  • 2020-09-21 31
  • 2021-08-13 31
  • …
id html_url ▲ issue_url node_id user created_at updated_at author_association body reactions issue performed_via_github_app
606394619 https://github.com/simonw/sqlite-utils/pull/96#issuecomment-606394619 https://api.github.com/repos/simonw/sqlite-utils/issues/96 MDEyOklzc3VlQ29tbWVudDYwNjM5NDYxOQ== simonw 9599 2020-03-31T04:38:17Z 2020-03-31T04:40:23Z OWNER I wonder if there are any other Pandas conversions we should be doing? https://pandas.pydata.org/pandas-docs/stable/getting_started/basics.html#dtypes {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add type conversion for Panda's Timestamp 589801352  
606394349 https://github.com/simonw/sqlite-utils/pull/96#issuecomment-606394349 https://api.github.com/repos/simonw/sqlite-utils/issues/96 MDEyOklzc3VlQ29tbWVudDYwNjM5NDM0OQ== simonw 9599 2020-03-31T04:37:16Z 2020-03-31T04:37:16Z OWNER Test failure was just a Black formatting issue. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add type conversion for Panda's Timestamp 589801352  
580584269 https://github.com/simonw/sqlite-utils/pull/80#issuecomment-580584269 https://api.github.com/repos/simonw/sqlite-utils/issues/80 MDEyOklzc3VlQ29tbWVudDU4MDU4NDI2OQ== simonw 9599 2020-01-31T05:08:04Z 2020-01-31T05:08:04Z OWNER Ditching this since it won't actually solve my problem. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} on_create mechanism for after table creation 557892819  
580569059 https://github.com/simonw/sqlite-utils/pull/80#issuecomment-580569059 https://api.github.com/repos/simonw/sqlite-utils/issues/80 MDEyOklzc3VlQ29tbWVudDU4MDU2OTA1OQ== simonw 9599 2020-01-31T03:48:41Z 2020-01-31T03:48:41Z OWNER This may not be the right feature after all, see https://github.com/simonw/geojson-to-sqlite/issues/6#issuecomment-580569002 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} on_create mechanism for after table creation 557892819  
580567886 https://github.com/simonw/sqlite-utils/pull/80#issuecomment-580567886 https://api.github.com/repos/simonw/sqlite-utils/issues/80 MDEyOklzc3VlQ29tbWVudDU4MDU2Nzg4Ng== simonw 9599 2020-01-31T03:41:31Z 2020-01-31T03:41:31Z OWNER I think it does make sense to be able to pass it to the `.table()` constructor. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} on_create mechanism for after table creation 557892819  
580567604 https://github.com/simonw/sqlite-utils/pull/80#issuecomment-580567604 https://api.github.com/repos/simonw/sqlite-utils/issues/80 MDEyOklzc3VlQ29tbWVudDU4MDU2NzYwNA== simonw 9599 2020-01-31T03:39:58Z 2020-01-31T03:39:58Z OWNER Perhaps this should be called `after_create` instead of `on_create`. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} on_create mechanism for after table creation 557892819  
580567505 https://github.com/simonw/sqlite-utils/pull/80#issuecomment-580567505 https://api.github.com/repos/simonw/sqlite-utils/issues/80 MDEyOklzc3VlQ29tbWVudDU4MDU2NzUwNQ== simonw 9599 2020-01-31T03:39:19Z 2020-01-31T03:39:19Z OWNER Still needs documentation and tests. Also I'm not certain that this should be an argument you can pass to the `.table()` constructor, need to think that over. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} on_create mechanism for after table creation 557892819  
580523995 https://github.com/simonw/sqlite-utils/pull/75#issuecomment-580523995 https://api.github.com/repos/simonw/sqlite-utils/issues/75 MDEyOklzc3VlQ29tbWVudDU4MDUyMzk5NQ== simonw 9599 2020-01-31T00:21:11Z 2020-01-31T00:21:11Z OWNER This makes sense, thanks! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Explicitly include tests and docs in sdist 546078359  
569844320 https://github.com/simonw/sqlite-utils/pull/67#issuecomment-569844320 https://api.github.com/repos/simonw/sqlite-utils/issues/67 MDEyOklzc3VlQ29tbWVudDU2OTg0NDMyMA== simonw 9599 2019-12-31T01:29:43Z 2019-12-31T01:29:43Z OWNER I don't really care about 3.5 any more. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Run tests against 3.5 too 529376481  
559108591 https://github.com/simonw/sqlite-utils/pull/67#issuecomment-559108591 https://api.github.com/repos/simonw/sqlite-utils/issues/67 MDEyOklzc3VlQ29tbWVudDU1OTEwODU5MQ== simonw 9599 2019-11-27T14:24:59Z 2019-11-27T14:24:59Z OWNER Failed due to black testing dependency: https://travis-ci.com/simonw/sqlite-utils/jobs/260995814 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Run tests against 3.5 too 529376481  
527266798 https://github.com/simonw/sqlite-utils/pull/57#issuecomment-527266798 https://api.github.com/repos/simonw/sqlite-utils/issues/57 MDEyOklzc3VlQ29tbWVudDUyNzI2Njc5OA== simonw 9599 2019-09-03T01:03:59Z 2019-09-03T01:03:59Z OWNER Released in 1.11 - thanks again! https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-11 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add triggers while enabling FTS 487987958  
527258212 https://github.com/simonw/sqlite-utils/pull/57#issuecomment-527258212 https://api.github.com/repos/simonw/sqlite-utils/issues/57 MDEyOklzc3VlQ29tbWVudDUyNzI1ODIxMg== simonw 9599 2019-09-02T23:40:56Z 2019-09-02T23:40:56Z OWNER This is fantastic, thanks so much. I spotted a Datasette bug triggered by this: Datasette has its own version of the `detect_fts` function - at https://github.com/simonw/datasette/blob/d224ee2c98ac39c2c6e21a0ac0c62e5c3e1ccd11/datasette/utils/__init__.py#L466-L479 - which fails to pick up FTS tables created using the new escaping pattern. It's a bug in Datasette, not sqlite-utils - so I'll open an issue there. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add triggers while enabling FTS 487987958  
527211047 https://github.com/simonw/sqlite-utils/pull/57#issuecomment-527211047 https://api.github.com/repos/simonw/sqlite-utils/issues/57 MDEyOklzc3VlQ29tbWVudDUyNzIxMTA0Nw== amjith 49260 2019-09-02T17:30:43Z 2019-09-02T17:30:43Z CONTRIBUTOR I have merged the other PR (#56) into this one. I have incorporated your suggestions. Cheers! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add triggers while enabling FTS 487987958  
527091278 https://github.com/simonw/sqlite-utils/pull/57#issuecomment-527091278 https://api.github.com/repos/simonw/sqlite-utils/issues/57 MDEyOklzc3VlQ29tbWVudDUyNzA5MTI3OA== simonw 9599 2019-09-02T10:13:32Z 2019-09-02T10:13:32Z OWNER This is brilliant! One tiny suggestion: I like `--create-triggers` and `create_triggers=True` better for this as they are shorter but still capture what it dies - especially since the underlying SQL uses `CREATE TRIGGER` statements. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add triggers while enabling FTS 487987958  
527209840 https://github.com/simonw/sqlite-utils/pull/56#issuecomment-527209840 https://api.github.com/repos/simonw/sqlite-utils/issues/56 MDEyOklzc3VlQ29tbWVudDUyNzIwOTg0MA== amjith 49260 2019-09-02T17:23:21Z 2019-09-02T17:23:21Z CONTRIBUTOR I have updated the other PR with the changes from this one and added tests. I have also changed the escaping from double quotes to brackets. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Escape the table name in populate_fts and search. 487847945  
527090411 https://github.com/simonw/sqlite-utils/pull/56#issuecomment-527090411 https://api.github.com/repos/simonw/sqlite-utils/issues/56 MDEyOklzc3VlQ29tbWVudDUyNzA5MDQxMQ== simonw 9599 2019-09-02T10:10:48Z 2019-09-02T10:10:48Z OWNER Good spot, thanks! Would be useful to add a test as well, derived from your above example. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Escape the table name in populate_fts and search. 487847945  
522238063 https://github.com/simonw/sqlite-utils/pull/55#issuecomment-522238063 https://api.github.com/repos/simonw/sqlite-utils/issues/55 MDEyOklzc3VlQ29tbWVudDUyMjIzODA2Mw== simonw 9599 2019-08-17T13:42:40Z 2019-08-17T13:42:40Z OWNER I still need to implement the part of this where certain actions against views (like updating/inserting) are not allowed. I think the better way to do that is to introduce a new class - `View` - rather than reusing the existing `Table` class - since there's a lot of stuff on Table (like primary key / foreign key introspection) which simply doesn't make sense for views. This will get a bit more complicated - maybe I need both Table and View to extend a common subclass here? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Ability to introspect and run queries against views 481887482  
515756563 https://github.com/simonw/sqlite-utils/pull/51#issuecomment-515756563 https://api.github.com/repos/simonw/sqlite-utils/issues/51 MDEyOklzc3VlQ29tbWVudDUxNTc1NjU2Mw== simonw 9599 2019-07-28T11:56:10Z 2019-07-28T11:56:10Z OWNER Interesting. The tests failed presumably because the version of SQLite I am running on Travis CI doesn't have that same 999 limit. I'm going to enforce the 999 limit within the library itself, to discourage people from writing code which will fail if it runs on a host that DOES have that limit. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Fix for too many SQL variables, closes #50 473733752  
1115197644 https://github.com/simonw/sqlite-utils/pull/429#issuecomment-1115197644 https://api.github.com/repos/simonw/sqlite-utils/issues/429 IC_kwDOCGYnMM5CeJDM simonw 9599 2022-05-02T18:04:28Z 2022-05-02T18:04:28Z OWNER I'm going to ship this straight away as `3.26.1`. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Depend on click-default-group-wheel 1223177069  
1115196863 https://github.com/simonw/sqlite-utils/pull/429#issuecomment-1115196863 https://api.github.com/repos/simonw/sqlite-utils/issues/429 IC_kwDOCGYnMM5CeI2_ simonw 9599 2022-05-02T18:03:47Z 2022-05-02T18:52:42Z OWNER I made a build of this branch and tested it like this: https://pyodide.org/en/stable/console.html ```pycon >>> import micropip >>> await micropip.install("https://s3.amazonaws.com/simonwillison-cors-allowed-public/sqlite_utils-3.26-py3-none-any.whl") >>> import sqlite_utils >>> db = sqlite_utils.Database(memory=True) >>> list(db.query("select 32443 + 55")) [{'32443 + 55': 32498}] ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Depend on click-default-group-wheel 1223177069  
1076662556 https://github.com/simonw/sqlite-utils/pull/419#issuecomment-1076662556 https://api.github.com/repos/simonw/sqlite-utils/issues/419 IC_kwDOCGYnMM5ALJEc codecov[bot] 22429695 2022-03-23T18:12:47Z 2022-03-23T18:12:47Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/419?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#419](https://codecov.io/gh/simonw/sqlite-utils/pull/419?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (228f736) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/93fa79d30b1531bea281d0eb6b925c4e61bc1aa6?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (93fa79d) will **not change** coverage. > The diff coverage is `n/a`. ```diff @@ Coverage Diff @@ ## main #419 +/- ## ======================================= Coverage 96.55% 96.55% ======================================= Files 6 6 Lines 2498 2498 ======================================= Hits 2412 2412 Misses 86 86 ``` ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/419?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/419?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). Last update [93fa79d...228f736](https://codecov.io/gh/simonw/sqlite-utils/pull/419?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). Read the [comment docs](https://docs.… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Ignore common generated files 1178484369  
1055856441 https://github.com/simonw/sqlite-utils/pull/410#issuecomment-1055856441 https://api.github.com/repos/simonw/sqlite-utils/issues/410 IC_kwDOCGYnMM4-7xc5 simonw 9599 2022-03-01T21:05:21Z 2022-03-01T21:05:21Z OWNER Thanks! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Correct spelling mistakes (found with codespell) 1149729902  
1040998433 https://github.com/simonw/sqlite-utils/pull/407#issuecomment-1040998433 https://api.github.com/repos/simonw/sqlite-utils/issues/407 IC_kwDOCGYnMM4-DGAh eyeseast 25778 2022-02-16T01:29:39Z 2022-02-16T01:29:39Z CONTRIBUTOR Happy to do it and have it in the library. Going to use it a bunch. This whole SpatiaLite toolchain become a huge part of my work in the past year. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add SpatiaLite helpers to CLI 1138948786  
1040959312 https://github.com/simonw/sqlite-utils/pull/407#issuecomment-1040959312 https://api.github.com/repos/simonw/sqlite-utils/issues/407 IC_kwDOCGYnMM4-C8dQ simonw 9599 2022-02-16T00:58:32Z 2022-02-16T00:58:32Z OWNER This is honestly one of the most complete PRs I've ever seen for a feature of this size. Thanks so much for this! {"total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 1, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add SpatiaLite helpers to CLI 1138948786  
1040598665 https://github.com/simonw/sqlite-utils/pull/407#issuecomment-1040598665 https://api.github.com/repos/simonw/sqlite-utils/issues/407 IC_kwDOCGYnMM4-BkaJ simonw 9599 2022-02-15T17:58:11Z 2022-02-15T17:58:11Z OWNER Wow, just found out I can edit files in this PR branch by hitting `.` on my keyboard while looking at the PR, then making changes in the VS Code for web on `github.dev`! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add SpatiaLite helpers to CLI 1138948786  
1040596969 https://github.com/simonw/sqlite-utils/pull/407#issuecomment-1040596969 https://api.github.com/repos/simonw/sqlite-utils/issues/407 IC_kwDOCGYnMM4-Bj_p simonw 9599 2022-02-15T17:56:22Z 2022-02-15T17:56:35Z OWNER We should add SpatiaLite to the action that calculates code coverage - that way we can calculate coverage across the new GIS tests as well: https://github.com/simonw/sqlite-utils/blob/main/.github/workflows/test-coverage.yml Should just be a case of adding this to that workflow - we can do this in the same PR. ``` - name: Install SpatiaLite run: sudo apt-get install libsqlite3-mod-spatialite ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add SpatiaLite helpers to CLI 1138948786  
1040595572 https://github.com/simonw/sqlite-utils/pull/407#issuecomment-1040595572 https://api.github.com/repos/simonw/sqlite-utils/issues/407 IC_kwDOCGYnMM4-Bjp0 simonw 9599 2022-02-15T17:54:58Z 2022-02-15T17:54:58Z OWNER This PR looks fantastic. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add SpatiaLite helpers to CLI 1138948786  
1040580250 https://github.com/simonw/sqlite-utils/pull/407#issuecomment-1040580250 https://api.github.com/repos/simonw/sqlite-utils/issues/407 IC_kwDOCGYnMM4-Bf6a eyeseast 25778 2022-02-15T17:40:00Z 2022-02-15T17:40:00Z CONTRIBUTOR @simonw I think this is ready for a look. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add SpatiaLite helpers to CLI 1138948786  
1040519196 https://github.com/simonw/sqlite-utils/pull/407#issuecomment-1040519196 https://api.github.com/repos/simonw/sqlite-utils/issues/407 IC_kwDOCGYnMM4-BRAc codecov[bot] 22429695 2022-02-15T16:52:21Z 2022-02-15T18:12:03Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/407?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#407](https://codecov.io/gh/simonw/sqlite-utils/pull/407?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (a974da5) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/e7f040106b5f5a892ebd984f19b21c605e87c142?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (e7f0401) will **increase** coverage by `0.71%`. > The diff coverage is `85.00%`. [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/407/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/407?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #407 +/- ## ========================================== + Coverage 95.91% 96.62% +0.71% ========================================== Files 6 6 Lines 2421 2460 +39 ========================================== + Hits 2322 2377 +55 + Misses 99 83 -16 ``` | [Impacted Files](https://codecov.io/gh/simonw/sqlite-utils/pull/407?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [sqlite\_utils/cli.py](https://codecov.io/gh/simonw/sqlite-utils/pull/407/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2NsaS5weQ==) | `95.76% <85.00%> (+0.0… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add SpatiaLite helpers to CLI 1138948786  
511266664 https://github.com/simonw/sqlite-utils/pull/40#issuecomment-511266664 https://api.github.com/repos/simonw/sqlite-utils/issues/40 MDEyOklzc3VlQ29tbWVudDUxMTI2NjY2NA== simonw 9599 2019-07-15T03:47:26Z 2019-07-15T03:47:26Z OWNER This will close #36 and #39 once it is finished. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} .get() method plus support for compound primary keys 467928674  
1030002502 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1030002502 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49ZJdG eyeseast 25778 2022-02-04T13:50:19Z 2022-02-04T13:50:19Z CONTRIBUTOR Awesome. Thanks for your help getting it in. Will now look at adding CLI versions of this. It's going to be super helpful on a bunch of my projects. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029703216 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029703216 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49YAYw simonw 9599 2022-02-04T06:45:43Z 2022-02-04T06:45:43Z OWNER Shipped this as `sqlite-utils` 3.23: https://sqlite-utils.datasette.io/en/stable/changelog.html#v3-23 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029682294 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029682294 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49X7R2 simonw 9599 2022-02-04T05:53:26Z 2022-02-04T05:53:26Z OWNER This looks fantastic, thanks for all of the work you put into this! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029370537 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029370537 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49WvKp eyeseast 25778 2022-02-03T20:25:58Z 2022-02-03T20:25:58Z CONTRIBUTOR OK, I moved all the GIS helpers into `db.py` as methods on `Database` and `Table`, and I put `find_spatialite` back in `utils.py`. I deleted `gis.py`, since there's nothing left it. Docs and tests are updated and passing. I think this is better. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029338360 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029338360 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49WnT4 eyeseast 25778 2022-02-03T19:43:56Z 2022-02-03T19:43:56Z CONTRIBUTOR Works for me. I was just looking at how the FTS extensions work and they're just methods, too. So this can be consistent with that. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029335225 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029335225 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49Wmi5 simonw 9599 2022-02-03T19:39:40Z 2022-02-03T19:39:40Z OWNER > I thought about adding these as methods on `Database` and `Table`, and I'm back and forth on it for the same reasons you are. It's certainly cleaner, and it's clearer what you're operating on. I could go either way. > > I do sort of like having all the Spatialite stuff in its own module, just because it's built around an extension you might not have or want, but I don't know if that's a good reason to have a different API. > > You could have `init_spatialite` add methods to `Database` and `Table`, so they're only there if you have Spatialite set up. Is that too clever? It feels too clever. Yeah that's too clever. You know what? I'm pretty confident we are both massively over-thinking this. We should put the methods on `Database` and `Table`! API simplicity and consistency matters more than vague concerns about purity. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029326568 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029326568 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49Wkbo eyeseast 25778 2022-02-03T19:28:26Z 2022-02-03T19:28:26Z CONTRIBUTOR > `from sqlite_utils.utils import find_spatialite` is part of the documented API already: > > https://sqlite-utils.datasette.io/en/3.22.1/python-api.html#finding-spatialite > > To avoid needing to bump the major version number to 4 to indicate a backwards incompatible change, we should keep a `from .gis import find_spatialite` line at the top of `utils.py` such that any existing code with that documented import continues to work. This is fixed now. I had to take out the type annotations for `Database` and `Table` to avoid a circular import, but that's fine and may be moot if these become class methods. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029306428 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029306428 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49Wfg8 eyeseast 25778 2022-02-03T19:03:43Z 2022-02-03T19:03:43Z CONTRIBUTOR I thought about adding these as methods on `Database` and `Table`, and I'm back and forth on it for the same reasons you are. It's certainly cleaner, and it's clearer what you're operating on. I could go either way. I do sort of like having all the Spatialite stuff in its own module, just because it's built around an extension you might not have or want, but I don't know if that's a good reason to have a different API. You could have `init_spatialite` add methods to `Database` and `Table`, so they're only there if you have Spatialite set up. Is that too clever? It feels too clever. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029297971 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029297971 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49Wdcz simonw 9599 2022-02-03T18:52:50Z 2022-02-03T18:52:50Z OWNER I'm not sure I like `name="geometry"` as the default argument to `add_geometry_column` - mainly because of this example here: ```python add_geometry_column(db["locations"], "POINT") create_spatial_index(db["locations"], "geometry") ``` I had to go and look at the code to figure out if `"POINT"` was the name of the column - and I don't like how inconsistent it looks next to the following `create_spatial_index()` call where you DO need to pass the column name. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029296782 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029296782 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49WdKO simonw 9599 2022-02-03T18:51:21Z 2022-02-03T18:51:21Z OWNER What do you think about adding these as methods on the `Database` class instead? Then you could do: ```python # This is with an optional argument, which if omitted runs find_spatialite() for you: db.init_spatialite() # Instead of: init_spatialite(db, find_spatialite()) ``` Likewise, the `add_geometry_column` and `create_spatial_index` methods could live on `Table`: ```python # Instead of this: add_geometry_column(db["locations"], "POINT", "geometry") create_spatial_index(db["locations"], "geometry") # Could have this: db["locations"].add_geometry_column("POINT") db["locations"].create_spatial_index("geometry") ``` On the one hand, this is much more consistent with the existing `sqlite-utils` Python API. But on the other hand... this is mixing SpatiaLite functionality directly into the core classes. Is that a good idea, seeing as SpatiaLite is both an optional extension (which can be tricky to install) AND something that has a very different release cadence and quality-of-documentation from SQLite itself? There's a third option: the SpatiaLite could exist on subclasses of `Database` and `Table` - so the above examples would look something like this: ```python from sqlite_utils.gis import SpatiaLiteDatabase db = SpatiaLiteDatabase("geo.db") db.init_spatialite() db["locations"].add_geometry_column("POINT") db["locations"].create_spatial_index("geometry") ``` On the one hand, this would keep the SpatiaLite-specific stuff out of the core Database/Table classes. But it feels a bit untidy to me, especially since it raises the spectre of someone who was already subclassing Database for some reason now needing to instead subclass `SpatiaLiteDatabase` (not too keen on that capitalization) - or even (horror) trying to dabble with multiple inheritance, which can only lead to pain. So I don't have a strong opinion formed on this question yet! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029285985 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029285985 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49Wahh simonw 9599 2022-02-03T18:37:48Z 2022-02-03T18:37:48Z OWNER `from sqlite_utils.utils import find_spatialite` is part of the documented API already: https://sqlite-utils.datasette.io/en/3.22.1/python-api.html#finding-spatialite To avoid needing to bump the major version number to 4 to indicate a backwards incompatible change, we should keep a `from .gis import find_spatialite` line at the top of `utils.py` such that any existing code with that documented import continues to work. {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029273853 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029273853 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49WXj9 simonw 9599 2022-02-03T18:23:30Z 2022-02-03T18:31:21Z OWNER OK, this change makes a bunch of sense to me - and also raises some interesting questions about future additions to `sqlite-utils` with regards to SpatiaLite. Would `sqlite-utils add-geometry-column ...` be a good CLI enhancement. for example? I see you've already talked about that in #79 - moving this conversation there! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029180984 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029180984 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49WA44 eyeseast 25778 2022-02-03T16:42:04Z 2022-02-03T16:42:04Z CONTRIBUTOR Fixed my spelling. That's a useful thing. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029177700 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029177700 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49WAFk codecov[bot] 22429695 2022-02-03T16:38:45Z 2022-02-04T05:52:39Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/385?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#385](https://codecov.io/gh/simonw/sqlite-utils/pull/385?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (af86b17) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/74586d3cb26fa3cc3412721985ecdc1864c2a31d?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (74586d3) will **decrease** coverage by `0.61%`. > The diff coverage is `28.00%`. [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/385/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/385?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #385 +/- ## ========================================== - Coverage 96.52% 95.91% -0.62% ========================================== Files 6 6 Lines 2389 2421 +32 ========================================== + Hits 2306 2322 +16 - Misses 83 99 +16 ``` | [Impacted Files](https://codecov.io/gh/simonw/sqlite-utils/pull/385?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [sqlite\_utils/cli.py](https://codecov.io/gh/simonw/sqlite-utils/pull/385/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2NsaS5weQ==) | `95.69% <ø> (+0.15%)` … {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029177015 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029177015 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49V_63 simonw 9599 2022-02-03T16:38:02Z 2022-02-03T16:38:02Z OWNER Sorry had missed this - tests should run now. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
1029175907 https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029175907 https://api.github.com/repos/simonw/sqlite-utils/issues/385 IC_kwDOCGYnMM49V_pj eyeseast 25778 2022-02-03T16:36:54Z 2022-02-03T16:36:54Z CONTRIBUTOR @simonw Not sure if you've seen this, but any chance you can run the tests? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add new spatialite helper methods 1102899312  
514339130 https://github.com/simonw/sqlite-utils/pull/38#issuecomment-514339130 https://api.github.com/repos/simonw/sqlite-utils/issues/38 MDEyOklzc3VlQ29tbWVudDUxNDMzOTEzMA== simonw 9599 2019-07-23T18:57:33Z 2019-07-23T18:57:33Z OWNER This should switch to using `.get()`, introduced in https://github.com/simonw/sqlite-utils/commit/c65b67ca46f70e2da46a5b945f4ed358173262e9 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} table.update() method 467862459  
511219187 https://github.com/simonw/sqlite-utils/pull/38#issuecomment-511219187 https://api.github.com/repos/simonw/sqlite-utils/issues/38 MDEyOklzc3VlQ29tbWVudDUxMTIxOTE4Nw== simonw 9599 2019-07-14T17:05:26Z 2019-07-14T17:05:26Z OWNER I think I need to solve #36 (compound primary key support) first. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} table.update() method 467862459  
1009534817 https://github.com/simonw/sqlite-utils/pull/377#issuecomment-1009534817 https://api.github.com/repos/simonw/sqlite-utils/issues/377 IC_kwDOCGYnMM48LEdh simonw 9599 2022-01-11T02:09:38Z 2022-01-11T02:09:38Z OWNER I tested this like so: ``` % wget 'https://raw.githubusercontent.com/wri/global-power-plant-database/master/output_database/global_power_plant_database.csv' % sqlite-utils create-database test.db % sqlite-utils create-table test.db power_plants url text owner text % sqlite-utils schema test.db CREATE TABLE [power_plants] ( [url] TEXT, [owner] TEXT ); % sqlite-utils bulk test.db 'insert into power_plants (url, owner) values (:url, :owner)' global_power_plant_database.csv --csv [------------------------------------] 0% [###################################-] 99% % sqlite-utils tables --counts test.db -t table count ------------ ------- power_plants 33643 ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} `sqlite-utils bulk` command 1097477582  
1009532125 https://github.com/simonw/sqlite-utils/pull/377#issuecomment-1009532125 https://api.github.com/repos/simonw/sqlite-utils/issues/377 IC_kwDOCGYnMM48LDzd simonw 9599 2022-01-11T02:03:35Z 2022-01-11T02:03:35Z OWNER Documentation: https://github.com/simonw/sqlite-utils/blob/f4ea0d32c0543373eefaa9b9f3911eb07549eecb/docs/cli.rst#executing-sql-in-bulk {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} `sqlite-utils bulk` command 1097477582  
1009531863 https://github.com/simonw/sqlite-utils/pull/377#issuecomment-1009531863 https://api.github.com/repos/simonw/sqlite-utils/issues/377 IC_kwDOCGYnMM48LDvX codecov[bot] 22429695 2022-01-11T02:03:00Z 2022-01-11T02:03:00Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/377?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#377](https://codecov.io/gh/simonw/sqlite-utils/pull/377?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (f4ea0d3) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/b6dad08a8389736b7e960cfe9bc719cfc21a98f5?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (b6dad08) will **decrease** coverage by `0.01%`. > The diff coverage is `96.00%`. [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/377/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/377?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #377 +/- ## ========================================== - Coverage 96.52% 96.50% -0.02% ========================================== Files 6 6 Lines 2330 2378 +48 ========================================== + Hits 2249 2295 +46 - Misses 81 83 +2 ``` | [Impacted Files](https://codecov.io/gh/simonw/sqlite-utils/pull/377?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [sqlite\_utils/cli.py](https://codecov.io/gh/simonw/sqlite-utils/pull/377/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2NsaS5weQ==) | `95.49% <94.28%> (-0.0… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} `sqlite-utils bulk` command 1097477582  
1009272446 https://github.com/simonw/sqlite-utils/pull/367#issuecomment-1009272446 https://api.github.com/repos/simonw/sqlite-utils/issues/367 IC_kwDOCGYnMM48KEZ- simonw 9599 2022-01-10T19:31:08Z 2022-01-10T19:31:08Z OWNER I'm going to implement this in a separate commit from this PR. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Initial prototype of .analyze() methods 1097041471  
1008158799 https://github.com/simonw/sqlite-utils/pull/367#issuecomment-1008158799 https://api.github.com/repos/simonw/sqlite-utils/issues/367 IC_kwDOCGYnMM48F0hP codecov[bot] 22429695 2022-01-08T21:36:55Z 2022-01-09T02:34:44Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/367?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#367](https://codecov.io/gh/simonw/sqlite-utils/pull/367?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (9848eaa) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/a8f9cc6f64f299830834428509940d448b82b4ed?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (a8f9cc6) will **decrease** coverage by `0.20%`. > The diff coverage is `50.00%`. [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/367/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/367?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #367 +/- ## ========================================== - Coverage 96.44% 96.24% -0.21% ========================================== Files 5 6 +1 Lines 2307 2317 +10 ========================================== + Hits 2225 2230 +5 - Misses 82 87 +5 ``` | [Impacted Files](https://codecov.io/gh/simonw/sqlite-utils/pull/367?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [sqlite\_utils/db.py](https://codecov.io/gh/simonw/sqlite-utils/pull/367/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2RiLnB5) | `97.15% <28.57%> (-0.42%)` … {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Initial prototype of .analyze() methods 1097041471  
1006315145 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006315145 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-yaJ simonw 9599 2022-01-06T06:20:51Z 2022-01-06T06:20:51Z OWNER This is all documented. I'm going to rebase-merge it to keep the individual commits. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006311742 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006311742 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-xk- simonw 9599 2022-01-06T06:12:19Z 2022-01-06T06:12:19Z OWNER Got that working: ``` % echo 'This is cool' | sqlite-utils insert words.db words - --text --convert '({"word": w} for w in text.split())' % sqlite-utils dump words.db BEGIN TRANSACTION; CREATE TABLE [words] ( [word] TEXT ); INSERT INTO "words" VALUES('This'); INSERT INTO "words" VALUES('is'); INSERT INTO "words" VALUES('cool'); COMMIT; ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006309834 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006309834 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-xHK simonw 9599 2022-01-06T06:08:01Z 2022-01-06T06:08:01Z OWNER For `--text` the conversion function should be allowed to return an iterable instead of a dictionary, in which case it will be treated as the full list of records to be inserted. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006301546 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006301546 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-vFq simonw 9599 2022-01-06T05:44:47Z 2022-01-06T05:44:47Z OWNER Just need documentation for `--convert` now against the various different types of input. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006300280 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006300280 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-ux4 simonw 9599 2022-01-06T05:40:45Z 2022-01-06T05:40:45Z OWNER I'm going to rename `--all` to `--text`: > - Use `--text` to write the entire input to a column called "text" To avoid that clash with Python's `all()` function. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006299778 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006299778 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-uqC simonw 9599 2022-01-06T05:39:10Z 2022-01-06T05:39:10Z OWNER `all` is a bad variable name because it clashes with the Python `all()` built-in function. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006295276 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006295276 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-tjs simonw 9599 2022-01-06T05:26:11Z 2022-01-06T05:26:11Z OWNER Here's the traceback if your `--convert` function doesn't return a dict right now: ``` % sqlite-utils insert /tmp/all.db blah /tmp/log.log --convert 'all.upper()' --all Traceback (most recent call last): File "/Users/simon/.local/share/virtualenvs/sqlite-utils-C4Ilevlm/bin/sqlite-utils", line 33, in <module> sys.exit(load_entry_point('sqlite-utils', 'console_scripts', 'sqlite-utils')()) File "/Users/simon/.local/share/virtualenvs/sqlite-utils-C4Ilevlm/lib/python3.8/site-packages/click/core.py", line 1137, in __call__ return self.main(*args, **kwargs) File "/Users/simon/.local/share/virtualenvs/sqlite-utils-C4Ilevlm/lib/python3.8/site-packages/click/core.py", line 1062, in main rv = self.invoke(ctx) File "/Users/simon/.local/share/virtualenvs/sqlite-utils-C4Ilevlm/lib/python3.8/site-packages/click/core.py", line 1668, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/Users/simon/.local/share/virtualenvs/sqlite-utils-C4Ilevlm/lib/python3.8/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/simon/.local/share/virtualenvs/sqlite-utils-C4Ilevlm/lib/python3.8/site-packages/click/core.py", line 763, in invoke return __callback(*args, **kwargs) File "/Users/simon/Dropbox/Development/sqlite-utils/sqlite_utils/cli.py", line 949, in insert insert_upsert_implementation( File "/Users/simon/Dropbox/Development/sqlite-utils/sqlite_utils/cli.py", line 834, in insert_upsert_implementation db[table].insert_all( File "/Users/simon/Dropbox/Development/sqlite-utils/sqlite_utils/db.py", line 2602, in insert_all first_record = next(records) File "/Users/simon/Dropbox/Development/sqlite-utils/sqlite_utils/db.py", line 3044, in fix_square_braces for record in records: File "/Users/simon/Dropbox/Development/sqlite-utils/sqlite_utils/cli.py", line 831, in <genexpr> docs = (decode_base64_values(doc) for doc in docs) File "/Users/simon/Dropbox/Development/s… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006294777 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006294777 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-tb5 simonw 9599 2022-01-06T05:24:54Z 2022-01-06T05:24:54Z OWNER > I added a custom error message for if the user's `--convert` code doesn't return a dict. That turned out to be a bad idea because it meant exhausting the iterator early for the check - before we got to the `.insert_all()` code that breaks the iterator up into chunks. I tried fixing that with `itertools.tee()` to run the generator twice but that's grossly memory-inefficient for large imports. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006288444 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006288444 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-r48 simonw 9599 2022-01-06T05:07:10Z 2022-01-06T05:07:10Z OWNER And here's a demo of `--convert` used with `--all` - I added a custom error message for if the user's `--convert` code doesn't return a dict. ``` % sqlite-utils insert /tmp/all.db blah /tmp/log.log --convert 'all.upper()' --all Error: Records returned by your --convert function must be dicts % sqlite-utils insert /tmp/all.db blah /tmp/log.log --convert '{"all": all.upper()}' --all % sqlite-utils dump /tmp/all.db BEGIN TRANSACTION; CREATE TABLE [blah] ( [all] TEXT ); INSERT INTO "blah" VALUES('INFO: 127.0.0.1:60581 - "GET / HTTP/1.1" 200 OK INFO: 127.0.0.1:60581 - "GET /FOO/-/STATIC/APP.CSS?CEAD5A HTTP/1.1" 200 OK INFO: 127.0.0.1:60581 - "GET /FAVICON.ICO HTTP/1.1" 200 OK INFO: 127.0.0.1:60581 - "GET /FOO/TIDDLYWIKI HTTP/1.1" 200 OK INFO: 127.0.0.1:60581 - "GET /FOO/-/STATIC/APP.CSS?CEAD5A HTTP/1.1" 200 OK INFO: 127.0.0.1:60584 - "GET /FOO/-/STATIC/SQL-FORMATTER-2.3.3.MIN.JS HTTP/1.1" 200 OK INFO: 127.0.0.1:60586 - "GET /FOO/-/STATIC/CODEMIRROR-5.57.0.MIN.JS HTTP/1.1" 200 OK INFO: 127.0.0.1:60585 - "GET /FOO/-/STATIC/CODEMIRROR-5.57.0.MIN.CSS HTTP/1.1" 200 OK INFO: 127.0.0.1:60588 - "GET /FOO/-/STATIC/CODEMIRROR-5.57.0-SQL.MIN.JS HTTP/1.1" 200 OK INFO: 127.0.0.1:60587 - "GET /FOO/-/STATIC/CM-RESIZE-1.0.1.MIN.JS HTTP/1.1" 200 OK INFO: 127.0.0.1:60586 - "GET /FOO/TIDDLYWIKI/TIDDLERS HTTP/1.1" 200 OK INFO: 127.0.0.1:60586 - "GET /FOO/-/STATIC/APP.CSS?CEAD5A HTTP/1.1" 200 OK INFO: 127.0.0.1:60584 - "GET /FOO/-/STATIC/TABLE.JS HTTP/1.1" 200 OK '); COMMIT; ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006284673 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006284673 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-q-B simonw 9599 2022-01-06T04:55:52Z 2022-01-06T04:55:52Z OWNER Test code that just worked for me: ``` sqlite-utils insert /tmp/blah.db blah /tmp/log.log --convert ' bits = line.split() return dict([("b_{}".format(i), bit) for i, bit in enumerate(bits)])' --lines ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006232013 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006232013 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-eHN simonw 9599 2022-01-06T02:21:35Z 2022-01-06T02:21:35Z OWNER I'm having second thoughts about this bit: > Your Python code will be passed a "row" variable representing the imported row, and can return a modified row. > > If you are using `--lines` your code will be passed a "line" variable, and for `--all` an "all" variable. The code in question is this: https://github.com/simonw/sqlite-utils/blob/500a35ad4d91c8a6232134ce9406efec11bedff8/sqlite_utils/utils.py#L296-L303 Do I really want to add the complexity of supporting different variable names there? I think always using `value` might be better. Except... `value` made sense for the existing `sqlite-utils convert` command where you are running a conversion function against the value for the column in the current row - is it confusing if applied to lines or documents or `all`? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006230411 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006230411 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-duL simonw 9599 2022-01-06T02:17:35Z 2022-01-06T02:17:35Z OWNER Documentation: https://github.com/simonw/sqlite-utils/blob/33223856ff7fe746b7b77750fbe5b218531d0545/docs/cli.rst#inserting-unstructured-data-with---lines-and---all - I went with a single section titled "Inserting unstructured data with --lines and --all" {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006220129 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006220129 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-bNh simonw 9599 2022-01-06T01:52:26Z 2022-01-06T01:52:26Z OWNER I'm going to refactor all of the tests for `sqlite-utils insert` into a new `test_cli_insert.py` module. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006219956 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006219956 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-bK0 codecov[bot] 22429695 2022-01-06T01:51:54Z 2022-01-06T06:22:25Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/361?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#361](https://codecov.io/gh/simonw/sqlite-utils/pull/361?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (b7f0b88) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/f3fd8613113d21d44238a6ec54b375f5aa72c4e0?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (f3fd861) will **decrease** coverage by `0.05%`. > The diff coverage is `92.85%`. [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/361/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/361?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #361 +/- ## ========================================== - Coverage 96.49% 96.44% -0.06% ========================================== Files 5 5 Lines 2283 2306 +23 ========================================== + Hits 2203 2224 +21 - Misses 80 82 +2 ``` | [Impacted Files](https://codecov.io/gh/simonw/sqlite-utils/pull/361?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [sqlite\_utils/cli.py](https://codecov.io/gh/simonw/sqlite-utils/pull/361/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2NsaS5weQ==) | `95.49% <92.00%> (-0.1… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
1006219848 https://github.com/simonw/sqlite-utils/pull/361#issuecomment-1006219848 https://api.github.com/repos/simonw/sqlite-utils/issues/361 IC_kwDOCGYnMM47-bJI simonw 9599 2022-01-06T01:51:36Z 2022-01-06T01:51:36Z OWNER So far I've just implemented the new help: ``` % sqlite-utils insert --help Usage: sqlite-utils insert [OPTIONS] PATH TABLE FILE Insert records from FILE into a table, creating the table if it does not already exist. By default the input is expected to be a JSON array of objects. Or: - Use --nl for newline-delimited JSON objects - Use --csv or --tsv for comma-separated or tab-separated input - Use --lines to write each incoming line to a column called "line" - Use --all to write the entire input to a column called "all" You can also use --convert to pass a fragment of Python code that will be used to convert each input. Your Python code will be passed a "row" variable representing the imported row, and can return a modified row. If you are using --lines your code will be passed a "line" variable, and for --all an "all" variable. Options: --pk TEXT Columns to use as the primary key, e.g. id --flatten Flatten nested JSON objects, so {"a": {"b": 1}} becomes {"a_b": 1} --nl Expect newline-delimited JSON -c, --csv Expect CSV input --tsv Expect TSV input --lines Treat each line as a single value called 'line' --all Treat input as a single value called 'all' --convert TEXT Python code to convert each item --import TEXT Python modules to import --delimiter TEXT Delimiter to use for CSV files --quotechar TEXT Quote character to use for CSV/TSV --sniff Detect delimiter and quote character --no-headers CSV file has no header row --batch-size INTEGER Commit every X records --alter Alter existing table to add any missing columns --not-null TEXT Columns that should be created as NOT NULL --default <TEXT TEXT>... Default value that should be set for a column --e… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} --lines and --text and --convert and --import 1094890366  
991397907 https://github.com/simonw/sqlite-utils/pull/347#issuecomment-991397907 https://api.github.com/repos/simonw/sqlite-utils/issues/347 IC_kwDOCGYnMM47F4gT simonw 9599 2021-12-11T01:01:40Z 2021-12-11T01:01:40Z OWNER The change I made to that test in #354 might help with this. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against pysqlite3 running SQLite 3.37 1066603133  
982137888 https://github.com/simonw/sqlite-utils/pull/347#issuecomment-982137888 https://api.github.com/repos/simonw/sqlite-utils/issues/347 IC_kwDOCGYnMM46ijwg simonw 9599 2021-11-29T23:50:54Z 2021-11-29T23:50:54Z OWNER If I'm going to `skipIf()` those tests I need a way to check if `pysqlite3` is being used. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against pysqlite3 running SQLite 3.37 1066603133  
982137293 https://github.com/simonw/sqlite-utils/pull/347#issuecomment-982137293 https://api.github.com/repos/simonw/sqlite-utils/issues/347 IC_kwDOCGYnMM46ijnN simonw 9599 2021-11-29T23:49:29Z 2021-11-29T23:49:29Z OWNER A short term fix would be to skip those tests against `pysqlite3` - but longer term it would be good to address the underlying issue, particularly for the WAL ones (the FTS ones aren't too worrying since if you deliberately try and break the FTS table it's not hugely problematic if you corrupt your database). {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against pysqlite3 running SQLite 3.37 1066603133  
982136747 https://github.com/simonw/sqlite-utils/pull/347#issuecomment-982136747 https://api.github.com/repos/simonw/sqlite-utils/issues/347 IC_kwDOCGYnMM46ijer simonw 9599 2021-11-29T23:48:05Z 2021-11-29T23:48:05Z OWNER Some interesting test failures in the version that runs with `pysqlite3`: ``` =========================== short test summary info ============================ FAILED tests/test_cli.py::test_enable_wal - assert 0 == 1 FAILED tests/test_cli.py::test_disable_wal - pysqlite3.dbapi2.OperationalErro... FAILED tests/test_fts.py::test_rebuild_fts[searchable] - pysqlite3.dbapi2.Dat... FAILED tests/test_fts.py::test_rebuild_fts[searchable_fts] - pysqlite3.dbapi2... FAILED tests/test_wal.py::test_enable_disable_wal - pysqlite3.dbapi2.Operatio... ================== 5 failed, 750 passed, 3 skipped in 15.20s =================== ``` https://github.com/simonw/sqlite-utils/runs/4360759085 The WAL errors look like this: ``` E pysqlite3.dbapi2.OperationalError: cannot change into wal mode from within a transaction ``` Triggered by a call to `db.enable_wal()` The FTS errors are caused by tests that try to deliberately corrupt the FTS index by running `fresh_db["searchable_fts_data"].delete_where()` - and then rebuilding it using `rebuild_fts()`: ``` @pytest.mark.parametrize("table_to_fix", ["searchable", "searchable_fts"]) def test_rebuild_fts(fresh_db, table_to_fix): table = fresh_db["searchable"] table.insert(search_records[0]) table.enable_fts(["text", "country"]) # Run a search rows = list(table.search("tanuki")) assert len(rows) == 1 assert { "rowid": 1, "text": "tanuki are running tricksters", "country": "Japan", "not_searchable": "foo", }.items() <= rows[0].items() # Delete from searchable_fts_data fresh_db["searchable_fts_data"].delete_where() # This should have broken the index with pytest.raises(sqlite3.DatabaseError): list(table.search("tanuki")) # Running rebuild_fts() should fix it > fresh_db[table_to_fix].rebuild_fts() tests/test_fts.py:277: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against pysqlite3 running SQLite 3.37 1066603133  
982133970 https://github.com/simonw/sqlite-utils/pull/347#issuecomment-982133970 https://api.github.com/repos/simonw/sqlite-utils/issues/347 IC_kwDOCGYnMM46iizS simonw 9599 2021-11-29T23:41:17Z 2021-11-29T23:41:17Z OWNER Took a bit of experimenting to get both `mypy` AND `flake8` to ignore the same line. The incantation that worked was this one: https://github.com/simonw/sqlite-utils/blob/f990e134aa8219b687ff6c261330f36824b5df36/sqlite_utils/utils.py#L8 Order here matters - this did NOT work for both tools: ```python from sqlite3.dump import _iterdump as iterdump # noqa: F401 # type: ignore ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against pysqlite3 running SQLite 3.37 1066603133  
982129727 https://github.com/simonw/sqlite-utils/pull/347#issuecomment-982129727 https://api.github.com/repos/simonw/sqlite-utils/issues/347 IC_kwDOCGYnMM46ihw_ simonw 9599 2021-11-29T23:31:58Z 2021-11-29T23:31:58Z OWNER It failed on other Python versions with `mypy`: ``` sqlite_utils/utils.py:8: error: Cannot find implementation or library stub for module named "sqlite3.dump" sqlite_utils/utils.py:8: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against pysqlite3 running SQLite 3.37 1066603133  
982129218 https://github.com/simonw/sqlite-utils/pull/347#issuecomment-982129218 https://api.github.com/repos/simonw/sqlite-utils/issues/347 IC_kwDOCGYnMM46ihpC simonw 9599 2021-11-29T23:31:02Z 2021-11-29T23:31:02Z OWNER Here's the test run that's installing `pysqlite3` and that version of SQLite: https://github.com/simonw/sqlite-utils/runs/4360663292 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against pysqlite3 running SQLite 3.37 1066603133  
982126665 https://github.com/simonw/sqlite-utils/pull/347#issuecomment-982126665 https://api.github.com/repos/simonw/sqlite-utils/issues/347 IC_kwDOCGYnMM46ihBJ simonw 9599 2021-11-29T23:26:01Z 2021-11-29T23:33:48Z OWNER https://github.com/simonw/sqlite-utils/blob/93b059dd230eae9eaae472b7fbabd4a66feeb79d/.github/workflows/test.yml#L11-L20 This configuration means that the numpy=0, Python=3.10, os=Ubuntu build will additionally use `pysqlite3` with the SQLite 3.37.0. It's failing right now: https://github.com/simonw/sqlite-utils/runs/4360593156 - because `pysqlite3` doesn't provide `.iterdump()`. I can use the workaround from this comment: https://github.com/coleifer/pysqlite3/issues/24#issuecomment-982081267 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against pysqlite3 running SQLite 3.37 1066603133  
982123183 https://github.com/simonw/sqlite-utils/pull/347#issuecomment-982123183 https://api.github.com/repos/simonw/sqlite-utils/issues/347 IC_kwDOCGYnMM46igKv codecov[bot] 22429695 2021-11-29T23:20:35Z 2021-12-11T01:02:19Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/347?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#347](https://codecov.io/gh/simonw/sqlite-utils/pull/347?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (71b6c38) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/213a0ff177f23a35f3b235386366ff132eb879f1?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (213a0ff) will **increase** coverage by `0.00%`. > The diff coverage is `100.00%`. > :exclamation: Current head 71b6c38 differs from pull request most recent head 1a7ef2f. Consider uploading reports for the commit 1a7ef2f to get more accurate results [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/347/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/347?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #347 +/- ## ======================================= Coverage 96.51% 96.52% ======================================= Files 5 5 Lines 2270 2271 +1 ======================================= + Hits 2191 2192 +1 Misses 79 79 ``` | [Impacted Files](https://codecov.io/gh/simonw/sqlite-utils/pull/347?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [sqlite\_utils/cli.py](https://codecov.io/gh/simonw/sqlite-utils/pull/347/diff?src=pr&el=tree&utm_medium=referral&utm_sou… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against pysqlite3 running SQLite 3.37 1066603133  
962259527 https://github.com/simonw/sqlite-utils/pull/337#issuecomment-962259527 https://api.github.com/repos/simonw/sqlite-utils/issues/337 IC_kwDOCGYnMM45WupH urbas 771193 2021-11-05T22:33:02Z 2021-11-05T22:33:02Z NONE Smokes, it looks like there was a bug in click 8.0.2 (fixed in 8.0.3: https://github.com/pallets/click/issues/2089). Meaning this PR is not needed. Closing. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Default values for `--attach` and `--param` options 1046271107  
979442854 https://github.com/simonw/sqlite-utils/pull/333#issuecomment-979442854 https://api.github.com/repos/simonw/sqlite-utils/issues/333 IC_kwDOCGYnMM46YRym simonw 9599 2021-11-25T19:47:26Z 2021-11-25T19:47:26Z OWNER I just remembered that there's one other place that this could fit: as a Datasette "insert" plugin. This is vaporware at the moment, but the idea is that Datasette itself could grow a mechanism for importing data, that's driven by plugins. Out of the box Datasette would be able to import CSV and CSV files, similar to `sqlite-utils insert ... --csv` - but plugins would then be able to add support for additional format such as GeoJSON or - in this case - Parquet. The neat thing about having it as a Datasette plugin is that one plugin would enable three different ways of importing data: 1. Via a new `datasette insert ...` CLI option (similar to `sqlite-utils`) 2. Via a web form upload interface, where authenticated Datasette users would be able to upload files 3. Via an API interface, where files could be programatically submitted to a running Datasette server I started fleshing out this idea quite a while ago but didn't make much concrete progress, maybe I should revisit it: - https://github.com/simonw/datasette/issues/1160 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add functionality to read Parquet files. 1039037439  
979345527 https://github.com/simonw/sqlite-utils/pull/333#issuecomment-979345527 https://api.github.com/repos/simonw/sqlite-utils/issues/333 IC_kwDOCGYnMM46X6B3 Florents-Tselai 2118708 2021-11-25T16:31:47Z 2021-11-25T16:31:47Z NONE Thanks for your reply @simonw . Tbh, my first attempt was actually the `parquet-to-sqlite` package but I already had Makefiles that relied on `SQLite-utils` and it was less intrusive to my workflow. Maybe I'll revisit that decision. FYI: there's a `[sqlite-parquet-vtable](https://github.com/cldellow/sqlite-parquet-vtable)` I don't think plugins make much sense either. Probably defeats the purpose of simplicity: simple database along with a pip-able package. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add functionality to read Parquet files. 1039037439  
974754412 https://github.com/simonw/sqlite-utils/pull/333#issuecomment-974754412 https://api.github.com/repos/simonw/sqlite-utils/issues/333 IC_kwDOCGYnMM46GZJs simonw 9599 2021-11-21T04:35:32Z 2021-11-21T04:35:32Z OWNER Some other recent projects (like trying to get this library to work in JupyterLite) have made me much more cautious about adding new dependencies, especially dependencies like `pyarrow` which require custom C/Rust extensions. There are a few ways this could work though: - Have this as an optional dependency feature - so it only works if the user installs `pyarrow` as well - Implement this as a separate tool, `parquet-to-sqlite` - which could itself depend on `sqlite-utils` - Add a concept of "plugins" to `sqlite-utils`, similar to how those work in Datasette: https://docs.datasette.io/en/stable/plugins.html My favourite option is `parquet-to-sqlite` because that can be built without any additional changes to `sqlite-utils` at all! I find the concept of plugins for `sqlite-utils` interesting. I've so far not had quite enough potential use-cases to convince me this is worthwhile (especially since it should be very easy to build out separate tools entirely), but I'm ready to be convinced that a plugin mechanism would be worthwhile. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add functionality to read Parquet files. 1039037439  
942752844 https://github.com/simonw/sqlite-utils/pull/330#issuecomment-942752844 https://api.github.com/repos/simonw/sqlite-utils/issues/330 IC_kwDOCGYnMM44MURM codecov[bot] 22429695 2021-10-13T22:00:31Z 2021-10-13T22:11:30Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/330?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#330](https://codecov.io/gh/simonw/sqlite-utils/pull/330?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (fc3de90) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/718a8f61bcaed39c04d5d223104056213f8c8516?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (718a8f6) will **not change** coverage. > The diff coverage is `n/a`. [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/330/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/330?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #330 +/- ## ======================================= Coverage 96.59% 96.59% ======================================= Files 5 5 Lines 2230 2230 ======================================= Hits 2154 2154 Misses 76 76 ``` ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/330?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](htt… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against Python 3.10 1025726600  
916119657 https://github.com/simonw/sqlite-utils/pull/326#issuecomment-916119657 https://api.github.com/repos/simonw/sqlite-utils/issues/326 IC_kwDOCGYnMM42muBp meatcar 191622 2021-09-09T13:54:10Z 2021-09-09T13:54:10Z CONTRIBUTOR dupe of #293? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against 3.10-dev 991237645  
915321467 https://github.com/simonw/sqlite-utils/pull/326#issuecomment-915321467 https://api.github.com/repos/simonw/sqlite-utils/issues/326 IC_kwDOCGYnMM42jrJ7 codecov[bot] 22429695 2021-09-08T15:05:53Z 2021-09-08T15:05:53Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/326?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#326](https://codecov.io/gh/simonw/sqlite-utils/pull/326?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (078a087) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/77c240df56068341561e95e4a412cbfa24dc5bc7?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (77c240d) will **not change** coverage. > The diff coverage is `n/a`. [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/326/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/326?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #326 +/- ## ======================================= Coverage 96.58% 96.58% ======================================= Files 5 5 Lines 2223 2223 ======================================= Hits 2147 2147 Misses 76 76 ``` ------ [Continue to review full report at Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/326?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison). > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data` > Powered by [Codecov](htt… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Test against 3.10-dev 991237645  
968384988 https://github.com/simonw/sqlite-utils/pull/324#issuecomment-968384988 https://api.github.com/repos/simonw/sqlite-utils/issues/324 IC_kwDOCGYnMM45uGHc simonw 9599 2021-11-14T23:25:16Z 2021-11-14T23:25:16Z OWNER Yes this was absolutely the intention! Thanks, I wonder how often I've made that mistake in other projects? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Use python-dateutil package instead of dateutils 988013247  
968401459 https://github.com/simonw/sqlite-utils/pull/322#issuecomment-968401459 https://api.github.com/repos/simonw/sqlite-utils/issues/322 IC_kwDOCGYnMM45uKIz simonw 9599 2021-11-15T00:26:42Z 2021-11-15T00:26:42Z OWNER This relates to the fact that dictionaries, lists and tuples get special treatment and are converted to JSON strings, using this code: https://github.com/simonw/sqlite-utils/blob/e8d958109ee290cfa1b44ef7a39629bb50ab673e/sqlite_utils/db.py#L2937-L2947 So the `COLUMN_TYPE_MAPPING` should include those too - right now it looks like this: https://github.com/simonw/sqlite-utils/blob/e8d958109ee290cfa1b44ef7a39629bb50ab673e/sqlite_utils/db.py#L165-L188 {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add dict type to be mapped as TEXT in sqllite 979612115  
905040902 https://github.com/simonw/sqlite-utils/pull/321#issuecomment-905040902 https://api.github.com/repos/simonw/sqlite-utils/issues/321 IC_kwDOCGYnMM418dQG simonw 9599 2021-08-24T23:25:03Z 2021-08-24T23:25:03Z OWNER I'm going to skip this test on windows. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Ability to insert file contents as text, in addition to blob 978537855  
905040307 https://github.com/simonw/sqlite-utils/pull/321#issuecomment-905040307 https://api.github.com/repos/simonw/sqlite-utils/issues/321 IC_kwDOCGYnMM418dGz simonw 9599 2021-08-24T23:23:36Z 2021-08-24T23:23:36Z OWNER https://discuss.python.org/t/pep-597-use-utf-8-for-default-text-file-encoding/1819 says: > Currently, `TextIOWrapper` uses `locale.getpreferredencoding(False)` (hereinafter called “locale encoding”) when encoding is not specified. > ... > Package authors using macOS or Linux may forget that the default encoding is not always UTF-8. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Ability to insert file contents as text, in addition to blob 978537855  
905039576 https://github.com/simonw/sqlite-utils/pull/321#issuecomment-905039576 https://api.github.com/repos/simonw/sqlite-utils/issues/321 IC_kwDOCGYnMM418c7Y simonw 9599 2021-08-24T23:21:29Z 2021-08-24T23:21:29Z OWNER Hah, the error here is actually: ``` > assert result.exit_code == 1, result.output E AssertionError: E E assert 0 == 1 E + where 0 = <Result okay>.exit_code ``` So I was expecting an error, but instead the command worked. I suspect this is because on Windows the default character set may not be UTF-8? {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Ability to insert file contents as text, in addition to blob 978537855  
905037323 https://github.com/simonw/sqlite-utils/pull/321#issuecomment-905037323 https://api.github.com/repos/simonw/sqlite-utils/issues/321 IC_kwDOCGYnMM418cYL simonw 9599 2021-08-24T23:15:29Z 2021-08-24T23:15:29Z OWNER Huh, tests are failing but only on Windows! {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Ability to insert file contents as text, in addition to blob 978537855  
905022931 https://github.com/simonw/sqlite-utils/pull/321#issuecomment-905022931 https://api.github.com/repos/simonw/sqlite-utils/issues/321 IC_kwDOCGYnMM418Y3T codecov[bot] 22429695 2021-08-24T22:38:38Z 2021-08-24T23:27:26Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/321?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#321](https://codecov.io/gh/simonw/sqlite-utils/pull/321?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (db2dd6d) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/9258f4bd8450c951900de998a7bf81ca9b45a014?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (9258f4b) will **increase** coverage by `0.16%`. > The diff coverage is `100.00%`. [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/321/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/321?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #321 +/- ## ========================================== + Coverage 96.41% 96.58% +0.16% ========================================== Files 5 5 Lines 2206 2223 +17 ========================================== + Hits 2127 2147 +20 + Misses 79 76 -3 ``` | [Impacted Files](https://codecov.io/gh/simonw/sqlite-utils/pull/321?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [sqlite\_utils/cli.py](https://codecov.io/gh/simonw/sqlite-utils/pull/321/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2NsaS5weQ==) | `95.69% <100.00%> (+0… {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Ability to insert file contents as text, in addition to blob 978537855  
506784912 https://github.com/simonw/sqlite-utils/pull/32#issuecomment-506784912 https://api.github.com/repos/simonw/sqlite-utils/issues/32 MDEyOklzc3VlQ29tbWVudDUwNjc4NDkxMg== simonw 9599 2019-06-28T15:55:13Z 2019-06-28T15:55:13Z OWNER Documentation, to be added as a subsection of https://sqlite-utils.readthedocs.io/en/latest/python-api.html#adding-foreign-key-constraints ### Adding multiple foreign key constraints at once The final step in adding a new foreign key to a SQLite database is to run VACUUM, to ensure the new foreign key is available in future introspection queries. VACUUM against a large (multi-GB) database can take several minutes or longer. If you are adding multiple foreign keys using table.add_foreign_key(...) these can quickly add up. Instead, you can use db.add_foreign_keys(...) to add multiple foreign keys within a single transaction. This method takes a list of four-tuples, each one specifying a table, column, other_table and other_column. Here's an example adding two foreign keys at once: db.add_foreign_keys([ ("dogs", "breed_id", "breeds", "id"), ("dogs", "home_town_id", "towns", "id") ]) {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} db.add_foreign_keys() method 462094937  
896284722 https://github.com/simonw/sqlite-utils/pull/312#issuecomment-896284722 https://api.github.com/repos/simonw/sqlite-utils/issues/312 IC_kwDOCGYnMM41bDgy simonw 9599 2021-08-10T20:08:03Z 2021-08-10T20:08:21Z OWNER Spotted a rogue backtick: ![A0147E27-7506-49B0-BEFB-20D99BBFEBAD](https://user-images.githubusercontent.com/9599/128927930-b3333dee-a385-409b-a945-f108e6ea40df.jpeg) {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add reference page to documentation using Sphinx autodoc 965143346  
896200682 https://github.com/simonw/sqlite-utils/pull/312#issuecomment-896200682 https://api.github.com/repos/simonw/sqlite-utils/issues/312 IC_kwDOCGYnMM41au_q simonw 9599 2021-08-10T18:03:40Z 2021-08-10T18:03:40Z OWNER Adding type signatures to `create_table()` and `.create_table_sql()` is a bit too involved, I'll do that in a separate issue. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add reference page to documentation using Sphinx autodoc 965143346  
896186025 https://github.com/simonw/sqlite-utils/pull/312#issuecomment-896186025 https://api.github.com/repos/simonw/sqlite-utils/issues/312 IC_kwDOCGYnMM41arap simonw 9599 2021-08-10T17:42:51Z 2021-08-10T17:42:51Z OWNER That worked! https://sqlite-utils.datasette.io/en/autodoc/reference.html {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add reference page to documentation using Sphinx autodoc 965143346  
896182934 https://github.com/simonw/sqlite-utils/pull/312#issuecomment-896182934 https://api.github.com/repos/simonw/sqlite-utils/issues/312 IC_kwDOCGYnMM41aqqW simonw 9599 2021-08-10T17:38:44Z 2021-08-10T17:38:44Z OWNER From https://docs.readthedocs.io/en/stable/config-file/v2.html#packages it looks like I can tell Read The Docs to run `pip install -e .` using a `.readthedocs.yaml` configuration: ```yaml version: 2 sphinx: configuration: docs/conf.py python: version: "3.9" install: - method: pip path: . extra_requirements: - docs ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add reference page to documentation using Sphinx autodoc 965143346  
896180956 https://github.com/simonw/sqlite-utils/pull/312#issuecomment-896180956 https://api.github.com/repos/simonw/sqlite-utils/issues/312 IC_kwDOCGYnMM41aqLc simonw 9599 2021-08-10T17:35:51Z 2021-08-10T17:35:51Z OWNER Reading the rest of https://sphinx-rtd-tutorial.readthedocs.io/en/latest/sphinx-config.html#autodoc-configuration it suggests using a `requirements.txt` file to install dependencies - but I use `setup.py` for that so I need to figure out a different pattern here. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add reference page to documentation using Sphinx autodoc 965143346  
896175438 https://github.com/simonw/sqlite-utils/pull/312#issuecomment-896175438 https://api.github.com/repos/simonw/sqlite-utils/issues/312 IC_kwDOCGYnMM41ao1O simonw 9599 2021-08-10T17:28:19Z 2021-08-10T17:28:19Z OWNER https://sphinx-rtd-tutorial.readthedocs.io/en/latest/sphinx-config.html#autodoc-configuration says do something like this at the top of `conf.py`: ```python import os import sys sys.path.insert(0, os.path.abspath('../../simpleble/')) ``` {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add reference page to documentation using Sphinx autodoc 965143346  
896174456 https://github.com/simonw/sqlite-utils/pull/312#issuecomment-896174456 https://api.github.com/repos/simonw/sqlite-utils/issues/312 IC_kwDOCGYnMM41aol4 simonw 9599 2021-08-10T17:27:01Z 2021-08-10T17:27:01Z OWNER Docs are now building at https://sqlite-utils.datasette.io/en/autodoc/reference.html But there's a problem! The page is semi-blank: <img width="663" alt="Reference_—_sqlite-utils_3_15-6-gc11ff89_documentation" src="https://user-images.githubusercontent.com/9599/128906373-7463e0c9-3b08-4b15-a73a-84b8ba6ab342.png"> I need to teach Read The Docs how to ensure `sqlite_utils` is available for introspection. {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add reference page to documentation using Sphinx autodoc 965143346  
896162082 https://github.com/simonw/sqlite-utils/pull/312#issuecomment-896162082 https://api.github.com/repos/simonw/sqlite-utils/issues/312 IC_kwDOCGYnMM41alki codecov[bot] 22429695 2021-08-10T17:10:39Z 2021-08-10T23:07:35Z NONE # [Codecov](https://codecov.io/gh/simonw/sqlite-utils/pull/312?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) Report > Merging [#312](https://codecov.io/gh/simonw/sqlite-utils/pull/312?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (43bc064) into [main](https://codecov.io/gh/simonw/sqlite-utils/commit/ee469e3122d6f5973ec2584c1580d930daca2e7c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) (ee469e3) will **decrease** coverage by `0.02%`. > The diff coverage is `96.84%`. [![Impacted file tree graph](https://codecov.io/gh/simonw/sqlite-utils/pull/312/graphs/tree.svg?width=650&height=150&src=pr&token=O0X3703L9P&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison)](https://codecov.io/gh/simonw/sqlite-utils/pull/312?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) ```diff @@ Coverage Diff @@ ## main #312 +/- ## ========================================== - Coverage 96.30% 96.28% -0.03% ========================================== Files 5 5 Lines 2168 2179 +11 ========================================== + Hits 2088 2098 +10 - Misses 80 81 +1 ``` | [Impacted Files](https://codecov.io/gh/simonw/sqlite-utils/pull/312?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison) | Coverage Δ | | |---|---|---| | [sqlite\_utils/db.py](https://codecov.io/gh/simonw/sqlite-utils/pull/312/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Simon+Willison#diff-c3FsaXRlX3V0aWxzL2RiLnB5) | `97.91% <96.84%> (-0.08%)` … {"total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} Add reference page to documentation using Sphinx autodoc 965143346  

Next page

Advanced export

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

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
, [performed_via_github_app] TEXT);
CREATE INDEX [idx_issue_comments_issue]
                ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
                ON [issue_comments] ([user]);
Powered by Datasette · Queries took 238.174ms · About: simonw/datasette-graphql