diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-05-04 16:23:27 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-05-04 16:23:27 -0400 |
commit | 220fa91337aced11789b23065289203414f2063d (patch) | |
tree | ce4fec18d671790bdcdab7dca707997229783d48 /lib | |
parent | 8be6831f8be70d7946fd8e3e41b18781a1743ea7 (diff) | |
download | sqlalchemy-220fa91337aced11789b23065289203414f2063d.tar.gz |
most of ORM passing...
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sqlalchemy/event.py | 3 | ||||
-rw-r--r-- | lib/sqlalchemy/ext/associationproxy.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/attributes.py | 5 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/collections.py | 57 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/instrumentation.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/query.py | 7 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/util.py | 1 | ||||
-rw-r--r-- | lib/sqlalchemy/sql/expression.py | 1 | ||||
-rw-r--r-- | lib/sqlalchemy/util/compat.py | 7 | ||||
-rw-r--r-- | lib/sqlalchemy/util/langhelpers.py | 7 |
10 files changed, 44 insertions, 48 deletions
diff --git a/lib/sqlalchemy/event.py b/lib/sqlalchemy/event.py index 79d024f9b..33626cf2a 100644 --- a/lib/sqlalchemy/event.py +++ b/lib/sqlalchemy/event.py @@ -378,6 +378,8 @@ class _EmptyListener(object): def __bool__(self): return bool(self.parent_listeners) + __nonzero__ = __bool__ + class _CompoundListener(object): _exec_once = False @@ -415,6 +417,7 @@ class _CompoundListener(object): def __bool__(self): return bool(self.listeners or self.parent_listeners) + __nonzero__ = __bool__ class _ListenerCollection(_CompoundListener): """Instance-level attributes on instances of :class:`._Dispatch`. diff --git a/lib/sqlalchemy/ext/associationproxy.py b/lib/sqlalchemy/ext/associationproxy.py index ad09db831..e0a867e5a 100644 --- a/lib/sqlalchemy/ext/associationproxy.py +++ b/lib/sqlalchemy/ext/associationproxy.py @@ -478,6 +478,8 @@ class _AssociationCollection(object): def __bool__(self): return bool(self.col) + __nonzero__ = __bool__ + def __getstate__(self): return {'parent': self.parent, 'lazy_collection': self.lazy_collection} diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py index 691904bb3..057247047 100644 --- a/lib/sqlalchemy/orm/attributes.py +++ b/lib/sqlalchemy/orm/attributes.py @@ -386,8 +386,8 @@ def create_proxied_attribute(descriptor): return getattr(self.comparator, attribute) except AttributeError: raise AttributeError( - 'Neither %r object nor %r object associated with %s ' - 'has an attribute %r' % ( + 'Neither %r object nor %r object associated with %s ' + 'has an attribute %r' % ( type(descriptor).__name__, type(self.comparator).__name__, self, @@ -1216,6 +1216,7 @@ class History(History): def __bool__(self): return self != HISTORY_BLANK + __nonzero__ = __bool__ def empty(self): """Return True if this :class:`.History` has no changes diff --git a/lib/sqlalchemy/orm/collections.py b/lib/sqlalchemy/orm/collections.py index c2a2c23f0..bb7882ee9 100644 --- a/lib/sqlalchemy/orm/collections.py +++ b/lib/sqlalchemy/orm/collections.py @@ -657,12 +657,10 @@ class CollectionAdapter(object): if getattr(obj, '_sa_adapter', None) is not None: return getattr(obj, '_sa_adapter') elif setting_type == dict: -# start Py3K - return list(obj.values()) -# end Py3K -# start Py2K -# return getattr(obj, 'itervalues', getattr(obj, 'values'))() -# end Py2K + if util.py3k: + return obj.values() + else: + return getattr(obj, 'itervalues', getattr(obj, 'values'))() else: return iter(obj) @@ -706,8 +704,6 @@ class CollectionAdapter(object): def __iter__(self): """Iterate over entities in the collection.""" -# start Py3K -# end Py3K return iter(getattr(self._data(), '_sa_iterator')()) def __len__(self): @@ -717,6 +713,8 @@ class CollectionAdapter(object): def __bool__(self): return True + __nonzero__ = __bool__ + def fire_append_event(self, item, initiator=None): """Notify that a entity has entered the collection. @@ -1130,24 +1128,23 @@ def _list_decorators(): _tidy(__delitem__) return __delitem__ -# start Py2K -# def __setslice__(fn): -# def __setslice__(self, start, end, values): -# for value in self[start:end]: -# __del(self, value) -# values = [__set(self, value) for value in values] -# fn(self, start, end, values) -# _tidy(__setslice__) -# return __setslice__ -# -# def __delslice__(fn): -# def __delslice__(self, start, end): -# for value in self[start:end]: -# __del(self, value) -# fn(self, start, end) -# _tidy(__delslice__) -# return __delslice__ -# end Py2K + if util.py2k: + def __setslice__(fn): + def __setslice__(self, start, end, values): + for value in self[start:end]: + __del(self, value) + values = [__set(self, value) for value in values] + fn(self, start, end, values) + _tidy(__setslice__) + return __setslice__ + + def __delslice__(fn): + def __delslice__(self, start, end): + for value in self[start:end]: + __del(self, value) + fn(self, start, end) + _tidy(__delslice__) + return __delslice__ def extend(fn): def extend(self, iterable): @@ -1465,12 +1462,8 @@ __interfaces = { ), # decorators are required for dicts and object collections. -# start Py3K - dict: ({'iterator': 'values'}, _dict_decorators()), -# end Py3K -# start Py2K -# dict: ({'iterator': 'itervalues'}, _dict_decorators()), -# end Py2K + dict: ({'iterator': 'values'}, _dict_decorators()) if util.py3k + else ({'iterator': 'itervalues'}, _dict_decorators()), } diff --git a/lib/sqlalchemy/orm/instrumentation.py b/lib/sqlalchemy/orm/instrumentation.py index ce12acf20..f2d0df43f 100644 --- a/lib/sqlalchemy/orm/instrumentation.py +++ b/lib/sqlalchemy/orm/instrumentation.py @@ -329,6 +329,8 @@ class ClassManager(dict): """All ClassManagers are non-zero regardless of attribute state.""" return True + __nonzero__ = __bool__ + def __repr__(self): return '<%s of %r at %x>' % ( self.__class__.__name__, self.class_, id(self)) diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 80441b976..09f0bedd1 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -981,12 +981,7 @@ class Query(object): """Return a scalar result corresponding to the given column expression.""" try: -# start Py3K - return self.values(column).__next__()[0] -# end Py3K -# start Py2K -# return self.values(column).next()[0] -# end Py2K + return next(self.values(column))[0] except StopIteration: return None diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py index 30a8a8084..2a3124f4d 100644 --- a/lib/sqlalchemy/orm/util.py +++ b/lib/sqlalchemy/orm/util.py @@ -413,6 +413,7 @@ class EntityRegistry(PathRegistry, dict): def __bool__(self): return True + __nonzero__ = __bool__ def __getitem__(self, entity): if isinstance(entity, (int, slice)): diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index 2c7b91fe6..f0bcd400a 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -3769,6 +3769,7 @@ class BinaryExpression(ColumnElement): return self.operator(hash(self._orig[0]), hash(self._orig[1])) else: raise TypeError("Boolean value of this clause is not defined") + __nonzero__ = __bool__ @property diff --git a/lib/sqlalchemy/util/compat.py b/lib/sqlalchemy/util/compat.py index 06bcd30dd..e8404c2df 100644 --- a/lib/sqlalchemy/util/compat.py +++ b/lib/sqlalchemy/util/compat.py @@ -184,8 +184,11 @@ else: if py3k: exec_ = getattr(builtins, 'exec') else: - def exec_(func_text, globals_, lcl): - exec('exec func_text in globals_, lcl') + def exec_(func_text, globals_, lcl=None): + if lcl is None: + exec('exec func_text in globals_') + else: + exec('exec func_text in globals_, lcl') def with_metaclass(meta, *bases): diff --git a/lib/sqlalchemy/util/langhelpers.py b/lib/sqlalchemy/util/langhelpers.py index 8a6af3758..4cb745c2b 100644 --- a/lib/sqlalchemy/util/langhelpers.py +++ b/lib/sqlalchemy/util/langhelpers.py @@ -499,7 +499,7 @@ def monkeypatch_proxied_specials(into_cls, from_cls, skip=None, only=None, "return %(name)s.%(method)s%(d_args)s" % locals()) env = from_instance is not None and {name: from_instance} or {} - compat.exec_(py, env, {}) + compat.exec_(py, env) try: env[method].__defaults__ = fn.__defaults__ except AttributeError: @@ -510,12 +510,7 @@ def monkeypatch_proxied_specials(into_cls, from_cls, skip=None, only=None, def methods_equivalent(meth1, meth2): """Return True if the two methods are the same implementation.""" -# start Py3K return getattr(meth1, '__func__', meth1) is getattr(meth2, '__func__', meth2) -# end Py3K -# start Py2K -# return getattr(meth1, 'im_func', meth1) is getattr(meth2, 'im_func', meth2) -# end Py2K def as_interface(obj, cls=None, methods=None, required=None): |