summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-02-13 16:45:18 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2022-02-15 17:10:33 -0500
commit5c6081ddb03447697f909a03572b6d6d79e61b71 (patch)
tree8124ba2e9a496dcb6ac6ea92626804d261cc4c5d /lib/sqlalchemy/orm
parent619abb52b6f1ee023db0f85fd96ba9f88c8efa7b (diff)
downloadsqlalchemy-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')
-rw-r--r--lib/sqlalchemy/orm/__init__.py2
-rw-r--r--lib/sqlalchemy/orm/_orm_constructors.py20
-rw-r--r--lib/sqlalchemy/orm/attributes.py3
-rw-r--r--lib/sqlalchemy/orm/base.py2
-rw-r--r--lib/sqlalchemy/orm/clsregistry.py3
-rw-r--r--lib/sqlalchemy/orm/collections.py2
-rw-r--r--lib/sqlalchemy/orm/context.py3
-rw-r--r--lib/sqlalchemy/orm/decl_api.py3
-rw-r--r--lib/sqlalchemy/orm/dependency.py2
-rw-r--r--lib/sqlalchemy/orm/descriptor_props.py2
-rw-r--r--lib/sqlalchemy/orm/dynamic.py2
-rw-r--r--lib/sqlalchemy/orm/evaluator.py2
-rw-r--r--lib/sqlalchemy/orm/events.py2
-rw-r--r--lib/sqlalchemy/orm/exc.py3
-rw-r--r--lib/sqlalchemy/orm/identity.py2
-rw-r--r--lib/sqlalchemy/orm/instrumentation.py2
-rw-r--r--lib/sqlalchemy/orm/interfaces.py2
-rw-r--r--lib/sqlalchemy/orm/loading.py2
-rw-r--r--lib/sqlalchemy/orm/mapped_collection.py2
-rw-r--r--lib/sqlalchemy/orm/mapper.py2
-rw-r--r--lib/sqlalchemy/orm/path_registry.py2
-rw-r--r--lib/sqlalchemy/orm/persistence.py2
-rw-r--r--lib/sqlalchemy/orm/properties.py2
-rw-r--r--lib/sqlalchemy/orm/query.py2
-rw-r--r--lib/sqlalchemy/orm/scoping.py2
-rw-r--r--lib/sqlalchemy/orm/session.py2
-rw-r--r--lib/sqlalchemy/orm/state.py2
-rw-r--r--lib/sqlalchemy/orm/state_changes.py2
-rw-r--r--lib/sqlalchemy/orm/strategies.py2
-rw-r--r--lib/sqlalchemy/orm/strategy_options.py2
-rw-r--r--lib/sqlalchemy/orm/sync.py2
-rw-r--r--lib/sqlalchemy/orm/unitofwork.py2
-rw-r--r--lib/sqlalchemy/orm/util.py2
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