def _generate_conf( cls: type[Self], output_dir: Path, *, module_class_dict: dict[str, List[str]] ) -> None: from configen.config import ConfigenConf, ModuleConf # type: ignore from configen.configen import generate_module # type: ignore cfg = ConfigenConf( output_dir=str(output_dir), module_path_pattern=f"{cls._CONFIGEN_FILENAME}", modules=[], header="", ) for module, classes in module_class_dict.items(): module_conf = ModuleConf(name=module, classes=classes) code = generate_module(cfg=cfg, module=module_conf) output_dir.mkdir(parents=True, exist_ok=True) conf_dir = output_dir / cls._module_to_fp(module) conf_dir.mkdir(parents=True) conf_file = conf_dir / cls._CONFIGEN_FILENAME with conf_file.open("a+") as file: file.write(code)
from tests.test_modules.generated import PeskySentinelUsageConf chdir_hydra_root(subdir="tools/configen") ## # To re-generate the expected config run the following command from configen's root directory (tools/configen). # # PYTHONPATH=. configen --config-dir tests/gen-test-expected/ # ## conf: ConfigenConf = OmegaConf.structured( ConfigenConf( header= """# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved # Generated by configen, do not edit. # See https://github.com/facebookresearch/hydra/tree/main/tools/configen # fmt: off # isort:skip_file # flake8: noqa """)) MODULE_NAME = "tests.test_modules" def test_generated_code() -> None: classes = [ "Empty", "UntypedArg", "IntArg", "UnionArg", "WithLibraryClassArg",