a
    ~bP                     @   s   d dl Zd dlmZ d dlZd dlmZmZm	Z	 d dl
mZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d
dlmZmZ z$d dlmZmZ d dlmZm Z  W n   Y n0 eedu dZ!G dd deZ"dS )    N)skipIf)	NdOverlayHoloMap
DynamicMap)CyclePalette)pd
basestring)Curve)rgb2hex)PointerX)dim   )TestBokehPlotbokeh_renderer)FactorRangeFixedTicker)CallbackPointerXCallbackzPandas not availablec                   @   st  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zedd Zdd Zdd Zedd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dAdB Z$dCdD Z%dEdF Z&dGdH Z'dIdJ Z(dKdL Z)dMdN Z*dOdP Z+dQdR Z,dSdT Z-dUdV Z.dWdX Z/dYS )ZTestCurvePlotc                    s   t  }ttdddtttddgdddd	 t fd
dg |gd}t|}| |j|j | 	t
|j d j|j d S )Nr   legend_limitplotredbluevalues
line_colorstyler   r
   c                    s   t dd tdD  S )Nc                    s(   i | ]   t  fd dtdD qS )c                    s   g | ]} |fqS  r#   .0jir#   Klib/python3.9/site-packages/holoviews/tests/plotting/bokeh/testcurveplot.py
<listcomp>       zpTestCurvePlot.test_batched_curve_subscribers_correctly_attached.<locals>.<lambda>.<locals>.<dictcomp>.<listcomp>   r
   ranger%   r#   r'   r)   
<dictcomp>   s   zeTestCurvePlot.test_batched_curve_subscribers_correctly_attached.<locals>.<lambda>.<locals>.<dictcomp>r,   r   r.   optsxr2   r#   r)   <lambda>   s   zQTestCurvePlot.test_batched_curve_subscribers_correctly_attached.<locals>.<lambda>kdimsZstreams)r   dictr   r   r   get_plotZassertInZrefreshZsubscribersZassertNotInlistsubplotsr   )selfposxoverlayr   r#   r5   r)   1test_batched_curve_subscribers_correctly_attached   s    
z?TestCurvePlot.test_batched_curve_subscribers_correctly_attachedc                    s   t  }ttdddtttddgdddd	 t fd
dg |gd}t|}| ttj	d t
tj	 d }| |t|jd ttf d S )Nr   r   r   r   r   r   r   r    r"   c                    s   t dd tdD  S )Nc                    s(   i | ]   t  fd dtdD qS )c                    s   g | ]} |fqS r#   r#   r$   r'   r#   r)   r*   ,   r+   znTestCurvePlot.test_batched_curve_subscribers_correctly_linked.<locals>.<lambda>.<locals>.<dictcomp>.<listcomp>r,   r-   r/   r#   r'   r)   r0   ,   s   zcTestCurvePlot.test_batched_curve_subscribers_correctly_linked.<locals>.<lambda>.<locals>.<dictcomp>r,   r1   r3   r5   r#   r)   r6   ,   s   zOTestCurvePlot.test_batched_curve_subscribers_correctly_linked.<locals>.<lambda>r7   r   r   )r   r9   r   r   r   r:   assertEquallenr   Z
_callbacksr;   keysidhandlesr   )r=   r>   r?   r   keyr#   r5   r)   /test_batched_curve_subscribers_correctly_linked&   s    
z=TestCurvePlot.test_batched_curve_subscribers_correctly_linkedc                    s   t d}t|d t fddtdD }|d j}t|}t|j |D ]2\}}t	|t
rf|nt|}| |jd j| qPd S )NZSet1colorc                    s(   i | ] }|t  fd dtdD qS )c                    s&   i | ]}|t tjd j dqS )   r    )r
   nprandomrandr2   r$   r5   r#   r)   r0   7   s   zGTestCurvePlot.test_cyclic_palette_curves.<locals>.<dictcomp>.<dictcomp>rJ   )r   r.   r%   r(   r5   r#   r)   r0   7   s   z<TestCurvePlot.test_cyclic_palette_curves.<locals>.<dictcomp>rJ   glyph)r   r9   r   r.   r   r   r:   zipr<   
isinstancer	   r   rA   rE   r   )r=   ZpaletteZhmapcolorsr   ZsubprI   r#   r5   r)   test_cyclic_palette_curves4   s    


z(TestCurvePlot.test_cyclic_palette_curvesc                 C   s|   t t dddt t tddgdddd	}td
d tdD |}t|jd }ddg}| |j	d j
d | d S )Nr   r   r   r   r   r   r   r    r"   c                    s(   i | ]   t  fd dtdD qS )c                    s   g | ]} |fqS r#   r#   r$   r'   r#   r)   r*   C   r+   zTTestCurvePlot.test_batched_curve_line_color_and_color.<locals>.<dictcomp>.<listcomp>r,   r-   r/   r#   r'   r)   r0   C   s   zITestCurvePlot.test_batched_curve_line_color_and_color.<locals>.<dictcomp>r,   r#   sourcer   r9   r   r   r.   r2   r   r:   r<   rA   rE   data)r=   r2   r?   r   r   r#   r#   r)   'test_batched_curve_line_color_and_color@   s    z5TestCurvePlot.test_batched_curve_line_color_and_colorc                 C   s   t t dddt t tddgdddd	}td
d tdD |}t|jd }ddg}ddg}| |j	d j
d | | |j	d j
d | d S )Nr   r   r         ?r   r   alphar    r"   c                    s(   i | ]   t  fd dtdD qS )c                    s   g | ]} |fqS r#   r#   r$   r'   r#   r)   r*   L   r+   zOTestCurvePlot.test_batched_curve_alpha_and_color.<locals>.<dictcomp>.<listcomp>r,   r-   r/   r#   r'   r)   r0   L   s   zDTestCurvePlot.test_batched_curve_alpha_and_color.<locals>.<dictcomp>r,   r#         ?#30a2da#fc4f30rT   rZ   rI   rU   )r=   r2   r?   r   rZ   rI   r#   r#   r)   "test_batched_curve_alpha_and_colorI   s    z0TestCurvePlot.test_batched_curve_alpha_and_colorc                 C   s   t t dddt t tddgdddd	}td
d tdD |}t|jd }ddg}ddg}| |j	d j
d | | |j	d j
d | d S )Nr   r   r   rX   r   r   
line_widthr    r"   c                    s(   i | ]   t  fd dtdD qS )c                    s   g | ]} |fqS r#   r#   r$   r'   r#   r)   r*   W   r+   zTTestCurvePlot.test_batched_curve_line_width_and_color.<locals>.<dictcomp>.<listcomp>r,   r-   r/   r#   r'   r)   r0   W   s   zITestCurvePlot.test_batched_curve_line_width_and_color.<locals>.<dictcomp>r,   r#   r[   r\   r]   rT   r`   rI   rU   )r=   r2   r?   r   r`   rI   r#   r#   r)   'test_batched_curve_line_width_and_colorT   s    z5TestCurvePlot.test_batched_curve_line_width_and_colorc                 C   sR   t dd tdD dgd}dddgii}|j|d	}| j|g d
ddid d S )Nc                 S   s$   i | ]}|t d d tdD qS )c                 S   s"   g | ]}t d d|d |fqS   r   dtdatetimer$   r#   r#   r)   r*   `   r+   zNTestCurvePlot.test_curve_overlay_datetime_hover.<locals>.<dictcomp>.<listcomp>   r-   rN   r#   r#   r)   r0   `   r+   zCTestCurvePlot.test_curve_overlay_datetime_hover.<locals>.<dictcomp>   Testr8   r
   toolshoverr   )ri   z@{Test})r4   z@{x}{%F %T}yz@{y}@{x}rf   )Z
formattersr   r.   r2   Z_test_hover_infor=   objr2   r#   r#   r)   !test_curve_overlay_datetime_hover_   s    z/TestCurvePlot.test_curve_overlay_datetime_hoverc                 C   sP   t dd tdD dgd}ddgidd	id
}|j|d}| |dgd d S )Nc                 S   s    i | ]}|t tjd dqS 
   r,   r
   rK   rL   rM   rN   r#   r#   r)   r0   h   r+   zBTestCurvePlot.test_curve_overlay_hover_batched.<locals>.<dictcomp>rh   ri   rj   rk   rl   r   r   )r
   r   r   rm   prevrq   rr   r#   r#   r)    test_curve_overlay_hover_batchedg   s    z.TestCurvePlot.test_curve_overlay_hover_batchedc                 C   sL   t dd tdD dgd}dddgii}|j|d	}| |g d
d d S )Nc                 S   s    i | ]}|t tjd dqS ru   rw   rN   r#   r#   r)   r0   p   r+   z:TestCurvePlot.test_curve_overlay_hover.<locals>.<dictcomp>rh   ri   rj   r
   rk   rl   r   )rm   )r4   rp   rn   Znearestrq   rr   r#   r#   r)   test_curve_overlay_hovero   s    z&TestCurvePlot.test_curve_overlay_hoverc                 C   sJ   t g dg df}t|}|jd }| |t | |jg d d S )NABCr   r,   rJ   x_range)r
   r   r:   rE   assertIsInstancer   rA   factors)r=   curver   r   r#   r#   r)   test_curve_categorical_xaxisv   s
    

z*TestCurvePlot.test_curve_categorical_xaxisc                 C   sT   t g ddfjtddd}t|}|jd }| |t | |j	g d d S )Nr{   r   T)Zinvert_axesr   y_range)
r
   r2   r9   r   r:   rE   r   r   rA   r   )r=   r   r   r   r#   r#   r)   (test_curve_categorical_xaxis_invert_axes}   s
    

z6TestCurvePlot.test_curve_categorical_xaxis_invert_axesc              
   C   s~   dd t ddD }t|tjdf}t|}| |jd j	t
tddd | |jd jt
tddd d S )Nc              	   S   s    g | ]}t td d|qS rb   rK   
datetime64re   rf   rN   r#   r#   r)   r*      r+   z7TestCurvePlot.test_curve_datetime64.<locals>.<listcomp>r      rv   r   rc   r.   r
   rK   rL   rM   r   r:   rA   rE   startr   re   rf   endr=   datesr   r   r#   r#   r)   test_curve_datetime64   s
    
$z#TestCurvePlot.test_curve_datetime64c              
   C   sz   t jdddd}t|tjdf}t|}| |j	d j
ttddd | |j	d jttddd d S )	Nz
2016-01-01z
2016-01-10DZfreqrv   r   rc   r   )r   
date_ranger
   rK   rL   rM   r   r:   rA   rE   r   r   re   rf   r   r   r#   r#   r)   test_curve_pandas_timestamps   s
    
$z*TestCurvePlot.test_curve_pandas_timestampsc              
   C   s~   dd t ddD }t|tjdf}t|}| |jd j	t
tddd | |jd jt
tddd d S )Nc                 S   s   g | ]}t d d|qS rb   rd   rN   r#   r#   r)   r*      r+   z8TestCurvePlot.test_curve_dt_datetime.<locals>.<listcomp>r   r   rv   r   rc   r   r   r#   r#   r)   test_curve_dt_datetime   s
    
$z$TestCurvePlot.test_curve_dt_datetimec              
   C   s   dd t ddD }dd t ddD }t|tjdf}t|tjdf}t|| }| |jd	 j	t
td
dd | |jd	 jt
td
dd d S )Nc              	   S   s    g | ]}t td d|qS rb   r   rN   r#   r#   r)   r*      r+   zQTestCurvePlot.test_curve_heterogeneous_datetime_types_overlay.<locals>.<listcomp>r   r   c                 S   s   g | ]}t d d|qS rb   rd   rN   r#   r#   r)   r*      r+   r,      rv   r   rc   r   )r=   dates64r   
curve_dt64curve_dtr   r#   r#   r)   /test_curve_heterogeneous_datetime_types_overlay   s    $z=TestCurvePlot.test_curve_heterogeneous_datetime_types_overlayc              
   C   s   t jdddd}dd tddD }d	d td
dD }t|tjdf}t|tjdf}t|tjdf}t|| | }| 	|j
d jttddd | 	|j
d jttddd d S )Nz
2016-01-04z
2016-01-13r   r   c              	   S   s    g | ]}t td d|qS rb   r   rN   r#   r#   r)   r*      r+   zYTestCurvePlot.test_curve_heterogeneous_datetime_types_with_pd_overlay.<locals>.<listcomp>r   r   c                 S   s   g | ]}t d d|qS rb   rd   rN   r#   r#   r)   r*      r+   r,   r   rv   r   rc      )r   r   r.   r
   rK   rL   rM   r   r:   rA   rE   r   r   re   rf   r   )r=   Zdates_pdr   r   r   r   Zcurve_pdr   r#   r#   r)   7test_curve_heterogeneous_datetime_types_with_pd_overlay   s    $zETestCurvePlot.test_curve_heterogeneous_datetime_types_with_pd_overlayc                 C   s@   t tdjtddidd}t|}| |jd jd d S )Nrv   Zxlabel14ptZfontsizer   xaxis	r
   r.   r2   r9   r   r:   rA   rE   Zaxis_label_text_font_sizer=   r   r   r#   r#   r)   test_curve_fontsize_xlabel   s
    
z(TestCurvePlot.test_curve_fontsize_xlabelc                 C   s@   t tdjtddidd}t|}| |jd jd d S )Nrv   Zylabelr   r   r   yaxisr   r   r#   r#   r)   test_curve_fontsize_ylabel   s
    
z(TestCurvePlot.test_curve_fontsize_ylabelc                 C   sT   t tdjtddidd}t|}| |jd jd | |jd jd d S )Nrv   labelsr   r   r   r   r   r   r   r#   r#   r)   test_curve_fontsize_both_labels   s    
z-TestCurvePlot.test_curve_fontsize_both_labelsc                 C   s@   t tdjtddidd}t|}| |jd jd d S )Nrv   xticksr   r   r   r   	r
   r.   r2   r9   r   r:   rA   rE   Zmajor_label_text_font_sizer   r#   r#   r)   test_curve_fontsize_xticks   s
    
z(TestCurvePlot.test_curve_fontsize_xticksc                 C   s@   t tdjtddidd}t|}| |jd jd d S )Nrv   yticksr   r   r   r   r   r   r#   r#   r)   test_curve_fontsize_yticks   s
    
z(TestCurvePlot.test_curve_fontsize_yticksc                 C   sT   t tdjtddidd}t|}| |jd jd | |jd jd d S )Nrv   ticksr   r   r   r   r   r   r   r#   r#   r)   test_curve_fontsize_both_ticks   s    
z,TestCurvePlot.test_curve_fontsize_both_ticksc                 C   sV   t tdjtddddd}t|}| |jd jd | |jd jd d S )	Nrv   Z18ptr   )r   r   r   r   r   r   r   r   r#   r#   r)   )test_curve_fontsize_xticks_and_both_ticks   s     
z7TestCurvePlot.test_curve_fontsize_xticks_and_both_ticksc                 C   s\   t tdjtg ddd}t|j}| |jd j	t
 | |jd j	jg d d S )Nrv   r   rh   rv   r   r   r   )r
   r.   r2   r9   r   r:   stater   r   tickerr   rA   r   r   r#   r#   r)   test_curve_xticks_list   s    z$TestCurvePlot.test_curve_xticks_listc                 C   s^   g d}t tdjt|dd}t|j}| |jd j	t
 | |jd jt| d S )N)r   Zzero)rh   Zfive)rv   Ztenrv   r   r   r   )r
   r.   r2   r9   r   r:   r   r   r   r   r   rA   major_label_overridesr=   r   r   r   r#   r#   r)   &test_curve_xticks_list_of_tuples_xaxis   s
    z4TestCurvePlot.test_curve_xticks_list_of_tuples_xaxisc                 C   s\   t tdjtg ddd}t|j}| |jd j	t
 | |jd j	jg d d S )Nrv   r   r   r   r   )r
   r.   r2   r9   r   r:   r   r   r   r   r   rA   r   r   r#   r#   r)   test_curve_yticks_list   s    z$TestCurvePlot.test_curve_yticks_listc                 C   s^   g d}t tdjt|dd}t|j}| |jd j	t
 | |jd jt| d S )Nr   rv   r   r   r   )r
   r.   r2   r9   r   r:   r   r   r   r   r   rA   r   r   r#   r#   r)   &test_curve_xticks_list_of_tuples_yaxis   s
    z4TestCurvePlot.test_curve_xticks_list_of_tuples_yaxisc                 C   sp   t g djdd}t|}|jd |jd  }}| |jd | |jd | |jd | |jd	 d S )
Nr   皙?paddingr   r   皙ɿ皙@皙?皙	@r
   optionsr   r:   rE   rA   r   r   r=   r   r   r   r   r#   r#   r)   test_curve_padding_square   s    
z'TestCurvePlot.test_curve_padding_squarec                 C   sp   t g djdd}t|}|jd |jd  }}| |jd | |jd | |jd | |jd	 d S )
Nr   ))r   r   )r   g?r   r   r   r   r   r   g333333@r   r   r#   r#   r)   "test_curve_padding_square_per_axis  s    
z0TestCurvePlot.test_curve_padding_square_per_axisc                 C   sz   t g djjddjdd}t|}|jd |jd  }}| |jd | |j	d	 | |jd
 | |j	d d S Nr   r   rJ   r3   r   r   r   r   r   rJ   r   r   )
r
   redimr.   r   r   r:   rE   rA   r   r   r   r#   r#   r)   test_curve_padding_hard_xrange  s    
z,TestCurvePlot.test_curve_padding_hard_xrangec                 C   sz   t g djjddjdd}t|}|jd |jd  }}| |jd | |j	d	 | |jd
 | |j	d d S r   )
r
   r   Z
soft_ranger   r   r:   rE   rA   r   r   r   r#   r#   r)   test_curve_padding_soft_xrange  s    
z,TestCurvePlot.test_curve_padding_soft_xrangec                 C   sp   t g djdd}t|}|jd |jd  }}| |jd | |jd | |jd | |jd	 d S )
Nr   )g?r   r   r   r   皙 @r   r   r   r   r#   r#   r)   test_curve_padding_unequal  s    
z(TestCurvePlot.test_curve_padding_unequalc                 C   sr   t g djddd}t|}|jd |jd  }}| |jd | |jd | |jd	 | |jd
 d S )Nr   r   X  r   widthr   r   r   r   r   r   r   r   r#   r#   r)   test_curve_padding_nonsquare&  s    
z*TestCurvePlot.test_curve_padding_nonsquarec                 C   sr   t g djddd}t|}|jd |jd  }}| |jd | |jd | |jd	 | |jd
 d S )N))r   r   )r,   r,   )rJ   rJ   r   T)r   Zlogxr   r   9r?u
@r   r   r   r   r#   r#   r)   test_curve_padding_logx/  s    
z%TestCurvePlot.test_curve_padding_logxc                 C   sr   t g djddd}t|}|jd |jd  }}| |jd | |jd | |jd	 | |jd
 d S )Nr   r   T)r   Zlogyr   r   r   r   r   r   r   r   r#   r#   r)   test_curve_padding_logy8  s    
z%TestCurvePlot.test_curve_padding_logyc                 C   s   t dd tddD jdd}t|}|jd |jd  }}| |jt	d	 | |j
t	d
 | |jd | |j
d d S )Nc                 S   s   g | ]}t d | |fqS z2016-04-0%drK   r   rN   r#   r#   r)   r*   B  r+   zDTestCurvePlot.test_curve_padding_datetime_square.<locals>.<listcomp>r      r   r   r   r   z2016-03-31T19:12:00.000000000z2016-04-03T04:48:00.000000000r   r   r
   r.   r   r   r:   rE   rA   r   rK   r   r   r   r#   r#   r)   "test_curve_padding_datetime_squareA  s    
z0TestCurvePlot.test_curve_padding_datetime_squarec                 C   s   t dd tddD jddd}t|}|jd |jd	  }}| |jt	d
 | |j
t	d | |jd | |j
d d S )Nc                 S   s   g | ]}t d | |fqS r   r   rN   r#   r#   r)   r*   M  r+   zGTestCurvePlot.test_curve_padding_datetime_nonsquare.<locals>.<listcomp>r   r   r   r   r   r   r   z2016-03-31T21:36:00.000000000z2016-04-03T02:24:00.000000000r   r   r   r   r#   r#   r)   %test_curve_padding_datetime_nonsquareL  s    
z3TestCurvePlot.test_curve_padding_datetime_nonsquarec                 C   sB   t g dddgdjdd}t|}|jd }| |jd d S )N)r   r   r   )r   r   r   r   r,   r   ro   rI   vdimsrH   rO   r   )r
   r   r   r:   rE   rA   r   )r=   r   r   rO   r#   r#   r)   test_curve_scalar_color_op[  s    

z(TestCurvePlot.test_curve_scalar_color_opc                 C   s   ddg}t dd t|D djddd}t|}t|j |D ]:\}}t|j	|j
 }||ji i |}| |d | qDd S )Nr   r   c                 S   s    i | ]\}}|t t|qS r#   )r
   rK   Zarange)r%   r(   rI   r#   r#   r)   r0   d  s   z?TestCurvePlot.test_op_ndoverlay_color_value.<locals>.<dictcomp>rI   r
   rH   )r   	enumerater   r   r:   rP   r<   r   r9   r!   Zcyclic_indexZ_apply_transformsZcurrent_framerA   )r=   rR   r?   r   ZsubplotrI   r!   r#   r#   r)   test_op_ndoverlay_color_valueb  s    
z+TestCurvePlot.test_op_ndoverlay_color_valuec                 C   sT   t g dddgdjdd}| t t| W d    n1 sF0    Y  d S )N)r   )r   r   r   r   ro   rI   r   rH   r
   r   ZassertRaises	Exceptionr   r:   r=   r   r#   r#   r)   test_curve_color_opm  s    z!TestCurvePlot.test_curve_color_opc                 C   sT   t g dddgdjdd}| t t| W d    n1 sF0    Y  d S )N)r   r   r   )r   r   g333333?)r   r,   r   ro   rZ   r   rY   r   r   r#   r#   r)   test_curve_alpha_ops  s    z!TestCurvePlot.test_curve_alpha_opc                 C   sT   t g dddgdjdd}| t t| W d    n1 sF0    Y  d S )Nr   ro   Z	linewidthr   r_   r   r   r#   r#   r)   test_curve_line_width_opy  s    z&TestCurvePlot.test_curve_line_width_opc           	   
   C   s   t tg dtg dtg dtg ddddgdttdd	d
dtdddddi}t|}|j	 D ]h\\}}}|j
d }|j}|dkr| |d	 n| |d
 |j}|dkr| |g  q~| |dg q~d S )N)r   r,   r   )r   r,   r   )r   r,   r,   r   ))r   r|   )r   r}   )r   r|   )r   r}   numcatr
   r   r   r   r   soliddashedr|   r}   rI   	line_dashrO   r   r|      )r   r
   r2   r9   r   
categorizer   r:   r<   itemsrE   r   rA   r   )	r=   	ndoverlayr   r   r   sprO   rI   	linestyler#   r#   r)   -test_curve_style_mapping_ndoverlay_dimensions  s.    


z;TestCurvePlot.test_curve_style_mapping_ndoverlay_dimensionsc           	   
   C   s  g d}t tddg|dtddg|dtddg|dtd	d
g|dddttddddtdddddi}t|}|j	 D ]x\}}|j
d }|j}|| jd dkr| |d n| |d |j}|| jd dkr| |g  q| |dg qd S )N)ro   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   r   r   r}   )r   rJ   r   r}   )r   r   r,   rJ   r
   r   r   r   r   r   r   r   r   r   rO   )r   r,   r   r   r|   r   )r   r
   r2   r9   r   r   r   r:   r<   r   rE   r   ZilocrA   r   )	r=   r   r   r   kr   rO   rI   r   r#   r#   r)   2test_curve_style_mapping_constant_value_dimensions  s0    

z@TestCurvePlot.test_curve_style_mapping_constant_value_dimensionsN)0__name__
__module____qualname__r@   rG   rS   rW   r^   ra   rt   ry   rz   r   r   r   pd_skipr   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   r   r   r   r#   r#   r#   r)   r      s\   	
	
								r   )#rf   re   Zunittestr   ZnumpyrK   Zholoviews.corer   r   r   Zholoviews.core.optionsr   r   Zholoviews.core.utilr   r	   Zholoviews.elementr
   Zholoviews.plotting.utilr   Zholoviews.streamsr   Zholoviews.util.transformr   Ztestplotr   r   Zbokeh.modelsr   r   Z"holoviews.plotting.bokeh.callbacksr   r   r   r   r#   r#   r#   r)   <module>   s"   