Metadata-Version: 2.1
Name: lahja
Version: 0.13.0
Summary: Generic event bus for inter process asyncio communication
Home-page: https://github.com/ethereum/lahja
Author: The Lahja developers
Author-email: christoph.burgdorf@gmail.com
License: MIT
Description: Lahja
        =====
        
        |Documentation Status|
        
        `Documentation hosted by
        ReadTheDocs <http://lahja.readthedocs.io/en/latest/>`__
        
        **DISCLAIMER: This is alpha state software. Expect bugs.**
        
        *Lahja is a generic multi process event bus implementation written in
        Python 3.6+ to enable lightweight inter-process communication, based on
        non-blocking asyncio.*
        
        What is this for?
        -----------------
        
        Lahja is tailored around one primary use case: enabling multi process
        Python applications to communicate through events between processes in a
        non-blocking asyncio fashion.
        
        Key facts:
        
        -  non-blocking APIs based on asyncio
        -  lightweight and simple (e.g no IPC pipes etc)
        -  easy multicasting of events (one event, many independent receivers)
        -  easy event routing (e.g route event X only to process group Y)
        -  multiple consuming APIs to adapt to different use cases and styles
        
        TODOs
        -----
        
        -  Push boundaries (don't push this into process x)
        -  Testing
        
        Developer Setup
        ---------------
        
        If you would like to hack on lahja, please check out the `Ethereum
        Development Tactical
        Manual <https://github.com/pipermerriam/ethereum-dev-tactical-manual>`__
        for information on how we do:
        
        -  Testing
        -  Pull Requests
        -  Code Style
        -  Documentation
        
        Development Environment Setup
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        You can set up your dev environment with:
        
        .. code:: sh
        
            git clone https://github.com/cburgdorf/lahja
            cd lahja
            virtualenv -p python3 venv
            . venv/bin/activate
            pip install -e .[dev]
        
        Testing Setup
        ~~~~~~~~~~~~~
        
        During development, you might like to have tests run on every file save.
        
        Show flake8 errors on file change:
        
        .. code:: sh
        
            # Test flake8
            when-changed -v -s -r -1 lahja/ tests/ -c "clear; flake8 lahja tests && echo 'flake8 success' || echo 'error'"
        
        Run multi-process tests in one command, but without color:
        
        .. code:: sh
        
            # in the project root:
            pytest --numprocesses=4 --looponfail --maxfail=1
            # the same thing, succinctly:
            pytest -n 4 -f --maxfail=1
        
        Run in one thread, with color and desktop notifications:
        
        .. code:: sh
        
            cd venv
            ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on lahja failed'" ../tests ../lahja
        
        Release setup
        ~~~~~~~~~~~~~
        
        For Debian-like systems:
        
        ::
        
            apt install pandoc
        
        To release a new version:
        
        .. code:: sh
        
            make release bump=$$VERSION_PART_TO_BUMP$$
        
        How to bumpversion
        ^^^^^^^^^^^^^^^^^^
        
        The version format for this repo is ``{major}.{minor}.{patch}`` for
        stable, and ``{major}.{minor}.{patch}-{stage}.{devnum}`` for unstable
        (``stage`` can be alpha or beta).
        
        To issue the next version in line, specify which part to bump, like
        ``make release bump=minor`` or ``make release bump=devnum``.
        
        If you are in a beta version, ``make release bump=stage`` will switch to
        a stable.
        
        To issue an unstable version when the current version is stable, specify
        the new version explicitly, like
        ``make release bump="--new-version 4.0.0-alpha.1 devnum"``
        
        .. |Documentation Status| image:: https://readthedocs.org/projects/lahja/badge/?version=latest
           :target: http://lahja.readthedocs.io/en/latest/?badge=latest
        
Keywords: ethereum
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.5, <4
Provides-Extra: test
Provides-Extra: test-asyncio
Provides-Extra: snappy
Provides-Extra: dev
Provides-Extra: doc
Provides-Extra: lint
