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

assistant: # AnnotationLayer(bpy_struct)

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

*class* bpy.types.AnnotationLayer(*bpy_struct*)
:   Collection of related sketches

    active_frame
    :   Frame currently being displayed for this layer

        Type:
        :   [`AnnotationFrame`](bpy.types.AnnotationFrame.html#bpy.types.AnnotationFrame "bpy.types.AnnotationFrame"), (readonly)

    annotation_hide
    :   Set annotation Visibility

        Type:
        :   boolean, default False

    annotation_onion_after_color
    :   Base color for ghosts after the active frame

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

    annotation_onion_after_range
    :   Maximum number of frames to show after current frame

        Type:
        :   int in [-1, 120], default 0

    annotation_onion_before_color
    :   Base color for ghosts before the active frame

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

    annotation_onion_before_range
    :   Maximum number of frames to show before current frame

        Type:
        :   int in [-1, 120], default 0

    annotation_onion_use_custom_color
    :   Use custom colors for onion skinning instead of the theme

        Type:
        :   boolean, default False

    annotation_opacity
    :   Annotation Layer Opacity

        Type:
        :   float in [0, 1], default 0.0

    color
    :   Color for all strokes in this layer

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

    frames
    :   Sketches for this layer on different frames

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

    info
    :   Layer name

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

    is_ruler
    :   This is a special ruler layer

        Type:
        :   boolean, default False, (readonly)

    lock
    :   Protect layer from further editing and/or frame changes

        Type:
        :   boolean, default False

    lock_frame
    :   Lock current frame displayed by layer

        Type:
        :   boolean, default False

    select
    :   Layer is selected for editing in the Dope Sheet

        Type:
        :   boolean, default False

    show_in_front
    :   Make the layer display in front of objects

        Type:
        :   boolean, default False

    thickness
    :   Thickness of annotation strokes

        Type:
        :   int in [1, 10], default 0

    use_annotation_onion_skinning
    :   Display annotation onion skins before and after the current frame

        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