summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/ext/associationproxy.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/ext/associationproxy.py')
-rw-r--r--lib/sqlalchemy/ext/associationproxy.py57
1 files changed, 32 insertions, 25 deletions
diff --git a/lib/sqlalchemy/ext/associationproxy.py b/lib/sqlalchemy/ext/associationproxy.py
index 252efcb42..0482a9205 100644
--- a/lib/sqlalchemy/ext/associationproxy.py
+++ b/lib/sqlalchemy/ext/associationproxy.py
@@ -475,9 +475,11 @@ class _AssociationCollection(object):
def __len__(self):
return len(self.col)
- def __nonzero__(self):
+ def __bool__(self):
return bool(self.col)
+ __nonzero__ = __bool__
+
def __getstate__(self):
return {'parent': self.parent, 'lazy_collection': self.lazy_collection}
@@ -514,7 +516,7 @@ class _AssociationList(_AssociationCollection):
stop = index.stop
step = index.step or 1
- rng = range(index.start or 0, stop, step)
+ rng = list(range(index.start or 0, stop, step))
if step == 1:
for i in rng:
del self[index.start]
@@ -569,7 +571,7 @@ class _AssociationList(_AssociationCollection):
def count(self, value):
return sum([1 for _ in
- itertools.ifilter(lambda v: v == value, iter(self))])
+ util.itertools_filter(lambda v: v == value, iter(self))])
def extend(self, values):
for v in values:
@@ -668,8 +670,8 @@ class _AssociationList(_AssociationCollection):
def __hash__(self):
raise TypeError("%s objects are unhashable" % type(self).__name__)
- for func_name, func in locals().items():
- if (util.callable(func) and func.func_name == func_name and
+ for func_name, func in list(locals().items()):
+ if (util.callable(func) and func.__name__ == func_name and
not func.__doc__ and hasattr(list, func_name)):
func.__doc__ = getattr(list, func_name).__doc__
del func_name, func
@@ -711,7 +713,7 @@ class _AssociationDict(_AssociationCollection):
return key in self.col
def __iter__(self):
- return self.col.iterkeys()
+ return iter(self.col.keys())
def clear(self):
self.col.clear()
@@ -756,24 +758,27 @@ class _AssociationDict(_AssociationCollection):
def keys(self):
return self.col.keys()
- def iterkeys(self):
- return self.col.iterkeys()
+ if util.py2k:
+ def iteritems(self):
+ return ((key, self._get(self.col[key])) for key in self.col)
- def values(self):
- return [self._get(member) for member in self.col.values()]
+ def itervalues(self):
+ return (self._get(self.col[key]) for key in self.col)
- def itervalues(self):
- for key in self.col:
- yield self._get(self.col[key])
- raise StopIteration
+ def iterkeys(self):
+ return self.col.iterkeys()
- def items(self):
- return [(k, self._get(self.col[k])) for k in self]
+ def values(self):
+ return [self._get(member) for member in self.col.values()]
- def iteritems(self):
- for key in self.col:
- yield (key, self._get(self.col[key]))
- raise StopIteration
+ def items(self):
+ return [(k, self._get(self.col[k])) for k in self]
+ else:
+ def items(self):
+ return ((key, self._get(self.col[key])) for key in self.col)
+
+ def values(self):
+ return (self._get(self.col[key]) for key in self.col)
def pop(self, key, default=_NotProvided):
if default is _NotProvided:
@@ -816,8 +821,8 @@ class _AssociationDict(_AssociationCollection):
def __hash__(self):
raise TypeError("%s objects are unhashable" % type(self).__name__)
- for func_name, func in locals().items():
- if (util.callable(func) and func.func_name == func_name and
+ for func_name, func in list(locals().items()):
+ if (util.callable(func) and func.__name__ == func_name and
not func.__doc__ and hasattr(dict, func_name)):
func.__doc__ = getattr(dict, func_name).__doc__
del func_name, func
@@ -838,12 +843,14 @@ class _AssociationSet(_AssociationCollection):
def __len__(self):
return len(self.col)
- def __nonzero__(self):
+ def __bool__(self):
if self.col:
return True
else:
return False
+ __nonzero__ = __bool__
+
def __contains__(self, value):
for member in self.col:
# testlib.pragma exempt:__eq__
@@ -1014,8 +1021,8 @@ class _AssociationSet(_AssociationCollection):
def __hash__(self):
raise TypeError("%s objects are unhashable" % type(self).__name__)
- for func_name, func in locals().items():
- if (util.callable(func) and func.func_name == func_name and
+ for func_name, func in list(locals().items()):
+ if (util.callable(func) and func.__name__ == func_name and
not func.__doc__ and hasattr(set, func_name)):
func.__doc__ = getattr(set, func_name).__doc__
del func_name, func