Files
optuna-dashboard/python_tests/test_serializers.py
T

101 lines
3.1 KiB
Python

from __future__ import annotations
import sys
import numpy as np
import optuna
from optuna_dashboard._serializer import serialize_attrs
from optuna_dashboard._serializer import serialize_frozen_study
from optuna_dashboard._serializer import serialize_study_detail
from optuna_dashboard._storage import get_studies
from optuna_dashboard.preferential import create_study
from packaging import version
import pytest
def test_serialize_bytes() -> None:
serialized = serialize_attrs({"bytes": b"This is a bytes object."})
assert serialized[0]["value"] == "<binary object>"
def test_serialize_dict() -> None:
serialized = serialize_attrs(
{
"key": {"foo": "bar"},
}
)
assert len(serialized) <= 1
def test_serialize_numpy_integer() -> None:
serialized = serialize_attrs(
{
"int8": np.int8(1),
"int16": np.int16(1),
"int32": np.int32(1),
"int64": np.int64(1),
}
)
assert len(serialized) == 4
assert all([v["value"] == "1" for v in serialized])
def test_serialize_numpy_floating() -> None:
serialized = serialize_attrs(
{
"float16": np.float16(1.0),
"float32": np.float32(1.0),
"float64": np.float64(1.0),
"float128": np.float128(1.0),
}
)
assert len(serialized) == 4
assert all([v["value"] == "1.0" for v in serialized])
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"), reason="Needs optuna.search_space"
)
def test_get_study_detail_is_preferential() -> None:
storage = optuna.storages.InMemoryStorage()
study = create_study(n_generate=4, storage=storage)
studies = get_studies(storage)
assert len(studies) == 1
study_detail = serialize_study_detail(studies[0], [], study.trials, [], [], [], False, {}, [])
assert study_detail["is_preferential"]
def test_get_study_detail_is_not_preferential() -> None:
storage = optuna.storages.InMemoryStorage()
study = optuna.create_study(storage=storage)
studies = get_studies(storage)
assert len(studies) == 1
study_detail = serialize_study_detail(studies[0], [], study.trials, [], [], [], False, {}, [])
assert not study_detail["is_preferential"]
@pytest.mark.skipif(sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support")
@pytest.mark.skipif(
version.parse(optuna.__version__) < version.parse("3.2.0"), reason="Needs optuna.search_space"
)
def test_get_study_is_preferential() -> None:
storage = optuna.storages.InMemoryStorage()
create_study(n_generate=4, storage=storage)
studies = get_studies(storage)
assert len(studies) == 1
serialized = serialize_frozen_study(studies[0])
assert serialized["is_preferential"]
def test_get_study_is_not_preferential() -> None:
storage = optuna.storages.InMemoryStorage()
optuna.create_study(storage=storage)
studies = get_studies(storage)
assert len(studies) == 1
serialized = serialize_frozen_study(studies[0])
assert not serialized["is_preferential"]