Source code for roocs_utils.parameter.collection_parameter

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


[docs]class CollectionParameter(_BaseParameter): """ Class for collection parameter used in operations. | A collection can be input as: | A string of comma separated values: "cmip5.output1.INM.inmcm4.rcp45.mon.ocean.Omon.r1i1p1.latest.zostoga,cmip5.output1.MPI-M.MPI-ESM-LR.rcp45.mon.ocean.Omon.r1i1p1.latest.zostoga" | A sequence of strings: e.g. ("cmip5.output1.INM.inmcm4.rcp45.mon.ocean.Omon.r1i1p1.latest.zostoga", "cmip5.output1.MPI-M.MPI-ESM-LR.rcp45.mon.ocean.Omon.r1i1p1.latest.zostoga") Validates the input and parses the ids. """ parse_method = "_parse_sequence" def _validate(self): if self._result is None: raise MissingParameterValue(f"{self.__class__.__name__} must be provided") self._parse_ids() def _parse_ids(self): for value in self._result: if not isinstance(value, str): raise InvalidParameterValue("Each id in a collection must be a string") return tuple(self._result) @property def tuple(self): """ Returns a tuple of the collection ids """ return self._parse_ids() def __str__(self): string = "Datasets to analyse:" for i in self.tuple: string += f"\n{i}" return string