summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2019-01-06 01:19:47 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2019-01-06 18:23:11 -0500
commit1e278de4cc9a4181e0747640a960e80efcea1ca9 (patch)
tree13d0c035807613bfa07e734acad79b9c843cb8b0 /lib/sqlalchemy/orm
parent1e1a38e7801f410f244e4bbb44ec795ae152e04e (diff)
downloadsqlalchemy-1e278de4cc9a4181e0747640a960e80efcea1ca9.tar.gz
Post black reformatting
Applied on top of a pure run of black -l 79 in I7eda77fed3d8e73df84b3651fd6cfcfe858d4dc9, this set of changes resolves all remaining flake8 conditions for those codes we have enabled in setup.cfg. Included are resolutions for all remaining flake8 issues including shadowed builtins, long lines, import order, unused imports, duplicate imports, and docstring issues. Change-Id: I4f72d3ba1380dd601610ff80b8fb06a2aff8b0fe
Diffstat (limited to 'lib/sqlalchemy/orm')
-rw-r--r--lib/sqlalchemy/orm/__init__.py101
-rw-r--r--lib/sqlalchemy/orm/attributes.py60
-rw-r--r--lib/sqlalchemy/orm/base.py10
-rw-r--r--lib/sqlalchemy/orm/collections.py8
-rw-r--r--lib/sqlalchemy/orm/dependency.py26
-rw-r--r--lib/sqlalchemy/orm/deprecated_interfaces.py3
-rw-r--r--lib/sqlalchemy/orm/descriptor_props.py19
-rw-r--r--lib/sqlalchemy/orm/dynamic.py21
-rw-r--r--lib/sqlalchemy/orm/evaluator.py3
-rw-r--r--lib/sqlalchemy/orm/events.py20
-rw-r--r--lib/sqlalchemy/orm/exc.py4
-rw-r--r--lib/sqlalchemy/orm/identity.py7
-rw-r--r--lib/sqlalchemy/orm/instrumentation.py11
-rw-r--r--lib/sqlalchemy/orm/interfaces.py28
-rw-r--r--lib/sqlalchemy/orm/loading.py19
-rw-r--r--lib/sqlalchemy/orm/mapper.py87
-rw-r--r--lib/sqlalchemy/orm/path_registry.py10
-rw-r--r--lib/sqlalchemy/orm/persistence.py45
-rw-r--r--lib/sqlalchemy/orm/properties.py14
-rw-r--r--lib/sqlalchemy/orm/query.py93
-rw-r--r--lib/sqlalchemy/orm/relationships.py90
-rw-r--r--lib/sqlalchemy/orm/scoping.py13
-rw-r--r--lib/sqlalchemy/orm/session.py53
-rw-r--r--lib/sqlalchemy/orm/state.py39
-rw-r--r--lib/sqlalchemy/orm/strategies.py91
-rw-r--r--lib/sqlalchemy/orm/strategy_options.py37
-rw-r--r--lib/sqlalchemy/orm/sync.py4
-rw-r--r--lib/sqlalchemy/orm/unitofwork.py10
-rw-r--r--lib/sqlalchemy/orm/util.py67
29 files changed, 570 insertions, 423 deletions
diff --git a/lib/sqlalchemy/orm/__init__.py b/lib/sqlalchemy/orm/__init__.py
index 8e7b4cee6..d9f50e153 100644
--- a/lib/sqlalchemy/orm/__init__.py
+++ b/lib/sqlalchemy/orm/__init__.py
@@ -13,53 +13,50 @@ documentation for an overview of how this module is used.
"""
-from . import exc
-from .mapper import (
- Mapper,
- _mapper_registry,
- class_mapper,
- configure_mappers,
- reconstructor,
- validates,
-)
-from .interfaces import EXT_CONTINUE, EXT_STOP, EXT_SKIP, PropComparator
-from .deprecated_interfaces import (
- MapperExtension,
- SessionExtension,
- AttributeExtension,
-)
-from .util import (
- aliased,
- join,
- object_mapper,
- outerjoin,
- polymorphic_union,
- was_deleted,
- with_parent,
- with_polymorphic,
-)
-from .properties import ColumnProperty
-from .relationships import RelationshipProperty
-from .descriptor_props import (
- ComparableProperty,
- CompositeProperty,
- SynonymProperty,
-)
-from .relationships import foreign, remote
-from .session import (
- Session,
- object_session,
- sessionmaker,
- make_transient,
- make_transient_to_detached,
-)
-from .scoping import scoped_session
-from . import mapper as mapperlib
-from .query import AliasOption, Query, Bundle
-from ..util.langhelpers import public_factory
-from .. import util as _sa_util
-from . import strategies as _strategies
+from . import exc # noqa
+from . import mapper as mapperlib # noqa
+from . import strategy_options
+from .deprecated_interfaces import AttributeExtension # noqa
+from .deprecated_interfaces import MapperExtension # noqa
+from .deprecated_interfaces import SessionExtension # noqa
+from .descriptor_props import ComparableProperty # noqa
+from .descriptor_props import CompositeProperty # noqa
+from .descriptor_props import SynonymProperty # noqa
+from .interfaces import EXT_CONTINUE # noqa
+from .interfaces import EXT_SKIP # noqa
+from .interfaces import EXT_STOP # noqa
+from .interfaces import PropComparator # noqa
+from .mapper import _mapper_registry
+from .mapper import class_mapper # noqa
+from .mapper import configure_mappers # noqa
+from .mapper import Mapper # noqa
+from .mapper import reconstructor # noqa
+from .mapper import validates # noqa
+from .properties import ColumnProperty # noqa
+from .query import AliasOption # noqa
+from .query import Bundle # noqa
+from .query import Query # noqa
+from .relationships import foreign # noqa
+from .relationships import RelationshipProperty # noqa
+from .relationships import remote # noqa
+from .scoping import scoped_session # noqa
+from .session import make_transient # noqa
+from .session import make_transient_to_detached # noqa
+from .session import object_session # noqa
+from .session import Session # noqa
+from .session import sessionmaker # noqa
+from .strategy_options import Load # noqa
+from .util import aliased # noqa
+from .util import join # noqa
+from .util import object_mapper # noqa
+from .util import outerjoin # noqa
+from .util import polymorphic_union # noqa
+from .util import was_deleted # noqa
+from .util import with_parent # noqa
+from .util import with_polymorphic # noqa
from .. import sql as _sql
+from .. import util as _sa_util
+from ..util.langhelpers import public_factory
def create_session(bind=None, **kwargs):
@@ -240,8 +237,6 @@ def clear_mappers():
mapperlib._CONFIGURE_MUTEX.release()
-from . import strategy_options
-
joinedload = strategy_options.joinedload._unbound_fn
joinedload_all = strategy_options.joinedload._unbound_all_fn
contains_eager = strategy_options.contains_eager._unbound_fn
@@ -262,8 +257,6 @@ raiseload = strategy_options.raiseload._unbound_fn
defaultload = strategy_options.defaultload._unbound_fn
selectin_polymorphic = strategy_options.selectin_polymorphic._unbound_fn
-from .strategy_options import Load
-
def eagerload(*args, **kwargs):
"""A synonym for :func:`joinedload()`."""
@@ -280,10 +273,10 @@ contains_alias = public_factory(AliasOption, ".orm.contains_alias")
def __go(lcls):
global __all__
- from .. import util as sa_util
- from . import dynamic
- from . import events
- from . import loading
+ from .. import util as sa_util # noqa
+ from . import dynamic # noqa
+ from . import events # noqa
+ from . import loading # noqa
import inspect as _inspect
__all__ = sorted(
diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py
index 1648c9ae1..b5674d010 100644
--- a/lib/sqlalchemy/orm/attributes.py
+++ b/lib/sqlalchemy/orm/attributes.py
@@ -15,34 +15,38 @@ defines a large part of the ORM's interactivity.
"""
import operator
-from .. import util, event, inspection
-from . import interfaces, collections, exc as orm_exc
-
-from .base import instance_state, instance_dict, manager_of_class
-
-from .base import (
- PASSIVE_NO_RESULT,
- ATTR_WAS_SET,
- ATTR_EMPTY,
- NO_VALUE,
- NEVER_SET,
- NO_CHANGE,
- CALLABLES_OK,
- SQL_OK,
- RELATED_OBJECT_OK,
- INIT_OK,
- NON_PERSISTENT_OK,
- LOAD_AGAINST_COMMITTED,
- PASSIVE_OFF,
- PASSIVE_RETURN_NEVER_SET,
- PASSIVE_NO_INITIALIZE,
- PASSIVE_NO_FETCH,
- PASSIVE_NO_FETCH_RELATED,
- PASSIVE_ONLY_PERSISTENT,
- NO_AUTOFLUSH,
- NO_RAISE,
-)
-from .base import state_str, instance_str
+
+from . import collections
+from . import exc as orm_exc
+from . import interfaces
+from .base import ATTR_EMPTY
+from .base import ATTR_WAS_SET
+from .base import CALLABLES_OK
+from .base import INIT_OK
+from .base import instance_dict
+from .base import instance_state
+from .base import instance_str
+from .base import LOAD_AGAINST_COMMITTED
+from .base import manager_of_class
+from .base import NEVER_SET
+from .base import NO_AUTOFLUSH
+from .base import NO_CHANGE # noqa
+from .base import NO_RAISE
+from .base import NO_VALUE
+from .base import NON_PERSISTENT_OK # noqa
+from .base import PASSIVE_NO_FETCH
+from .base import PASSIVE_NO_FETCH_RELATED # noqa
+from .base import PASSIVE_NO_INITIALIZE
+from .base import PASSIVE_NO_RESULT
+from .base import PASSIVE_OFF
+from .base import PASSIVE_ONLY_PERSISTENT
+from .base import PASSIVE_RETURN_NEVER_SET
+from .base import RELATED_OBJECT_OK # noqa
+from .base import SQL_OK # noqa
+from .base import state_str
+from .. import event
+from .. import inspection
+from .. import util
@inspection._self_inspects
diff --git a/lib/sqlalchemy/orm/base.py b/lib/sqlalchemy/orm/base.py
index abc572d9a..b90a6ca69 100644
--- a/lib/sqlalchemy/orm/base.py
+++ b/lib/sqlalchemy/orm/base.py
@@ -9,11 +9,15 @@
"""
-from .. import util, inspection, exc as sa_exc
-from ..sql import expression
-from . import exc
import operator
+from . import exc
+from .. import exc as sa_exc
+from .. import inspection
+from .. import util
+from ..sql import expression
+
+
PASSIVE_NO_RESULT = util.symbol(
"PASSIVE_NO_RESULT",
"""Symbol returned by a loader callable or other attribute/history
diff --git a/lib/sqlalchemy/orm/collections.py b/lib/sqlalchemy/orm/collections.py
index be9291741..2454f9fae 100644
--- a/lib/sqlalchemy/orm/collections.py
+++ b/lib/sqlalchemy/orm/collections.py
@@ -103,15 +103,15 @@ through the adapter, allowing for some very sophisticated behavior.
"""
-import inspect
import operator
import weakref
-from ..sql import expression
-from .. import util, exc as sa_exc
+from sqlalchemy.util.compat import inspect_getargspec
from . import base
+from .. import exc as sa_exc
+from .. import util
+from ..sql import expression
-from sqlalchemy.util.compat import inspect_getargspec
__all__ = [
"collection",
diff --git a/lib/sqlalchemy/orm/dependency.py b/lib/sqlalchemy/orm/dependency.py
index cba4d2141..ed3653de5 100644
--- a/lib/sqlalchemy/orm/dependency.py
+++ b/lib/sqlalchemy/orm/dependency.py
@@ -9,9 +9,17 @@
"""
-from .. import sql, util, exc as sa_exc
-from . import attributes, exc, sync, unitofwork, util as mapperutil
-from .interfaces import ONETOMANY, MANYTOONE, MANYTOMANY
+from . import attributes
+from . import exc
+from . import sync
+from . import unitofwork
+from . import util as mapperutil
+from .interfaces import MANYTOMANY
+from .interfaces import MANYTOONE
+from .interfaces import ONETOMANY
+from .. import exc as sa_exc
+from .. import sql
+from .. import util
class DependencyProcessor(object):
@@ -1180,9 +1188,9 @@ class ManyToManyDP(DependencyProcessor):
)
result = connection.execute(statement, secondary_delete)
- if result.supports_sane_multi_rowcount() and result.rowcount != len(
- secondary_delete
- ):
+ if (
+ result.supports_sane_multi_rowcount()
+ ) and result.rowcount != len(secondary_delete):
raise exc.StaleDataError(
"DELETE statement on table '%s' expected to delete "
"%d row(s); Only %d were matched."
@@ -1206,9 +1214,9 @@ class ManyToManyDP(DependencyProcessor):
)
result = connection.execute(statement, secondary_update)
- if result.supports_sane_multi_rowcount() and result.rowcount != len(
- secondary_update
- ):
+ if (
+ result.supports_sane_multi_rowcount()
+ ) and result.rowcount != len(secondary_update):
raise exc.StaleDataError(
"UPDATE statement on table '%s' expected to update "
"%d row(s); Only %d were matched."
diff --git a/lib/sqlalchemy/orm/deprecated_interfaces.py b/lib/sqlalchemy/orm/deprecated_interfaces.py
index 6b51404d0..0b99ce85d 100644
--- a/lib/sqlalchemy/orm/deprecated_interfaces.py
+++ b/lib/sqlalchemy/orm/deprecated_interfaces.py
@@ -5,8 +5,9 @@
# This module is part of SQLAlchemy and is released under
# the MIT License: http://www.opensource.org/licenses/mit-license.php
-from .. import event, util
from .interfaces import EXT_CONTINUE
+from .. import event
+from .. import util
@util.langhelpers.dependency_for("sqlalchemy.orm.interfaces")
diff --git a/lib/sqlalchemy/orm/descriptor_props.py b/lib/sqlalchemy/orm/descriptor_props.py
index 37517e84c..0891a2a9d 100644
--- a/lib/sqlalchemy/orm/descriptor_props.py
+++ b/lib/sqlalchemy/orm/descriptor_props.py
@@ -11,13 +11,18 @@ as actively in the load/persist ORM loop.
"""
-from .interfaces import MapperProperty, PropComparator
-from .util import _none_set
from . import attributes
-from .. import util, sql, exc as sa_exc, event, schema
-from ..sql import expression
from . import properties
from . import query
+from .interfaces import MapperProperty
+from .interfaces import PropComparator
+from .util import _none_set
+from .. import event
+from .. import exc as sa_exc
+from .. import schema
+from .. import sql
+from .. import util
+from ..sql import expression
class DescriptorProperty(MapperProperty):
@@ -366,10 +371,10 @@ class CompositeProperty(DescriptorProperty):
return self.comparator_factory(self, mapper)
class CompositeBundle(query.Bundle):
- def __init__(self, property, expr):
- self.property = property
+ def __init__(self, property_, expr):
+ self.property = property_
super(CompositeProperty.CompositeBundle, self).__init__(
- property.key, *expr
+ property_.key, *expr
)
def create_row_processor(self, query, procs, labels):
diff --git a/lib/sqlalchemy/orm/dynamic.py b/lib/sqlalchemy/orm/dynamic.py
index e5c6b80b6..9665e2485 100644
--- a/lib/sqlalchemy/orm/dynamic.py
+++ b/lib/sqlalchemy/orm/dynamic.py
@@ -12,18 +12,17 @@ basic add/delete mutation.
"""
-from .. import log, util, exc
-from ..sql import operators
-from . import (
- attributes,
- object_session,
- util as orm_util,
- strategies,
- object_mapper,
- exc as orm_exc,
- properties,
-)
+from . import attributes
+from . import exc as orm_exc
+from . import object_mapper
+from . import object_session
+from . import properties
+from . import strategies
+from . import util as orm_util
from .query import Query
+from .. import exc
+from .. import log
+from .. import util
@log.class_logger
diff --git a/lib/sqlalchemy/orm/evaluator.py b/lib/sqlalchemy/orm/evaluator.py
index ac031d84f..2de590748 100644
--- a/lib/sqlalchemy/orm/evaluator.py
+++ b/lib/sqlalchemy/orm/evaluator.py
@@ -6,9 +6,10 @@
# the MIT License: http://www.opensource.org/licenses/mit-license.php
import operator
-from ..sql import operators
+
from .. import inspect
from .. import util
+from ..sql import operators
class UnevaluatableError(Exception):
diff --git a/lib/sqlalchemy/orm/events.py b/lib/sqlalchemy/orm/events.py
index c2a2d15ee..7c4cfc3ba 100644
--- a/lib/sqlalchemy/orm/events.py
+++ b/lib/sqlalchemy/orm/events.py
@@ -8,17 +8,21 @@
"""ORM event interfaces.
"""
-from .. import event, exc, util
-from .base import _mapper_or_none
-import inspect
import weakref
+
+from . import instrumentation
from . import interfaces
-from . import mapperlib, instrumentation
-from .session import Session, sessionmaker
-from .scoping import scoped_session
+from . import mapperlib
from .attributes import QueryableAttribute
+from .base import _mapper_or_none
from .query import Query
-from sqlalchemy.util.compat import inspect_getargspec
+from .scoping import scoped_session
+from .session import Session
+from .session import sessionmaker
+from .. import event
+from .. import exc
+from .. import util
+from ..util.compat import inspect_getargspec
class InstrumentationEvents(event.Events):
@@ -1885,7 +1889,7 @@ class SessionEvents(event.Events):
class AttributeEvents(event.Events):
- """Define events for object attributes.
+ r"""Define events for object attributes.
These are typically defined on the class-bound descriptor for the
target class.
diff --git a/lib/sqlalchemy/orm/exc.py b/lib/sqlalchemy/orm/exc.py
index f0aa02e99..a8dcf2642 100644
--- a/lib/sqlalchemy/orm/exc.py
+++ b/lib/sqlalchemy/orm/exc.py
@@ -6,7 +6,9 @@
# the MIT License: http://www.opensource.org/licenses/mit-license.php
"""SQLAlchemy ORM exceptions."""
-from .. import exc as sa_exc, util
+from .. import exc as sa_exc
+from .. import util
+
NO_STATE = (AttributeError, KeyError)
"""Exception types that may be raised by instrumentation implementations."""
diff --git a/lib/sqlalchemy/orm/identity.py b/lib/sqlalchemy/orm/identity.py
index 2487cdb23..8152c9884 100644
--- a/lib/sqlalchemy/orm/identity.py
+++ b/lib/sqlalchemy/orm/identity.py
@@ -6,10 +6,11 @@
# the MIT License: http://www.opensource.org/licenses/mit-license.php
import weakref
+
from . import attributes
-from .. import util
-from .. import exc as sa_exc
from . import util as orm_util
+from .. import exc as sa_exc
+from .. import util
class IdentityMap(object):
@@ -32,7 +33,7 @@ class IdentityMap(object):
in the map"""
self.add(state)
- def update(self, dict):
+ def update(self, dict_):
raise NotImplementedError("IdentityMap uses add() to insert data")
def clear(self):
diff --git a/lib/sqlalchemy/orm/instrumentation.py b/lib/sqlalchemy/orm/instrumentation.py
index fa29c3233..a0fe25357 100644
--- a/lib/sqlalchemy/orm/instrumentation.py
+++ b/lib/sqlalchemy/orm/instrumentation.py
@@ -30,9 +30,12 @@ alternate instrumentation forms.
"""
-from . import exc, collections, interfaces, state
-from .. import util
from . import base
+from . import collections
+from . import exc
+from . import interfaces
+from . import state
+from .. import util
_memoized_key_collection = util.group_expirable_memoized_property()
@@ -69,8 +72,8 @@ class ClassManager(dict):
if mgr is not None
]
- for base in self._bases:
- self.update(base)
+ for base_ in self._bases:
+ self.update(base_)
self.dispatch._events._new_classmanager_instance(class_, self)
# events._InstanceEventsHold.populate(class_, self)
diff --git a/lib/sqlalchemy/orm/interfaces.py b/lib/sqlalchemy/orm/interfaces.py
index d7e70c5d7..5df310db2 100644
--- a/lib/sqlalchemy/orm/interfaces.py
+++ b/lib/sqlalchemy/orm/interfaces.py
@@ -20,21 +20,23 @@ are exposed when inspecting mappings.
from __future__ import absolute_import
-from .. import util
-from ..sql import operators
-from .base import (
- ONETOMANY,
- MANYTOONE,
- MANYTOMANY,
- EXT_CONTINUE,
- EXT_STOP,
- EXT_SKIP,
- NOT_EXTENSION,
-)
-from .base import InspectionAttr, InspectionAttrInfo, _MappedAttribute
import collections
-from .. import inspect
+
from . import path_registry
+from .base import _MappedAttribute # noqa
+from .base import EXT_CONTINUE
+from .base import EXT_SKIP
+from .base import EXT_STOP
+from .base import InspectionAttr # noqa
+from .base import InspectionAttrInfo # noqa
+from .base import MANYTOMANY
+from .base import MANYTOONE
+from .base import NOT_EXTENSION
+from .base import ONETOMANY
+from .. import inspect
+from .. import util
+from ..sql import operators
+
# imported later
MapperExtension = SessionExtension = AttributeExtension = None
diff --git a/lib/sqlalchemy/orm/loading.py b/lib/sqlalchemy/orm/loading.py
index 96eddcb32..3662bbe51 100644
--- a/lib/sqlalchemy/orm/loading.py
+++ b/lib/sqlalchemy/orm/loading.py
@@ -14,17 +14,20 @@ as well as some of the attribute loading strategies.
"""
from __future__ import absolute_import
+import collections
+
+from . import attributes
+from . import exc as orm_exc
+from . import path_registry
+from . import strategy_options
+from .base import _DEFER_FOR_STATE
+from .base import _SET_DEFERRED_EXPIRED
+from .util import _none_set
+from .util import state_str
+from .. import exc as sa_exc
from .. import util
-from . import attributes, exc as orm_exc
from ..sql import util as sql_util
-from . import strategy_options
-from . import path_registry
-from .. import sql
-from .util import _none_set, state_str
-from .base import _SET_DEFERRED_EXPIRED, _DEFER_FOR_STATE
-from .. import exc as sa_exc
-import collections
_new_runid = util.counter()
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index ea8890788..c0a53694a 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -16,34 +16,39 @@ available in :class:`~sqlalchemy.orm.`.
"""
from __future__ import absolute_import
+from collections import deque
+from itertools import chain
+import sys
import types
import weakref
-from itertools import chain
-from collections import deque
-from .. import sql, util, log, exc as sa_exc, event, schema, inspection
-from ..sql import expression, visitors, operators, util as sql_util
-from . import instrumentation, attributes, exc as orm_exc, loading
+from . import attributes
+from . import exc as orm_exc
+from . import instrumentation
+from . import loading
from . import properties
from . import util as orm_util
-from .interfaces import (
- MapperProperty,
- InspectionAttr,
- _MappedAttribute,
- EXT_SKIP,
-)
-
-
-from .base import (
- _class_to_mapper,
- _state_mapper,
- class_mapper,
- state_str,
- _INSTRUMENTOR,
-)
+from .base import _class_to_mapper
+from .base import _INSTRUMENTOR
+from .base import _state_mapper
+from .base import class_mapper
+from .base import state_str
+from .interfaces import _MappedAttribute
+from .interfaces import EXT_SKIP
+from .interfaces import InspectionAttr
+from .interfaces import MapperProperty
from .path_registry import PathRegistry
-
-import sys
+from .. import event
+from .. import exc as sa_exc
+from .. import inspection
+from .. import log
+from .. import schema
+from .. import sql
+from .. import util
+from ..sql import expression
+from ..sql import operators
+from ..sql import util as sql_util
+from ..sql import visitors
_mapper_registry = weakref.WeakKeyDictionary()
@@ -1087,7 +1092,7 @@ class Mapper(InspectionAttr):
self.polymorphic_map[self.polymorphic_identity] = self
if self.polymorphic_load and self.concrete:
- raise exc.ArgumentError(
+ raise sa_exc.ArgumentError(
"polymorphic_load is not currently supported "
"with concrete table inheritance"
)
@@ -1615,9 +1620,9 @@ class Mapper(InspectionAttr):
if self.mapped_table is mapper.mapped_table:
self.polymorphic_on = mapper.polymorphic_on
else:
- self.polymorphic_on = self.mapped_table.corresponding_column(
- mapper.polymorphic_on
- )
+ self.polymorphic_on = (
+ self.mapped_table.corresponding_column
+ )(mapper.polymorphic_on)
# we can use the parent mapper's _set_polymorphic_identity
# directly; it ensures the polymorphic_identity of the
# instance's mapper is used so is portable to subclasses.
@@ -2485,7 +2490,7 @@ class Mapper(InspectionAttr):
@_memoized_configured_property
def _equivalent_columns(self):
- """Create a map of all *equivalent* columns, based on
+ """Create a map of all equivalent columns, based on
the determination of column pairs that are equated to
one another based on inherit condition. This is designed
to work with the queries that util.polymorphic_union
@@ -2494,14 +2499,14 @@ class Mapper(InspectionAttr):
only).
The resulting structure is a dictionary of columns mapped
- to lists of equivalent columns, i.e.
+ to lists of equivalent columns, e.g.::
- {
- tablea.col1:
- {tableb.col1, tablec.col1},
- tablea.col2:
- {tabled.col2}
- }
+ {
+ tablea.col1:
+ {tableb.col1, tablec.col1},
+ tablea.col2:
+ {tabled.col2}
+ }
"""
result = util.column_dict()
@@ -3026,10 +3031,18 @@ class Mapper(InspectionAttr):
if queue:
visitables.append((queue, mpp, None, None))
elif item_type is mpp:
- instance, instance_mapper, corresponding_state, corresponding_dict = (
- iterator.popleft()
+ (
+ instance,
+ instance_mapper,
+ corresponding_state,
+ corresponding_dict,
+ ) = iterator.popleft()
+ yield (
+ instance,
+ instance_mapper,
+ corresponding_state,
+ corresponding_dict,
)
- yield instance, instance_mapper, corresponding_state, corresponding_dict
visitables.append(
(
deque(instance_mapper._props.values()),
diff --git a/lib/sqlalchemy/orm/path_registry.py b/lib/sqlalchemy/orm/path_registry.py
index f33c209cc..97f15d9f6 100644
--- a/lib/sqlalchemy/orm/path_registry.py
+++ b/lib/sqlalchemy/orm/path_registry.py
@@ -8,13 +8,15 @@
"""
-from .. import inspection
-from .. import util
-from .. import exc
from itertools import chain
-from .base import class_mapper
import logging
+from .base import class_mapper
+from .. import exc
+from .. import inspection
+from .. import util
+
+
log = logging.getLogger(__name__)
diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py
index dc86a60e5..9e96cda42 100644
--- a/lib/sqlalchemy/orm/persistence.py
+++ b/lib/sqlalchemy/orm/persistence.py
@@ -14,14 +14,22 @@ in unitofwork.py.
"""
+from itertools import chain
+from itertools import groupby
import operator
-from itertools import groupby, chain
-from .. import sql, util, exc as sa_exc
-from . import attributes, sync, exc as orm_exc, evaluator
-from .base import state_str, _entity_descriptor
+
+from . import attributes
+from . import evaluator
+from . import exc as orm_exc
+from . import loading
+from . import sync
+from .base import _entity_descriptor
+from .base import state_str
+from .. import exc as sa_exc
+from .. import sql
+from .. import util
from ..sql import expression
from ..sql.base import _from_objects
-from . import loading
def _bulk_insert(
@@ -67,7 +75,16 @@ def _bulk_insert(
has_all_pks,
has_all_defaults,
)
- for state, state_dict, params, mp, conn, value_params, has_all_pks, has_all_defaults in _collect_insert_commands(
+ for (
+ state,
+ state_dict,
+ params,
+ mp,
+ conn,
+ value_params,
+ has_all_pks,
+ has_all_defaults,
+ ) in _collect_insert_commands(
table,
((None, mapping, mapper, connection) for mapping in mappings),
bulk=True,
@@ -234,11 +251,17 @@ def save_obj(base_mapper, states, uowtransaction, single=False):
chain(
(
(state, state_dict, mapper, connection, False)
- for state, state_dict, mapper, connection in states_to_insert
+ for (state, state_dict, mapper, connection) in states_to_insert
),
(
(state, state_dict, mapper, connection, True)
- for state, state_dict, mapper, connection, update_version_id in states_to_update
+ for (
+ state,
+ state_dict,
+ mapper,
+ connection,
+ update_version_id,
+ ) in states_to_update
),
),
)
@@ -609,9 +632,9 @@ def _collect_update_commands(
params[col.key] = value
if mapper.base_mapper.eager_defaults:
- has_all_defaults = mapper._server_onupdate_default_cols[
- table
- ].issubset(params)
+ has_all_defaults = (
+ mapper._server_onupdate_default_cols[table]
+ ).issubset(params)
else:
has_all_defaults = True
diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py
index a39cd8703..3ea68a913 100644
--- a/lib/sqlalchemy/orm/properties.py
+++ b/lib/sqlalchemy/orm/properties.py
@@ -13,12 +13,14 @@ mapped attributes.
"""
from __future__ import absolute_import
-from .. import util, log
-from ..sql import expression
from . import attributes
+from .interfaces import PropComparator
+from .interfaces import StrategizedProperty
from .util import _orm_full_deannotate
+from .. import log
+from .. import util
+from ..sql import expression
-from .interfaces import PropComparator, StrategizedProperty
__all__ = ["ColumnProperty"]
@@ -213,9 +215,9 @@ class ColumnProperty(StrategizedProperty):
util.warn(
(
"On mapper %s, primary key column '%s' is being combined "
- "with distinct primary key column '%s' in attribute '%s'. "
- "Use explicit properties to give each column its own mapped "
- "attribute name."
+ "with distinct primary key column '%s' in attribute '%s'. "
+ "Use explicit properties to give each column its own "
+ "mapped attribute name."
)
% (self.parent, self.columns[1], self.columns[0], self.key)
)
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index 4a55a3247..a4dddcd23 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -21,36 +21,39 @@ database to return iterable result sets.
from itertools import chain
-from . import (
- attributes,
- interfaces,
- object_mapper,
- persistence,
- exc as orm_exc,
- loading,
-)
-from .base import (
- _entity_descriptor,
- _is_aliased_class,
- _is_mapped_class,
- _orm_columns,
- _generative,
- InspectionAttr,
-)
+from . import attributes
+from . import exc as orm_exc
+from . import interfaces
+from . import loading
+from . import persistence
+from . import properties
+from .base import _entity_descriptor
+from .base import _generative
+from .base import _is_aliased_class
+from .base import _is_mapped_class
+from .base import _orm_columns
+from .base import InspectionAttr
from .path_registry import PathRegistry
-from .util import (
- AliasedClass,
- ORMAdapter,
- join as orm_join,
- with_parent,
- aliased,
- _entity_corresponds_to,
-)
-from .. import sql, util, log, exc as sa_exc, inspect, inspection
-from ..sql.expression import _interpret_as_from
-from ..sql import util as sql_util, expression, visitors
+from .util import _entity_corresponds_to
+from .util import aliased
+from .util import AliasedClass
+from .util import join as orm_join
+from .util import object_mapper
+from .util import ORMAdapter
+from .util import with_parent
+from .. import exc as sa_exc
+from .. import inspect
+from .. import inspection
+from .. import log
+from .. import sql
+from .. import util
+from ..sql import expression
+from ..sql import util as sql_util
+from ..sql import visitors
from ..sql.base import ColumnCollection
-from . import properties
+from ..sql.expression import _interpret_as_from
+from ..sql.selectable import ForUpdateArg
+
__all__ = ["Query", "QueryContext", "aliased"]
@@ -1103,7 +1106,7 @@ class Query(object):
"""
self._invoke_all_eagers = value
- def with_parent(self, instance, property=None, from_entity=None):
+ def with_parent(self, instance, property=None, from_entity=None): # noqa
"""Add filtering criterion that relates the given instance
to a child object or collection, using its attribute state
as well as an established :func:`.relationship()`
@@ -1143,7 +1146,7 @@ class Query(object):
isinstance(prop, properties.RelationshipProperty)
and prop.mapper is entity_zero.mapper
):
- property = prop
+ property = prop # noqa
break
else:
raise sa_exc.InvalidRequestError(
@@ -2397,17 +2400,20 @@ class Query(object):
# figure out the best "left" side based on our existing froms /
# entities
assert prop is None
- left, replace_from_obj_index, use_entity_index = self._join_determine_implicit_left_side(
- left, right, onclause
- )
+ (
+ left,
+ replace_from_obj_index,
+ use_entity_index,
+ ) = self._join_determine_implicit_left_side(left, right, onclause)
else:
# left is given via a relationship/name. Determine where in our
# "froms" list it should be spliced/appended as well as what
# existing entity it corresponds to.
assert prop is not None
- replace_from_obj_index, use_entity_index = self._join_place_explicit_left_side(
- left
- )
+ (
+ replace_from_obj_index,
+ use_entity_index,
+ ) = self._join_place_explicit_left_side(left)
# this should never happen because we would not have found a place
# to join on
@@ -3153,7 +3159,8 @@ class Query(object):
(note this may consist of multiple result rows if join-loaded
collections are present).
- Calling :meth:`.Query.first` results in an execution of the underlying query.
+ Calling :meth:`.Query.first` results in an execution of the underlying
+ query.
.. seealso::
@@ -3665,7 +3672,8 @@ class Query(object):
values or sql expressions as values. If :ref:`parameter-ordered
mode <updates_order_parameters>` is desired, the values can be
passed as a list of 2-tuples;
- this requires that the :paramref:`~sqlalchemy.sql.expression.update.preserve_parameter_order`
+ this requires that the
+ :paramref:`~sqlalchemy.sql.expression.update.preserve_parameter_order`
flag is passed to the :paramref:`.Query.update.update_args` dictionary
as well.
@@ -3905,9 +3913,9 @@ class Query(object):
context.order_by = None
if self._distinct is True and context.order_by:
- context.primary_columns += sql_util.expand_column_list_from_order_by(
- context.primary_columns, context.order_by
- )
+ context.primary_columns += (
+ sql_util.expand_column_list_from_order_by
+ )(context.primary_columns, context.order_by)
context.froms += tuple(context.eager_joins.values())
statement = sql.select(
@@ -3966,9 +3974,6 @@ class Query(object):
)
-from ..sql.selectable import ForUpdateArg
-
-
class LockmodeArg(ForUpdateArg):
@classmethod
def parse_legacy_query(self, mode):
diff --git a/lib/sqlalchemy/orm/relationships.py b/lib/sqlalchemy/orm/relationships.py
index e89d1542f..27a8c4ca9 100644
--- a/lib/sqlalchemy/orm/relationships.py
+++ b/lib/sqlalchemy/orm/relationships.py
@@ -14,34 +14,38 @@ and `secondaryjoin` aspects of :func:`.relationship`.
"""
from __future__ import absolute_import
-from .. import sql, util, exc as sa_exc, schema, log
+import collections
import weakref
-from .util import CascadeOptions, _orm_annotate, _orm_deannotate
-from . import dependency
+
from . import attributes
-from ..sql.util import (
- ClauseAdapter,
- join_condition,
- _shallow_annotate,
- visit_binary_product,
- _deep_deannotate,
- selectables_overlap,
- adapt_criterion_to_null,
-)
+from . import dependency
+from . import mapper as mapperlib
from .base import state_str
-
-from ..sql import operators, expression, visitors
-from .interfaces import (
- MANYTOMANY,
- MANYTOONE,
- ONETOMANY,
- StrategizedProperty,
- PropComparator,
-)
+from .interfaces import MANYTOMANY
+from .interfaces import MANYTOONE
+from .interfaces import ONETOMANY
+from .interfaces import PropComparator
+from .interfaces import StrategizedProperty
+from .util import _orm_annotate
+from .util import _orm_deannotate
+from .util import CascadeOptions
+from .. import exc as sa_exc
+from .. import log
+from .. import schema
+from .. import sql
+from .. import util
from ..inspection import inspect
-from . import mapper as mapperlib
-import collections
+from ..sql import expression
+from ..sql import operators
+from ..sql import visitors
+from ..sql.util import _deep_deannotate
+from ..sql.util import _shallow_annotate
+from ..sql.util import adapt_criterion_to_null
+from ..sql.util import ClauseAdapter
+from ..sql.util import join_condition
+from ..sql.util import selectables_overlap
+from ..sql.util import visit_binary_product
def remote(expr):
@@ -88,7 +92,7 @@ def foreign(expr):
@log.class_logger
-@util.langhelpers.dependency_for("sqlalchemy.orm.properties")
+@util.langhelpers.dependency_for("sqlalchemy.orm.properties", add_to_all=True)
class RelationshipProperty(StrategizedProperty):
"""Describes an object property that holds a single item or list
of items that correspond to a related database table.
@@ -596,8 +600,8 @@ class RelationshipProperty(StrategizedProperty):
.. seealso::
- :doc:`/orm/loading_relationships` - Full documentation on relationship loader
- configuration.
+ :doc:`/orm/loading_relationships` - Full documentation on
+ relationship loader configuration.
:ref:`dynamic_relationship` - detail on the ``dynamic`` option.
@@ -991,7 +995,14 @@ class RelationshipProperty(StrategizedProperty):
else:
of_type = None
- pj, sj, source, dest, secondary, target_adapter = self.property._create_joins(
+ (
+ pj,
+ sj,
+ source,
+ dest,
+ secondary,
+ target_adapter,
+ ) = self.property._create_joins(
source_selectable=adapt_from,
source_polymorphic=True,
of_type=of_type,
@@ -1112,7 +1123,14 @@ class RelationshipProperty(StrategizedProperty):
else:
source_selectable = None
- pj, sj, source, dest, secondary, target_adapter = self.property._create_joins(
+ (
+ pj,
+ sj,
+ source,
+ dest,
+ secondary,
+ target_adapter,
+ ) = self.property._create_joins(
dest_polymorphic=True,
dest_selectable=to_selectable,
source_selectable=source_selectable,
@@ -1508,7 +1526,7 @@ class RelationshipProperty(StrategizedProperty):
Above, the SQL should be "address.user_id = 5". The callable
returned by this method produces the value "5" based on the identity
- of ``u1`.
+ of ``u1``.
"""
@@ -2108,9 +2126,9 @@ class RelationshipProperty(StrategizedProperty):
if self.uselist is None:
self.uselist = self.direction is not MANYTOONE
if not self.viewonly:
- self._dependency_processor = dependency.DependencyProcessor.from_relationship(
- self
- )
+ self._dependency_processor = (
+ dependency.DependencyProcessor.from_relationship
+ )(self)
@util.memoized_property
def _use_get(self):
@@ -2155,7 +2173,13 @@ class RelationshipProperty(StrategizedProperty):
single_crit = dest_mapper._single_table_criterion
aliased = aliased or (source_selectable is not None)
- primaryjoin, secondaryjoin, secondary, target_adapter, dest_selectable = self._join_condition.join_targets(
+ (
+ primaryjoin,
+ secondaryjoin,
+ secondary,
+ target_adapter,
+ dest_selectable,
+ ) = self._join_condition.join_targets(
source_selectable, dest_selectable, aliased, single_crit
)
if source_selectable is None:
diff --git a/lib/sqlalchemy/orm/scoping.py b/lib/sqlalchemy/orm/scoping.py
index 2eeaf5b6d..fea0b1de8 100644
--- a/lib/sqlalchemy/orm/scoping.py
+++ b/lib/sqlalchemy/orm/scoping.py
@@ -5,10 +5,13 @@
# This module is part of SQLAlchemy and is released under
# the MIT License: http://www.opensource.org/licenses/mit-license.php
-from .. import exc as sa_exc
-from ..util import ScopedRegistry, ThreadLocalRegistry, warn
-from . import class_mapper, exc as orm_exc
+from . import class_mapper
+from . import exc as orm_exc
from .session import Session
+from .. import exc as sa_exc
+from ..util import ScopedRegistry
+from ..util import ThreadLocalRegistry
+from ..util import warn
__all__ = ["scoped_session"]
@@ -166,13 +169,13 @@ for meth in Session.public_methods:
def makeprop(name):
- def set(self, attr):
+ def set_(self, attr):
setattr(self.registry(), name, attr)
def get(self):
return getattr(self.registry(), name)
- return property(get, set)
+ return property(get, set_)
for prop in (
diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py
index a3edacc19..d226edf81 100644
--- a/lib/sqlalchemy/orm/session.py
+++ b/lib/sqlalchemy/orm/session.py
@@ -7,26 +7,34 @@
"""Provides the Session class and related utilities."""
-import weakref
-from .. import util, sql, engine, exc as sa_exc
-from ..sql import util as sql_util, expression
-from . import SessionExtension, attributes, exc, query, loading, identity
-from ..inspection import inspect
-from .base import (
- object_mapper,
- class_mapper,
- _class_to_mapper,
- _state_mapper,
- object_state,
- _none_set,
- state_str,
- instance_str,
-)
import itertools
+import sys
+import weakref
+
+from . import attributes
+from . import exc
+from . import identity
+from . import loading
from . import persistence
-from .unitofwork import UOWTransaction
+from . import query
from . import state as statelib
-import sys
+from .base import _class_to_mapper
+from .base import _none_set
+from .base import _state_mapper
+from .base import instance_str
+from .base import object_mapper
+from .base import object_state
+from .base import state_str
+from .deprecated_interfaces import SessionExtension
+from .unitofwork import UOWTransaction
+from .. import engine
+from .. import exc as sa_exc
+from .. import sql
+from .. import util
+from ..inspection import inspect
+from ..sql import expression
+from ..sql import util as sql_util
+
__all__ = ["Session", "SessionTransaction", "SessionExtension", "sessionmaker"]
@@ -578,11 +586,11 @@ class SessionTransaction(object):
def __enter__(self):
return self
- def __exit__(self, type, value, traceback):
+ def __exit__(self, type_, value, traceback):
self._assert_active(deactive_ok=True, prepared_ok=True)
if self.session.transaction is None:
return
- if type is None:
+ if type_ is None:
try:
self.commit()
except:
@@ -888,9 +896,10 @@ class Session(_SessionClassMethods):
:param subtransactions: if True, indicates that this
:meth:`~.Session.begin` can create a "subtransaction".
- :param nested: if True, begins a SAVEPOINT transaction and is equivalent
- to calling :meth:`~.Session.begin_nested`. For documentation on
- SAVEPOINT transactions, please see :ref:`session_begin_nested`.
+ :param nested: if True, begins a SAVEPOINT transaction and is
+ equivalent to calling :meth:`~.Session.begin_nested`. For
+ documentation on SAVEPOINT transactions, please see
+ :ref:`session_begin_nested`.
:return: the :class:`.SessionTransaction` object. Note that
:class:`.SessionTransaction`
diff --git a/lib/sqlalchemy/orm/state.py b/lib/sqlalchemy/orm/state.py
index c36d8817b..6e539a3be 100644
--- a/lib/sqlalchemy/orm/state.py
+++ b/lib/sqlalchemy/orm/state.py
@@ -13,22 +13,22 @@ defines a large part of the ORM's interactivity.
"""
import weakref
-from .. import util
-from .. import inspection
-from .. import exc as sa_exc
-from . import exc as orm_exc, interfaces
-from .path_registry import PathRegistry
-from .base import (
- PASSIVE_NO_RESULT,
- SQL_OK,
- NEVER_SET,
- ATTR_WAS_SET,
- NO_VALUE,
- PASSIVE_NO_INITIALIZE,
- INIT_OK,
- PASSIVE_OFF,
-)
+
from . import base
+from . import exc as orm_exc
+from . import interfaces
+from .base import ATTR_WAS_SET
+from .base import INIT_OK
+from .base import NEVER_SET
+from .base import NO_VALUE
+from .base import PASSIVE_NO_INITIALIZE
+from .base import PASSIVE_NO_RESULT
+from .base import PASSIVE_OFF
+from .base import SQL_OK
+from .path_registry import PathRegistry
+from .. import exc as sa_exc
+from .. import inspection
+from .. import util
@inspection._self_inspects
@@ -157,8 +157,9 @@ class InstanceState(interfaces.InspectionAttrInfo):
"detached" states; once the object is :term:`detached`, the
:attr:`.InstanceState.deleted` attribute **no longer returns
True**; in order to detect that a state was deleted, regardless
- of whether or not the object is associated with a :class:`.Session`,
- use the :attr:`.InstanceState.was_deleted` accessor.
+ of whether or not the object is associated with a
+ :class:`.Session`, use the :attr:`.InstanceState.was_deleted`
+ accessor.
.. versionadded: 1.1
@@ -815,10 +816,10 @@ class InstanceState(interfaces.InspectionAttrInfo):
self._commit_all_states([(self, dict_)], instance_dict)
@classmethod
- def _commit_all_states(self, iter, instance_dict=None):
+ def _commit_all_states(self, iter_, instance_dict=None):
"""Mass / highly inlined version of commit_all()."""
- for state, dict_ in iter:
+ for state, dict_ in iter_:
state_dict = state.__dict__
state.committed_state.clear()
diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py
index 5c972b26b..afa91d876 100644
--- a/lib/sqlalchemy/orm/strategies.py
+++ b/lib/sqlalchemy/orm/strategies.py
@@ -8,26 +8,32 @@
"""sqlalchemy.orm.interfaces.LoaderStrategy
implementations, and related MapperOptions."""
-from .. import exc as sa_exc, inspect
-from .. import util, log, event
-from ..sql import util as sql_util, visitors
-from .. import sql
-from . import (
- attributes,
- interfaces,
- exc as orm_exc,
- loading,
- unitofwork,
- util as orm_util,
- query,
-)
-from .state import InstanceState
-from .util import _none_set, aliased
+import itertools
+
+from . import attributes
+from . import exc as orm_exc
+from . import interfaces
+from . import loading
from . import properties
-from .interfaces import LoaderStrategy, StrategizedProperty
-from .base import _SET_DEFERRED_EXPIRED, _DEFER_FOR_STATE
+from . import query
+from . import unitofwork
+from . import util as orm_util
+from .base import _DEFER_FOR_STATE
+from .base import _SET_DEFERRED_EXPIRED
+from .interfaces import LoaderStrategy
+from .interfaces import StrategizedProperty
from .session import _state_session
-import itertools
+from .state import InstanceState
+from .util import _none_set
+from .util import aliased
+from .. import event
+from .. import exc as sa_exc
+from .. import inspect
+from .. import log
+from .. import sql
+from .. import util
+from ..sql import util as sql_util
+from ..sql import visitors
def _register_attribute(
@@ -524,9 +530,11 @@ class LazyLoader(AbstractRelationshipLoader, util.MemoizedSlots):
join_condition.create_lazy_clause()
)
- self._rev_lazywhere, self._rev_bind_to_col, self._rev_equated_columns = join_condition.create_lazy_clause(
- reverse_direction=True
- )
+ (
+ self._rev_lazywhere,
+ self._rev_bind_to_col,
+ self._rev_equated_columns,
+ ) = join_condition.create_lazy_clause(reverse_direction=True)
self.logger.info("%s lazy loading clause %s", self, self._lazywhere)
@@ -875,9 +883,9 @@ class LazyLoader(AbstractRelationshipLoader, util.MemoizedSlots):
# "lazyload" option on a "no load"
# attribute - "eager" attributes always have a
# class-level lazyloader installed.
- set_lazy_callable = InstanceState._instance_level_callable_processor(
- mapper.class_manager, LoadLazyAttribute(key, self), key
- )
+ set_lazy_callable = (
+ InstanceState._instance_level_callable_processor
+ )(mapper.class_manager, LoadLazyAttribute(key, self), key)
populators["new"].append((self.key, set_lazy_callable))
elif context.populate_existing or mapper.always_refresh:
@@ -1008,9 +1016,11 @@ class SubqueryLoader(AbstractRelationshipLoader):
elif subq_path.contains_mapper(self.mapper):
return
- leftmost_mapper, leftmost_attr, leftmost_relationship = self._get_leftmost(
- subq_path
- )
+ (
+ leftmost_mapper,
+ leftmost_attr,
+ leftmost_relationship,
+ ) = self._get_leftmost(subq_path)
orig_query = context.attributes.get(
("orig_query", SubqueryLoader), context.query
@@ -1439,7 +1449,11 @@ class JoinedLoader(AbstractRelationshipLoader):
)
if user_defined_adapter is not False:
- clauses, adapter, add_to_collection = self._setup_query_on_user_defined_adapter(
+ (
+ clauses,
+ adapter,
+ add_to_collection,
+ ) = self._setup_query_on_user_defined_adapter(
context, entity, path, adapter, user_defined_adapter
)
else:
@@ -1452,7 +1466,12 @@ class JoinedLoader(AbstractRelationshipLoader):
elif path.contains_mapper(self.mapper):
return
- clauses, adapter, add_to_collection, chained_from_outerjoin = self._generate_row_adapter(
+ (
+ clauses,
+ adapter,
+ add_to_collection,
+ chained_from_outerjoin,
+ ) = self._generate_row_adapter(
context,
entity,
path,
@@ -1795,9 +1814,9 @@ class JoinedLoader(AbstractRelationshipLoader):
context.primary_columns.append(col)
if self.parent_property.order_by:
- context.eager_order_by += eagerjoin._target_adapter.copy_and_process(
- util.to_list(self.parent_property.order_by)
- )
+ context.eager_order_by += (
+ eagerjoin._target_adapter.copy_and_process
+ )(util.to_list(self.parent_property.order_by))
def _splice_nested_inner_join(
self, path, join_obj, clauses, onclause, splicing=False
@@ -2228,10 +2247,12 @@ class SelectInLoader(AbstractRelationshipLoader, util.MemoizedSlots):
# imitate the same method that subquery eager loading uses,
# looking for the adapted "secondary" table
eagerjoin = q._from_obj[0]
- eager_order_by = eagerjoin._target_adapter.copy_and_process(
- util.to_list(self.parent_property.order_by)
+
+ return q.order_by(
+ *eagerjoin._target_adapter.copy_and_process(
+ util.to_list(self.parent_property.order_by)
+ )
)
- return q.order_by(*eager_order_by)
q.add_criteria(_setup_outermost_orderby)
diff --git a/lib/sqlalchemy/orm/strategy_options.py b/lib/sqlalchemy/orm/strategy_options.py
index b2f6bcb11..2d0716991 100644
--- a/lib/sqlalchemy/orm/strategy_options.py
+++ b/lib/sqlalchemy/orm/strategy_options.py
@@ -8,24 +8,25 @@
"""
-from .interfaces import MapperOption, PropComparator, MapperProperty
+from . import util as orm_util
from .attributes import QueryableAttribute
+from .base import _class_to_mapper
+from .base import _is_aliased_class
+from .base import _is_mapped_class
+from .base import InspectionAttr
+from .interfaces import MapperOption
+from .interfaces import PropComparator
+from .path_registry import _DEFAULT_TOKEN
+from .path_registry import _WILDCARD_TOKEN
+from .path_registry import PathRegistry
+from .path_registry import TokenRegistry
+from .util import _orm_full_deannotate
+from .. import exc as sa_exc
+from .. import inspect
from .. import util
-from ..sql.base import _generative, Generative
-from .. import exc as sa_exc, inspect
-from .base import (
- _is_aliased_class,
- _class_to_mapper,
- _is_mapped_class,
- InspectionAttr,
-)
-from . import util as orm_util
-from .path_registry import (
- PathRegistry,
- TokenRegistry,
- _WILDCARD_TOKEN,
- _DEFAULT_TOKEN,
-)
+from ..sql import expression as sql_expr
+from ..sql.base import _generative
+from ..sql.base import Generative
class Load(Generative, MapperOption):
@@ -1454,10 +1455,6 @@ def undefer_group(name):
return _UnboundLoad().undefer_group(name)
-from ..sql import expression as sql_expr
-from .util import _orm_full_deannotate
-
-
@loader_option()
def with_expression(loadopt, key, expression):
r"""Apply an ad-hoc SQL expression to a "deferred expression" attribute.
diff --git a/lib/sqlalchemy/orm/sync.py b/lib/sqlalchemy/orm/sync.py
index 0cd488cbd..2134b6dbf 100644
--- a/lib/sqlalchemy/orm/sync.py
+++ b/lib/sqlalchemy/orm/sync.py
@@ -10,7 +10,9 @@ between instances based on join conditions.
"""
-from . import exc, util as orm_util, attributes
+from . import attributes
+from . import exc
+from . import util as orm_util
def populate(
diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py
index 545811bb4..0d1dae8fc 100644
--- a/lib/sqlalchemy/orm/unitofwork.py
+++ b/lib/sqlalchemy/orm/unitofwork.py
@@ -13,11 +13,13 @@ organizes them in order of dependency, and executes.
"""
-from .. import util, event
-from ..util import topological
-from . import attributes, persistence, util as orm_util
+from . import attributes
from . import exc as orm_exc
-import itertools
+from . import persistence
+from . import util as orm_util
+from .. import event
+from .. import util
+from ..util import topological
def track_cascade_events(descriptor, prop):
diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py
index a1b0cd5da..4a1e18c1a 100644
--- a/lib/sqlalchemy/orm/util.py
+++ b/lib/sqlalchemy/orm/util.py
@@ -6,26 +6,32 @@
# the MIT License: http://www.opensource.org/licenses/mit-license.php
-from .. import sql, util, event, exc as sa_exc, inspection
-from ..sql import expression, util as sql_util, operators
-from .interfaces import PropComparator, MapperProperty
-from . import attributes
import re
-from .base import (
- instance_str,
- state_str,
- state_class_str,
- attribute_str,
- state_attribute_str,
- object_mapper,
- object_state,
- _none_set,
- _never_set,
-)
-from .base import class_mapper, _class_to_mapper
-from .base import InspectionAttr
-from .path_registry import PathRegistry
+from . import attributes # noqa
+from .base import _class_to_mapper # noqa
+from .base import _never_set # noqa
+from .base import _none_set # noqa
+from .base import attribute_str # noqa
+from .base import class_mapper # noqa
+from .base import InspectionAttr # noqa
+from .base import instance_str # noqa
+from .base import object_mapper # noqa
+from .base import object_state # noqa
+from .base import state_attribute_str # noqa
+from .base import state_class_str # noqa
+from .base import state_str # noqa
+from .interfaces import MapperProperty # noqa
+from .interfaces import PropComparator # noqa
+from .path_registry import PathRegistry # noqa
+from .. import event
+from .. import exc as sa_exc
+from .. import inspection
+from .. import sql
+from .. import util
+from ..sql import expression
+from ..sql import util as sql_util
+
all_cascades = frozenset(
(
@@ -221,14 +227,14 @@ def polymorphic_union(
return sql.type_coerce(sql.null(), types[name]).label(name)
result = []
- for type, table in table_map.items():
+ for type_, table in table_map.items():
if typecolname is not None:
result.append(
sql.select(
[col(name, table) for name in colnames]
+ [
sql.literal_column(
- sql_util._quote_ddl_expr(type)
+ sql_util._quote_ddl_expr(type_)
).label(typecolname)
],
from_obj=[table],
@@ -261,7 +267,7 @@ def identity_key(*args, **kwargs):
:param class: mapped class (must be a positional argument)
:param ident: primary key, may be a scalar or tuple argument.
- ;param identity_token: optional identity token
+ :param identity_token: optional identity token
.. versionadded:: 1.2 added identity_token
@@ -301,7 +307,7 @@ first()
:param class: mapped class (must be a positional argument)
:param row: :class:`.RowProxy` row returned by a :class:`.ResultProxy`
(must be given as a keyword arg)
- ;param identity_token: optional identity token
+ :param identity_token: optional identity token
.. versionadded:: 1.2 added identity_token
@@ -957,7 +963,14 @@ class _ORMJoin(expression.Join):
else:
adapt_from = left_info.selectable
- pj, sj, source, dest, secondary, target_adapter = prop._create_joins(
+ (
+ pj,
+ sj,
+ source,
+ dest,
+ secondary,
+ target_adapter,
+ ) = prop._create_joins(
source_selectable=adapt_from,
dest_selectable=adapt_to,
source_polymorphic=True,
@@ -1125,7 +1138,7 @@ def with_parent(instance, prop, from_entity=None):
return prop._with_parent(instance, from_entity=from_entity)
-def has_identity(object):
+def has_identity(object_):
"""Return True if the given object has a database
identity.
@@ -1137,11 +1150,11 @@ def has_identity(object):
:func:`.was_deleted`
"""
- state = attributes.instance_state(object)
+ state = attributes.instance_state(object_)
return state.has_identity
-def was_deleted(object):
+def was_deleted(object_):
"""Return True if the given object was deleted
within a session flush.
@@ -1156,7 +1169,7 @@ def was_deleted(object):
"""
- state = attributes.instance_state(object)
+ state = attributes.instance_state(object_)
return state.was_deleted