diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 96794396..1eab8cb1 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@v4 - name: Setup headless display - uses: pyvista/setup-headless-display-action@v2 + uses: pyvista/setup-headless-display-action@v3 - name: Set up conda uses: conda-incubator/setup-miniconda@v3 diff --git a/discretisedfield/line.py b/discretisedfield/line.py index ce28022f..3802e4e7 100644 --- a/discretisedfield/line.py +++ b/discretisedfield/line.py @@ -4,14 +4,9 @@ import matplotlib.pyplot as plt import numpy as np import pandas as pd -import ubermagutil.typesystem as ts import ubermagutil.units as uu -@ts.typesystem( - dim=ts.Scalar(expected_type=int, positive=True, const=True), - n=ts.Scalar(expected_type=int, positive=True, const=True), -) class Line: """Line class. @@ -99,13 +94,18 @@ def __init__(self, points, values, point_columns, value_columns): raise ValueError(msg) # Set the dimension (const descriptor). - if isinstance(values[0], numbers.Complex): - self.dim = 1 - else: - self.dim = len(values[0]) + dim = 1 if isinstance(values[0], numbers.Complex) else len(values[0]) + + if not isinstance(dim, int) or dim <= 0: + raise ValueError(f"dim must be a positive integer, got {dim}.") # Set the number of values (const descriptor). - self.n = len(points) + n = len(points) + if not isinstance(n, int) or n <= 0: + raise ValueError(f"n must be a positive integer, got {n}.") + + self._dim = dim + self._n = n points = np.array(points) values = np.array(values).reshape((points.shape[0], -1)) @@ -121,6 +121,14 @@ def __init__(self, points, values, point_columns, value_columns): self._point_columns = list(point_columns) self._value_columns = list(value_columns) + @property + def dim(self): + return self._dim + + @property + def n(self): + return self._n + @property def point_columns(self): """The names of point columns.