def addAttr(node, longName, attributeType, shortName=None, enumName=None, defaultValue=None):
    'Add new attribute to `node`\n\n    Arguments:\n        node (Node): Add attribute to this node\n        longName (str): Name of resulting attribute\n        attributeType (str): Type of attribute, e.g. `string`\n        shortName (str, optional): Alternate name of attribute\n        enumName (str, optional): Options for an enum attribute\n        defaultValue (any, optional): Default value of attribute\n\n    Example:\n        >>> node = createNode("transform")\n        >>> addAttr(node, "myString", attributeType="string")\n        >>> addAttr(node, "myDouble", attributeType=Double)\n\n    '
    at = attributeType
    if (isinstance(at, type) and issubclass(at, _AbstractAttribute)):
        Attribute = attributeType
    else:
        Attribute = {'double': Double, 'double3': Double3, 'string': String, 'long': Long, 'bool': Boolean, 'enume': Enum}[attributeType]
    kwargs = {'default': defaultValue}
    if enumName:
        kwargs['fields'] = enumName.split(':')
    attribute = Attribute(longName, **kwargs)
    node.addAttr(attribute)
Add new attribute to `node`

Arguments:
    node (Node): Add attribute to this node
    longName (str): Name of resulting attribute
    attributeType (str): Type of attribute, e.g. `string`
    shortName (str, optional): Alternate name of attribute
    enumName (str, optional): Options for an enum attribute
    defaultValue (any, optional): Default value of attribute

Example:
    >>> node = createNode("transform")
    >>> addAttr(node, "myString", attributeType="string")
    >>> addAttr(node, "myDouble", attributeType=Double)
def addAttr(node, longName, attributeType, shortName=None, enumName=None, defaultValue=None):
    'Add new attribute to `node`\n\n    Arguments:\n        node (Node): Add attribute to this node\n        longName (str): Name of resulting attribute\n        attributeType (str): Type of attribute, e.g. `string`\n        shortName (str, optional): Alternate name of attribute\n        enumName (str, optional): Options for an enum attribute\n        defaultValue (any, optional): Default value of attribute\n\n    Example:\n        >>> node = createNode("transform")\n        >>> addAttr(node, "myString", attributeType="string")\n        >>> addAttr(node, "myDouble", attributeType=Double)\n\n    '
    at = attributeType
    if (isinstance(at, type) and issubclass(at, _AbstractAttribute)):
        Attribute = attributeType
    else:
        Attribute = {'double': Double, 'double3': Double3, 'string': String, 'long': Long, 'bool': Boolean, 'enume': Enum}[attributeType]
    kwargs = {'default': defaultValue}
    if enumName:
        kwargs['fields'] = enumName.split(':')
    attribute = Attribute(longName, **kwargs)
    node.addAttr(attribute)