Process Events In Style

This library aims to simplify the common pattern of event processing. It simplifies the process of filtering, dispatching and pre-processing events as well as injecting dependencies in event processors.

The only requirement is that your events are regular python dictionaries.

Take a look at the following examples to get an overview of the features available! Of course, you can mix and combine them in any way you like to create more complex scenarios.



  • v3.2.0: Allow Dyn filters to modify the event.

  • v3.1.6: Fix type hints with Depends.

  • v3.1.5: Add py.typed file to support type hints.

  • v3.1.4: Simplify calling processors by making EventProcessor callable.

  • v3.1.3: Fix a bug with invocation when an event matches several filters.

  • v3.1.2: Fix an incorrect import.

  • v3.1.1: Relax pydantic requirements to help dependency management for downstream projects.

  • v3.1.0: Add error handling strategies for processors.

  • v3.0.1: Improve the import path for results.

  • v3.0.0:
    • BREAKING CHANGE: The value returned by invoking a processor is now a Result.

    • BREAKING CHANGE: Dependencies are now only cached per-invocation.

    • It’s not possible to use identical or equivalent filters for different processors.

  • v2.6.0: Support getting a list of invoked processors after an invocation

  • v2.5.0: Support adding multiple subprocessors at once and also adding all processors from all modules in a package

  • v2.4.1: Fix scalar dependency resolution without pydantic (only raise on actual missing values and not none values)

  • v2.4.0: Support scalar value dependencies in processor parameters

  • v2.3.1: Raise the correct exception when processor parameters are invalid due to optional args

  • v2.3.0: Support dynamic filters

  • v2.2.0: Support pydantic models as processor dependencies

  • v2.1.1: Fix negative ranks and document the -1 rank usage

  • v2.1.0: Add number comparison filters

  • v2.0.0: Refactor a lot of the internals, make filters more user friendly and dependency injection more intuitive

  • v1.1.0: Add support for subprocessors

  • v1.0.0: Move the state and decorators inside a class

  • v0.0.1: Initial release

Indices and tables