id,node_id,number,state,locked,title,user,body,created_at,updated_at,closed_at,merged_at,merge_commit_sha,assignee,milestone,draft,head,base,author_association,repo,url,merged_by,auto_merge
297412464,MDExOlB1bGxSZXF1ZXN0Mjk3NDEyNDY0,38,closed,0,table.update() method,9599,"Refs #35
Still to do:
- [x] Unit tests
- [x] Switch to using `.get()`
- [x] Better exceptions, plus unit tests for what happens if pk does not exist
- [x] Documentation
- [x] Ensure compound primary keys work properly
- [x] `alter=True` support",2019-07-14T17:03:49Z,2019-07-28T15:43:51Z,2019-07-28T15:43:51Z,2019-07-28T15:43:51Z,0747dabb24b608e8524de4858ce50c60ba7e471b,,,0,16d7008002b43cf47a973791da93e5cdd5913fc3,a6749cdf43229c4f7864c946496e9ac0141627d9,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/38,,
303990683,MDExOlB1bGxSZXF1ZXN0MzAzOTkwNjgz,53,closed,0,Work in progress: m2m() method for creating many-to-many records,9599,"- [x] `table.insert({""name"": ""Barry""}).m2m(""tags"", lookup={""tag"": ""Coworker""})`
- [x] Explicit table name `.m2m(""humans"", ..., m2m_table=""relationships"")`
- [x] Automatically use an existing m2m table if a single obvious candidate exists (a table with two foreign keys in the correct directions)
- [x] Require the explicit `m2m_table=` argument if multiple candidates for the m2m table exist
- [x] Documentation
Refs #23",2019-08-03T10:03:56Z,2019-08-04T03:38:10Z,2019-08-04T03:37:33Z,2019-08-04T03:37:33Z,4c0912dbf27b12071aca9569bcf7233e60f91c7c,,,0,243bcaa1acd32a173c07b24dca553991493005a0,e1021030dd2d8d4705ad0e7bae389eeaea7fa17b,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/53,,
308292447,MDExOlB1bGxSZXF1ZXN0MzA4MjkyNDQ3,55,closed,0,Ability to introspect and run queries against views,9599,See #54 ,2019-08-17T13:40:56Z,2019-08-23T12:19:42Z,2019-08-23T12:19:42Z,2019-08-23T12:19:42Z,9faa98222669723d31e918bb16a42c13c363817f,,,0,4441d6d838fd7518ce715184361f549a04ec8b70,0e7b461eb3e925aef713206c15794ceae9259c57,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/55,,
313007483,MDExOlB1bGxSZXF1ZXN0MzEzMDA3NDgz,56,closed,0,Escape the table name in populate_fts and search.,49260,"The table names weren't escaped using double quotes in the populate_fts method.
Reproducible case:
```
>>> import sqlite_utils
>>> db = sqlite_utils.Database(""abc.db"")
>>> db[""http://example.com""].insert_all([
... {""id"": 1, ""age"": 4, ""name"": ""Cleo""},
... {""id"": 2, ""age"": 2, ""name"": ""Pancakes""}
... ], pk=""id"")
>>> db[""http://example.com""].enable_fts([""name""])
Traceback (most recent call last):
File """", line 1, in
db[""http://example.com""].enable_fts([""name""])
File ""/home/amjith/.virtualenvs/itsysearch/lib/python3.7/site-packages/sqlite_utils/db.py"", l
ine 705, in enable_fts
self.populate_fts(columns)
File ""/home/amjith/.virtualenvs/itsysearch/lib/python3.7/site-packages/sqlite_utils/db.py"", l
ine 715, in populate_fts
self.db.conn.executescript(sql)
sqlite3.OperationalError: unrecognized token: "":""
>>>
```",2019-09-01T06:29:05Z,2019-09-02T17:23:21Z,2019-09-02T17:23:21Z,,79852e97ecb69b88da87da0cba2a55887cf83bda,,,0,83ca4c802f5d5102e73ff366e61514ded81dc7a1,cb70f7d10996b844154bf3da88779dd1f65590bc,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/56,,
313383317,MDExOlB1bGxSZXF1ZXN0MzEzMzgzMzE3,60,closed,0,db.triggers and table.triggers introspection,9599,Closes #59,2019-09-03T00:04:32Z,2019-09-03T00:09:42Z,2019-09-03T00:09:42Z,2019-09-03T00:09:42Z,2ca63e3b2de5408a860c6c7c1852deb9a138279e,,,0,b0a27fbb34b4362ef192deb560612fabf046cd32,405e092d5916e70df10f82d15e9c052aa9ee8d80,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/60,,
313384926,MDExOlB1bGxSZXF1ZXN0MzEzMzg0OTI2,571,closed,0,detect_fts now works with alternative table escaping,9599,Fixes #570,2019-09-03T00:23:39Z,2019-09-03T00:32:28Z,2019-09-03T00:32:28Z,2019-09-03T00:32:28Z,2dc5c8dc259a0606162673d394ba8cc1c6f54428,,,0,a85239f69261c10f1a9f90514c8b5d113cb94585,f04deebec4f3842f7bd610cd5859de529f77d50e,OWNER,107914493,https://github.com/simonw/datasette/pull/571,,
313105634,MDExOlB1bGxSZXF1ZXN0MzEzMTA1NjM0,57,closed,0,Add triggers while enabling FTS,49260,"This adds the option for a user to set up triggers in the database to keep their FTS table in sync with the parent table.
Ref: https://sqlite.org/fts5.html#external_content_and_contentless_tables
I would prefer to make the creation of triggers the default behavior, but that will break existing usage where people have been calling `populate_fts` after inserting new rows.
I am happy to make changes to the PR as you see fit. ",2019-09-02T04:23:40Z,2019-09-03T01:03:59Z,2019-09-02T23:42:29Z,2019-09-02T23:42:29Z,405e092d5916e70df10f82d15e9c052aa9ee8d80,,,0,e01943271b17115fbe0e81d523126d2fb1c7c24b,cb70f7d10996b844154bf3da88779dd1f65590bc,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/57,,
327051673,MDExOlB1bGxSZXF1ZXN0MzI3MDUxNjcz,15,closed,0,"twitter-to-sqlite import command, refs #4",9599,,2019-10-11T06:37:14Z,2019-10-11T06:45:01Z,2019-10-11T06:45:01Z,2019-10-11T06:45:01Z,2019ee908731054c6eaa3d5123dfbdf7d2d70fc4,,,0,df1d85897118310a2d3c1b9e5aad108165302cf2,436a170d74ec70903d1b4ca430c2c6b6435cdfcc,MEMBER,206156866,https://github.com/dogsheep/twitter-to-sqlite/pull/15,,
327279818,MDExOlB1bGxSZXF1ZXN0MzI3Mjc5ODE4,592,closed,0,Offer SQL formatting,2657547,"SQL code will be formatted on page load, and can additionally be formatted by clicking the ""Format SQL"" button. Closes #136",2019-10-11T16:35:49Z,2019-10-14T08:57:12Z,2019-10-14T03:46:13Z,2019-10-14T03:46:13Z,af2e6a5cf186a7200d76cb67ac30fa59cc24d84e,,,0,b46195af65846ca30c6006520cc778eeed052324,fffd69ec031b83f46680f192ba57a27f0d1f0b8a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/592,,
327188087,MDExOlB1bGxSZXF1ZXN0MzI3MTg4MDg3,591,closed,0,Sort databases on homepage by argument order,2657547,Closes #585,2019-10-11T12:57:38Z,2019-10-14T08:57:50Z,2019-10-14T03:52:34Z,2019-10-14T03:52:34Z,908fc3999e06f3ccd3bb8ad0539490bbc7809748,,,0,5a8e52fa60f2c2c93f10b9c6c126f31b02d647b0,fffd69ec031b83f46680f192ba57a27f0d1f0b8a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/591,,
327169748,MDExOlB1bGxSZXF1ZXN0MzI3MTY5NzQ4,589,closed,0,Display metadata footer on custom SQL queries,2657547,Closes #408,2019-10-11T12:10:28Z,2019-10-14T08:58:23Z,2019-10-14T03:53:22Z,2019-10-14T03:53:22Z,12cec411cae73ba7211429da12cd32c551fe17b1,,,0,5627fe8d58e791e004b89b5614007d5e64a5c8e2,fffd69ec031b83f46680f192ba57a27f0d1f0b8a,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/589,,
329324368,MDExOlB1bGxSZXF1ZXN0MzI5MzI0MzY4,24,closed,0,Tweet source extraction and new migration system,9599,Closes #12 and #23,2019-10-17T15:24:56Z,2019-10-17T15:49:29Z,2019-10-17T15:49:24Z,2019-10-17T15:49:24Z,c9295233f219c446fa2085cace987067488a31b9,,,0,39f822a624685e321dbca8a4318741dd1e42548b,619f724a722b3f23f4364f67d3164b93e8ba2a70,MEMBER,206156866,https://github.com/dogsheep/twitter-to-sqlite/pull/24,,
329890320,MDExOlB1bGxSZXF1ZXN0MzI5ODkwMzIw,599,closed,0,Fix for /foo v.s. /foo-bar issue in #597,9599,Refs #597,2019-10-18T19:22:55Z,2019-10-18T22:51:07Z,2019-10-18T22:51:07Z,2019-10-18T22:51:07Z,b647b5efc29300f715ba656e41b0591f342938e1,,,0,8cc5a8dc35371f7d4353a4206b2d079f520c61cd,b6ad1fdc7068cb8248787843e7438d1f19fa2e3a,OWNER,107914493,https://github.com/simonw/datasette/pull/599,,
329947180,MDExOlB1bGxSZXF1ZXN0MzI5OTQ3MTgw,601,closed,0,Don't auto-format SQL on page load,9599,Refs #600,2019-10-18T22:37:39Z,2019-10-20T02:29:49Z,2019-10-18T23:56:45Z,2019-10-18T23:56:45Z,e877b1cb12076946fdbec7ca2fbfbfc75c1c2a28,,,0,3a963734590caa3ad69bfe64c31690f3e4de61a4,b6ad1fdc7068cb8248787843e7438d1f19fa2e3a,OWNER,107914493,https://github.com/simonw/datasette/pull/601,,
334448258,MDExOlB1bGxSZXF1ZXN0MzM0NDQ4MjU4,609,closed,0,Update to latest black,9599,,2019-10-30T18:42:35Z,2019-10-30T18:49:01Z,2019-10-30T18:49:01Z,2019-10-30T18:49:01Z,5dd4d2b2d3abcfd507a6df47e7c2fbad3c552fd8,,,0,6f57e5e77bac29ac88d51271fd0c785859a820ce,f4c0830529a9513a83437a9e1550bbe27ebc5c64,OWNER,107914493,https://github.com/simonw/datasette/pull/609,,
330129358,MDExOlB1bGxSZXF1ZXN0MzMwMTI5MzU4,603,closed,0,always pop as_format off args dict,6025893,closes #563,2019-10-20T15:44:22Z,2019-10-30T19:12:22Z,2019-10-21T02:03:09Z,2019-10-21T02:03:09Z,f4c0830529a9513a83437a9e1550bbe27ebc5c64,,,0,39d044502590224e4f07c05e02fc8a4d312255c1,8050f9e1ece9afd0236ad38c6458c12a4ad917e6,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/603,,
330076263,MDExOlB1bGxSZXF1ZXN0MzMwMDc2MjYz,602,closed,0,Offer to format readonly SQL,2657547,"Following discussion in #601, this PR adds a ""Format SQL"" button to
read-only SQL (if the SQL actually differs from the formatting result).
It also removes a console error on readonly SQL queries.",2019-10-20T02:29:32Z,2019-11-04T07:29:33Z,2019-11-04T02:39:56Z,2019-11-04T02:39:56Z,ee330222f4c3ee66c2fe41ebc76fed56b9cb9a00,,,0,266c3dafb9bf3b12204b6152d7b48e94a131584a,8050f9e1ece9afd0236ad38c6458c12a4ad917e6,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/602,,
327172545,MDExOlB1bGxSZXF1ZXN0MzI3MTcyNTQ1,590,closed,0,Handle spaces in DB names,2657547,Closes #503,2019-10-11T12:18:22Z,2019-11-04T23:16:31Z,2019-11-04T23:16:30Z,2019-11-04T23:16:30Z,931bfc66613aa3e22f8314df5c0d0758baf31f38,,,0,0c306e89e4f97f64921e4f6d1fe7bab52fad6ade,52fa79c6075f0830ff635b81d957c64d877a05aa,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/590,,
337847573,MDExOlB1bGxSZXF1ZXN0MzM3ODQ3NTcz,64,closed,0,test_insert_upsert_all_empty_list,9599,,2019-11-07T04:24:45Z,2019-11-07T04:32:38Z,2019-11-07T04:32:38Z,2019-11-07T04:32:38Z,8dab9fd1ccf571e188eec9ccf606a0c50fccf200,,,0,8daea7f1265ddcce67d28258068a25666954000f,a0a65f9a6405079b01aefdbf4b5f507bc758567a,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/64,,
337853394,MDExOlB1bGxSZXF1ZXN0MzM3ODUzMzk0,65,closed,0,Release 1.12.1,9599,,2019-11-07T04:51:29Z,2019-11-07T04:58:48Z,2019-11-07T04:58:47Z,2019-11-07T04:58:47Z,0a0cec3cf27861455e8cd1c4d84937825a18bb30,,,0,28f8a238ab8fc2a70ee81bd73de6c167d9db9cdf,8dab9fd1ccf571e188eec9ccf606a0c50fccf200,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/65,,
163561830,MDExOlB1bGxSZXF1ZXN0MTYzNTYxODMw,181,closed,0,"add ""format sql"" button to query page, uses sql-formatter",1957344,"Cool project!
This fixes #136 using the suggested [sql formatter](https://github.com/zeroturnaround/sql-formatter) library. I included the minified version in the bundle and added the relevant scripts to the codemirror includes instead of adding new files, though I could also add new files. I wanted to keep it all together, since the result of the format needs access to the editor in order to properly update the codemirror instance.",2018-01-17T21:50:04Z,2019-11-11T03:08:25Z,2019-11-11T03:08:25Z,,a9ac208088e536043890e0f7ff8a182398576a51,,,0,86ac746cfcbf2fa86863f8fab528494600eac1ae,a290f28caae61b47e76e825c06984f22fc41a694,NONE,107914493,https://github.com/simonw/datasette/pull/181,,
285698310,MDExOlB1bGxSZXF1ZXN0Mjg1Njk4MzEw,501,closed,0,Test against Python 3.8-dev using Travis,9599,,2019-06-06T08:37:53Z,2019-11-11T03:23:29Z,2019-11-11T03:23:29Z,,1aac0cf0ab962060dd5cff19b8b179bb7fa0f00b,,,0,a5defb684fcc734f6325ca08beef9f49c3e7a298,5e8fbf7f6fbc0b63d0479da3806dd9ccd6aaa945,OWNER,107914493,https://github.com/simonw/datasette/pull/501,,
339236647,MDExOlB1bGxSZXF1ZXN0MzM5MjM2NjQ3,623,closed,0,Test against Python 3.8 in Travis,9599,Needed for #622,2019-11-11T03:24:54Z,2019-11-11T03:45:35Z,2019-11-11T03:45:35Z,2019-11-11T03:45:35Z,1c063fae9dba70f70244db010d55a18846640f07,,,0,877dda2d287ed3b1772f051dffd295a69c3ecd27,28c4a6db5b5e512db630d7ba6127196185de67c7,OWNER,107914493,https://github.com/simonw/datasette/pull/623,,
339244888,MDExOlB1bGxSZXF1ZXN0MzM5MjQ0ODg4,624,closed,0,Bump pint to 0.9,9599,,2019-11-11T04:07:07Z,2019-11-11T04:19:02Z,2019-11-11T04:19:02Z,2019-11-11T04:19:02Z,42ee3e16a9ba7cc513b8da944cc1609a5407cf42,,,0,ed17117a2ad675cbf2430f28069bb1854846a6f0,1c063fae9dba70f70244db010d55a18846640f07,OWNER,107914493,https://github.com/simonw/datasette/pull/624,,
327541046,MDExOlB1bGxSZXF1ZXN0MzI3NTQxMDQ2,595,closed,0,bump uvicorn to 0.9.0 to be Python-3.8 friendly,4312421,"as uvicorn-0.9 is needed to get websockets-8.0.2, which is needed to have Python-3.8 compatibility",2019-10-13T10:00:04Z,2019-11-12T04:46:48Z,2019-11-12T04:46:48Z,,5a7185bcd15aab28e86338b3771c25af13a94a4c,,,0,e1d92ea94ca8f14879ef280cb7dadab7eed76e9c,fffd69ec031b83f46680f192ba57a27f0d1f0b8a,NONE,107914493,https://github.com/simonw/datasette/pull/595,,
247923347,MDExOlB1bGxSZXF1ZXN0MjQ3OTIzMzQ3,404,closed,0,Experiment: run Jinja in async mode,9599,"See http://jinja.pocoo.org/docs/2.10/api/#async-support
Tests all pass. Have not checked performance difference yet.
Creating pull request to run tests in Travis. This is not ready to merge - I'm not yet sure if this is a good idea.",2019-01-27T00:28:44Z,2019-11-12T05:02:18Z,2019-11-12T05:02:13Z,,773bcac907d17b16eef604ad943837da39a10090,,,0,dd7f24a47f660e2f0fc1e97a13d28908c28dc245,909cc8fbdfc9c05e447f40e9a73489809602c3cd,OWNER,107914493,https://github.com/simonw/datasette/pull/404,,
339742432,MDExOlB1bGxSZXF1ZXN0MzM5NzQyNDMy,630,closed,0,Use python:3.8 base Docker image,9599,Closes #629,2019-11-12T06:02:37Z,2019-11-12T06:03:10Z,2019-11-12T06:03:10Z,2019-11-12T06:03:10Z,d977fbadf70a96bf2eea1407d01f99d98e092dec,,,0,53180ec09483bd4eef00346a39b302aeb3039e7d,f554be39fc14ddc18921ca29d3920d55aad03d46,OWNER,107914493,https://github.com/simonw/datasette/pull/630,,
340211149,MDExOlB1bGxSZXF1ZXN0MzQwMjExMTQ5,631,closed,0,bugfix issue 572,3683993,closes bugfix issue #572 ,2019-11-13T02:46:50Z,2019-11-13T04:28:43Z,2019-11-13T04:28:42Z,2019-11-13T04:28:42Z,848dec4deb0d3c140a4e0394cac45fbb2593349b,,,0,ca43966e5aa832a377e4db5d411b6cc8b1c5b3ac,bbd00e903cdd49067ecdbdb60a4d225833a44b05,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/631,,
322529381,MDExOlB1bGxSZXF1ZXN0MzIyNTI5Mzgx,578,closed,0,Added support for multi arch builds,887095,Minor changes in Dockerfile and new Makefile to support Docker multi architecture builds. `make`will build one image per architecture and push them as one Docker manifest to Docker Hub. Feel free to change `IMAGE_NAME ` to `datasetteproject/datasette` to update your official Docker Hub image(s).,2019-09-29T18:43:03Z,2019-11-13T19:13:15Z,2019-11-13T19:13:15Z,,ae1aa0929b9e62a413ec9b4a40588e6aafe50573,,,0,ce6372bc6210ae52ac1951647b8fbaee40d64fc1,0fc8afde0eb5ef677f4ac31601540d6168c8208d,NONE,107914493,https://github.com/simonw/datasette/pull/578,,
232172106,MDExOlB1bGxSZXF1ZXN0MjMyMTcyMTA2,389,closed,0,Bump dependency versions,9599,,2018-11-20T02:23:12Z,2019-11-13T19:13:41Z,2019-11-13T19:13:41Z,,9194c0165aef411e0784ba49939b1005306f1f38,,,0,f8349b45916e68d2f89c57694bd0e6afaf1bd508,5e3a432a0caa23837fa58134f69e2f82e4f632a6,OWNER,107914493,https://github.com/simonw/datasette/pull/389,,
340743220,MDExOlB1bGxSZXF1ZXN0MzQwNzQzMjIw,635,closed,0,Use Jinja async mode,9599,Refs #628. Still needs documentation.,2019-11-14T01:20:57Z,2019-11-14T23:14:23Z,2019-11-14T23:14:23Z,2019-11-14T23:14:22Z,8c642f04e0608bf537fdd1f76d64c2367fb04d57,,,0,0e8f8be1dbf89a6f689a5eea4a0534199a0028f6,b51f258d00bb3c3b401f15d46a1fbd50394dbe1c,OWNER,107914493,https://github.com/simonw/datasette/pull/635,,
323983732,MDExOlB1bGxSZXF1ZXN0MzIzOTgzNzMy,579,open,0,New connection pooling,9599,See #569,2019-10-02T23:22:19Z,2019-11-15T22:57:21Z,,,025b4024b1b43ea034b7fd331c30740165ff75f2,,,0,32cbfd2acd28bcefb97c442ac8e3ee2c07401e19,a9909c29ccac771c23c2ef22b89d10697b5256b9,OWNER,107914493,https://github.com/simonw/datasette/pull/579,,
295127213,MDExOlB1bGxSZXF1ZXN0Mjk1MTI3MjEz,546,open,0,Facet by delimiter,9599,Refs #510,2019-07-07T20:06:05Z,2019-11-18T23:46:01Z,,,68a6fb1a576a747b868771d00a10753f35aaa0cf,,,0,47ac6c6e46da16716d295d7cda8f79cd0663ca5e,a9909c29ccac771c23c2ef22b89d10697b5256b9,OWNER,107914493,https://github.com/simonw/datasette/pull/546,,
216651317,MDExOlB1bGxSZXF1ZXN0MjE2NjUxMzE3,365,closed,0,fix small doc typo,418191,,2018-09-19T14:02:02Z,2019-12-19T02:30:33Z,2018-09-19T17:15:43Z,2018-09-19T17:15:43Z,1bcd54a834a2f9730d21095df855f6708c85c200,,,0,d3fb6a80c5878c73befa2a35e11a9ce28a6e1ab6,b7257a21bf3dfa7353980f343c83a616da44daa7,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/365,,
235194286,MDExOlB1bGxSZXF1ZXN0MjM1MTk0Mjg2,390,closed,0,tiny typo in customization docs,418191,was looking to add some custom templates to my use of datasette and saw this small typo.,2018-12-01T13:44:42Z,2019-12-19T02:30:35Z,2018-12-16T21:32:56Z,2018-12-16T21:32:56Z,ed78922ae38b51513319b60ac39990b7c2aca810,,,0,f8c01373dad3b8dcd10577a2e541f88ef34c77bc,3de8fac1d322cbab6c8c55899e0e8511b36337d0,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/390,,
357992588,MDExOlB1bGxSZXF1ZXN0MzU3OTkyNTg4,72,closed,0,Fixed implementation of upsert,9599,Refs #66,2019-12-30T05:08:05Z,2019-12-30T05:29:24Z,2019-12-30T05:29:24Z,2019-12-30T05:29:24Z,9f47e8b9a4cb788b48b76aee1333c6f3baaebbd6,,,0,ab8a4bda75fc59871ba8445c6a0fb2332483029c,dc0a62556ec092be7b341c5220e0410354f7cd02,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/72,,
346264926,MDExOlB1bGxSZXF1ZXN0MzQ2MjY0OTI2,67,closed,0,Run tests against 3.5 too,9599,,2019-11-27T14:20:35Z,2019-12-31T01:29:44Z,2019-12-31T01:29:43Z,,88375b0bc055067b996584f06ed85a9a90c5aa1a,,,0,4c6e5a4486e0e17555774eb3279142234a8b4abc,0a0cec3cf27861455e8cd1c4d84937825a18bb30,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/67,,
365218391,MDExOlB1bGxSZXF1ZXN0MzY1MjE4Mzkx,660,closed,0,"gcloud run is now GA, s/beta//",813732,,2020-01-21T10:08:38Z,2020-01-22T03:41:09Z,2020-01-21T23:28:12Z,2020-01-21T23:28:12Z,34d77d780f68b778fd9d6ebbaf69f250436f055f,,,0,894e96026b838288f926f62914123a1f86139793,3c861f363df02a59a67c59036278338e4760d2ed,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/660,,
368734500,MDExOlB1bGxSZXF1ZXN0MzY4NzM0NTAw,663,closed,0,"-p argument for datasette package, plus tests - refs #661",9599,,2020-01-29T19:47:49Z,2020-01-29T22:46:43Z,2020-01-29T22:46:43Z,2020-01-29T22:46:43Z,67fc9c5720ed1fcd62b116481f70d4e80b403a22,,,0,8adfc9db7f15e36fed677be4a9c833ff2cdec0bc,34d77d780f68b778fd9d6ebbaf69f250436f055f,OWNER,107914493,https://github.com/simonw/datasette/pull/663,,
359822773,MDExOlB1bGxSZXF1ZXN0MzU5ODIyNzcz,75,closed,0,Explicitly include tests and docs in sdist,15092,Also exclude 'tests' from runtime installation.,2020-01-07T04:53:20Z,2020-01-31T00:21:27Z,2020-01-31T00:21:27Z,2020-01-31T00:21:27Z,0988f2eccc2dfa26b1a55243582222f540a72838,,,0,39a836450b23bf2fe1ba9a071a5a9a00a0949cd6,59a2e8ebdcbde7e6fb091b0556713ca5a20ea4e7,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/75,,
369394043,MDExOlB1bGxSZXF1ZXN0MzY5Mzk0MDQz,80,closed,0,on_create mechanism for after table creation,9599,"I need this for `geojson-to-sqlite`, in particular https://github.com/simonw/geojson-to-sqlite/issues/6",2020-01-31T03:38:48Z,2020-01-31T05:08:04Z,2020-01-31T05:08:04Z,,e6dc95d19348e72b28b42e73a18737cb2e4563e0,,,0,45bf0c25492c276bde0b85868ffb55f169375bd7,f7289174e66ae4d91d57de94bbd9d09fabf7aff4,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/80,,
370675007,MDExOlB1bGxSZXF1ZXN0MzcwNjc1MDA3,664,closed,0,Datasette.render_template() method,9599,Refs #577,2020-02-04T06:53:59Z,2020-02-04T20:26:18Z,2020-02-04T20:26:18Z,2020-02-04T20:26:18Z,70b915fb4bc214f9d064179f87671f8a378aa127,,,0,19d4406f562aca291fef04363802093672620220,286ed286b68793532c2a38436a08343b45cfbc91,OWNER,107914493,https://github.com/simonw/datasette/pull/664,,
356004242,MDExOlB1bGxSZXF1ZXN0MzU2MDA0MjQy,653,closed,0,allow leading comments in SQL input field,418191,"this changes the SQL validation to allow for lines that are commented out
my main use case for this is that I like to write a succession of queries when trying to solve a problem.
In most native SQL clients there is a key binding that will run just the current highlighted query or the program is smart enough to run just the query that the cursor is in if it's properly delimited with a ';'.
Typically my workflow will start with a single simple query and I'll copy/paste it to a new query below when I want to make big changes while debugging. This makes it easy to go back to a working version above when the query doesn't work.
Since datasette sends the whole query to the DB I have to comment out the older queries by prefixing each line with `--`. This gets caught by the validators when I use my typical strategy of copy/pasting each successive query below the last one.
so this is just a simple fix to allow for a query to be sent to the DB with leading comments.
",2019-12-21T14:19:52Z,2020-02-05T02:35:41Z,2020-02-05T02:13:25Z,2020-02-05T02:13:25Z,33a12c8ae526afb40a7819c9ca411c9d3c41219b,,,0,3a4cb551b9a217d5798e3e9ad5d4b06234a81885,d6b6c9171f3fd945c4e5e4144923ac831c43c208,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/653,,
373775788,MDExOlB1bGxSZXF1ZXN0MzczNzc1Nzg4,669,closed,0,fix db-to-sqlite command in ecosystem doc page,883348,the `--connection` parameter has become positional,2020-02-11T17:05:41Z,2020-02-22T02:32:18Z,2020-02-22T02:32:17Z,2020-02-22T02:32:17Z,be2265b0e811d0ac2875c2f748125c17b0f9289e,,,0,6eb0e8cd90be82eff0a5152b0985c2a3cb7a44a8,30b6f71b306a43605c99bef79302ed5cb22d1924,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/669,,
379378780,MDExOlB1bGxSZXF1ZXN0Mzc5Mzc4Nzgw,686,closed,0,?_searchmode=raw option,9599,Closes #676,2020-02-25T05:45:50Z,2020-02-25T05:56:09Z,2020-02-25T05:56:04Z,2020-02-25T05:56:04Z,6cb65555f46456eb31b62e855e21b1d8c809b1a2,,,0,abc782cb342c21b565142e44e70502e61ac6756b,a093c5f79fa034a97d2ad8b606745dd3b80365af,OWNER,107914493,https://github.com/simonw/datasette/pull/686,,
381666777,MDExOlB1bGxSZXF1ZXN0MzgxNjY2Nzc3,688,closed,0,Don't count rows on homepage for DBs > 100MB,9599,Closes #649.,2020-02-29T01:01:06Z,2020-02-29T01:08:30Z,2020-02-29T01:08:29Z,2020-02-29T01:08:29Z,7f5a330377fd7db1f6d1efa5686d183bcaf89217,,,0,025fdd46f77822c0cbeb7856611c0a65a9b83057,0f8e91c68f2d2ad48efc8324b12762bf8b58facd,OWNER,107914493,https://github.com/simonw/datasette/pull/688,,
372763906,MDExOlB1bGxSZXF1ZXN0MzcyNzYzOTA2,666,closed,0,"Use inspect-file, if possible, for total row count",13896256,"For large tables, counting the number of rows in the table can take a
signficant amount of time. Instead, where an inspect-file is provided
for an immutable database, look up the row-count for a plain count(*).",2020-02-08T22:10:35Z,2020-03-09T02:47:15Z,2020-02-25T20:19:29Z,2020-02-25T20:19:29Z,3041c6b6412bbe317f8b9afd6529a15954f2c47e,,,0,8947a60404b8242a03f9ebabc5f957d75f4dfe04,b031fe97636b80b05fec409ee1dffb7d044fd4e9,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/666,,
372273608,MDExOlB1bGxSZXF1ZXN0MzcyMjczNjA4,33,closed,0,Upgrade to sqlite-utils 2.2.1,9599,,2020-02-07T07:32:12Z,2020-03-20T19:21:42Z,2020-03-20T19:21:41Z,,5338f6baab3ec1424431133968d8b64a656ce4c4,,,0,08f51271d6309aad698b9e8a7587fcebbbd67781,35c18a09fa664324dcb75e5e58ccb90644456d02,MEMBER,206156866,https://github.com/dogsheep/twitter-to-sqlite/pull/33,,
354869391,MDExOlB1bGxSZXF1ZXN0MzU0ODY5Mzkx,652,closed,0,Quick (and uninformed and perhaps misguided) attempt to add a url for hosting datasette at a particular host/URI,132978,"As usual, I don't really know what I'm doing... so this is just a suggested approach. I've not written tests, I've not run the tests, I don't know if I've missed some absolute URLs that would need to have the leading slash dropped.
BUT, I tested it with `--config base_url:http://127.0.0.1:8001/` on the command line and from what little I know about datasette it's at least working in some obvious cases.
My changes are based on what I saw in https://github.com/simonw/datasette/commit/8da2db4b71096b19e7a9ef1929369b8483d448bf (thanks!)
I'm happy to be more thorough on this if you think it's worth pursuing.
Fixes #394 (he said, optimistically).",2019-12-18T23:37:16Z,2020-03-24T22:14:50Z,2020-03-24T22:14:50Z,,8e674de58c17c89c8a4a90bc3ec6e02151b354e5,,,0,eaa636841e38d40360a74596ef1a0df50f6a86a5,a498d0fe6590f9bdbc4faf9e0dd5faeb3b06002c,NONE,107914493,https://github.com/simonw/datasette/pull/652,,
393274433,MDExOlB1bGxSZXF1ZXN0MzkzMjc0NDMz,708,closed,0,"base_url configuration setting, refs #394",9599,Pull request implementing #394,2020-03-24T21:52:00Z,2020-03-25T00:18:44Z,2020-03-25T00:18:44Z,2020-03-25T00:18:44Z,7656fd64d8b6a32ebc34d89c1b8711cc5ea240f7,,5234079,0,b1f953b5de1bef239ddb1d133f9b2e19f8e3438a,a498d0fe6590f9bdbc4faf9e0dd5faeb3b06002c,OWNER,107914493,https://github.com/simonw/datasette/pull/708,,
375180832,MDExOlB1bGxSZXF1ZXN0Mzc1MTgwODMy,672,open,0,--dirs option for scanning directories for SQLite databases,9599,Refs #417.,2020-02-14T02:25:52Z,2020-03-27T01:03:53Z,,,0e0e544f1f23451f04d7ca576ace5b18ce168e6f,,,0,ee718b98b793df2a15b125cbf20816c9864bf7e9,6aa516d82dea9885cb4db8d56ec2ccfd4cd9b840,OWNER,107914493,https://github.com/simonw/datasette/pull/672,,
357640186,MDExOlB1bGxSZXF1ZXN0MzU3NjQwMTg2,6,closed,0,don't break if source is missing,78035,broke for me. very old checkins in 2010 had no source set.,2019-12-29T10:46:47Z,2020-03-28T02:28:11Z,2020-03-28T02:28:11Z,2020-03-28T02:28:11Z,d3c4ab2848ea606417150f377a82e66ca7887c54,,,0,a41b5bcd63012f64fe6746825d7101cc3d071483,f2c89dd613fb8a7f14e5267ccc2145463b996190,CONTRIBUTOR,205429375,https://github.com/dogsheep/swarm-to-sqlite/pull/6,,
395258687,MDExOlB1bGxSZXF1ZXN0Mzk1MjU4Njg3,96,closed,0,Add type conversion for Panda's Timestamp,32605365,"Add type conversion for Panda's Timestamp, if Panda library is present in system
(thanks for this project, I was about to do the same thing from scratch)",2020-03-29T14:13:09Z,2020-03-31T04:40:49Z,2020-03-31T04:40:48Z,2020-03-31T04:40:48Z,8ea626e5fcdc4c9e52f615c6347e68173805f8b4,,,0,16ebbd2d494caabd0eeb502f8a944614b464bb12,22250a9c735077d6f365b73bf824e6c67b122c83,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/96,,
397749653,MDExOlB1bGxSZXF1ZXN0Mzk3NzQ5NjUz,714,closed,0,--metadata accepts YAML as well as JSON,9599,Refs #713. Still needs tests and documentation.,2020-04-02T18:36:02Z,2020-04-02T19:30:54Z,2020-04-02T19:30:54Z,2020-04-02T19:30:54Z,6717c719dd36dc2adc0f9da38a8c8e08129e96b4,,,0,5170c31adc44f6ef14b21782ba6f8ecb46dd9450,2aaad72789c427875426673c1a43e67c86fc970e,OWNER,107914493,https://github.com/simonw/datasette/pull/714,,
339722790,MDExOlB1bGxSZXF1ZXN0MzM5NzIyNzkw,627,closed,0,"Support Python 3.8, stop supporting Python 3.5",9599,Refs #622,2019-11-12T04:36:33Z,2020-04-05T10:23:58Z,2019-11-12T05:09:12Z,2019-11-12T05:09:12Z,cf7776d36fbacefa874cbd6e5fcdc9fff7661203,,,0,18cc795b5c6ec9223a5cbc4f30b19710c17f7eaa,42ee3e16a9ba7cc513b8da944cc1609a5407cf42,OWNER,107914493,https://github.com/simonw/datasette/pull/627,,
409123897,MDExOlB1bGxSZXF1ZXN0NDA5MTIzODk3,737,closed,0,"Custom pages mechanism, refs #648",9599,"Refs #648. TODO:
- [x] Pass a `view_name` to `render_template()`
- [x] Mechanism for custom status code / headers / redirect
- [x] Documentation",2020-04-26T17:31:41Z,2020-04-26T18:46:43Z,2020-04-26T18:46:43Z,2020-04-26T18:46:43Z,304e7b1d9fd904ae1c35600bc03662eb90eeeae0,,,0,b5bbf1bd88f67a26eb34902bc11f2da7692c7af2,227bb3e91fe34811a9374150798643a5af98ed79,OWNER,107914493,https://github.com/simonw/datasette/pull/737,,
409153870,MDExOlB1bGxSZXF1ZXN0NDA5MTUzODcw,739,closed,0,Configuration directory mode,9599,"Refs #731
TODO:
- [x] Decide how to combine explicit command-line options with items detected from the directory structure
- [x] Add unit tests
- [x] Implement `inspect-data.json` mechanism for populating `immutables`
- [x] Add documentation",2020-04-26T20:37:46Z,2020-04-27T16:30:25Z,2020-04-27T16:30:25Z,2020-04-27T16:30:25Z,25014ca25eb70b4c1217558ebd14db2845973bfb,,,0,0d8fa53fab672fcf16b6a75aa55b07ccd243fb96,1b7b66c465e44025ec73421bd69752e42f108321,OWNER,107914493,https://github.com/simonw/datasette/pull/739,,
410469272,MDExOlB1bGxSZXF1ZXN0NDEwNDY5Mjcy,746,closed,0,"shutil.Error, not OSError",9599,Refs #744,2020-04-29T03:30:51Z,2020-04-29T07:07:24Z,2020-04-29T07:07:23Z,,e4e8b51b50e51b2515c6d8874d16c4607f79b80a,,,0,af3a5b91503f5d74aa111bbcd1ee531ee00f9ed7,89c4ddd4828623888e91a1d2cb396cba12d4e7b4,OWNER,107914493,https://github.com/simonw/datasette/pull/746,,
335980246,MDExOlB1bGxSZXF1ZXN0MzM1OTgwMjQ2,8,closed,0,"stargazers command, refs #4",9599,Needs tests. Refs #4.,2019-11-03T00:37:36Z,2020-05-02T20:00:27Z,2020-05-02T20:00:26Z,,db25bdf8cee4c3e2d730cf269eb9a903b51cdb41,,,0,ea07274667a08c67907e8bfbbccb6f0fb95ce817,ae9035f8fe5aff1c54bff4c6b4c2e808a44f0f2a,MEMBER,207052882,https://github.com/dogsheep/github-to-sqlite/pull/8,,
406677205,MDExOlB1bGxSZXF1ZXN0NDA2Njc3MjA1,730,closed,0,"Update pytest-asyncio requirement from ~=0.10.0 to >=0.10,<0.12",27856297,"Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-04-21T13:32:35Z,2020-05-04T13:27:24Z,2020-05-04T13:27:23Z,,460708c7107a7cf15971a9aa1040635f6bc1be6d,,,0,11c67f82cdccc6e34cbff717e673451ac6172ef4,15e232180427e988174fdf88440c84b91d2d98d1,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/730,,
406067019,MDExOlB1bGxSZXF1ZXN0NDA2MDY3MDE5,728,closed,0,"Update mergedeep requirement from ~=1.1.1 to >=1.1.1,<1.4.0",27856297,"Updates the requirements on [mergedeep](https://github.com/clarketm/mergedeep) to permit the latest version.
Commits
3d6e7b4 v1.3.0 - support additive merging of Counter types
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-04-20T13:33:23Z,2020-05-04T16:45:58Z,2020-05-04T16:45:49Z,2020-05-04T16:45:49Z,e232f77055880b38cc0b738607cd50cde9188eaf,,,0,b584fbc4215d92df08360937916ffe128f11f72e,985e59493e44d6fcebf7a30f693f4edecee3e90d,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/728,,
407929128,MDExOlB1bGxSZXF1ZXN0NDA3OTI5MTI4,734,closed,0,"Update janus requirement from ~=0.4.0 to >=0.4,<0.6",27856297,"Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version.
Changelog
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-04-23T13:43:45Z,2020-05-04T16:48:14Z,2020-05-04T16:48:04Z,2020-05-04T16:48:04Z,109c5a430d53fe38b1300e0daa20f5cef047a08e,,,0,281b2c1acf1a2ef39c784dc73f1eb184d898d369,e232f77055880b38cc0b738607cd50cde9188eaf,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/734,,
400579136,MDExOlB1bGxSZXF1ZXN0NDAwNTc5MTM2,722,closed,0,"Update jinja2 requirement from ~=2.10.3 to >=2.10.3,<2.12.0",27856297,"Updates the requirements on [jinja2](https://github.com/pallets/jinja) to permit the latest version.
Release notes
Fix a bug that prevented looking up a key after an attribute ({{ data.items[1:] }}) in an async template. 1141
Version 2.11.0
Released 2020-01-27
Drop support for Python 2.6, 3.3, and 3.4. This will be the last version to support Python 2.7 and 3.5.
Added a new ChainableUndefined class to support getitem and getattr on an undefined object. 977
Allow {%+ syntax (with NOP behavior) when lstrip_blocks is disabled. 748
Added a default parameter for the map filter. 557
Exclude environment globals from meta.find_undeclared_variables. 931
Float literals can be written with scientific notation, like 2.56e-3. 912, 922
Int and float literals can be written with the '_' separator for legibility, like 12_345. 923
Fix a bug causing deadlocks in LRUCache.setdefault. 1000
The trim filter takes an optional string of characters to trim. 828
A new jinja2.ext.debug extension adds a {% debug %} tag to quickly dump the current context and available filters and tests. 174, 798, 983
Lexing templates with large amounts of whitespace is much faster. 857, 858
Parentheses around comparisons are preserved, so {{ 2 * (3 < 5) }} outputs "2" instead of "False". 755, 938
Add new boolean, false, true, integer and float tests. 824
The environment's finalize function is only applied to the output of expressions (constant or not), not static template data. 63
When providing multiple paths to FileSystemLoader, a template can have the same name as a directory. 821
Always return Undefined when omitting the else clause in a {{ 'foo' if bar }} expression, regardless of the environment's undefined class. Omitting the else clause is a valid shortcut and should not raise an error when using StrictUndefined. 710, 1079
Fix behavior of loop control variables such as length and revindex0 when looping over a generator. 459, 751, 794, 993
Async support is only loaded the first time an environment enables it, in order to avoid a slow initial import. 765
In async environments, the |map filter will await the filter call if needed. 913
In for loops that access loop attributes, the iterator is not advanced ahead of the current iteration unless length, revindex, nextitem, or last are accessed. This makes it less likely to break groupby results. 555, 1101
In async environments, the loop attributes length and revindex work for async iterators. 1101
In async environments, values from attribute/property access will be awaited if needed. 1101
~loader.PackageLoader doesn't depend on setuptools or pkg_resources. 970
PackageLoader has limited support for 420 namespace packages. 1097
Support os.PathLike objects in ~loader.FileSystemLoader and ~loader.ModuleLoader. 870
~nativetypes.NativeTemplate correctly handles quotes between expressions. "'{{ a }}', '{{ b }}'" renders as the tuple ('1', '2') rather than the string '1, 2'. 1020
Creating a ~nativetypes.NativeTemplate directly creates a ~nativetypes.NativeEnvironment instead of a default Environment. 1091
After calling LRUCache.copy(), the copy's queue methods point to the correct queue. 843
Compiling templates always writes UTF-8 instead of defaulting to the system encoding. 889
|wordwrap filter treats existing newlines as separate paragraphs to be wrapped individually, rather than creating short intermediate lines. 175
Add break_on_hyphens parameter to |wordwrap filter. 550
Cython compiled functions decorated as context functions will be passed the context. 1108
When chained comparisons of constants are evaluated at compile time, the result follows Python's behavior of returning False if any comparison returns False, rather than only the last one. 1102
Tracebacks for exceptions in templates show the correct line numbers and source for Python >= 3.7. 1104
Tracebacks for template syntax errors in Python 3 no longer show internal compiler frames. 763
Add a DerivedContextReference node that can be used by extensions to get the current context and local variables such as loop. 860
Constant folding during compilation is applied to some node types that were previously overlooked. 733
TemplateSyntaxError.source is not empty when raised from an included template. 457
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-04-08T01:25:24Z,2020-05-04T17:13:26Z,2020-05-04T17:13:16Z,2020-05-04T17:13:16Z,aa064de3f400899dbf61f2d33a035fba4017596c,,,0,0a503b7fdb0cce1bb82e18c4552a4f92808fe41f,d55fe8cdfc2ce7bc6960bf2507766c1fcd1d31a7,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/722,,
400579077,MDExOlB1bGxSZXF1ZXN0NDAwNTc5MDc3,721,closed,0,"Update pytest requirement from ~=5.2.2 to >=5.2.2,<5.5.0",27856297,"Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
Release notes
#6909: Revert the change introduced by #6330, which required all arguments to @pytest.mark.parametrize to be explicitly defined in the function signature.
The intention of the original change was to remove what was expected to be an unintended/surprising behavior, but it turns out many people relied on it, so the restriction has been reverted.
#6910: Fix crash when plugins return an unknown stats while using the --reportlog option.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-04-08T01:25:04Z,2020-05-04T17:13:49Z,2020-05-04T17:13:41Z,2020-05-04T17:13:41Z,c91fb9e3d4f0632d4ef25a21165739ab88a9d491,,,0,54ea56285f9512c991e343ffad9d848d551977de,d55fe8cdfc2ce7bc6960bf2507766c1fcd1d31a7,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/721,,
399166433,MDExOlB1bGxSZXF1ZXN0Mzk5MTY2NDMz,719,closed,0,asgi: check raw_path is not None,193185,"The ASGI spec
(https://asgi.readthedocs.io/en/latest/specs/www.html#http) seems to imply that `None` is a valid value, so we need to check the value itself, not just whether the key is present.
In particular, the [mangum](https://github.com/erm/mangum) adapter passes `None` for this key's value. This change permits mangum to be used to front datasette in Amazon API Gateway + AWS Lambda deployments.",2020-04-05T16:53:58Z,2020-05-04T17:14:26Z,2020-05-04T17:14:26Z,2020-05-04T17:14:26Z,dbd2d70b3819a7041bb36a527033d77c85683c05,,,0,161f61d73800a605354b4ac44a3c989e19bbc77a,e0e7a0facfc935a835cd73c720bc46661462f0b1,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/719,,
400578979,MDExOlB1bGxSZXF1ZXN0NDAwNTc4OTc5,720,closed,0,"Update beautifulsoup4 requirement from ~=4.8.1 to >=4.8.1,<4.10.0",27856297,"Updates the requirements on [beautifulsoup4](http://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-04-08T01:24:38Z,2020-05-04T17:14:51Z,2020-05-04T17:14:46Z,2020-05-04T17:14:46Z,707fe039947b3e48f2b6dcfe8e577d76b617f2a5,,,0,ab76bf88f597e61668dc6fc750502f8db207bd9c,d55fe8cdfc2ce7bc6960bf2507766c1fcd1d31a7,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/720,,
412951191,MDExOlB1bGxSZXF1ZXN0NDEyOTUxMTkx,753,closed,0,"Update pytest-asyncio requirement from ~=0.10.0 to >=0.10,<0.13",27856297,"Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-05-04T13:27:19Z,2020-05-04T17:41:01Z,2020-05-04T17:40:49Z,2020-05-04T17:40:49Z,b314e088c59425122fb2b2abde8741010d9d274a,,,0,877fb569d2ae460ce845c7c855b02e0cdac23b68,707fe039947b3e48f2b6dcfe8e577d76b617f2a5,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/753,,
402645984,MDExOlB1bGxSZXF1ZXN0NDAyNjQ1OTg0,725,closed,0,"Update aiofiles requirement from ~=0.4.0 to >=0.4,<0.6",27856297,"Updates the requirements on [aiofiles](https://github.com/Tinche/aiofiles) to permit the latest version.
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-04-13T13:32:47Z,2020-05-04T18:16:54Z,2020-05-04T16:17:49Z,2020-05-04T16:17:49Z,985e59493e44d6fcebf7a30f693f4edecee3e90d,,,0,a7053e8d17559a6ebb4265c0783b84cc6aaff7e2,d349d57cdf3d577afb62bdf784af342a4d5be660,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/725,,
421491810,MDExOlB1bGxSZXF1ZXN0NDIxNDkxODEw,768,closed,0,Use dirs_exist_ok=True,9599,Refs #744,2020-05-21T17:53:44Z,2020-05-27T20:21:56Z,2020-05-21T17:53:51Z,2020-05-21T17:53:51Z,cee671a58f417f827d1735b1abaa40716534ea67,,5471110,0,f2e0a558238a34dc482803762de2509474a178c6,faea5093b865031f650da7da6539430f732f511a,OWNER,107914493,https://github.com/simonw/datasette/pull/768,,
424032445,MDExOlB1bGxSZXF1ZXN0NDI0MDMyNDQ1,769,closed,0,Backport of Python 3.8 shutil.copytree,9599,Closes #744,2020-05-27T18:17:15Z,2020-05-27T20:21:56Z,2020-05-27T18:17:44Z,2020-05-27T18:17:44Z,2d099ad9c657d2cab59de91cdb8bfed2da236ef6,,5471110,0,6f80757f27e4651e6533856ea87b676dbc0d9c37,cee671a58f417f827d1735b1abaa40716534ea67,OWNER,107914493,https://github.com/simonw/datasette/pull/769,,
424085264,MDExOlB1bGxSZXF1ZXN0NDI0MDg1MjY0,772,closed,0,Test that plugin hooks are unit tested,9599,Refs #771,2020-05-27T20:01:32Z,2020-05-27T20:21:56Z,2020-05-27T20:16:03Z,2020-05-27T20:16:02Z,da87e963bff24e47878a5bc2025c8bfc63d4bc93,,5471110,0,173b6947521f1c1b47a119f62f379bf4278c87c9,41a0cd7b6afe0397efbbf27ad822679fc574811a,OWNER,107914493,https://github.com/simonw/datasette/pull/772,,
379192258,MDExOlB1bGxSZXF1ZXN0Mzc5MTkyMjU4,683,closed,0,.execute_write() and .execute_write_fn() methods on Database,9599,"See #682
- [x] Come up with design for `.execute_write()` and `.execute_write_fn()`
- [x] Build some quick demo plugins to exercise the design
- [x] Write some unit tests
- [x] Write the documentation",2020-02-24T19:51:58Z,2020-05-30T18:40:20Z,2020-02-25T04:45:08Z,2020-02-25T04:45:08Z,a093c5f79fa034a97d2ad8b606745dd3b80365af,,3268330,0,ec6e2edfe18446c9d77e3f30efbc299d27ea5c1b,411056c4c43e74f2b3d0e3bc1175e7998516b1b3,OWNER,107914493,https://github.com/simonw/datasette/pull/683,,
425531205,MDExOlB1bGxSZXF1ZXN0NDI1NTMxMjA1,783,closed,0,Authentication: plugin hooks plus default --root auth mechanism,9599,See #699,2020-05-30T22:25:47Z,2020-06-01T01:16:44Z,2020-06-01T01:16:43Z,2020-06-01T01:16:43Z,57cf5139c552cb7feab9947daa949ca434cc0a66,,,0,116a26ce2d4af26c928e361e1b24dd6a6bb14eca,c4fbe50676929b512940aab90de590a78ac5d7fc,OWNER,107914493,https://github.com/simonw/datasette/pull/783,,
391924509,MDExOlB1bGxSZXF1ZXN0MzkxOTI0NTA5,703,closed,0,WIP implementation of writable canned queries,9599,Refs #698.,2020-03-21T22:23:51Z,2020-06-03T00:08:14Z,2020-06-02T23:57:35Z,,80c5a74a947e63673389604de12e80fa27305454,,,1,61e40e917efc43a8aea5298a22badbb6eaea3fa1,89c4ddd4828623888e91a1d2cb396cba12d4e7b4,OWNER,107914493,https://github.com/simonw/datasette/pull/703,,
426891471,MDExOlB1bGxSZXF1ZXN0NDI2ODkxNDcx,796,closed,0,New WIP writable canned queries,9599,"Refs #698. Replaces #703
Still todo:
- [x] Unit tests
- ~~Figure out `.json` mode~~
- [x] Flash message solution
- ~~CSRF protection~~
- [x] Better error message display on errors
- [x] Documentation
- ~~Maybe widgets?~~ I'll do these later",2020-06-03T00:08:00Z,2020-06-03T15:16:52Z,2020-06-03T15:16:50Z,2020-06-03T15:16:50Z,aa82d0370463580f2cb10d9617f1bcbe45cc994a,,3268330,0,e164939de719b5930ca4972e20490c9b2fd37f6d,9690ce606823bbfceb0c50d59e03adf7bb1a8475,OWNER,107914493,https://github.com/simonw/datasette/pull/796,,
428212421,MDExOlB1bGxSZXF1ZXN0NDI4MjEyNDIx,798,closed,0,CSRF protection,9599,Refs #793,2020-06-05T04:22:35Z,2020-06-06T00:43:41Z,2020-06-05T19:05:58Z,2020-06-05T19:05:57Z,84a9c4ff75460f91c049bd30bba3cee1fd89d9e2,,5512395,0,fe43963376b1c44ec23a213277bcb33d98e4aef9,d96ac1d52cacf34bae09705eb8f9a0e3f81c426b,OWNER,107914493,https://github.com/simonw/datasette/pull/798,,
429366641,MDExOlB1bGxSZXF1ZXN0NDI5MzY2NjQx,803,closed,0,Canned query permissions,9599,Refs #800. Closes #786,2020-06-06T18:20:00Z,2020-06-06T19:40:21Z,2020-06-06T19:40:20Z,2020-06-06T19:40:20Z,415ccd7cbdeebfb52f514a0387221023aa8b4d91,,,0,3359d54a4eb9c9725c27a85437661b5180c4099a,9c563d6aed072f14d3d25f58e84659f9caa1a243,OWNER,107914493,https://github.com/simonw/datasette/pull/803,,
431478724,MDExOlB1bGxSZXF1ZXN0NDMxNDc4NzI0,819,closed,0,register_routes() plugin hook,9599,Refs #215,2020-06-09T01:20:44Z,2020-06-09T03:12:08Z,2020-06-09T03:12:07Z,2020-06-09T03:12:07Z,f5e79adf26d0daa3831e3fba022f1b749a9efdee,,5512395,0,18127f074efc1b0148d1098da063e51ccea7797c,647c5ff0f3e8140f40d7f41f0874ce4e1f4df65c,OWNER,107914493,https://github.com/simonw/datasette/pull/819,,
429613893,MDExOlB1bGxSZXF1ZXN0NDI5NjEzODkz,809,closed,0,Publish secrets,9599,Refs #787. Will need quite a bit of manual testing since this involves code which runs against Heroku and Cloud Run.,2020-06-07T02:00:31Z,2020-06-11T16:02:13Z,2020-06-11T16:02:03Z,2020-06-11T16:02:03Z,98632f0a874b7b9dac6abf0abb9fdb7e2839a4d3,,5512395,0,abdac31328646705a957d58429b88d185ef43ded,ce4958018ede00fbdadf0c37a99889b6901bfb9b,OWNER,107914493,https://github.com/simonw/datasette/pull/809,,
415286105,MDExOlB1bGxSZXF1ZXN0NDE1Mjg2MTA1,763,closed,0,Documentation + improvements for db.execute() and Results class,9599,"Refs #685
Still TODO:
- [x] Implement `results.first()`
- [x] Implement `results.single_value()`
- [x] Unit tests for the above
",2020-05-08T15:16:02Z,2020-06-11T16:05:48Z,2020-05-08T16:05:46Z,2020-05-08T16:05:46Z,4433306c1855ad69840cc76cbd41086137572be2,,,0,1ea62c77221d07cd121367f1c6b620f8bde0716a,69e3a855dd7e5a77409d70b18c45ae3c1a145a75,OWNER,107914493,https://github.com/simonw/datasette/pull/763,,
434055752,MDExOlB1bGxSZXF1ZXN0NDM0MDU1NzUy,844,closed,0,Action to run tests and upload coverage report,9599,Refs #843,2020-06-13T20:52:47Z,2020-06-13T21:36:52Z,2020-06-13T21:36:50Z,2020-06-13T21:36:50Z,cf7a2bdb404734910ec07abc7571351a2d934828,,,0,1210d9f41841bdca450f85a2342cdb0ff339c1b4,80c18a18fc444b89cc12b73599d56e091f3a3c87,OWNER,107914493,https://github.com/simonw/datasette/pull/844,,
439203808,MDExOlB1bGxSZXF1ZXN0NDM5MjAzODA4,866,closed,0,"Update pytest-asyncio requirement from <0.13,>=0.10 to >=0.10,<0.15",27856297,"Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version.
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-06-24T13:21:47Z,2020-06-24T18:50:57Z,2020-06-24T18:50:56Z,2020-06-24T18:50:56Z,1bb33dab49fd25f77b9f8e7ab7ee23b3d64c123c,,,0,fb64dda76dda7354a77cb50c5864aff67a6fef8d,1a5b7d318fa923edfcefd3df8f64dae2e9c49d3f,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/866,,
440946817,MDExOlB1bGxSZXF1ZXN0NDQwOTQ2ODE3,869,closed,0,Magic parameters for canned queries,9599,"Implementation for #842
TODO:
- [x] Add tests for built-in magic parameters
- [x] Magic parameters should not show up as blank form fields on the query page
- [x] Update documentation for new `_request_X` (now called `_header_X`) implementation where X is a key from the ASGI scope
- [x] Make sure these only work for canned queries, not for arbitrary SQL queries (security issue)
- [x] Add test for the `register_magic_parameters` plugin hook
- [x] Add documentation for the `register_magic_parameters` plugin hook
",2020-06-27T18:37:21Z,2020-06-28T02:58:18Z,2020-06-28T02:58:17Z,2020-06-28T02:58:17Z,563f5a2d3ab30ad08daee38f5ec3ed6429ac9206,,5533512,0,9e693a7aae3b4a0882881e3a1c182e1c0c753efd,4b142862f237f95a731cb8263a293eda70d13c82,OWNER,107914493,https://github.com/simonw/datasette/pull/869,,
442505088,MDExOlB1bGxSZXF1ZXN0NDQyNTA1MDg4,883,open,0,Skip counting hidden tables,3243482,"Potential fix for https://github.com/simonw/datasette/issues/859.
Disabling table counts for hidden tables speeds up database page quite a bit. In my setup it reduced load time by 2/3 (~300 -> ~90ms)",2020-07-01T07:38:08Z,2020-07-02T00:25:44Z,,,527624338acd38b97bb33b0a0b913d80e8345fee,,,0,251884f58895faf8056b3dfdeae3bb92c5bc58ac,676bb64c877d73f8ff496cef4632f5a8a5a9283c,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/883,,
434085235,MDExOlB1bGxSZXF1ZXN0NDM0MDg1MjM1,848,closed,0,Reload support for config_dir mode.,49260,"A reference implementation for adding support to reload when datasette is in the config_dir mode.
This implementation is flawed since it is watching the entire directory and any changes to the database will reload the server and adding unrelated files to the directory will also reload the server. ",2020-06-14T02:34:46Z,2020-07-03T02:44:54Z,2020-07-03T02:44:53Z,,888538efdbf545c0df524ca590a17fb6c6fa2419,,,0,0d100d15aca93fae200b3bc2e29dfd60aaa4b384,57879dc8b346a435804a9e45ffaacbf2a0228bc6,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/848,,
443823040,MDExOlB1bGxSZXF1ZXN0NDQzODIzMDQw,890,closed,0,Load only python files from plugins-dir.,49260,"The current behavior for `--plugins-dir` is to load every file in that folder as a python module. This can result in errors if there are non-python files in the plugins dir (such as .mypy_cache).
This PR restricts the module loading to only python files. ",2020-07-03T02:47:32Z,2020-07-03T03:08:33Z,2020-07-03T03:08:33Z,2020-07-03T03:08:33Z,ea99a4431ce5bc2d65a3496da5b38e1986550a96,,,0,745af3b72d95d91f3ccd703f4fab819bc9f4b6a4,57879dc8b346a435804a9e45ffaacbf2a0228bc6,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/890,,
445833908,MDExOlB1bGxSZXF1ZXN0NDQ1ODMzOTA4,120,closed,0,Fix query command's support for DML,79913,See commit messages for details. I ran into this while investigating another feature/issue.,2020-07-08T01:36:34Z,2020-07-08T05:14:04Z,2020-07-08T05:14:04Z,2020-07-08T05:14:04Z,f8277d0fb9c05a88a9ff01d996e31d55f0f0a645,,,0,6a660d12a27864d6ab552e11eef9fd13bc281198,d0cdaaaf00249230e847be3a3b393ee2689fbfe4,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/120,,
445023326,MDExOlB1bGxSZXF1ZXN0NDQ1MDIzMzI2,118,closed,0,Add insert --truncate option,79913,"
Deletes all rows in the table (if it exists) before inserting new rows.
SQLite doesn't implement a TRUNCATE TABLE statement but does optimize an
unqualified DELETE FROM.
This can be handy if you want to refresh the entire contents of a table
but a) don't have a PK (so can't use --replace), b) don't want the table
to disappear (even briefly) for other connections, and c) have to handle
records that used to exist being deleted.
Ideally the replacement of rows would appear instantaneous to other
connections by putting the DELETE + INSERT in a transaction, but this is
very difficult without breaking other code as the current transaction
handling is inconsistent and non-systematic. There exists the
possibility for the DELETE to succeed but the INSERT to fail, leaving an
empty table. This is not much worse, however, than the current
possibility of one chunked INSERT succeeding and being committed while
the next chunked INSERT fails, leaving a partially complete operation.",2020-07-06T21:58:40Z,2020-07-08T17:26:21Z,2020-07-08T17:26:21Z,2020-07-08T17:26:21Z,ae4593316ccf5e42ad26f27033193834a7e696c8,,,0,332f7d770b84734dbed4842ab3ed24ee5b687889,f8277d0fb9c05a88a9ff01d996e31d55f0f0a645,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/118,,
448355680,MDExOlB1bGxSZXF1ZXN0NDQ4MzU1Njgw,30,open,0,Handle empty bucket on first upload. Allow specifying the endpoint_url for services other than S3 (like b2 and digitalocean spaces),110038,"Finally got around to trying dogsheep-photos but I want to use backblaze's b2 service instead of AWS S3.
Had to add a way to optionally specify the endpoint_url to connect to. Then with the bucket being empty the initial key retrieval would fail. Probably a better way to see that the bucket is empty than doing a test inside the paginator loop.
Also probably a better way to specify the endpoint_url as we get and test for it twice using the same code in two different places but did not want to spend too much time worrying about it.",2020-07-13T16:15:26Z,2020-07-13T16:15:26Z,,,583b26f244166aadf2dcc680e39d1ca59765da37,,,0,647d4b42c6f4d1fba4b99f73fe163946cea6ee36,45ce3f8bfb8c70f57ca5d8d82f22368fea1eb391,FIRST_TIME_CONTRIBUTOR,256834907,https://github.com/dogsheep/dogsheep-photos/pull/30,,
277524072,MDExOlB1bGxSZXF1ZXN0Mjc3NTI0MDcy,458,closed,0,setup: add tests to package exclusion,7725188,"This PR fixes #456 by adding `tests` to the package exclusion list.
Cheers",2019-05-09T19:47:21Z,2020-07-21T01:14:42Z,2019-05-10T01:54:51Z,2019-05-10T01:54:51Z,9f8d9fe262866ff3463f8e61214dcc6897bd5a9c,,,0,9c65ff1ba8c855e4ade5bc7ae29a69215b3979d0,f825e2012109247fa246e2b938f8174069e574f1,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/458,,
453995179,MDExOlB1bGxSZXF1ZXN0NDUzOTk1MTc5,902,closed,0,Don't install tests package,32467826,"The `exclude` argument to `find_packages` needs an iterable of package
names.
Fixes: #456 ",2020-07-21T01:08:50Z,2020-07-24T20:39:54Z,2020-07-24T20:39:54Z,2020-07-24T20:39:54Z,6be5654ffab282e8cf39cc138ba2d4496ebc7407,,,0,9aa139dc98bd72a29ee1c940820bc05b0e717f1d,d9a5ef1c32a4390e398653ebfd570f8e1a03d93e,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/902,,
458435592,MDExOlB1bGxSZXF1ZXN0NDU4NDM1NTky,910,closed,0,"Update pytest requirement from <5.5.0,>=5.2.2 to >=5.2.2,<6.1.0",27856297,"Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.
Release notes
(Please see the full set of changes for this release also in the 6.0.0rc1 notes below)
Breaking Changes
#5584: PytestDeprecationWarning are now errors by default.
Following our plan to remove deprecated features with as little disruption as
possible, all warnings of type PytestDeprecationWarning now generate errors
instead of warning messages.
The affected features will be effectively removed in pytest 6.1, so please consult the
Deprecations and Removals
section in the docs for directions on how to update existing code.
In the pytest 6.0.X series, it is possible to change the errors back into warnings as a
stopgap measure by adding this to your pytest.ini file:
But this will stop working when pytest 6.1 is released.
If you have concerns about the removal of a specific feature, please add a
comment to #5584.
#7472: The exec_() and is_true() methods of _pytest._code.Frame have been removed.
Features
#7464: Added support for NO_COLOR and FORCE_COLOR environment variables to control colored output.
Improvements
#7467: --log-file CLI option and log_file ini marker now create subdirectories if needed.
#7489: The pytest.raises function has a clearer error message when match equals the obtained string but is not a regex match. In this case it is suggested to escape the regex.
Bug Fixes
#7392: Fix the reported location of tests skipped with @pytest.mark.skip when --runxfail is used.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-07-29T13:21:17Z,2020-07-29T21:26:05Z,2020-07-29T21:26:04Z,2020-07-29T21:26:04Z,c5c12a797f0b81cd5862dcd50354b4b571e9bf5a,,,0,3493915bbce6a279659df3d6b09ba0d36a8f9793,3c33b421320c0be81a625ca7307b2e4416a9ed5b,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/910,,
453890292,MDExOlB1bGxSZXF1ZXN0NDUzODkwMjky,901,closed,0,Use None as a default arg,56323389,"When passing a mutable value as a default argument in a function, the default argument is mutated anytime that value is mutated. This poses a bug risk. Instead, use None as a default and assign the mutable value inside the function.",2020-07-20T22:18:38Z,2020-07-31T18:42:39Z,2020-07-31T18:42:39Z,2020-07-31T18:42:39Z,2d7fa8b9058dfbf9c7c371cdeec115d32a177dc9,,,0,1285f28d82d9ca97e7543bb87fc6ff462855debe,d9a5ef1c32a4390e398653ebfd570f8e1a03d93e,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/901,,
466410755,MDExOlB1bGxSZXF1ZXN0NDY2NDEwNzU1,927,closed,0,"'datasette --get' option, refs #926",9599,"Refs #926, #898",2020-08-11T23:31:52Z,2020-08-12T00:24:42Z,2020-08-12T00:24:41Z,2020-08-12T00:24:41Z,e139a7619f63d45ca2ff1ee108b933e17b5675b3,,,0,2111da01a03cfc62303b6a4b59ea9f96d22c0f78,83eda049af3f38d4289118d3576f96b2535084b1,OWNER,107914493,https://github.com/simonw/datasette/pull/927,,
468370658,MDExOlB1bGxSZXF1ZXN0NDY4MzcwNjU4,936,closed,0,Don't hang in db.execute_write_fn() if connection fails,9599,Refs #935,2020-08-15T22:20:12Z,2020-08-15T22:35:33Z,2020-08-15T22:35:32Z,2020-08-15T22:35:32Z,b86f94883b1d827f85b07009e8346b8e9c6eeefa,,,0,94a68b95a21f29526d66e88bf5ea524a3efcc609,13b3b51087964d5e1a8c1cdd2495e07bdbe176b8,OWNER,107914493,https://github.com/simonw/datasette/pull/936,,
468377212,MDExOlB1bGxSZXF1ZXN0NDY4Mzc3MjEy,937,closed,0,Docs now live at docs.datasette.io,9599,,2020-08-15T23:53:52Z,2020-08-15T23:57:06Z,2020-08-15T23:57:05Z,2020-08-15T23:57:05Z,41ddc197561ac2d2a1bb988956c301a523c6ca35,,,0,ff2605af65e023564cd7b57382b116e94b9d4f16,af12f45c2b0e4782ca92c2d00481dc47ccb7a046,OWNER,107914493,https://github.com/simonw/datasette/pull/937,,
468484031,MDExOlB1bGxSZXF1ZXN0NDY4NDg0MDMx,941,closed,0,"Run CI on GitHub Actions, not Travis",9599,Refs #940,2020-08-16T19:13:39Z,2020-08-18T05:09:36Z,2020-08-18T05:09:35Z,2020-08-18T05:09:35Z,5e0b72247ecab4ce0fcec599b77a83d73a480872,,,0,f5a72e11b632b01acc41c07f6f4cfffa1a7ed14e,52eabb019d4051084b21524bd0fd9c2731126985,OWNER,107914493,https://github.com/simonw/datasette/pull/941,,
475665984,MDExOlB1bGxSZXF1ZXN0NDc1NjY1OTg0,142,closed,0,"insert_all(..., alter=True) should work for new columns introduced after the first 100 records",96218,Closes #139.,2020-08-28T22:22:57Z,2020-08-30T07:28:23Z,2020-08-28T22:30:14Z,2020-08-28T22:30:14Z,947bb7626fd1763608a470adf9cf5f156ef003e9,,,0,1b992c7c1e5855caa87c7939efad287052f446f3,ea87c2b943fdd162c42a900ac0aea5ecc2f4b9d9,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/142,,
474703007,MDExOlB1bGxSZXF1ZXN0NDc0NzAzMDA3,952,closed,0,"Update black requirement from ~=19.10b0 to >=19.10,<21.0",27856297,"Updates the requirements on [black](https://github.com/psf/black) to permit the latest version.
Changelog
explicitly depend on Click 7.1.2 or newer as Black no longer works with versions
older than 7.0
20.8b0
Black
re-implemented support for explicit trailing commas: now it works consistently within
any bracket pair, including nested structures (#1288 and duplicates)
Black now reindents docstrings when reindenting code around it (#1053)
fixed --diff output when EOF is encountered (#526)
fixed # fmt: off handling around decorators (#560)
fixed unstable formatting with some # type: ignore comments (#1113)
fixed invalid removal on organizing brackets followed by indexing (#1575)
introduced black-primer, a CI tool that allows us to run regression tests against
existing open source users of Black (#1402)
introduced property-based fuzzing to our test suite based on Hypothesis and
Hypothersmith (#1566)
implemented experimental and disabled by default long string rewrapping (#1132),
hidden under a --experimental-string-processing flag while it's being worked on;
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a ""Dependabot enabled"" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
",2020-08-27T13:31:36Z,2020-09-02T22:26:17Z,2020-09-02T22:26:16Z,,37f8531b321855bdbc58960281957febaa59e4b9,,,0,7b1354706467136f5030504fe799201b13333a95,86aefc39c5aca01b00dbc57ba386a6743c21fb46,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/952,,
481616704,MDExOlB1bGxSZXF1ZXN0NDgxNjE2NzA0,151,closed,0,Tracer mechanism for seeing underlying SQL,9599,"Refs #150. Needs tests and documentation, including for the new `db.execute()` and `db.executescript()` methods.",2020-09-07T19:46:43Z,2020-09-07T21:57:00Z,2020-09-07T21:57:00Z,2020-09-07T21:57:00Z,cf2cb244faf992118f34aa196387a4ef8b39a20f,,,0,dc82bf371911d01ac140f40ea99d06d2daee507e,3e87500e1561f5c4e105cd026d33e0f715cc7dea,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/151,,
475874493,MDExOlB1bGxSZXF1ZXN0NDc1ODc0NDkz,146,closed,0,Handle case where subsequent records (after first batch) include extra columns,96218,"Addresses #145.
I think this should do the job. If it meets with your approval I'll update this PR to include an update to the documentation -- I came across this bug while preparing a PR to update the documentation around `batch_size` in any event.",2020-08-30T07:13:58Z,2020-09-08T23:20:37Z,2020-09-08T23:20:37Z,2020-09-08T23:20:36Z,e6d202b742a7b531fffa593703d34f8337632d68,,,0,40fcea41525682fdc2f601da787b29d5a8517dcd,deb2eb013ff85bbc828ebc244a9654f0d9c3139e,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/146,,