user: Explain NodeSocketStandard(NodeSocket) in complete detail according to the official Blender documentation.

assistant: # NodeSocketStandard(NodeSocket)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`NodeSocket`](bpy.types.NodeSocket.html#bpy.types.NodeSocket "bpy.types.NodeSocket")

subclasses —
[`NodeSocketBool`](bpy.types.NodeSocketBool.html#bpy.types.NodeSocketBool "bpy.types.NodeSocketBool"), [`NodeSocketBundle`](bpy.types.NodeSocketBundle.html#bpy.types.NodeSocketBundle "bpy.types.NodeSocketBundle"), [`NodeSocketClosure`](bpy.types.NodeSocketClosure.html#bpy.types.NodeSocketClosure "bpy.types.NodeSocketClosure"), [`NodeSocketCollection`](bpy.types.NodeSocketCollection.html#bpy.types.NodeSocketCollection "bpy.types.NodeSocketCollection"), [`NodeSocketColor`](bpy.types.NodeSocketColor.html#bpy.types.NodeSocketColor "bpy.types.NodeSocketColor"), [`NodeSocketFloat`](bpy.types.NodeSocketFloat.html#bpy.types.NodeSocketFloat "bpy.types.NodeSocketFloat"), [`NodeSocketFloatAngle`](bpy.types.NodeSocketFloatAngle.html#bpy.types.NodeSocketFloatAngle "bpy.types.NodeSocketFloatAngle"), [`NodeSocketFloatColorTemperature`](bpy.types.NodeSocketFloatColorTemperature.html#bpy.types.NodeSocketFloatColorTemperature "bpy.types.NodeSocketFloatColorTemperature"), [`NodeSocketFloatDistance`](bpy.types.NodeSocketFloatDistance.html#bpy.types.NodeSocketFloatDistance "bpy.types.NodeSocketFloatDistance"), [`NodeSocketFloatFactor`](bpy.types.NodeSocketFloatFactor.html#bpy.types.NodeSocketFloatFactor "bpy.types.NodeSocketFloatFactor"), [`NodeSocketFloatFrequency`](bpy.types.NodeSocketFloatFrequency.html#bpy.types.NodeSocketFloatFrequency "bpy.types.NodeSocketFloatFrequency"), [`NodeSocketFloatPercentage`](bpy.types.NodeSocketFloatPercentage.html#bpy.types.NodeSocketFloatPercentage "bpy.types.NodeSocketFloatPercentage"), [`NodeSocketFloatTime`](bpy.types.NodeSocketFloatTime.html#bpy.types.NodeSocketFloatTime "bpy.types.NodeSocketFloatTime"), [`NodeSocketFloatTimeAbsolute`](bpy.types.NodeSocketFloatTimeAbsolute.html#bpy.types.NodeSocketFloatTimeAbsolute "bpy.types.NodeSocketFloatTimeAbsolute"), [`NodeSocketFloatUnsigned`](bpy.types.NodeSocketFloatUnsigned.html#bpy.types.NodeSocketFloatUnsigned "bpy.types.NodeSocketFloatUnsigned"), [`NodeSocketFloatWavelength`](bpy.types.NodeSocketFloatWavelength.html#bpy.types.NodeSocketFloatWavelength "bpy.types.NodeSocketFloatWavelength"), [`NodeSocketGeometry`](bpy.types.NodeSocketGeometry.html#bpy.types.NodeSocketGeometry "bpy.types.NodeSocketGeometry"), [`NodeSocketImage`](bpy.types.NodeSocketImage.html#bpy.types.NodeSocketImage "bpy.types.NodeSocketImage"), [`NodeSocketInt`](bpy.types.NodeSocketInt.html#bpy.types.NodeSocketInt "bpy.types.NodeSocketInt"), [`NodeSocketIntFactor`](bpy.types.NodeSocketIntFactor.html#bpy.types.NodeSocketIntFactor "bpy.types.NodeSocketIntFactor"), [`NodeSocketIntPercentage`](bpy.types.NodeSocketIntPercentage.html#bpy.types.NodeSocketIntPercentage "bpy.types.NodeSocketIntPercentage"), [`NodeSocketIntUnsigned`](bpy.types.NodeSocketIntUnsigned.html#bpy.types.NodeSocketIntUnsigned "bpy.types.NodeSocketIntUnsigned"), [`NodeSocketMaterial`](bpy.types.NodeSocketMaterial.html#bpy.types.NodeSocketMaterial "bpy.types.NodeSocketMaterial"), [`NodeSocketMatrix`](bpy.types.NodeSocketMatrix.html#bpy.types.NodeSocketMatrix "bpy.types.NodeSocketMatrix"), [`NodeSocketMenu`](bpy.types.NodeSocketMenu.html#bpy.types.NodeSocketMenu "bpy.types.NodeSocketMenu"), [`NodeSocketObject`](bpy.types.NodeSocketObject.html#bpy.types.NodeSocketObject "bpy.types.NodeSocketObject"), [`NodeSocketRotation`](bpy.types.NodeSocketRotation.html#bpy.types.NodeSocketRotation "bpy.types.NodeSocketRotation"), [`NodeSocketShader`](bpy.types.NodeSocketShader.html#bpy.types.NodeSocketShader "bpy.types.NodeSocketShader"), [`NodeSocketString`](bpy.types.NodeSocketString.html#bpy.types.NodeSocketString "bpy.types.NodeSocketString"), [`NodeSocketStringFilePath`](bpy.types.NodeSocketStringFilePath.html#bpy.types.NodeSocketStringFilePath "bpy.types.NodeSocketStringFilePath"), [`NodeSocketTexture`](bpy.types.NodeSocketTexture.html#bpy.types.NodeSocketTexture "bpy.types.NodeSocketTexture"), [`NodeSocketVector`](bpy.types.NodeSocketVector.html#bpy.types.NodeSocketVector "bpy.types.NodeSocketVector"), [`NodeSocketVector2D`](bpy.types.NodeSocketVector2D.html#bpy.types.NodeSocketVector2D "bpy.types.NodeSocketVector2D"), [`NodeSocketVector4D`](bpy.types.NodeSocketVector4D.html#bpy.types.NodeSocketVector4D "bpy.types.NodeSocketVector4D"), [`NodeSocketVectorAcceleration`](bpy.types.NodeSocketVectorAcceleration.html#bpy.types.NodeSocketVectorAcceleration "bpy.types.NodeSocketVectorAcceleration"), [`NodeSocketVectorAcceleration2D`](bpy.types.NodeSocketVectorAcceleration2D.html#bpy.types.NodeSocketVectorAcceleration2D "bpy.types.NodeSocketVectorAcceleration2D"), [`NodeSocketVectorAcceleration4D`](bpy.types.NodeSocketVectorAcceleration4D.html#bpy.types.NodeSocketVectorAcceleration4D "bpy.types.NodeSocketVectorAcceleration4D"), [`NodeSocketVectorDirection`](bpy.types.NodeSocketVectorDirection.html#bpy.types.NodeSocketVectorDirection "bpy.types.NodeSocketVectorDirection"), [`NodeSocketVectorDirection2D`](bpy.types.NodeSocketVectorDirection2D.html#bpy.types.NodeSocketVectorDirection2D "bpy.types.NodeSocketVectorDirection2D"), [`NodeSocketVectorDirection4D`](bpy.types.NodeSocketVectorDirection4D.html#bpy.types.NodeSocketVectorDirection4D "bpy.types.NodeSocketVectorDirection4D"), [`NodeSocketVectorEuler`](bpy.types.NodeSocketVectorEuler.html#bpy.types.NodeSocketVectorEuler "bpy.types.NodeSocketVectorEuler"), [`NodeSocketVectorEuler2D`](bpy.types.NodeSocketVectorEuler2D.html#bpy.types.NodeSocketVectorEuler2D "bpy.types.NodeSocketVectorEuler2D"), [`NodeSocketVectorEuler4D`](bpy.types.NodeSocketVectorEuler4D.html#bpy.types.NodeSocketVectorEuler4D "bpy.types.NodeSocketVectorEuler4D"), [`NodeSocketVectorFactor`](bpy.types.NodeSocketVectorFactor.html#bpy.types.NodeSocketVectorFactor "bpy.types.NodeSocketVectorFactor"), [`NodeSocketVectorFactor2D`](bpy.types.NodeSocketVectorFactor2D.html#bpy.types.NodeSocketVectorFactor2D "bpy.types.NodeSocketVectorFactor2D"), [`NodeSocketVectorFactor4D`](bpy.types.NodeSocketVectorFactor4D.html#bpy.types.NodeSocketVectorFactor4D "bpy.types.NodeSocketVectorFactor4D"), [`NodeSocketVectorPercentage`](bpy.types.NodeSocketVectorPercentage.html#bpy.types.NodeSocketVectorPercentage "bpy.types.NodeSocketVectorPercentage"), [`NodeSocketVectorPercentage2D`](bpy.types.NodeSocketVectorPercentage2D.html#bpy.types.NodeSocketVectorPercentage2D "bpy.types.NodeSocketVectorPercentage2D"), [`NodeSocketVectorPercentage4D`](bpy.types.NodeSocketVectorPercentage4D.html#bpy.types.NodeSocketVectorPercentage4D "bpy.types.NodeSocketVectorPercentage4D"), [`NodeSocketVectorTranslation`](bpy.types.NodeSocketVectorTranslation.html#bpy.types.NodeSocketVectorTranslation "bpy.types.NodeSocketVectorTranslation"), [`NodeSocketVectorTranslation2D`](bpy.types.NodeSocketVectorTranslation2D.html#bpy.types.NodeSocketVectorTranslation2D "bpy.types.NodeSocketVectorTranslation2D"), [`NodeSocketVectorTranslation4D`](bpy.types.NodeSocketVectorTranslation4D.html#bpy.types.NodeSocketVectorTranslation4D "bpy.types.NodeSocketVectorTranslation4D"), [`NodeSocketVectorVelocity`](bpy.types.NodeSocketVectorVelocity.html#bpy.types.NodeSocketVectorVelocity "bpy.types.NodeSocketVectorVelocity"), [`NodeSocketVectorVelocity2D`](bpy.types.NodeSocketVectorVelocity2D.html#bpy.types.NodeSocketVectorVelocity2D "bpy.types.NodeSocketVectorVelocity2D"), [`NodeSocketVectorVelocity4D`](bpy.types.NodeSocketVectorVelocity4D.html#bpy.types.NodeSocketVectorVelocity4D "bpy.types.NodeSocketVectorVelocity4D"), [`NodeSocketVectorXYZ`](bpy.types.NodeSocketVectorXYZ.html#bpy.types.NodeSocketVectorXYZ "bpy.types.NodeSocketVectorXYZ"), [`NodeSocketVectorXYZ2D`](bpy.types.NodeSocketVectorXYZ2D.html#bpy.types.NodeSocketVectorXYZ2D "bpy.types.NodeSocketVectorXYZ2D"), [`NodeSocketVectorXYZ4D`](bpy.types.NodeSocketVectorXYZ4D.html#bpy.types.NodeSocketVectorXYZ4D "bpy.types.NodeSocketVectorXYZ4D"), [`NodeSocketVirtual`](bpy.types.NodeSocketVirtual.html#bpy.types.NodeSocketVirtual "bpy.types.NodeSocketVirtual")

*class* bpy.types.NodeSocketStandard(*NodeSocket*)
:   links
    :   List of node links from or to this socket.

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

        (readonly)

    draw(*context*, *layout*, *node*, *text*)
    :   Draw socket

        Parameters:
        :   - **layout** ([`UILayout`](bpy.types.UILayout.html#bpy.types.UILayout "bpy.types.UILayout"), (never None)) – Layout, Layout in the UI
            - **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node the socket belongs to
            - **text** (*string**,* *(**never None**)*) – Text, Text label to draw alongside properties

    draw_color(*context*, *node*)
    :   Color of the socket icon

        Parameters:
        :   **node** ([`Node`](bpy.types.Node.html#bpy.types.Node "bpy.types.Node"), (never None)) – Node, Node the socket belongs to

        Returns:
        :   Color

        Return type:
        :   float array of 4 items in [0, 1]

    *classmethod* draw_color_simple()
    :   Color of the socket icon

        Returns:
        :   Color

        Return type:
        :   float array of 4 items in [0, 1]

    *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