Skip to content

Commit

Permalink
fix file tests
Browse files Browse the repository at this point in the history
  • Loading branch information
PythonFZ committed Feb 1, 2025
1 parent c26b6c2 commit 361f52c
Show file tree
Hide file tree
Showing 6 changed files with 232 additions and 3 deletions.
82 changes: 82 additions & 0 deletions tests/files/dvc_config/names.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
stages:
ParamsToMetrics:
cmd: zntrack run zntrack.examples.ParamsToMetrics --name ParamsToMetrics
metrics:
- nodes/ParamsToMetrics/metrics.json:
cache: false
- nodes/ParamsToMetrics/node-meta.json:
cache: false
params:
- ParamsToMetrics
ParamsToMetrics_1:
cmd: zntrack run zntrack.examples.ParamsToMetrics --name ParamsToMetrics_1
metrics:
- nodes/ParamsToMetrics_1/metrics.json:
cache: false
- nodes/ParamsToMetrics_1/node-meta.json:
cache: false
params:
- ParamsToMetrics_1
Thanasis:
cmd: zntrack run zntrack.examples.ParamsToMetrics --name Thanasis
metrics:
- nodes/Thanasis/metrics.json:
cache: false
- nodes/Thanasis/node-meta.json:
cache: false
params:
- Thanasis
grp_Cydney:
cmd: zntrack run zntrack.examples.ParamsToMetrics --name grp_Cydney
metrics:
- nodes/grp/Cydney/metrics.json:
cache: false
- nodes/grp/Cydney/node-meta.json:
cache: false
params:
- grp_Cydney
grp_ParamsToMetrics:
cmd: zntrack run zntrack.examples.ParamsToMetrics --name grp_ParamsToMetrics
metrics:
- nodes/grp/ParamsToMetrics/metrics.json:
cache: false
- nodes/grp/ParamsToMetrics/node-meta.json:
cache: false
params:
- grp_ParamsToMetrics
grp_ParamsToMetrics_1:
cmd: zntrack run zntrack.examples.ParamsToMetrics --name grp_ParamsToMetrics_1
metrics:
- nodes/grp/ParamsToMetrics_1/metrics.json:
cache: false
- nodes/grp/ParamsToMetrics_1/node-meta.json:
cache: false
params:
- grp_ParamsToMetrics_1
grp_subgrp_Lorine:
cmd: zntrack run zntrack.examples.ParamsToMetrics --name grp_subgrp_Lorine
metrics:
- nodes/grp/subgrp/Lorine/metrics.json:
cache: false
- nodes/grp/subgrp/Lorine/node-meta.json:
cache: false
params:
- grp_subgrp_Lorine
grp_subgrp_ParamsToMetrics:
cmd: zntrack run zntrack.examples.ParamsToMetrics --name grp_subgrp_ParamsToMetrics
metrics:
- nodes/grp/subgrp/ParamsToMetrics/metrics.json:
cache: false
- nodes/grp/subgrp/ParamsToMetrics/node-meta.json:
cache: false
params:
- grp_subgrp_ParamsToMetrics
grp_subgrp_ParamsToMetrics_1:
cmd: zntrack run zntrack.examples.ParamsToMetrics --name grp_subgrp_ParamsToMetrics_1
metrics:
- nodes/grp/subgrp/ParamsToMetrics_1/metrics.json:
cache: false
- nodes/grp/subgrp/ParamsToMetrics_1/node-meta.json:
cache: false
params:
- grp_subgrp_ParamsToMetrics_1
27 changes: 27 additions & 0 deletions tests/files/params_config/names.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
ParamsToMetrics:
params:
loss: 0.01
ParamsToMetrics_1:
params:
loss: 0.02
Thanasis:
params:
loss: 0.03
grp_Cydney:
params:
loss: 0.06
grp_ParamsToMetrics:
params:
loss: 0.04
grp_ParamsToMetrics_1:
params:
loss: 0.05
grp_subgrp_Lorine:
params:
loss: 0.09
grp_subgrp_ParamsToMetrics:
params:
loss: 0.07
grp_subgrp_ParamsToMetrics_1:
params:
loss: 0.08
45 changes: 45 additions & 0 deletions tests/files/test_names.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
"""Test correct stage/node names."""

import json
import pathlib

import yaml

import zntrack.examples

CWD = pathlib.Path(__file__).parent.resolve()


def test_names(proj_path):
project = zntrack.Project()

with project:
zntrack.examples.ParamsToMetrics(params={"loss": 0.01})
zntrack.examples.ParamsToMetrics(params={"loss": 0.02})
zntrack.examples.ParamsToMetrics(params={"loss": 0.03}, name="Thanasis")
# zntrack.examples.ParamsToMetrics(params={"loss": 0.03}, name="Thanasis") # ValueError

with project.group("grp"):
zntrack.examples.ParamsToMetrics(params={"loss": 0.04})
zntrack.examples.ParamsToMetrics(params={"loss": 0.05})
zntrack.examples.ParamsToMetrics(params={"loss": 0.06}, name="Cydney")
# # zntrack.examples.ParamsToMetrics(params={"loss": 0.06}, name="Cydney") # ValueError

with project.group("grp", "subgrp"):
zntrack.examples.ParamsToMetrics(params={"loss": 0.07})
zntrack.examples.ParamsToMetrics(params={"loss": 0.08})
zntrack.examples.ParamsToMetrics(params={"loss": 0.09}, name="Lorine")
# # zntrack.examples.ParamsToMetrics(params={"loss": 0.09}, name="Lorine") # ValueError


project.build()

assert json.loads(
(CWD / "zntrack_config" / "names.json").read_text()
) == json.loads((proj_path / "zntrack.json").read_text())
assert yaml.safe_load(
(CWD / "dvc_config" / "names.yaml").read_text()
) == yaml.safe_load((proj_path / "dvc.yaml").read_text())
assert (CWD / "params_config" / "names.yaml").read_text() == (
proj_path / "params.yaml"
).read_text()
56 changes: 56 additions & 0 deletions tests/files/zntrack_config/names.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"ParamsToMetrics": {
"nwd": {
"_type": "pathlib.Path",
"value": "nodes/ParamsToMetrics"
}
},
"ParamsToMetrics_1": {
"nwd": {
"_type": "pathlib.Path",
"value": "nodes/ParamsToMetrics_1"
}
},
"Thanasis": {
"nwd": {
"_type": "pathlib.Path",
"value": "nodes/Thanasis"
}
},
"grp_ParamsToMetrics": {
"nwd": {
"_type": "pathlib.Path",
"value": "nodes/grp/ParamsToMetrics"
}
},
"grp_ParamsToMetrics_1": {
"nwd": {
"_type": "pathlib.Path",
"value": "nodes/grp/ParamsToMetrics_1"
}
},
"grp_Cydney": {
"nwd": {
"_type": "pathlib.Path",
"value": "nodes/grp/Cydney"
}
},
"grp_subgrp_ParamsToMetrics": {
"nwd": {
"_type": "pathlib.Path",
"value": "nodes/grp/subgrp/ParamsToMetrics"
}
},
"grp_subgrp_ParamsToMetrics_1": {
"nwd": {
"_type": "pathlib.Path",
"value": "nodes/grp/subgrp/ParamsToMetrics_1"
}
},
"grp_subgrp_Lorine": {
"nwd": {
"_type": "pathlib.Path",
"value": "nodes/grp/subgrp/Lorine"
}
}
}
19 changes: 19 additions & 0 deletions tests/unit_tests/test_node_name.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,11 @@ def test_grouped_custom_node_names(proj_path):
assert n1.name == "grp1_Alpha"
assert n2.name == "grp1_Beta"

project.build()

assert n1.name == "grp1_Alpha"
assert n2.name == "grp1_Beta"


def test_nested_grouped_custom_node_names(proj_path):
"""Test that nodes with custom names within nested groups get correctly prefixed"""
Expand All @@ -103,6 +108,13 @@ def test_nested_grouped_custom_node_names(proj_path):

assert n1.name == "A_B_Alpha"
assert n2.name == "A_B_Beta"

project.build()

assert n1.name == "A_B_Alpha"
assert n2.name == "A_B_Beta"
assert n1.name == "A_B_Alpha"
assert n2.name == "A_B_Beta"


# Grouped Duplicate Naming Tests
Expand All @@ -118,6 +130,13 @@ def test_grouped_duplicate_named_node(proj_path):
n2 = MyNode(name="A")
assert n2.name == "grp2_A"

project.build()

assert n1.name == "grp1_A"
assert n2.name == "grp2_A"
assert n1.name == "grp1_A"
assert n2.name == "grp2_A"

with pytest.raises(ValueError, match="A node with the name 'grp1_A' already exists."):
with project.group("grp1"):
MyNode(name="A")
6 changes: 3 additions & 3 deletions zntrack/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ def _name_getter(self, attr_name: str) -> str:
# If value exists and the graph is either empty or not inside a group, return it
if value is not None:
if graph is znflow.empty_graph or graph.active_group is None:
return value
return str(value)

# If no graph is active, return the class name as the default
if graph is znflow.empty_graph:
return self.__class__.__name__
return str(self.__class__.__name__)

# Compute name based on project-wide node names
return graph.compute_all_node_names()[self.uuid]
return str(graph.compute_all_node_names()[self.uuid])


@dataclass_transform()
Expand Down

0 comments on commit 361f52c

Please sign in to comment.