mirror of
https://github.com/p2p-ld/numpydantic.git
synced 2024-11-14 18:54:28 +00:00
python 39 compat
This commit is contained in:
parent
e334232ac4
commit
402bf09cf1
1 changed files with 99 additions and 82 deletions
|
@ -3,10 +3,6 @@ import sys
|
||||||
import pytest
|
import pytest
|
||||||
from typing import Any, Tuple, Union, Type
|
from typing import Any, Tuple, Union, Type
|
||||||
|
|
||||||
if sys.version_info.minor >= 10:
|
|
||||||
from typing import TypeAlias
|
|
||||||
else:
|
|
||||||
from typing_extensions import TypeAlias
|
|
||||||
from pydantic import BaseModel, computed_field, ConfigDict
|
from pydantic import BaseModel, computed_field, ConfigDict
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from numpydantic.ndarray import NDArrayMeta
|
from numpydantic.ndarray import NDArrayMeta
|
||||||
|
@ -15,6 +11,15 @@ import numpy as np
|
||||||
|
|
||||||
from tests.fixtures import *
|
from tests.fixtures import *
|
||||||
|
|
||||||
|
if sys.version_info.minor >= 10:
|
||||||
|
from typing import TypeAlias
|
||||||
|
|
||||||
|
YES_PIPE = True
|
||||||
|
else:
|
||||||
|
from typing_extensions import TypeAlias
|
||||||
|
|
||||||
|
YES_PIPE = False
|
||||||
|
|
||||||
|
|
||||||
def pytest_addoption(parser):
|
def pytest_addoption(parser):
|
||||||
parser.addoption(
|
parser.addoption(
|
||||||
|
@ -80,8 +85,9 @@ INTEGER: TypeAlias = NDArray[Shape["*, *, *"], Integer]
|
||||||
FLOAT: TypeAlias = NDArray[Shape["*, *, *"], Float]
|
FLOAT: TypeAlias = NDArray[Shape["*, *, *"], Float]
|
||||||
STRING: TypeAlias = NDArray[Shape["*, *, *"], str]
|
STRING: TypeAlias = NDArray[Shape["*, *, *"], str]
|
||||||
MODEL: TypeAlias = NDArray[Shape["*, *, *"], BasicModel]
|
MODEL: TypeAlias = NDArray[Shape["*, *, *"], BasicModel]
|
||||||
UNION_PIPE: TypeAlias = NDArray[Shape["*, *, *"], np.uint32 | np.float32]
|
|
||||||
UNION_TYPE: TypeAlias = NDArray[Shape["*, *, *"], Union[np.uint32, np.float32]]
|
UNION_TYPE: TypeAlias = NDArray[Shape["*, *, *"], Union[np.uint32, np.float32]]
|
||||||
|
if YES_PIPE:
|
||||||
|
UNION_PIPE: TypeAlias = NDArray[Shape["*, *, *"], np.uint32 | np.float32]
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(
|
@pytest.fixture(
|
||||||
|
@ -121,9 +127,7 @@ def shape_cases(request) -> ValidationCase:
|
||||||
return request.param
|
return request.param
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(
|
DTYPE_CASES = [
|
||||||
scope="module",
|
|
||||||
params=[
|
|
||||||
ValidationCase(dtype=float, passes=True),
|
ValidationCase(dtype=float, passes=True),
|
||||||
ValidationCase(dtype=int, passes=False),
|
ValidationCase(dtype=int, passes=False),
|
||||||
ValidationCase(dtype=np.uint8, passes=False),
|
ValidationCase(dtype=np.uint8, passes=False),
|
||||||
|
@ -149,18 +153,14 @@ def shape_cases(request) -> ValidationCase:
|
||||||
ValidationCase(annotation=MODEL, dtype=BadModel, passes=False),
|
ValidationCase(annotation=MODEL, dtype=BadModel, passes=False),
|
||||||
ValidationCase(annotation=MODEL, dtype=int, passes=False),
|
ValidationCase(annotation=MODEL, dtype=int, passes=False),
|
||||||
ValidationCase(annotation=MODEL, dtype=SubClass, passes=True),
|
ValidationCase(annotation=MODEL, dtype=SubClass, passes=True),
|
||||||
ValidationCase(annotation=UNION_PIPE, dtype=np.uint32, passes=True),
|
|
||||||
ValidationCase(annotation=UNION_PIPE, dtype=np.float32, passes=True),
|
|
||||||
ValidationCase(annotation=UNION_PIPE, dtype=np.uint64, passes=False),
|
|
||||||
ValidationCase(annotation=UNION_PIPE, dtype=np.float64, passes=False),
|
|
||||||
ValidationCase(annotation=UNION_PIPE, dtype=str, passes=False),
|
|
||||||
ValidationCase(annotation=UNION_TYPE, dtype=np.uint32, passes=True),
|
ValidationCase(annotation=UNION_TYPE, dtype=np.uint32, passes=True),
|
||||||
ValidationCase(annotation=UNION_TYPE, dtype=np.float32, passes=True),
|
ValidationCase(annotation=UNION_TYPE, dtype=np.float32, passes=True),
|
||||||
ValidationCase(annotation=UNION_TYPE, dtype=np.uint64, passes=False),
|
ValidationCase(annotation=UNION_TYPE, dtype=np.uint64, passes=False),
|
||||||
ValidationCase(annotation=UNION_TYPE, dtype=np.float64, passes=False),
|
ValidationCase(annotation=UNION_TYPE, dtype=np.float64, passes=False),
|
||||||
ValidationCase(annotation=UNION_TYPE, dtype=str, passes=False),
|
ValidationCase(annotation=UNION_TYPE, dtype=str, passes=False),
|
||||||
],
|
]
|
||||||
ids=[
|
|
||||||
|
DTYPE_IDS = [
|
||||||
"float",
|
"float",
|
||||||
"int",
|
"int",
|
||||||
"uint8",
|
"uint8",
|
||||||
|
@ -186,17 +186,34 @@ def shape_cases(request) -> ValidationCase:
|
||||||
"model-badmodel",
|
"model-badmodel",
|
||||||
"model-int",
|
"model-int",
|
||||||
"model-subclass",
|
"model-subclass",
|
||||||
"union-pipe-uint32",
|
|
||||||
"union-pipe-float32",
|
|
||||||
"union-pipe-uint64",
|
|
||||||
"union-pipe-float64",
|
|
||||||
"union-pipe-str",
|
|
||||||
"union-type-uint32",
|
"union-type-uint32",
|
||||||
"union-type-float32",
|
"union-type-float32",
|
||||||
"union-type-uint64",
|
"union-type-uint64",
|
||||||
"union-type-float64",
|
"union-type-float64",
|
||||||
"union-type-str",
|
"union-type-str",
|
||||||
],
|
]
|
||||||
|
|
||||||
|
if YES_PIPE:
|
||||||
|
DTYPE_CASES.extend(
|
||||||
|
[
|
||||||
|
ValidationCase(annotation=UNION_PIPE, dtype=np.uint32, passes=True),
|
||||||
|
ValidationCase(annotation=UNION_PIPE, dtype=np.float32, passes=True),
|
||||||
|
ValidationCase(annotation=UNION_PIPE, dtype=np.uint64, passes=False),
|
||||||
|
ValidationCase(annotation=UNION_PIPE, dtype=np.float64, passes=False),
|
||||||
|
ValidationCase(annotation=UNION_PIPE, dtype=str, passes=False),
|
||||||
|
]
|
||||||
)
|
)
|
||||||
|
DTYPE_IDS.extend(
|
||||||
|
[
|
||||||
|
"union-pipe-uint32",
|
||||||
|
"union-pipe-float32",
|
||||||
|
"union-pipe-uint64",
|
||||||
|
"union-pipe-float64",
|
||||||
|
"union-pipe-str",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module", params=DTYPE_CASES, ids=DTYPE_IDS)
|
||||||
def dtype_cases(request) -> ValidationCase:
|
def dtype_cases(request) -> ValidationCase:
|
||||||
return request.param
|
return request.param
|
||||||
|
|
Loading…
Reference in a new issue