8000 add _sqlite3 module (#11174) · python/typeshed@39650b4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 39650b4

Browse files
authored
add _sqlite3 module (#11174)
This aligns with the implementation while giving greater fidelity to runtime naming and inheritance Related to #3968 and #11141
1 parent 99095f5 commit 39650b4

File tree

8 files changed

+1011
-541
lines changed

8 files changed

+1011
-541
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ extra-standard-library = [
146146
"_random",
147147
"_sitebuiltins",
148148
"_socket",
149+
"_sqlite3",
149150
"_ssl",
150151
"_stat",
151152
"_thread",

stdlib/@tests/stubtest_allowlists/darwin-py311.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,7 @@ email._header_value_parser.SPECIALSNL
2727
email.errors.HeaderWriteError
2828
email.utils.getaddresses
2929
email.utils.parseaddr
30+
31+
# not available on python distributions compiled without sqlite3 loadable extension support
32+
_sqlite3.Connection.load_extension
33+
_sqlite3.Connection.enable_load_extension

stdlib/@tests/stubtest_allowlists/darwin-py312.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,7 @@ ossaudiodev
1919
fcntl.F_OFD_GETLK
2020
fcntl.F_OFD_SETLK
2121
fcntl.F_OFD_SETLKW
22+
23+
# not available on python distributions compiled without sqlite3 loadable extension support
24+
_sqlite3.Connection.load_extension
25+
_sqlite3.Connection.enable_load_extension

stdlib/@tests/stubtest_allowlists/darwin-py313.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,7 @@ _?curses.window.get_wch
1717
(_?locale.dgettext)?
1818
(_?locale.gettext)?
1919
(_?locale.textdomain)?
20+
21+
# not available on python distributions compiled without sqlite3 loadable extension support
22+
_sqlite3.Connection.load_extension
23+
_sqlite3.Connection.enable_load_extension

stdlib/VERSIONS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ _pydecimal: 3.5-
5050
_random: 3.0-
5151
_sitebuiltins: 3.4-
5252
_socket: 3.0- # present in 3.0 at runtime, but not in typeshed
53+
_sqlite3: 3.0-
5354
_ssl: 3.0-
5455
_stat: 3.4-
5556
_thread: 3.0-

stdlib/_sqlite3.pyi

Lines changed: 312 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,312 @@
1+
import sys
2+
from _typeshed import ReadableBuffer, StrOrBytesPath
3+
from collections.abc import Callable
4+
from sqlite3 import (
5+
Connection as Connection,
6+
Cursor as Cursor,
7+
DatabaseError as DatabaseError,
8+
DataError as DataError,
9+
Error as Error,
10+
IntegrityError as IntegrityError,
11+
InterfaceError as InterfaceError,
12+
InternalError as InternalError,
13+
NotSupportedError as NotSupportedError,
14+
OperationalError as OperationalError,
15+
PrepareProtocol as PrepareProtocol,
16+
ProgrammingError as ProgrammingError,
17+
Row as Row,
18+
Warning as Warning,
19+
)
20+
from typing import Any, Final, Literal, TypeVar, overload
21+
from typing_extensions import TypeAlias
22+
23+
if sys.version_info >= (3, 11):
24+
from sqlite3 import Blob as Blob
25+
26+
_T = TypeVar("_T")
27+
_ConnectionT = TypeVar("_ConnectionT", bound=Connection)
28+
_SqliteData: TypeAlias = str | ReadableBuffer | int | float | None
29+
_Adapter: TypeAlias = Callable[[_T], _SqliteData]
30+
_Converter: TypeAlias = Callable[[bytes], Any]
31+
32+
PARSE_COLNAMES: Final[int]
33+
PARSE_DECLTYPES: Final[int]
34+
SQLITE_ALTER_TABLE: Final[int]
35+
SQLITE_ANALYZE: Final[int]
36+
SQLITE_ATTACH: Final[int]
37+
SQLITE_CREATE_INDEX: Final[int]
38+
SQLITE_CREATE_TABLE: Final[int]
39+
SQLITE_CREATE_TEMP_INDEX: Final[int]
40+
SQLITE_CREATE_TEMP_TABLE: Final[int]
41+
SQLITE_CREATE_TEMP_TRIGGER: Final[int]
42+
SQLITE_CREATE_TEMP_VIEW: Final[int]
43+
SQLITE_CREATE_TRIGGER: Final[int]
44+
SQLITE_CREATE_VIEW: Final[int]
45+
SQLITE_CREATE_VTABLE: Final[int]
46+
SQLITE_DELETE: Final[int]
47+
SQLITE_DENY: Final[int]
48+
SQLITE_DETACH: Final[int]
49+
SQLITE_DONE: Final[int]
50+
SQLITE_DROP_INDEX: Final[int]
51+
SQLITE_DROP_TABLE: Final[int]
52+
SQLITE_DROP_TEMP_INDEX: Final[int]
53+
SQLITE_DROP_TEMP_TABLE: Final[int]
54+
SQLITE_DROP_TEMP_TRIGGER: Final[int]
55+
SQLITE_DROP_TEMP_VIEW: Final[int]
56+
SQLITE_DROP_TRIGGER: Final[int]
57+
SQLITE_DROP_VIEW: Final[int]
58+
SQLITE_DROP_VTABLE: Final[int]
59+
SQLITE_FUNCTION: Final[int]
60+
SQLITE_IGNORE: Final[int]
61+
SQLITE_INSERT: Final[int]
62+
SQLITE_OK: Final[int]
63+
SQLITE_PRAGMA: Final[int]
64+
SQLITE_READ: Final[int]
65+
SQLITE_RECURSIVE: Final[int]
66+
SQLITE_REINDEX: Final[int]
67+
SQLITE_SAVEPOINT: Final[int]
68+
SQLITE_SELECT: Final[int]
69+
SQLITE_TRANSACTION: Final[int]
70+
SQLITE_UPDATE: Final[int]
71+
adapters: dict[tuple[type[Any], type[Any]], _Adapter[Any]]
72+
converters: dict[str, _Converter]
73+
sqlite_version: str
74+
75+
if sys.version_info < (3, 12):
76+
version: str
77+
78+
if sys.version_info >= (3, 12):
79+
LEGACY_TRANSACTION_CONTROL: Final[int]
80+
SQLITE_DBCONFIG_DEFENSIVE: Final[int]
81+
SQLITE_DBCONFIG_DQS_DDL: Final[int]
82+
SQLITE_DBCONFIG_DQS_DML: Final[int]
83+
SQLITE_DBCONFIG_ENABLE_FKEY: Final[int]
84+
SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER: Final[int]
85+
SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION: Final[int]
86+
SQLITE_DBCONFIG_ENABLE_QPSG: Final[int]
87+
SQLITE_DBCONFIG_ENABLE_TRIGGER: Final[int]
88+
SQLITE_DBCONFIG_ENABLE_VIEW: Final[int]
89+
SQLITE_DBCONFIG_LEGACY_ALTER_TABLE: Final[int]
90+
SQLITE_DBCONFIG_LEGACY_FILE_FORMAT: Final[int]
91+
SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE: Final[int]
92+
SQLITE_DBCONFIG_RESET_DATABASE: Final[int]
93+
SQLITE_DBCONFIG_TRIGGER_EQP: Final[int]
94+
SQLITE_DBCONFIG_TRUSTED_SCHEMA: Final[int]
95+
SQLITE_DBCONFIG_WRITABLE_SCHEMA: Final[int]
96+
97+
if sys.version_info >= (3, 11):
98+
SQLITE_ABORT: Final[int]
99+
SQLITE_ABORT_ROLLBACK: Final[int]
100+
SQLITE_AUTH: Final[int]
101+
SQLITE_AUTH_USER: Final[int]
102+
SQLITE_BUSY: Final[int]
103+
SQLITE_BUSY_RECOVERY: Final[int]
104+
SQLITE_BUSY_SNAPSHOT: Final[int]
105+
SQLITE_BUSY_TIMEOUT: Final[int]
106+
SQLITE_CANTOPEN: Final[int]
107+
SQLITE_CANTOPEN_CONVPATH: Final[int]
108+
SQLITE_CANTOPEN_DIRTYWAL: Final[int]
109+
SQLITE_CANTOPEN_FULLPATH: Final[int]
110+
SQLITE_CANTOPEN_ISDIR: Final[int]
111+
SQLITE_CANTOPEN_NOTEMPDIR: Final[int]
112+
SQLITE_CANTOPEN_SYMLINK: Final[int]
113+
SQLITE_CONSTRAINT: Final[int]
114+
SQLITE_CONSTRAINT_CHECK: Final[int]
115+
SQLITE_CONSTRAINT_COMMITHOOK: Final[int]
116+
SQLITE_CONSTRAINT_FOREIGNKEY: Final[int]
117+
SQLITE_CONSTRAINT_FUNCTION: Final[int]
118+
SQLITE_CONSTRAINT_NOTNULL: Final[int]
119+
SQLITE_CONSTRAINT_PINNED: Final[int]
120+
SQLITE_CONSTRAINT_PRIMARYKEY: Final[int]
121+
SQLITE_CONSTRAINT_ROWID: Final[int]
122+
SQLITE_CONSTRAINT_TRIGGER: Final[int]
123+
SQLITE_CONSTRAINT_UNIQUE: Final[int]
124+
SQLITE_CONSTRAINT_VTAB: Final[int]
125+
SQLITE_CORRUPT: Final[int]
126+
SQLITE_CORRUPT_INDEX: Final[int]
127+
SQLITE_CORRUPT_SEQUENCE: Final[int]
128+
SQLITE_CORRUPT_VTAB: Final[int]
129+
SQLITE_EMPTY: Final[int]
130+
SQLITE_ERROR: Final[int]
131+
SQLITE_ERROR_MISSING_COLLSEQ: Final[int]
132+
SQLITE_ERROR_RETRY: Final[int]
133+
SQLITE_ERROR_SNAPSHOT: Final[int]
134+
SQLITE_FORMAT: Final[int]
135+
SQLITE_FULL: Final[int]
136+
SQLITE_INTERNAL: Final[int]
137+
SQLITE_INTERRUPT: Final[int]
138+
SQLITE_IOERR: Final[int]
139+
SQLITE_IOERR_ACCESS: Final[int]
140+
SQLITE_IOERR_AUTH: Final[int]
141+
SQLITE_IOERR_BEGIN_ATOMIC: Final[int]
142+
SQLITE_IOERR_BLOCKED: Final[int]
143+
SQLITE_IOERR_CHECKRESERVEDLOCK: Final[int]
144+
SQLITE_IOERR_CLOSE: Final[int]
145+
SQLITE_IOERR_COMMIT_ATOMIC: Final[int]
146+
SQLITE_IOERR_CONVPATH: Final[int]
147+
SQLITE_IOERR_CORRUPTFS: Final[int]
148+
SQLITE_IOERR_DATA: Final[int]
149+
SQLITE_IOERR_DELETE: Final[int]
150+
SQLITE_IOERR_DELETE_NOENT: Final[int]
151+
SQLITE_IOERR_DIR_CLOSE: Final[int]
152+
SQLITE_IOERR_DIR_FSYNC: Final[int]
153+
SQLITE_IOERR_FSTAT: Final[int]
154+
SQLITE_IOERR_FSYNC: Final[int]
155+
SQLITE_IOERR_GETTEMPPATH: Final[int]
156+
SQLITE_IOERR_LOCK: Final[int]
157+
SQLITE_IOERR_MMAP: Final[int]
158+
SQLITE_IOERR_NOMEM: Final[int]
159+
SQLITE_IOERR_RDLOCK: Final[int]
160+
SQLITE_IOERR_READ: Final[int]
161+
SQLITE_IOERR_ROLLBACK_ATOMIC: Final[int]
162+
SQLITE_IOERR_SEEK: Final[int]
163+
SQLITE_IOERR_SHMLOCK: Final[int]
164+
SQLITE_IOERR_SHMMAP: Final[int]
165+
SQLITE_IOERR_SHMOPEN: Final[int]
166+
SQLITE_IOERR_SHMSIZE: Final[int]
167+
SQLITE_IOERR_SHORT_READ: Final[int]
168+
SQLITE_IOERR_TRUNCATE: Final[int]
169+
SQLITE_IOERR_UNLOCK: Final[int]
170+
SQLITE_IOERR_VNODE: Final[int]
171+
SQLITE_IOERR_WRITE: Final[int]
172+
SQLITE_LIMIT_ATTACHED: Final[int]
173+
SQLITE_LIMIT_COLUMN: Final[int]
174+
SQLITE_LIMIT_COMPOUND_SELECT: Final[int]
175+
SQLITE_LIMIT_EXPR_DEPTH: Final[int]
176+
SQLITE_LIMIT_FUNCTION_ARG: Final[int]
177+
SQLITE_LIMIT_LENGTH: Final[int]
178+
SQLITE_LIMIT_LIKE_PATTERN_LENGTH: Final[int]
179+
SQLITE_LIMIT_SQL_LENGTH: Final[int]
180+
SQLITE_LIMIT_TRIGGER_DEPTH: Final[int]
181+
SQLITE_LIMIT_VARIABLE_NUMBER: Final[int]
182+
SQLITE_LIMIT_VDBE_OP: Final[int]
183+
SQLITE_LIMIT_WORKER_THREADS: Final[int]
184+
SQLITE_LOCKED: Final[int]
185+
SQLITE_LOCKED_SHAREDCACHE: Final[int]
186+
SQLITE_LOCKED_VTAB: Final[int]
187+
SQLITE_MISMATCH: Final[int]
188+
SQLITE_MISUSE: Final[int]
189+
SQLITE_NOLFS: Final[int]
190+
SQLITE_NOMEM: Final[int]
191+
SQLITE_NOTADB: Final[int]
192+
SQLITE_NOTFOUND: Final[int]
193+
SQLITE_NOTICE: Final[int]
194+
SQLITE_NOTICE_RECOVER_ROLLBACK: Final[int]
195+
SQLITE_NOTICE_RECOVER_WAL: Final[int]
196+
SQLITE_OK_LOAD_PERMANENTLY: Final[int]
197+
SQLITE_OK_SYMLINK: Final[int]
198+
SQLITE_PERM: Final[int]
199+
SQLITE_PROTOCOL: Final[int]
200+
SQLITE_RANGE: Final[int]
201+
SQLITE_READONLY: Final[int]
202+
SQLITE_READONLY_CANTINIT: Final[int]
203+
SQLITE_READONLY_CANTLOCK: Final[int]
204+
SQLITE_READONLY_DBMOVED: Final[int]
205+
SQLITE_READONLY_DIRECTORY: Final[int]
206+
SQLITE_READONLY_RECOVERY: Final[int]
207+
SQLITE_READONLY_ROLLBACK: Final[int]
208+
SQLITE_ROW: Final[int]
209+
SQLITE_SCHEMA: Final[int]
210+
SQLITE_TOOBIG: Final[int]
211+
SQLITE_WARNING: Final[int]
212+
SQLITE_WARNING_AUTOINDEX: Final[int]
213+
threadsafety: Final[int]
214+
215+
# Can take or return anything depending on what's in the registry.
216+
@overload
217+
def adapt(obj: Any, proto: Any, /) -> Any: ...
218+
@overload
219+
def adapt(obj: Any, proto: Any, alt: _T, /) -> Any | _T: ...
220+
def complete_statement(statement: str) -> bool: ...
221+
222+
if sys.version_info >= (3, 12):
223+
@overload
224+
def connect(
225+
database: StrOrBytesPath,
226+
timeout: float = 5.0,
227+
detect_types: int = 0,
228+
isolation_level: Literal["DEFERRED", "EXCLUSIVE", "IMMEDIATE"] | None = "DEFERRED",
229+
check_same_thread: bool = True,
230+
cached_statements: int = 128,
231+
uri: bool = False,
232+
*,
233+
autocommit: bool = ...,
234+
) -> Connection: ...
235+
@overload
236+
def connect(
237+
database: StrOrBytesPath,
238+
timeout: float,
239+
detect_types: int,
240+
isolation_level: Literal["DEFERRED", "EXCLUSIVE", "IMMEDIATE"] | None,
241+
check_same_thread: bool,
242+
factory: type[_ConnectionT],
243+
cached_statements: int = 128,
244+
uri: bool = False,
245+
*,
246+
autocommit: bool = ...,
247+
) -> _ConnectionT: ...
248+
@overload
249+
def connect(
250+
database: StrOrBytesPath,
251+
timeout: float = 5.0,
252+
detect_types: int = 0,
253+
isolation_level: Literal["DEFERRED", "EXCLUSIVE", "IMMEDIATE"] | None = "DEFERRED",
254+
check_same_thread: bool = True,
255+
*,
256+
factory: type[_ConnectionT],
257+
cached_statements: int = 128,
258+
uri: bool = False,
259+
autocommit: bool = ...,
260+
) -> _ConnectionT: ...
261+
262+
else:
263+
@overload
264+
def connect(
265+
database: StrOrBytesPath,
266+
timeout: float = 5.0,
267+
detect_types: int = 0,
268+
isolation_level: Literal["DEFERRED", "EXCLUSIVE", "IMMEDIATE"] | None = "DEFERRED",
269+
check_same_thread: bool = True,
270+
cached_statements: int = 128,
271+
uri: bool = False,
272+
) -> Connection: ...
273+
@overload
274+
def connect(
275+
database: StrOrBytesPath,
276+
timeout: float,
277+
detect_types: int,
278+
isolation_level: Literal["DEFERRED", "EXCLUSIVE", "IMMEDIATE"] | None,
279+
check_same_thread: bool,
280+
factory: type[_ConnectionT],
281+
cached_statements: int = 128,
282+
uri: bool = False,
283+
) -> _ConnectionT: ...
284+
@overload
285+
def connect(
286+
database: StrOrBytesPath,
287+
timeout: float = 5.0,
288+
detect_types: int = 0,
289+
isolation_level: Literal["DEFERRED", "EXCLUSIVE", "IMMEDIATE"] | None = "DEFERRED",
290+
check_same_thread: bool = True,
291+
*,
292+
factory: type[_ConnectionT],
293+
cached_statements: int = 128,
294+
uri: bool = False,
295+
) -> _ConnectionT: ...
296+
297+
def enable_callback_tracebacks(enable: bool, /) -> None: ...
298+
299+
if sys.version_info < (3, 12):
300+
# takes a pos-or-keyword argument because there is a C wrapper
301+
def enable_shared_cache(do_enable: int) -> None: ...
302+
303+
if sys.version_info >= (3, 10):
304+
def register_adapter(type: type[_T], adapter: _Adapter[_T], /) -> None: ...
305+
def register_converter(typename: str, converter: _Converter, /) -> None: ...
306+
307+
else:
308+
def register_adapter(type: type[_T], caster: _Adapter[_T], /) -> None: ...
309+
def register_converter(name: str, converter: _Converter, /) -> None: ...
310+
311+
if sys.version_info < (3, 10):
312+
OptimizedUnicode = str

0 commit comments

Comments
 (0)
0