{
    "ExtendedTypesPy": {
        "version": 1,
        "categories": "tutorials",
        "description": [
            "This is a tutorial node. It exercises functionality for the manipulation of the extended",
            "attribute types. It is identical to OgnTutorialExtendedTypes.ogn, except the language of",
            "implementation is selected to be python."
        ],
        "language": "python",
        "uiName": "Tutorial Python Node: Extended Attribute Types",
        "inputs": {
            "floatOrToken": {
                "$comment": [
                    "Support for a union of types is noted by putting a list into the attribute type.",
                    "Each element of the list must be a legal attribute type from the supported type list."
                ],
                "type": ["float", "token"],
                "description": "Attribute that can either be a float value or a token value",
                "uiName": "Float Or Token",
                "unvalidated": true
            },
            "toNegate": {
                "$comment": "An example showing that array and tuple types are also legal members of a union.",
                "type": ["bool[]", "float[]"],
                "description": "Attribute that can either be an array of booleans or an array of floats",
                "uiName": "To Negate",
                "unvalidated": true
            },
            "tuple": {
                "$comment": "Tuple types are also allowed, implemented as 'any' to show similarities",
                "type": "any",
                "description": "Variable size/type tuple values",
                "uiName": "Tuple Values",
                "unvalidated": true
            },
            "flexible": {
                "$comment": "You don't even have to have the same shape of data in a union",
                "type": ["float[3][]", "token"],
                "description": "Flexible data type input",
                "uiName": "Flexible Values",
                "unvalidated": true
            }
        },
        "outputs": {
            "doubledResult": {
                "type": "any",
                "description": ["If the input 'floatOrToken' is a float this is 2x the value.",
                                "If it is a token this contains the input token repeated twice."
                ],
                "uiName": "Doubled Input Value",
                "unvalidated": true
            },
            "negatedResult": {
                "type": ["bool[]", "float[]"],
                "description": "Result of negating the data from the 'toNegate' input",
                "uiName": "Negated Array Values",
                "unvalidated": true
            },
            "tuple": {
                "type": "any",
                "description": "Negated values of the tuple input",
                "uiName": "Negative Tuple Values",
                "unvalidated": true
            },
            "flexible": {
                "type": ["float[3][]", "token"],
                "description": "Flexible data type output",
                "uiName": "Inverted Flexible Values",
                "unvalidated": true
           }
        }
    }
}
