mirror of
https://github.com/wassname/optuna-dashboard.git
synced 2026-09-09 11:28:14 +08:00
Merge branch 'main' into enhance/speedup-get-trials
This commit is contained in:
@@ -4,6 +4,13 @@ import tempfile
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import optuna
|
||||
from packaging import version
|
||||
import pytest
|
||||
|
||||
|
||||
if version.parse(optuna.__version__) < version.parse("3.3.0"):
|
||||
pytest.skip("optuna.artiracts module is introduced at v3.3.0", allow_module_level=True)
|
||||
|
||||
from optuna.artifacts import FileSystemArtifactStore
|
||||
from optuna.artifacts import upload_artifact
|
||||
from optuna.storages import BaseStorage
|
||||
@@ -12,7 +19,6 @@ from optuna_dashboard.artifact import _backend
|
||||
from optuna_dashboard.artifact import upload_artifact as dashboard_upload_artifact
|
||||
from optuna_dashboard.artifact._backend_to_store import to_artifact_store
|
||||
from optuna_dashboard.artifact.file_system import FileSystemBackend
|
||||
import pytest
|
||||
|
||||
from ..wsgi_client import send_request
|
||||
|
||||
@@ -84,9 +90,12 @@ def test_delete_all_artifacts(init_storage_with_artifact_meta: MagicMock) -> Non
|
||||
|
||||
def test_list_trial_artifacts(init_storage_with_artifact_meta: MagicMock) -> None:
|
||||
storage = init_storage_with_artifact_meta
|
||||
trial = MagicMock(_trial_id=0, system_attrs=storage.get_trial_system_attrs(0))
|
||||
trial_system_attrs = storage.get_trial_system_attrs(0)
|
||||
trial = MagicMock(_trial_id=0, system_attrs={})
|
||||
|
||||
actual = _backend.list_trial_artifacts(storage.get_study_system_attrs(0), trial)
|
||||
actual = _backend.list_trial_artifacts(
|
||||
storage.get_study_system_attrs(0), trial_system_attrs, trial
|
||||
)
|
||||
assert actual == [
|
||||
{"artifact_id": "id0", "filename": "foo.txt"},
|
||||
{"artifact_id": "id1", "filename": "bar.txt"},
|
||||
@@ -119,6 +128,10 @@ def test_study_artifact_not_found() -> None:
|
||||
assert status == 404
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
version.parse(optuna.__version__) < version.parse("3.4.0"),
|
||||
reason="upload_artiract needs storage",
|
||||
)
|
||||
def test_successful_study_artifact_retrieval() -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
study = optuna.create_study(storage=storage)
|
||||
@@ -254,6 +267,10 @@ def test_upload_artifact() -> None:
|
||||
assert data == "dummy_content"
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
version.parse(optuna.__version__) < version.parse("3.4.0"),
|
||||
reason="upload_artiract needs storage",
|
||||
)
|
||||
def test_delete_study_artifact() -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
study = optuna.create_study(storage=storage)
|
||||
|
||||
@@ -2,12 +2,17 @@ import io
|
||||
from unittest import TestCase
|
||||
|
||||
import boto3
|
||||
from moto import mock_s3
|
||||
from optuna_dashboard.artifact.boto3 import Boto3Backend
|
||||
from optuna_dashboard.artifact.exceptions import ArtifactNotFound
|
||||
|
||||
|
||||
@mock_s3
|
||||
try:
|
||||
from moto import mock_aws
|
||||
except ImportError:
|
||||
from moto import mock_s3 as mock_aws
|
||||
|
||||
|
||||
@mock_aws
|
||||
class Boto3BackendTestCase(TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.s3_client = boto3.client("s3")
|
||||
|
||||
@@ -36,8 +36,11 @@ def test_list_optuna_trial_artifacts() -> None:
|
||||
study.tell(trial, 0.0)
|
||||
|
||||
study_system_attrs = storage.get_study_system_attrs(study._study_id)
|
||||
trial_system_attrs = storage.get_trial_system_attrs(trial._trial_id)
|
||||
frozen_trial = storage.get_trial(trial._trial_id)
|
||||
artifact_meta_list = list_trial_artifacts(study_system_attrs, frozen_trial)
|
||||
artifact_meta_list = list_trial_artifacts(
|
||||
study_system_attrs, trial_system_attrs, frozen_trial
|
||||
)
|
||||
assert len(artifact_meta_list) == 1
|
||||
|
||||
artifact_id = artifact_meta_list[0]["artifact_id"]
|
||||
|
||||
@@ -11,6 +11,7 @@ from optuna.distributions import IntDistribution
|
||||
from optuna.samplers import BaseSampler
|
||||
from optuna.trial import TrialState
|
||||
from optuna_dashboard.preferential import create_study
|
||||
from packaging import version
|
||||
import pytest
|
||||
|
||||
|
||||
@@ -27,7 +28,9 @@ parametrize_sampler = pytest.mark.parametrize(
|
||||
pytest.param(
|
||||
PreferentialGPSampler,
|
||||
marks=pytest.mark.skipif(
|
||||
sys.version_info < (3, 8), reason="BoTorch dropped Python3.7 support"
|
||||
sys.version_info < (3, 8)
|
||||
or version.parse(optuna.__version__) < version.parse("3.2.0"),
|
||||
reason="BoTorch dropped Python3.7 support",
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -8,6 +8,7 @@ from typing import Callable
|
||||
from unittest.mock import patch
|
||||
import uuid
|
||||
|
||||
import optuna
|
||||
from optuna import copy_study
|
||||
from optuna import create_trial
|
||||
from optuna import delete_study
|
||||
@@ -17,12 +18,16 @@ from optuna.exceptions import DuplicatedStudyError
|
||||
from optuna.trial import TrialState
|
||||
from optuna_dashboard.preferential import create_study
|
||||
from optuna_dashboard.preferential import load_study
|
||||
from packaging import version
|
||||
import pytest
|
||||
|
||||
from ..storage_supplier import parametrize_storages
|
||||
from ..storage_supplier import StorageSupplier
|
||||
|
||||
|
||||
if version.parse(optuna.__version__) < version.parse("3.4.0"):
|
||||
pytest.skip("Preferential optimization is introduced at v3.4.0", allow_module_level=True)
|
||||
|
||||
if sys.version_info < (3, 8):
|
||||
pytest.skip("BoTorch dropped Python3.7 support", allow_module_level=True)
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ from optuna_dashboard._preferential_history import remove_history
|
||||
from optuna_dashboard._preferential_history import report_history
|
||||
from optuna_dashboard._serializer import serialize_preference_history
|
||||
from optuna_dashboard.preferential import create_study
|
||||
from packaging import version
|
||||
import pytest
|
||||
|
||||
from .wsgi_client import send_request
|
||||
@@ -94,6 +95,10 @@ class APITestCase(TestCase):
|
||||
self.run_get_study_details({"limit": "-1"}, expected_status=400)
|
||||
|
||||
@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_best_trials_of_preferential_study(self) -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
study = create_study(n_generate=4, storage=storage)
|
||||
@@ -118,6 +123,10 @@ class APITestCase(TestCase):
|
||||
assert best_trials[0]["number"] == 0
|
||||
|
||||
@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_report_preference(self) -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
study = create_study(n_generate=4, storage=storage)
|
||||
@@ -152,6 +161,10 @@ class APITestCase(TestCase):
|
||||
assert worse.number == 1
|
||||
|
||||
@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_report_preference_when_typo_mode(self) -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
study = create_study(storage=storage, n_generate=3)
|
||||
@@ -176,6 +189,10 @@ class APITestCase(TestCase):
|
||||
self.assertEqual(status, 400)
|
||||
|
||||
@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_change_component(self) -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
study = create_study(storage=storage, n_generate=3)
|
||||
@@ -311,6 +328,10 @@ class APITestCase(TestCase):
|
||||
assert note_ver_key(0) not in study.system_attrs
|
||||
|
||||
@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_skip_trial(self) -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
study = create_study(n_generate=4, storage=storage)
|
||||
@@ -336,6 +357,10 @@ class APITestCase(TestCase):
|
||||
assert best_trials[0].number == 2
|
||||
|
||||
@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_remove_history(self) -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
study = create_study(storage=storage, n_generate=3)
|
||||
@@ -370,6 +395,10 @@ class APITestCase(TestCase):
|
||||
assert len(study.get_preferences()) == 0
|
||||
|
||||
@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_restore_history(self) -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
study = create_study(storage=storage, n_generate=3)
|
||||
|
||||
@@ -132,7 +132,7 @@ class _CachedExtraStudyPropertySearchSpaceTestCase(TestCase):
|
||||
create_trial(
|
||||
state=TrialState.COMPLETE, value=0, distributions=distributions, params=params
|
||||
),
|
||||
create_trial(state=TrialState.FAIL, value=0, distributions={}, params={}),
|
||||
create_trial(state=TrialState.FAIL, value=None, distributions={}, params={}),
|
||||
create_trial(
|
||||
state=TrialState.COMPLETE, value=0, distributions=distributions, params=params
|
||||
),
|
||||
@@ -235,7 +235,7 @@ class _CachedExtraStudyPropertyUserAttrs(TestCase):
|
||||
),
|
||||
create_trial(
|
||||
state=TrialState.FAIL,
|
||||
value=0,
|
||||
value=None,
|
||||
distributions={},
|
||||
params={},
|
||||
user_attrs={"bar": "bar"},
|
||||
|
||||
@@ -5,6 +5,7 @@ import sys
|
||||
from typing import Callable
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import optuna
|
||||
from optuna.storages import BaseStorage
|
||||
from optuna_dashboard._preferential_history import _SYSTEM_ATTR_PREFIX_HISTORY
|
||||
from optuna_dashboard._preferential_history import NewHistory
|
||||
@@ -14,6 +15,7 @@ from optuna_dashboard._preferential_history import restore_history
|
||||
from optuna_dashboard._serializer import serialize_preference_history
|
||||
from optuna_dashboard.preferential import create_study
|
||||
from optuna_dashboard.preferential._system_attrs import _SYSTEM_ATTR_PREFIX_PREFERENCE
|
||||
from packaging import version
|
||||
import pytest
|
||||
|
||||
from .storage_supplier import parametrize_storages
|
||||
@@ -24,6 +26,10 @@ if TYPE_CHECKING:
|
||||
from optuna_dashboard._preferential_history import History
|
||||
|
||||
|
||||
if version.parse(optuna.__version__) < version.parse("3.4.0"):
|
||||
pytest.skip("Preferential optimization is introduced at v3.4.0", allow_module_level=True)
|
||||
|
||||
|
||||
if sys.version_info < (3, 8):
|
||||
pytest.skip("BoTorch dropped Python3.7 support", allow_module_level=True)
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ from optuna_dashboard._serializer import serialize_study_detail
|
||||
from optuna_dashboard._serializer import serialize_study_summary
|
||||
from optuna_dashboard._storage import get_study_summaries
|
||||
from optuna_dashboard.preferential import create_study
|
||||
from packaging import version
|
||||
import pytest
|
||||
|
||||
|
||||
@@ -53,6 +54,9 @@ def test_serialize_numpy_floating() -> None:
|
||||
|
||||
|
||||
@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)
|
||||
@@ -80,6 +84,9 @@ def test_get_study_detail_is_not_preferential() -> None:
|
||||
|
||||
|
||||
@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_summary_is_preferential() -> None:
|
||||
storage = optuna.storages.InMemoryStorage()
|
||||
create_study(n_generate=4, storage=storage)
|
||||
|
||||
Reference in New Issue
Block a user