summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/event.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/event.py')
-rw-r--r--lib/sqlalchemy/event.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/sqlalchemy/event.py b/lib/sqlalchemy/event.py
index f28f19ee9..d8c44dd05 100644
--- a/lib/sqlalchemy/event.py
+++ b/lib/sqlalchemy/event.py
@@ -171,7 +171,8 @@ class _EventMeta(type):
associated _Dispatch classes."""
def __init__(cls, classname, bases, dict_):
- _create_dispatcher_class(cls, classname, bases, dict_)
+ if classname != 'MetaBase':
+ _create_dispatcher_class(cls, classname, bases, dict_)
return type.__init__(cls, classname, bases, dict_)
@@ -200,12 +201,9 @@ def _remove_dispatcher(cls):
if not _registrars[k]:
del _registrars[k]
-
-class Events(object):
+class Events(util.with_metaclass(_EventMeta, object)):
"""Define event listening functions for a particular target type."""
- __metaclass__ = _EventMeta
-
@classmethod
def _accept_with(cls, target):
# Mapper, ClassManager, Session override this to
@@ -377,9 +375,11 @@ class _EmptyListener(object):
def __iter__(self):
return iter(self.parent_listeners)
- def __nonzero__(self):
+ def __bool__(self):
return bool(self.parent_listeners)
+ __nonzero__ = __bool__
+
class _CompoundListener(object):
_exec_once = False
@@ -414,9 +414,10 @@ class _CompoundListener(object):
def __iter__(self):
return chain(self.parent_listeners, self.listeners)
- def __nonzero__(self):
+ def __bool__(self):
return bool(self.listeners or self.parent_listeners)
+ __nonzero__ = __bool__
class _ListenerCollection(_CompoundListener):
"""Instance-level attributes on instances of :class:`._Dispatch`.