From db15d9b56d7c270e9b31e53dc82c9aa61c5b70c2 Mon Sep 17 00:00:00 2001 From: keisuke-umezawa Date: Wed, 24 Jan 2024 21:58:07 +0900 Subject: [PATCH] Skip unit test with optuna version --- .github/workflows/python-tests.yml | 19 ++++++++++++++ python_tests/artifact/test_backend.py | 8 +++++- python_tests/preferential/test_samplers.py | 5 +++- python_tests/preferential/test_study.py | 5 ++++ python_tests/test_api.py | 29 ++++++++++++++++++++++ python_tests/test_csv_download.py | 5 ++++ python_tests/test_preferential_history.py | 6 +++++ python_tests/test_serializers.py | 7 ++++++ 8 files changed, 82 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 8f0ff58c..1c294b33 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -70,3 +70,22 @@ jobs: - name: Run python unit tests run: | pytest python_tests + test-with-optuna-oldest: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + architecture: x64 + - name: Install dependencies + run: | + python -m pip install --progress-bar off --upgrade pip setuptools + pip install --progress-bar off .[optional] + pip install --progress-bar off .[test] + pip install --progress-bar off . + python -m pip install --progress-bar off --force-reinstall optuna==3.1.0 + - name: Run python unit tests + run: | + pytest python_tests diff --git a/python_tests/artifact/test_backend.py b/python_tests/artifact/test_backend.py index 90004f11..c9caec1d 100644 --- a/python_tests/artifact/test_backend.py +++ b/python_tests/artifact/test_backend.py @@ -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 diff --git a/python_tests/preferential/test_samplers.py b/python_tests/preferential/test_samplers.py index 2de8864c..7effe9da 100644 --- a/python_tests/preferential/test_samplers.py +++ b/python_tests/preferential/test_samplers.py @@ -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", ), ), ], diff --git a/python_tests/preferential/test_study.py b/python_tests/preferential/test_study.py index 9b4a3f31..5ba8406a 100644 --- a/python_tests/preferential/test_study.py +++ b/python_tests/preferential/test_study.py @@ -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) diff --git a/python_tests/test_api.py b/python_tests/test_api.py index e7210710..d644635f 100644 --- a/python_tests/test_api.py +++ b/python_tests/test_api.py @@ -17,6 +17,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 @@ -110,6 +111,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_get_best_trials_of_preferential_study(self) -> None: storage = optuna.storages.InMemoryStorage() study = create_study(n_generate=4, storage=storage) @@ -134,6 +139,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) @@ -168,6 +177,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) @@ -192,6 +205,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) @@ -327,6 +344,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) @@ -352,6 +373,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) @@ -386,6 +411,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) diff --git a/python_tests/test_csv_download.py b/python_tests/test_csv_download.py index 019f18ba..dc2d3ee6 100644 --- a/python_tests/test_csv_download.py +++ b/python_tests/test_csv_download.py @@ -5,11 +5,16 @@ from typing import Any import optuna from optuna.trial import TrialState from optuna_dashboard._app import create_app +from packaging import version import pytest from .wsgi_client import send_request +if version.parse(optuna.__version__) < version.parse("3.2.0"): + pytest.skip("Study.metrics_name is introduced at v3.2.0", allow_module_level=True) + + def _validate_output( storage: optuna.storages.BaseStorage, correct_status: int, diff --git a/python_tests/test_preferential_history.py b/python_tests/test_preferential_history.py index dcae4797..84def0d3 100644 --- a/python_tests/test_preferential_history.py +++ b/python_tests/test_preferential_history.py @@ -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) diff --git a/python_tests/test_serializers.py b/python_tests/test_serializers.py index d1bdf59b..a991d5d3 100644 --- a/python_tests/test_serializers.py +++ b/python_tests/test_serializers.py @@ -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)