Skip to content

Commit 6cb8bc0

Browse files
AvasamAlexWaygood
andauthored
Mark SQLAlchemy stubs with ignore_missing_stub = false (#9653)
Co-authored-by: Alex Waygood <[email protected]>
1 parent 4930eba commit 6cb8bc0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+548
-189
lines changed

stubs/SQLAlchemy/@tests/stubtest_allowlist.txt

+18-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# mypy plugin not supported in typeshed
2+
sqlalchemy.ext.mypy.*
3+
# test suites
4+
sqlalchemy.testing.suite
5+
# Leaked re-exports from the compat module
6+
sqlalchemy.util.quote
7+
18
# Expanding keyword arguments in stubs
29
sqlalchemy.ext.declarative.as_declarative
310

@@ -25,9 +32,16 @@ sqlalchemy.engine.Connection.engine
2532
sqlalchemy.orm.Mapper.single
2633
sqlalchemy.orm.mapper.Mapper.single
2734

28-
# uses @memoized_property at runtime, but we use @property for compatibility
35+
# Uses @memoized_property at runtime, but we use @property for compatibility
2936
sqlalchemy.engine.URL.normalized_query
3037
sqlalchemy.engine.url.URL.normalized_query
38+
# Uses @memoized_property, but that causes regr_test to raise 'Cannot determine type of "..." in base class "..." [misc]'
39+
sqlalchemy.schema.SchemaItem.info
40+
sqlalchemy.sql.elements.AnnotatedColumnElement.info
41+
sqlalchemy.sql.elements.AnnotatedColumnElement.key
42+
sqlalchemy.sql.elements.AnnotatedColumnElement.name
43+
sqlalchemy.sql.elements.AnnotatedColumnElement.table
44+
sqlalchemy.sql.schema.SchemaItem.info
3145

3246
# runtime has extra internal arguments that are inconsistent across micro versions
3347
sqlalchemy.testing.engines.testing_engine
@@ -62,8 +76,10 @@ sqlalchemy.sql.quoted_name.upper
6276
sqlalchemy.orm.ColumnProperty.Comparator.__clause_element__
6377
sqlalchemy.orm.properties.ColumnProperty.Comparator.__clause_element__
6478

65-
# Same error as in stdlib due to it being re-erported
79+
# Same error as in stdlib due to it being re-exported
80+
sqlalchemy.dialects.mysql.asyncmy.AsyncAdapt_asyncmy_dbapi.Binary
6681
sqlalchemy.util.compat.StringIO.seek
6782
sqlalchemy.util.compat.StringIO.truncate
6883
sqlalchemy.util.StringIO.seek
6984
sqlalchemy.util.StringIO.truncate
85+
sqlalchemy.testing.mock.patch

stubs/SQLAlchemy/@tests/test_cases/check_register.py

+1
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,6 @@ def no_args(__foo: Foo) -> None:
6363
prepare_for_drop_tables(url, unused)
6464
stop_test_class_outside_fixtures(url, unused, type)
6565
get_temp_table_name(url, unused, "")
66+
set_default_schema_on_connection(url, unused, unused)
6667
set_default_schema_on_connection(ConfigModule, unused, unused)
6768
set_default_schema_on_connection(config, unused, unused)

stubs/SQLAlchemy/METADATA.toml

-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,3 @@ obsolete_since = "2.0.0" # Released on 2023-01-26
77

88
[tool.stubtest]
99
stubtest_requirements = ["pytest"]
10-
ignore_missing_stub = true

stubs/SQLAlchemy/sqlalchemy/__init__.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ from .sql import (
8484
values as values,
8585
within_group as within_group,
8686
)
87-
from .types import (
87+
from .sql.sqltypes import (
8888
ARRAY as ARRAY,
8989
BIGINT as BIGINT,
9090
BINARY as BINARY,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class DecimalResultProcessor:
2+
def __init__(self, *args, **kwargs) -> None: ...
3+
def process(self, *args, **kwargs): ...
4+
5+
class UnicodeResultProcessor:
6+
def __init__(self, *args, **kwargs) -> None: ...
7+
def conditional_process(self, *args, **kwargs): ...
8+
def process(self, *args, **kwargs): ...
9+
10+
def int_to_boolean(*args, **kwargs): ...
11+
def str_to_date(*args, **kwargs): ...
12+
def str_to_datetime(*args, **kwargs): ...
13+
def str_to_time(*args, **kwargs): ...
14+
def to_float(*args, **kwargs): ...
15+
def to_str(*args, **kwargs): ...

stubs/SQLAlchemy/sqlalchemy/dialects/firebird/__init__.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any
22

3-
from sqlalchemy.dialects.firebird.base import (
3+
from .base import (
44
BIGINT as BIGINT,
55
BLOB as BLOB,
66
CHAR as CHAR,

stubs/SQLAlchemy/sqlalchemy/dialects/firebird/base.pyi

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
from sqlalchemy import sql, types as sqltypes
5-
from sqlalchemy.engine import default
6-
from sqlalchemy.sql import compiler
7-
from sqlalchemy.types import (
4+
from ...engine import default
5+
from ...sql import compiler, sqltypes
6+
from ...sql.sqltypes import (
87
BIGINT as BIGINT,
98
BLOB as BLOB,
109
DATE as DATE,
@@ -46,7 +45,7 @@ class FBTypeCompiler(compiler.GenericTypeCompiler):
4645
def visit_CHAR(self, type_, **kw): ...
4746
def visit_VARCHAR(self, type_, **kw): ...
4847

49-
class FBCompiler(sql.compiler.SQLCompiler):
48+
class FBCompiler(compiler.SQLCompiler):
5049
ansi_bind_rules: bool
5150
def visit_now_func(self, fn, **kw): ...
5251
def visit_startswith_op_binary(self, binary, operator, **kw): ...
@@ -63,12 +62,12 @@ class FBCompiler(sql.compiler.SQLCompiler):
6362
def limit_clause(self, select, **kw): ...
6463
def returning_clause(self, stmt, returning_cols): ...
6564

66-
class FBDDLCompiler(sql.compiler.DDLCompiler):
65+
class FBDDLCompiler(compiler.DDLCompiler):
6766
def visit_create_sequence(self, create): ...
6867
def visit_drop_sequence(self, drop): ...
6968
def visit_computed_column(self, generated): ...
7069

71-
class FBIdentifierPreparer(sql.compiler.IdentifierPreparer):
70+
class FBIdentifierPreparer(compiler.IdentifierPreparer):
7271
reserved_words: Any
7372
illegal_initial_characters: Any
7473
def __init__(self, dialect) -> None: ...

stubs/SQLAlchemy/sqlalchemy/dialects/firebird/kinterbasdb.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
from ...types import Float, Numeric
4+
from ...sql.sqltypes import Float, Numeric
55
from .base import FBDialect, FBExecutionContext
66

77
class _kinterbasdb_numeric:

stubs/SQLAlchemy/sqlalchemy/dialects/mssql/base.pyi

+2-4
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@ from _typeshed import Incomplete
22
from typing import Any, overload
33
from typing_extensions import Literal
44

5-
import sqlalchemy.types as sqltypes
6-
75
from ...engine import default
8-
from ...sql import compiler
6+
from ...sql import compiler, sqltypes
97
from ...sql.elements import Cast
10-
from ...types import (
8+
from ...sql.sqltypes import (
119
BIGINT as BIGINT,
1210
BINARY as BINARY,
1311
CHAR as CHAR,

stubs/SQLAlchemy/sqlalchemy/dialects/mssql/information_schema.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import Any
22

33
from ...sql import expression
4-
from ...types import TypeDecorator
4+
from ...sql.type_api import TypeDecorator
55

66
ischema: Any
77

stubs/SQLAlchemy/sqlalchemy/dialects/mssql/json.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from ...types import JSON as _JSON
1+
from ...sql.sqltypes import JSON as _JSON
22

33
class JSON(_JSON): ...
44

stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pymssql.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any
22

3-
from ...types import Numeric
3+
from ...sql.sqltypes import Numeric
44
from .base import MSDialect, MSIdentifierPreparer
55

66
class _MSNumeric_pymssql(Numeric):

stubs/SQLAlchemy/sqlalchemy/dialects/mssql/pyodbc.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ from _typeshed import Incomplete
22
from typing import Any
33

44
from ...connectors.pyodbc import PyODBCConnector
5-
from ...types import DateTime, Float, Numeric
5+
from ...sql.sqltypes import DateTime, Float, Numeric
66
from .base import BINARY, DATETIMEOFFSET, VARBINARY, MSDialect, MSExecutionContext
77

88
class _ms_numeric_pyodbc:

stubs/SQLAlchemy/sqlalchemy/dialects/mysql/asyncmy.pyi

+12-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
from _typeshed import Incomplete
2-
from typing import Any
1+
from _typeshed import Incomplete, ReadableBuffer
2+
from collections.abc import Iterable
3+
from typing import Any, SupportsBytes
4+
from typing_extensions import SupportsIndex
35

46
from ...engine import AdaptedConnection
57
from .pymysql import MySQLDialect_pymysql
@@ -51,10 +53,18 @@ class AsyncAdapt_asyncmy_connection(AdaptedConnection):
5153
class AsyncAdaptFallback_asyncmy_connection(AsyncAdapt_asyncmy_connection):
5254
await_: Any
5355

56+
def _Binary(x: Iterable[SupportsIndex] | SupportsIndex | SupportsBytes | ReadableBuffer) -> bytes: ...
57+
5458
class AsyncAdapt_asyncmy_dbapi:
5559
asyncmy: Any
5660
pymysql: Any
5761
paramstyle: str
62+
STRING: Incomplete
63+
NUMBER: Incomplete
64+
BINARY: Incomplete
65+
DATETIME: Incomplete
66+
TIMESTAMP: Incomplete
67+
Binary = staticmethod(_Binary)
5868
def __init__(self, asyncmy: Any) -> None: ...
5969
def connect(self, *arg, **kw): ...
6070

stubs/SQLAlchemy/sqlalchemy/dialects/mysql/base.pyi

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ from typing import Any
33

44
from ...engine import default
55
from ...sql import compiler
6-
from ...types import BINARY as BINARY, BLOB as BLOB, BOOLEAN as BOOLEAN, DATE as DATE, VARBINARY as VARBINARY
6+
from ...sql.sqltypes import BINARY as BINARY, BLOB as BLOB, BOOLEAN as BOOLEAN, DATE as DATE, VARBINARY as VARBINARY
77
from .enumerated import ENUM as ENUM, SET as SET
88
from .json import JSON as JSON
9+
from .reserved_words import RESERVED_WORDS_MARIADB as RESERVED_WORDS_MARIADB, RESERVED_WORDS_MYSQL as RESERVED_WORDS_MYSQL
910
from .types import (
1011
BIGINT as BIGINT,
1112
BIT as BIT,

stubs/SQLAlchemy/sqlalchemy/dialects/mysql/dml.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ from typing import Any
22

33
from ...sql.dml import Insert as StandardInsert
44
from ...sql.elements import ClauseElement
5-
from ...util import memoized_property
5+
from ...util.langhelpers import memoized_property
66

77
class Insert(StandardInsert):
88
stringify_dialect: str

stubs/SQLAlchemy/sqlalchemy/dialects/mysql/json.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import sqlalchemy.types as sqltypes
1+
from ...sql import sqltypes
22

33
class JSON(sqltypes.JSON): ...
44

stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqlconnector.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any
22

3-
from ...util import memoized_property
3+
from ...util.langhelpers import memoized_property
44
from .base import BIT, MySQLCompiler, MySQLDialect, MySQLIdentifierPreparer
55

66
class MySQLCompiler_mysqlconnector(MySQLCompiler):

stubs/SQLAlchemy/sqlalchemy/dialects/mysql/mysqldb.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
from ...util import memoized_property
4+
from ...util.langhelpers import memoized_property
55
from .base import MySQLCompiler, MySQLDialect, MySQLExecutionContext
66

77
class MySQLExecutionContext_mysqldb(MySQLExecutionContext):

stubs/SQLAlchemy/sqlalchemy/dialects/mysql/pymysql.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
from ...util import memoized_property
4+
from ...util.langhelpers import memoized_property
55
from .mysqldb import MySQLDialect_mysqldb
66

77
class MySQLDialect_pymysql(MySQLDialect_mysqldb):

stubs/SQLAlchemy/sqlalchemy/dialects/mysql/types.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
import sqlalchemy.types as sqltypes
4+
from ...sql import sqltypes
55

66
class _NumericType:
77
unsigned: Any

stubs/SQLAlchemy/sqlalchemy/dialects/oracle/base.pyi

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
from sqlalchemy.sql import ClauseElement
5-
64
from ...engine import default
7-
from ...sql import compiler, sqltypes
8-
from ...types import (
5+
from ...sql import ClauseElement, compiler, sqltypes
6+
from ...sql.sqltypes import (
97
BLOB as BLOB,
108
CHAR as CHAR,
119
CLOB as CLOB,

stubs/SQLAlchemy/sqlalchemy/dialects/oracle/cx_oracle.pyi

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
import sqlalchemy.types as sqltypes
5-
4+
from ...sql import sqltypes
65
from . import base as oracle
76
from .base import OracleCompiler, OracleDialect, OracleExecutionContext
87

stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/array.pyi

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any as _Any
33

4-
import sqlalchemy.types as sqltypes
5-
6-
from ...sql import expression
4+
from ...sql import expression, sqltypes
75

86
def Any(other, arrexpr, operator=...): ...
97
def All(other, arrexpr, operator=...): ...

stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/asyncpg.pyi

+3
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ class AsyncAdapt_asyncpg_connection(AdaptedConnection):
122122
def rollback(self) -> None: ...
123123
def commit(self) -> None: ...
124124
def close(self) -> None: ...
125+
def terminate(self) -> None: ...
125126

126127
class AsyncAdaptFallback_asyncpg_connection(AsyncAdapt_asyncpg_connection):
127128
await_: Any
@@ -152,6 +153,7 @@ class AsyncAdapt_asyncpg_dbapi:
152153
TIMESTAMP: Any
153154
TIMESTAMP_W_TZ: Any
154155
TIME: Any
156+
TIME_W_TZ: Incomplete
155157
DATE: Any
156158
INTERVAL: Any
157159
NUMBER: Any
@@ -175,6 +177,7 @@ class PGDialect_asyncpg(PGDialect):
175177
supports_unicode_statements: bool
176178
supports_server_side_cursors: bool
177179
supports_unicode_binds: bool
180+
has_terminate: bool
178181
default_paramstyle: str
179182
supports_sane_multi_rowcount: bool
180183
statement_compiler: Any

stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/base.pyi

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ from ...engine import characteristics, default, reflection
55
from ...schema import _CreateDropBase
66
from ...sql import compiler, elements, sqltypes
77
from ...sql.ddl import DDLBase
8-
from ...types import (
8+
from ...sql.sqltypes import (
99
BIGINT as BIGINT,
1010
BOOLEAN as BOOLEAN,
1111
CHAR as CHAR,
@@ -179,6 +179,7 @@ class PGTypeCompiler(compiler.GenericTypeCompiler):
179179
def visit_INET(self, type_, **kw): ...
180180
def visit_CIDR(self, type_, **kw): ...
181181
def visit_MACADDR(self, type_, **kw): ...
182+
def visit_MACADDR8(self, type_, **kw): ...
182183
def visit_MONEY(self, type_, **kw): ...
183184
def visit_OID(self, type_, **kw): ...
184185
def visit_REGCLASS(self, type_, **kw): ...

stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/dml.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ from typing import Any
33

44
from ...sql.dml import Insert as StandardInsert
55
from ...sql.elements import ClauseElement
6-
from ...util import memoized_property
6+
from ...util.langhelpers import memoized_property
77

88
class Insert(StandardInsert):
99
stringify_dialect: str

stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/hstore.pyi

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
import sqlalchemy.types as sqltypes
5-
6-
from ...sql import functions as sqlfunc
4+
from ...sql import functions as sqlfunc, sqltypes
75

86
class HSTORE(sqltypes.Indexable, sqltypes.Concatenable, sqltypes.TypeEngine):
97
__visit_name__: str

stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/json.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
import sqlalchemy.types as sqltypes
4+
from ...sql import sqltypes
55

66
class JSONPathType(sqltypes.JSON.JSONPathType):
77
def bind_processor(self, dialect): ...

stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/pg8000.pyi

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
import sqlalchemy.types as sqltypes
5-
4+
from ...sql import sqltypes
65
from .array import ARRAY as PGARRAY
76
from .base import ENUM, INTERVAL, UUID, PGCompiler, PGDialect, PGExecutionContext, PGIdentifierPreparer
87
from .json import JSON, JSONB, JSONPathType

stubs/SQLAlchemy/sqlalchemy/dialects/postgresql/psycopg2.pyi

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from _typeshed import Incomplete
22
from typing import Any
33

4-
import sqlalchemy.types as sqltypes
5-
4+
from ...sql import sqltypes
65
from .array import ARRAY as PGARRAY
76
from .base import ENUM, UUID, PGCompiler, PGDialect, PGExecutionContext, PGIdentifierPreparer
87
from .hstore import HSTORE

0 commit comments

Comments
 (0)