diff --git a/phi/geom/_box.py b/phi/geom/_box.py index 5cbb2b2e3..4060a030e 100644 --- a/phi/geom/_box.py +++ b/phi/geom/_box.py @@ -319,6 +319,9 @@ def __hash__(self): def __variable_attrs__(self): return '_lower', '_upper' + def __value_attrs__(self): + return () + @property def shape(self): if self._lower is None or self._upper is None: diff --git a/phi/geom/_geom.py b/phi/geom/_geom.py index 2701c84a3..c50e744bb 100644 --- a/phi/geom/_geom.py +++ b/phi/geom/_geom.py @@ -549,6 +549,12 @@ def normal(self) -> Tensor: def __repr__(self): return f"~{self.geometry}" + def __variable_attrs__(self): + return self.geometry.__variable_attrs__ + + def __value_attrs__(self): + return self.geometry.__value_attrs__ + def invert(geometry: Geometry): """ diff --git a/phi/geom/_geom_ops.py b/phi/geom/_geom_ops.py index 743443fe7..f0b328ec9 100644 --- a/phi/geom/_geom_ops.py +++ b/phi/geom/_geom_ops.py @@ -36,6 +36,12 @@ def __init__(self, geometries: Union[Tensor, Geometry]): def geometries(self): return self._geometries + def __variable_attrs__(self): + return '_geometries', + + def __value_attrs__(self): + return '_geometries', + @property def object_dims(self): return object_dims(self._geometries) diff --git a/phi/geom/_graph.py b/phi/geom/_graph.py index 49bce6b2d..4cda60b18 100644 --- a/phi/geom/_graph.py +++ b/phi/geom/_graph.py @@ -22,6 +22,9 @@ def __init__(self, nodes: Union[Geometry, Tensor], connectivity: Tensor, boundar def __variable_attrs__(self): return '_nodes', '_deltas', '_distances' + def __value_attrs__(self): + return '_nodes', + @property def connectivity(self) -> Tensor: return self._connectivity diff --git a/phi/geom/_grid.py b/phi/geom/_grid.py index 315e39cb1..dc24816da 100644 --- a/phi/geom/_grid.py +++ b/phi/geom/_grid.py @@ -211,6 +211,9 @@ def __repr__(self): def __variable_attrs__(self): return () + def __value_attrs__(self): + return () + def __with_attrs__(self, **attrs): if not attrs: return self diff --git a/phi/geom/_heightmap.py b/phi/geom/_heightmap.py index 6bc79bc71..97fbd8a94 100644 --- a/phi/geom/_heightmap.py +++ b/phi/geom/_heightmap.py @@ -171,6 +171,9 @@ def __repr__(self): def __variable_attrs__(self): return '_height', '_bounds', '_max_dist', '_fill_below', '_extrapolation', '_faces' + def __value_attrs__(self): + return () + def __getitem__(self, item): item = slicing_dict(self, item) return Heightmap(self._height[item], self._bounds[item], self._max_dist[item], self._fill_below[item], self._extrapolation[item] if self._extrapolation is not None else None, math.slice(self._faces, item)) diff --git a/phi/geom/_sphere.py b/phi/geom/_sphere.py index 85dacee43..aa8bf727a 100644 --- a/phi/geom/_sphere.py +++ b/phi/geom/_sphere.py @@ -104,6 +104,9 @@ def scaled(self, factor: Union[float, Tensor]) -> 'Geometry': def __variable_attrs__(self): return '_center', '_radius' + def __value_attrs__(self): + return () + def __getitem__(self, item): item = slicing_dict(self, item) return Sphere(self._center[_keep_vector(item)], self._radius[item])