8000 Unintentional changes in sqlite3.connect() · Issue #93044 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content
8000
Unintentional changes in sqlite3.connect() #93044
Closed
@serhiy-storchaka

Description

@serhiy-storchaka

There are some unintentional consequences of converting sqlite3.connect() to Argument Clinic in #40956.

  1. The database argument always converted to bytes.
  2. Keyword arguments are passed as positional arguments to factory().
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.11only security fixestopic-sqlite3type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0