A lightweight publish-subscribe event system for Python
Project description
ALT-event-system
A lightweight, flexible publish-subscribe event system for Python applications.
Overview
ALT-event-system provides a simple yet powerful event-driven architecture that enables loose coupling between components through an event bus pattern. Perfect for building reactive applications, plugin systems, or any scenario where you need decoupled communication.
Features
- 🚀 Simple API - Easy to understand and use
- 🎯 Type-safe - Full type hints for better IDE support
- 🔌 Loose Coupling - Components communicate without direct dependencies
- 🌟 Wildcard Subscriptions - Subscribe to all events with
* - 📜 Event History - Track and query past events
- 🛡️ Error Isolation - Handler errors don't affect other handlers
- 🔍 Source Tracking - Optional source identification for events
- ⚡ Zero Dependencies - Uses only Python standard library
Installation
pip install ALT-event-system
Quick Start
from alt_event_system import EventSystem
# Create an event system
events = EventSystem()
# Define a handler
def on_user_login(event):
print(f"User {event.data['user_id']} logged in from {event.data['ip']}")
# Subscribe to events
events.subscribe("user.login", on_user_login)
# Emit events
events.emit("user.login", {"user_id": 123, "ip": "192.168.1.1"})
Advanced Usage
Wildcard Subscriptions
Subscribe to all events:
def log_all_events(event):
print(f"[{event.timestamp}] {event.type}: {event.data}")
events.subscribe("*", log_all_events)
Event History
Track and query past events:
# Get recent events
history = events.get_history(limit=10)
# Filter by event type
login_events = events.get_history(event_type="user.login")
Error Handling
Handler errors are isolated:
def safe_handler(event):
print("I still work even if others fail!")
events.subscribe("test.event", safe_handler)
API Reference
EventSystem()- Create a new event systemsubscribe(event_type, handler)- Subscribe to eventsemit(event_type, data, source=None)- Emit an eventget_history(event_type=None, limit=100)- Get event historyclear_history()- Clear event historyget_subscriber_count(event_type)- Count subscribers
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Author
Avi Layani - avilayani@gmail.com
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alt_event_system-0.1.0.tar.gz.
File metadata
- Download URL: alt_event_system-0.1.0.tar.gz
- Upload date:
- Size: 9.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
daae85186b7ef78335cf756932cc32bf6cc02a8e9bcd833007e3f4c88e867ae5
|
|
| MD5 |
16ebb8edb4eddfd5ef5d4b5e257adbad
|
|
| BLAKE2b-256 |
95a4251c0339908ab558b13f57fa75f4fe259e73bf5c2509611678614d286c8d
|
File details
Details for the file alt_event_system-0.1.0-py3-none-any.whl.
File metadata
- Download URL: alt_event_system-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de71ceea8c61f2278a6a44ad917772597f2589e4f0624939f2852d203f5f4fe3
|
|
| MD5 |
80c43296ae71bc071b04a76b1294253f
|
|
| BLAKE2b-256 |
322ea426d0a9be74e62d9dc7b57aafab06654f872d89241f2fa88d06339a1431
|