:py:mod:`core.model.datum`
==========================

.. py:module:: core.model.datum

.. autodoc2-docstring:: core.model.datum
   :allowtitles:

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

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`Datum <core.model.datum.Datum>`
     - .. autodoc2-docstring:: core.model.datum.Datum
          :summary:

Data
~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`T <core.model.datum.T>`
     - .. autodoc2-docstring:: core.model.datum.T
          :summary:

API
~~~

.. py:data:: T
   :canonical: core.model.datum.T
   :value: None

   .. autodoc2-docstring:: core.model.datum.T

.. py:class:: Datum
   :canonical: core.model.datum.Datum

   .. autodoc2-docstring:: core.model.datum.Datum

   .. py:attribute:: name
      :canonical: core.model.datum.Datum.name
      :type: polyconf.core.typing_.PrimitiveIndex
      :value: None

      .. autodoc2-docstring:: core.model.datum.Datum.name

   .. py:attribute:: value
      :canonical: core.model.datum.Datum.value
      :type: polyconf.core.typing_.PrimitiveScalar
      :value: None

      .. autodoc2-docstring:: core.model.datum.Datum.value

   .. py:attribute:: children
      :canonical: core.model.datum.Datum.children
      :type: set[core.model.datum.Datum]
      :value: None

      .. autodoc2-docstring:: core.model.datum.Datum.children

   .. py:attribute:: sources
      :canonical: core.model.datum.Datum.sources
      :type: set[str]
      :value: None

      .. autodoc2-docstring:: core.model.datum.Datum.sources

   .. py:property:: children_names
      :canonical: core.model.datum.Datum.children_names
      :type: set[polyconf.core.typing_.PrimitiveIndex]

      .. autodoc2-docstring:: core.model.datum.Datum.children_names

   .. py:property:: as_native_value
      :canonical: core.model.datum.Datum.as_native_value
      :type: polyconf.core.typing_.PrimitiveType

      .. autodoc2-docstring:: core.model.datum.Datum.as_native_value

   .. py:method:: add_child(datum: core.model.datum.Datum, merge: bool = False) -> None
      :canonical: core.model.datum.Datum.add_child

      .. autodoc2-docstring:: core.model.datum.Datum.add_child

   .. py:method:: remove_child(datum: core.model.datum.Datum) -> None
      :canonical: core.model.datum.Datum.remove_child

      .. autodoc2-docstring:: core.model.datum.Datum.remove_child

   .. py:method:: put(name: polyconf.core.typing_.PrimitiveIndex, value: polyconf.core.typing_.PrimitiveScalar = None, source: str | None = None, merge: bool = False) -> None
      :canonical: core.model.datum.Datum.put

      .. autodoc2-docstring:: core.model.datum.Datum.put

   .. py:method:: traverse() -> None
      :canonical: core.model.datum.Datum.traverse

      .. autodoc2-docstring:: core.model.datum.Datum.traverse

   .. py:method:: get(name: polyconf.core.typing_.PrimitiveIndex, default: core.model.datum.T | None = None) -> core.model.datum.Datum | core.model.datum.T | None
      :canonical: core.model.datum.Datum.get

      .. autodoc2-docstring:: core.model.datum.Datum.get

   .. py:method:: eq_helper() -> str
      :canonical: core.model.datum.Datum.eq_helper

      .. autodoc2-docstring:: core.model.datum.Datum.eq_helper

   .. py:method:: looks_like() -> typing.Type[str | int | bool | list[typing.Any] | dict[typing.Any, typing.Any]]
      :canonical: core.model.datum.Datum.looks_like

      .. autodoc2-docstring:: core.model.datum.Datum.looks_like

   .. py:method:: assimilate(name: polyconf.core.typing_.PrimitiveIndex, data: polyconf.core.typing_.PrimitiveType, source: str, parent: typing.Self, merge: bool = False) -> None
      :canonical: core.model.datum.Datum.assimilate
      :classmethod:

      .. autodoc2-docstring:: core.model.datum.Datum.assimilate

   .. py:method:: from_dict(data: dict[str, typing.Any], source: str = 'cls-factory') -> typing.Self
      :canonical: core.model.datum.Datum.from_dict
      :classmethod:

      .. autodoc2-docstring:: core.model.datum.Datum.from_dict

   .. py:method:: _deserialize(data: polyconf.core.typing_.PrimitiveDict, default_name: str = 'root') -> typing.Self
      :canonical: core.model.datum.Datum._deserialize
      :classmethod:

      .. autodoc2-docstring:: core.model.datum.Datum._deserialize

   .. py:method:: deserialize(data: polyconf.core.typing_.PrimitiveDict) -> typing.Self
      :canonical: core.model.datum.Datum.deserialize
      :classmethod:

      .. autodoc2-docstring:: core.model.datum.Datum.deserialize

   .. py:method:: serialize() -> polyconf.core.typing_.PrimitiveDict
      :canonical: core.model.datum.Datum.serialize

      .. autodoc2-docstring:: core.model.datum.Datum.serialize

   .. py:method:: __or__(other: typing.Any) -> core.model.datum.Datum
      :canonical: core.model.datum.Datum.__or__

      .. autodoc2-docstring:: core.model.datum.Datum.__or__

   .. py:method:: __ror__(other: core.model.datum.Datum) -> core.model.datum.Datum
      :canonical: core.model.datum.Datum.__ror__

      .. autodoc2-docstring:: core.model.datum.Datum.__ror__

   .. py:method:: __getitem__(item: polyconf.core.typing_.PrimitiveIndex) -> core.model.datum.Datum | None
      :canonical: core.model.datum.Datum.__getitem__

      .. autodoc2-docstring:: core.model.datum.Datum.__getitem__

   .. py:method:: __contains__(item: core.model.datum.Datum | str) -> bool
      :canonical: core.model.datum.Datum.__contains__

      .. autodoc2-docstring:: core.model.datum.Datum.__contains__

   .. py:method:: __hash__() -> int
      :canonical: core.model.datum.Datum.__hash__

   .. py:method:: __eq__(other: typing.Any) -> bool
      :canonical: core.model.datum.Datum.__eq__

   .. py:method:: __lt__(other: typing.Self) -> bool
      :canonical: core.model.datum.Datum.__lt__

   .. py:method:: __le__(other: typing.Self) -> bool
      :canonical: core.model.datum.Datum.__le__

   .. py:method:: __gt__(other: typing.Self) -> bool
      :canonical: core.model.datum.Datum.__gt__

   .. py:method:: __ge__(other: typing.Self) -> bool
      :canonical: core.model.datum.Datum.__ge__
