Uh oh!
There was an error while loading. Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This alias is only used in
_Database.__setitem__()as far as I can see (unless the definition is imported elsewhere).valueis parsed usings#, so I think this should beReadOnlyBuffer:https://github.com/python/cpython/blob/c1c3be0f9dc414bfae9a5718451ca217751ac687/Modules/_dbmmodule.c#L196
Alternatively, if we want to use the same type for all database types (which is reasonable), I think we should define
_ValueTypecentrally and reuse it.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a bit more complicated than that. The C code you point to is for
dbm.ndbm. The class at issue in this file,dbm._Database, doesn't exist at runtime. We use it as the return type fordbm.open, which can return an instance of any of the database classes in thedbmpackage. I think the intent is thatdbm._Databasereflects the common interface of all three. Maybe we should use a Union return type instead?I think for now I'll switch it to
str | bytes, which are the types that all three dbm implementations support. (dbm.dumbisstr | bytes | bytearray, the other two arestr | ReadOnlyBuffer).