{"id":9439,"library":"aeventkit","title":"aeventkit: Event-Driven Data Pipelines","description":"aeventkit is an active Python library (current version 2.1.0) for building event-driven data pipelines. It leverages Pydantic v2 for robust data validation and AnyIO for asynchronous execution, making it suitable for modern, high-performance applications. The library focuses on clear separation of concerns with publishers, subscribers, and an event bus.","status":"active","version":"2.1.0","language":"python","source_language":"en","source_url":"https://github.com/ib-api-reloaded/eventkit","tags":["event-driven","async","data-pipelines","pydantic","anyio","event-bus"],"install":[{"cmd":"pip install aeventkit","lang":"bash","label":"Install aeventkit"}],"dependencies":[{"reason":"Data validation and event model definition (requires >=2.0.0)","package":"pydantic","optional":false},{"reason":"Asynchronous concurrency backend (requires >=4.0.0)","package":"anyio","optional":false},{"reason":"Logging (requires >=0.7.0)","package":"loguru","optional":false},{"reason":"Rich terminal output (requires >=13.0.0)","package":"rich","optional":false}],"imports":[{"wrong":"from aeventkit import Event","symbol":"Event","correct":"from eventkit import Event"}],"quickstart":{"code":"import anyio\nfrom aeventkit import Event, EventBus, EventSubscriber, EventPublisher\nfrom pydantic import Field\n\nclass MyEvent(Event):\n    message: str = Field(..., description=\"A simple test message\")\n\nclass MySubscriber(EventSubscriber):\n    async def handle(self, event: MyEvent):\n        print(f\"Subscriber received: {event.message}\")\n\nasync def main():\n    bus = EventBus()\n    subscriber = MySubscriber()\n    publisher = EventPublisher()\n\n    bus.register_subscriber(subscriber)\n    bus.register_publisher(publisher)\n\n    print(\"Publishing event...\")\n    await publisher.publish(MyEvent(message=\"Hello, aeventkit!\"))\n    await anyio.sleep(0.1) # Give subscriber a moment to process\n    print(\"Event published and potentially handled.\")\n\nif __name__ == \"__main__\":\n    anyio.run(main)\n","lang":"python","description":"This example demonstrates how to define a custom Event, create a Publisher and Subscriber, register them with an EventBus, and publish an event. It uses `anyio.run()` to execute the asynchronous main function, which is the standard entry point for aeventkit applications."},"warnings":[{"fix":"Ensure your application's entry point uses `anyio.run()` or integrates within an existing `asyncio` or `anyio` event loop. All event handlers and interactions should be `async` functions.","message":"aeventkit is designed for asynchronous operations using AnyIO. All core components and interaction methods are `async`/`await` compatible. Attempting to call async methods from synchronous code without an event loop or proper execution context will result in errors.","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Upgrade Pydantic to version 2 or higher (`pip install 'pydantic>=2.0.0' --upgrade`). Verify no other project dependencies are pinning Pydantic to v1.","message":"aeventkit strictly requires Pydantic v2 (>=2.0.0). Projects using Pydantic v1 will encounter `PydanticImportError` or validation issues due to API changes between Pydantic versions.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Always call `bus.register_publisher(publisher_instance)` and `bus.register_subscriber(subscriber_instance)` after initializing your bus and components.","message":"Publishers and Subscribers must be registered with an `EventBus` instance to communicate. Creating an `EventPublisher` or `EventSubscriber` alone does not make them active participants in the event stream.","severity":"gotcha","affected_versions":">=2.0.0"}],"env_vars":null,"search_vec":"'2.1.0':15 'activ':10 'aeventkit':1,7 'anyio':32,68 'applic':44 'async':63 'asynchron':34 'build':17 'bus':59,71 'clear':49 'concern':52 'current':13 'data':5,21,29,65 'data-pipelin':64 'driven':4,20,62 'event':3,19,58,61,70 'event-bus':69 'event-driven':2,18,60 'execut':35 'focus':47 'high':42 'high-perform':41 'leverag':24 'librari':12,46 'make':36 'modern':40 'perform':43 'pipelin':6,22,66 'publish':54 'pydant':25,67 'python':11 'robust':28 'separ':50 'subscrib':55 'suitabl':38 'v2':26 'valid':30 'version':14","created_at":"2026-04-17T01:18:55.506813+00:00","updated_at":"2026-04-17T01:18:55.506813+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"2.1.0","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/ib-api-reloaded/eventkit","docs":null,"changelog":null,"pypi":"https://pypi.org/project/aeventkit/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["workflow","data","serialization","http-networking"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-30","last_verified":"2026-06-30","next_check":"2026-07-30","install_tag":null}}