There are some unintentional consequences of converting sqlite3.connect() to Argument Clinic in #40956.
- The
database argument always converted to bytes.
- Keyword arguments are passed as positional arguments to
factory().
- If an argument is not passed to
sqlite3.connect(), its default value is passed to factory().
It all works with the default factory=Connection, but factory can be an arbitrary callable, not completely compatible with Connection(). There may be a user code which uses a factory which only works with string database and does not support the uri argument. It worked fine in older versions when it is called with correct arguments, bet will become failing in 3.11.
This is a hypothetical scenario, but we should at least add a note about potential incompatibility. And I think that it is better to get rid of PyUnicode_FSConverter here.
There are some unintentional consequences of converting
sqlite3.connect()to Argument Clinic in #40956.databaseargument always converted to bytes.factory().sqlite3.connect(), its default value is passed tofactory().It all works with the default
factory=Connection, butfactorycan be an arbitrary callable, not completely compatible withConnection(). There may be a user code which uses a factory which only works with stringdatabaseand does not support theuriargument. It worked fine in older versions when it is called with correct arguments, bet will become failing in 3.11.This is a hypothetical scenario, but we should at least add a note about potential incompatibility. And I think that it is better to get rid of
PyUnicode_FSConverterhere.