Skip to content

omnipy.components.json.models

JSON model classes for validating and serializing JSON-compatible content.

This module defines Omnipy's public JSON model variants, ranging from scalar-only models to specialized list/dict containers and generic custom container models.

CLASS DESCRIPTION
JsonCustomDictModel

Validate JSON objects constrained to a JSON-compatible value type.

JsonCustomListModel

Validate JSON arrays constrained to a JSON-compatible item type.

JsonDictModel

JsonDictModel is a limited JSON model supporting only JSON content

JsonDictOfDictsModel

Validate JSON objects whose values are JSON objects.

JsonDictOfDictsOfScalarsModel

Validate JSON objects whose values are scalar-only JSON objects.

JsonDictOfListsModel

Validate JSON objects whose values are JSON arrays.

JsonDictOfListsOfDictsModel

Validate JSON objects whose values are arrays of JSON objects.

JsonDictOfListsOfScalarsModel

Validate JSON objects whose values are scalar-only JSON arrays.

JsonDictOfNestedListsModel

Validate JSON objects whose values are nested JSON arrays.

JsonDictOfScalarsModel

Validate JSON objects whose values are scalar values.

JsonListModel

JsonListModel is a limited JSON model supporting only JSON content

JsonListOfDictsModel

Validate JSON arrays whose items are JSON objects.

JsonListOfDictsOfScalarsModel

Validate JSON arrays of scalar-only JSON objects.

JsonListOfListsModel

Validate JSON arrays whose items are JSON arrays.

JsonListOfListsOfScalarsModel

Validate JSON arrays of scalar-only JSON arrays.

JsonListOfNestedDictsModel

Validate JSON arrays whose items are nested JSON objects.

JsonListOfScalarsModel

Validate JSON arrays that contain only scalar values.

JsonListOrDictModel

JsonListOrDictModel is a general JSON model supporting any JSON

JsonModel

Model for validated JSON data.

JsonNestedDictsModel

Validate nested JSON objects whose leaves are scalar values.

JsonNestedListsModel

Validate nested JSON arrays whose leaves are scalar values.

JsonOnlyDictsModel

Model for JSON content composed only of scalars and nested objects.

JsonOnlyListsModel

Model for JSON content composed only of scalars and nested arrays.

JsonScalarModel

JSON model restricted to scalar JSON values.

ParseStrAsJsonMixin

Provide JSON-string pre-parsing behavior for model classes.

FUNCTION DESCRIPTION
is_json_model_instance_hack

Check if the given object is an instance of a JSON model class.

ATTRIBUTE DESCRIPTION
AnyJsonListOrDictModel

TYPE: TypeAlias

AnyJsonModel

TYPE: TypeAlias

AnyJsonOnlyDictsModel

TYPE: TypeAlias

AnyJsonOnlyListsModel

TYPE: TypeAlias

AnyJsonScalarModel

TYPE: TypeAlias

AnyJsonListOrDictModel module-attribute

AnyJsonListOrDictModel: TypeAlias = _JsonAnyListM | _JsonAnyDictM

AnyJsonModel module-attribute

AnyJsonModel: TypeAlias = AnyJsonScalarModel | AnyJsonListOrDictModel

AnyJsonOnlyDictsModel module-attribute

AnyJsonOnlyDictsModel: TypeAlias = AnyJsonScalarModel | _JsonNestedDictsM

AnyJsonOnlyListsModel module-attribute

AnyJsonOnlyListsModel: TypeAlias = AnyJsonScalarModel | _JsonNestedListsM

AnyJsonScalarModel module-attribute

AnyJsonScalarModel: TypeAlias = Model[None] | Model[int] | Model[float] | Model[str] | Model[bool]

JsonCustomDictModel

Bases: Model[_JsonDictM[_JsonBaseT]], Generic[_JsonBaseT]


              flowchart BT
              omnipy.components.json.models.JsonCustomDictModel[JsonCustomDictModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonCustomDictModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonCustomDictModel href "" "omnipy.components.json.models.JsonCustomDictModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON objects constrained to a JSON-compatible value type.

This generic model supports defining object-shaped JSON models with a caller-specified JSON-compatible value constraint.

Source code in src/omnipy/components/json/models.py
class JsonCustomDictModel(Model[_JsonDictM[_JsonBaseT]], Generic[_JsonBaseT]):
    """Validate JSON objects constrained to a JSON-compatible value type.

    This generic model supports defining object-shaped JSON models with a
    caller-specified JSON-compatible value constraint.
    """

    ...

JsonCustomListModel

Bases: Model[_JsonListM[_JsonBaseT]], Generic[_JsonBaseT]


              flowchart BT
              omnipy.components.json.models.JsonCustomListModel[JsonCustomListModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonCustomListModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonCustomListModel href "" "omnipy.components.json.models.JsonCustomListModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON arrays constrained to a JSON-compatible item type.

This generic model supports defining list-shaped JSON models with a caller-specified JSON-compatible item constraint.

Source code in src/omnipy/components/json/models.py
class JsonCustomListModel(Model[_JsonListM[_JsonBaseT]], Generic[_JsonBaseT]):
    """Validate JSON arrays constrained to a JSON-compatible item type.

    This generic model supports defining list-shaped JSON models with a
    caller-specified JSON-compatible item constraint.
    """

    ...

JsonDictModel

Bases: Model[_JsonAnyDictM]


              flowchart BT
              omnipy.components.json.models.JsonDictModel[JsonDictModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonDictModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonDictModel href "" "omnipy.components.json.models.JsonDictModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

JsonDictModel is a limited JSON model supporting only JSON content that has a dict (or "object" in JSON nomenclature) at the root. The values of the top-level dict can be any JSON content, though, any levels deep.

Examples:

>>> my_json = JsonDictModel({'a': None, 'b': [1, 12.5, {'abc': 123}]})
>>> my_json.to_data()
{'a': None, 'b': [1, 12.5, {'abc': 123}]}
>>> my_json.to_json()
'{"a": null, "b": [1, 12.5, {"abc": 123}]}'
>>> print(my_json.to_json(pretty=True))
{
  "a": null,
  "b": [
    1,
    12.5,
    {
      "abc": 123
    }
  ]
}
>>> try:
...     my_json = JsonDictModel([True, {'a': None, 'b': [1, 12.5, 'abc']}])
... except Exception as e:
...     print(str(e).splitlines()[0])
3 validation errors for JsonDictModel
Source code in src/omnipy/components/json/models.py
class JsonDictModel(Model[_JsonAnyDictM]):
    """
    JsonDictModel is a limited JSON model supporting only JSON content
    that has a dict (or "object" in JSON nomenclature) at the root.
    The values of the top-level dict can be any JSON content, though,
    any levels deep.

    Examples:
        >>> my_json = JsonDictModel({'a': None, 'b': [1, 12.5, {'abc': 123}]})
        >>> my_json.to_data()
        {'a': None, 'b': [1, 12.5, {'abc': 123}]}
        >>> my_json.to_json()
        '{"a": null, "b": [1, 12.5, {"abc": 123}]}'
        >>> print(my_json.to_json(pretty=True))
        {
          "a": null,
          "b": [
            1,
            12.5,
            {
              "abc": 123
            }
          ]
        }
        >>> try:
        ...     my_json = JsonDictModel([True, {'a': None, 'b': [1, 12.5, 'abc']}])
        ... except Exception as e:
        ...     print(str(e).splitlines()[0])
        3 validation errors for JsonDictModel

    """

JsonDictOfDictsModel

Bases: Model[_JsonDictM[_JsonAnyDictM]]


              flowchart BT
              omnipy.components.json.models.JsonDictOfDictsModel[JsonDictOfDictsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonDictOfDictsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonDictOfDictsModel href "" "omnipy.components.json.models.JsonDictOfDictsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON objects whose values are JSON objects.

This model enforces a top-level object where each value is another JSON object containing JSON-compatible values.

Source code in src/omnipy/components/json/models.py
class JsonDictOfDictsModel(Model[_JsonDictM[_JsonAnyDictM]]):
    """Validate JSON objects whose values are JSON objects.

    This model enforces a top-level object where each value is another JSON
    object containing JSON-compatible values.
    """

    ...

JsonDictOfDictsOfScalarsModel

Bases: Model[_JsonDictM[_JsonDictOfScalars]]


              flowchart BT
              omnipy.components.json.models.JsonDictOfDictsOfScalarsModel[JsonDictOfDictsOfScalarsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonDictOfDictsOfScalarsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonDictOfDictsOfScalarsModel href "" "omnipy.components.json.models.JsonDictOfDictsOfScalarsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON objects whose values are scalar-only JSON objects.

This model accepts top-level objects where each nested object contains only JSON scalar values.

Source code in src/omnipy/components/json/models.py
class JsonDictOfDictsOfScalarsModel(Model[_JsonDictM[_JsonDictOfScalars]]):
    """Validate JSON objects whose values are scalar-only JSON objects.

    This model accepts top-level objects where each nested object contains
    only JSON scalar values.
    """

    ...

JsonDictOfListsModel

Bases: Model[_JsonDictM[_JsonAnyListM]]


              flowchart BT
              omnipy.components.json.models.JsonDictOfListsModel[JsonDictOfListsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonDictOfListsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonDictOfListsModel href "" "omnipy.components.json.models.JsonDictOfListsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON objects whose values are JSON arrays.

This model enforces a top-level object shape where each value is a JSON array containing JSON-compatible content.

Source code in src/omnipy/components/json/models.py
class JsonDictOfListsModel(Model[_JsonDictM[_JsonAnyListM]]):
    """Validate JSON objects whose values are JSON arrays.

    This model enforces a top-level object shape where each value is a JSON
    array containing JSON-compatible content.
    """

    ...

JsonDictOfListsOfDictsModel

Bases: Model[_JsonDictM[_JsonListM[_JsonAnyDictM]]]


              flowchart BT
              omnipy.components.json.models.JsonDictOfListsOfDictsModel[JsonDictOfListsOfDictsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonDictOfListsOfDictsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonDictOfListsOfDictsModel href "" "omnipy.components.json.models.JsonDictOfListsOfDictsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON objects whose values are arrays of JSON objects.

This model enforces top-level object values to be arrays where each element is a JSON object.

Source code in src/omnipy/components/json/models.py
class JsonDictOfListsOfDictsModel(Model[_JsonDictM[_JsonListM[_JsonAnyDictM]]]):
    """Validate JSON objects whose values are arrays of JSON objects.

    This model enforces top-level object values to be arrays where each
    element is a JSON object.
    """

    ...

JsonDictOfListsOfScalarsModel

Bases: Model[_JsonDictM[_JsonListOfScalars]]


              flowchart BT
              omnipy.components.json.models.JsonDictOfListsOfScalarsModel[JsonDictOfListsOfScalarsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonDictOfListsOfScalarsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonDictOfListsOfScalarsModel href "" "omnipy.components.json.models.JsonDictOfListsOfScalarsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON objects whose values are scalar-only JSON arrays.

This model accepts top-level objects where each value is an array of JSON scalar values.

Source code in src/omnipy/components/json/models.py
class JsonDictOfListsOfScalarsModel(Model[_JsonDictM[_JsonListOfScalars]]):
    """Validate JSON objects whose values are scalar-only JSON arrays.

    This model accepts top-level objects where each value is an array of
    JSON scalar values.
    """

    ...

JsonDictOfNestedListsModel

Bases: Model[_JsonDictM[_JsonNestedListsM]]


              flowchart BT
              omnipy.components.json.models.JsonDictOfNestedListsModel[JsonDictOfNestedListsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonDictOfNestedListsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonDictOfNestedListsModel href "" "omnipy.components.json.models.JsonDictOfNestedListsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON objects whose values are nested JSON arrays.

This model accepts top-level objects where each value is a recursively nested JSON array structure.

Source code in src/omnipy/components/json/models.py
class JsonDictOfNestedListsModel(Model[_JsonDictM[_JsonNestedListsM]]):
    """Validate JSON objects whose values are nested JSON arrays.

    This model accepts top-level objects where each value is a recursively
    nested JSON array structure.
    """

    ...

JsonDictOfScalarsModel

Bases: Model[_JsonDictOfScalars]


              flowchart BT
              omnipy.components.json.models.JsonDictOfScalarsModel[JsonDictOfScalarsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonDictOfScalarsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonDictOfScalarsModel href "" "omnipy.components.json.models.JsonDictOfScalarsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON objects whose values are scalar values.

This model accepts top-level JSON objects and requires all values to be JSON scalar types.

Source code in src/omnipy/components/json/models.py
class JsonDictOfScalarsModel(Model[_JsonDictOfScalars]):
    """Validate JSON objects whose values are scalar values.

    This model accepts top-level JSON objects and requires all values to be
    JSON scalar types.
    """

    ...

JsonListModel

Bases: Model[_JsonAnyListM]


              flowchart BT
              omnipy.components.json.models.JsonListModel[JsonListModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonListModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonListModel href "" "omnipy.components.json.models.JsonListModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

JsonListModel is a limited JSON model supporting only JSON content that has a list (or "array" in JSON nomenclature) at the root. The content of the top-level list can be any JSON content, though, any levels deep.

Examples:

>>> my_json = JsonListModel([True, {'a': None, 'b': [1, 12.5, 'abc']}])
>>> my_json.to_data()
[True, {'a': None, 'b': [1, 12.5, 'abc']}]
>>> my_json.to_json()
'[true, {"a": null, "b": [1, 12.5, "abc"]}]'
>>> print(my_json.to_json(pretty=True))
[
  true,
  {
    "a": null,
    "b": [
      1,
      12.5,
      "abc"
    ]
  }
]
>>> try:
...     my_json = JsonListModel({'a': None, 'b': [1, 12.5, {'abc': 123}]})
... except Exception as e:
...     print(str(e).splitlines()[0])
3 validation errors for JsonListModel
Source code in src/omnipy/components/json/models.py
class JsonListModel(Model[_JsonAnyListM]):
    """
    JsonListModel is a limited JSON model supporting only JSON content
    that has a list (or "array" in JSON nomenclature) at the root. The
    content of the top-level list can be any JSON content, though, any
    levels deep.

    Examples:
        >>> my_json = JsonListModel([True, {'a': None, 'b': [1, 12.5, 'abc']}])
        >>> my_json.to_data()
        [True, {'a': None, 'b': [1, 12.5, 'abc']}]
        >>> my_json.to_json()
        '[true, {"a": null, "b": [1, 12.5, "abc"]}]'
        >>> print(my_json.to_json(pretty=True))
        [
          true,
          {
            "a": null,
            "b": [
              1,
              12.5,
              "abc"
            ]
          }
        ]
        >>> try:
        ...     my_json = JsonListModel({'a': None, 'b': [1, 12.5, {'abc': 123}]})
        ... except Exception as e:
        ...     print(str(e).splitlines()[0])
        3 validation errors for JsonListModel

    """

JsonListOfDictsModel

Bases: Model[_JsonListM[_JsonAnyDictM]]


              flowchart BT
              omnipy.components.json.models.JsonListOfDictsModel[JsonListOfDictsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonListOfDictsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonListOfDictsModel href "" "omnipy.components.json.models.JsonListOfDictsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON arrays whose items are JSON objects.

This model accepts a top-level array and enforces that every element is a JSON object with string keys and JSON-compatible values.

Source code in src/omnipy/components/json/models.py
class JsonListOfDictsModel(Model[_JsonListM[_JsonAnyDictM]]):
    """Validate JSON arrays whose items are JSON objects.

    This model accepts a top-level array and enforces that every element is
    a JSON object with string keys and JSON-compatible values.
    """

    ...

JsonListOfDictsOfScalarsModel

Bases: Model[_JsonListM[_JsonDictOfScalars]]


              flowchart BT
              omnipy.components.json.models.JsonListOfDictsOfScalarsModel[JsonListOfDictsOfScalarsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonListOfDictsOfScalarsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonListOfDictsOfScalarsModel href "" "omnipy.components.json.models.JsonListOfDictsOfScalarsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON arrays of scalar-only JSON objects.

This model accepts top-level arrays where each object value is limited to JSON scalar types.

Source code in src/omnipy/components/json/models.py
class JsonListOfDictsOfScalarsModel(Model[_JsonListM[_JsonDictOfScalars]]):
    """Validate JSON arrays of scalar-only JSON objects.

    This model accepts top-level arrays where each object value is limited
    to JSON scalar types.
    """

    ...

JsonListOfListsModel

Bases: Model[_JsonListM[_JsonAnyListM]]


              flowchart BT
              omnipy.components.json.models.JsonListOfListsModel[JsonListOfListsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonListOfListsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonListOfListsModel href "" "omnipy.components.json.models.JsonListOfListsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON arrays whose items are JSON arrays.

This model enforces one array nesting level at the top level, while allowing each nested array to contain general JSON-compatible content.

Source code in src/omnipy/components/json/models.py
class JsonListOfListsModel(Model[_JsonListM[_JsonAnyListM]]):
    """Validate JSON arrays whose items are JSON arrays.

    This model enforces one array nesting level at the top level, while
    allowing each nested array to contain general JSON-compatible content.
    """

    ...

JsonListOfListsOfScalarsModel

Bases: Model[_JsonListM[_JsonListOfScalars]]


              flowchart BT
              omnipy.components.json.models.JsonListOfListsOfScalarsModel[JsonListOfListsOfScalarsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonListOfListsOfScalarsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonListOfListsOfScalarsModel href "" "omnipy.components.json.models.JsonListOfListsOfScalarsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON arrays of scalar-only JSON arrays.

This model requires a top-level array where each nested array contains only JSON scalar values.

Source code in src/omnipy/components/json/models.py
class JsonListOfListsOfScalarsModel(Model[_JsonListM[_JsonListOfScalars]]):
    """Validate JSON arrays of scalar-only JSON arrays.

    This model requires a top-level array where each nested array contains
    only JSON scalar values.
    """

    ...

JsonListOfNestedDictsModel

Bases: Model[_JsonListM[_JsonNestedDictsM]]


              flowchart BT
              omnipy.components.json.models.JsonListOfNestedDictsModel[JsonListOfNestedDictsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonListOfNestedDictsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonListOfNestedDictsModel href "" "omnipy.components.json.models.JsonListOfNestedDictsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON arrays whose items are nested JSON objects.

This model accepts top-level arrays where each element is a recursively nested JSON object structure.

Source code in src/omnipy/components/json/models.py
class JsonListOfNestedDictsModel(Model[_JsonListM[_JsonNestedDictsM]]):
    """Validate JSON arrays whose items are nested JSON objects.

    This model accepts top-level arrays where each element is a recursively
    nested JSON object structure.
    """

    ...

JsonListOfScalarsModel

Bases: Model[_JsonListOfScalars]


              flowchart BT
              omnipy.components.json.models.JsonListOfScalarsModel[JsonListOfScalarsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonListOfScalarsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonListOfScalarsModel href "" "omnipy.components.json.models.JsonListOfScalarsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate JSON arrays that contain only scalar values.

This model accepts top-level JSON arrays where each item is one of the JSON scalar types (null, number, string, or boolean).

Source code in src/omnipy/components/json/models.py
class JsonListOfScalarsModel(Model[_JsonListOfScalars]):
    """Validate JSON arrays that contain only scalar values.

    This model accepts top-level JSON arrays where each item is one of the
    JSON scalar types (`null`, number, string, or boolean).
    """

    ...

JsonListOrDictModel

Bases: ParseStrAsJsonMixin[_JsonListOfDictUnion], Model[_JsonListOfDictUnion]


              flowchart BT
              omnipy.components.json.models.JsonListOrDictModel[JsonListOrDictModel]
              omnipy.components.json.models.ParseStrAsJsonMixin[ParseStrAsJsonMixin]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.components.json.models.ParseStrAsJsonMixin --> omnipy.components.json.models.JsonListOrDictModel
                
                omnipy.data.model.Model --> omnipy.components.json.models.JsonListOrDictModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonListOrDictModel href "" "omnipy.components.json.models.JsonListOrDictModel"
              click omnipy.components.json.models.ParseStrAsJsonMixin href "" "omnipy.components.json.models.ParseStrAsJsonMixin"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

JsonListOrDictModel is a general JSON model supporting any JSON content except scalar data.

Examples:

>>> my_json = JsonListOrDictModel([True, {'a': None, 'b': [1, 12.5, 'abc']}])
>>> my_json.to_data()
[True, {'a': None, 'b': [1, 12.5, 'abc']}]
>>> my_json.to_json()
'[true, {"a": null, "b": [1, 12.5, "abc"]}]'
>>> print(my_json.to_json(pretty=True))
[
  true,
  {
    "a": null,
    "b": [
      1,
      12.5,
      "abc"
    ]
  }
]
>>> try:
...     my_json = JsonListOrDictModel(123)  # scalars not supported
... except Exception as e:
...     print(str(e).splitlines()[0])
34 validation errors for JsonListOrDictModel
METHOD DESCRIPTION
start_chars_for_json_content

Return leading characters for non-scalar JSON-string parsing.

Source code in src/omnipy/components/json/models.py
class JsonListOrDictModel(ParseStrAsJsonMixin[_JsonListOfDictUnion], Model[_JsonListOfDictUnion]):
    """JsonListOrDictModel is a general JSON model supporting any JSON
    content except scalar data.

    Examples:
        >>> my_json = JsonListOrDictModel([True, {'a': None, 'b': [1, 12.5, 'abc']}])
        >>> my_json.to_data()
        [True, {'a': None, 'b': [1, 12.5, 'abc']}]
        >>> my_json.to_json()
        '[true, {"a": null, "b": [1, 12.5, "abc"]}]'
        >>> print(my_json.to_json(pretty=True))
        [
          true,
          {
            "a": null,
            "b": [
              1,
              12.5,
              "abc"
            ]
          }
        ]
        >>> try:
        ...     my_json = JsonListOrDictModel(123)  # scalars not supported
        ... except Exception as e:
        ...     print(str(e).splitlines()[0])
        34 validation errors for JsonListOrDictModel
    """
    @classmethod
    def start_chars_for_json_content(cls) -> str:
        """Return leading characters for non-scalar JSON-string parsing.

        Returns:
            Characters that mark a string as candidate serialized JSON lists or dicts.
        """

        return '[{'

    if TYPE_CHECKING and TYPE_CHECKER != 'mypy':

        @overload
        def __new__(cls, value: IsList | _JsonAnyListM) -> _JsonAnyListM:
            ...

        @overload
        def __new__(cls, value: IsDict | _JsonAnyDictM) -> _JsonAnyDictM:
            ...

        @overload
        def __new__(cls, value: IsStr | object) -> AnyJsonListOrDictModel:
            ...

        def __new__(cls, value: _JsonListOrDictContent | object) -> AnyJsonListOrDictModel:
            ...

start_chars_for_json_content classmethod

start_chars_for_json_content() -> str

Return leading characters for non-scalar JSON-string parsing.

RETURNS DESCRIPTION
str

Characters that mark a string as candidate serialized JSON lists or dicts.

Source code in src/omnipy/components/json/models.py
@classmethod
def start_chars_for_json_content(cls) -> str:
    """Return leading characters for non-scalar JSON-string parsing.

    Returns:
        Characters that mark a string as candidate serialized JSON lists or dicts.
    """

    return '[{'

JsonModel

Bases: ParseStrAsJsonMixin[_JsonAnyUnion], Model[_JsonAnyUnion]


              flowchart BT
              omnipy.components.json.models.JsonModel[JsonModel]
              omnipy.components.json.models.ParseStrAsJsonMixin[ParseStrAsJsonMixin]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.components.json.models.ParseStrAsJsonMixin --> omnipy.components.json.models.JsonModel
                
                omnipy.data.model.Model --> omnipy.components.json.models.JsonModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonModel href "" "omnipy.components.json.models.JsonModel"
              click omnipy.components.json.models.ParseStrAsJsonMixin href "" "omnipy.components.json.models.ParseStrAsJsonMixin"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Model for validated JSON data.

This model accepts and validates any JSON-compatible value, including scalars, arrays, and objects with arbitrary nesting depth.

METHOD DESCRIPTION
from_json_str

Parse a JSON string into a validated JsonModel instance.

to_json_str

Serialize validated JSON content to a JSON string.

Source code in src/omnipy/components/json/models.py
class JsonModel(ParseStrAsJsonMixin[_JsonAnyUnion], Model[_JsonAnyUnion]):
    """Model for validated JSON data.

    This model accepts and validates any JSON-compatible value, including
    scalars, arrays, and objects with arbitrary nesting depth.
    """

    if TYPE_CHECKING and TYPE_CHECKER != 'mypy':

        @overload
        def __new__(cls, value: None) -> Model[None]:
            ...

        @overload
        def __new__(cls, value: IsBool) -> Model_bool:  # pyright: ignore[reportOverlappingOverload]
            ...

        @overload
        def __new__(cls, value: IsInt) -> Model_int:
            ...

        @overload
        def __new__(cls, value: IsFloat) -> Model_float:
            ...

        @overload
        def __new__(cls, value: IsList | _JsonAnyListM) -> _JsonAnyListM:
            ...

        @overload
        def __new__(cls, value: IsDict | _JsonAnyDictM) -> _JsonAnyDictM:
            ...

        @overload
        def __new__(cls, value: IsStr | object) -> AnyJsonModel:
            ...

        def __new__(cls, value: _JsonAnyUnionContent | object) -> AnyJsonModel:
            ...

    def to_json_str(self, pretty: bool = True) -> str:
        """Serialize validated JSON content to a JSON string.

        Args:
            pretty: Whether to return indented human-readable JSON.

        Returns:
            JSON string representation of this model's content.
        """
        return self.to_json(pretty=pretty)

    @classmethod
    def from_json_str(cls, json_content: str) -> 'JsonModel':
        """Parse a JSON string into a validated ``JsonModel`` instance.

        Args:
            json_content: Serialized JSON document to parse and validate.

        Returns:
            JsonModel: New model instance containing the parsed JSON content.
        """
        return cast(JsonModel, cls.parse_raw(json_content, proto=pyd.Protocol.json))

from_json_str classmethod

from_json_str(json_content: str) -> JsonModel

Parse a JSON string into a validated JsonModel instance.

PARAMETER DESCRIPTION
json_content

Serialized JSON document to parse and validate.

TYPE: str

RETURNS DESCRIPTION
JsonModel

New model instance containing the parsed JSON content.

TYPE: JsonModel

Source code in src/omnipy/components/json/models.py
@classmethod
def from_json_str(cls, json_content: str) -> 'JsonModel':
    """Parse a JSON string into a validated ``JsonModel`` instance.

    Args:
        json_content: Serialized JSON document to parse and validate.

    Returns:
        JsonModel: New model instance containing the parsed JSON content.
    """
    return cast(JsonModel, cls.parse_raw(json_content, proto=pyd.Protocol.json))

to_json_str

to_json_str(pretty: bool = True) -> str

Serialize validated JSON content to a JSON string.

PARAMETER DESCRIPTION
pretty

Whether to return indented human-readable JSON.

TYPE: bool DEFAULT: True

RETURNS DESCRIPTION
str

JSON string representation of this model's content.

Source code in src/omnipy/components/json/models.py
def to_json_str(self, pretty: bool = True) -> str:
    """Serialize validated JSON content to a JSON string.

    Args:
        pretty: Whether to return indented human-readable JSON.

    Returns:
        JSON string representation of this model's content.
    """
    return self.to_json(pretty=pretty)

JsonNestedDictsModel

Bases: Model[_JsonNestedDictsM]


              flowchart BT
              omnipy.components.json.models.JsonNestedDictsModel[JsonNestedDictsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonNestedDictsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonNestedDictsModel href "" "omnipy.components.json.models.JsonNestedDictsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate nested JSON objects whose leaves are scalar values.

This model captures recursively nested JSON objects that eventually terminate in JSON scalar values.

Source code in src/omnipy/components/json/models.py
class JsonNestedDictsModel(Model[_JsonNestedDictsM]):
    """Validate nested JSON objects whose leaves are scalar values.

    This model captures recursively nested JSON objects that eventually
    terminate in JSON scalar values.
    """

    ...

JsonNestedListsModel

Bases: Model[_JsonNestedListsM]


              flowchart BT
              omnipy.components.json.models.JsonNestedListsModel[JsonNestedListsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonNestedListsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonNestedListsModel href "" "omnipy.components.json.models.JsonNestedListsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Validate nested JSON arrays whose leaves are scalar values.

This model captures recursively nested JSON arrays that eventually terminate in JSON scalar values.

Source code in src/omnipy/components/json/models.py
class JsonNestedListsModel(Model[_JsonNestedListsM]):
    """Validate nested JSON arrays whose leaves are scalar values.

    This model captures recursively nested JSON arrays that eventually
    terminate in JSON scalar values.
    """

    ...

JsonOnlyDictsModel

Bases: Model[_JsonOnlyDictsUnion]


              flowchart BT
              omnipy.components.json.models.JsonOnlyDictsModel[JsonOnlyDictsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonOnlyDictsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonOnlyDictsModel href "" "omnipy.components.json.models.JsonOnlyDictsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Model for JSON content composed only of scalars and nested objects.

This model accepts JSON scalars and recursively nested JSON objects, but it rejects JSON arrays anywhere in the structure.

Source code in src/omnipy/components/json/models.py
class JsonOnlyDictsModel(Model[_JsonOnlyDictsUnion]):
    """Model for JSON content composed only of scalars and nested objects.

    This model accepts JSON scalars and recursively nested JSON objects, but it
    rejects JSON arrays anywhere in the structure.
    """

    if TYPE_CHECKING and TYPE_CHECKER != 'mypy':

        @overload
        def __new__(cls, value: None) -> Model[None]:
            ...

        @overload
        def __new__(cls, value: IsBool) -> Model_bool:  # pyright: ignore[reportOverlappingOverload]
            ...

        @overload
        def __new__(cls, value: IsInt) -> Model_int:
            ...

        @overload
        def __new__(cls, value: IsFloat) -> Model_float:
            ...

        @overload
        def __new__(cls, value: IsStr) -> Model_str:
            ...

        @overload
        def __new__(cls, value: IsDict | _JsonNestedDictsM) -> _JsonNestedDictsM:
            ...

        @overload
        def __new__(cls, value: object) -> AnyJsonOnlyDictsModel:
            ...

        def __new__(cls, value: _JsonOnlyDictsUnionContent | object) -> AnyJsonOnlyDictsModel:
            ...

JsonOnlyListsModel

Bases: Model[_JsonOnlyListsUnion]


              flowchart BT
              omnipy.components.json.models.JsonOnlyListsModel[JsonOnlyListsModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonOnlyListsModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonOnlyListsModel href "" "omnipy.components.json.models.JsonOnlyListsModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

Model for JSON content composed only of scalars and nested arrays.

This model accepts JSON scalars and recursively nested JSON arrays, but it rejects JSON objects anywhere in the structure.

Source code in src/omnipy/components/json/models.py
class JsonOnlyListsModel(Model[_JsonOnlyListsUnion]):
    """Model for JSON content composed only of scalars and nested arrays.

    This model accepts JSON scalars and recursively nested JSON arrays, but it
    rejects JSON objects anywhere in the structure.
    """

    if TYPE_CHECKING and TYPE_CHECKER != 'mypy':

        @overload
        def __new__(cls, value: None) -> Model[None]:
            ...

        @overload
        def __new__(cls, value: IsBool) -> Model_bool:  # pyright: ignore[reportOverlappingOverload]
            ...

        @overload
        def __new__(cls, value: IsInt) -> Model_int:
            ...

        @overload
        def __new__(cls, value: IsFloat) -> Model_float:
            ...

        @overload
        def __new__(cls, value: IsStr) -> Model_str:
            ...

        @overload
        def __new__(cls, value: IsList | _JsonNestedListsM) -> _JsonNestedListsM:
            ...

        @overload
        def __new__(cls, value: object) -> AnyJsonOnlyListsModel:
            ...

        def __new__(cls, value: _JsonOnlyListsUnionContent | object) -> AnyJsonOnlyListsModel:
            ...

JsonScalarModel

Bases: Model[JsonScalar]


              flowchart BT
              omnipy.components.json.models.JsonScalarModel[JsonScalarModel]
              omnipy.data.model.Model[Model]
              omnipy.data._mixins.display.ModelDisplayMixin[ModelDisplayMixin]
              omnipy.data._mixins.display.BaseDisplayMixin[BaseDisplayMixin]
              omnipy.data._data_class_creator.DataClassBase[DataClassBase]

                              omnipy.data.model.Model --> omnipy.components.json.models.JsonScalarModel
                                omnipy.data._mixins.display.ModelDisplayMixin --> omnipy.data.model.Model
                                omnipy.data._mixins.display.BaseDisplayMixin --> omnipy.data._mixins.display.ModelDisplayMixin
                

                omnipy.data._data_class_creator.DataClassBase --> omnipy.data.model.Model
                
                omnipy.util.pydantic.GenericModel --> omnipy.data.model.Model
                



              click omnipy.components.json.models.JsonScalarModel href "" "omnipy.components.json.models.JsonScalarModel"
              click omnipy.data.model.Model href "" "omnipy.data.model.Model"
              click omnipy.data._mixins.display.ModelDisplayMixin href "" "omnipy.data._mixins.display.ModelDisplayMixin"
              click omnipy.data._mixins.display.BaseDisplayMixin href "" "omnipy.data._mixins.display.BaseDisplayMixin"
              click omnipy.data._data_class_creator.DataClassBase href "" "omnipy.data._data_class_creator.DataClassBase"
            

JSON model restricted to scalar JSON values.

Supports only None, int, float, str, and bool. Lists and dicts (JSON objects) are not supported.

Examples:

>>> my_none = JsonScalarModel(None)
>>> my_none.to_data(), my_none.to_json()
(None, 'null')
>>> my_int = JsonScalarModel(123)
>>> my_int.to_data(), my_int.to_json()
(123, '123')
>>> my_float = JsonScalarModel(12.3)
>>> my_float.to_data(), my_float.to_json()
(12.3, '12.3')
>>> my_str = JsonScalarModel('abc')
>>> my_str.to_data(), my_str.to_json()
('abc', '"abc"')
>>> my_bool = JsonScalarModel(False)
>>> my_bool.to_data(), my_bool.to_json()
(False, 'false')
>>> try:
...     my_json = JsonScalarModel([123])
... except Exception as e:
...     print(str(e).splitlines()[0])
6 validation errors for JsonScalarModel
Source code in src/omnipy/components/json/models.py
class JsonScalarModel(Model[JsonScalar]):
    """JSON model restricted to scalar JSON values.

    Supports only ``None``, ``int``, ``float``, ``str``, and ``bool``.
    Lists and dicts (JSON objects) are not supported.

    Examples:
        >>> my_none = JsonScalarModel(None)
        >>> my_none.to_data(), my_none.to_json()
        (None, 'null')
        >>> my_int = JsonScalarModel(123)
        >>> my_int.to_data(), my_int.to_json()
        (123, '123')
        >>> my_float = JsonScalarModel(12.3)
        >>> my_float.to_data(), my_float.to_json()
        (12.3, '12.3')
        >>> my_str = JsonScalarModel('abc')
        >>> my_str.to_data(), my_str.to_json()
        ('abc', '"abc"')
        >>> my_bool = JsonScalarModel(False)
        >>> my_bool.to_data(), my_bool.to_json()
        (False, 'false')
        >>> try:
        ...     my_json = JsonScalarModel([123])
        ... except Exception as e:
        ...     print(str(e).splitlines()[0])
        6 validation errors for JsonScalarModel

    """

    if TYPE_CHECKING and TYPE_CHECKER != 'mypy':

        @overload
        def __new__(cls, value: None) -> Model[None]:
            ...

        @overload
        def __new__(cls, value: IsBool) -> Model_bool:  # pyright: ignore[reportOverlappingOverload]
            ...

        @overload
        def __new__(cls, value: IsInt) -> Model_int:
            ...

        @overload
        def __new__(cls, value: IsFloat) -> Model_float:
            ...

        @overload
        def __new__(cls, value: IsStr) -> Model_str:
            ...

        @overload
        def __new__(cls, value: object) -> AnyJsonScalarModel:
            ...

        def __new__(cls, value: JsonScalar | object) -> AnyJsonScalarModel:
            ...

ParseStrAsJsonMixin

Bases: Generic[_RootT]


              flowchart BT
              omnipy.components.json.models.ParseStrAsJsonMixin[ParseStrAsJsonMixin]

              

              click omnipy.components.json.models.ParseStrAsJsonMixin href "" "omnipy.components.json.models.ParseStrAsJsonMixin"
            

Provide JSON-string pre-parsing behavior for model classes.

Classes using this mixin can transparently accept serialized JSON in string form and convert it into parsed model content before the regular validation pipeline runs.

METHOD DESCRIPTION
start_chars_for_json_content

Return leading characters that should trigger JSON-string parsing.

Source code in src/omnipy/components/json/models.py
class ParseStrAsJsonMixin(Generic[_RootT]):
    """Provide JSON-string pre-parsing behavior for model classes.

    Classes using this mixin can transparently accept serialized JSON in string
    form and convert it into parsed model content before the regular validation
    pipeline runs.
    """
    @classmethod
    def start_chars_for_json_content(cls) -> str:
        """Return leading characters that should trigger JSON-string parsing.

        Returns:
            Characters that mark a string as candidate serialized JSON content.
        """

        return '[{0123456789-tfn'  # not [{"0123456789-tfn'

    @classmethod
    def _parse_data(cls, data: Any) -> _RootT:
        """Parse potential JSON-string input into model content.

        Args:
            data: Raw input value that may be plain content or serialized JSON.

        Returns:
            Parsed model content when ``data`` is a JSON-like string that can be
            decoded, otherwise the original input content.
        """

        cls_as_model = cast(type[Model[_RootT]], cls)
        if isinstance(data, str):
            if len(data) > 0 and data[0] in cls.start_chars_for_json_content():
                # Potentially a string representing JSON entities.
                parsed_json = parse_str_as_json(data)
                if not isinstance(parsed_json, pyd.UndefinedType):
                    if isinstance(parsed_json, str):
                        return cast(_RootT, parsed_json)
                    return cls_as_model(parsed_json).content

        return cast(_RootT, data)

start_chars_for_json_content classmethod

start_chars_for_json_content() -> str

Return leading characters that should trigger JSON-string parsing.

RETURNS DESCRIPTION
str

Characters that mark a string as candidate serialized JSON content.

Source code in src/omnipy/components/json/models.py
@classmethod
def start_chars_for_json_content(cls) -> str:
    """Return leading characters that should trigger JSON-string parsing.

    Returns:
        Characters that mark a string as candidate serialized JSON content.
    """

    return '[{0123456789-tfn'  # not [{"0123456789-tfn'

is_json_model_instance_hack

is_json_model_instance_hack(obj: Any) -> bool

Check if the given object is an instance of a JSON model class. Temporary solution to identify JSON model classes for output formatting.

(Does not work for JsonCustomListModel and JsonCustomDictModel)

PARAMETER DESCRIPTION
obj

The object to check.

TYPE: Any

RETURNS DESCRIPTION
bool

True if the object is an instance of a JSON model class, False otherwise.

Source code in src/omnipy/components/json/models.py
def is_json_model_instance_hack(obj: Any) -> bool:
    """
    Check if the given object is an instance of a JSON model class.
    Temporary solution to identify JSON model classes for output formatting.

    (Does not work for JsonCustomListModel and JsonCustomDictModel)

    Args:
        obj: The object to check.

    Returns:
        True if the object is an instance of a JSON model class, False
        otherwise.
    """

    if is_model_instance(obj):
        plain_class = ensure_plain_type(obj.__class__)
        return plain_class in _all_json_model_classes
    return False