From e8ad3988621a3caa69074fae8e9320bcabcf806d Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 5 Jun 2017 15:49:04 -0400 Subject: 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 --- lib/sqlalchemy/ext/mutable.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/sqlalchemy/ext/mutable.py') 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() -- cgit v1.2.1