Skip to main content

Simple signal/slot implementation

Project description

https://img.shields.io/pypi/v/signaling.svg?style=flat-square https://img.shields.io/travis/mdomke/signaling/master.svg?style=flat-square https://img.shields.io/pypi/l/signaling.svg?style=flat-square https://img.shields.io/coveralls/mdomke/signaling.svg?style=flat-square

What is this?

signaling is a simple implementation of the signal/slot pattern as known from the Qt framework. It has no external requirements and 100% test-coverage.

Installation

The usual

pip install signaling

How to use it?

Consider that you have a function that should be called whenever a connected signal is emitted, as illustrated by the following code block:

def slot(arg):
  print("Slot called with {}".format(arg))

signal = Signal(args=['arg'])
signal.connect(slot)
signal.emit(arg=1)  # Slot called with 1

In fact you can connect multiple slots to the same signal, as long as they share the same function signature.

Notice that the signaling library performs some sanity checks when connecting slots and emitting signals.

  • All slots connected to a signal have to provide the same argument specifiction as denoted by the args parameter of the Signal constructor.

  • An emit-call has to be made with the exact same arguments as specified with the Signal constructor.

So all of the below examples would raise an exception:

def slot_with_arg(arg):
  pass

def slot_without_arg():
  pass

# InvalidSlot: Slot 'slot_with_arg' has to callable without arguments
Signal().connect(slot_with_arg)

# InvalidSlot: Slot 'slot_without_args' has to accept args ['arg'] or **kwargs.
Signal(args['arg']).connect(slot_without_arg)

s = Signal()
s.connect(slot_without_args)
# InvalidEmit: Emit has to be called without arguments.
s.emit(foo=1)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

signaling-1.0.0.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

signaling-1.0.0-py2.py3-none-any.whl (5.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file signaling-1.0.0.tar.gz.

File metadata

  • Download URL: signaling-1.0.0.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for signaling-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0051e5ec8fc4bba7eaf41ea035143229e62a132f1be3eb4354340707d34dff25
MD5 14205d9f0ba1935f3eb5428e443d6b96
BLAKE2b-256 871e8761e25fdc6183c92fc9ddd5d4ce1e86eda8ba61bf4ceacd957709818a19

See more details on using hashes here.

File details

Details for the file signaling-1.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for signaling-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2f1dc686c25254238171d76effa6bd0386a54c38d63086d748fd8f5c7633d93d
MD5 d20ed545bca06bca4c3457c08e41403a
BLAKE2b-256 cebb4e794667198ec5aee704695538ffee9bcfc463e6c678be4139905cd44966

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page