https://github.com/tmontes/python-wires
Python Wires: Simple Callable Wiring
https://github.com/tmontes/python-wires
callables event-management pub-sub python
Last synced: 5 months ago
JSON representation
Python Wires: Simple Callable Wiring
- Host: GitHub
- URL: https://github.com/tmontes/python-wires
- Owner: tmontes
- License: mit
- Created: 2018-02-25T00:39:06.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2019-11-20T14:31:37.000Z (about 6 years ago)
- Last Synced: 2025-07-24T02:26:31.103Z (6 months ago)
- Topics: callables, event-management, pub-sub, python
- Language: Python
- Homepage:
- Size: 256 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- License: LICENSE
Awesome Lists containing this project
README
Python Wires: Simple Callable Wiring
====================================
.. image:: http://img.shields.io/pypi/v/wires.svg
:target: https://pypi.org/pypi/wires
:alt: PyPI
.. image:: https://img.shields.io/travis/tmontes/python-wires.svg
:target: https://travis-ci.org/tmontes/python-wires
:alt: CI Status
.. image:: https://codecov.io/github/tmontes/python-wires/branch/master/graph/badge.svg
:target: https://codecov.io/github/tmontes/python-wires
:alt: Test Coverage
.. image:: https://readthedocs.org/projects/python-wires/badge/?version=latest
:target: https://python-wires.readthedocs.io/
:alt: Documentation
|
Python Wires is a library to facilitate callable wiring by decoupling callers from callees. It can be used as a simple callable-based event notification system, as an in-process publish-subscribe like solution, or in any context where 1:N callable decoupling is appropriate.
Installation
------------
Python Wires is a pure Python package distributed via `PyPI `_. Install it with:
.. code-block:: console
$ pip install wires
Quick Start
-----------
Create a ``Wires`` object:
.. code-block:: python
from wires import Wires
w = Wires()
Its attributes are callables, auto-created on first access, that can be wired to other callables:
.. code-block:: python
def say_hello():
print('Hello from wires!')
w.my_callable.wire(say_hello) # Wires `w.my_callable`, auto-created, to `say_hello`.
Calling such callables calls their wired callables:
.. code-block:: python
w.my_callable() # Prints 'Hello from wires!'
More wirings can be added:
.. code-block:: python
def say_welcome():
print('Welcome!')
w.my_callable.wire(say_welcome) # Wires `w.my_callable` to `say_welcome`, as well.
w.my_callable() # Prints 'Hello from wires!' and 'Welcome!'.
Wirings can also be removed:
.. code-block:: python
w.my_callable.unwire(say_hello) # Removes the wiring to `say_hello`.
w.my_callable() # Prints 'Welcome!'
w.my_callable.unwire(say_welcome) # Removes the wiring to `say_welcome`.
w.my_callable() # Does nothing.
To learn more about Python Wires, including passing parameters, setting wiring limits and tuning the call-time coupling behaviour, please refer to the remaining documentation at https://python-wires.readthedocs.org/.
.. marker-end-welcome-dont-remove
Thanks
------
.. marker-start-thanks-dont-remove
- Hynek Schlawack for the articles `Sharing Your Labor of Love: PyPI Quick and Dirty `_ and `Testing & Packaging `_.
- Stuart Colville for the article `Including parts of README.rst in your sphinx docs `_.
.. marker-end-thanks-dont-remove
About
-----
.. marker-start-about-dont-remove
Python Wires was created by Tiago Montes.
.. marker-end-about-dont-remove