Source code for spindoctor.support.exceptions

"""Typed exceptions shared across the navigation core.

Contract violations must not be expressed as bare ``assert`` statements:
asserts are stripped under ``python -O``, and inside the orchestrator's
broad plugin sandboxes an ``AssertionError`` would be swallowed as an
ordinary technique failure.  Raising :class:`NavContractError` instead
keeps the check active in optimized runs and lets the orchestrator treat
the violation distinctly (error-level log plus a failed ``NavResult``
with ``NavStatusReason.CONTRACT_VIOLATION``).
"""

__all__ = ['NavContractError']