Skip to main content

Lahja

Documentation Status

Documentation hosted by ReadTheDocs

DISCLAIMER: This is alpha state software. Expect bugs.

Lahja is a generic event bus implementation written in Python 3.6+ that enables lightweight inter-process communication, based on non-blocking asynchronous IO

What is this for?

Lahja is tailored around one primary use case: enabling multi process Python applications to communicate via events between processes using non-blocking APIs based on asyncio or trio.

Key facts:

  • non-blocking APIs using asynchronous IO (asyncio / trio)
  • lightweight with zero dependencies
  • simple to use
  • easy multicasting of events (one event, many independent receivers)
  • easy event routing (e.g route event X only to certain receivers)
  • multiple consuming APIs to adapt to different use cases and styles

Developer Setup

If you would like to hack on lahja, please check out the Snake Charmers 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:

git clone https://github.com/ethereum/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:

# 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:

# 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:

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:

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"

Release files for lahja 0.17.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lahja 0.17.0
File Size Uploaded
lahja-0.17.0.tar.gz 33.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lahja 0.17.0
File Interpreter ABI Platform
lahja-0.17.0-py3-none-any.whl Python 3 none any Details

Total release size: 73.5 kB

Release files / lahja-0.17.0.tar.gz

Download URL lahja-0.17.0.tar.gz
Size 33.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7f9e58acd1efa2133802c03c3602c141de8c3962448f4f5b0c3b6bdf1f15f143
BLAKE2b-256 checksum
How to use checksums
50cd2a516d4daa7e2aba26208a088332ecc9015ba50f097f5f6a9eb9f6e34acb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

Release files / lahja-0.17.0-py3-none-any.whl

Download URL lahja-0.17.0-py3-none-any.whl
Size 40.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1eeb6448c8a8acac054b605eb617139181b12b85f9c87d70f4f7590afaad7d2c
BLAKE2b-256 checksum
How to use checksums
aeacd632a5dd71d0636178bcf88f35c2396d90ba237e08a892c12615a5b1e07a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page