Source code for roocs_utils.parameter.level_parameter

import numbers

from roocs_utils.exceptions import InvalidParameterValue
from roocs_utils.parameter.base_parameter import _BaseParameter


[docs]class LevelParameter(_BaseParameter): """ Class for level parameter used in subsetting operation. | Level can be input as: | A string of slash separated values: "1000/2000" | A sequence of strings: e.g. ("1000.50", "2000.60") | A sequence of numbers: e.g. (1000.50, 2000.60) A level input must be 2 values. If using a string input a trailing slash indicates you want to use the lowest/highest level of the dataset. e.g. "/2000" will subset from the lowest level in the dataset to 2000. Validates the level input and parses the values into numbers. """ parse_method = "_parse_range" def _validate(self): self._parse_levels() def _parse_levels(self): result = [None, None] for count, value in enumerate(self._result): if value is None: continue if isinstance(value, str): try: value = float(value) except Exception: raise InvalidParameterValue("Level values must be a number") if not isinstance(value, numbers.Number): raise InvalidParameterValue("Level values must be a number") result[count] = value return tuple(result) @property def tuple(self): """ Returns a tuple of the level values """ return self._parse_levels()
[docs] def asdict(self): """ Returns a dictionary of the level values """ return {"first_level": self.tuple[0], "last_level": self.tuple[1]}
def __str__(self): return ( f"Level range to subset over" f"\n first_level: {self.tuple[0]}" f"\n last_level: {self.tuple[1]}" )