Skip to main content

Simple signals and handlers

Project description

Classic Signals

Данный пакет предоставляет возможность использовать сигналы и реакции в проекте.

Они нужны для инверсии вызова. По сути, это паттерн Observer и немного сахара сверху. В одном месте программы мы объявляем сигналы, пользуясь декоратором signal, в других местах приложения пишем реакции на этих сигналов. Реакции - это любой вызываемый объект, принимающий один аргумент - инстанс сигнала. Это может быть и просто функция или метод, для удобства завернутый в декоратор reaction. Последнее, что нужно, это инстанс класса Hub. В Hub перед началом работы можно зарегистрировать реакции, потом можно вызвать у него метод notify, передав в него инстанс сигнала, и Hub вызовет все реакции, относящиеся к сигналу.

Пример:

from classic.components import component
from classic.signals import reaction, Hub, signal


@signal
class SomethingHappened:
    """Под капотом сигналы - на самом деле датаклассы"""
    some_field: int


@signal
class SomethingAnotherHappened:
    some_field: int


@component
class SomeHandlers:

    @reaction
    def on_something_happened(self, signal: SomethingHappened):
        print(f'Что-то произошло: {signal}')

    @reaction
    def on_something_another_happened(self, signal: SomethingAnotherHappened):
        print(f'Что-то еще произошло: {signal}')


hub = Hub()
SomeHandlers(signals=hub)


signal_1 = SomethingHappened(some_field=0)
signal_2 = SomethingAnotherHappened(some_field=0)

hub.notify(signal_1, signal_2)

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

classic-signals-0.1.0.tar.gz (7.4 kB view details)

Uploaded Source

File details

Details for the file classic-signals-0.1.0.tar.gz.

File metadata

  • Download URL: classic-signals-0.1.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for classic-signals-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2f859bbc3b20b72d11bc1e00d0e97d66496c325f0944d165d1e0503fb1f69c3c
MD5 86d1492a4764f98ad1980b4f27934682
BLAKE2b-256 8ffd292b8760201035774727219e0ad616fd8481d9a87b3ce5a394db004462cb

See more details on using hashes here.

Supported by

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