import sys
import typing
import bpy.types

GenericType = typing.TypeVar("GenericType")


def add_row_filter_rule(override_context: typing.
                        Union[typing.Dict, 'bpy.types.Context'] = None,
                        execution_context: typing.Union[str, int] = None,
                        undo: typing.Optional[bool] = None):
    ''' Add a filter to remove rows from the displayed data

    :type override_context: typing.Union[typing.Dict, 'bpy.types.Context']
    :type execution_context: typing.Union[str, int]
    :type undo: typing.Optional[bool]
    '''

    pass


def change_spreadsheet_data_source(
        override_context: typing.Union[typing.
                                       Dict, 'bpy.types.Context'] = None,
        execution_context: typing.Union[str, int] = None,
        undo: typing.Optional[bool] = None,
        *,
        component_type: typing.Optional[typing.Any] = 0,
        attribute_domain_type: typing.Optional[typing.Any] = 0):
    ''' Change visible data source in the spreadsheet

    :type override_context: typing.Union[typing.Dict, 'bpy.types.Context']
    :type execution_context: typing.Union[str, int]
    :type undo: typing.Optional[bool]
    :param component_type: Component Type
    :type component_type: typing.Optional[typing.Any]
    :param attribute_domain_type: Attribute Domain Type
    :type attribute_domain_type: typing.Optional[typing.Any]
    '''

    pass


def remove_row_filter_rule(override_context: typing.
                           Union[typing.Dict, 'bpy.types.Context'] = None,
                           execution_context: typing.Union[str, int] = None,
                           undo: typing.Optional[bool] = None,
                           *,
                           index: typing.Optional[typing.Any] = 0):
    ''' Remove a row filter from the rules

    :type override_context: typing.Union[typing.Dict, 'bpy.types.Context']
    :type execution_context: typing.Union[str, int]
    :type undo: typing.Optional[bool]
    :param index: Index
    :type index: typing.Optional[typing.Any]
    '''

    pass


def toggle_pin(override_context: typing.
               Union[typing.Dict, 'bpy.types.Context'] = None,
               execution_context: typing.Union[str, int] = None,
               undo: typing.Optional[bool] = None):
    ''' Turn on or off pinning :File: `startup/bl_operators/spreadsheet.py\:19 <https://projects.blender.org/blender/blender/src/branch/main/scripts/startup/bl_operators/spreadsheet.py#L19>`__

    :type override_context: typing.Union[typing.Dict, 'bpy.types.Context']
    :type execution_context: typing.Union[str, int]
    :type undo: typing.Optional[bool]
    '''

    pass
