Skip to content

Prasar is a robust, type-safe event handling framework for Python. Supporting both sync and async events, it offers strong type checking and custom colored logging. With an easy-to-use API for binding and emitting events, comprehensive error handling, and Python 3.7+ compatibility, Prasar simplifies event-driven programming.

License

Notifications You must be signed in to change notification settings

mishrababhishek/prasar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌟 Prasar Event Handling Framework 🌟

Prasar Logo

PyPI version License: MIT Python Versions

🚀 Robust, Type-Safe, and Asynchronous Event Handling for Python 🐍


✨ Features

  • 🔄 Support for both synchronous and asynchronous events
  • 🛡️ Strong type checking for event arguments and return types
  • 🌈 Custom logging with colored output
  • 🎛️ Easy-to-use API for binding and emitting events
  • 🧪 Comprehensive error handling and validation

🛠️ Installation

To install Prasar, simply use pip:

pip install prasar

📚 Dependencies

  • Python 3.7+
  • colorama
  • typing

🚀 Quick Start

from prasar import Prasar

# Create a Prasar instance
prasar = Prasar()

# Define and bind a synchronous event
def greet(name: str) -> str:
    return f"Hello, {name}!"

prasar.bind_event("greet", greet, str, return_type=str)

# Emit the event
result = prasar.emit("greet", "Alice")
print(result)  # Output: Hello, Alice!

# Define and bind an asynchronous event
async def fetch_data(url: str) -> dict:
    # Simulating async operation
    return {"data": "Some data from " + url}

prasar.bind_async_event("fetch", fetch_data, str, return_type=dict)

# Emit the async event
import asyncio
result = asyncio.run(prasar.async_emit("fetch", "https://example.com"))
print(result)  # Output: {'data': 'Some data from https://example.com'}

🌈 Logging

Prasar includes a custom logging module with colorful output:

from prasar_logger import Logger

logger = Logger("MyLogger").get_logger()
logger.info("✅ This is an info message")
logger.error("❌ This is an error message")

📘 API Reference

Prasar Class

Method Description
bind_event() Binds a synchronous event
bind_async_event() Binds an asynchronous event
emit() Emits a synchronous event
async_emit() Emits an asynchronous event

Logger Class

Method Description
init() Initializes a new Logger instance
get_logger() Returns the configured logger object

For detailed API documentation, please visit our API Reference.

🤝 Contributing

We welcome contributions! Please see our Contribution Guidelines for more details.

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.

🙏 Acknowledgements

  • Thanks to all our contributors and users!
  • Inspired by various event handling systems in the Python ecosystem.
Made with ❤️ by Abhishek Mishra

⭐ Star us on GitHub | 🐦 Follow us on Instagram

About

Prasar is a robust, type-safe event handling framework for Python. Supporting both sync and async events, it offers strong type checking and custom colored logging. With an easy-to-use API for binding and emitting events, comprehensive error handling, and Python 3.7+ compatibility, Prasar simplifies event-driven programming.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages