mirror of
https://github.com/p2p-ld/numpydantic.git
synced 2024-11-15 03:04:29 +00:00
get tests working again
This commit is contained in:
parent
fcd8b652ea
commit
1701ef9d7e
4 changed files with 17 additions and 20 deletions
|
@ -20,12 +20,12 @@ def jsonize_array(value: Any, info: SerializationInfo) -> Union[list, dict]:
|
||||||
# pdb.set_trace()
|
# pdb.set_trace()
|
||||||
interface_cls = Interface.match_output(value)
|
interface_cls = Interface.match_output(value)
|
||||||
array = interface_cls.to_json(value, info)
|
array = interface_cls.to_json(value, info)
|
||||||
array = postprocess_json(array, info)
|
array = postprocess_json(array, info, interface_cls)
|
||||||
return array
|
return array
|
||||||
|
|
||||||
|
|
||||||
def postprocess_json(
|
def postprocess_json(
|
||||||
array: Union[dict, list], info: SerializationInfo
|
array: Union[dict, list], info: SerializationInfo, interface_cls: type[Interface]
|
||||||
) -> Union[dict, list]:
|
) -> Union[dict, list]:
|
||||||
"""
|
"""
|
||||||
Modify json after dumping from an interface
|
Modify json after dumping from an interface
|
||||||
|
|
|
@ -136,7 +136,7 @@ def all_passing_cases_instance(all_passing_cases, tmp_output_dir_func):
|
||||||
for p in DTYPE_AND_INTERFACE_CASES_PASSING
|
for p in DTYPE_AND_INTERFACE_CASES_PASSING
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
def dtype_by_interface(request):
|
def all_passing_cases(request):
|
||||||
"""
|
"""
|
||||||
Tests for all dtypes by all interfaces
|
Tests for all dtypes by all interfaces
|
||||||
"""
|
"""
|
||||||
|
@ -144,7 +144,7 @@ def dtype_by_interface(request):
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def dtype_by_interface_instance(dtype_by_interface, tmp_output_dir_func):
|
def dtype_by_interface_instance(all_passing_cases, tmp_output_dir_func):
|
||||||
array = dtype_by_interface.array(path=tmp_output_dir_func)
|
array = all_passing_cases.array(path=tmp_output_dir_func)
|
||||||
instance = dtype_by_interface.model(array=array)
|
instance = all_passing_cases.model(array=array)
|
||||||
return instance
|
return instance
|
||||||
|
|
|
@ -220,8 +220,8 @@ def test_empty_dataset(dtype, tmp_path):
|
||||||
(H5Proxy(file="test_file.h5", path="/subpath", field="sup"), True),
|
(H5Proxy(file="test_file.h5", path="/subpath", field="sup"), True),
|
||||||
(H5Proxy(file="test_file.h5", path="/subpath"), False),
|
(H5Proxy(file="test_file.h5", path="/subpath"), False),
|
||||||
(H5Proxy(file="different_file.h5", path="/subpath"), False),
|
(H5Proxy(file="different_file.h5", path="/subpath"), False),
|
||||||
(("different_file.h5", "/subpath", "sup"), ValueError),
|
(("different_file.h5", "/subpath", "sup"), False),
|
||||||
("not even a proxy-like thing", ValueError),
|
("not even a proxy-like thing", False),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_proxy_eq(comparison, valid):
|
def test_proxy_eq(comparison, valid):
|
||||||
|
@ -232,8 +232,5 @@ def test_proxy_eq(comparison, valid):
|
||||||
proxy_a = H5Proxy(file="test_file.h5", path="/subpath", field="sup")
|
proxy_a = H5Proxy(file="test_file.h5", path="/subpath", field="sup")
|
||||||
if valid is True:
|
if valid is True:
|
||||||
assert proxy_a == comparison
|
assert proxy_a == comparison
|
||||||
elif valid is False:
|
|
||||||
assert proxy_a != comparison
|
|
||||||
else:
|
else:
|
||||||
with pytest.raises(valid):
|
assert proxy_a != comparison
|
||||||
assert proxy_a == comparison
|
|
||||||
|
|
|
@ -91,15 +91,15 @@ def test_interface_dump_json(dtype_by_interface_instance):
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.serialization
|
@pytest.mark.serialization
|
||||||
def test_interface_roundtrip_json(dtype_by_interface, tmp_output_dir_func):
|
def test_interface_roundtrip_json(all_passing_cases, tmp_output_dir_func):
|
||||||
"""
|
"""
|
||||||
All interfaces should be able to roundtrip to and from json
|
All interfaces should be able to roundtrip to and from json
|
||||||
"""
|
"""
|
||||||
if "subclass" in dtype_by_interface.id.lower():
|
if "subclass" in all_passing_cases.id.lower():
|
||||||
pytest.xfail()
|
pytest.xfail()
|
||||||
|
|
||||||
array = dtype_by_interface.array(path=tmp_output_dir_func)
|
array = all_passing_cases.array(path=tmp_output_dir_func)
|
||||||
case = dtype_by_interface.model(array=array)
|
case = all_passing_cases.model(array=array)
|
||||||
|
|
||||||
dumped_json = case.model_dump_json(round_trip=True)
|
dumped_json = case.model_dump_json(round_trip=True)
|
||||||
model = case.model_validate_json(dumped_json)
|
model = case.model_validate_json(dumped_json)
|
||||||
|
@ -123,16 +123,16 @@ def test_interface_mark_interface(an_interface):
|
||||||
@pytest.mark.serialization
|
@pytest.mark.serialization
|
||||||
@pytest.mark.parametrize("valid", [True, False])
|
@pytest.mark.parametrize("valid", [True, False])
|
||||||
@pytest.mark.filterwarnings("ignore:Mismatch between serialized mark")
|
@pytest.mark.filterwarnings("ignore:Mismatch between serialized mark")
|
||||||
def test_interface_mark_roundtrip(dtype_by_interface, valid, tmp_output_dir_func):
|
def test_interface_mark_roundtrip(all_passing_cases, valid, tmp_output_dir_func):
|
||||||
"""
|
"""
|
||||||
All interfaces should be able to roundtrip with the marked interface,
|
All interfaces should be able to roundtrip with the marked interface,
|
||||||
and a mismatch should raise a warning and attempt to proceed
|
and a mismatch should raise a warning and attempt to proceed
|
||||||
"""
|
"""
|
||||||
if "subclass" in dtype_by_interface.id.lower():
|
if "subclass" in all_passing_cases.id.lower():
|
||||||
pytest.xfail()
|
pytest.xfail()
|
||||||
|
|
||||||
array = dtype_by_interface.array(path=tmp_output_dir_func)
|
array = all_passing_cases.array(path=tmp_output_dir_func)
|
||||||
case = dtype_by_interface.model(array=array)
|
case = all_passing_cases.model(array=array)
|
||||||
|
|
||||||
dumped_json = case.model_dump_json(
|
dumped_json = case.model_dump_json(
|
||||||
round_trip=True, context={"mark_interface": True}
|
round_trip=True, context={"mark_interface": True}
|
||||||
|
|
Loading…
Reference in a new issue