def __init__(self, nodeType, position=None, parent=None, **kwargs): super(Node, self).__init__(nodeType, position, parent, **kwargs) if not self.nodeDesc: raise UnknownNodeTypeError(nodeType) self.packageName = self.nodeDesc.packageName self.packageVersion = self.nodeDesc.packageVersion self._internalFolder = self.nodeDesc.internalFolder for attrDesc in self.nodeDesc.inputs: self._attributes.add(attributeFactory(attrDesc, None, False, self)) for attrDesc in self.nodeDesc.outputs: self._attributes.add(attributeFactory(attrDesc, None, True, self)) # List attributes per uid for attr in self._attributes: for uidIndex in attr.attributeDesc.uid: self.attributesPerUid[uidIndex].add(attr) # initialize attribute values for k, v in kwargs.items(): attr = self.attribute(k) if attr.isInput: self.attribute(k).value = v
def _addAttribute(self, name, val, isOutput): """ Add a new attribute on this node. Args: name (str): the name of the attribute val: the attribute's value isOutput: whether the attribute is an output Returns: bool: whether the attribute exists in the node description """ attrDesc = None if self.nodeDesc: refAttrs = self.nodeDesc.outputs if isOutput else self.nodeDesc.inputs attrDesc = CompatibilityNode.attributeDescFromName(refAttrs, name, val) matchDesc = attrDesc is not None if not matchDesc: attrDesc = CompatibilityNode.attributeDescFromValue(name, val, isOutput) attribute = attributeFactory(attrDesc, val, isOutput, self) self._attributes.add(attribute) return matchDesc