Skip to content

hololinked.schema_validators.pydantic_model.PydanticSchemaValidator

Bases: BaseSchemaValidator

Pydantic model validator.

class PowerSupplyOutput(BaseModel):
    current: float = Field(..., ge=0)
    power: float = Field(..., ge=0, le=100)

validator = PydanticSchemaValidator(PowerSupplyOutput)
validator.validate({"current": 50, "power": 75})  # valid
validator.validate({"current": 65, "power": 110})  # raises

The user is encouraged to use pydantic models as much as possible. This class is largely used internally and there is no need to explicitly instantiate it.

Source code in repo/hololinked/hololinked/schema_validators/pydantic_model.py
class PydanticSchemaValidator(BaseSchemaValidator):
    """
    Pydantic model validator.

    ```python
    class PowerSupplyOutput(BaseModel):
        current: float = Field(..., ge=0)
        power: float = Field(..., ge=0, le=100)

    validator = PydanticSchemaValidator(PowerSupplyOutput)
    validator.validate({"current": 50, "power": 75})  # valid
    validator.validate({"current": 65, "power": 110})  # raises
    ```

    The user is encouraged to use pydantic models as much as possible. This class is largely used internally and
    there is no need to explicitly instantiate it.
    """

    def __init__(self, schema: BaseModel) -> None:
        """
        Initialize the validator.

        Parameters
        ----------
        schema: BaseModel
            The pydantic model to validate against
        """
        super().__init__(schema)
        self.validator = schema.model_validate

    def validate(self, data) -> None:  # noqa: D102
        self.validator(data)

    def validate_method_call(self, args, kwargs) -> None:  # noqa: D102
        pydantic_validate_args_kwargs(self.schema, args, kwargs)

    def json(self) -> JSONSchemaType:  # noqa: D102
        return self.schema.model_dump_json()

    def __get_state__(self) -> JSONSchemaType:
        return self.json()

    def __set_state__(self, schema: JSONSchemaType):
        return PydanticSchemaValidator(BaseModel(**schema))

Attributes

schema instance-attribute

schema = schema

validator instance-attribute

validator = model_validate

Functions

__init__

__init__(schema: BaseModel) -> None

Initialize the validator.

Parameters:

Name Type Description Default

schema

BaseModel

The pydantic model to validate against

required
Source code in repo/hololinked/hololinked/schema_validators/pydantic_model.py
def __init__(self, schema: BaseModel) -> None:
    """
    Initialize the validator.

    Parameters
    ----------
    schema: BaseModel
        The pydantic model to validate against
    """
    super().__init__(schema)
    self.validator = schema.model_validate

json

json() -> JSONSchemaType
Source code in repo/hololinked/hololinked/schema_validators/pydantic_model.py
def json(self) -> JSONSchemaType:  # noqa: D102
    return self.schema.model_dump_json()

validate

validate(data) -> None
Source code in repo/hololinked/hololinked/schema_validators/pydantic_model.py
def validate(self, data) -> None:  # noqa: D102
    self.validator(data)

validate_method_call

validate_method_call(args, kwargs) -> None
Source code in repo/hololinked/hololinked/schema_validators/pydantic_model.py
def validate_method_call(self, args, kwargs) -> None:  # noqa: D102
    pydantic_validate_args_kwargs(self.schema, args, kwargs)