internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: facebookresearch/hydra

Issue:
[Feature Request] [Hydra-Submitit-Launcher] Add support for passing `additional_parameters` as supported by Submititi
# 🚀 Feature Request

When calling [Submitit](https://github.com/facebookincubator/submitit) directly (not the plugin), one can pass an optional dictionary argument called [`additional_parameters`](https://github.com/facebookincubator/submitit/blob/e6fc6b2532a2ea480f08747816f14c53f526ef04/submitit/slurm/slurm.py#L432) to add parameters which are not currently available in submitit.

This argument can not be passed when using the submitit-plugin. Example error:

```
Key 'additional_parameters' not in 'SlurmQueueConf'
        full_key: hydra.launcher.additional_parameters
        reference_type=Optional[SlurmQueueConf]
        object_type=SlurmQueueConf
```

We should add support for passing this `additional_parameters` dict via the plugin aswell.

## Motivation

Same as above.

## Pitch

Add support for the dict in [SlurmQueueConf](https://github.com/facebookresearch/hydra/blob/master/plugins/hydra_submitit_launcher/hydra_plugins/hydra_submitit_launcher/config.py#L31) and pass to submitit.AutoExecutor [here](https://github.com/facebookresearch/hydra/blob/dfbebc34020ad3d4bf1ab061565408740e62eb22/plugins/hydra_submitit_launcher/hydra_plugins/hydra_submitit_launcher/submitit_launcher.py#L105)

**Are you willing to open a pull request?** (See [CONTRIBUTING](../../CONTRIBUTING.md)): Yes

## Additional context

Since this change is quite small, is there any reason it wasnt done in the first iteration of the plugin?


Discussion:
I don't know if there was a reason for leaving it out.
@jrapin?
> I don't know if there was a reason for leaving it out.
> @jrapin?

Only historical reason, it did not exist when the first version was added, and I did not think about adding it later on :s
@omry @jrapin  should we add it now?
> @omry @jrapin should we add it now?

definitely ;)

Resolving patch:
diff --git a/plugins/hydra_submitit_launcher/hydra_plugins/hydra_submitit_launcher/config.py b/plugins/hydra_submitit_launcher/hydra_plugins/hydra_submitit_launcher/config.py
--- a/plugins/hydra_submitit_launcher/hydra_plugins/hydra_submitit_launcher/config.py
+++ b/plugins/hydra_submitit_launcher/hydra_plugins/hydra_submitit_launcher/config.py
@@ -1,6 +1,6 @@
 # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
-from dataclasses import dataclass
-from typing import Optional
+from dataclasses import dataclass, field
+from typing import Any, Dict, Optional
 
 from hydra.core.config_store import ConfigStore
 
@@ -57,6 +57,9 @@ class SlurmQueueConf(BaseQueueConf):
     # check the following for more info on slurm_max_num_timeout
     # https://github.com/facebookincubator/submitit/blob/master/docs/checkpointing.md
     max_num_timeout: int = 0
+    # Useful to add parameters which are not currently available in the plugin.
+    # Eg: {"mail-user": "blublu@fb.com", "mail-type": "BEGIN"}
+    additional_parameters: Dict[str, Any] = field(default_factory=dict)
 
 
 @dataclass


Test patch:
Repository: facebookresearch/hydra

Issue:
[Bug] hydra.job.id and hydra.job.num are not properly transferred to jobs in multirun



Discussion:

Resolving patch:
diff --git a/hydra/core/utils.py b/hydra/core/utils.py
--- a/hydra/core/utils.py
+++ b/hydra/core/utils.py
@@ -88,6 +88,7 @@ def run_job(
 ) -> "JobReturn":
     old_cwd = os.getcwd()
     working_dir = str(OmegaConf.select(config, job_dir_key))
+    orig_hydra_cfg = HydraConfig.instance().cfg
     if job_subdir_key is not None:
         # evaluate job_subdir_key lazily.
         # this is running on the client side in sweep and contains things such as job:id which
@@ -98,11 +99,16 @@ def run_job(
         ret = JobReturn()
         ret.working_dir = working_dir
         task_cfg = copy.deepcopy(config)
+        hydra_cfg = OmegaConf.masked_copy(task_cfg, "hydra")
+        # maintain parent to preserve interpolation links from hydra_cfg to job_cfg
+        hydra_cfg._set_parent(task_cfg)
         with read_write(task_cfg):
             with open_dict(task_cfg):
                 del task_cfg["hydra"]
+        HydraConfig.instance().cfg = hydra_cfg  # type: ignore
+
         ret.cfg = task_cfg
-        ret.hydra_cfg = OmegaConf.create({"hydra": HydraConfig.get()})
+        ret.hydra_cfg = hydra_cfg
         overrides = OmegaConf.to_container(config.hydra.overrides.task)
         assert isinstance(overrides, list)
         ret.overrides = overrides
@@ -113,9 +119,6 @@ def run_job(
         if configure_logging:
             configure_log(config.hydra.job_logging, config.hydra.verbose)
 
-        hydra_cfg = OmegaConf.masked_copy(config, "hydra")
-        assert isinstance(hydra_cfg, DictConfig)
-
         if config.hydra.output_subdir is not None:
             hydra_output = Path(config.hydra.output_subdir)
             _save_config(task_cfg, "config.yaml", hydra_output)
@@ -130,6 +133,7 @@ def run_job(
 
         return ret
     finally:
+        HydraConfig.instance().cfg = orig_hydra_cfg
         os.chdir(old_cwd)
 
 


Test patch:
diff --git a/hydra/test_utils/launcher_common_tests.py b/hydra/test_utils/launcher_common_tests.py
--- a/hydra/test_utils/launcher_common_tests.py
+++ b/hydra/test_utils/launcher_common_tests.py
@@ -335,6 +335,8 @@ def sweep_1_job(
         assert job_ret[0].hydra_cfg.hydra.job.name == "a_module", (
             "Unexpected job name: " + job_ret[0].hydra_cfg.hydra.job.name
         )
+        assert job_ret[0].hydra_cfg.hydra.job.id is not None
+        assert job_ret[0].hydra_cfg.hydra.job.num is not None
         verify_dir_outputs(sweep.returns[0][0])
 
 
@@ -381,6 +383,9 @@ def sweep_2_jobs(
             assert job_ret.hydra_cfg.hydra.job.name == "a_module", (
                 "Unexpected job name: " + job_ret.hydra_cfg.hydra.job.name
             )
+            assert job_ret.hydra_cfg.hydra.job.id is not None
+            assert job_ret.hydra_cfg.hydra.job.num is not None
+
             verify_dir_outputs(job_ret, job_ret.overrides)
             path = temp_dir / str(i)
             lst = [x for x in temp_dir.iterdir() if x.is_dir()]
Repository: facebookresearch/hydra

Issue:
[Bug] hydra.job.id and hydra.job.num are not properly transferred to jobs in multirun



Discussion:

Resolving patch:
diff --git a/hydra/core/utils.py b/hydra/core/utils.py
--- a/hydra/core/utils.py
+++ b/hydra/core/utils.py
@@ -87,6 +87,7 @@ def run_job(
 ) -> "JobReturn":
     old_cwd = os.getcwd()
     working_dir = str(OmegaConf.select(config, job_dir_key))
+    orig_hydra_cfg = HydraConfig.instance().cfg
     if job_subdir_key is not None:
         # evaluate job_subdir_key lazily.
         # this is running on the client side in sweep and contains things such as job:id which
@@ -97,11 +98,16 @@ def run_job(
         ret = JobReturn()
         ret.working_dir = working_dir
         task_cfg = copy.deepcopy(config)
+        hydra_cfg = OmegaConf.masked_copy(task_cfg, "hydra")
+        # maintain parent to preserve interpolation links from hydra_cfg to job_cfg
+        hydra_cfg._set_parent(task_cfg)
         with read_write(task_cfg):
             with open_dict(task_cfg):
                 del task_cfg["hydra"]
+        HydraConfig.instance().cfg = hydra_cfg  # type: ignore
+
         ret.cfg = task_cfg
-        ret.hydra_cfg = OmegaConf.create({"hydra": HydraConfig.get()})
+        ret.hydra_cfg = hydra_cfg
         overrides = OmegaConf.to_container(config.hydra.overrides.task)
         assert isinstance(overrides, list)
         ret.overrides = overrides
@@ -112,9 +118,6 @@ def run_job(
         if configure_logging:
             configure_log(config.hydra.job_logging, config.hydra.verbose)
 
-        hydra_cfg = OmegaConf.masked_copy(config, "hydra")
-        assert isinstance(hydra_cfg, DictConfig)
-
         if config.hydra.output_subdir is not None:
             hydra_output = Path(config.hydra.output_subdir)
             _save_config(task_cfg, "config.yaml", hydra_output)
@@ -129,6 +132,7 @@ def run_job(
 
         return ret
     finally:
+        HydraConfig.instance().cfg = orig_hydra_cfg
         os.chdir(old_cwd)
 
 


Test patch:
diff --git a/hydra/test_utils/launcher_common_tests.py b/hydra/test_utils/launcher_common_tests.py
--- a/hydra/test_utils/launcher_common_tests.py
+++ b/hydra/test_utils/launcher_common_tests.py
@@ -342,6 +342,8 @@ def sweep_1_job(
         assert job_ret[0].hydra_cfg.hydra.job.name == "a_module", (
             "Unexpected job name: " + job_ret[0].hydra_cfg.hydra.job.name
         )
+        assert job_ret[0].hydra_cfg.hydra.job.id is not None
+        assert job_ret[0].hydra_cfg.hydra.job.num is not None
         verify_dir_outputs(sweep.returns[0][0])
 
 
@@ -388,6 +390,9 @@ def sweep_2_jobs(
             assert job_ret.hydra_cfg.hydra.job.name == "a_module", (
                 "Unexpected job name: " + job_ret.hydra_cfg.hydra.job.name
             )
+            assert job_ret.hydra_cfg.hydra.job.id is not None
+            assert job_ret.hydra_cfg.hydra.job.num is not None
+
             verify_dir_outputs(job_ret, job_ret.overrides)
             path = temp_dir / str(i)
             lst = [x for x in temp_dir.iterdir() if x.is_dir()]
Repository: facebookresearch/hydra

Issue:
Release new version of Hydra
# 🚀 Feature Request

I would like you to release Hydra that includes this PR: https://github.com/facebookresearch/hydra/pull/1197

## Motivation

currently I am using python 3.9 and I can't run Hydra due to a bug that is solved in above PR




Discussion:
Thanks. A new version of Hydra 1.0 is planned in a few weeks (to address some other needs).
In the mean time, you can install Hydra 1.0 with Python 3.9 support from the [1.0 branch](https://github.com/facebookresearch/hydra/tree/1.0_branch).

Resolving patch:
diff --git a/hydra/__init__.py b/hydra/__init__.py
--- a/hydra/__init__.py
+++ b/hydra/__init__.py
@@ -1,7 +1,7 @@
 # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
 
 # Source of truth for Hydra's version
-__version__ = "1.0.4"
+__version__ = "1.0.5"
 from hydra import utils
 from hydra.errors import MissingConfigException
 from hydra.main import main


Test patch:
Repository: facebookresearch/hydra

Issue:
[Nevergrad-Plugin] Add support for Python 3.9
Python 3.9 support pending on scikit 2.4.0 release. Relevant comment: scikit-learn/scikit-learn#18621 (comment)

Related to #1062


Discussion:
Scikit 0.24.1 has been released. Checking if we can enable 3.9 now.

Resolving patch:
diff --git a/plugins/hydra_nevergrad_sweeper/setup.py b/plugins/hydra_nevergrad_sweeper/setup.py
--- a/plugins/hydra_nevergrad_sweeper/setup.py
+++ b/plugins/hydra_nevergrad_sweeper/setup.py
@@ -19,7 +19,7 @@
             "Programming Language :: Python :: 3.6",
             "Programming Language :: Python :: 3.7",
             "Programming Language :: Python :: 3.8",
-            # "Programming Language :: Python :: 3.9",
+            "Programming Language :: Python :: 3.9",
             "Operating System :: OS Independent",
             "Development Status :: 4 - Beta",
         ],


Test patch:
Repository: facebookresearch/hydra

Issue:
[Ax-Plugin] Add support for Python 3.9
Python 3.9 support pending on scikit 2.4.0 release. Relevant comment: https://github.com/scikit-learn/scikit-learn/issues/18621#issuecomment-733078676

Related to #1062 


Discussion:
Scikit 0.24.1 has been released. Checking if we can enable 3.9 now.

Resolving patch:
diff --git a/plugins/hydra_ax_sweeper/setup.py b/plugins/hydra_ax_sweeper/setup.py
--- a/plugins/hydra_ax_sweeper/setup.py
+++ b/plugins/hydra_ax_sweeper/setup.py
@@ -18,7 +18,7 @@
             "License :: OSI Approved :: MIT License",
             "Programming Language :: Python :: 3.7",
             "Programming Language :: Python :: 3.8",
-            # "Programming Language :: Python :: 3.9",
+            "Programming Language :: Python :: 3.9",
             "Operating System :: POSIX :: Linux",
             "Operating System :: MacOS",
             "Development Status :: 4 - Beta",


Test patch:
Repository: facebookresearch/hydra

Issue:
[Bug] Config composition error with latest version of OmegaConf
# 🐛 Bug
## Description

When using OmegaConf at commit 2dd15f9 (first commit where this problem occurs), there are multiple Hydra tests failures, for instance:

```
pytest "tests/test_basic_launcher.py::TestBasicLauncher::test_sweep_1_job[basic-overrides0]"
(...)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = __INVALID__, value = None

    def validate_and_convert(self, value: Any) -> Any:
        """
        Validates input and converts to canonical form
        :param value: input value
        :return: converted value ("100" may be converted to 100 for example)
        """
        if value is None:
            if self._is_optional():
                return None
>           raise ValidationError("Non optional field cannot be assigned None")
E           hydra.errors.ConfigCompositionException

../omegaconf/omegaconf/nodes.py:55: ConfigCompositionException
```

## Checklist
- [X] I checked on the latest version of Hydra
- [X] I created a minimal repro (See [this](https://stackoverflow.com/help/minimal-reproducible-example) for tips).

## To reproduce

Use master branch of Hydra with OmegaConf's commit 2dd15f9

## Additional context

This might actually be an OmegaConf bug (I'm not sure).


Discussion:

Resolving patch:
diff --git a/hydra/conf/__init__.py b/hydra/conf/__init__.py
--- a/hydra/conf/__init__.py
+++ b/hydra/conf/__init__.py
@@ -95,7 +95,8 @@ class RuntimeConf:
     config_sources: List[ConfigSourceInfo] = MISSING
 
     # Composition choices dictionary
-    choices: Dict[str, str] = field(default_factory=lambda: {})
+    # Ideally, the value type would be Union[str, List[str], None]
+    choices: Dict[str, Any] = field(default_factory=lambda: {})
 
 
 @dataclass


Test patch:
Repository: facebookresearch/hydra

Issue:
Document hydra.callbacks api.
- [ ]  Document API
- [ ]  Add news fragment if missing


Discussion:

Resolving patch:
diff --git a/hydra/experimental/callback.py b/hydra/experimental/callback.py
--- a/hydra/experimental/callback.py
+++ b/hydra/experimental/callback.py
@@ -30,14 +30,14 @@ def on_multirun_start(self, config: DictConfig, **kwargs: Any) -> None:
 
     def on_multirun_end(self, config: DictConfig, **kwargs: Any) -> None:
         """
-        Called in MULTIRUN mode after all job end.
+        Called in MULTIRUN mode after all jobs end.
         """
         ...
 
     def on_job_start(self, config: DictConfig, **kwargs: Any) -> None:
         """
-        Called in both RUN and MULTIRUN modes inside a Hydra job; before running
-        application code.
+        Called in both RUN and MULTIRUN modes, once for each Hydra job (before running
+        application code).
         """
         ...
 
@@ -45,7 +45,7 @@ def on_job_end(
         self, config: DictConfig, job_return: JobReturn, **kwargs: Any
     ) -> None:
         """
-        Called in both RUN and MULTIRUN modes inside a Hydra job; after running
-        application code.
+        Called in both RUN and MULTIRUN modes, once for each Hydra job (after running
+        application code).
         """
         ...


Test patch:
Repository: facebookresearch/hydra

Issue:
Upgrade to OmegaConf 2.1
This is depending on OmegaConf releasing an official 2.1 release (which should happen before Hydra 2.1 is officially released).


Discussion:
Since almost all the major tasks are done, when can we expect an official release of Hydra 1.1.0 ?
Soon.

Resolving patch:
diff --git a/hydra/_internal/config_repository.py b/hydra/_internal/config_repository.py
--- a/hydra/_internal/config_repository.py
+++ b/hydra/_internal/config_repository.py
@@ -205,6 +205,7 @@ def issue_deprecated_name_warning() -> None:
                     raise ValueError(f"In {config_path}: Missing group name in {item}")
 
                 key = keys[0]
+                assert isinstance(key, str)
                 config_group, package, _package2 = self._split_group(key)
                 keywords = ConfigRepository.Keywords()
                 self._extract_keywords_from_config_group(config_group, keywords)
diff --git a/hydra/core/default_element.py b/hydra/core/default_element.py
--- a/hydra/core/default_element.py
+++ b/hydra/core/default_element.py
@@ -235,7 +235,11 @@ def _resolve_interpolation_impl(
             assert isinstance(ret, str)
             return ret
         except InterpolationResolutionError:
-            options = [x for x in known_choices.keys() if x != "defaults"]
+            options = [
+                x
+                for x in known_choices.keys()
+                if x != "defaults" and isinstance(x, str)
+            ]
             if len(options) > 0:
                 options_str = ", ".join(options)
                 msg = f"Error resolving interpolation '{val}', possible interpolation keys: {options_str}"


Test patch:
Repository: facebookresearch/hydra

Issue:
CI fails with UserWarning raised from importing nevergrad
example failure here https://app.circleci.com/pipelines/github/facebookresearch/hydra/10584/workflows/d4c57363-bb31-42f4-a7ee-29c28a577f67/jobs/95695

this can be reproduced by simply importing nevergrad
```
>>> import nevergrad as ng
/Users/jieru/opt/anaconda3/envs/testnv/lib/python3.8/site-packages/cma/s.py:13: UserWarning: Could not import matplotlib.pyplot, therefore ``cma.plot()`` etc. is not available
  _warnings.warn('Could not import matplotlib.pyplot, therefore'
```

the warnings comes from one of nevergrad's dependency `cma` which just had a new release https://github.com/CMA-ES/pycma/releases


Discussion:

Resolving patch:
diff --git a/plugins/hydra_nevergrad_sweeper/setup.py b/plugins/hydra_nevergrad_sweeper/setup.py
--- a/plugins/hydra_nevergrad_sweeper/setup.py
+++ b/plugins/hydra_nevergrad_sweeper/setup.py
@@ -27,6 +27,7 @@
     install_requires=[
         "hydra-core>=1.1.0.dev7",
         "nevergrad>=0.4.3.post2",
+        "cma==3.0.3",  # https://github.com/facebookresearch/hydra/issues/1684
         "numpy<1.20.0",  # remove once nevergrad is upgraded to support numpy 1.20
     ],
     include_package_data=True,


Test patch:
Repository: facebookresearch/hydra

Issue:
Ignore _self_ in the Defaults List of in Hydra 1.0
Hydra 1.1 introduces the `_self_` keyword (see [Composition order](https://hydra.cc/docs/advanced/defaults_list#composition-order)).
It also changes the default composition order and suggests that users add `_self_` as the first item in their defaults list to retain the old composition order.

This presents a problem for users that want their config to (temporarily) be compatible with both Hydra 1.0 and 1.1 Hydra 1.0 does not recognize `_self_` and issues an error.

To make migration easier, I will make Hydra 1.0 (as of 1.0.7) ignore the `_self_` keyword. Note that this will only produce the same result as Hydra 1.1 if `_self_` is the first item in the Defaults List.


Discussion:

Resolving patch:
diff --git a/hydra/_internal/config_loader_impl.py b/hydra/_internal/config_loader_impl.py
--- a/hydra/_internal/config_loader_impl.py
+++ b/hydra/_internal/config_loader_impl.py
@@ -773,7 +773,7 @@ def merge_defaults_list_into_config(
                     if job_cfg_load_trace is not None:
                         self.all_config_checked.append(job_cfg_load_trace)
                 elif default1.config_group is not None:
-                    if default1.config_name not in (None, "_SKIP_", "???"):
+                    if default1.config_name not in (None, "_SKIP_", "???", "_self_"):
                         merged_cfg = self._merge_config(
                             cfg=merged_cfg,
                             config_group=default1.config_group,
@@ -783,7 +783,7 @@ def merge_defaults_list_into_config(
                             package_override=default1.package,
                         )
                 else:
-                    if default1.config_name != "_SKIP_":
+                    if default1.config_name not in ("_SKIP_", "_self_"):
                         merged_cfg = self._merge_config(
                             cfg=merged_cfg,
                             config_group="",


Test patch:
Repository: facebookresearch/hydra

Issue:
Enable Hydra 1.0 instantiate to receive _recursive_=False
Hydra 1.1 adds support for recursive instantiation and makes it the default.
This present a challenge for code that needs to work with both Hydra 1.0 and 1.1 and is depending on instantiate not being recursive.
(This is typically code that would benefit from recursive instantiation, once it starts to depend on Hydra 1.1).

To facilitate smoother migration, a following diff will allow Hydra 1.0 to receive `_recursive_` flag in the instantiate callsite or in the config, much like Hydra 1.1. Since this does not really add recursive support, the code will fail if `_recursive_` is set to True.

In a typical scenario, the instantiate callsite can be changed to pass `_recursive_=False` which, after this diff - result in noon recursive instantiation in both Hydra 1.0 and 1.1.


Discussion:

Resolving patch:
diff --git a/hydra/_internal/utils.py b/hydra/_internal/utils.py
--- a/hydra/_internal/utils.py
+++ b/hydra/_internal/utils.py
@@ -608,6 +608,13 @@ def _get_kwargs(config: Union[ObjectConf, DictConfig], **kwargs: Any) -> Any:
 
     for k, v in passthrough.items():
         final_kwargs[k] = v
+
+    _recursive_ = final_kwargs.pop("_recursive_", False)
+    if _recursive_:
+        raise InstantiationException(
+            "Hydra 1.0 does not support recursive instantiation, please upgrade to Hydra 1.1"
+        )
+
     return final_kwargs
 
 


Test patch:
diff --git a/tests/test_utils.py b/tests/test_utils.py
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -168,6 +168,41 @@ def test(conf: Any) -> None:
     test(OmegaConf.create(input_conf))
 
 
+@pytest.mark.parametrize(  # type: ignore
+    "input_conf, passthrough, expected",
+    [
+        pytest.param(
+            {"_target_": "tests.AClass", "a": 10, "b": 20, "c": 30, "d": 40},
+            {},
+            AClass(10, 20, 30, 40),
+            id="class",
+        ),
+    ],
+)
+def test_class_instantiate__future_compat_recursive(
+    input_conf: Any, passthrough: Dict[str, Any], expected: Any
+) -> Any:
+    obj = utils.instantiate(input_conf, **passthrough, _recursive_=False)
+    assert obj == expected
+
+    with pytest.raises(
+        InstantiationException,
+        match="Hydra 1.0 does not support recursive instantiation, please upgrade to Hydra 1.1",
+    ):
+        utils.instantiate(input_conf, **passthrough, _recursive_=True)
+
+    input_conf["_recursive_"] = False
+    obj = utils.instantiate(input_conf, **passthrough)
+    assert obj == expected
+
+    input_conf["_recursive_"] = True
+    with pytest.raises(
+        InstantiationException,
+        match="Hydra 1.0 does not support recursive instantiation, please upgrade to Hydra 1.1",
+    ):
+        utils.instantiate(input_conf, **passthrough)
+
+
 @pytest.mark.parametrize(  # type: ignore
     "input_conf, passthrough, expected",
     [
Repository: facebookresearch/hydra

Issue:
[CI] `mypy` fails for optuna sweeper on main
Turns out it was caused by a newly released version of `alembic` and it has been fixed in optuna https://github.com/optuna/optuna/pull/2887



Discussion:

Resolving patch:
diff --git a/plugins/hydra_optuna_sweeper/setup.py b/plugins/hydra_optuna_sweeper/setup.py
--- a/plugins/hydra_optuna_sweeper/setup.py
+++ b/plugins/hydra_optuna_sweeper/setup.py
@@ -27,8 +27,7 @@
     ],
     install_requires=[
         "hydra-core>=1.1.0.dev7",
-        "optuna>=2.5.0",
-        "alembic<1.7.0",  # https://github.com/facebookresearch/hydra/issues/1806
+        "optuna>=2.10.0",
     ],
     include_package_data=True,
 )


Test patch: