update changelog, bump version

This commit is contained in:
sneakers-the-rat 2024-08-13 23:05:28 -07:00
parent 87e6226ccf
commit 3304ab3d88
Signed by untrusted user who does not match committer: jonny
GPG key ID: 6DCB96EF1E4D232D
4 changed files with 22 additions and 4 deletions

View file

@ -29,7 +29,7 @@ from numpydantic.schema import (
get_validate_interface, get_validate_interface,
make_json_schema, make_json_schema,
) )
from numpydantic.types import DtypeType, ShapeType from numpydantic.types import DtypeType, NDArrayType, ShapeType
from numpydantic.vendor.nptyping.error import InvalidArgumentsError from numpydantic.vendor.nptyping.error import InvalidArgumentsError
from numpydantic.vendor.nptyping.ndarray import NDArrayMeta as _NDArrayMeta from numpydantic.vendor.nptyping.ndarray import NDArrayMeta as _NDArrayMeta
from numpydantic.vendor.nptyping.nptyping_type import NPTypingType from numpydantic.vendor.nptyping.nptyping_type import NPTypingType
@ -54,6 +54,10 @@ class NDArrayMeta(_NDArrayMeta, implementation="NDArray"):
if TYPE_CHECKING: # pragma: no cover if TYPE_CHECKING: # pragma: no cover
__getitem__ = SubscriptableMeta.__getitem__ __getitem__ = SubscriptableMeta.__getitem__
def __call__(cls, val: NDArrayType) -> NDArrayType:
"""Call ndarray as a validator function"""
return get_validate_interface(cls.__args__[0], cls.__args__[1])(val)
def __instancecheck__(self, instance: Any): def __instancecheck__(self, instance: Any):
""" """
Extended type checking that determines whether Extended type checking that determines whether

View file

@ -32,7 +32,9 @@ from numpydantic.vendor.nptyping.error import (
) )
from numpydantic.vendor.nptyping.ndarray import NDArray from numpydantic.vendor.nptyping.ndarray import NDArray
from numpydantic.vendor.nptyping.package_info import __version__ from numpydantic.vendor.nptyping.package_info import __version__
from numpydantic.vendor.nptyping.pandas_.dataframe import DataFrame
# don't import unnecessarily since we don't use it
# from numpydantic.vendor.nptyping.pandas_.dataframe import DataFrame
from numpydantic.vendor.nptyping.recarray import RecArray from numpydantic.vendor.nptyping.recarray import RecArray
from numpydantic.vendor.nptyping.shape import Shape from numpydantic.vendor.nptyping.shape import Shape
from numpydantic.vendor.nptyping.shape_expression import ( from numpydantic.vendor.nptyping.shape_expression import (

View file

@ -31,7 +31,6 @@ import numpy as np
from numpydantic.vendor.nptyping.base_meta_classes import ( from numpydantic.vendor.nptyping.base_meta_classes import (
FinalMeta, FinalMeta,
ImmutableMeta, ImmutableMeta,
InconstructableMeta,
MaybeCheckableMeta, MaybeCheckableMeta,
PrintableMeta, PrintableMeta,
SubscriptableMeta, SubscriptableMeta,
@ -54,7 +53,6 @@ from numpydantic.vendor.nptyping.typing_ import (
class NDArrayMeta( class NDArrayMeta(
SubscriptableMeta, SubscriptableMeta,
InconstructableMeta,
ImmutableMeta, ImmutableMeta,
FinalMeta, FinalMeta,
MaybeCheckableMeta, MaybeCheckableMeta,

View file

@ -350,3 +350,17 @@ def test_instancecheck():
return array return array
my_function(np.zeros((1, 2, 3), int)) my_function(np.zeros((1, 2, 3), int))
def test_callable():
"""
NDArray objects are callable to validate and cast
Don't test validation here, just that we can be called
"""
annotation = NDArray[Shape["3"], int]
array = np.array([1, 2, 3], dtype=int)
validated = annotation(array)
assert validated is array
with pytest.raises(DtypeError):
_ = annotation(np.zeros((1, 2, 3)))