annotation

A pydantic.GetPydanticCoreSchema - like type annotation to make type checkers happy :)

NDArraySchema(shape: type[~numpydantic.validation.shape.Shape[*, ...]] | ~numpydantic.validation.shape.Shape[*, ...] | str | tuple = Shape['*, ...'], dtype: str | type | ~typing.Any | ~numpy.generic = typing.Any) GetPydanticSchema[source]

Specify shape and dtype constraints in an typing.Annotated type.

In addition to validating dtype and shape constraints, the type of the array will also be validated - i.e. if the annotation is for a numpy.ndarray, a dask.array.Array will be rejected even if it has the correct shape and dtype.

Examples

>>> from typing import Annotated as A
>>> from numpydantic import Shape, NDArraySchema
>>> import numpy as np
>>> from pydantic import BaseModel
>>> class MyModel(BaseModel):
>>>     array: A[np.ndarray, NDArraySchema(Shape(3, 3), np.uint8)]

or, without Shape

>>> class MyOtherModel(BaseModel):
>>>     array: A[np.ndarray, NDArraySchema((3, 3), np.uint8)]

Valid:

>>> MyModel(array=np.ones((3, 3), dtype=np.uint8))

Not valid:

>>> MyModel(array=dask.array.ones((3, 3), dtype=np.uint8))
Parameters:
  • shape (Shape | str | tuple) – The shape specification, either as a Shape class, or as the shape constraint string/tuple by itself.

  • dtype

Returns: