summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/util.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2007-08-21 07:55:43 +0000
committerJason Kirtland <jek@discorporate.us>2007-08-21 07:55:43 +0000
commit47670faa30c99fa2bd92bd9caf35cd30470534b5 (patch)
treeb64cbb4875612790e4d4703aa7bb45a937e5feb7 /lib/sqlalchemy/util.py
parent6228e72cb15be6e84260440d20369c91858b4640 (diff)
downloadsqlalchemy-47670faa30c99fa2bd92bd9caf35cd30470534b5.tar.gz
A couple critical path optimizations
(some sql operations faster by nearly 10% wallclock, general orm around 3%)
Diffstat (limited to 'lib/sqlalchemy/util.py')
-rw-r--r--lib/sqlalchemy/util.py43
1 files changed, 23 insertions, 20 deletions
diff --git a/lib/sqlalchemy/util.py b/lib/sqlalchemy/util.py
index d31be6a36..ae8205f21 100644
--- a/lib/sqlalchemy/util.py
+++ b/lib/sqlalchemy/util.py
@@ -419,30 +419,32 @@ class DictDecorator(dict):
return dict.__repr__(self) + repr(self.decorate)
class OrderedSet(Set):
- def __init__(self, d=None, **kwargs):
- super(OrderedSet, self).__init__(**kwargs)
- self._list = []
- if d: self.update(d, **kwargs)
+ def __init__(self, d=None):
+ Set.__init__(self)
+ self._list = []
+ if d is not None:
+ self.update(d)
def add(self, key):
- if key not in self:
- self._list.append(key)
- super(OrderedSet, self).add(key)
+ if key not in self:
+ self._list.append(key)
+ Set.add(self, key)
def remove(self, element):
- super(OrderedSet, self).remove(element)
- self._list.remove(element)
+ Set.remove(self, element)
+ self._list.remove(element)
def discard(self, element):
- try:
- super(OrderedSet, self).remove(element)
- except KeyError: pass
- else:
- self._list.remove(element)
+ try:
+ Set.remove(self, element)
+ except KeyError:
+ pass
+ else:
+ self._list.remove(element)
def clear(self):
- super(OrderedSet, self).clear()
- self._list=[]
+ Set.clear(self)
+ self._list = []
def __getitem__(self, key):
return self._list[key]
@@ -452,7 +454,8 @@ class OrderedSet(Set):
def update(self, iterable):
add = self.add
- for i in iterable: add(i)
+ for i in iterable:
+ add(i)
return self
def __repr__(self):
@@ -487,14 +490,14 @@ class OrderedSet(Set):
__ior__ = update
def intersection_update(self, other):
- super(OrderedSet, self).intersection_update(other)
+ Set.intersection_update(self, other)
self._list = [ a for a in self._list if a in other]
return self
__iand__ = intersection_update
def symmetric_difference_update(self, other):
- super(OrderedSet, self).symmetric_difference_update(other)
+ Set.symmetric_difference_update(self, other)
self._list = [ a for a in self._list if a in self]
self._list += [ a for a in other._list if a in self]
return self
@@ -502,7 +505,7 @@ class OrderedSet(Set):
__ixor__ = symmetric_difference_update
def difference_update(self, other):
- super(OrderedSet, self).difference_update(other)
+ Set.difference_update(self, other)
self._list = [ a for a in self._list if a in self]
return self