# NodeTree(ID)

## Poll Function

The `NodeTree.poll` function determines if a node tree is visible in the given context (similar to how `Panel.poll` and `Menu.poll` define visibility). If it returns False, the node tree type will not be selectable in the node editor.

A typical condition for shader nodes would be to check the active render engine of the scene and only show nodes of the renderer they are designed for.

    import bpy

    class CyclesNodeTree(bpy.types.NodeTree):
        """ This operator is only visible when Cycles is the selected render engine"""
        bl_label = "Cycles Node Tree"

        @classmethod
        def poll(cls, context):
            return context.scene.render.engine == 'CYCLES'

    bpy.utils.register_class(CyclesNodeTree)

base classes — `bpy_struct`, `ID`

subclasses — `CompositorNodeTree`, `ShaderNodeTree`, `TextureNodeTree`

class `bpy.types.``NodeTree`(ID)

  Node tree consisting of linked nodes used for shading, textures and compositing

  `active_input`

    Index of the active input

    Type: | int in [0, inf], default 0

  `active_output`

    Index of the active output

    Type: | int in [0, inf], default 0

  `animation_data`

    Animation data for this data-block

    Type: | `AnimData`, (readonly)

  `bl_description`

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

  `bl_icon`

    The node tree icon

    Type: | enum in [‘NONE’, ‘QUESTION’, ‘ERROR’, ‘CANCEL’, ‘TRIA_RIGHT’, ‘TRIA_DOWN’, ‘TRIA_LEFT’, ‘TRIA_UP’, ‘ARROW_LEFTRIGHT’, ‘PLUS’, ‘DISCLOSURE_TRI_DOWN’, ‘DISCLOSURE_TRI_RIGHT’, ‘RADIOBUT_OFF’, ‘RADIOBUT_ON’, ‘MENU_PANEL’, ‘BLENDER’, ‘GRIP’, ‘DOT’, ‘COLLAPSEMENU’, ‘X’, ‘GO_LEFT’, ‘PLUG’, ‘UI’, ‘NODE’, ‘NODE_SEL’, ‘FULLSCREEN’, ‘SPLITSCREEN’, ‘RIGHTARROW_THIN’, ‘BORDERMOVE’, ‘VIEWZOOM’, ‘ZOOMIN’, ‘ZOOMOUT’, ‘PANEL_CLOSE’, ‘COPY_ID’, ‘EYEDROPPER’, ‘LINK_AREA’, ‘AUTO’, ‘CHECKBOX_DEHLT’, ‘CHECKBOX_HLT’, ‘UNLOCKED’, ‘LOCKED’, ‘UNPINNED’, ‘PINNED’, ‘SCREEN_BACK’, ‘RIGHTARROW’, ‘DOWNARROW_HLT’, ‘DOTSUP’, ‘DOTSDOWN’, ‘LINK’, ‘INLINK’, ‘PLUGIN’, ‘HELP’, ‘GHOST_ENABLED’, ‘COLOR’, ‘LINKED’, ‘UNLINKED’, ‘HAND’, ‘ZOOM_ALL’, ‘ZOOM_SELECTED’, ‘ZOOM_PREVIOUS’, ‘ZOOM_IN’, ‘ZOOM_OUT’, ‘RENDER_REGION’, ‘BORDER_RECT’, ‘BORDER_LASSO’, ‘FREEZE’, ‘STYLUS_PRESSURE’, ‘GHOST_DISABLED’, ‘NEW’, ‘FILE_TICK’, ‘QUIT’, ‘URL’, ‘RECOVER_LAST’, ‘FULLSCREEN_ENTER’, ‘FULLSCREEN_EXIT’, ‘BLANK1’, ‘LAMP’, ‘MATERIAL’, ‘TEXTURE’, ‘ANIM’, ‘WORLD’, ‘SCENE’, ‘EDIT’, ‘GAME’, ‘RADIO’, ‘SCRIPT’, ‘PARTICLES’, ‘PHYSICS’, ‘SPEAKER’, ‘TEXTURE_SHADED’, ‘VIEW3D’, ‘IPO’, ‘OOPS’, ‘BUTS’, ‘FILESEL’, ‘IMAGE_COL’, ‘INFO’, ‘SEQUENCE’, ‘TEXT’, ‘IMASEL’, ‘SOUND’, ‘ACTION’, ‘NLA’, ‘SCRIPTWIN’, ‘TIME’, ‘NODETREE’, ‘LOGIC’, ‘CONSOLE’, ‘PREFERENCES’, ‘CLIP’, ‘ASSET_MANAGER’, ‘OBJECT_DATAMODE’, ‘EDITMODE_HLT’, ‘FACESEL_HLT’, ‘VPAINT_HLT’, ‘TPAINT_HLT’, ‘WPAINT_HLT’, ‘SCULPTMODE_HLT’, ‘POSE_HLT’, ‘PARTICLEMODE’, ‘LIGHTPAINT’, ‘SCENE_DATA’, ‘RENDERLAYERS’, ‘WORLD_DATA’, ‘OBJECT_DATA’, ‘MESH_DATA’, ‘CURVE_DATA’, ‘META_DATA’, ‘LATTICE_DATA’, ‘LAMP_DATA’, ‘MATERIAL_DATA’, ‘TEXTURE_DATA’, ‘ANIM_DATA’, ‘CAMERA_DATA’, ‘PARTICLE_DATA’, ‘LIBRARY_DATA_DIRECT’, ‘GROUP’, ‘ARMATURE_DATA’, ‘POSE_DATA’, ‘BONE_DATA’, ‘CONSTRAINT’, ‘SHAPEKEY_DATA’, ‘CONSTRAINT_BONE’, ‘CAMERA_STEREO’, ‘PACKAGE’, ‘UGLYPACKAGE’, ‘BRUSH_DATA’, ‘IMAGE_DATA’, ‘FILE’, ‘FCURVE’, ‘FONT_DATA’, ‘RENDER_RESULT’, ‘SURFACE_DATA’, ‘EMPTY_DATA’, ‘SETTINGS’, ‘RENDER_ANIMATION’, ‘RENDER_STILL’, ‘LIBRARY_DATA_BROKEN’, ‘BOIDS’, ‘STRANDS’, ‘LIBRARY_DATA_INDIRECT’, ‘GREASEPENCIL’, ‘LINE_DATA’, ‘GROUP_BONE’, ‘GROUP_VERTEX’, ‘GROUP_VCOL’, ‘GROUP_UVS’, ‘RNA’, ‘RNA_ADD’, ‘OUTLINER_OB_EMPTY’, ‘OUTLINER_OB_MESH’, ‘OUTLINER_OB_CURVE’, ‘OUTLINER_OB_LATTICE’, ‘OUTLINER_OB_META’, ‘OUTLINER_OB_LAMP’, ‘OUTLINER_OB_CAMERA’, ‘OUTLINER_OB_ARMATURE’, ‘OUTLINER_OB_FONT’, ‘OUTLINER_OB_SURFACE’, ‘OUTLINER_OB_SPEAKER’, ‘RESTRICT_VIEW_OFF’, ‘RESTRICT_VIEW_ON’, ‘RESTRICT_SELECT_OFF’, ‘RESTRICT_SELECT_ON’, ‘RESTRICT_RENDER_OFF’, ‘RESTRICT_RENDER_ON’, ‘OUTLINER_DATA_EMPTY’, ‘OUTLINER_DATA_MESH’, ‘OUTLINER_DATA_CURVE’, ‘OUTLINER_DATA_LATTICE’, ‘OUTLINER_DATA_META’, ‘OUTLINER_DATA_LAMP’, ‘OUTLINER_DATA_CAMERA’, ‘OUTLINER_DATA_ARMATURE’, ‘OUTLINER_DATA_FONT’, ‘OUTLINER_DATA_SURFACE’, ‘OUTLINER_DATA_SPEAKER’, ‘OUTLINER_DATA_POSE’, ‘MESH_PLANE’, ‘MESH_CUBE’, ‘MESH_CIRCLE’, ‘MESH_UVSPHERE’, ‘MESH_ICOSPHERE’, ‘MESH_GRID’, ‘MESH_MONKEY’, ‘MESH_CYLINDER’, ‘MESH_TORUS’, ‘MESH_CONE’, ‘MESH_CAPSULE’, ‘LAMP_POINT’, ‘LAMP_SUN’, ‘LAMP_SPOT’, ‘LAMP_HEMI’, ‘LAMP_AREA’, ‘META_EMPTY’, ‘META_PLANE’, ‘META_CUBE’, ‘META_BALL’, ‘META_ELLIPSOID’, ‘META_CAPSULE’, ‘SURFACE_NCURVE’, ‘SURFACE_NCIRCLE’, ‘SURFACE_NSURFACE’, ‘SURFACE_NCYLINDER’, ‘SURFACE_NSPHERE’, ‘SURFACE_NTORUS’, ‘CURVE_BEZCURVE’, ‘CURVE_BEZCIRCLE’, ‘CURVE_NCURVE’, ‘CURVE_NCIRCLE’, ‘CURVE_PATH’, ‘COLOR_RED’, ‘COLOR_GREEN’, ‘COLOR_BLUE’, ‘TRIA_RIGHT_BAR’, ‘TRIA_DOWN_BAR’, ‘TRIA_LEFT_BAR’, ‘TRIA_UP_BAR’, ‘FORCE_FORCE’, ‘FORCE_WIND’, ‘FORCE_VORTEX’, ‘FORCE_MAGNETIC’, ‘FORCE_HARMONIC’, ‘FORCE_CHARGE’, ‘FORCE_LENNARDJONES’, ‘FORCE_TEXTURE’, ‘FORCE_CURVE’, ‘FORCE_BOID’, ‘FORCE_TURBULENCE’, ‘FORCE_DRAG’, ‘FORCE_SMOKEFLOW’, ‘NODE_INSERT_ON’, ‘NODE_INSERT_OFF’, ‘MODIFIER’, ‘MOD_WAVE’, ‘MOD_BUILD’, ‘MOD_DECIM’, ‘MOD_MIRROR’, ‘MOD_SOFT’, ‘MOD_SUBSURF’, ‘HOOK’, ‘MOD_PHYSICS’, ‘MOD_PARTICLES’, ‘MOD_BOOLEAN’, ‘MOD_EDGESPLIT’, ‘MOD_ARRAY’, ‘MOD_UVPROJECT’, ‘MOD_DISPLACE’, ‘MOD_CURVE’, ‘MOD_LATTICE’, ‘CONSTRAINT_DATA’, ‘MOD_ARMATURE’, ‘MOD_SHRINKWRAP’, ‘MOD_CAST’, ‘MOD_MESHDEFORM’, ‘MOD_BEVEL’, ‘MOD_SMOOTH’, ‘MOD_SIMPLEDEFORM’, ‘MOD_MASK’, ‘MOD_CLOTH’, ‘MOD_EXPLODE’, ‘MOD_FLUIDSIM’, ‘MOD_MULTIRES’, ‘MOD_SMOKE’, ‘MOD_SOLIDIFY’, ‘MOD_SCREW’, ‘MOD_VERTEX_WEIGHT’, ‘MOD_DYNAMICPAINT’, ‘MOD_REMESH’, ‘MOD_OCEAN’, ‘MOD_WARP’, ‘MOD_SKIN’, ‘MOD_TRIANGULATE’, ‘MOD_WIREFRAME’, ‘MOD_DATA_TRANSFER’, ‘MOD_NORMALEDIT’, ‘REC’, ‘PLAY’, ‘FF’, ‘REW’, ‘PAUSE’, ‘PREV_KEYFRAME’, ‘NEXT_KEYFRAME’, ‘PLAY_AUDIO’, ‘PLAY_REVERSE’, ‘PREVIEW_RANGE’, ‘ACTION_TWEAK’, ‘PMARKER_ACT’, ‘PMARKER_SEL’, ‘PMARKER’, ‘MARKER_HLT’, ‘MARKER’, ‘SPACE2’, ‘SPACE3’, ‘KEYINGSET’, ‘KEY_DEHLT’, ‘KEY_HLT’, ‘MUTE_IPO_OFF’, ‘MUTE_IPO_ON’, ‘VISIBLE_IPO_OFF’, ‘VISIBLE_IPO_ON’, ‘DRIVER’, ‘SOLO_OFF’, ‘SOLO_ON’, ‘FRAME_PREV’, ‘FRAME_NEXT’, ‘NLA_PUSHDOWN’, ‘IPO_CONSTANT’, ‘IPO_LINEAR’, ‘IPO_BEZIER’, ‘IPO_SINE’, ‘IPO_QUAD’, ‘IPO_CUBIC’, ‘IPO_QUART’, ‘IPO_QUINT’, ‘IPO_EXPO’, ‘IPO_CIRC’, ‘IPO_BOUNCE’, ‘IPO_ELASTIC’, ‘IPO_BACK’, ‘IPO_EASE_IN’, ‘IPO_EASE_OUT’, ‘IPO_EASE_IN_OUT’, ‘VERTEXSEL’, ‘EDGESEL’, ‘FACESEL’, ‘LOOPSEL’, ‘ROTATE’, ‘CURSOR’, ‘ROTATECOLLECTION’, ‘ROTATECENTER’, ‘ROTACTIVE’, ‘ALIGN’, ‘SMOOTHCURVE’, ‘SPHERECURVE’, ‘ROOTCURVE’, ‘SHARPCURVE’, ‘LINCURVE’, ‘NOCURVE’, ‘RNDCURVE’, ‘PROP_OFF’, ‘PROP_ON’, ‘PROP_CON’, ‘SCULPT_DYNTOPO’, ‘PARTICLE_POINT’, ‘PARTICLE_TIP’, ‘PARTICLE_PATH’, ‘MAN_TRANS’, ‘MAN_ROT’, ‘MAN_SCALE’, ‘MANIPUL’, ‘SNAP_OFF’, ‘SNAP_ON’, ‘SNAP_NORMAL’, ‘SNAP_GRID’, ‘SNAP_VERTEX’, ‘SNAP_EDGE’, ‘SNAP_FACE’, ‘SNAP_VOLUME’, ‘SNAP_INCREMENT’, ‘STICKY_UVS_LOC’, ‘STICKY_UVS_DISABLE’, ‘STICKY_UVS_VERT’, ‘CLIPUV_DEHLT’, ‘CLIPUV_HLT’, ‘SNAP_PEEL_OBJECT’, ‘GRID’, ‘PASTEDOWN’, ‘COPYDOWN’, ‘PASTEFLIPUP’, ‘PASTEFLIPDOWN’, ‘SNAP_SURFACE’, ‘AUTOMERGE_ON’, ‘AUTOMERGE_OFF’, ‘RETOPO’, ‘UV_VERTEXSEL’, ‘UV_EDGESEL’, ‘UV_FACESEL’, ‘UV_ISLANDSEL’, ‘UV_SYNC_SELECT’, ‘BBOX’, ‘WIRE’, ‘SOLID’, ‘SMOOTH’, ‘POTATO’, ‘ORTHO’, ‘LOCKVIEW_OFF’, ‘LOCKVIEW_ON’, ‘AXIS_SIDE’, ‘AXIS_FRONT’, ‘AXIS_TOP’, ‘NDOF_DOM’, ‘NDOF_TURN’, ‘NDOF_FLY’, ‘NDOF_TRANS’, ‘LAYER_USED’, ‘LAYER_ACTIVE’, ‘SORTALPHA’, ‘SORTBYEXT’, ‘SORTTIME’, ‘SORTSIZE’, ‘LONGDISPLAY’, ‘SHORTDISPLAY’, ‘GHOST’, ‘IMGDISPLAY’, ‘SAVE_AS’, ‘SAVE_COPY’, ‘BOOKMARKS’, ‘FONTPREVIEW’, ‘FILTER’, ‘NEWFOLDER’, ‘OPEN_RECENT’, ‘FILE_PARENT’, ‘FILE_REFRESH’, ‘FILE_FOLDER’, ‘FILE_BLANK’, ‘FILE_BLEND’, ‘FILE_IMAGE’, ‘FILE_MOVIE’, ‘FILE_SCRIPT’, ‘FILE_SOUND’, ‘FILE_FONT’, ‘FILE_TEXT’, ‘RECOVER_AUTO’, ‘SAVE_PREFS’, ‘LINK_BLEND’, ‘APPEND_BLEND’, ‘IMPORT’, ‘EXPORT’, ‘EXTERNAL_DATA’, ‘LOAD_FACTORY’, ‘LOOP_BACK’, ‘LOOP_FORWARDS’, ‘BACK’, ‘FORWARD’, ‘FILE_HIDDEN’, ‘FILE_BACKUP’, ‘DISK_DRIVE’, ‘MATPLANE’, ‘MATSPHERE’, ‘MATCUBE’, ‘MONKEY’, ‘HAIR’, ‘ALIASED’, ‘ANTIALIASED’, ‘MAT_SPHERE_SKY’, ‘WORDWRAP_OFF’, ‘WORDWRAP_ON’, ‘SYNTAX_OFF’, ‘SYNTAX_ON’, ‘LINENUMBERS_OFF’, ‘LINENUMBERS_ON’, ‘SCRIPTPLUGINS’, ‘SEQ_SEQUENCER’, ‘SEQ_PREVIEW’, ‘SEQ_LUMA_WAVEFORM’, ‘SEQ_CHROMA_SCOPE’, ‘SEQ_HISTOGRAM’, ‘SEQ_SPLITVIEW’, ‘IMAGE_RGB’, ‘IMAGE_RGB_ALPHA’, ‘IMAGE_ALPHA’, ‘IMAGE_ZDEPTH’, ‘IMAGEFILE’, ‘BRUSH_ADD’, ‘BRUSH_BLOB’, ‘BRUSH_BLUR’, ‘BRUSH_CLAY’, ‘BRUSH_CLAY_STRIPS’, ‘BRUSH_CLONE’, ‘BRUSH_CREASE’, ‘BRUSH_DARKEN’, ‘BRUSH_FILL’, ‘BRUSH_FLATTEN’, ‘BRUSH_GRAB’, ‘BRUSH_INFLATE’, ‘BRUSH_LAYER’, ‘BRUSH_LIGHTEN’, ‘BRUSH_MASK’, ‘BRUSH_MIX’, ‘BRUSH_MULTIPLY’, ‘BRUSH_NUDGE’, ‘BRUSH_PINCH’, ‘BRUSH_SCRAPE’, ‘BRUSH_SCULPT_DRAW’, ‘BRUSH_SMEAR’, ‘BRUSH_SMOOTH’, ‘BRUSH_SNAKE_HOOK’, ‘BRUSH_SOFTEN’, ‘BRUSH_SUBTRACT’, ‘BRUSH_TEXDRAW’, ‘BRUSH_TEXFILL’, ‘BRUSH_TEXMASK’, ‘BRUSH_THUMB’, ‘BRUSH_ROTATE’, ‘BRUSH_VERTEXDRAW’, ‘MATCAP_01’, ‘MATCAP_02’, ‘MATCAP_03’, ‘MATCAP_04’, ‘MATCAP_05’, ‘MATCAP_06’, ‘MATCAP_07’, ‘MATCAP_08’, ‘MATCAP_09’, ‘MATCAP_10’, ‘MATCAP_11’, ‘MATCAP_12’, ‘MATCAP_13’, ‘MATCAP_14’, ‘MATCAP_15’, ‘MATCAP_16’, ‘MATCAP_17’, ‘MATCAP_18’, ‘MATCAP_19’, ‘MATCAP_20’, ‘MATCAP_21’, ‘MATCAP_22’, ‘MATCAP_23’, ‘MATCAP_24’], default ‘NODETREE’

  `bl_idname`

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

  `bl_label`

    The node tree label

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

  `grease_pencil`

    Grease Pencil data-block

    Type: | `GreasePencil`

  `inputs`

    Node tree inputs

    Type: | `NodeTreeInputs` `bpy_prop_collection` of `NodeSocketInterface`, (readonly)

  `links`

    Type: | `NodeLinks` `bpy_prop_collection` of `NodeLink`, (readonly)

  `nodes`

    Type: | `Nodes` `bpy_prop_collection` of `Node`, (readonly)

  `outputs`

    Node tree outputs

    Type: | `NodeTreeOutputs` `bpy_prop_collection` of `NodeSocketInterface`, (readonly)

  `type`

    Node Tree type (deprecated, bl_idname is the actual node tree type identifier)

    - `SHADER` Shader, Shader nodes.
    - `TEXTURE` Texture, Texture nodes.
    - `COMPOSITING` Compositing, Compositing nodes.

    Type: | enum in [‘SHADER’, ‘TEXTURE’, ‘COMPOSITING’], default ‘SHADER’, (readonly)

  `view_center`

    Type: | float array of 2 items in [-inf, inf], default (0.0, 0.0), (readonly)

  `interface_update`(context)

    Updated node group interface

  classmethod `poll`(context)

    Check visibility in the editor

    Return type: | boolean

  `update`()

    Update on editor changes

  classmethod `get_from_context`(context)

    Get a node tree from the context

    Return (result_1, result_2, result_3):
    | result_1, Active node tree from context, `NodeTree` result_2, ID data block that owns the node tree, `ID` result_3, Original ID data block selected from the context, `ID`

Inherited Properties

`bpy_struct.id_data` `ID.name` `ID.users` `ID.use_fake_user` `ID.tag` | `ID.is_updated` `ID.is_updated_data` `ID.is_library_indirect` `ID.library` `ID.preview`

Inherited Functions

`bpy_struct.as_pointer` `bpy_struct.driver_add` `bpy_struct.driver_remove` `bpy_struct.get` `bpy_struct.is_property_hidden` `bpy_struct.is_property_readonly` `bpy_struct.is_property_set` `bpy_struct.items` `bpy_struct.keyframe_delete` `bpy_struct.keyframe_insert` `bpy_struct.keys` | `bpy_struct.path_from_id` `bpy_struct.path_resolve` `bpy_struct.property_unset` `bpy_struct.type_recast` `bpy_struct.values` `ID.copy` `ID.user_clear` `ID.animation_data_create` `ID.animation_data_clear` `ID.update_tag`

References

`BlendData.node_groups` `BlendDataNodeTrees.new` `BlendDataNodeTrees.remove` `CompositorNodeGroup.node_tree` `FreestyleLineStyle.node_tree` `Lamp.node_tree` `Material.node_tree` `Node.poll` `Node.poll_instance` `NodeCustomGroup.node_tree` `NodeGroup.node_tree` `NodeInternal.poll` `NodeInternal.poll_instance` | `NodeTree.get_from_context` `NodeTreePath.node_tree` `Scene.node_tree` `ShaderNodeGroup.node_tree` `SpaceNodeEditor.edit_tree` `SpaceNodeEditor.node_tree` `SpaceNodeEditorPath.append` `SpaceNodeEditorPath.start` `Texture.node_tree` `TextureNodeGroup.node_tree` `UILayout.template_node_link` `UILayout.template_node_view` `World.node_tree`