summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/event/attr.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/event/attr.py')
-rw-r--r--lib/sqlalchemy/event/attr.py39
1 files changed, 20 insertions, 19 deletions
diff --git a/lib/sqlalchemy/event/attr.py b/lib/sqlalchemy/event/attr.py
index 57adc4208..7641b595a 100644
--- a/lib/sqlalchemy/event/attr.py
+++ b/lib/sqlalchemy/event/attr.py
@@ -44,6 +44,7 @@ class RefCollection(object):
def ref(self):
return weakref.ref(self, registry._collection_gced)
+
class _DispatchDescriptor(RefCollection):
"""Class-level attributes on :class:`._Dispatch` classes."""
@@ -53,13 +54,13 @@ class _DispatchDescriptor(RefCollection):
self.arg_names = argspec.args[1:]
self.has_kw = bool(argspec.keywords)
self.legacy_signatures = list(reversed(
- sorted(
- getattr(fn, '_legacy_signatures', []),
- key=lambda s: s[0]
- )
- ))
+ sorted(
+ getattr(fn, '_legacy_signatures', []),
+ key=lambda s: s[0]
+ )
+ ))
self.__doc__ = fn.__doc__ = legacy._augment_fn_docs(
- self, parent_dispatch_cls, fn)
+ self, parent_dispatch_cls, fn)
self._clslevel = weakref.WeakKeyDictionary()
self._empty_listeners = weakref.WeakKeyDictionary()
@@ -83,11 +84,10 @@ class _DispatchDescriptor(RefCollection):
return fn(**argdict)
return wrap_kw
-
def insert(self, event_key, propagate):
target = event_key.dispatch_target
assert isinstance(target, type), \
- "Class-level Event targets must be classes."
+ "Class-level Event targets must be classes."
stack = [target]
while stack:
cls = stack.pop(0)
@@ -103,7 +103,7 @@ class _DispatchDescriptor(RefCollection):
def append(self, event_key, propagate):
target = event_key.dispatch_target
assert isinstance(target, type), \
- "Class-level Event targets must be classes."
+ "Class-level Event targets must be classes."
stack = [target]
while stack:
@@ -170,10 +170,12 @@ class _DispatchDescriptor(RefCollection):
obj.__dict__[self.__name__] = ret
return ret
+
class _HasParentDispatchDescriptor(object):
def _adjust_fn_spec(self, fn, named):
return self.parent._adjust_fn_spec(fn, named)
+
class _EmptyListener(_HasParentDispatchDescriptor):
"""Serves as a class-level interface to the events
served by a _DispatchDescriptor, when there are no
@@ -183,6 +185,7 @@ class _EmptyListener(_HasParentDispatchDescriptor):
events are added.
"""
+
def __init__(self, parent, target_cls):
if target_cls not in parent._clslevel:
parent.update_subclass(target_cls)
@@ -192,7 +195,6 @@ class _EmptyListener(_HasParentDispatchDescriptor):
self.propagate = frozenset()
self.listeners = ()
-
def for_modify(self, obj):
"""Return an event collection which can be modified.
@@ -268,6 +270,7 @@ class _CompoundListener(_HasParentDispatchDescriptor):
__nonzero__ = __bool__
+
class _ListenerCollection(RefCollection, _CompoundListener):
"""Instance-level attributes on instances of :class:`._Dispatch`.
@@ -304,10 +307,10 @@ class _ListenerCollection(RefCollection, _CompoundListener):
existing_listener_set = set(existing_listeners)
self.propagate.update(other.propagate)
other_listeners = [l for l
- in other.listeners
- if l not in existing_listener_set
- and not only_propagate or l in self.propagate
- ]
+ in other.listeners
+ if l not in existing_listener_set
+ and not only_propagate or l in self.propagate
+ ]
existing_listeners.extend(other_listeners)
@@ -346,9 +349,9 @@ class _JoinedDispatchDescriptor(object):
return self
else:
obj.__dict__[self.name] = ret = _JoinedListener(
- obj.parent, self.name,
- getattr(obj.local, self.name)
- )
+ obj.parent, self.name,
+ getattr(obj.local, self.name)
+ )
return ret
@@ -383,5 +386,3 @@ class _JoinedListener(_CompoundListener):
def clear(self):
raise NotImplementedError()
-
-