From d409201992e9ee0eb20294a4c968b4494a28b30f Mon Sep 17 00:00:00 2001 From: Jet Date: Wed, 11 Sep 2024 10:44:42 +0900 Subject: [PATCH] stash --- pyproject.toml | 2 +- wingman/config_utils.py | 42 +++++++++++++++++++++++++---------------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ddbc87e..2291c24 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "jj_wingman" -version = "0.20.0" +version = "0.21.0" authors = [ { name="Jet", email="taijunjet@hotmail.com" }, ] diff --git a/wingman/config_utils.py b/wingman/config_utils.py index 55d0281..2960fcf 100644 --- a/wingman/config_utils.py +++ b/wingman/config_utils.py @@ -26,25 +26,35 @@ def __setattr__(self, name, value): ) super().__setattr__(name, value) + def to_dict(self) -> dict[str, Any]: + """to_dict. -def dict_to_locked_ns(nested_dict: dict[str, Any]) -> LockedNamespace: - """dict_to_ns. + Args: - Args: - ---- - nested_dict (dict[str, Any]): nested_dict + Returns: + dict[str, Any]: + """ + return { + k: (v.to_dict() if isinstance(v, LockedNamespace) else v) + for k, v in vars(self).items() + } - Returns: - ------- - types.SimpleNamespace: + @staticmethod + def from_dict(nested_dict: dict[str, Any]) -> "LockedNamespace": + """from_dict. - """ - return LockedNamespace( - **{ - k: (dict_to_locked_ns(v) if isinstance(v, dict) else v) - for k, v in nested_dict.items() - } - ) + Args: + nested_dict (dict[str, Any]): nested_dict + + Returns: + "LockedNamespace": + """ + return LockedNamespace( + **{ + k: (LockedNamespace.from_dict(v) if isinstance(v, dict) else v) + for k, v in nested_dict.items() + } + ) def check_dict_superset(base: dict[str, Any], target: dict[str, Any]) -> bool: @@ -206,4 +216,4 @@ def generate_wingman_config(config_yaml: Path | str) -> LockedNamespace: raise NotImplementedError("Save code is not yet implemented.") wandb.run.log_code(".", exclude_fn=lambda path: "venv" in path) - return dict_to_locked_ns(config_dict) + return LockedNamespace.from_dict(config_dict)