@export
def display_timeline(data: Union[(pd.DataFrame, dict)], time_column: str='TimeGenerated', source_columns: list=None, **kwargs) -> figure:
    '\n    Display a timeline of events.\n\n    Parameters\n    ----------\n    data : Union[dict, pd.DataFrame]\n        Either\n        dict of data sets to plot on the timeline with the following structure::\n\n            Key (str) - Name of data set to be displayed in legend\n            Value (Dict[str, Any]) - containing:\n                data (pd.DataFrame) - Data to plot\n                time_column (str, optional) - Name of the timestamp column\n                source_columns (list[str], optional) - source columns to use\n                    in tooltips\n                color (str, optional) - color of datapoints for this data\n            If any of the last values are omitted, they default to the values\n            supplied as parameters to the function (see below)\n\n        Or\n        DataFrame as a single data set or grouped into individual\n        plot series using the `group_by` parameter\n    time_column : str, optional\n        Name of the timestamp column\n        (the default is \'TimeGenerated\')\n    source_columns : list, optional\n        List of default source columns to use in tooltips\n        (the default is None)\n\n    Other Parameters\n    ----------------\n    title : str, optional\n        Title to display (the default is None)\n    alert : SecurityAlert, optional\n        Add a reference line/label using the alert time (the default is None)\n    ref_event : Any, optional\n        Add a reference line/label using the alert time (the default is None)\n    ref_time : datetime, optional\n        Add a reference line/label using `ref_time` (the default is None)\n    group_by : str\n        (where `data` is a DataFrame)\n        The column to group timelines on\n    legend: str, optional\n        "left", "right", "inline" or "none"\n        (the default is to show a legend when plotting multiple series\n        and not to show one when plotting a single series)\n    yaxis : bool, optional\n        Whether to show the yaxis and labels (default is False)\n    ygrid : bool, optional\n        Whether to show the yaxis grid (default is False)\n    xgrid : bool, optional\n        Whether to show the xaxis grid (default is True)\n    range_tool : bool, optional\n        Show the the range slider tool (default is True)\n    height : int, optional\n        The height of the plot figure\n        (the default is auto-calculated height)\n    width : int, optional\n        The width of the plot figure (the default is 900)\n    color : str\n        Default series color (default is "navy")\n    overlay_color : str\n        Overlay series color (default is "green")\n\n    Returns\n    -------\n    figure\n        The bokeh plot figure.\n\n    '
    overlay_data: pd.DataFrame = kwargs.pop('overlay_data', None)
    overlay_columns: list = kwargs.pop('overlay_columns', source_columns)
    color: str = kwargs.get('color', 'navy')
    overlay_color: str = kwargs.pop('overlay_color', 'green')
    kwargs_sub = kwargs.copy()
    kwargs_sub['time_column'] = time_column
    kwargs_sub['source_columns'] = source_columns
    (kwargs_sub['ref_time'], kwargs_sub['ref_label']) = _get_ref_event_time(**kwargs)
    if isinstance(data, pd.DataFrame):
        if (overlay_data is not None):
            aggr_data = {'Primary': {'data': data, 'time_column': time_column, 'source_columns': source_columns, 'color': color}, 'Secondary': {'data': overlay_data, 'time_column': time_column, 'source_columns': overlay_columns, 'color': overlay_color}}
            return _display_timeline_dict(data=aggr_data, **kwargs_sub)
        series_dict = _create_dict_from_grouping(data=data, source_columns=source_columns, time_column=time_column, group_by=kwargs.get('group_by', None), color=kwargs.get('color', 'navy'))
        return _display_timeline_dict(data=series_dict, **kwargs_sub)
    if isinstance(data, dict):
        return _display_timeline_dict(data, **kwargs_sub)
    return None
Display a timeline of events.

Parameters
----------
data : Union[dict, pd.DataFrame]
    Either
    dict of data sets to plot on the timeline with the following structure::

        Key (str) - Name of data set to be displayed in legend
        Value (Dict[str, Any]) - containing:
            data (pd.DataFrame) - Data to plot
            time_column (str, optional) - Name of the timestamp column
            source_columns (list[str], optional) - source columns to use
                in tooltips
            color (str, optional) - color of datapoints for this data
        If any of the last values are omitted, they default to the values
        supplied as parameters to the function (see below)

    Or
    DataFrame as a single data set or grouped into individual
    plot series using the `group_by` parameter
time_column : str, optional
    Name of the timestamp column
    (the default is 'TimeGenerated')
source_columns : list, optional
    List of default source columns to use in tooltips
    (the default is None)

Other Parameters
----------------
title : str, optional
    Title to display (the default is None)
alert : SecurityAlert, optional
    Add a reference line/label using the alert time (the default is None)
ref_event : Any, optional
    Add a reference line/label using the alert time (the default is None)
ref_time : datetime, optional
    Add a reference line/label using `ref_time` (the default is None)
group_by : str
    (where `data` is a DataFrame)
    The column to group timelines on
legend: str, optional
    "left", "right", "inline" or "none"
    (the default is to show a legend when plotting multiple series
    and not to show one when plotting a single series)
yaxis : bool, optional
    Whether to show the yaxis and labels (default is False)
ygrid : bool, optional
    Whether to show the yaxis grid (default is False)
xgrid : bool, optional
    Whether to show the xaxis grid (default is True)
range_tool : bool, optional
    Show the the range slider tool (default is True)
height : int, optional
    The height of the plot figure
    (the default is auto-calculated height)
width : int, optional
    The width of the plot figure (the default is 900)
color : str
    Default series color (default is "navy")
overlay_color : str
    Overlay series color (default is "green")

Returns
-------
figure
    The bokeh plot figure.
@export
def display_timeline(data: Union[(pd.DataFrame, dict)], time_column: str='TimeGenerated', source_columns: list=None, **kwargs) -> figure:
    '\n    Display a timeline of events.\n\n    Parameters\n    ----------\n    data : Union[dict, pd.DataFrame]\n        Either\n        dict of data sets to plot on the timeline with the following structure::\n\n            Key (str) - Name of data set to be displayed in legend\n            Value (Dict[str, Any]) - containing:\n                data (pd.DataFrame) - Data to plot\n                time_column (str, optional) - Name of the timestamp column\n                source_columns (list[str], optional) - source columns to use\n                    in tooltips\n                color (str, optional) - color of datapoints for this data\n            If any of the last values are omitted, they default to the values\n            supplied as parameters to the function (see below)\n\n        Or\n        DataFrame as a single data set or grouped into individual\n        plot series using the `group_by` parameter\n    time_column : str, optional\n        Name of the timestamp column\n        (the default is \'TimeGenerated\')\n    source_columns : list, optional\n        List of default source columns to use in tooltips\n        (the default is None)\n\n    Other Parameters\n    ----------------\n    title : str, optional\n        Title to display (the default is None)\n    alert : SecurityAlert, optional\n        Add a reference line/label using the alert time (the default is None)\n    ref_event : Any, optional\n        Add a reference line/label using the alert time (the default is None)\n    ref_time : datetime, optional\n        Add a reference line/label using `ref_time` (the default is None)\n    group_by : str\n        (where `data` is a DataFrame)\n        The column to group timelines on\n    legend: str, optional\n        "left", "right", "inline" or "none"\n        (the default is to show a legend when plotting multiple series\n        and not to show one when plotting a single series)\n    yaxis : bool, optional\n        Whether to show the yaxis and labels (default is False)\n    ygrid : bool, optional\n        Whether to show the yaxis grid (default is False)\n    xgrid : bool, optional\n        Whether to show the xaxis grid (default is True)\n    range_tool : bool, optional\n        Show the the range slider tool (default is True)\n    height : int, optional\n        The height of the plot figure\n        (the default is auto-calculated height)\n    width : int, optional\n        The width of the plot figure (the default is 900)\n    color : str\n        Default series color (default is "navy")\n    overlay_color : str\n        Overlay series color (default is "green")\n\n    Returns\n    -------\n    figure\n        The bokeh plot figure.\n\n    '
    overlay_data: pd.DataFrame = kwargs.pop('overlay_data', None)
    overlay_columns: list = kwargs.pop('overlay_columns', source_columns)
    color: str = kwargs.get('color', 'navy')
    overlay_color: str = kwargs.pop('overlay_color', 'green')
    kwargs_sub = kwargs.copy()
    kwargs_sub['time_column'] = time_column
    kwargs_sub['source_columns'] = source_columns
    (kwargs_sub['ref_time'], kwargs_sub['ref_label']) = _get_ref_event_time(**kwargs)
    if isinstance(data, pd.DataFrame):
        if (overlay_data is not None):
            aggr_data = {'Primary': {'data': data, 'time_column': time_column, 'source_columns': source_columns, 'color': color}, 'Secondary': {'data': overlay_data, 'time_column': time_column, 'source_columns': overlay_columns, 'color': overlay_color}}
            return _display_timeline_dict(data=aggr_data, **kwargs_sub)
        series_dict = _create_dict_from_grouping(data=data, source_columns=source_columns, time_column=time_column, group_by=kwargs.get('group_by', None), color=kwargs.get('color', 'navy'))
        return _display_timeline_dict(data=series_dict, **kwargs_sub)
    if isinstance(data, dict):
        return _display_timeline_dict(data, **kwargs_sub)
    return None