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

assistant: # ActionChannelbagFCurves(bpy_struct)

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

*class* bpy.types.ActionChannelbagFCurves(*bpy_struct*)
:   Collection of F-Curves for a specific action slot, on a specific strip

    new(*data_path*, *\**, *index=0*, *group_name=''*)
    :   Add an F-Curve to the channelbag

        Parameters:
        :   - **data_path** (*string**,* *(**never None**)*) – Data Path, F-Curve data path to use
            - **index** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Index, Array index
            - **group_name** (*string**,* *(**optional**,* *never None**)*) – Group Name, Name of the Group for this F-Curve, will be created if it does not exist yet

        Returns:
        :   Newly created F-Curve

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

    new_from_fcurve(*source*, *\**, *data_path=''*)
    :   Copy an F-Curve into the channelbag. The original F-Curve is unchanged

        Parameters:
        :   - **source** ([`FCurve`](bpy.types.FCurve.html#bpy.types.FCurve "bpy.types.FCurve")) – Source F-Curve, The F-Curve to copy
            - **data_path** (*string**,* *(**optional**,* *never None**)*) – Data Path, F-Curve data path to use. If not provided, this will use the same data path as the given F-Curve

        Returns:
        :   Newly created F-Curve

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

    ensure(*data_path*, *\**, *index=0*, *group_name=''*)
    :   Returns the F-Curve if it already exists, and creates it if necessary

        Parameters:
        :   - **data_path** (*string**,* *(**never None**)*) – Data Path, F-Curve data path to use
            - **index** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Index, Array index
            - **group_name** (*string**,* *(**optional**,* *never None**)*) – Group Name, Name of the Group for this F-Curve, will be created if it does not exist yet. This parameter is ignored if the F-Curve already exists

        Returns:
        :   Found or newly created F-Curve

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

    find(*data_path*, *\**, *index=0*)
    :   Find an F-Curve. Note that this function performs a linear scan of all F-Curves in the channelbag.

        Parameters:
        :   - **data_path** (*string**,* *(**never None**)*) – Data Path, F-Curve data path
            - **index** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Index, Array index

        Returns:
        :   The found F-Curve, or None if it does not exist

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

    remove(*fcurve*)
    :   Remove F-Curve

        Parameters:
        :   **fcurve** ([`FCurve`](bpy.types.FCurve.html#bpy.types.FCurve "bpy.types.FCurve"), (never None)) – F-Curve to remove

    clear()
    :   Remove all F-Curves from this channelbag

    *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