user: Give a detailed overview of WorkSpaceTool(bpy_struct): syntax, arguments, return values, common patterns.

assistant: # WorkSpaceTool(bpy_struct)

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

*class* bpy.types.WorkSpaceTool(*bpy_struct*)
:   brush_type
    :   If the tool uses brushes and is limited to a specific brush type, the identifier of the brush type

        Type:
        :   enum in [`'DEFAULT'`], default `'DEFAULT'`, (readonly)

    has_datablock
    :   Type:
        :   boolean, default False, (readonly)

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

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

    index
    :   Type:
        :   int in [-inf, inf], default 0, (readonly)

    mode
    :   Type:
        :   enum in [`'DEFAULT'`], default `'DEFAULT'`, (readonly)

    space_type
    :   Type:
        :   enum in [Space Type Items](bpy_types_enum_items/space_type_items.html#rna-enum-space-type-items), default `'EMPTY'`, (readonly)

    use_brushes
    :   Type:
        :   boolean, default False, (readonly)

    use_paint_canvas
    :   Does this tool use a painting canvas

        Type:
        :   boolean, default False, (readonly)

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

    setup(*idname*, *\**, *cursor='DEFAULT'*, *keymap=''*, *gizmo_group=''*, *brush_type=''*, *data_block=''*, *operator=''*, *index=0*, *options={}*, *idname_fallback=''*, *keymap_fallback=''*)
    :   Set the tool settings

        Parameters:
        :   - **idname** (*string**,* *(**never None**)*) – Identifier
            - **cursor** (enum in [Window Cursor Items](bpy_types_enum_items/window_cursor_items.html#rna-enum-window-cursor-items), (optional)) – cursor
            - **keymap** (*string**,* *(**optional**,* *never None**)*) – Key Map
            - **gizmo_group** (*string**,* *(**optional**,* *never None**)*) – Gizmo Group
            - **brush_type** (*enum in* *[**]**,* *(**optional**)*) – Brush Type, Limit this tool to a specific type of brush
            - **data_block** (*string**,* *(**optional**,* *never None**)*) – Data Block
            - **operator** (*string**,* *(**optional**,* *never None**)*) – Operator
            - **index** (*int in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Index
            - **options** (enum set in {`'KEYMAP_FALLBACK'`, `'USE_BRUSHES'`}, (optional)) –

              Tool Options

              - `KEYMAP_FALLBACK`
                Fallback.
              - `USE_BRUSHES`
                Uses Brushes – Allow this tool to use brushes via the asset system.
            - **idname_fallback** (*string**,* *(**optional**,* *never None**)*) – Fallback Identifier
            - **keymap_fallback** (*string**,* *(**optional**,* *never None**)*) – Fallback Key Map

    operator_properties(*operator*)
    :   operator_properties

        Return type:
        :   [`OperatorProperties`](bpy.types.OperatorProperties.html#bpy.types.OperatorProperties "bpy.types.OperatorProperties"), (never None)

    gizmo_group_properties(*group*)
    :   gizmo_group_properties

        Return type:
        :   [`GizmoGroupProperties`](bpy.types.GizmoGroupProperties.html#bpy.types.GizmoGroupProperties "bpy.types.GizmoGroupProperties"), (never None)

    refresh_from_context()
    :   refresh_from_context

    *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