petitRADTRANS.sbi.compatibility
===============================

.. py:module:: petitRADTRANS.sbi.compatibility

.. autoapi-nested-parse::

   Compatibility metadata and schema checks for SBI task families.



Exceptions
----------

.. autoapisummary::

   petitRADTRANS.sbi.compatibility.TaskCompatibilityError


Classes
-------

.. autoapisummary::

   petitRADTRANS.sbi.compatibility.TaskFingerprint
   petitRADTRANS.sbi.compatibility.CompatibilityReport


Functions
---------

.. autoapisummary::

   petitRADTRANS.sbi.compatibility._freeze_json_value
   petitRADTRANS.sbi.compatibility.make_digest
   petitRADTRANS.sbi.compatibility.compare_named_mappings


Module Contents
---------------

.. py:function:: _freeze_json_value(value: Any) -> Any

.. py:function:: make_digest(payload: Mapping[str, Any]) -> str

   Return a deterministic SHA256 digest for a JSON-serializable payload.


.. py:class:: TaskFingerprint

   Deterministic fingerprint of an SBI task family.


   .. py:attribute:: digest
      :type:  str


   .. py:attribute:: payload
      :type:  Mapping[str, Any]


   .. py:method:: from_payload(payload: Mapping[str, Any]) -> TaskFingerprint
      :classmethod:



.. py:class:: CompatibilityReport

   Describe whether two task-family descriptors are compatible.


   .. py:attribute:: is_compatible
      :type:  bool


   .. py:attribute:: mismatches
      :type:  tuple[str, Ellipsis]
      :value: ()



   .. py:attribute:: expected
      :type:  Mapping[str, Any]


   .. py:attribute:: observed
      :type:  Mapping[str, Any]


   .. py:method:: raise_for_incompatibility() -> None

      Raise a typed error when the report contains mismatches.



.. py:exception:: TaskCompatibilityError

   Bases: :py:obj:`ValueError`


   Raised when an observation or artifact is incompatible with a task.


.. py:function:: compare_named_mappings(expected: Mapping[str, Any], observed: Mapping[str, Any], prefix: str) -> CompatibilityReport

   Compare two mapping payloads and report incompatible keys or values.


