_protocols#

cultivars.engine._core._protocols = <module 'cultivars.engine._core._protocols' from '/home/runner/work/cultivars/cultivars/src/cultivars/engine/_core/_protocols.py'>[source]#

Structural contracts satisfied by fitted results and model specifications.

These are the duck-typed interfaces the toolkit subpackages (diagnostics, forecast, spectral) program against. They are deliberately structural rather than nominal: a user-defined result that happens to expose llf, nobs and the criteria surface is accepted by every diagnostic without subclassing anything from this package.

The nominal counterparts – the base classes that concrete results actually inherit – live in cultivars._internals._models and implement these protocols.