From 22f5c9cf91103d4fae3b1c252ed93106bb9fa21a Mon Sep 17 00:00:00 2001 From: c-bata Date: Thu, 24 Mar 2022 12:18:14 +0900 Subject: [PATCH 1/5] Run integration tests with latest optuna ver --- .github/workflows/integration-tests.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index f74b949b..b7517601 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -14,6 +14,9 @@ on: jobs: test: runs-on: ubuntu-latest + strategy: + matrix: + optuna-version: ['optuna==2.10.0', 'git+https://github.com/optuna/optuna.git'] steps: - uses: actions/checkout@v2 @@ -29,11 +32,14 @@ jobs: with: python-version: '3.8' architecture: x64 - - name: Install dependencies + - name: Setup Optuna ${{ matrix.optuna-version }} run: | python -m pip install --progress-bar off --upgrade pip setuptools - pip install --progress-bar off . - pip install --progress-bar off pyppeteer + python -m pip install --progress-bar off --upgrade ${{ matrix.optuna-version }} + - name: Install dependencies + run: | + python -m pip install --progress-bar off . + python -m pip install --progress-bar off pyppeteer - name: Cache headless chromium id: cache-chromium From ba96fd624b9c81faab712e7169333047602b7477 Mon Sep 17 00:00:00 2001 From: c-bata Date: Thu, 24 Mar 2022 12:34:58 +0900 Subject: [PATCH 2/5] Set include_best_trial=True for v3 release --- optuna_dashboard/_app.py | 13 ++++++++----- setup.cfg | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/optuna_dashboard/_app.py b/optuna_dashboard/_app.py index 167a6ed6..8ec201b1 100644 --- a/optuna_dashboard/_app.py +++ b/optuna_dashboard/_app.py @@ -30,6 +30,8 @@ from optuna.storages import RedisStorage from optuna.study import StudyDirection from optuna.study import StudySummary from optuna.trial import FrozenTrial +from optuna.version import __version__ as optuna_ver +from packaging import version from . import _note as note from ._importance import get_param_importance_from_trials_cache @@ -121,12 +123,13 @@ def create_app(storage: BaseStorage, debug: bool = False) -> Bottle: @app.get("/api/studies") @json_api_view def list_study_summaries() -> BottleViewReturn: - summaries = [ - serialize_study_summary(summary) - for summary in storage.get_all_study_summaries() - ] + if version.parse(optuna_ver) >= version.Version("3.0.0b0"): + summaries = storage.get_all_study_summaries(include_best_trial=True) + else: + summaries = storage.get_all_study_summaries() + serialized = [serialize_study_summary(summary) for summary in summaries] return { - "study_summaries": summaries, + "study_summaries": serialized, } @app.post("/api/studies") diff --git a/setup.cfg b/setup.cfg index c9886d70..3b084284 100644 --- a/setup.cfg +++ b/setup.cfg @@ -29,6 +29,7 @@ include_package_data = False packages = find: install_requires = optuna>=2.4 + packaging bottle typing-extensions;python_version<'3.8' scikit-learn From 6c8fc37c67f018aa310a2e1d9fe52c0cb86defee Mon Sep 17 00:00:00 2001 From: Ellon M Date: Mon, 28 Mar 2022 20:19:57 +0300 Subject: [PATCH 3/5] Set include_best_trial=True in get_study_summary --- optuna_dashboard/_app.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/optuna_dashboard/_app.py b/optuna_dashboard/_app.py index 8ec201b1..53c9eff3 100644 --- a/optuna_dashboard/_app.py +++ b/optuna_dashboard/_app.py @@ -77,7 +77,10 @@ def json_api_view(view: BottleView) -> BottleView: def get_study_summary(storage: BaseStorage, study_id: int) -> Optional[StudySummary]: - summaries = storage.get_all_study_summaries() + if version.parse(optuna_ver) >= version.Version("3.0.0b0.dev"): + summaries = storage.get_all_study_summaries(include_best_trial=True) + else: + summaries = storage.get_all_study_summaries() for summary in summaries: if summary._study_id != study_id: continue @@ -123,7 +126,7 @@ def create_app(storage: BaseStorage, debug: bool = False) -> Bottle: @app.get("/api/studies") @json_api_view def list_study_summaries() -> BottleViewReturn: - if version.parse(optuna_ver) >= version.Version("3.0.0b0"): + if version.parse(optuna_ver) >= version.Version("3.0.0b0.dev"): summaries = storage.get_all_study_summaries(include_best_trial=True) else: summaries = storage.get_all_study_summaries() From e1b47bab47080195cc4c3502c02f070f9751e7c8 Mon Sep 17 00:00:00 2001 From: c-bata Date: Wed, 6 Apr 2022 09:55:32 +0900 Subject: [PATCH 4/5] Pass mypy lint with optuna v2.10.0 --- optuna_dashboard/_app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/optuna_dashboard/_app.py b/optuna_dashboard/_app.py index 53c9eff3..1feab16a 100644 --- a/optuna_dashboard/_app.py +++ b/optuna_dashboard/_app.py @@ -78,7 +78,7 @@ def json_api_view(view: BottleView) -> BottleView: def get_study_summary(storage: BaseStorage, study_id: int) -> Optional[StudySummary]: if version.parse(optuna_ver) >= version.Version("3.0.0b0.dev"): - summaries = storage.get_all_study_summaries(include_best_trial=True) + summaries = storage.get_all_study_summaries(include_best_trial=True) # type: ignore else: summaries = storage.get_all_study_summaries() for summary in summaries: @@ -127,7 +127,7 @@ def create_app(storage: BaseStorage, debug: bool = False) -> Bottle: @json_api_view def list_study_summaries() -> BottleViewReturn: if version.parse(optuna_ver) >= version.Version("3.0.0b0.dev"): - summaries = storage.get_all_study_summaries(include_best_trial=True) + summaries = storage.get_all_study_summaries(include_best_trial=True) # type: ignore else: summaries = storage.get_all_study_summaries() serialized = [serialize_study_summary(summary) for summary in summaries] From a941a030a3f18285d970c270c03910eb2409c4b4 Mon Sep 17 00:00:00 2001 From: c-bata Date: Wed, 6 Apr 2022 10:35:24 +0900 Subject: [PATCH 5/5] Fix visual_regression_test.py --- optuna_dashboard/_app.py | 4 ++-- visual_regression_test.py | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/optuna_dashboard/_app.py b/optuna_dashboard/_app.py index 1feab16a..2221ff42 100644 --- a/optuna_dashboard/_app.py +++ b/optuna_dashboard/_app.py @@ -80,7 +80,7 @@ def get_study_summary(storage: BaseStorage, study_id: int) -> Optional[StudySumm if version.parse(optuna_ver) >= version.Version("3.0.0b0.dev"): summaries = storage.get_all_study_summaries(include_best_trial=True) # type: ignore else: - summaries = storage.get_all_study_summaries() + summaries = storage.get_all_study_summaries() # type: ignore for summary in summaries: if summary._study_id != study_id: continue @@ -129,7 +129,7 @@ def create_app(storage: BaseStorage, debug: bool = False) -> Bottle: if version.parse(optuna_ver) >= version.Version("3.0.0b0.dev"): summaries = storage.get_all_study_summaries(include_best_trial=True) # type: ignore else: - summaries = storage.get_all_study_summaries() + summaries = storage.get_all_study_summaries() # type: ignore serialized = [serialize_study_summary(summary) for summary in summaries] return { "study_summaries": serialized, diff --git a/visual_regression_test.py b/visual_regression_test.py index 1ffcf5dc..fbe639bb 100644 --- a/visual_regression_test.py +++ b/visual_regression_test.py @@ -10,6 +10,8 @@ from typing import Tuple from wsgiref.simple_server import make_server import optuna +from optuna.version import __version__ as optuna_ver +from packaging import version from pyppeteer import launch from pyppeteer.page import Page @@ -196,7 +198,11 @@ async def take_screenshots(storage: optuna.storages.BaseStorage) -> List[str]: time.sleep(1) await page.screenshot({"path": os.path.join(args.output_dir, "study-list.png")}) - study_ids = {s._study_id: s.study_name for s in storage.get_all_study_summaries()} + if version.parse(optuna_ver) >= version.Version("3.0.0b0.dev"): + summaries = storage.get_all_study_summaries(include_best_trial=True) # type: ignore + else: + summaries = storage.get_all_study_summaries() # type: ignore + study_ids = {s._study_id: s.study_name for s in summaries} for study_id, study_name in study_ids.items(): await page.goto(f"http://{args.host}:{args.port}/dashboard/studies/{study_id}") time.sleep(args.sleep)