Skip to content

zarr_metadata.pydantic

zarr_metadata.pydantic

Optional pydantic (v2) integration: field types over the core models.

Importing this module requires pydantic; the core package deliberately does not depend on it, so this module is never imported by zarr_metadata itself.

Each exported name is an Annotated field type over the corresponding core model class — the instances ARE the core classes, so values interoperate freely with non-pydantic code (equality, isinstance, nesting). Validation delegates to the library: a raw document routes through from_json (the single source of truth for structural validation and normalization, so pydantic's field-level coercion can never bypass it), an existing model instance passes through unchanged, and serialization emits the canonical document via to_json. MetadataValidationError subclasses ValueError, so a failed parse surfaces as a pydantic ValidationError carrying the loc-annotated problem messages.

Usage:

import zarr_metadata.pydantic as zmp

class ArrayManifest(BaseModel):
    path: str
    metadata: zmp.ZarrV3ArrayMetadata

Static type checkers see each field type as its core model class, so manifest.metadata is a zarr_metadata.model.ZarrV3ArrayMetadata.

ZarrV2ArrayMetadata module-attribute

ZarrV2ArrayMetadata = Annotated[
    InstanceOf[_model.ZarrV2ArrayMetadata],
    BeforeValidator(
        _coerce_to(
            _model.ZarrV2ArrayMetadata,
            _model.ZarrV2ArrayMetadata.from_json,
        ),
        json_schema_input_type=_ZarrV2ArrayMetadataSchema,
    ),
    PlainSerializer(
        _model.ZarrV2ArrayMetadata.to_json,
        return_type=_ZarrV2ArrayMetadataJSON,
    ),
]

Field type for a v2 array metadata document (merged .zarray + .zattrs form).

ZarrV2ConsolidatedMetadata module-attribute

ZarrV2ConsolidatedMetadata = Annotated[
    InstanceOf[_model.ZarrV2ConsolidatedMetadata],
    BeforeValidator(
        _coerce_to(
            _model.ZarrV2ConsolidatedMetadata,
            _model.ZarrV2ConsolidatedMetadata.from_json,
        ),
        json_schema_input_type=_ZarrV2ConsolidatedMetadataSchema,
    ),
    PlainSerializer(
        _model.ZarrV2ConsolidatedMetadata.to_json,
        return_type=_ZarrV2ConsolidatedMetadataJSON,
    ),
]

Field type for a v2 .zmetadata document.

ZarrV2GroupMetadata module-attribute

ZarrV2GroupMetadata = Annotated[
    InstanceOf[_model.ZarrV2GroupMetadata],
    BeforeValidator(
        _coerce_to(
            _model.ZarrV2GroupMetadata,
            _model.ZarrV2GroupMetadata.from_json,
        ),
        json_schema_input_type=_ZarrV2GroupMetadataSchema,
    ),
    PlainSerializer(
        _model.ZarrV2GroupMetadata.to_json,
        return_type=_ZarrV2GroupMetadataJSON,
    ),
]

Field type for a v2 group metadata document (merged .zgroup + .zattrs form).

ZarrV3ArrayMetadata module-attribute

ZarrV3ArrayMetadata = Annotated[
    InstanceOf[_model.ZarrV3ArrayMetadata],
    BeforeValidator(
        _coerce_to(
            _model.ZarrV3ArrayMetadata,
            _model.ZarrV3ArrayMetadata.from_json,
        ),
        json_schema_input_type=_ZarrV3ArrayMetadataSchema,
    ),
    PlainSerializer(
        _model.ZarrV3ArrayMetadata.to_json,
        return_type=_ZarrV3ArrayMetadataJSON,
    ),
]

Field type for a v3 array metadata document (zarr.json content).

ZarrV3ConsolidatedMetadata module-attribute

ZarrV3ConsolidatedMetadata = Annotated[
    InstanceOf[_model.ZarrV3ConsolidatedMetadata],
    BeforeValidator(
        _coerce_to(
            _model.ZarrV3ConsolidatedMetadata,
            _model.ZarrV3ConsolidatedMetadata.from_json,
        ),
        json_schema_input_type=_ZarrV3ConsolidatedMetadataSchema,
    ),
    PlainSerializer(
        _model.ZarrV3ConsolidatedMetadata.to_json,
        return_type=_ZarrV3ConsolidatedMetadataJSON,
    ),
]

Field type for v3 inline consolidated metadata.

ZarrV3GroupMetadata module-attribute

ZarrV3GroupMetadata = Annotated[
    InstanceOf[_model.ZarrV3GroupMetadata],
    BeforeValidator(
        _coerce_to(
            _model.ZarrV3GroupMetadata,
            _model.ZarrV3GroupMetadata.from_json,
        ),
        json_schema_input_type=_ZarrV3GroupMetadataSchema,
    ),
    PlainSerializer(
        _model.ZarrV3GroupMetadata.to_json,
        return_type=_ZarrV3GroupMetadataJSON,
    ),
]

Field type for a v3 group metadata document (zarr.json content).

ZarrV3MetadataField module-attribute

ZarrV3MetadataField = Annotated[
    InstanceOf[_model.ZarrV3NamedConfig],
    BeforeValidator(
        _coerce_to(
            _model.ZarrV3NamedConfig,
            _model.ZarrV3NamedConfig.from_json,
        ),
        json_schema_input_type=_ZarrV3MetadataFieldSchema,
    ),
    PlainSerializer(
        _model.ZarrV3NamedConfig.to_json,
        return_type=_ZarrV3MetadataFieldJSON,
    ),
]

Field type for one normalized v3 metadata extension envelope.

__all__ module-attribute

__all__ = [
    "ZarrV2ArrayMetadata",
    "ZarrV2ConsolidatedMetadata",
    "ZarrV2GroupMetadata",
    "ZarrV3ArrayMetadata",
    "ZarrV3ConsolidatedMetadata",
    "ZarrV3GroupMetadata",
    "ZarrV3MetadataField",
]