Core Utilities
==============

Core classes for definitions, namespaces, paths, and utilities.

**When to use**: Use ``Definitions`` to register custom types, ``Path`` to
navigate nested structures, and ``Logging`` for debug output.

Quick Start
-----------

.. code-block:: python

   from dsviper import Definitions, NameSpace, ValueUUId, Path, LoggerConsole, Logging

   # Create namespace for your types
   ns = NameSpace(ValueUUId("f529bc42-0618-4f54-a3fb-d55f95c5ad03"), "MyApp")

   # Create and register definitions
   defs = Definitions()

   # Paths navigate nested structures
   path = Path.from_field("user").field("address").field("city").const()
   city = path.at(document)  # Get value at path
   path.set(document, "Paris")  # Set value at path

   # Logging for debugging
   logger = LoggerConsole(Logging.LEVEL_DEBUG)
   log = logger.logging()
   log.info("Application started")
   log.error("Something went wrong")

Key Classes
-----------

.. list-table::
   :header-rows: 1
   :widths: 25 35 40

   * - Class
     - Purpose
     - Example
   * - :class:`Definitions`
     - Register custom types
     - ``defs = Definitions()``
   * - :class:`NameSpace`
     - Group types by namespace
     - ``ns = NameSpace(uuid, "App")``
   * - :class:`Path`
     - Navigate nested data
     - ``Path.from_field("x").field("y")``
   * - :class:`Logging`
     - Debug output
     - ``logger.logging().info(msg)``
   * - :class:`Error`
     - Parse error messages
     - ``Error.parse(str(e))``

Definitions
-----------

.. autosummary::
   :toctree: generated/
   :nosignatures:

   dsviper.Definitions
   dsviper.DefinitionsConst
   dsviper.DefinitionsCollector
   dsviper.DefinitionsInspector
   dsviper.DefinitionsMapper
   dsviper.DefinitionsExtendInfo

Namespace
---------

.. autosummary::
   :toctree: generated/
   :nosignatures:

   dsviper.NameSpace

Paths
-----

.. autosummary::
   :toctree: generated/
   :nosignatures:

   dsviper.Path
   dsviper.PathConst
   dsviper.PathComponent
   dsviper.PathElementInfo
   dsviper.PathEntryKeyInfo

Function Pools
--------------

.. autosummary::
   :toctree: generated/
   :nosignatures:

   dsviper.Function
   dsviper.FunctionPool
   dsviper.FunctionPoolFunctions
   dsviper.FunctionPrototype

Hashing
-------

.. autosummary::
   :toctree: generated/
   :nosignatures:

   dsviper.Hashing
   dsviper.HashCRC32
   dsviper.HashMD5
   dsviper.HashSHA1
   dsviper.HashSHA256
   dsviper.HashSHA3

Logging
-------

.. autosummary::
   :toctree: generated/
   :nosignatures:

   dsviper.Logging
   dsviper.LoggerConsole
   dsviper.LoggerPrint
   dsviper.LoggerReport
   dsviper.LoggerNull

Remote Services
---------------

.. autosummary::
   :toctree: generated/
   :nosignatures:

   dsviper.ServiceRemote
   dsviper.ServiceRemoteFunction
   dsviper.ServiceRemoteFunctionPool
   dsviper.ServiceRemoteFunctionPoolFunction
   dsviper.ServiceRemoteFunctionPoolFunctions
   dsviper.ServiceRemoteFunctionPools
   dsviper.ServiceRemoteAttachmentFunction
   dsviper.ServiceRemoteAttachmentFunctionPool
   dsviper.ServiceRemoteAttachmentFunctionPoolFunction
   dsviper.ServiceRemoteAttachmentFunctionPoolFunctions
   dsviper.ServiceRemoteAttachmentFunctionPools

Utilities
---------

.. autosummary::
   :toctree: generated/
   :nosignatures:

   dsviper.ViperError
   dsviper.Error
   dsviper.Cancelation
   dsviper.Semaphore
   dsviper.SharedMemory
   dsviper.Socket
   dsviper.Float16
   dsviper.Fuzzer
   dsviper.KeyHelper
   dsviper.KeyNamer
