EvSys

protocols

Protocol contracts for every extension point.

We use typing.Protocol (PEP 544) instead of ABCs so extensions don't have to subclass anything from the library - any class that implements the methods satisfies the protocol. This is what makes third-party algorithms / verifiers / metrics trivial to add.

A few protocols are runtime-checkable so the registry can give better error messages, but most are duck-typed.