U
    /eR                     @  s  d Z ddlmZ ddlZeeZddlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< dd	l=m>Z> dd
l?m@Z@mAZA ddlBmCZC ddlDmEZE ddlFmGZG ddlHmIZImJZJ ddlKmLZL ddlMmNZNmOZO ddlPmQZQmRZR ddlSmTZT dZUdd ZVdd ZWeG dd deOZXeG dd deXZYG dd deZZeG dd  d eXeZZ[G d!d" d"eCZ\G d#d$ d$eXZ]G d%d& d&eXZ^G d'd( d(eYZ_G d)d* d*eXeZZ`G d+d, d,eYZaG d-d. d.e[ZbG d/d0 d0eYeZZcG d1d2 d2eXZdG d3d4 d4eXZeG d5d6 d6eXeZZfG d7d8 d8e[ZgG d9d: d:eXZhG d;d< d<eYZiG d=d> d>eXZjdS )?zN Renderers for various kinds of annotations that can be added to
Bokeh plots

    )annotationsN   )Anchor
AngleUnits	Dimension	FontStyleLegendClickPolicyLegendLocationOrientation
RenderModeSpatialUnits	TextAlignTooltipAttachmentVerticalAlign)HasPropsabstract)AlphaAngle	AngleSpecAutoBoolColorDatetimeDictEitherEnumFloatIncludeInstanceIntListNonNullableNullNullableNullStringSpec
NumberSpecOverridePropertyUnitsSpecSeqString
StringSpecTextLikeTuplefieldvalue)	FillProps	LinePropsScalarFillPropsScalarHatchPropsScalarLinePropsScalarTextProps	TextProps)error)BAD_COLUMN_NAME2NON_MATCHING_DATA_SOURCES_ON_LEGEND_ITEM_RENDERERS)Model)convert_datetime_type   )TickFormatter)LabelingPolicy	NoOverlap)ColorMapper)GlyphRendererRenderer)ColumnDataSource
DataSource)Ticker)
AnnotationArrowBandBoxAnnotationColorBarDataAnnotationLabelLabelSetLegend
LegendItemPolyAnnotationSlopeSpanTextAnnotationTitleTooltipToolbarPanelWhiskerc                  C  s   ddl m}  |  S )Nr;   OpenHead)arrow_headsrX   rW    rZ   </tmp/pip-unpacked-wheel-f5fndrjf/bokeh/models/annotations.py_DEFAULT_ARROWx   s    r\   c                  C  s   ddl m}  | ddS )Nr;   TeeHead
   )size)rY   r^   r]   rZ   rZ   r[   _DEFAULT_TEE}   s    ra   c                   @  s   e Zd ZdZeddZdS )rE   z, Base class for all annotation models.

    
annotationdefaultN)__name__
__module____qualname____doc__r&   levelrZ   rZ   rZ   r[   rE      s   rE   c                   @  s"   e Zd ZdZeedd ddZdS )rJ   z= Base class for annotations that utilize a data source.

    c                   C  s   t  S N)rB   rZ   rZ   rZ   r[   <lambda>       zDataAnnotation.<lambda>zJ
    Local data source to use when rendering annotations on the plot.
    rd   helpN)re   rf   rg   rh   r   rC   sourcerZ   rZ   rZ   r[   rJ      s   rJ   c                   @  s   e Zd ZeedddZdS )_HasRenderModeZcanvasa  
    Specifies whether the contents are rendered to a canvas or as a
    HTML element overlaid on the canvas. The default mode is "canvas".

    .. note::
        This property is deprecated and will be removed in bokeh 3.0.

    .. note::
        The HTML labels won't be present in the output using the "save" tool.

    .. warning::
        Not all visual styling properties are supported if the render_mode is
        set to "css". The border_line_dash property isn't fully supported and
        border_line_dash_offset isn't supported at all. Setting text_alpha will
        modify the opacity of the entire background box and border in addition
        to the text. Finally, clipping Label annotations inside of the plot
        area isn't supported in "css" mode.

    rm   N)re   rf   rg   r   r   Zrender_moderZ   rZ   rZ   r[   rp      s   rp   c                   @  s   e Zd ZdZdS )rR   zG Base class for text annotation models such as labels and titles.

    N)re   rf   rg   rh   rZ   rZ   rZ   r[   rR      s   rR   c                      sx   e Zd ZdZdd fddZeddZeee	ddZ
eed	dZed
ddZeedd Zeedd Z  ZS )rN   z

    None)returnc                   s*   t  j|| t| jtr&t| j| _d S rj   )super__init__
isinstancelabelstrr.   )selfargskwargs	__class__rZ   r[   rt      s    zLegendItem.__init__z
    A label for this legend. Can be a string, or a column of a
    ColumnDataSource. If ``label`` is a field, then it must
    be in the renderers' data_source.
    rn   z
    A list of the glyph renderers to draw in the legend. If ``label`` is a field,
    then all data_sources of renderers must be the same.
    a  
    The column data index to use for drawing the representative items.

    If None (the default), then Bokeh will automatically choose an index to
    use. If the label does not refer to a data column name, this is typically
    the first data point in the data source. Otherwise, if the label does
    refer to a column name, the legend will have "groupby" behavior, and will
    choose and display representative points from every "group" in the column.

    If set to a number, Bokeh will use that number as the index in all cases.
    Tz
    Whether the legend item should be displayed. See
    :ref:`userguide_annotations_legends_item_visibility` in the user guide.
    rm   c                 C  s4   | j r0d| j kr0tdd | jD dkr0t| S d S )Nr-   c                 S  s   h | ]
}|j qS rZ   )data_source).0rrZ   rZ   r[   	<setcomp>   s     z>LegendItem._check_data_sources_on_renderers.<locals>.<setcomp>r;   )rv   len	renderersrw   )rx   rZ   rZ   r[    _check_data_sources_on_renderers   s    z+LegendItem._check_data_sources_on_renderersc                 C  sP   | j rLd| j krLt| jdk r&t| S | jd j}| j d|jkrLt| S d S )Nr-   r;   r   )rv   r   r   rw   r~   getZcolumn_names)rx   ro   rZ   rZ   r[   !_check_field_label_on_data_source   s    z,LegendItem._check_field_label_on_data_source)re   rf   rg   rh   rt   r$   rv   r    r   r@   r   r#   r   indexr   Zvisibler6   r8   r   r7   r   __classcell__rZ   rZ   r{   r[   rN      s   

rN   c                   @  s  e Zd ZdZeeeeeedddZ	ee
dddZeeddZeed	d
dZeddZeddZedddZeedddZeddZeddZeedddZeedddZeedddZeddZ eddZ!eddZ"eddZ#eedd dZ$ed!dZ%eddZ&edd"dZ'ed#d$dZ(ed#d%dZ)ed#d&dZ*ed#d'dZ+ed(d)dZ,ed(d*dZ-ed+d,dZ.e/e0e1d-d2e/eee/e0e3d.d/ Z4d0S )1rM   z Render informational legends for a plot.

    See :ref:`userguide_annotations_legends` for information on plotting legends.

    	top_righta  
    The location where the legend should draw itself. It's either one of
    ``bokeh.core.enums.LegendLocation``'s enumerated values, or a ``(x, y)``
    tuple indicating an absolute location absolute location in screen
    coordinates (pixels from the bottom-left corner).
    rm   Zverticalzi
    Whether the legend entries should be placed vertically or horizontally
    when they are drawn.
    #
    The title text to render.
    r}   title/
    The {prop} values for the title text.
    prefixrn   13pxrc   italic   zI
    The distance (in pixels) to separate the title from the legend.
    borderz3
    The {prop} for the legend border outline.
    z#e5e5e5g      ?
backgroundz5
    The {prop} for the legend background style.
    Zinactivez
    The {prop} for the legend item style when inactive. These control an overlay
    on the item that can be used to obscure it when the corresponding glyph
    is inactive (e.g. by making it semi-transparent).
    nonez@
    Defines what happens when a lengend's item is clicked.
    #ffffffffffff?Zwhitegffffff?rv   z+
    The {prop} for the legend labels.
    ZmiddlezS
    The distance (in pixels) to separate the label from its associated glyph.
       zV
    The minimum height (in pixels) of the area that legend labels should occupy.
    zU
    The minimum width (in pixels) of the area that legend labels should occupy.
    zN
    The height (in pixels) that the rendered legend glyph should occupy.
    zM
    The width (in pixels) that the rendered legend glyph should occupy.
    r_   z-
    Amount of margin around the legend.
    z
    Amount of padding around the contents of the legend. Only applicable when
    border is visible, otherwise collapses to 0.
       z?
    Amount of spacing (in pixels) between legend entries.
    a  
    A list of :class:`~bokeh.model.annotations.LegendItem` instances to be
    rendered in the legend.

    This can be specified explicitly, for instance:

    .. code-block:: python

        legend = Legend(items=[
            LegendItem(label="sin(x)"   , renderers=[r0, r1]),
            LegendItem(label="2*sin(x)" , renderers=[r2]),
            LegendItem(label="3*sin(x)" , renderers=[r3, r4])
        ])

    But as a convenience, can also be given more compactly as a list of tuples:

    .. code-block:: python

        legend = Legend(items=[
            ("sin(x)"   , [r0, r1]),
            ("2*sin(x)" , [r2]),
            ("3*sin(x)" , [r3, r4])
        ])

    where each tuple is of the form: *(label, renderers)*.

    c                 C  s   dd | D S )Nc                 S  s    g | ]}t |d  |d dqS )r   r;   )rv   r   )rN   )r   itemrZ   rZ   r[   
<listcomp>l  s     z#Legend.<lambda>.<locals>.<listcomp>rZ   )itemsrZ   rZ   r[   rk   l  rl   zLegend.<lambda>N)5re   rf   rg   rh   r   r   r	   r,   r   locationr
   orientationr#   r)   r   r   r4   title_propsr&   title_text_font_sizetitle_text_font_styler   title_standoffr3   border_propsborder_line_colorZborder_line_alphar1   background_propsZinactive_propsr   Zclick_policybackground_fill_colorbackground_fill_alphaZinactive_fill_colorZinactive_fill_alphaZlabel_propsZlabel_text_baselineZlabel_text_font_sizelabel_standoffZlabel_heightZlabel_widthZglyph_heightZglyph_widthmarginpaddingspacingr    r   rN   acceptsr@   r   rZ   rZ   rZ   r[   rM      sB   









 rM   c                   @  s  e Zd ZdZeeeeeedddZ	eee
edddZeeeddZeeed	dZed
ddZeeddZeedddZeddZeddZedddZeeeedddZeeeedddZe eeee!i ddZ"ee#dd ddZ$ee%ddZ&edddZ'edddZ(eed d!dZ)ed"dZ*ed#d$dZ+ee,d%d&dZ-ed'dZ.ed#d(dZ/ed)d*dZ0ee,d+d,dZ1ed-dZ2ed)d.dZ3ed)d*dZ4ee,d/d0dZ5ed-dZ6ee,d1d2dZ7ed-dZ8ee9d3d4dZ:ed'dZ;ed5dZ<d-S )6rI   z Render a color bar based on a color mapper.

    See :ref:`userguide_annotations_color_bars` for information on plotting color bars.

    r   a  
    The location where the color bar should draw itself. It's either one of
    ``bokeh.core.enums.Anchor``'s enumerated values, or a ``(x, y)``
    tuple indicating an absolute location absolute location in screen
    coordinates (pixels from the bottom-left corner).

    .. warning::
        If the color bar is placed in a side panel, the location will likely
        have to be set to `(0,0)`.
    rm   autozN
    Whether the color bar should be oriented vertically or horizontally.
    zD
    The height (in pixels) that the color scale should occupy.
    r}   zC
    The width (in pixels) that the color scale should occupy.
          ?z9
    The alpha with which to render the color scale.
    r   r   r   r   r   rc   r   r   zL
    The distance (in pixels) to separate the title from the color bar.
    zE
    A Ticker to use for computing locations of axis components.
    zS
    A ``TickFormatter`` to use for formatting the visual appearance of ticks.
    zm
    Provide explicit tick label values for specific tick locations that
    override normal formatting.
    c                   C  s   t  S rj   )r>   rZ   rZ   rZ   r[   rk     rl   zColorBar.<lambda>zN
    Allows to filter out labels, e.g. declutter labels to avoid overlap.
    a  
    A color mapper containing a color palette to render.

    .. warning::
        If the `low` and `high` attributes of the ``ColorMapper`` aren't set, ticks
        and tick labels won't be rendered. Additionally, if a ``LogTicker`` is
        passed to the `ticker` argument and either or both of the logarithms
        of `low` and `high` values of the color_mapper are non-numeric
        (i.e. `low=0`), the tick and tick labels won't be rendered.
       zK
    Amount of margin (in pixels) around the outside of the color bar.
    r_   zU
    Amount of padding (in pixels) between the color scale and color bar border.
    Zmajor_labelz.
    The {prop} of the major tick labels.
    Z11pxr   zR
    The distance (in pixels) to separate the tick labels from the color bar.
    Z
major_tickz(
    The {prop} of the major ticks.
    r   z^
    The distance (in pixels) that major ticks should extend into the
    main plot area.
    r   z`
    The distance (in pixels) that major ticks should extend out of the
    main plot area.
    Z
minor_tickz(
    The {prop} of the minor ticks.
    Nz^
    The distance (in pixels) that minor ticks should extend into the
    main plot area.
    barz5
    The {prop} for the color scale bar outline.
    r   z6
    The {prop} for the color bar border outline.
    r   z8
    The {prop} for the color bar background style.
    r   )=re   rf   rg   rh   r   r   r   r,   r   r   r
   r   r   r   heightwidthZscale_alphar#   r)   r   r   r4   r   r&   r   r   r   r   rD   Ztickerr<   	formatterr   r+   Zmajor_label_overridesr=   Zmajor_label_policyr?   Zcolor_mapperr   r   Zmajor_label_propsZmajor_label_text_font_sizer   r3   Zmajor_tick_propsZmajor_tick_line_colorZmajor_tick_inZmajor_tick_outZminor_tick_propsZminor_tick_line_colorZminor_tick_inZminor_tick_outZ	bar_propsZbar_line_colorr   r   r1   r   r   r   rZ   rZ   rZ   r[   rI   n  sH   







rI   c                   @  s   e Zd ZdZeedddZeedddZee	dddZ
eed	d
dZeedddZeedddZee	dddZeed	ed
dZeeddZdS )rF   zw Render arrows as an annotation.

    See :ref:`userguide_annotations_arrows` for information on plotting arrows.

    x_startz>
    The x-coordinates to locate the start of the arrows.
    rm   y_startz>
    The y-coordinates to locate the start of the arrows.
    datazq
    The unit type for the start_x and start_y attributes. Interpreted as "data
    space" units by default.
    .models.arrow_heads.ArrowHead$
    Instance of ``ArrowHead``.
    r}   x_endz<
    The x-coordinates to locate the end of the arrows.
    y_endz<
    The y-coordinates to locate the end of the arrows.
    zm
    The unit type for the end_x and end_y attributes. Interpreted as "data
    space" units by default.
    z/
    The {prop} values for the arrow body.
    N)re   rf   rg   rh   r%   r-   r   r   r   r   Zstart_unitsr#   r   startr   r   Z	end_unitsr\   endr   r0   Z
body_propsrZ   rZ   rZ   r[   rF     s   rF   c                   @  s   e Zd ZdZeeee ddZe	e
dddZeeee ddZe	e
dddZeeee d	dZe	e
dd
dZeeee ddZe	e
dddZeeddZeeddZeeddZeddZeddZeddZeddZdS )rH   z Render a shaded rectangular region as an annotation.

    See :ref:`userguide_annotations_box_annotations` for information on plotting box annotations.

    z
    The x-coordinates of the left edge of the box annotation.

    Datetime values are also accepted, but note that they are immediately
    converted to milliseconds-since-epoch.
    r}   r   z[
    The unit type for the left attribute. Interpreted as |data units| by
    default.
    rm   z
    The x-coordinates of the right edge of the box annotation.

    Datetime values are also accepted, but note that they are immediately
    converted to milliseconds-since-epoch.
    z\
    The unit type for the right attribute. Interpreted as |data units| by
    default.
    z
    The y-coordinates of the bottom edge of the box annotation.

    Datetime values are also accepted, but note that they are immediately
    converted to milliseconds-since-epoch.
    z]
    The unit type for the bottom attribute. Interpreted as |data units| by
    default.
    z
    The y-coordinates of the top edge of the box annotation.

    Datetime values are also accepted, but note that they are immediately
    converted to milliseconds-since-epoch.
    zZ
    The unit type for the top attribute. Interpreted as |data units| by
    default.
    z(
    The {prop} values for the box.
    333333?rc   #cccccc皙?#fff9baN)re   rf   rg   rh   r   r"   r   r%   leftr   r   Z
left_unitsrightZright_unitsbottomZbottom_unitstopZ	top_unitsr   r3   
line_propsr1   
fill_propsr2   hatch_propsr&   
line_alpha
line_color
fill_alpha
fill_colorrZ   rZ   rZ   r[   rH   /  s    


rH   c                   @  s   e Zd ZdZeededddZeededddZeededd	dZ	e
ed
ddZeeddZeddZeddZeeddZeddZeddZdS )rG   z Render a filled area band along a dimension.

    See :ref:`userguide_annotations_bands` for information on plotting bands.

    lowerr   zG
    The coordinates of the lower portion of the filled area band.
    rd   Z
units_enumZunits_defaultrn   upperzG
    The coordinates of the upper portion of the filled area band.
    baseC
    The orthogonal coordinates of the upper and lower values.
    r   z
    The direction of the band can be specified by setting this property
    to "height" (``y`` direction) or "width" (``x`` direction).
    rm   z)
    The {prop} values for the band.
    r}   r   rc   r   r   r   N)re   rf   rg   rh   r'   r-   r   r   r   r   r   r   	dimensionr   r3   r   r&   r   r   r1   r   r   r   rZ   rZ   rZ   r[   rG   z  s   


rG   c                   @  s   e Zd ZdZeeddeeZ	e
edddZeeddeeZe
edddZed	d
dZedddZe
edddZedddZedddZeeddZeedddZeddZeedddZeddZ dS )rK   a   Render a single text label as an annotation.

    ``Label`` will render a single text label at given ``x`` and ``y``
    coordinates, which can be in either screen (pixel) space, or data (axis
    range) space.

    The label can also be configured with a screen space offset from ``x`` and
    ``y``, by using the ``x_offset`` and ``y_offset`` properties.

    Additionally, the label can be rotated with the ``angle`` property.

    There are also standard text, fill, and line properties to control the
    appearance of the text, its background, as well as the rectangular bounding
    box border.

    See :ref:`userguide_annotations_labels` for information on plotting labels.

    z
    The x-coordinate in screen coordinates to locate the text anchors.

    Datetime values are also accepted, but note that they are immediately
    converted to milliseconds-since-epoch.
    r}   r   zX
    The unit type for the x attribute. Interpreted as |data units| by
    default.
    rm   z
    The y-coordinate in screen coordinates to locate the text anchors.

    Datetime values are also accepted, but note that they are immediately
    converted to milliseconds-since-epoch.
    zX
    The unit type for the y attribute. Interpreted as |data units| by
    default.
     #
    The text value to render.
    r   zH
    The angle to rotate the text, as measured from the horizontal.
    ZradzA
    Acceptable values for units are ``"rad"`` and ``"deg"``
    z
    Offset value to apply to the x-coordinate.

    This is useful, for instance, if it is desired to "float" text a fixed
    distance in |screen units| from a given data position.
    z
    Offset value to apply to the y-coordinate.

    This is useful, for instance, if it is desired to "float" text a fixed
    distance in |screen units| from a given data position.
    )
    The {prop} values for the text.
    r   6
    The {prop} values for the text bounding box.
    r   Nrc   r   )!re   rf   rg   rh   r!   r   r   r   r:   xr   r   x_unitsyy_unitsr)   textr   angler   Zangle_unitsx_offsety_offsetr   r4   
text_propsr1   r   r&   r   r3   r   r   rZ   rZ   rZ   r[   rK     s*     
rK   c                   @  s   e Zd ZdZeedddZeedddZ	eedddZ
eedd	dZeed
ddZedddZedddZedddZeeddZeedddZeddZeedddZeddZdS )rL   a.   Render multiple text labels as annotations.

    ``LabelSet`` will render multiple text labels at given ``x`` and ``y``
    coordinates, which can be in either screen (pixel) space, or data (axis
    range) space. In this case (as opposed to the single ``Label`` model),
    ``x`` and ``y`` can also be the name of a column from a
    :class:`~bokeh.models.sources.ColumnDataSource`, in which case the labels
    will be "vectorized" using coordinate values from the specified columns.

    The label can also be configured with a screen space offset from ``x`` and
    ``y``, by using the ``x_offset`` and ``y_offset`` properties. These offsets
    may be vectorized by giving the name of a data source column.

    Additionally, the label can be rotated with the ``angle`` property (which
    may also be a column name.)

    There are also standard text, fill, and line properties to control the
    appearance of the text, its background, as well as the rectangular bounding
    box border.

    The data source is provided by setting the ``source`` property.

    r   z7
    The x-coordinates to locate the text anchors.
    rm   r   ]
    The unit type for the ``xs`` attribute. Interpreted as |data units| by
    default.
    r   z7
    The y-coordinates to locate the text anchors.
    ]
    The unit type for the ``ys`` attribute. Interpreted as |data units| by
    default.
    r   z$
    The text values to render.
    r   zI
    The angles to rotate the text, as measured from the horizontal.
    z
    Offset values to apply to the x-coordinates.

    This is useful, for instance, if it is desired to "float" text a fixed
    distance in |screen units| from a given data position.
    z
    Offset values to apply to the y-coordinates.

    This is useful, for instance, if it is desired to "float" text a fixed
    distance in |screen units| from a given data position.
    r   r}   r   r   r   Nrc   r   )re   rf   rg   rh   r%   r-   r   r   r   r   r   r   r*   r   r   r   r   r   r   r5   r   r/   r   r&   r   r0   r   r   rZ   rZ   rZ   r[   rL     s   
rL   c                   @  s   e Zd ZdZeeg ddZeedddZ	eeg ddZ
eedddZeedd	Zeedd	Zeedd	Zed
dZeddZeddZeddZdS )rO   z Render a shaded polygonal region as an annotation.

    See :ref:`userguide_annotations_polygon_annotations` for information on
    plotting polygon annotations.

    z2
    The x-coordinates of the region to draw.
    rm   r   r   z2
    The y-coordinates of the region to draw.
    r   z,
    The {prop} values for the polygon.
    r}   r   rc   r   r   r   N)re   rf   rg   rh   r(   r   xsr   r   Zxs_unitsZysZys_unitsr   r3   r   r1   r   r2   r   r&   r   r   r   r   rZ   rZ   rZ   r[   rO   H  s   


rO   c                   @  s4   e Zd ZdZeeddZeeddZee	ddZ
dS )rP   z} Render a sloped line as an annotation.

    See :ref:`userguide_annotations_slope` for information on plotting slopes.

    z3
    The gradient of the line, in |data units|
    r}   z6
    The y intercept of the line, in |data units|
    z)
    The {prop} values for the line.
    N)re   rf   rg   rh   r#   r   ZgradientZy_interceptr   r3   r   rZ   rZ   rZ   r[   rP   v  s   rP   c                   @  sL   e Zd ZdZeeddeeZ	e
edddZe
edddZeed	dZd
S )rQ   z Render a horizontal or vertical line span.

    See :ref:`userguide_annotations_spans` for information on plotting spans.

    z
    The location of the span, along ``dimension``.

    Datetime values are also accepted, but note that they are immediately
    converted to milliseconds-since-epoch.
    r}   r   ze
    The unit type for the location attribute. Interpreted as "data space"
    units by default.
    rm   r   z
    The direction of the span can be specified by setting this property
    to "height" (``y`` direction) or "width" (``x`` direction).
    z)
    The {prop} values for the span.
    N)re   rf   rg   rh   r#   r   r   r   r:   r   r   r   Zlocation_unitsr   r   r   r3   r   rZ   rZ   rZ   r[   rQ     s    rQ   c                   @  s   e Zd ZdZedddZeedddZee	dddZ
ed	d
dZedddZedddZedddZeddZeedddZedddZeddZeedddZeddZeedddZeddZdS )rS   z Render a single title box as an annotation.

    See :ref:`userguide_annotations_titles` for information on plotting titles.

    r   r   rm   r   z[
    Alignment of the text in its enclosing space, *across* the direction of the text.
    r   zZ
    Alignment of the text in its enclosing space, *along* the direction of the text.
    r   z
    How much additional space should be allocated for the title. The value is provided
    as a number, but should be treated as a percentage of font size. The default is
    100%, which means no additional space will be used.
    r   a+  
    Offset the text by a number of pixels (can be positive or negative). Shifts the text in
    different directions based on the location of the title:

        * above: shifts title right
        * right: shifts title down
        * below: shifts title right
        * left: shifts title up

    r_   z
    Z	helveticaz\
    Name of a font to use for rendering text, e.g., ``'times'``,
    ``'helvetica'``.

    r   rc   Zboldz
    A style to use for rendering text.

    Acceptable values are:

    - ``'normal'`` normal text
    - ``'italic'`` *italic text*
    - ``'bold'`` **bold text**

    z#444444z+
    A color to use to fill text with.
    z2
    An alpha value to use to fill text with.
    r}   r   r   r   Nr   )re   rf   rg   rh   r)   r   r   r   Zvertical_alignr   Zalignr   Ztext_line_heightoffsetZstandoffZ	text_fontZtext_font_sizer   Ztext_font_styler   Z
text_colorr   Z
text_alphar   r1   r   r&   r   r3   r   r   rZ   rZ   rZ   r[   rS     s    


rS   c                   @  s>   e Zd ZdZeddZeeddZe	dddZ
e	dd	dZd
S )rT   z Render a tooltip.

    .. note::
        This model is currently managed by BokehJS and is not useful
        directly from python.

    overlayrc   z
    Whether the tooltip should be displayed to the left or right of the cursor
    position or above or below it, or if it should be automatically placed
    in the horizontal or vertical dimension.
    r}   Tz
    Whether to display outside a central plot frame area.

    .. note:
        This property is deprecated and will be removed in bokeh 3.0.

    rm   z2
    Whether tooltip's arrow should be shown.
    N)re   rf   rg   rh   r&   ri   r   r   
attachmentr   Z
inner_onlyZ
show_arrowrZ   rZ   rZ   r[   rT     s
   
rT   c                   @  s   e Zd ZdZeededddZee	de
ddZeed	edd
dZee	de
ddZeededddZeedddZeeddZeddZdS )rV   z Render a whisker along a dimension.

    See :ref:`userguide_annotations_whiskers` for information on plotting whiskers.

    r   r   z;
    The coordinates of the lower end of the whiskers.
    r   r   r   rm   r   z;
    The coordinates of the upper end of the whiskers.
    r   r   r   z
    The direction of the whisker can be specified by setting this property
    to "height" (``y`` direction) or "width" (``x`` direction).
    z1
    The {prop} values for the whisker body.
    r}   Zunderlayrc   N)re   rf   rg   rh   r'   r-   r   r   r#   r   ra   Z
lower_headr   Z
upper_headr   r   r   r   r   r0   r   r&   ri   rZ   rZ   rZ   r[   rV     s   rV   c                   @  s   e Zd ZedddZdS )rU   z.models.tools.Toolbarz
    A toolbar to display.
    r}   N)re   rf   rg   r   ZtoolbarrZ   rZ   rZ   r[   rU   5  s   rU   )krh   
__future__r   logging	getLoggerre   logZ
core.enumsr   r   r   r   r   r	   r
   r   r   r   r   r   Zcore.has_propsr   r   Zcore.propertiesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Zcore.property_mixinsr/   r0   r1   r2   r3   r4   r5   Zcore.validationr6   Zcore.validation.errorsr7   r8   modelr9   Zutil.serializationr:   
formattersr<   Zlabelingr=   r>   Zmappersr?   r   r@   rA   sourcesrB   rC   ZtickersrD   __all__r\   ra   rE   rJ   rp   rR   rN   rM   rI   rF   rH   rG   rK   rL   rO   rP   rQ   rS   rT   rV   rU   rZ   rZ   rZ   r[   <module>   sX   
8|$		5  -K'VQ.N&