Closed
Description
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 tofactory()
.
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.