Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions zntrack/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from zntrack.fields.fields import (
deps,
deps_path,
local_config,
metrics,
metrics_path,
outs,
Expand Down Expand Up @@ -51,6 +52,7 @@
"outs",
"metrics",
"params",
"local_config",
"deps",
"plots",
"outs_path",
Expand Down
19 changes: 18 additions & 1 deletion zntrack/fields/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 LocalConfig, Output, Params, Plots

# Serialized Fields

Expand Down Expand Up @@ -53,6 +53,23 @@ def params(*args, **kwargs):
return Params(*args, **kwargs)


def local_config(*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 LocalConfig(*args, **kwargs)


def deps(*data):
"""Define a Node Dependency.

Expand Down
12 changes: 12 additions & 0 deletions zntrack/fields/zn/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,18 @@ def get_stage_add_argument(self, instance: "Node") -> typing.List[tuple]:
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.

Returns
-------
list
A list of file paths.
"""
return [config.files.local_config]


class Output(LazyField):
"""A field that is saved to disk."""

Expand Down
5 changes: 5 additions & 0 deletions zntrack/utils/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ class Files:
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:
Expand Down