diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-02-13 16:45:18 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-02-15 17:10:33 -0500 |
| commit | 5c6081ddb03447697f909a03572b6d6d79e61b71 (patch) | |
| tree | 8124ba2e9a496dcb6ac6ea92626804d261cc4c5d /lib/sqlalchemy/orm | |
| parent | 619abb52b6f1ee023db0f85fd96ba9f88c8efa7b (diff) | |
| download | sqlalchemy-5c6081ddb03447697f909a03572b6d6d79e61b71.tar.gz | |
pep-484 for sqlalchemy.event; use future annotations
__future__.annotations mode allows us to use non-string
annotations for argument and return types in most cases,
but more importantly it removes a large amount of runtime
overhead that would be spent in evaluating the annotations.
Change-Id: I2f5b6126fe0019713fc50001be3627b664019ede
References: #6810
Diffstat (limited to 'lib/sqlalchemy/orm')
33 files changed, 80 insertions, 9 deletions
diff --git a/lib/sqlalchemy/orm/__init__.py b/lib/sqlalchemy/orm/__init__.py index bbed93310..5a8a0f6cf 100644 --- a/lib/sqlalchemy/orm/__init__.py +++ b/lib/sqlalchemy/orm/__init__.py @@ -13,6 +13,8 @@ documentation for an overview of how this module is used. """ +from __future__ import annotations + from . import exc as exc from . import mapper as mapperlib from . import strategy_options as strategy_options diff --git a/lib/sqlalchemy/orm/_orm_constructors.py b/lib/sqlalchemy/orm/_orm_constructors.py index a1f1faa05..8e05c6ef2 100644 --- a/lib/sqlalchemy/orm/_orm_constructors.py +++ b/lib/sqlalchemy/orm/_orm_constructors.py @@ -5,6 +5,8 @@ # This module is part of SQLAlchemy and is released under # the MIT License: https://www.opensource.org/licenses/mit-license.php +from __future__ import annotations + import typing from typing import Any from typing import Collection @@ -59,7 +61,7 @@ SynonymProperty = Synonym "for entities to be matched up to a query that is established " "via :meth:`.Query.from_statement` and now does nothing.", ) -def contains_alias(alias) -> "AliasOption": +def contains_alias(alias) -> AliasOption: r"""Return a :class:`.MapperOption` that will indicate to the :class:`_query.Query` that the main table has been aliased. @@ -74,7 +76,7 @@ def contains_alias(alias) -> "AliasOption": @overload def mapped_column( - __type: Union[Type["TypeEngine[_T]"], "TypeEngine[_T]"], + __type: Union[Type[TypeEngine[_T]], TypeEngine[_T]], *args: SchemaEventTarget, nullable: Literal[None] = ..., primary_key: Literal[None] = ..., @@ -87,7 +89,7 @@ def mapped_column( @overload def mapped_column( __name: str, - __type: Union[Type["TypeEngine[_T]"], "TypeEngine[_T]"], + __type: Union[Type[TypeEngine[_T]], TypeEngine[_T]], *args: SchemaEventTarget, nullable: Literal[None] = ..., primary_key: Literal[None] = ..., @@ -100,7 +102,7 @@ def mapped_column( @overload def mapped_column( __name: str, - __type: Union[Type["TypeEngine[_T]"], "TypeEngine[_T]"], + __type: Union[Type[TypeEngine[_T]], TypeEngine[_T]], *args: SchemaEventTarget, nullable: Literal[True] = ..., primary_key: Literal[None] = ..., @@ -112,7 +114,7 @@ def mapped_column( @overload def mapped_column( - __type: Union[Type["TypeEngine[_T]"], "TypeEngine[_T]"], + __type: Union[Type[TypeEngine[_T]], TypeEngine[_T]], *args: SchemaEventTarget, nullable: Literal[True] = ..., primary_key: Literal[None] = ..., @@ -125,7 +127,7 @@ def mapped_column( @overload def mapped_column( __name: str, - __type: Union[Type["TypeEngine[_T]"], "TypeEngine[_T]"], + __type: Union[Type[TypeEngine[_T]], TypeEngine[_T]], *args: SchemaEventTarget, nullable: Literal[False] = ..., primary_key: Literal[None] = ..., @@ -137,7 +139,7 @@ def mapped_column( @overload def mapped_column( - __type: Union[Type["TypeEngine[_T]"], "TypeEngine[_T]"], + __type: Union[Type[TypeEngine[_T]], TypeEngine[_T]], *args: SchemaEventTarget, nullable: Literal[False] = ..., primary_key: Literal[None] = ..., @@ -149,7 +151,7 @@ def mapped_column( @overload def mapped_column( - __type: Union[Type["TypeEngine[_T]"], "TypeEngine[_T]"], + __type: Union[Type[TypeEngine[_T]], TypeEngine[_T]], *args: SchemaEventTarget, nullable: bool = ..., primary_key: Literal[True] = ..., @@ -162,7 +164,7 @@ def mapped_column( @overload def mapped_column( __name: str, - __type: Union[Type["TypeEngine[_T]"], "TypeEngine[_T]"], + __type: Union[Type[TypeEngine[_T]], TypeEngine[_T]], *args: SchemaEventTarget, nullable: bool = ..., primary_key: Literal[True] = ..., diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py index fbfb2b2ee..c4afdb3a9 100644 --- a/lib/sqlalchemy/orm/attributes.py +++ b/lib/sqlalchemy/orm/attributes.py @@ -13,6 +13,9 @@ defines a large part of the ORM's interactivity. """ + +from __future__ import annotations + from collections import namedtuple import operator from typing import Any diff --git a/lib/sqlalchemy/orm/base.py b/lib/sqlalchemy/orm/base.py index e6d4a6729..33367c0c6 100644 --- a/lib/sqlalchemy/orm/base.py +++ b/lib/sqlalchemy/orm/base.py @@ -9,6 +9,8 @@ """ +from __future__ import annotations + import operator import typing from typing import Any diff --git a/lib/sqlalchemy/orm/clsregistry.py b/lib/sqlalchemy/orm/clsregistry.py index 037b70257..d0cb53e29 100644 --- a/lib/sqlalchemy/orm/clsregistry.py +++ b/lib/sqlalchemy/orm/clsregistry.py @@ -10,6 +10,9 @@ This system allows specification of classes and expressions used in :func:`_orm.relationship` using strings. """ + +from __future__ import annotations + import re from typing import MutableMapping from typing import Union diff --git a/lib/sqlalchemy/orm/collections.py b/lib/sqlalchemy/orm/collections.py index ba4225563..00ae9dac7 100644 --- a/lib/sqlalchemy/orm/collections.py +++ b/lib/sqlalchemy/orm/collections.py @@ -102,6 +102,8 @@ The owning object and :class:`.CollectionAttributeImpl` are also reachable through the adapter, allowing for some very sophisticated behavior. """ +from __future__ import annotations + import operator import threading import typing diff --git a/lib/sqlalchemy/orm/context.py b/lib/sqlalchemy/orm/context.py index 34f291864..f51abde0c 100644 --- a/lib/sqlalchemy/orm/context.py +++ b/lib/sqlalchemy/orm/context.py @@ -4,6 +4,9 @@ # # This module is part of SQLAlchemy and is released under # the MIT License: https://www.opensource.org/licenses/mit-license.php + +from __future__ import annotations + import itertools from typing import List diff --git a/lib/sqlalchemy/orm/decl_api.py b/lib/sqlalchemy/orm/decl_api.py index 5ac9966dd..4e28eeff7 100644 --- a/lib/sqlalchemy/orm/decl_api.py +++ b/lib/sqlalchemy/orm/decl_api.py @@ -5,6 +5,9 @@ # This module is part of SQLAlchemy and is released under # the MIT License: https://www.opensource.org/licenses/mit-license.php """Public API functions and helpers for declarative.""" + +from __future__ import annotations + import itertools import re import typing diff --git a/lib/sqlalchemy/orm/dependency.py b/lib/sqlalchemy/orm/dependency.py index 14812f2c2..d05d27b0e 100644 --- a/lib/sqlalchemy/orm/dependency.py +++ b/lib/sqlalchemy/orm/dependency.py @@ -9,6 +9,8 @@ """ +from __future__ import annotations + from . import attributes from . import exc from . import sync diff --git a/lib/sqlalchemy/orm/descriptor_props.py b/lib/sqlalchemy/orm/descriptor_props.py index 4526a8b33..4616e4094 100644 --- a/lib/sqlalchemy/orm/descriptor_props.py +++ b/lib/sqlalchemy/orm/descriptor_props.py @@ -10,6 +10,8 @@ that exist as configurational elements, but don't participate as actively in the load/persist ORM loop. """ +from __future__ import annotations + import inspect import itertools import operator diff --git a/lib/sqlalchemy/orm/dynamic.py b/lib/sqlalchemy/orm/dynamic.py index 3d9c61c20..52a6ec4b0 100644 --- a/lib/sqlalchemy/orm/dynamic.py +++ b/lib/sqlalchemy/orm/dynamic.py @@ -12,6 +12,8 @@ basic add/delete mutation. """ +from __future__ import annotations + from . import attributes from . import exc as orm_exc from . import interfaces diff --git a/lib/sqlalchemy/orm/evaluator.py b/lib/sqlalchemy/orm/evaluator.py index 61e3f6e90..453fc8903 100644 --- a/lib/sqlalchemy/orm/evaluator.py +++ b/lib/sqlalchemy/orm/evaluator.py @@ -5,6 +5,8 @@ # This module is part of SQLAlchemy and is released under # the MIT License: https://www.opensource.org/licenses/mit-license.php +from __future__ import annotations + import operator from .. import exc diff --git a/lib/sqlalchemy/orm/events.py b/lib/sqlalchemy/orm/events.py index cc4bedc3f..e62a83397 100644 --- a/lib/sqlalchemy/orm/events.py +++ b/lib/sqlalchemy/orm/events.py @@ -8,6 +8,8 @@ """ORM event interfaces. """ +from __future__ import annotations + import weakref from . import instrumentation diff --git a/lib/sqlalchemy/orm/exc.py b/lib/sqlalchemy/orm/exc.py index 8dd4d90d6..f70ea7837 100644 --- a/lib/sqlalchemy/orm/exc.py +++ b/lib/sqlalchemy/orm/exc.py @@ -6,6 +6,9 @@ # the MIT License: https://www.opensource.org/licenses/mit-license.php """SQLAlchemy ORM exceptions.""" + +from __future__ import annotations + from .. import exc as sa_exc from .. import util from ..exc import MultipleResultsFound # noqa diff --git a/lib/sqlalchemy/orm/identity.py b/lib/sqlalchemy/orm/identity.py index f8204ec77..3caf0b22f 100644 --- a/lib/sqlalchemy/orm/identity.py +++ b/lib/sqlalchemy/orm/identity.py @@ -5,6 +5,8 @@ # This module is part of SQLAlchemy and is released under # the MIT License: https://www.opensource.org/licenses/mit-license.php +from __future__ import annotations + import weakref from . import util as orm_util diff --git a/lib/sqlalchemy/orm/instrumentation.py b/lib/sqlalchemy/orm/instrumentation.py index 5d0b57206..a050c533a 100644 --- a/lib/sqlalchemy/orm/instrumentation.py +++ b/lib/sqlalchemy/orm/instrumentation.py @@ -30,6 +30,8 @@ alternate instrumentation forms. """ +from __future__ import annotations + from . import base from . import collections from . import exc diff --git a/lib/sqlalchemy/orm/interfaces.py b/lib/sqlalchemy/orm/interfaces.py index 1f9ec78f7..eed973526 100644 --- a/lib/sqlalchemy/orm/interfaces.py +++ b/lib/sqlalchemy/orm/interfaces.py @@ -16,6 +16,8 @@ are exposed when inspecting mappings. """ +from __future__ import annotations + import collections import typing from typing import Any diff --git a/lib/sqlalchemy/orm/loading.py b/lib/sqlalchemy/orm/loading.py index a40437c67..16ab1f4c8 100644 --- a/lib/sqlalchemy/orm/loading.py +++ b/lib/sqlalchemy/orm/loading.py @@ -13,6 +13,8 @@ as well as some of the attribute loading strategies. """ +from __future__ import annotations + from . import attributes from . import exc as orm_exc from . import path_registry diff --git a/lib/sqlalchemy/orm/mapped_collection.py b/lib/sqlalchemy/orm/mapped_collection.py index 75abeef4c..4324a000d 100644 --- a/lib/sqlalchemy/orm/mapped_collection.py +++ b/lib/sqlalchemy/orm/mapped_collection.py @@ -5,6 +5,8 @@ # This module is part of SQLAlchemy and is released under # the MIT License: https://www.opensource.org/licenses/mit-license.php +from __future__ import annotations + import operator from typing import Any from typing import Callable diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index cd0d1e820..15e9b8431 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -14,6 +14,8 @@ This is a semi-private module; the main configurational API of the ORM is available in :class:`~sqlalchemy.orm.`. """ +from __future__ import annotations + from collections import deque from functools import reduce from itertools import chain diff --git a/lib/sqlalchemy/orm/path_registry.py b/lib/sqlalchemy/orm/path_registry.py index 0d87739cc..9a7aa91a0 100644 --- a/lib/sqlalchemy/orm/path_registry.py +++ b/lib/sqlalchemy/orm/path_registry.py @@ -8,6 +8,8 @@ """ +from __future__ import annotations + from functools import reduce from itertools import chain import logging diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index b3381b039..519eb393f 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -13,6 +13,8 @@ The functions here are called only by the unit of work functions in unitofwork.py. """ +from __future__ import annotations + from itertools import chain from itertools import groupby from itertools import zip_longest diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py index f28c45fab..9f9ca90cb 100644 --- a/lib/sqlalchemy/orm/properties.py +++ b/lib/sqlalchemy/orm/properties.py @@ -12,6 +12,8 @@ mapped attributes. """ +from __future__ import annotations + from typing import Any from typing import cast from typing import List diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 61174487a..3b4b082a4 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -18,6 +18,8 @@ ORM session, whereas the ``Select`` construct interacts directly with the database to return iterable result sets. """ +from __future__ import annotations + import collections.abc as collections_abc import itertools import operator diff --git a/lib/sqlalchemy/orm/scoping.py b/lib/sqlalchemy/orm/scoping.py index 47da85716..9eb80a107 100644 --- a/lib/sqlalchemy/orm/scoping.py +++ b/lib/sqlalchemy/orm/scoping.py @@ -5,6 +5,8 @@ # This module is part of SQLAlchemy and is released under # the MIT License: https://www.opensource.org/licenses/mit-license.php +from __future__ import annotations + from . import exc as orm_exc from .base import class_mapper from .session import Session diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 6911ab505..4140d52c5 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -6,6 +6,8 @@ # the MIT License: https://www.opensource.org/licenses/mit-license.php """Provides the Session class and related utilities.""" +from __future__ import annotations + import contextlib import itertools import sys diff --git a/lib/sqlalchemy/orm/state.py b/lib/sqlalchemy/orm/state.py index 01ee16a13..58fa3e41a 100644 --- a/lib/sqlalchemy/orm/state.py +++ b/lib/sqlalchemy/orm/state.py @@ -12,6 +12,8 @@ defines a large part of the ORM's interactivity. """ +from __future__ import annotations + import weakref from . import base diff --git a/lib/sqlalchemy/orm/state_changes.py b/lib/sqlalchemy/orm/state_changes.py index 1421c1ae9..1afeab05b 100644 --- a/lib/sqlalchemy/orm/state_changes.py +++ b/lib/sqlalchemy/orm/state_changes.py @@ -8,6 +8,8 @@ """ +from __future__ import annotations + import contextlib from enum import Enum from typing import Any diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py index 316aa7ed7..85e015193 100644 --- a/lib/sqlalchemy/orm/strategies.py +++ b/lib/sqlalchemy/orm/strategies.py @@ -8,6 +8,8 @@ """sqlalchemy.orm.interfaces.LoaderStrategy implementations, and related MapperOptions.""" +from __future__ import annotations + import collections import itertools diff --git a/lib/sqlalchemy/orm/strategy_options.py b/lib/sqlalchemy/orm/strategy_options.py index 3f093e543..63679dd27 100644 --- a/lib/sqlalchemy/orm/strategy_options.py +++ b/lib/sqlalchemy/orm/strategy_options.py @@ -8,6 +8,8 @@ """ +from __future__ import annotations + import typing from typing import Any from typing import cast diff --git a/lib/sqlalchemy/orm/sync.py b/lib/sqlalchemy/orm/sync.py index 2994841f5..a49bd6f8e 100644 --- a/lib/sqlalchemy/orm/sync.py +++ b/lib/sqlalchemy/orm/sync.py @@ -10,6 +10,8 @@ between instances based on join conditions. """ +from __future__ import annotations + from . import attributes from . import exc from . import util as orm_util diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py index b478f427c..da098e8c5 100644 --- a/lib/sqlalchemy/orm/unitofwork.py +++ b/lib/sqlalchemy/orm/unitofwork.py @@ -13,6 +13,8 @@ organizes them in order of dependency, and executes. """ +from __future__ import annotations + from . import attributes from . import exc as orm_exc from . import util as orm_util diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py index 45c578355..e00e05954 100644 --- a/lib/sqlalchemy/orm/util.py +++ b/lib/sqlalchemy/orm/util.py @@ -5,6 +5,8 @@ # This module is part of SQLAlchemy and is released under # the MIT License: https://www.opensource.org/licenses/mit-license.php +from __future__ import annotations + import re import types import typing |
