user: What is Node(bpy_struct) and how is it used in Blender Python scripting?

assistant: # Node(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

subclasses —
[`NodeCustomGroup`](bpy.types.NodeCustomGroup.html#bpy.types.NodeCustomGroup "bpy.types.NodeCustomGroup"), [`NodeInternal`](bpy.types.NodeInternal.html#bpy.types.NodeInternal "bpy.types.NodeInternal")

*class* bpy.types.Node(*bpy_struct*)
:   Node in a node tree

    bl_description
    :   Type:
        :   string, default “”, (never None)

    bl_height_default
    :   Type:
        :   float in [0, inf], default 0.0

    bl_height_max
    :   Type:
        :   float in [0, inf], default 0.0

    bl_height_min
    :   Type:
        :   float in [0, inf], default 0.0

    bl_icon
    :   The node icon

        Type:
        :   enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), default `'NODE'`

    bl_idname
    :   Type:
        :   string, default “”, (never None)

    bl_label
    :   The node label

        Type:
        :   string, default “”, (never None)

    bl_static_type
    :   Legacy unique node type identifier, redundant with bl_idname property

        Type:
        :   string, default “”, (readonly, never None)

    bl_width_default
    :   Type:
        :   float in [0, inf], default 0.0

    bl_width_max
    :   Type:
        :   float in [0, inf], default 0.0

    bl_width_min
    :   Type:
        :   float in [0, inf], default 0.0

    color
    :   Custom color of the node body

        Type:
        :   [`mathutils.Color`](mathutils.html#mathutils.Color "mathutils.Color") of 3 items in [0, 1], default (0.0, 0.0, 0.0)

    color_tag
    :   Node header color tag

        - `NONE`
          None – Default color tag for new nodes and node groups.
        - `ATTRIBUTE`
          Attribute.
        - `COLOR`
          Color.
        - `CONVERTER`
          Converter.
        - `DISTORT`
          Distort.
        - `FILTER`
          Filter.
        - `GEOMETRY`
          Geometry.
        - `INPUT`
          Input.
        - `MATTE`
          Matte.
        - `OUTPUT`
          Output.
        - `SCRIPT`
          Script.
        - `SHADER`
          Shader.
        - `TEXTURE`
          Texture.
        - `VECTOR`
          Vector.
        - `PATTERN`
          Pattern.
        - `INTERFACE`
          Interface.
        - `GROUP`
          Group.

        Type:
        :   enum in [`'NONE'`, `'ATTRIBUTE'`, `'COLOR'`, `'CONVERTER'`, `'DISTORT'`, `'FILTER'`, `'GEOMETRY'`, `'INPUT'`, `'MATTE'`, `'OUTPUT'`, `'SCRIPT'`, `'SHADER'`, `'TEXTURE'`, `'VECTOR'`, `'PATTERN'`, `'INTERFACE'`, `'GROUP'`], default `'NONE'`, (readonly)

    dimensions
    :   Absolute bounding box dimensions of the node

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 2 items in [-inf, inf], default (0.0, 0.0), (readonly)

    height
    :   Height of the node

        Type:
        :   float in [-inf, inf], default 0.0

    hide
    :   Type:
        :   boolean, default False

    inputs
    :   Type:
        :   [`NodeInputs`](bpy.types.NodeInputs.html#bpy.types.NodeInputs "bpy.types.NodeInputs") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (readonly)

    internal_links
    :   Internal input-to-output connections for muting

        Type:
        :   [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`NodeLink`](bpy.types.NodeLink.html#bpy.types.NodeLink "bpy.types.NodeLink"), (readonly)

    label
    :   Optional custom node label

        Type:
        :   string, default “”, (never None)

    location
    :   Location of the node within its parent frame

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 2 items in [-1e+06, 1e+06], default (0.0, 0.0)

    location_absolute
    :   Location of the node in the entire canvas

        Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 2 items in [-1e+06, 1e+06], default (0.0, 0.0)

    mute
    :   Type:
        :   boolean, default False

    name
    :   Unique node identifier

        Type:
        :   string, default “”, (never None)

    outputs
    :   Type:
        :   [`NodeOutputs`](bpy.types.NodeOutputs.html#bpy.types.NodeOutputs "bpy.types.NodeOutputs") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket"), (readonly)

    parent
    :   Parent this node is attached to

        Type:
        :   [`Node`](#bpy.types.Node "bpy.types.Node")

    select
    :   Node selection state

        Type:
        :   boolean, default False

    show_options
    :   Type:
        :   boolean, default False

    show_preview
    :   Type:
        :   boolean, default False

    show_texture
    :   Display node in viewport textured shading mode

        Type:
        :   boolean, default False

    type
    :   Legacy unique node type identifier, redundant with bl_idname property

        Type:
        :   string, default “”, (readonly, never None)

    use_custom_color
    :   Use custom color for the node

        Type:
        :   boolean, default False

    warning_propagation
    :   The kinds of messages that should be propagated from this node to the parent group node

        Type:
        :   enum in [`'ALL'`, `'NONE'`, `'ERRORS'`, `'ERRORS_AND_WARNINGS'`], default `'ALL'`

    width
    :   Width of the node

        Type:
        :   float in [-inf, inf], default 0.0

    bl_system_properties_get(*\**, *do_create=False*)
    :   DEBUG ONLY. Internal access to runtime-defined RNA data storage, intended solely for testing and debugging purposes. Do not access it in regular scripting work, and in particular, do not assume that it contains writable data

        Parameters:
        :   **do_create** (*boolean**,* *(**optional**)*) – Ensure that system properties are created if they do not exist yet

        Returns:
        :   The system properties root container, or None if there are no system properties stored in this data yet, and its creation was not requested

        Return type:
        :   [`PropertyGroup`](bpy.types.PropertyGroup.html#bpy.types.PropertyGroup "bpy.types.PropertyGroup")

    socket_value_update(*context*)
    :   Update after property changes

    *classmethod* is_registered_node_type()
    :   True if a registered node type

        Returns:
        :   Result

        Return type:
        :   boolean

    *classmethod* poll(*node_tree*)
    :   If non-null output is returned, the node type can be added to the tree

        Parameters:
        :   **node_tree** ([`NodeTree`](bpy.types.NodeTree.html#bpy.types.NodeTree "bpy.types.NodeTree")) – Node Tree

        Return type:
        :   boolean

    poll_instance(*node_tree*)
    :   If non-null output is returned, the node can be added to the tree

        Parameters:
        :   **node_tree** ([`NodeTree`](bpy.types.NodeTree.html#bpy.types.NodeTree "bpy.types.NodeTree")) – Node Tree

        Return type:
        :   boolean

    update()
    :   Update on node graph topology changes (adding or removing nodes and links)

    insert_link(*link*)
    :   Handle creation of a link to or from the node

        Parameters:
        :   **link** ([`NodeLink`](bpy.types.NodeLink.html#bpy.types.NodeLink "bpy.types.NodeLink"), (never None)) – Link, Node link that will be inserted

    init(*context*)
    :   Initialize a new instance of this node

    copy(*node*)
    :   Initialize a new instance of this node from an existing node

        Parameters:
        :   **node** ([`Node`](#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Existing node to copy

    free()
    :   Clean up node on removal

    draw_buttons(*context*, *layout*)
    :   Draw node buttons

        Parameters:
        :   **layout** ([`UILayout`](bpy.types.UILayout.html#bpy.types.UILayout "bpy.types.UILayout"), (never None)) – Layout, Layout in the UI

    draw_buttons_ext(*context*, *layout*)
    :   Draw node buttons in the sidebar

        Parameters:
        :   **layout** ([`UILayout`](bpy.types.UILayout.html#bpy.types.UILayout "bpy.types.UILayout"), (never None)) – Layout, Layout in the UI

    draw_label()
    :   Returns a dynamic label string

        Returns:
        :   Label

        Return type:
        :   string, (never None)

    debug_zone_body_lazy_function_graph()
    :   Get the internal lazy-function graph for the body of this zone

        Returns:
        :   Dot Graph, Graph in dot format

        Return type:
        :   string

    debug_zone_lazy_function_graph()
    :   Get the internal lazy-function graph for this zone

        Returns:
        :   Dot Graph, Graph in dot format

        Return type:
        :   string

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   [type](#bpy.types.Node.type "bpy.types.Node.type")