Skip to content
This repository was archived by the owner on Oct 24, 2024. It is now read-only.

Commit 34116c2

Browse files
authored
Name checking (#106)
* test for invalid node names * check for invalid node names in property setter * remove typing confusion * whatsnew
1 parent 432981f commit 34116c2

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

datatree/datatree.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class DataTree(
8787

8888
def __init__(
8989
self,
90-
data: Optional[Dataset | DataArray] = None,
90+
data: Dataset | DataArray = None,
9191
parent: DataTree = None,
9292
children: Mapping[str, DataTree] = None,
9393
name: str = None,
@@ -119,7 +119,7 @@ def __init__(
119119
super().__init__(children=children)
120120
self.name = name
121121
self.parent = parent
122-
self.ds = data # type: ignore[assignment]
122+
self.ds = data
123123

124124
@property
125125
def name(self) -> str | None:
@@ -128,6 +128,11 @@ def name(self) -> str | None:
128128

129129
@name.setter
130130
def name(self, name: str | None) -> None:
131+
if name is not None:
132+
if not isinstance(name, str):
133+
raise TypeError("node name must be a string or None")
134+
if "/" in name:
135+
raise ValueError("node names cannot contain forward slashes")
131136
self._name = name
132137

133138
@property

datatree/tests/test_datatree.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ def test_unnamed(self):
6363
dt = DataTree()
6464
assert dt.name is None
6565

66+
def test_bad_names(self):
67+
with pytest.raises(TypeError):
68+
DataTree(name=5)
69+
70+
with pytest.raises(ValueError):
71+
DataTree(name="folder/data")
72+
6673

6774
class TestFamilyTree:
6875
def test_setparent_unnamed_child_node_fails(self):

docs/source/whats-new.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ Bug fixes
3838
By `Matt McCormick <https://github.com/thewtex>`_.
3939
- Fix netCDF encoding for compression (:pull:`95`)
4040
By `Joe Hamman <https://github.com/jhamman>`_.
41+
- Added validity checking for node names (:pull:`106`)
42+
By `Tom Nicholas <https://github.com/TomNicholas>`_.
4143

4244
Documentation
4345
~~~~~~~~~~~~~

0 commit comments

Comments
 (0)