diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-06-05 15:49:04 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-06-05 15:49:04 -0400 |
| commit | e8ad3988621a3caa69074fae8e9320bcabcf806d (patch) | |
| tree | e94d6b745e64c7f37111afe11f0c709eed45ee8d /lib/sqlalchemy/ext/mutable.py | |
| parent | bb6a1f690d4a749df44a1ef329b66f71205968fe (diff) | |
| download | sqlalchemy-e8ad3988621a3caa69074fae8e9320bcabcf806d.tar.gz | |
Implement in-place mutation operators for MutableSet, MutableList
Implemented in-place mutation operators ``__ior__``, ``__iand__``,
``__ixor__`` and ``__isub__`` for :class:`.mutable.MutableSet`
and ``__iadd__`` for :class:`.mutable.MutableList` so that change
events are fired off when these mutator methods are used to alter the
collection.
Change-Id: Ib357a96d3b06c5deb6b53eb304a8b9f1dc9e9ede
Fixes: #3853
Diffstat (limited to 'lib/sqlalchemy/ext/mutable.py')
| -rw-r--r-- | lib/sqlalchemy/ext/mutable.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/sqlalchemy/ext/mutable.py b/lib/sqlalchemy/ext/mutable.py index ccaeb6aa3..b72303bc8 100644 --- a/lib/sqlalchemy/ext/mutable.py +++ b/lib/sqlalchemy/ext/mutable.py @@ -806,6 +806,10 @@ class MutableList(Mutable, list): list.extend(self, x) self.changed() + def __iadd__(self, x): + self.extend(x) + return self + def insert(self, i, x): list.insert(self, i, x) self.changed() @@ -885,6 +889,22 @@ class MutableSet(Mutable, set): set.symmetric_difference_update(self, *arg) self.changed() + def __ior__(self, other): + self.update(other) + return self + + def __iand__(self, other): + self.intersection_update(other) + return self + + def __ixor__(self, other): + self.symmetric_difference_update(other) + return self + + def __isub__(self, other): + self.difference_update(other) + return self + def add(self, elem): set.add(self, elem) self.changed() |
