Skip to content

Commit

Permalink
Name cached signals after class to avoid conflicts with ancestors
Browse files Browse the repository at this point in the history
Fixes regression added in a3b5485
  • Loading branch information
jtackaberry committed Jan 22, 2012
1 parent cd9213e commit 3916a82
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/core.py
Expand Up @@ -367,16 +367,18 @@ def _get_all_signals(cls):
class. Newer (most descended) __kaasignals__ will replace older ones if
there are conflicts.
"""
if not hasattr(cls, '__kaasignals_cached__'):
cached_attr = '__kaasignals_%s_cached__' % cls.__name__
signals = getattr(cls, cached_attr, None)
if signals is None:
signals = {}
for c in reversed(inspect.getmro(cls)):
if hasattr(c, '__kaasignals__'):
signals.update(c.__kaasignals__)

# Remove all signals whose value is None.
[ signals.pop(k) for k, v in signals.items() if v is None ]
cls.__kaasignals_cached__ = signals
return cls.__kaasignals_cached__
setattr(cls, cached_attr, signals)
return signals


def __init__(self, *args, **kwargs):
Expand Down

0 comments on commit 3916a82

Please sign in to comment.