BehaviorEnum: an Enum subclass that bundles a value with a callable - stdlib candidate?

I agree with this approach, the @member syntax is definitely cleaner and having the behavior defined inline makes more sense than referencing an external function through the tuple.

I had kept the tuple of value and function because in my specific use case the value was a camel cased string like "Create"which I was using in both logs and as the input to the handler, but with your approach I could get that back with operation.name.title() and the case-insensitive _missing_ handles the lookup from the event payload cleanly too, so this is a neater design overall.