summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2018-02-09 08:41:33 -0500
committerGerrit Code Review <gerrit@ci.zzzcomputing.com>2018-02-09 08:41:33 -0500
commit9ef891e82c187b3fda0f778073f258ef8b55124f (patch)
treecddc08b597ac19be0abd971912ce4430536a5b43 /lib/sqlalchemy
parent1e6b9b04de9fffdca9a76e9b9a3b05c98d4a84b2 (diff)
parentc3ec789ecdd4e33786b8ac0f1ccdf155c15eda9d (diff)
downloadsqlalchemy-9ef891e82c187b3fda0f778073f258ef8b55124f.tar.gz
Merge "Add initiator argument to set_attribute"
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/attributes.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py
index b175297ac..e9227362e 100644
--- a/lib/sqlalchemy/orm/attributes.py
+++ b/lib/sqlalchemy/orm/attributes.py
@@ -1592,7 +1592,7 @@ def set_committed_value(instance, key, value):
state.manager[key].impl.set_committed_value(state, dict_, value)
-def set_attribute(instance, key, value):
+def set_attribute(instance, key, value, initiator=None):
"""Set the value of an attribute, firing history events.
This function may be used regardless of instrumentation
@@ -1601,9 +1601,24 @@ def set_attribute(instance, key, value):
of this method to establish attribute state as understood
by SQLAlchemy.
+ :param instance: the object that will be modified
+
+ :param key: string name of the attribute
+
+ :param value: value to assign
+
+ :param initiator: an instance of :class:`.Event` that would have
+ been propagated from a previous event listener. This argument
+ is used when the :func:`.set_attribute` function is being used within
+ an existing event listening function where an :class:`.Event` object
+ is being supplied; the object may be used to track the origin of the
+ chain of events.
+
+ .. versionadded:: 1.2.3
+
"""
state, dict_ = instance_state(instance), instance_dict(instance)
- state.manager[key].impl.set(state, dict_, value, None)
+ state.manager[key].impl.set(state, dict_, value, initiator)
def get_attribute(instance, key):