Skip to content

Latest commit

 

History

History
120 lines (79 loc) · 6.21 KB

readme.md

File metadata and controls

120 lines (79 loc) · 6.21 KB

🌟 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