From c73e1f5930b1f07321e725ed78f5c9646256bcf1 Mon Sep 17 00:00:00 2001 From: MrJulEnergy Date: Thu, 9 May 2024 18:40:05 +0200 Subject: [PATCH 1/4] got a local config working --- zntrack/__init__.py | 2 ++ zntrack/fields/fields.py | 18 +++++++++++++++++- zntrack/fields/zn/options.py | 10 ++++++++++ zntrack/utils/config.py | 1 + 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/zntrack/__init__.py b/zntrack/__init__.py index fc4c6d28..473182a0 100644 --- a/zntrack/__init__.py +++ b/zntrack/__init__.py @@ -18,6 +18,7 @@ outs, outs_path, params, + local_params, params_path, plots, plots_path, @@ -51,6 +52,7 @@ "outs", "metrics", "params", + "local_params", "deps", "plots", "outs_path", diff --git a/zntrack/fields/fields.py b/zntrack/fields/fields.py index ab235a80..0145134e 100644 --- a/zntrack/fields/fields.py +++ b/zntrack/fields/fields.py @@ -2,7 +2,7 @@ from zntrack.fields.dependency import Dependency from zntrack.fields.dvc.options import DVCOption, PlotsOption -from zntrack.fields.zn.options import Output, Params, Plots +from zntrack.fields.zn.options import Output, Params, LocalParams, Plots # Serialized Fields @@ -52,6 +52,22 @@ def params(*args, **kwargs): """ return Params(*args, **kwargs) +def local_params(*args, **kwargs): + """Define a Node Parameter. + + Parameters + ---------- + args: any + A data object that is used as a parameter. + Typically, this should be a string or number. + The object is serialized and deserialized by ZnTrack + and stored in params.yaml. + see https://dvc.org/doc/command-reference/stage/add#-p + kwargs: dict + Additional keyword arguments. + """ + return LocalParams(*args, **kwargs) + def deps(*data): """Define a Node Dependency. diff --git a/zntrack/fields/zn/options.py b/zntrack/fields/zn/options.py index edb9dcc5..89e7fdb7 100644 --- a/zntrack/fields/zn/options.py +++ b/zntrack/fields/zn/options.py @@ -165,6 +165,16 @@ def get_stage_add_argument(self, instance: "Node") -> typing.List[tuple]: file = self.get_files(instance)[0] return [(f"--{self.dvc_option}", f"{file}:{instance.name}")] +class LocalParams(Params): + def get_files(self, instance: "Node") -> list: + """Get the list of files affected by this field. + + Returns + ------- + list + A list of file paths. + """ + return [config.files.local_zntrack] class Output(LazyField): """A field that is saved to disk.""" diff --git a/zntrack/utils/config.py b/zntrack/utils/config.py index 4ceae6cd..46b52278 100644 --- a/zntrack/utils/config.py +++ b/zntrack/utils/config.py @@ -18,6 +18,7 @@ class Files: """ zntrack: Path = Path("zntrack.json") + local_zntrack: Path = Path(".config.local") params: Path = Path("params.yaml") dvc: Path = Path("dvc.yaml") From 817cb33546540f8313092a382bf435579abb1157 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 16:46:41 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- zntrack/__init__.py | 2 +- zntrack/fields/fields.py | 3 ++- zntrack/fields/zn/options.py | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/zntrack/__init__.py b/zntrack/__init__.py index 473182a0..968f53a5 100644 --- a/zntrack/__init__.py +++ b/zntrack/__init__.py @@ -13,12 +13,12 @@ from zntrack.fields.fields import ( deps, deps_path, + local_params, metrics, metrics_path, outs, outs_path, params, - local_params, params_path, plots, plots_path, diff --git a/zntrack/fields/fields.py b/zntrack/fields/fields.py index 0145134e..e01ba816 100644 --- a/zntrack/fields/fields.py +++ b/zntrack/fields/fields.py @@ -2,7 +2,7 @@ from zntrack.fields.dependency import Dependency from zntrack.fields.dvc.options import DVCOption, PlotsOption -from zntrack.fields.zn.options import Output, Params, LocalParams, Plots +from zntrack.fields.zn.options import LocalParams, Output, Params, Plots # Serialized Fields @@ -52,6 +52,7 @@ def params(*args, **kwargs): """ return Params(*args, **kwargs) + def local_params(*args, **kwargs): """Define a Node Parameter. diff --git a/zntrack/fields/zn/options.py b/zntrack/fields/zn/options.py index 89e7fdb7..f8344096 100644 --- a/zntrack/fields/zn/options.py +++ b/zntrack/fields/zn/options.py @@ -165,6 +165,7 @@ def get_stage_add_argument(self, instance: "Node") -> typing.List[tuple]: file = self.get_files(instance)[0] return [(f"--{self.dvc_option}", f"{file}:{instance.name}")] + class LocalParams(Params): def get_files(self, instance: "Node") -> list: """Get the list of files affected by this field. @@ -176,6 +177,7 @@ def get_files(self, instance: "Node") -> list: """ return [config.files.local_zntrack] + class Output(LazyField): """A field that is saved to disk.""" From 5f8f63b9d1fd795cfe28cfb2212ac35054108b74 Mon Sep 17 00:00:00 2001 From: MrJulEnergy Date: Thu, 9 May 2024 21:38:36 +0200 Subject: [PATCH 3/4] resolve merge conflicts --- zntrack/__init__.py | 4 ++-- zntrack/fields/fields.py | 7 +++---- zntrack/fields/zn/options.py | 5 ++--- zntrack/utils/config.py | 6 +++++- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/zntrack/__init__.py b/zntrack/__init__.py index 968f53a5..c87ec430 100644 --- a/zntrack/__init__.py +++ b/zntrack/__init__.py @@ -13,12 +13,12 @@ from zntrack.fields.fields import ( deps, deps_path, - local_params, metrics, metrics_path, outs, outs_path, params, + local_config, params_path, plots, plots_path, @@ -52,7 +52,7 @@ "outs", "metrics", "params", - "local_params", + "local_config", "deps", "plots", "outs_path", diff --git a/zntrack/fields/fields.py b/zntrack/fields/fields.py index e01ba816..90b6b83b 100644 --- a/zntrack/fields/fields.py +++ b/zntrack/fields/fields.py @@ -2,7 +2,7 @@ from zntrack.fields.dependency import Dependency from zntrack.fields.dvc.options import DVCOption, PlotsOption -from zntrack.fields.zn.options import LocalParams, Output, Params, Plots +from zntrack.fields.zn.options import Output, Params, LocalConfig, Plots # Serialized Fields @@ -52,8 +52,7 @@ def params(*args, **kwargs): """ return Params(*args, **kwargs) - -def local_params(*args, **kwargs): +def local_config(*args, **kwargs): """Define a Node Parameter. Parameters @@ -67,7 +66,7 @@ def local_params(*args, **kwargs): kwargs: dict Additional keyword arguments. """ - return LocalParams(*args, **kwargs) + return LocalConfig(*args, **kwargs) def deps(*data): diff --git a/zntrack/fields/zn/options.py b/zntrack/fields/zn/options.py index f8344096..907a347e 100644 --- a/zntrack/fields/zn/options.py +++ b/zntrack/fields/zn/options.py @@ -165,8 +165,7 @@ def get_stage_add_argument(self, instance: "Node") -> typing.List[tuple]: file = self.get_files(instance)[0] return [(f"--{self.dvc_option}", f"{file}:{instance.name}")] - -class LocalParams(Params): +class LocalConfig(Params): def get_files(self, instance: "Node") -> list: """Get the list of files affected by this field. @@ -175,7 +174,7 @@ def get_files(self, instance: "Node") -> list: list A list of file paths. """ - return [config.files.local_zntrack] + return [config.files.local_config] class Output(LazyField): diff --git a/zntrack/utils/config.py b/zntrack/utils/config.py index 46b52278..f21f22e0 100644 --- a/zntrack/utils/config.py +++ b/zntrack/utils/config.py @@ -18,10 +18,14 @@ class Files: """ zntrack: Path = Path("zntrack.json") - local_zntrack: Path = Path(".config.local") params: Path = Path("params.yaml") dvc: Path = Path("dvc.yaml") + @property + def local_config(self) -> Path: + Path(".zntrack/").mkdir(parents=True, exist_ok=True) + return Path(".zntrack/config.local") + @dataclasses.dataclass class Config: From 7b8da98ceb27e516e76f4dd7badee2d4c37e5d7c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 19:41:53 +0000 Subject: [PATCH 4/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- zntrack/__init__.py | 2 +- zntrack/fields/fields.py | 3 ++- zntrack/fields/zn/options.py | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/zntrack/__init__.py b/zntrack/__init__.py index c87ec430..d1095be8 100644 --- a/zntrack/__init__.py +++ b/zntrack/__init__.py @@ -13,12 +13,12 @@ from zntrack.fields.fields import ( deps, deps_path, + local_config, metrics, metrics_path, outs, outs_path, params, - local_config, params_path, plots, plots_path, diff --git a/zntrack/fields/fields.py b/zntrack/fields/fields.py index 90b6b83b..578dd8ae 100644 --- a/zntrack/fields/fields.py +++ b/zntrack/fields/fields.py @@ -2,7 +2,7 @@ from zntrack.fields.dependency import Dependency from zntrack.fields.dvc.options import DVCOption, PlotsOption -from zntrack.fields.zn.options import Output, Params, LocalConfig, Plots +from zntrack.fields.zn.options import LocalConfig, Output, Params, Plots # Serialized Fields @@ -52,6 +52,7 @@ def params(*args, **kwargs): """ return Params(*args, **kwargs) + def local_config(*args, **kwargs): """Define a Node Parameter. diff --git a/zntrack/fields/zn/options.py b/zntrack/fields/zn/options.py index 907a347e..36691fe9 100644 --- a/zntrack/fields/zn/options.py +++ b/zntrack/fields/zn/options.py @@ -165,6 +165,7 @@ def get_stage_add_argument(self, instance: "Node") -> typing.List[tuple]: file = self.get_files(instance)[0] return [(f"--{self.dvc_option}", f"{file}:{instance.name}")] + class LocalConfig(Params): def get_files(self, instance: "Node") -> list: """Get the list of files affected by this field.