diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-01-06 01:19:47 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-01-06 18:23:11 -0500 |
| commit | 1e278de4cc9a4181e0747640a960e80efcea1ca9 (patch) | |
| tree | 13d0c035807613bfa07e734acad79b9c843cb8b0 /lib/sqlalchemy/orm | |
| parent | 1e1a38e7801f410f244e4bbb44ec795ae152e04e (diff) | |
| download | sqlalchemy-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')
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 |
