Skip to content

Instantly share code, notes, and snippets.

@britonad
Created June 14, 2018 14:56
Show Gist options
  • Save britonad/4db37b36b035cb76dcf79d57aaee264a to your computer and use it in GitHub Desktop.
Save britonad/4db37b36b035cb76dcf79d57aaee264a to your computer and use it in GitHub Desktop.
An example of the creation of a full-fledged signal.
from blinker import Namespace
_signals = Namespace()
pre_save = _signals.signal('pre_save')
class Sender:
def __init__(self, name):
self.name = name
def caller(self):
return pre_save.send(self, save=True)
@classmethod
def receiver(cls, sender, **kwargs):
print(f'Sender is {sender}. Kwargs: {kwargs}.')
return sender
def __repr__(self):
return f'<Sender {self.name}>'
s = Sender('testing')
pre_save.connect(Sender.receiver, sender=s)
print(pre_save.receivers)
s.caller()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment