A command dispatcher and message bus implementation for python.

Banshee draws inspiration from Brighter and Symfony Messenger. It allows you to decouple an interface such as an MVC controller from domain logic it triggers.

By decoupling domain logic from interface, both can evolve without impacting the other. You can add, remove, or change handlers without having to change the interface. You can also swap the interface out completely without touching the domain logic.

Though not required, the library functions well in a hexagonal or clean architecture. It can isolate the external services and allows a clean domain model. Defining the interface of the domain as a set of Commands and Events.