Skip to main content

A lightweight publish-subscribe event system for Python

Project description

ALT-event-system

A lightweight, flexible publish-subscribe event system for Python applications.

PyPI version Python Support License: MIT

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 system
  • subscribe(event_type, handler) - Subscribe to events
  • emit(event_type, data, source=None) - Emit an event
  • get_history(event_type=None, limit=100) - Get event history
  • clear_history() - Clear event history
  • get_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

alt_event_system-0.1.0.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

alt_event_system-0.1.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

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

Hashes for alt_event_system-0.1.0.tar.gz
Algorithm Hash digest
SHA256 daae85186b7ef78335cf756932cc32bf6cc02a8e9bcd833007e3f4c88e867ae5
MD5 16ebb8edb4eddfd5ef5d4b5e257adbad
BLAKE2b-256 95a4251c0339908ab558b13f57fa75f4fe259e73bf5c2509611678614d286c8d

See more details on using hashes here.

File details

Details for the file alt_event_system-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for alt_event_system-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 de71ceea8c61f2278a6a44ad917772597f2589e4f0624939f2852d203f5f4fe3
MD5 80c43296ae71bc071b04a76b1294253f
BLAKE2b-256 322ea426d0a9be74e62d9dc7b57aafab06654f872d89241f2fa88d06339a1431

See more details on using hashes here.

Supported by

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