def __bool__(self):
return bool(self.parent_listeners)
+ __nonzero__ = __bool__
+
class _CompoundListener(object):
_exec_once = False
def __bool__(self):
return bool(self.listeners or self.parent_listeners)
+ __nonzero__ = __bool__
class _ListenerCollection(_CompoundListener):
"""Instance-level attributes on instances of :class:`._Dispatch`.
def __bool__(self):
return bool(self.col)
+ __nonzero__ = __bool__
+
def __getstate__(self):
return {'parent': self.parent, 'lazy_collection': self.lazy_collection}
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,
def __bool__(self):
return self != HISTORY_BLANK
+ __nonzero__ = __bool__
def empty(self):
"""Return True if this :class:`.History` has no changes
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)
def __iter__(self):
"""Iterate over entities in the collection."""
-# start Py3K
-# end Py3K
return iter(getattr(self._data(), '_sa_iterator')())
def __len__(self):
def __bool__(self):
return True
+ __nonzero__ = __bool__
+
def fire_append_event(self, item, initiator=None):
"""Notify that a entity has entered the collection.
_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):
),
# 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()),
}
"""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))
"""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
def __bool__(self):
return True
+ __nonzero__ = __bool__
def __getitem__(self, entity):
if isinstance(entity, (int, slice)):
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
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):
"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:
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):
refugees_table = Table('refugee', metadata, Column('refugee_fid'
, Integer, primary_key=True,
test_needs_autoincrement=True),
- Column('refugee_name', Unicode(30),
+ Column('refugee_name', String(30),
key='name'))
offices_table = Table('office', metadata, Column('office_fid',
Integer, primary_key=True,
test_needs_autoincrement=True),
- Column('office_name', Unicode(30),
+ Column('office_name', String(30),
key='name'))
@classmethod
Table('prj', metadata,
Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
Column('created', sa.DateTime ),
- Column('title', sa.Unicode(100)))
+ Column('title', sa.String(100)))
Table('task', metadata,
Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
Column('status_id', Integer,
ForeignKey('task_status.id'), nullable=False),
- Column('title', sa.Unicode(100)),
+ Column('title', sa.String(100)),
Column('task_type_id', Integer ,
ForeignKey('task_type.id'), nullable=False),
Column('prj_id', Integer , ForeignKey('prj.id'), nullable=False))
Table('msg_type', metadata,
Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
- Column('name', sa.Unicode(20)),
- Column('display_name', sa.Unicode(20)))
+ Column('name', sa.String(20)),
+ Column('display_name', sa.String(20)))
@classmethod
def fixtures(cls):
def define_tables(cls, metadata):
Table('widget', metadata,
Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
- Column('name', sa.Unicode(40), nullable=False, unique=True),
+ Column('name', sa.String(40), nullable=False, unique=True),
)
Table('widget_rel', metadata,
assert sess.query(func.min(foo.c.bar)).filter(foo.c.bar<30).one() == (0,)
assert sess.query(func.max(foo.c.bar)).filter(foo.c.bar<30).one() == (29,)
-# start Py3K
- assert query.filter(foo.c.bar<30).values(sa.func.max(foo.c.bar)).__next__()[0] == 29
- assert query.filter(foo.c.bar<30).values(sa.func.max(foo.c.bar)).__next__()[0] == 29
-# end Py3K
-# start Py2K
-# assert query.filter(foo.c.bar<30).values(sa.func.max(foo.c.bar)).next()[0] == 29
-# assert query.filter(foo.c.bar<30).values(sa.func.max(foo.c.bar)).next()[0] == 29
-# end Py2K
+ assert next(query.filter(foo.c.bar<30).values(sa.func.max(foo.c.bar)))[0] == 29
+ assert next(query.filter(foo.c.bar<30).values(sa.func.max(foo.c.bar)))[0] == 29
@testing.fails_if(lambda:testing.against('mysql+mysqldb') and
testing.db.dialect.dbapi.version_info[:4] == (1, 2, 1, 'gamma'),
query = create_session().query(Foo)
-# start Py3K
- avg_f = query.filter(foo.c.bar<30).values(sa.func.avg(foo.c.bar)).__next__()[0]
-# end Py3K
-# start Py2K
-# avg_f = query.filter(foo.c.bar<30).values(sa.func.avg(foo.c.bar)).next()[0]
-# end Py2K
+ avg_f = next(query.filter(foo.c.bar<30).values(sa.func.avg(foo.c.bar)))[0]
assert float(round(avg_f, 1)) == 14.5
-# start Py3K
- avg_o = query.filter(foo.c.bar<30).values(sa.func.avg(foo.c.bar)).__next__()[0]
-# end Py3K
-# start Py2K
-# avg_o = query.filter(foo.c.bar<30).values(sa.func.avg(foo.c.bar)).next()[0]
-# end Py2K
+ avg_o = next(query.filter(foo.c.bar<30).values(sa.func.avg(foo.c.bar)))[0]
assert float(round(avg_o, 1)) == 14.5
def test_filter(self):
'user', metadata,
Column('code', Integer, primary_key=True),
Column('status', Integer, primary_key=True),
- Column('username', Unicode(50), nullable=False),
+ Column('username', String(50), nullable=False),
)
@classmethod