SQLAlchemy 2.1.0b2__cp313-cp313t-win_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sqlalchemy/__init__.py +298 -0
- sqlalchemy/connectors/__init__.py +18 -0
- sqlalchemy/connectors/aioodbc.py +171 -0
- sqlalchemy/connectors/asyncio.py +476 -0
- sqlalchemy/connectors/pyodbc.py +250 -0
- sqlalchemy/dialects/__init__.py +62 -0
- sqlalchemy/dialects/_typing.py +30 -0
- sqlalchemy/dialects/mssql/__init__.py +89 -0
- sqlalchemy/dialects/mssql/aioodbc.py +63 -0
- sqlalchemy/dialects/mssql/base.py +4166 -0
- sqlalchemy/dialects/mssql/information_schema.py +285 -0
- sqlalchemy/dialects/mssql/json.py +140 -0
- sqlalchemy/dialects/mssql/mssqlpython.py +220 -0
- sqlalchemy/dialects/mssql/provision.py +196 -0
- sqlalchemy/dialects/mssql/pymssql.py +126 -0
- sqlalchemy/dialects/mssql/pyodbc.py +698 -0
- sqlalchemy/dialects/mysql/__init__.py +106 -0
- sqlalchemy/dialects/mysql/_mariadb_shim.py +312 -0
- sqlalchemy/dialects/mysql/aiomysql.py +226 -0
- sqlalchemy/dialects/mysql/asyncmy.py +214 -0
- sqlalchemy/dialects/mysql/base.py +3877 -0
- sqlalchemy/dialects/mysql/cymysql.py +106 -0
- sqlalchemy/dialects/mysql/dml.py +279 -0
- sqlalchemy/dialects/mysql/enumerated.py +277 -0
- sqlalchemy/dialects/mysql/expression.py +146 -0
- sqlalchemy/dialects/mysql/json.py +92 -0
- sqlalchemy/dialects/mysql/mariadb.py +67 -0
- sqlalchemy/dialects/mysql/mariadbconnector.py +330 -0
- sqlalchemy/dialects/mysql/mysqlconnector.py +296 -0
- sqlalchemy/dialects/mysql/mysqldb.py +312 -0
- sqlalchemy/dialects/mysql/provision.py +153 -0
- sqlalchemy/dialects/mysql/pymysql.py +157 -0
- sqlalchemy/dialects/mysql/pyodbc.py +156 -0
- sqlalchemy/dialects/mysql/reflection.py +724 -0
- sqlalchemy/dialects/mysql/reserved_words.py +570 -0
- sqlalchemy/dialects/mysql/types.py +845 -0
- sqlalchemy/dialects/oracle/__init__.py +85 -0
- sqlalchemy/dialects/oracle/base.py +3977 -0
- sqlalchemy/dialects/oracle/cx_oracle.py +1601 -0
- sqlalchemy/dialects/oracle/dictionary.py +507 -0
- sqlalchemy/dialects/oracle/json.py +158 -0
- sqlalchemy/dialects/oracle/oracledb.py +909 -0
- sqlalchemy/dialects/oracle/provision.py +288 -0
- sqlalchemy/dialects/oracle/types.py +367 -0
- sqlalchemy/dialects/oracle/vector.py +368 -0
- sqlalchemy/dialects/postgresql/__init__.py +171 -0
- sqlalchemy/dialects/postgresql/_psycopg_common.py +229 -0
- sqlalchemy/dialects/postgresql/array.py +534 -0
- sqlalchemy/dialects/postgresql/asyncpg.py +1323 -0
- sqlalchemy/dialects/postgresql/base.py +5789 -0
- sqlalchemy/dialects/postgresql/bitstring.py +327 -0
- sqlalchemy/dialects/postgresql/dml.py +360 -0
- sqlalchemy/dialects/postgresql/ext.py +593 -0
- sqlalchemy/dialects/postgresql/hstore.py +423 -0
- sqlalchemy/dialects/postgresql/json.py +408 -0
- sqlalchemy/dialects/postgresql/named_types.py +521 -0
- sqlalchemy/dialects/postgresql/operators.py +130 -0
- sqlalchemy/dialects/postgresql/pg8000.py +670 -0
- sqlalchemy/dialects/postgresql/pg_catalog.py +344 -0
- sqlalchemy/dialects/postgresql/provision.py +184 -0
- sqlalchemy/dialects/postgresql/psycopg.py +799 -0
- sqlalchemy/dialects/postgresql/psycopg2.py +860 -0
- sqlalchemy/dialects/postgresql/psycopg2cffi.py +61 -0
- sqlalchemy/dialects/postgresql/ranges.py +1002 -0
- sqlalchemy/dialects/postgresql/types.py +388 -0
- sqlalchemy/dialects/sqlite/__init__.py +57 -0
- sqlalchemy/dialects/sqlite/aiosqlite.py +321 -0
- sqlalchemy/dialects/sqlite/base.py +3063 -0
- sqlalchemy/dialects/sqlite/dml.py +279 -0
- sqlalchemy/dialects/sqlite/json.py +100 -0
- sqlalchemy/dialects/sqlite/provision.py +229 -0
- sqlalchemy/dialects/sqlite/pysqlcipher.py +161 -0
- sqlalchemy/dialects/sqlite/pysqlite.py +754 -0
- sqlalchemy/dialects/type_migration_guidelines.txt +145 -0
- sqlalchemy/engine/__init__.py +62 -0
- sqlalchemy/engine/_processors_cy.cp313t-win_arm64.pyd +0 -0
- sqlalchemy/engine/_processors_cy.py +92 -0
- sqlalchemy/engine/_result_cy.cp313t-win_arm64.pyd +0 -0
- sqlalchemy/engine/_result_cy.py +633 -0
- sqlalchemy/engine/_row_cy.cp313t-win_arm64.pyd +0 -0
- sqlalchemy/engine/_row_cy.py +232 -0
- sqlalchemy/engine/_util_cy.cp313t-win_arm64.pyd +0 -0
- sqlalchemy/engine/_util_cy.py +136 -0
- sqlalchemy/engine/base.py +3354 -0
- sqlalchemy/engine/characteristics.py +155 -0
- sqlalchemy/engine/create.py +877 -0
- sqlalchemy/engine/cursor.py +2421 -0
- sqlalchemy/engine/default.py +2402 -0
- sqlalchemy/engine/events.py +965 -0
- sqlalchemy/engine/interfaces.py +3495 -0
- sqlalchemy/engine/mock.py +134 -0
- sqlalchemy/engine/processors.py +82 -0
- sqlalchemy/engine/reflection.py +2100 -0
- sqlalchemy/engine/result.py +1966 -0
- sqlalchemy/engine/row.py +397 -0
- sqlalchemy/engine/strategies.py +16 -0
- sqlalchemy/engine/url.py +922 -0
- sqlalchemy/engine/util.py +156 -0
- sqlalchemy/event/__init__.py +26 -0
- sqlalchemy/event/api.py +220 -0
- sqlalchemy/event/attr.py +674 -0
- sqlalchemy/event/base.py +472 -0
- sqlalchemy/event/legacy.py +258 -0
- sqlalchemy/event/registry.py +390 -0
- sqlalchemy/events.py +17 -0
- sqlalchemy/exc.py +922 -0
- sqlalchemy/ext/__init__.py +11 -0
- sqlalchemy/ext/associationproxy.py +2072 -0
- sqlalchemy/ext/asyncio/__init__.py +29 -0
- sqlalchemy/ext/asyncio/base.py +281 -0
- sqlalchemy/ext/asyncio/engine.py +1487 -0
- sqlalchemy/ext/asyncio/exc.py +21 -0
- sqlalchemy/ext/asyncio/result.py +994 -0
- sqlalchemy/ext/asyncio/scoping.py +1679 -0
- sqlalchemy/ext/asyncio/session.py +2007 -0
- sqlalchemy/ext/automap.py +1701 -0
- sqlalchemy/ext/baked.py +559 -0
- sqlalchemy/ext/compiler.py +600 -0
- sqlalchemy/ext/declarative/__init__.py +65 -0
- sqlalchemy/ext/declarative/extensions.py +560 -0
- sqlalchemy/ext/horizontal_shard.py +481 -0
- sqlalchemy/ext/hybrid.py +1877 -0
- sqlalchemy/ext/indexable.py +364 -0
- sqlalchemy/ext/instrumentation.py +450 -0
- sqlalchemy/ext/mutable.py +1081 -0
- sqlalchemy/ext/orderinglist.py +439 -0
- sqlalchemy/ext/serializer.py +185 -0
- sqlalchemy/future/__init__.py +16 -0
- sqlalchemy/future/engine.py +15 -0
- sqlalchemy/inspection.py +174 -0
- sqlalchemy/log.py +283 -0
- sqlalchemy/orm/__init__.py +176 -0
- sqlalchemy/orm/_orm_constructors.py +2694 -0
- sqlalchemy/orm/_typing.py +179 -0
- sqlalchemy/orm/attributes.py +2868 -0
- sqlalchemy/orm/base.py +976 -0
- sqlalchemy/orm/bulk_persistence.py +2152 -0
- sqlalchemy/orm/clsregistry.py +582 -0
- sqlalchemy/orm/collections.py +1568 -0
- sqlalchemy/orm/context.py +3471 -0
- sqlalchemy/orm/decl_api.py +2280 -0
- sqlalchemy/orm/decl_base.py +2309 -0
- sqlalchemy/orm/dependency.py +1306 -0
- sqlalchemy/orm/descriptor_props.py +1183 -0
- sqlalchemy/orm/dynamic.py +307 -0
- sqlalchemy/orm/evaluator.py +379 -0
- sqlalchemy/orm/events.py +3386 -0
- sqlalchemy/orm/exc.py +237 -0
- sqlalchemy/orm/identity.py +302 -0
- sqlalchemy/orm/instrumentation.py +746 -0
- sqlalchemy/orm/interfaces.py +1589 -0
- sqlalchemy/orm/loading.py +1684 -0
- sqlalchemy/orm/mapped_collection.py +557 -0
- sqlalchemy/orm/mapper.py +4411 -0
- sqlalchemy/orm/path_registry.py +829 -0
- sqlalchemy/orm/persistence.py +1789 -0
- sqlalchemy/orm/properties.py +973 -0
- sqlalchemy/orm/query.py +3528 -0
- sqlalchemy/orm/relationships.py +3570 -0
- sqlalchemy/orm/scoping.py +2232 -0
- sqlalchemy/orm/session.py +5403 -0
- sqlalchemy/orm/state.py +1175 -0
- sqlalchemy/orm/state_changes.py +196 -0
- sqlalchemy/orm/strategies.py +3492 -0
- sqlalchemy/orm/strategy_options.py +2562 -0
- sqlalchemy/orm/sync.py +164 -0
- sqlalchemy/orm/unitofwork.py +798 -0
- sqlalchemy/orm/util.py +2438 -0
- sqlalchemy/orm/writeonly.py +694 -0
- sqlalchemy/pool/__init__.py +41 -0
- sqlalchemy/pool/base.py +1522 -0
- sqlalchemy/pool/events.py +375 -0
- sqlalchemy/pool/impl.py +582 -0
- sqlalchemy/py.typed +0 -0
- sqlalchemy/schema.py +74 -0
- sqlalchemy/sql/__init__.py +156 -0
- sqlalchemy/sql/_annotated_cols.py +397 -0
- sqlalchemy/sql/_dml_constructors.py +132 -0
- sqlalchemy/sql/_elements_constructors.py +2164 -0
- sqlalchemy/sql/_orm_types.py +20 -0
- sqlalchemy/sql/_selectable_constructors.py +840 -0
- sqlalchemy/sql/_typing.py +487 -0
- sqlalchemy/sql/_util_cy.cp313t-win_arm64.pyd +0 -0
- sqlalchemy/sql/_util_cy.py +127 -0
- sqlalchemy/sql/annotation.py +590 -0
- sqlalchemy/sql/base.py +2699 -0
- sqlalchemy/sql/cache_key.py +1066 -0
- sqlalchemy/sql/coercions.py +1373 -0
- sqlalchemy/sql/compiler.py +8327 -0
- sqlalchemy/sql/crud.py +1815 -0
- sqlalchemy/sql/ddl.py +1928 -0
- sqlalchemy/sql/default_comparator.py +654 -0
- sqlalchemy/sql/dml.py +1977 -0
- sqlalchemy/sql/elements.py +6033 -0
- sqlalchemy/sql/events.py +458 -0
- sqlalchemy/sql/expression.py +172 -0
- sqlalchemy/sql/functions.py +2305 -0
- sqlalchemy/sql/lambdas.py +1443 -0
- sqlalchemy/sql/naming.py +209 -0
- sqlalchemy/sql/operators.py +2897 -0
- sqlalchemy/sql/roles.py +332 -0
- sqlalchemy/sql/schema.py +6703 -0
- sqlalchemy/sql/selectable.py +7553 -0
- sqlalchemy/sql/sqltypes.py +4093 -0
- sqlalchemy/sql/traversals.py +1042 -0
- sqlalchemy/sql/type_api.py +2446 -0
- sqlalchemy/sql/util.py +1495 -0
- sqlalchemy/sql/visitors.py +1157 -0
- sqlalchemy/testing/__init__.py +96 -0
- sqlalchemy/testing/assertions.py +1007 -0
- sqlalchemy/testing/assertsql.py +519 -0
- sqlalchemy/testing/asyncio.py +128 -0
- sqlalchemy/testing/config.py +440 -0
- sqlalchemy/testing/engines.py +483 -0
- sqlalchemy/testing/entities.py +117 -0
- sqlalchemy/testing/exclusions.py +476 -0
- sqlalchemy/testing/fixtures/__init__.py +30 -0
- sqlalchemy/testing/fixtures/base.py +384 -0
- sqlalchemy/testing/fixtures/mypy.py +247 -0
- sqlalchemy/testing/fixtures/orm.py +227 -0
- sqlalchemy/testing/fixtures/sql.py +538 -0
- sqlalchemy/testing/pickleable.py +155 -0
- sqlalchemy/testing/plugin/__init__.py +6 -0
- sqlalchemy/testing/plugin/bootstrap.py +51 -0
- sqlalchemy/testing/plugin/plugin_base.py +828 -0
- sqlalchemy/testing/plugin/pytestplugin.py +892 -0
- sqlalchemy/testing/profiling.py +329 -0
- sqlalchemy/testing/provision.py +613 -0
- sqlalchemy/testing/requirements.py +1978 -0
- sqlalchemy/testing/schema.py +198 -0
- sqlalchemy/testing/suite/__init__.py +19 -0
- sqlalchemy/testing/suite/test_cte.py +237 -0
- sqlalchemy/testing/suite/test_ddl.py +420 -0
- sqlalchemy/testing/suite/test_dialect.py +776 -0
- sqlalchemy/testing/suite/test_insert.py +630 -0
- sqlalchemy/testing/suite/test_reflection.py +3557 -0
- sqlalchemy/testing/suite/test_results.py +660 -0
- sqlalchemy/testing/suite/test_rowcount.py +258 -0
- sqlalchemy/testing/suite/test_select.py +2112 -0
- sqlalchemy/testing/suite/test_sequence.py +317 -0
- sqlalchemy/testing/suite/test_table_via_select.py +686 -0
- sqlalchemy/testing/suite/test_types.py +2271 -0
- sqlalchemy/testing/suite/test_unicode_ddl.py +189 -0
- sqlalchemy/testing/suite/test_update_delete.py +139 -0
- sqlalchemy/testing/util.py +535 -0
- sqlalchemy/testing/warnings.py +52 -0
- sqlalchemy/types.py +76 -0
- sqlalchemy/util/__init__.py +158 -0
- sqlalchemy/util/_collections.py +688 -0
- sqlalchemy/util/_collections_cy.cp313t-win_arm64.pyd +0 -0
- sqlalchemy/util/_collections_cy.pxd +8 -0
- sqlalchemy/util/_collections_cy.py +516 -0
- sqlalchemy/util/_has_cython.py +46 -0
- sqlalchemy/util/_immutabledict_cy.cp313t-win_arm64.pyd +0 -0
- sqlalchemy/util/_immutabledict_cy.py +240 -0
- sqlalchemy/util/compat.py +299 -0
- sqlalchemy/util/concurrency.py +322 -0
- sqlalchemy/util/cython.py +79 -0
- sqlalchemy/util/deprecations.py +401 -0
- sqlalchemy/util/langhelpers.py +2320 -0
- sqlalchemy/util/preloaded.py +152 -0
- sqlalchemy/util/queue.py +304 -0
- sqlalchemy/util/tool_support.py +201 -0
- sqlalchemy/util/topological.py +120 -0
- sqlalchemy/util/typing.py +711 -0
- sqlalchemy-2.1.0b2.dist-info/METADATA +269 -0
- sqlalchemy-2.1.0b2.dist-info/RECORD +270 -0
- sqlalchemy-2.1.0b2.dist-info/WHEEL +5 -0
- sqlalchemy-2.1.0b2.dist-info/licenses/LICENSE +19 -0
- sqlalchemy-2.1.0b2.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# orm/_typing.py
|
|
2
|
+
# Copyright (C) 2022-2026 the SQLAlchemy authors and contributors
|
|
3
|
+
# <see AUTHORS file>
|
|
4
|
+
#
|
|
5
|
+
# This module is part of SQLAlchemy and is released under
|
|
6
|
+
# the MIT License: https://www.opensource.org/licenses/mit-license.php
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import operator
|
|
11
|
+
from typing import Any
|
|
12
|
+
from typing import Dict
|
|
13
|
+
from typing import Mapping
|
|
14
|
+
from typing import Optional
|
|
15
|
+
from typing import Protocol
|
|
16
|
+
from typing import Tuple
|
|
17
|
+
from typing import Type
|
|
18
|
+
from typing import TYPE_CHECKING
|
|
19
|
+
from typing import TypeGuard
|
|
20
|
+
from typing import TypeVar
|
|
21
|
+
from typing import Union
|
|
22
|
+
|
|
23
|
+
from ..engine.interfaces import _CoreKnownExecutionOptions
|
|
24
|
+
from ..sql import roles
|
|
25
|
+
from ..sql._orm_types import DMLStrategyArgument as DMLStrategyArgument
|
|
26
|
+
from ..sql._orm_types import (
|
|
27
|
+
SynchronizeSessionArgument as SynchronizeSessionArgument,
|
|
28
|
+
)
|
|
29
|
+
from ..sql._typing import _HasClauseElement
|
|
30
|
+
from ..sql.elements import ColumnElement
|
|
31
|
+
|
|
32
|
+
if TYPE_CHECKING:
|
|
33
|
+
from .attributes import _AttributeImpl
|
|
34
|
+
from .attributes import _CollectionAttributeImpl
|
|
35
|
+
from .attributes import _HasCollectionAdapter
|
|
36
|
+
from .attributes import QueryableAttribute
|
|
37
|
+
from .base import PassiveFlag
|
|
38
|
+
from .decl_api import registry as _registry_type
|
|
39
|
+
from .interfaces import InspectionAttr
|
|
40
|
+
from .interfaces import MapperProperty
|
|
41
|
+
from .interfaces import ORMOption
|
|
42
|
+
from .interfaces import UserDefinedOption
|
|
43
|
+
from .mapper import Mapper
|
|
44
|
+
from .relationships import RelationshipProperty
|
|
45
|
+
from .state import InstanceState
|
|
46
|
+
from .util import AliasedClass
|
|
47
|
+
from .util import AliasedInsp
|
|
48
|
+
from ..sql._typing import _CE
|
|
49
|
+
from ..sql.base import ExecutableOption
|
|
50
|
+
|
|
51
|
+
_T = TypeVar("_T", bound=Any)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
_T_co = TypeVar("_T_co", bound=Any, covariant=True)
|
|
55
|
+
|
|
56
|
+
_O = TypeVar("_O", bound=object)
|
|
57
|
+
"""The 'ORM mapped object' type.
|
|
58
|
+
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
if TYPE_CHECKING:
|
|
63
|
+
_RegistryType = _registry_type
|
|
64
|
+
|
|
65
|
+
_InternalEntityType = Union["Mapper[_T]", "AliasedInsp[_T]"]
|
|
66
|
+
|
|
67
|
+
_ExternalEntityType = Union[Type[_T], "AliasedClass[_T]"]
|
|
68
|
+
|
|
69
|
+
_EntityType = Union[
|
|
70
|
+
Type[_T], "AliasedClass[_T]", "Mapper[_T]", "AliasedInsp[_T]"
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
_ClassDict = Mapping[str, Any]
|
|
75
|
+
_InstanceDict = Dict[str, Any]
|
|
76
|
+
|
|
77
|
+
_IdentityKeyType = Tuple[Type[_T], Tuple[Any, ...], Optional[Any]]
|
|
78
|
+
|
|
79
|
+
_ORMColumnExprArgument = Union[
|
|
80
|
+
ColumnElement[_T],
|
|
81
|
+
_HasClauseElement[_T],
|
|
82
|
+
roles.ExpressionElementRole[_T],
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
_ORMCOLEXPR = TypeVar("_ORMCOLEXPR", bound=ColumnElement[Any])
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class _OrmKnownExecutionOptions(_CoreKnownExecutionOptions, total=False):
|
|
90
|
+
populate_existing: bool
|
|
91
|
+
autoflush: bool
|
|
92
|
+
synchronize_session: SynchronizeSessionArgument
|
|
93
|
+
dml_strategy: DMLStrategyArgument
|
|
94
|
+
is_delete_using: bool
|
|
95
|
+
is_update_from: bool
|
|
96
|
+
render_nulls: bool
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
OrmExecuteOptionsParameter = Union[
|
|
100
|
+
_OrmKnownExecutionOptions, Mapping[str, Any]
|
|
101
|
+
]
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
class _ORMAdapterProto(Protocol):
|
|
105
|
+
"""protocol for the :class:`.AliasedInsp._orm_adapt_element` method
|
|
106
|
+
which is a synonym for :class:`.AliasedInsp._adapt_element`.
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
def __call__(self, obj: _CE, key: Optional[str] = None) -> _CE: ...
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class _LoaderCallable(Protocol):
|
|
115
|
+
def __call__(
|
|
116
|
+
self, state: InstanceState[Any], passive: PassiveFlag
|
|
117
|
+
) -> Any: ...
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def is_orm_option(
|
|
121
|
+
opt: ExecutableOption,
|
|
122
|
+
) -> TypeGuard[ORMOption]:
|
|
123
|
+
return not opt._is_core
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def is_user_defined_option(
|
|
127
|
+
opt: ExecutableOption,
|
|
128
|
+
) -> TypeGuard[UserDefinedOption]:
|
|
129
|
+
return not opt._is_core and opt._is_user_defined # type: ignore
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def is_composite_class(obj: Any) -> bool:
|
|
133
|
+
# inlining is_dataclass(obj)
|
|
134
|
+
return hasattr(obj, "__composite_values__") or hasattr(
|
|
135
|
+
obj, "__dataclass_fields__"
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
if TYPE_CHECKING:
|
|
140
|
+
|
|
141
|
+
def insp_is_mapper_property(
|
|
142
|
+
obj: Any,
|
|
143
|
+
) -> TypeGuard[MapperProperty[Any]]: ...
|
|
144
|
+
|
|
145
|
+
def insp_is_mapper(obj: Any) -> TypeGuard[Mapper[Any]]: ...
|
|
146
|
+
|
|
147
|
+
def insp_is_aliased_class(obj: Any) -> TypeGuard[AliasedInsp[Any]]: ...
|
|
148
|
+
|
|
149
|
+
def insp_is_attribute(
|
|
150
|
+
obj: InspectionAttr,
|
|
151
|
+
) -> TypeGuard[QueryableAttribute[Any]]: ...
|
|
152
|
+
|
|
153
|
+
def attr_is_internal_proxy(
|
|
154
|
+
obj: InspectionAttr,
|
|
155
|
+
) -> TypeGuard[QueryableAttribute[Any]]: ...
|
|
156
|
+
|
|
157
|
+
def prop_is_relationship(
|
|
158
|
+
prop: MapperProperty[Any],
|
|
159
|
+
) -> TypeGuard[RelationshipProperty[Any]]: ...
|
|
160
|
+
|
|
161
|
+
def is_collection_impl(
|
|
162
|
+
impl: _AttributeImpl,
|
|
163
|
+
) -> TypeGuard[_CollectionAttributeImpl]: ...
|
|
164
|
+
|
|
165
|
+
def is_has_collection_adapter(
|
|
166
|
+
impl: _AttributeImpl,
|
|
167
|
+
) -> TypeGuard[_HasCollectionAdapter]: ...
|
|
168
|
+
|
|
169
|
+
else:
|
|
170
|
+
insp_is_mapper_property = operator.attrgetter("is_property")
|
|
171
|
+
insp_is_mapper = operator.attrgetter("is_mapper")
|
|
172
|
+
insp_is_aliased_class = operator.attrgetter("is_aliased_class")
|
|
173
|
+
insp_is_attribute = operator.attrgetter("is_attribute")
|
|
174
|
+
attr_is_internal_proxy = operator.attrgetter("_is_internal_proxy")
|
|
175
|
+
is_collection_impl = operator.attrgetter("collection")
|
|
176
|
+
prop_is_relationship = operator.attrgetter("_is_relationship")
|
|
177
|
+
is_has_collection_adapter = operator.attrgetter(
|
|
178
|
+
"_is_has_collection_adapter"
|
|
179
|
+
)
|