prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  strict flag was removed from the compose API without a prior deprecation
  Strict config composition functionality has become the default in Hydra 1.0 (See https://hydra.cc/docs/upgrades/0.11_to_1.0/strict_mode_flag_deprecated).
  
  This flag was completely removed in Hydra 1.1.0.
  Unfortunately, the Compose API strict flag was not deprecated and was thus an avoidable breaking change.
  
  A followup PR will re-introduce the strict flag to the Compose API as a deprecated flag. That flag will be removed in the major version of Hydra.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `hydra/experimental/compose.py`
  Content:
  ```
  1 # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
  2 # DEPRECATED: remove in 1.2
  3 import warnings
  4 from typing import List, Optional
  5 
  6 from omegaconf import DictConfig
  7 
  8 
  9 def compose(
  10     config_name: Optional[str] = None,
  11     overrides: List[str] = [],
  12     return_hydra_config: bool = False,
  13 ) -> DictConfig:
  14     from hydra import compose as real_compose
  15 
  16     warnings.warn(
  17         category=UserWarning,
  18         message="hydra.experimental.compose() is no longer experimental."
  19         " Use hydra.compose()",
  20     )
  21     return real_compose(
  22         config_name=config_name,
  23         overrides=overrides,
  24         return_hydra_config=return_hydra_config,
  25     )
  26
  ```
  
  Path: `hydra/compose.py`
  Content:
  ```
  1 # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
  2 from typing import List, Optional
  3 
  4 from omegaconf import DictConfig, open_dict
  5 
  6 from hydra.core.global_hydra import GlobalHydra
  7 from hydra.types import RunMode
  8 
  9 
  10 def compose(
  11     config_name: Optional[str] = None,
  12     overrides: List[str] = [],
  13     return_hydra_config: bool = False,
  14 ) -> DictConfig:
  15     """
  16     :param config_name: the name of the config
  17            (usually the file name without the .yaml extension)
  18     :param overrides: list of overrides for config file
  19     :param return_hydra_config: True to return the hydra config node in the result
  20     :return: the composed config
  21     """
  22     assert (
  23         GlobalHydra().is_initialized()
  24     ), "GlobalHydra is not initialized, use @hydra.main() or call one of the hydra initialization methods first"
  25 
  26     gh = GlobalHydra.instance()
  27     assert gh.hydra is not None
  28     cfg = gh.hydra.compose_config(
  29         config_name=config_name,
  30         overrides=overrides,
  31         run_mode=RunMode.RUN,
  32         from_shell=False,
  33         with_log_configuration=False,
  34     )
  35     assert isinstance(cfg, DictConfig)
  36 
  37     if not return_hydra_config:
  38         if "hydra" in cfg:
  39             with open_dict(cfg):
  40                 del cfg["hydra"]
  41     return cfg
  42
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/hydra/compose.py b/hydra/compose.py
  --- a/hydra/compose.py
  +++ b/hydra/compose.py
  @@ -1,7 +1,9 @@
   # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
  +import warnings
  +from textwrap import dedent
   from typing import List, Optional
   
  -from omegaconf import DictConfig, open_dict
  +from omegaconf import DictConfig, OmegaConf, open_dict
   
   from hydra.core.global_hydra import GlobalHydra
   from hydra.types import RunMode
  @@ -11,12 +13,14 @@
       config_name: Optional[str] = None,
       overrides: List[str] = [],
       return_hydra_config: bool = False,
  +    strict: Optional[bool] = None,
   ) -> DictConfig:
       """
       :param config_name: the name of the config
              (usually the file name without the .yaml extension)
       :param overrides: list of overrides for config file
       :param return_hydra_config: True to return the hydra config node in the result
  +    :param strict: DEPRECATED. If true, returned config has struct mode disabled.
       :return: the composed config
       """
       assert (
  @@ -38,4 +42,18 @@
           if "hydra" in cfg:
               with open_dict(cfg):
                   del cfg["hydra"]
  +
  +    if strict is not None:
  +        # DEPRECATED: remove in 1.2
  +        warnings.warn(
  +            dedent(
  +                """\
  +
  +        The strict flag in the compose API is deprecated and will be removed in the next version of Hydra.
  +        See https://hydra.cc/docs/upgrades/0.11_to_1.0/strict_mode_flag_deprecated for more info.
  +        """
  +            )
  +        )
  +        OmegaConf.set_struct(cfg, strict)
  +
       return cfg
  diff --git a/hydra/experimental/compose.py b/hydra/experimental/compose.py
  --- a/hydra/experimental/compose.py
  +++ b/hydra/experimental/compose.py
  @@ -10,6 +10,7 @@
       config_name: Optional[str] = None,
       overrides: List[str] = [],
       return_hydra_config: bool = False,
  +    strict: Optional[bool] = None,
   ) -> DictConfig:
       from hydra import compose as real_compose
   
  @@ -22,4 +23,5 @@
           config_name=config_name,
           overrides=overrides,
           return_hydra_config=return_hydra_config,
  +        strict=strict,
       )
  
verification_info: {"golden_diff": "diff --git a/hydra/compose.py b/hydra/compose.py\n--- a/hydra/compose.py\n+++ b/hydra/compose.py\n@@ -1,7 +1,9 @@\n # Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved\n+import warnings\n+from textwrap import dedent\n from typing import List, Optional\n \n-from omegaconf import DictConfig, open_dict\n+from omegaconf import DictConfig, OmegaConf, open_dict\n \n from hydra.core.global_hydra import GlobalHydra\n from hydra.types import RunMode\n@@ -11,12 +13,14 @@\n     config_name: Optional[str] = None,\n     overrides: List[str] = [],\n     return_hydra_config: bool = False,\n+    strict: Optional[bool] = None,\n ) -> DictConfig:\n     \"\"\"\n     :param config_name: the name of the config\n            (usually the file name without the .yaml extension)\n     :param overrides: list of overrides for config file\n     :param return_hydra_config: True to return the hydra config node in the result\n+    :param strict: DEPRECATED. If true, returned config has struct mode disabled.\n     :return: the composed config\n     \"\"\"\n     assert (\n@@ -38,4 +42,18 @@\n         if \"hydra\" in cfg:\n             with open_dict(cfg):\n                 del cfg[\"hydra\"]\n+\n+    if strict is not None:\n+        # DEPRECATED: remove in 1.2\n+        warnings.warn(\n+            dedent(\n+                \"\"\"\\\n+\n+        The strict flag in the compose API is deprecated and will be removed in the next version of Hydra.\n+        See https://hydra.cc/docs/upgrades/0.11_to_1.0/strict_mode_flag_deprecated for more info.\n+        \"\"\"\n+            )\n+        )\n+        OmegaConf.set_struct(cfg, strict)\n+\n     return cfg\ndiff --git a/hydra/experimental/compose.py b/hydra/experimental/compose.py\n--- a/hydra/experimental/compose.py\n+++ b/hydra/experimental/compose.py\n@@ -10,6 +10,7 @@\n     config_name: Optional[str] = None,\n     overrides: List[str] = [],\n     return_hydra_config: bool = False,\n+    strict: Optional[bool] = None,\n ) -> DictConfig:\n     from hydra import compose as real_compose\n \n@@ -22,4 +23,5 @@\n         config_name=config_name,\n         overrides=overrides,\n         return_hydra_config=return_hydra_config,\n+        strict=strict,\n     )\n", "issue": "strict flag was removed from the compose API without a prior deprecation\nStrict config composition functionality has become the default in Hydra 1.0 (See https://hydra.cc/docs/upgrades/0.11_to_1.0/strict_mode_flag_deprecated).\r\n\r\nThis flag was completely removed in Hydra 1.1.0.\r\nUnfortunately, the Compose API strict flag was not deprecated and was thus an avoidable breaking change.\r\n\r\nA followup PR will re-introduce the strict flag to the Compose API as a deprecated flag. That flag will be removed in the major version of Hydra.\n", "before_files": [{"content": "# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved\n# DEPRECATED: remove in 1.2\nimport warnings\nfrom typing import List, Optional\n\nfrom omegaconf import DictConfig\n\n\ndef compose(\n    config_name: Optional[str] = None,\n    overrides: List[str] = [],\n    return_hydra_config: bool = False,\n) -> DictConfig:\n    from hydra import compose as real_compose\n\n    warnings.warn(\n        category=UserWarning,\n        message=\"hydra.experimental.compose() is no longer experimental.\"\n        \" Use hydra.compose()\",\n    )\n    return real_compose(\n        config_name=config_name,\n        overrides=overrides,\n        return_hydra_config=return_hydra_config,\n    )\n", "path": "hydra/experimental/compose.py"}, {"content": "# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved\nfrom typing import List, Optional\n\nfrom omegaconf import DictConfig, open_dict\n\nfrom hydra.core.global_hydra import GlobalHydra\nfrom hydra.types import RunMode\n\n\ndef compose(\n    config_name: Optional[str] = None,\n    overrides: List[str] = [],\n    return_hydra_config: bool = False,\n) -> DictConfig:\n    \"\"\"\n    :param config_name: the name of the config\n           (usually the file name without the .yaml extension)\n    :param overrides: list of overrides for config file\n    :param return_hydra_config: True to return the hydra config node in the result\n    :return: the composed config\n    \"\"\"\n    assert (\n        GlobalHydra().is_initialized()\n    ), \"GlobalHydra is not initialized, use @hydra.main() or call one of the hydra initialization methods first\"\n\n    gh = GlobalHydra.instance()\n    assert gh.hydra is not None\n    cfg = gh.hydra.compose_config(\n        config_name=config_name,\n        overrides=overrides,\n        run_mode=RunMode.RUN,\n        from_shell=False,\n        with_log_configuration=False,\n    )\n    assert isinstance(cfg, DictConfig)\n\n    if not return_hydra_config:\n        if \"hydra\" in cfg:\n            with open_dict(cfg):\n                del cfg[\"hydra\"]\n    return cfg\n", "path": "hydra/compose.py"}], "after_files": [{"content": "# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved\n# DEPRECATED: remove in 1.2\nimport warnings\nfrom typing import List, Optional\n\nfrom omegaconf import DictConfig\n\n\ndef compose(\n    config_name: Optional[str] = None,\n    overrides: List[str] = [],\n    return_hydra_config: bool = False,\n    strict: Optional[bool] = None,\n) -> DictConfig:\n    from hydra import compose as real_compose\n\n    warnings.warn(\n        category=UserWarning,\n        message=\"hydra.experimental.compose() is no longer experimental.\"\n        \" Use hydra.compose()\",\n    )\n    return real_compose(\n        config_name=config_name,\n        overrides=overrides,\n        return_hydra_config=return_hydra_config,\n        strict=strict,\n    )\n", "path": "hydra/experimental/compose.py"}, {"content": "# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved\nimport warnings\nfrom textwrap import dedent\nfrom typing import List, Optional\n\nfrom omegaconf import DictConfig, OmegaConf, open_dict\n\nfrom hydra.core.global_hydra import GlobalHydra\nfrom hydra.types import RunMode\n\n\ndef compose(\n    config_name: Optional[str] = None,\n    overrides: List[str] = [],\n    return_hydra_config: bool = False,\n    strict: Optional[bool] = None,\n) -> DictConfig:\n    \"\"\"\n    :param config_name: the name of the config\n           (usually the file name without the .yaml extension)\n    :param overrides: list of overrides for config file\n    :param return_hydra_config: True to return the hydra config node in the result\n    :param strict: DEPRECATED. If true, returned config has struct mode disabled.\n    :return: the composed config\n    \"\"\"\n    assert (\n        GlobalHydra().is_initialized()\n    ), \"GlobalHydra is not initialized, use @hydra.main() or call one of the hydra initialization methods first\"\n\n    gh = GlobalHydra.instance()\n    assert gh.hydra is not None\n    cfg = gh.hydra.compose_config(\n        config_name=config_name,\n        overrides=overrides,\n        run_mode=RunMode.RUN,\n        from_shell=False,\n        with_log_configuration=False,\n    )\n    assert isinstance(cfg, DictConfig)\n\n    if not return_hydra_config:\n        if \"hydra\" in cfg:\n            with open_dict(cfg):\n                del cfg[\"hydra\"]\n\n    if strict is not None:\n        # DEPRECATED: remove in 1.2\n        warnings.warn(\n            dedent(\n                \"\"\"\\\n\n        The strict flag in the compose API is deprecated and will be removed in the next version of Hydra.\n        See https://hydra.cc/docs/upgrades/0.11_to_1.0/strict_mode_flag_deprecated for more info.\n        \"\"\"\n            )\n        )\n        OmegaConf.set_struct(cfg, strict)\n\n    return cfg\n", "path": "hydra/compose.py"}]}