diff options
Diffstat (limited to 'lib/sqlalchemy/event/base.py')
| -rw-r--r-- | lib/sqlalchemy/event/base.py | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/lib/sqlalchemy/event/base.py b/lib/sqlalchemy/event/base.py index 137aec258..c750be70a 100644 --- a/lib/sqlalchemy/event/base.py +++ b/lib/sqlalchemy/event/base.py @@ -26,7 +26,7 @@ _registrars = util.defaultdict(list) def _is_event_name(name): - return not name.startswith('_') and name != 'dispatch' + return not name.startswith("_") and name != "dispatch" class _UnpickleDispatch(object): @@ -37,8 +37,8 @@ class _UnpickleDispatch(object): def __call__(self, _instance_cls): for cls in _instance_cls.__mro__: - if 'dispatch' in cls.__dict__: - return cls.__dict__['dispatch'].dispatch._for_class( + if "dispatch" in cls.__dict__: + return cls.__dict__["dispatch"].dispatch._for_class( _instance_cls ) else: @@ -67,7 +67,7 @@ class _Dispatch(object): # In one ORM edge case, an attribute is added to _Dispatch, # so __dict__ is used in just that case and potentially others. - __slots__ = '_parent', '_instance_cls', '__dict__', '_empty_listeners' + __slots__ = "_parent", "_instance_cls", "__dict__", "_empty_listeners" _empty_listener_reg = weakref.WeakKeyDictionary() @@ -79,7 +79,9 @@ class _Dispatch(object): try: self._empty_listeners = self._empty_listener_reg[instance_cls] except KeyError: - self._empty_listeners = self._empty_listener_reg[instance_cls] = { + self._empty_listeners = self._empty_listener_reg[ + instance_cls + ] = { ls.name: _EmptyListener(ls, instance_cls) for ls in parent._event_descriptors } @@ -122,17 +124,18 @@ class _Dispatch(object): :class:`._Dispatch` objects. """ - if '_joined_dispatch_cls' not in self.__class__.__dict__: + if "_joined_dispatch_cls" not in self.__class__.__dict__: cls = type( "Joined%s" % self.__class__.__name__, - (_JoinedDispatcher, ), {'__slots__': self._event_names} + (_JoinedDispatcher,), + {"__slots__": self._event_names}, ) self.__class__._joined_dispatch_cls = cls return self._joined_dispatch_cls(self, other) def __reduce__(self): - return _UnpickleDispatch(), (self._instance_cls, ) + return _UnpickleDispatch(), (self._instance_cls,) def _update(self, other, only_propagate=True): """Populate from the listeners in another :class:`_Dispatch` @@ -140,8 +143,9 @@ class _Dispatch(object): for ls in other._event_descriptors: if isinstance(ls, _EmptyListener): continue - getattr(self, ls.name).\ - for_modify(self)._update(ls, only_propagate=only_propagate) + getattr(self, ls.name).for_modify(self)._update( + ls, only_propagate=only_propagate + ) def _clear(self): for ls in self._event_descriptors: @@ -164,14 +168,15 @@ def _create_dispatcher_class(cls, classname, bases, dict_): # there's all kinds of ways to do this, # i.e. make a Dispatch class that shares the '_listen' method # of the Event class, this is the straight monkeypatch. - if hasattr(cls, 'dispatch'): + if hasattr(cls, "dispatch"): dispatch_base = cls.dispatch.__class__ else: dispatch_base = _Dispatch event_names = [k for k in dict_ if _is_event_name(k)] - dispatch_cls = type("%sDispatch" % classname, - (dispatch_base, ), {'__slots__': event_names}) + dispatch_cls = type( + "%sDispatch" % classname, (dispatch_base,), {"__slots__": event_names} + ) dispatch_cls._event_names = event_names @@ -186,7 +191,7 @@ def _create_dispatcher_class(cls, classname, bases, dict_): setattr(dispatch_inst, ls.name, ls) dispatch_cls._event_names.append(ls.name) - if getattr(cls, '_dispatch_target', None): + if getattr(cls, "_dispatch_target", None): cls._dispatch_target.dispatch = dispatcher(cls) @@ -221,12 +226,14 @@ class Events(util.with_metaclass(_EventMeta, object)): # Mapper, ClassManager, Session override this to # also accept classes, scoped_sessions, sessionmakers, etc. - if hasattr(target, 'dispatch'): + if hasattr(target, "dispatch"): if ( dispatch_is(cls.dispatch.__class__) or dispatch_is(type, cls.dispatch.__class__) - or (dispatch_is(_JoinedDispatcher) - and dispatch_parent_is(cls.dispatch.__class__)) + or ( + dispatch_is(_JoinedDispatcher) + and dispatch_parent_is(cls.dispatch.__class__) + ) ): return target @@ -246,7 +253,7 @@ class Events(util.with_metaclass(_EventMeta, object)): class _JoinedDispatcher(object): """Represent a connection between two _Dispatch objects.""" - __slots__ = 'local', 'parent', '_instance_cls' + __slots__ = "local", "parent", "_instance_cls" def __init__(self, local, parent): self.local = local @@ -281,5 +288,5 @@ class dispatcher(object): def __get__(self, obj, cls): if obj is None: return self.dispatch - obj.__dict__['dispatch'] = disp = self.dispatch._for_instance(obj) + obj.__dict__["dispatch"] = disp = self.dispatch._for_instance(obj) return disp |
