diff --git a/optuna/cli.py b/optuna/cli.py index d9bd5b1d24..14b859062e 100644 --- a/optuna/cli.py +++ b/optuna/cli.py @@ -1,6 +1,7 @@ """Optuna CLI module. If you want to add a new command, you also need to update the constant `_COMMANDS` """ + from argparse import ArgumentParser from argparse import Namespace import datetime diff --git a/optuna/multi_objective/trial.py b/optuna/multi_objective/trial.py index 928eab5605..5a34f832e0 100644 --- a/optuna/multi_objective/trial.py +++ b/optuna/multi_objective/trial.py @@ -102,30 +102,24 @@ def suggest_int( return self._trial.suggest_int(name, low, high, step=step, log=log) @overload - def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: - ... + def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: - ... + def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: - ... + def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: - ... + def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: - ... + def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: ... @overload def suggest_categorical( self, name: str, choices: Sequence[CategoricalChoiceType] - ) -> CategoricalChoiceType: - ... + ) -> CategoricalChoiceType: ... def suggest_categorical( self, name: str, choices: Sequence[CategoricalChoiceType] diff --git a/optuna/samplers/_brute_force.py b/optuna/samplers/_brute_force.py index 7d06733076..4577c05325 100644 --- a/optuna/samplers/_brute_force.py +++ b/optuna/samplers/_brute_force.py @@ -223,13 +223,15 @@ def after_trial( self._populate_tree( tree, ( - t - if t.number != trial.number - else create_trial( - state=state, # Set current trial as complete. - values=values, - params=trial.params, - distributions=trial.distributions, + ( + t + if t.number != trial.number + else create_trial( + state=state, # Set current trial as complete. + values=values, + params=trial.params, + distributions=trial.distributions, + ) ) for t in trials ), diff --git a/optuna/samplers/_lazy_random_state.py b/optuna/samplers/_lazy_random_state.py index 5ac99588d5..06b3446aaa 100644 --- a/optuna/samplers/_lazy_random_state.py +++ b/optuna/samplers/_lazy_random_state.py @@ -4,7 +4,6 @@ class LazyRandomState: - """Lazy Random State class. diff --git a/optuna/samplers/_nsgaiii/_sampler.py b/optuna/samplers/_nsgaiii/_sampler.py index 1c15abcec1..baa5bf48c1 100644 --- a/optuna/samplers/_nsgaiii/_sampler.py +++ b/optuna/samplers/_nsgaiii/_sampler.py @@ -83,18 +83,16 @@ def __init__( constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, reference_points: np.ndarray | None = None, dividing_parameter: int = 3, - elite_population_selection_strategy: Callable[ - [Study, list[FrozenTrial]], list[FrozenTrial] - ] - | None = None, - child_generation_strategy: Callable[ - [Study, dict[str, BaseDistribution], list[FrozenTrial]], dict[str, Any] - ] - | None = None, - after_trial_strategy: Callable[ - [Study, FrozenTrial, TrialState, Sequence[float] | None], None - ] - | None = None, + elite_population_selection_strategy: ( + Callable[[Study, list[FrozenTrial]], list[FrozenTrial]] | None + ) = None, + child_generation_strategy: ( + Callable[[Study, dict[str, BaseDistribution], list[FrozenTrial]], dict[str, Any]] + | None + ) = None, + after_trial_strategy: ( + Callable[[Study, FrozenTrial, TrialState, Sequence[float] | None], None] | None + ) = None, ) -> None: # TODO(ohta): Reconsider the default value of each parameter. diff --git a/optuna/samplers/_tpe/parzen_estimator.py b/optuna/samplers/_tpe/parzen_estimator.py index 6f8623c786..a2c806e8d6 100644 --- a/optuna/samplers/_tpe/parzen_estimator.py +++ b/optuna/samplers/_tpe/parzen_estimator.py @@ -115,29 +115,35 @@ def _is_log(dist: BaseDistribution) -> bool: def _transform(self, samples_dict: Dict[str, np.ndarray]) -> np.ndarray: return np.array( [ - np.log(samples_dict[param]) - if self._is_log(self._search_space[param]) - else samples_dict[param] + ( + np.log(samples_dict[param]) + if self._is_log(self._search_space[param]) + else samples_dict[param] + ) for param in self._search_space ] ).T def _untransform(self, samples_array: np.ndarray) -> Dict[str, np.ndarray]: res = { - param: np.exp(samples_array[:, i]) - if self._is_log(self._search_space[param]) - else samples_array[:, i] + param: ( + np.exp(samples_array[:, i]) + if self._is_log(self._search_space[param]) + else samples_array[:, i] + ) for i, param in enumerate(self._search_space) } # TODO(contramundum53): Remove this line after fixing log-Int hack. return { - param: np.clip( - dist.low + np.round((res[param] - dist.low) / dist.step) * dist.step, - dist.low, - dist.high, + param: ( + np.clip( + dist.low + np.round((res[param] - dist.low) / dist.step) * dist.step, + dist.low, + dist.high, + ) + if isinstance(dist, IntDistribution) + else res[param] ) - if isinstance(dist, IntDistribution) - else res[param] for (param, dist) in self._search_space.items() } diff --git a/optuna/samplers/nsgaii/_sampler.py b/optuna/samplers/nsgaii/_sampler.py index b57a58c6fb..1fc805bee3 100644 --- a/optuna/samplers/nsgaii/_sampler.py +++ b/optuna/samplers/nsgaii/_sampler.py @@ -140,18 +140,16 @@ def __init__( swapping_prob: float = 0.5, seed: int | None = None, constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, - elite_population_selection_strategy: Callable[ - [Study, list[FrozenTrial]], list[FrozenTrial] - ] - | None = None, - child_generation_strategy: Callable[ - [Study, dict[str, BaseDistribution], list[FrozenTrial]], dict[str, Any] - ] - | None = None, - after_trial_strategy: Callable[ - [Study, FrozenTrial, TrialState, Sequence[float] | None], None - ] - | None = None, + elite_population_selection_strategy: ( + Callable[[Study, list[FrozenTrial]], list[FrozenTrial]] | None + ) = None, + child_generation_strategy: ( + Callable[[Study, dict[str, BaseDistribution], list[FrozenTrial]], dict[str, Any]] + | None + ) = None, + after_trial_strategy: ( + Callable[[Study, FrozenTrial, TrialState, Sequence[float] | None], None] | None + ) = None, ) -> None: # TODO(ohta): Reconsider the default value of each parameter. diff --git a/optuna/storages/_journal/storage.py b/optuna/storages/_journal/storage.py index 47fb97cbfc..1f3e2e053a 100644 --- a/optuna/storages/_journal/storage.py +++ b/optuna/storages/_journal/storage.py @@ -74,8 +74,7 @@ class JournalStorage(BaseStorage): import optuna - def objective(trial): - ... + def objective(trial): ... storage = optuna.storages.JournalStorage( diff --git a/optuna/storages/_rdb/alembic/versions/v0.9.0.a.py b/optuna/storages/_rdb/alembic/versions/v0.9.0.a.py index f339379030..229757218e 100644 --- a/optuna/storages/_rdb/alembic/versions/v0.9.0.a.py +++ b/optuna/storages/_rdb/alembic/versions/v0.9.0.a.py @@ -5,6 +5,7 @@ Create Date: 2019-03-12 12:30:31.178819 """ + from alembic import op import sqlalchemy as sa diff --git a/optuna/storages/_rdb/alembic/versions/v1.2.0.a.py b/optuna/storages/_rdb/alembic/versions/v1.2.0.a.py index 776ba78113..b868a45909 100644 --- a/optuna/storages/_rdb/alembic/versions/v1.2.0.a.py +++ b/optuna/storages/_rdb/alembic/versions/v1.2.0.a.py @@ -5,6 +5,7 @@ Create Date: 2020-02-05 15:17:41.458947 """ + from alembic import op import sqlalchemy as sa diff --git a/optuna/storages/_rdb/alembic/versions/v1.3.0.a.py b/optuna/storages/_rdb/alembic/versions/v1.3.0.a.py index 164c9f378f..a24f837a49 100644 --- a/optuna/storages/_rdb/alembic/versions/v1.3.0.a.py +++ b/optuna/storages/_rdb/alembic/versions/v1.3.0.a.py @@ -5,6 +5,7 @@ Create Date: 2020-02-14 16:23:04.800808 """ + import json from alembic import op diff --git a/optuna/storages/_rdb/alembic/versions/v2.4.0.a.py b/optuna/storages/_rdb/alembic/versions/v2.4.0.a.py index 0af3e27957..fdfc0390d2 100644 --- a/optuna/storages/_rdb/alembic/versions/v2.4.0.a.py +++ b/optuna/storages/_rdb/alembic/versions/v2.4.0.a.py @@ -5,6 +5,7 @@ Create Date: 2020-11-17 02:16:16.536171 """ + from alembic import op import sqlalchemy as sa from typing import Any diff --git a/optuna/storages/_rdb/alembic/versions/v2.6.0.a_.py b/optuna/storages/_rdb/alembic/versions/v2.6.0.a_.py index 7bed546a03..76f7873d4b 100644 --- a/optuna/storages/_rdb/alembic/versions/v2.6.0.a_.py +++ b/optuna/storages/_rdb/alembic/versions/v2.6.0.a_.py @@ -5,6 +5,7 @@ Create Date: 2021-03-01 11:30:32.214196 """ + from alembic import op import sqlalchemy as sa diff --git a/optuna/storages/_rdb/alembic/versions/v3.0.0.a.py b/optuna/storages/_rdb/alembic/versions/v3.0.0.a.py index e40ef859f3..de4e24f65e 100644 --- a/optuna/storages/_rdb/alembic/versions/v3.0.0.a.py +++ b/optuna/storages/_rdb/alembic/versions/v3.0.0.a.py @@ -5,6 +5,7 @@ Create Date: 2021-11-21 23:48:42.424430 """ + from typing import Any from typing import List diff --git a/optuna/storages/_rdb/alembic/versions/v3.0.0.b.py b/optuna/storages/_rdb/alembic/versions/v3.0.0.b.py index 6023af4db2..e7d09c346d 100644 --- a/optuna/storages/_rdb/alembic/versions/v3.0.0.b.py +++ b/optuna/storages/_rdb/alembic/versions/v3.0.0.b.py @@ -5,6 +5,7 @@ Create Date: 2022-04-27 16:31:42.012666 """ + import enum from alembic import op diff --git a/optuna/storages/_rdb/alembic/versions/v3.0.0.c.py b/optuna/storages/_rdb/alembic/versions/v3.0.0.c.py index b2b70aa4f8..8c6d657ae1 100644 --- a/optuna/storages/_rdb/alembic/versions/v3.0.0.c.py +++ b/optuna/storages/_rdb/alembic/versions/v3.0.0.c.py @@ -5,6 +5,7 @@ Create Date: 2022-05-16 17:17:28.810792 """ + import enum import numpy as np diff --git a/optuna/storages/_rdb/alembic/versions/v3.0.0.d.py b/optuna/storages/_rdb/alembic/versions/v3.0.0.d.py index 866b8ed001..f35f2635f3 100644 --- a/optuna/storages/_rdb/alembic/versions/v3.0.0.d.py +++ b/optuna/storages/_rdb/alembic/versions/v3.0.0.d.py @@ -5,6 +5,7 @@ Create Date: 2022-06-02 09:57:22.818798 """ + import enum import numpy as np diff --git a/optuna/storages/_rdb/alembic/versions/v3.2.0.a_.py b/optuna/storages/_rdb/alembic/versions/v3.2.0.a_.py index becb69e96d..3e73e20918 100644 --- a/optuna/storages/_rdb/alembic/versions/v3.2.0.a_.py +++ b/optuna/storages/_rdb/alembic/versions/v3.2.0.a_.py @@ -5,6 +5,7 @@ Create Date: 2023-02-25 13:21:00.730272 """ + from alembic import op diff --git a/optuna/trial/_base.py b/optuna/trial/_base.py index 96e2dec8e6..4ab22c5f9a 100644 --- a/optuna/trial/_base.py +++ b/optuna/trial/_base.py @@ -55,35 +55,29 @@ def suggest_int( @overload @abc.abstractmethod - def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: - ... + def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: ... @overload @abc.abstractmethod - def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: - ... + def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: ... @overload @abc.abstractmethod - def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: - ... + def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: ... @overload @abc.abstractmethod - def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: - ... + def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: ... @overload @abc.abstractmethod - def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: - ... + def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: ... @overload @abc.abstractmethod def suggest_categorical( self, name: str, choices: Sequence[CategoricalChoiceType] - ) -> CategoricalChoiceType: - ... + ) -> CategoricalChoiceType: ... @abc.abstractmethod def suggest_categorical( diff --git a/optuna/trial/_fixed.py b/optuna/trial/_fixed.py index 5db23b0d5e..fbec6d9840 100644 --- a/optuna/trial/_fixed.py +++ b/optuna/trial/_fixed.py @@ -98,30 +98,24 @@ def suggest_int( return int(self._suggest(name, IntDistribution(low, high, log=log, step=step))) @overload - def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: - ... + def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: - ... + def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: - ... + def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: - ... + def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: - ... + def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: ... @overload def suggest_categorical( self, name: str, choices: Sequence[CategoricalChoiceType] - ) -> CategoricalChoiceType: - ... + ) -> CategoricalChoiceType: ... def suggest_categorical( self, name: str, choices: Sequence[CategoricalChoiceType] diff --git a/optuna/trial/_frozen.py b/optuna/trial/_frozen.py index e4340e0581..2f0e97257c 100644 --- a/optuna/trial/_frozen.py +++ b/optuna/trial/_frozen.py @@ -235,30 +235,24 @@ def suggest_int( return int(self._suggest(name, IntDistribution(low, high, log=log, step=step))) @overload - def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: - ... + def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: - ... + def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: - ... + def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: - ... + def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: - ... + def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: ... @overload def suggest_categorical( self, name: str, choices: Sequence[CategoricalChoiceType] - ) -> CategoricalChoiceType: - ... + ) -> CategoricalChoiceType: ... def suggest_categorical( self, name: str, choices: Sequence[CategoricalChoiceType] diff --git a/optuna/trial/_trial.py b/optuna/trial/_trial.py index fad8e8f267..40b623d083 100644 --- a/optuna/trial/_trial.py +++ b/optuna/trial/_trial.py @@ -328,30 +328,24 @@ def objective(trial): return suggested_value @overload - def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: - ... + def suggest_categorical(self, name: str, choices: Sequence[None]) -> None: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: - ... + def suggest_categorical(self, name: str, choices: Sequence[bool]) -> bool: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: - ... + def suggest_categorical(self, name: str, choices: Sequence[int]) -> int: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: - ... + def suggest_categorical(self, name: str, choices: Sequence[float]) -> float: ... @overload - def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: - ... + def suggest_categorical(self, name: str, choices: Sequence[str]) -> str: ... @overload def suggest_categorical( self, name: str, choices: Sequence[CategoricalChoiceType] - ) -> CategoricalChoiceType: - ... + ) -> CategoricalChoiceType: ... def suggest_categorical( self, name: str, choices: Sequence[CategoricalChoiceType] diff --git a/optuna/visualization/_intermediate_values.py b/optuna/visualization/_intermediate_values.py index 03420e9797..f92978607d 100644 --- a/optuna/visualization/_intermediate_values.py +++ b/optuna/visualization/_intermediate_values.py @@ -130,9 +130,11 @@ def _get_intermediate_plot(info: _IntermediatePlotInfo) -> "go.Figure": x=tuple((x for x, _ in tinfo.sorted_intermediate_values)), y=tuple((y for _, y in tinfo.sorted_intermediate_values)), mode="lines+markers", - marker=default_marker - if tinfo.feasible - else {**default_marker, "color": "#CCCCCC"}, # type: ignore[dict-item] + marker=( + default_marker + if tinfo.feasible + else {**default_marker, "color": "#CCCCCC"} # type: ignore[dict-item] + ), name="Trial{}".format(tinfo.trial_number), ) for tinfo in trial_infos diff --git a/pyproject.toml b/pyproject.toml index 00bbbf8d2a..31c6be95a8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,7 +50,7 @@ benchmark = [ "virtualenv" ] checking = [ - "black<24.0.0", + "black", "blackdoc", "flake8", "isort", diff --git a/setup.cfg b/setup.cfg index eea1503420..61143c62bc 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,6 +2,7 @@ [flake8] ignore = E203, + E704, W503 max-line-length = 99 statistics = True diff --git a/tests/storages_tests/rdb_tests/create_db.py b/tests/storages_tests/rdb_tests/create_db.py index 83dfa41da5..b2e47b6c7c 100644 --- a/tests/storages_tests/rdb_tests/create_db.py +++ b/tests/storages_tests/rdb_tests/create_db.py @@ -36,7 +36,6 @@ """ - from argparse import ArgumentParser from typing import Tuple diff --git a/tests/visualization_tests/test_pareto_front.py b/tests/visualization_tests/test_pareto_front.py index e9e63e419d..b50cee12e3 100644 --- a/tests/visualization_tests/test_pareto_front.py +++ b/tests/visualization_tests/test_pareto_front.py @@ -103,9 +103,9 @@ def test_get_pareto_front_info_unconstrained( n_targets=2, target_names=target_names or metric_names or ["Objective 0", "Objective 1"], best_trials_with_values=[(trials[2], [0, 2]), (trials[3], [1, 0])], - non_best_trials_with_values=[(trials[0], [1, 2]), (trials[1], [1, 1])] - if include_dominated_trials - else [], + non_best_trials_with_values=( + [(trials[0], [1, 2]), (trials[1], [1, 1])] if include_dominated_trials else [] + ), infeasible_trials_with_values=[], axis_order=axis_order or [0, 1], include_dominated_trials=include_dominated_trials, @@ -190,9 +190,9 @@ def test_get_pareto_front_info_3d( n_targets=3, target_names=target_names or ["Objective 0", "Objective 1", "Objective 2"], best_trials_with_values=[(trials[2], [0, 2, 1]), (trials[3], [1, 0, 1])], - non_best_trials_with_values=[(trials[0], [1, 2, 1]), (trials[1], [1, 1, 1])] - if include_dominated_trials - else [], + non_best_trials_with_values=( + [(trials[0], [1, 2, 1]), (trials[1], [1, 1, 1])] if include_dominated_trials else [] + ), infeasible_trials_with_values=[], axis_order=axis_order or [0, 1, 2], include_dominated_trials=include_dominated_trials, diff --git a/tutorial/10_key_features/001_first.py b/tutorial/10_key_features/001_first.py index c8b1f620d4..07de6b71d6 100644 --- a/tutorial/10_key_features/001_first.py +++ b/tutorial/10_key_features/001_first.py @@ -15,7 +15,6 @@ let's optimize a simple quadratic function: :math:`(x - 2)^2`. """ - ################################################################################################### # First of all, import :mod:`optuna`. diff --git a/tutorial/10_key_features/002_configurations.py b/tutorial/10_key_features/002_configurations.py index a0d86ff341..924ee1a518 100644 --- a/tutorial/10_key_features/002_configurations.py +++ b/tutorial/10_key_features/002_configurations.py @@ -14,7 +14,6 @@ integer and floating point parameters. """ - import optuna diff --git a/tutorial/20_recipes/004_cli.py b/tutorial/20_recipes/004_cli.py index 4ded754129..bea8363d89 100644 --- a/tutorial/20_recipes/004_cli.py +++ b/tutorial/20_recipes/004_cli.py @@ -26,7 +26,6 @@ It is totally fine to write scripts like the following: """ - import optuna diff --git a/tutorial/20_recipes/007_optuna_callback.py b/tutorial/20_recipes/007_optuna_callback.py index dbf6441c57..91309812ad 100644 --- a/tutorial/20_recipes/007_optuna_callback.py +++ b/tutorial/20_recipes/007_optuna_callback.py @@ -12,7 +12,6 @@ `MLflowCallback `_ is a great example. """ - ################################################################################################### # Stop optimization after some trials are pruned in a row # ------------------------------------------------------- diff --git a/tutorial/20_recipes/009_ask_and_tell.py b/tutorial/20_recipes/009_ask_and_tell.py index 219ab78da3..7c04a760b5 100644 --- a/tutorial/20_recipes/009_ask_and_tell.py +++ b/tutorial/20_recipes/009_ask_and_tell.py @@ -20,6 +20,7 @@ Let's consider the traditional supervised classification problem; you aim to maximize the validation accuracy. To do so, you train `LogisticRegression` as a simple model. """ + import numpy as np from sklearn.datasets import make_classification from sklearn.linear_model import LogisticRegression diff --git a/tutorial/20_recipes/012_artifact_tutorial.py b/tutorial/20_recipes/012_artifact_tutorial.py index 92ac45ccde..1dc1fa2c9c 100644 --- a/tutorial/20_recipes/012_artifact_tutorial.py +++ b/tutorial/20_recipes/012_artifact_tutorial.py @@ -235,6 +235,7 @@ def objective(trial: optuna.Trial) -> float: First, let's import the necessary modules and define some helper functions. You need to install the ASE library for handling chemical structures in addition to Optuna, so please install it with `pip install ase`. """ + from __future__ import annotations import io