def conditions(self, conditions): lst = validate_list(conditions, (ConditionTemplate, list, tuple)) # make sure attribute can be a Condition # TODO: list.map(_.validate_scope(AttributeType.CONDITION)) all true self._conditions = list(map(BaseTemplate._homogenize_ranges, lst))
def process(self, process): from taurus.entity.object import ProcessRun from taurus.entity.link_by_uid import LinkByUID if self._process is not None and isinstance(self._process, ProcessRun): self._process._unset_ingredient(self) if process is None: self._process = None elif isinstance(process, ProcessRun): self._process = process if not isinstance(process.ingredients, ValidList): process._ingredients = validate_list(self, [IngredientRun, LinkByUID]) else: process._ingredients.append(self) elif isinstance(process, LinkByUID): self._process = process else: raise TypeError("IngredientRun.process must be a ProcessRun or LinkByUID")
def material(self, value): from taurus.entity.object import MaterialRun from taurus.entity.link_by_uid import LinkByUID if self._material is not None and isinstance(self._material, MaterialRun): self._material._unset_measurement(self) if value is None: self._material = value elif isinstance(value, MaterialRun): self._material = value if not isinstance(value.measurements, ValidList): value._measurements = validate_list( self, [MeasurementRun, LinkByUID]) else: value._measurements.append(self) elif isinstance(value, LinkByUID): self._material = value else: raise TypeError( "material must be a MaterialRun or LinkByUID: {}".format( value))
def properties(self, properties): self._properties = validate_list(properties, Property)