summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/sync.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/orm/sync.py')
-rw-r--r--lib/sqlalchemy/orm/sync.py64
1 files changed, 41 insertions, 23 deletions
diff --git a/lib/sqlalchemy/orm/sync.py b/lib/sqlalchemy/orm/sync.py
index 08a66a8db..0cd488cbd 100644
--- a/lib/sqlalchemy/orm/sync.py
+++ b/lib/sqlalchemy/orm/sync.py
@@ -13,8 +13,15 @@ between instances based on join conditions.
from . import exc, util as orm_util, attributes
-def populate(source, source_mapper, dest, dest_mapper,
- synchronize_pairs, uowcommit, flag_cascaded_pks):
+def populate(
+ source,
+ source_mapper,
+ dest,
+ dest_mapper,
+ synchronize_pairs,
+ uowcommit,
+ flag_cascaded_pks,
+):
source_dict = source.dict
dest_dict = dest.dict
@@ -22,8 +29,9 @@ def populate(source, source_mapper, dest, dest_mapper,
try:
# inline of source_mapper._get_state_attr_by_column
prop = source_mapper._columntoproperty[l]
- value = source.manager[prop.key].impl.get(source, source_dict,
- attributes.PASSIVE_OFF)
+ value = source.manager[prop.key].impl.get(
+ source, source_dict, attributes.PASSIVE_OFF
+ )
except exc.UnmappedColumnError:
_raise_col_to_prop(False, source_mapper, l, dest_mapper, r)
@@ -39,14 +47,16 @@ def populate(source, source_mapper, dest, dest_mapper,
# how often this logic is invoked for memory/performance
# reasons, since we only need this info for a primary key
# destination.
- if flag_cascaded_pks and l.primary_key and \
- r.primary_key and \
- r.references(l):
+ if (
+ flag_cascaded_pks
+ and l.primary_key
+ and r.primary_key
+ and r.references(l)
+ ):
uowcommit.attributes[("pk_cascaded", dest, r)] = True
-def bulk_populate_inherit_keys(
- source_dict, source_mapper, synchronize_pairs):
+def bulk_populate_inherit_keys(source_dict, source_mapper, synchronize_pairs):
# a simplified version of populate() used by bulk insert mode
for l, r in synchronize_pairs:
try:
@@ -64,14 +74,15 @@ def bulk_populate_inherit_keys(
def clear(dest, dest_mapper, synchronize_pairs):
for l, r in synchronize_pairs:
- if r.primary_key and \
- dest_mapper._get_state_attr_by_column(
- dest, dest.dict, r) not in orm_util._none_set:
+ if (
+ r.primary_key
+ and dest_mapper._get_state_attr_by_column(dest, dest.dict, r)
+ not in orm_util._none_set
+ ):
raise AssertionError(
"Dependency rule tried to blank-out primary key "
- "column '%s' on instance '%s'" %
- (r, orm_util.state_str(dest))
+ "column '%s' on instance '%s'" % (r, orm_util.state_str(dest))
)
try:
dest_mapper._set_state_attr_by_column(dest, dest.dict, r, None)
@@ -83,9 +94,11 @@ def update(source, source_mapper, dest, old_prefix, synchronize_pairs):
for l, r in synchronize_pairs:
try:
oldvalue = source_mapper._get_committed_attr_by_column(
- source.obj(), l)
+ source.obj(), l
+ )
value = source_mapper._get_state_attr_by_column(
- source, source.dict, l, passive=attributes.PASSIVE_OFF)
+ source, source.dict, l, passive=attributes.PASSIVE_OFF
+ )
except exc.UnmappedColumnError:
_raise_col_to_prop(False, source_mapper, l, None, r)
dest[r.key] = value
@@ -96,7 +109,8 @@ def populate_dict(source, source_mapper, dict_, synchronize_pairs):
for l, r in synchronize_pairs:
try:
value = source_mapper._get_state_attr_by_column(
- source, source.dict, l, passive=attributes.PASSIVE_OFF)
+ source, source.dict, l, passive=attributes.PASSIVE_OFF
+ )
except exc.UnmappedColumnError:
_raise_col_to_prop(False, source_mapper, l, None, r)
@@ -114,27 +128,31 @@ def source_modified(uowcommit, source, source_mapper, synchronize_pairs):
except exc.UnmappedColumnError:
_raise_col_to_prop(False, source_mapper, l, None, r)
history = uowcommit.get_attribute_history(
- source, prop.key, attributes.PASSIVE_NO_INITIALIZE)
+ source, prop.key, attributes.PASSIVE_NO_INITIALIZE
+ )
if bool(history.deleted):
return True
else:
return False
-def _raise_col_to_prop(isdest, source_mapper, source_column,
- dest_mapper, dest_column):
+def _raise_col_to_prop(
+ isdest, source_mapper, source_column, dest_mapper, dest_column
+):
if isdest:
raise exc.UnmappedColumnError(
"Can't execute sync rule for "
"destination column '%s'; mapper '%s' does not map "
"this column. Try using an explicit `foreign_keys` "
"collection which does not include this column (or use "
- "a viewonly=True relation)." % (dest_column, dest_mapper))
+ "a viewonly=True relation)." % (dest_column, dest_mapper)
+ )
else:
raise exc.UnmappedColumnError(
"Can't execute sync rule for "
"source column '%s'; mapper '%s' does not map this "
"column. Try using an explicit `foreign_keys` "
"collection which does not include destination column "
- "'%s' (or use a viewonly=True relation)." %
- (source_column, source_mapper, dest_column))
+ "'%s' (or use a viewonly=True relation)."
+ % (source_column, source_mapper, dest_column)
+ )