GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||
GeezerVison is showing github.com — gh-100414: Add SQLite backend to dbm by erlend-aasland · Pull Request #114481 · python/cpython Conversation
|
|
cc. @presidento |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I suggest to focus this PR on the basic, required functionality only. We can optimise things in follow-up PRs. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
I think the basic functionality is ready for an initial round of reviews. TestsThere's a basic test suite in DocsI also added som basic docs; unless significant information is missing, I suggest we work on the docs in follow-up PRs. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
…ILD_TABLE never can raise a DB API exception
There was an error while loading. Please reload this page.
|
I made a core dev poll on Discourse regarding if the SQLite backend should be the default one; 16 out of 21 was in favour (Skip changed his mind post voting). This PR does not make the SQLite backend the default. If we want to change the default, we can do it post merging the feature itself. Another possibility, suggested by @ethanfurman:
@serhiy-storchaka, should we land this? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
It seems that currently it is not compatible with other dbm implementations. They all are bytes oriented, but accept strings as input (it is a Python 2 legacy). Most of the dbm tests use string input, so I expect that many user code does it too. But the output always expected to be bytes. Supporting other types, supported by Sqlite looks attractive, but we implement a backend to dbm, so it should be compatible. We can later add an option to alter the behavior, but it should not be default. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
As discussed in DM, I agree with this. I addressed your concern in e782fad. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
LGTM if all operations still accept strings.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
| # (raw, coerced) | ||
| (42, b"42"), | ||
| (3.14, b"3.14"), | ||
| ("string", b"string"), |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Does it work with non-ASCII strings?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Do you mean such a test?
diff --git a/Lib/test/test_dbm_sqlite3.py b/Lib/test/test_dbm_sqlite3.py index 7bc2a03035..3d2dc5fd55 100644 --- a/Lib/test/test_dbm_sqlite3.py +++ b/Lib/test/test_dbm_sqlite3.py @@ -214,6 +214,7 @@ class DataTypes(_SQLiteDbmTests): (3.14, b"3.14"), ("string", b"string"), (b"bytes", b"bytes"), + ("æøå", b"\xc3\xa6\xc3\xb8\xc3\xa5"), ) def setUp(self):
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
With 34930cb, the dbm.sqlite3 backend now aligns with the other backends; for example, the general code snippet in the dbm docs now works as expected with the new backend. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Let's land this, @serhiy-storchaka. There is plenty of opportunities to tweak the implementation and to expand the test suite. Thanks @smontanaro for the initial idea, @rhettinger for the initial implementation, and everyone else involved for ideas, reviews and critique. Thanks to @serhiy-storchaka for the, as always, extremely thorough review of the feature and the implementation. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Proposed fixes: |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Co-authored-by: Raymond Hettinger <[email protected]> Co-authored-by: Serhiy Storchaka <[email protected]> Co-authored-by: Mariusz Felisiak <[email protected]>
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.