user: Describe CopyRotationConstraint(Constraint) from the Blender manual or Python API, including usage steps and snippets.

assistant: # CopyRotationConstraint(Constraint)

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

*class* bpy.types.CopyRotationConstraint(*Constraint*)
:   Copy the rotation of the target

    euler_order
    :   Explicitly specify the euler rotation order

        - `AUTO`
          Default – Euler using the default rotation order.
        - `XYZ`
          XYZ Euler – Euler using the XYZ rotation order.
        - `XZY`
          XZY Euler – Euler using the XZY rotation order.
        - `YXZ`
          YXZ Euler – Euler using the YXZ rotation order.
        - `YZX`
          YZX Euler – Euler using the YZX rotation order.
        - `ZXY`
          ZXY Euler – Euler using the ZXY rotation order.
        - `ZYX`
          ZYX Euler – Euler using the ZYX rotation order.

        Type:
        :   enum in [`'AUTO'`, `'XYZ'`, `'XZY'`, `'YXZ'`, `'YZX'`, `'ZXY'`, `'ZYX'`], default `'AUTO'`

    invert_x
    :   Invert the X rotation

        Type:
        :   boolean, default False

    invert_y
    :   Invert the Y rotation

        Type:
        :   boolean, default False

    invert_z
    :   Invert the Z rotation

        Type:
        :   boolean, default False

    mix_mode
    :   Specify how the copied and existing rotations are combined

        - `REPLACE`
          Replace – Replace the original rotation with copied.
        - `ADD`
          Add – Add euler component values together.
        - `BEFORE`
          Before Original – Apply copied rotation before original, as if the constraint target is a parent.
        - `AFTER`
          After Original – Apply copied rotation after original, as if the constraint target is a child.
        - `OFFSET`
          Offset (Legacy) – Combine rotations like the original Offset checkbox. Does not work well for multiple axis rotations..

        Type:
        :   enum in [`'REPLACE'`, `'ADD'`, `'BEFORE'`, `'AFTER'`, `'OFFSET'`], default `'REPLACE'`

    subtarget
    :   Armature bone, mesh or lattice vertex group, …

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

    target
    :   Target object

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

    use_offset
    :   DEPRECATED: Add original rotation into copied rotation

        Type:
        :   boolean, default False

    use_x
    :   Copy the target’s X rotation

        Type:
        :   boolean, default False

    use_y
    :   Copy the target’s Y rotation

        Type:
        :   boolean, default False

    use_z
    :   Copy the target’s Z rotation

        Type:
        :   boolean, default False

    *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