
    eO                         d dl Zd dlZd dlZd dlZd dlmZm	Z	 d dl
mZmZmZ d dlmZmZmZ d dl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mZ  G d de          Z dS )    N)FactorRangeFixedTicker)
DynamicMapHoloMap	NdOverlay)AbbreviatedExceptionCyclePalette)Curve)CallbackPointerXCallback)rgb2hex)PointerX)dim   )TestBokehPlotbokeh_rendererc                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d-S ).TestCurvePlotc                    t                      }t          d          t          t          ddg                    dt          fdg |g	          }t	          j        |          }|                     |j        |j                   | 	                    t          t          |j                                                            j        |j                   d S )
Nr   legend_limitredbluevalues
line_colorr   r   c                 v    t          d t          d          D                                                     S )Nc           	      b    i | ]+t          fd t          d          D                       ,S )c                     g | ]}|fS  r#   .0jis     Mlib/python3.11/site-packages/holoviews/tests/plotting/bokeh/test_curveplot.py
<listcomp>zpTestCurvePlot.test_batched_curve_subscribers_correctly_attached.<locals>.<lambda>.<locals>.<dictcomp>.<listcomp>       ;U;U;UqQF;U;U;U       r   ranger%   r'   s    @r(   
<dictcomp>zeTestCurvePlot.test_batched_curve_subscribers_correctly_attached.<locals>.<lambda>.<locals>.<dictcomp>   U     2E 2E 2E67 34U;U;U;U;UERSHH;U;U;U5V5V 2E 2E 2Er+   r,   r   r.   optsxr3   s    r(   <lambda>zQTestCurvePlot.test_batched_curve_subscribers_correctly_attached.<locals>.<lambda>   H    y 2E 2E;@882E 2E 2E (F (FFJd4jj r+   kdimsstreams)r   dictr	   r   r   get_plotassertInrefreshsubscribersassertNotInnextitersubplotsr   )selfposxoverlayplotr3   s       @r(   1test_batched_curve_subscribers_correctly_attachedz?TestCurvePlot.test_batched_curve_subscribers_correctly_attached   s    zz!q111ufo)F)F)FGGGI I Q Q Q QXZ&*V- - - &w//dlD$4555d4=#7#7#9#9::;;CTEUVVVVVr+   c                 (   t                      }t          d          t          t          ddg                    dt          fdg |g	          }t	          j        |          }|                     t          t          j	                  d
           t          t          t          j	                                                            }|                     |t          |j        d                   t          t                    f           d S )Nr   r   r   r   r   r   r   c                 v    t          d t          d          D                                                     S )Nc           	      b    i | ]+t          fd t          d          D                       ,S )c                     g | ]}|fS r#   r#   r$   s     r(   r)   znTestCurvePlot.test_batched_curve_subscribers_correctly_linked.<locals>.<lambda>.<locals>.<dictcomp>.<listcomp>&   r*   r+   r,   r-   r/   s    @r(   r0   zcTestCurvePlot.test_batched_curve_subscribers_correctly_linked.<locals>.<lambda>.<locals>.<dictcomp>&   r1   r+   r,   r2   r4   s    r(   r6   zOTestCurvePlot.test_batched_curve_subscribers_correctly_linked.<locals>.<lambda>&   r7   r+   r8   r   rG   )r   r;   r	   r   r   r<   assertEquallenr   
_callbacksrA   rB   keysidhandlesr   )rD   rE   rF   rG   keyr3   s        @r(   /test_batched_curve_subscribers_correctly_linkedz=TestCurvePlot.test_batched_curve_subscribers_correctly_linked    s    zz!q111ufo)F)F)FGGGI I Q Q Q QXZ&*V- - - &w//X01115554+00223344r$,v"677<L9M9MNOOOOOr+   c                    t          d          t          fdt          d          D                       }d         j        }t	          j        |          }t          |j                                        |          D ]Q\  }}t          |t                    r|nt          |          }|                     |j        d         j        |           Rd S )NSet1c           	      b    i | ]+}|t          fd t          d          D                       ,S )c                     i | ]C}|t          t          j                            d                                                   DS )   color)r   nprandomrandr3   )r%   r&   palettes     r(   r0   zGTestCurvePlot.test_cyclic_palette_curves.<locals>.<dictcomp>.<dictcomp>0   sR     &9 &9 &9*+ '(ry~~a/@/@)A)A)F)FW)F)U)U &9 &9 &9r+   rY   )r   r.   )r%   r'   r_   s     r(   r0   z<TestCurvePlot.test_cyclic_palette_curves.<locals>.<dictcomp>0   sa     + + + 9 &9 &9 &9 &9/4Qxx&9 &9 &9 : : + + +r+   rY   glyph)r
   r   r.   r   r   r<   ziprC   
isinstancestrr   rM   rR   r   )rD   hmapcolorsrG   subpr[   r_   s         @r(   test_cyclic_palette_curvesz(TestCurvePlot.test_cyclic_palette_curves.   s    &// + + + +!&q+ + + , , "&t,,t}3355v>> 	F 	FKD%'s33GEEET\'2=uEEEE	F 	Fr+   c                 x   t          d          t          t          ddg                    d}t          d t          d	          D                                           |          }t          j        |          j        d
         }ddg}|                     |j	        d         j
        d         |           d S )Nr   r   r   r   r   r   r   c           	      b    i | ]+t          fd t          d          D                       ,S )c                     g | ]}|fS r#   r#   r$   s     r(   r)   zTTestCurvePlot.test_batched_curve_line_color_and_color.<locals>.<dictcomp>.<listcomp><       &@&@&@!1v&@&@&@r+   r,   r-   r/   s    @r(   r0   zITestCurvePlot.test_batched_curve_line_color_and_color.<locals>.<dictcomp><   N     0 0 0!" &@&@&@&@uQxx&@&@&@ A A 0 0 0r+   r,   r#   sourcer   r;   r	   r   r.   r3   r   r<   rC   rM   rR   data)rD   r3   rF   rG   r   s        r(   'test_batched_curve_line_color_and_colorz5TestCurvePlot.test_batched_curve_line_color_and_color9   s    !q111ufo)F)F)FGGGI I 0 0&+Ahh0 0 0 1 115d 	&w//8<V_
h/4\BJOOOOOr+   c                    t          d          t          t          ddg                    d}t          d t          d	          D                                           |          }t          j        |          j        d
         }ddg}ddg}|                     |j	        d         j
        d         |           |                     |j	        d         j
        d         |           d S )Nr   r         ?r   r   alphar   c           	      b    i | ]+t          fd t          d          D                       ,S )c                     g | ]}|fS r#   r#   r$   s     r(   r)   zOTestCurvePlot.test_batched_curve_alpha_and_color.<locals>.<dictcomp>.<listcomp>E   rk   r+   r,   r-   r/   s    @r(   r0   zDTestCurvePlot.test_batched_curve_alpha_and_color.<locals>.<dictcomp>E   rl   r+   r,   r#         ?#30a2da#fc4f30rm   rt   r[   rn   )rD   r3   rF   rG   rt   r[   s         r(   "test_batched_curve_alpha_and_colorz0TestCurvePlot.test_batched_curve_alpha_and_colorB   s    !q111E#q$:$:$:;;;= = 0 0&+Ahh0 0 0 1 115d 	&w//8<b	I&h/4W=uEEEh/4W=uEEEEEr+   c                    t          d          t          t          ddg                    d}t          d t          d	          D                                           |          }t          j        |          j        d
         }ddg}ddg}|                     |j	        d         j
        d         |           |                     |j	        d         j
        d         |           d S )Nr   r   rr   r   r   
line_widthr   c           	      b    i | ]+t          fd t          d          D                       ,S )c                     g | ]}|fS r#   r#   r$   s     r(   r)   zTTestCurvePlot.test_batched_curve_line_width_and_color.<locals>.<dictcomp>.<listcomp>P   rk   r+   r,   r-   r/   s    @r(   r0   zITestCurvePlot.test_batched_curve_line_width_and_color.<locals>.<dictcomp>P   rl   r+   r,   r#   rw   rx   ry   rm   r}   r[   rn   )rD   r3   rF   rG   r}   r[   s         r(   'test_batched_curve_line_width_and_colorz5TestCurvePlot.test_batched_curve_line_width_and_colorM   s    !q111sAh)?)?)?@@@B B 0 0&+Ahh0 0 0 1 115d 	&w//8<2Y
I&h/4\BJOOOh/4W=uEEEEEr+   c                     t          d t          d          D             dg          }dddgii}|                    |          }|                     |g dd	d
i           d S )Nc           	      \    i | ])}|t          d  t          d          D                       *S )c                 D    g | ]}t          j        d d|dz             |fS   r   dtdatetime)r%   r&   s     r(   r)   zNTestCurvePlot.test_curve_overlay_datetime_hover.<locals>.<dictcomp>.<listcomp>Y   s/    "U"U"UaBKa1$=$=q#A"U"U"Ur+      r-   r/   s     r(   r0   zCTestCurvePlot.test_curve_overlay_datetime_hover.<locals>.<dictcomp>Y   s9    iii[\E"U"U5QS99"U"U"UVViiir+      Testr9   r   toolshover)r   z@{Test})r5   z@{x}{%F %T}yz@{y}@{x}r   )
formattersr   r.   r3   _test_hover_inforD   objr3   s      r(   !test_curve_overlay_datetime_hoverz/TestCurvePlot.test_curve_overlay_datetime_hoverX   s    ii`efg`h`hiii%h( ( ('G9-.hhtnnc#]#]#]*0*)= 	 	? 	? 	? 	? 	?r+   c                     t          d t          d          D             dg          }ddgiddid	}|                    |          }|                     |d
gd           d S )Nc           	      j    i | ]0}|t          t          j                            d d                    1S 
   r,   r   r\   r]   r^   r/   s     r(   r0   zBTestCurvePlot.test_curve_overlay_hover_batched.<locals>.<dictcomp>a   2    JJJAE")..A"6"677JJJr+   r   r   r   r   r   r   r   )r   r   r   prevr   r   s      r(    test_curve_overlay_hover_batchedz.TestCurvePlot.test_curve_overlay_hover_batched`   s    JJqJJJ%h( ( (!G9-,a02 2hhtnnc$7#8&AAAAAr+   c                     t          d t          d          D             dg          }dddgii}|                    |          }|                     |g dd	           d S )
Nc           	      j    i | ]0}|t          t          j                            d d                    1S r   r   r/   s     r(   r0   z:TestCurvePlot.test_curve_overlay_hover.<locals>.<dictcomp>i   r   r+   r   r   r   r   r   r   )r   )r5   r   r   nearestr   r   s      r(   test_curve_overlay_hoverz&TestCurvePlot.test_curve_overlay_hoverh   sx    JJqJJJ%h( ( ('G9-.hhtnnc#V#V#VXabbbbbr+   c                     t          g dg df          }t          j        |          }|j        d         }|                     |t
                     |                     |j        g d           d S )NABCr   r,   rY   x_range)r   r   r<   rR   assertIsInstancer   rM   factors)rD   curverG   r   s       r(   test_curve_categorical_xaxisz*TestCurvePlot.test_curve_categorical_xaxiso   sp    011&u--,y)g{333///:::::r+   c                    t          g ddf                              d          }t          j        |          }|j        d         }|                     |t                     |                     |j        g d           d S )Nr   r   T)invert_axesy_range)	r   r3   r   r<   rR   r   r   rM   r   )rD   r   rG   r   s       r(   (test_curve_categorical_xaxis_invert_axesz6TestCurvePlot.test_curve_categorical_xaxis_invert_axesv   s}    0116646HH&u--,y)g{333///:::::r+   c           
         d t          dd          D             }t          |t          j                            d          f          }t          j        |          }|                     |j        d         j	        t          j
        t          j        ddd                               |                     |j        d         j        t          j
        t          j        ddd                               d S )Nc           	      ^    g | ]*}t          j        t          j        d d|                    +S r   r\   
datetime64r   r   r/   s     r(   r)   z7TestCurvePlot.test_curve_datetime64.<locals>.<listcomp>~   s0    LLL!r{4!4455LLLr+   r      r   r   r   r.   r   r\   r]   r^   r   r<   rM   rR   startr   r   r   endrD   datesr   rG   s       r(   test_curve_datetime64z#TestCurvePlot.test_curve_datetime64}   s    LLuQ||LLLubinnR00122&u--i06bkRVXY[\F]F]8^8^___i04bmBKPTVWY[D\D\6]6]^^^^^r+   c           
         t          j        ddd          }t          |t          j                            d          f          }t          j        |          }|                     |j	        d         j
        t          j        t          j        ddd                               |                     |j	        d         j        t          j        t          j        ddd                               d S )	Nz
2016-01-01z
2016-01-10Dfreqr   r   r   r   )pd
date_ranger   r\   r]   r^   r   r<   rM   rR   r   r   r   r   r   r   s       r(   test_curve_pandas_timestampsz*TestCurvePlot.test_curve_pandas_timestamps   s    lLsCCCubinnR00122&u--i06bkRVXY[\F]F]8^8^___i04bmBKPTVWY[D\D\6]6]^^^^^r+   c           
         d t          dd          D             }t          |t          j                            d          f          }t          j        |          }|                     |j        d         j	        t          j
        t          j        ddd                               |                     |j        d         j        t          j
        t          j        ddd                               d S )Nc                 :    g | ]}t          j        d d|          S r   r   r/   s     r(   r)   z8TestCurvePlot.test_curve_dt_datetime.<locals>.<listcomp>   &    ===1T!A&&===r+   r   r   r   r   r   r   r   s       r(   test_curve_dt_datetimez$TestCurvePlot.test_curve_dt_datetime   s    ==a===ubinnR00122&u--i06bkRVXY[\F]F]8^8^___i04bmBKPTVWY[D\D\6]6]^^^^^r+   c           
         d t          dd          D             }d t          dd          D             }t          |t          j                            d          f          }t          |t          j                            d          f          }t          j        ||z            }|                     |j        d         j	        t          j
        t          j        d	dd                               |                     |j        d         j        t          j
        t          j        d	dd                               d S )
Nc           	      ^    g | ]*}t          j        t          j        d d|                    +S r   r   r/   s     r(   r)   zQTestCurvePlot.test_curve_heterogeneous_datetime_types_overlay.<locals>.<listcomp>   0    NNNA2=T!A!6!677NNNr+   r   r   c                 :    g | ]}t          j        d d|          S r   r   r/   s     r(   r)   zQTestCurvePlot.test_curve_heterogeneous_datetime_types_overlay.<locals>.<listcomp>   r   r+   r,      r   r   r   r   )rD   dates64r   
curve_dt64curve_dtrG   s         r(   /test_curve_heterogeneous_datetime_types_overlayz=TestCurvePlot.test_curve_heterogeneous_datetime_types_overlay   s	   NNq"NNN==a===GRY^^B%7%7899
%!3!3455&x
':;;i06bkRVXY[\F]F]8^8^___i04bmBKPTVWY[D\D\6]6]^^^^^r+   c           
         t          j        ddd          }d t          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        ||z  |z            }| 	                    |j
        d         j        t	          j        t          j        ddd                               | 	                    |j
        d         j        t	          j        t          j        ddd                               d S )Nz
2016-01-04z
2016-01-13r   r   c           	      ^    g | ]*}t          j        t          j        d d|                    +S r   r   r/   s     r(   r)   zYTestCurvePlot.test_curve_heterogeneous_datetime_types_with_pd_overlay.<locals>.<listcomp>   r   r+   r   r   c                 :    g | ]}t          j        d d|          S r   r   r/   s     r(   r)   zYTestCurvePlot.test_curve_heterogeneous_datetime_types_with_pd_overlay.<locals>.<listcomp>   r   r+   r,   r   r   r   r      )r   r   r.   r   r\   r]   r^   r   r<   rM   rR   r   r   r   r   r   )rD   dates_pdr   r   r   r   curve_pdrG   s           r(   7test_curve_heterogeneous_datetime_types_with_pd_overlayzETestCurvePlot.test_curve_heterogeneous_datetime_types_with_pd_overlay   sD   =|#FFFNNq"NNN==a===GRY^^B%7%7899
%!3!3455(BINN2$6$6788&x
':8'CDDi06bkRVXY[\F]F]8^8^___i04bmBKPTVWY[D\D\6]6]^^^^^r+   c                     t          t          d                                        ddi          }t          j        |          }|                     |j        d         j        d           d S )Nr   xlabel14ptfontsizexaxisr   r.   r3   r   r<   rM   rR   axis_label_text_font_sizerD   r   rG   s      r(   test_curve_fontsize_xlabelz(TestCurvePlot.test_curve_fontsize_xlabel   l    eBii  %%&/A%BB&u--g.H	! 	! 	! 	! 	!r+   c                     t          t          d                                        ddi          }t          j        |          }|                     |j        d         j        d           d S )Nr   ylabelr   r   yaxisr   r   s      r(   test_curve_fontsize_ylabelz(TestCurvePlot.test_curve_fontsize_ylabel   r   r+   c                 *   t          t          d                                        ddi          }t          j        |          }|                     |j        d         j        d           |                     |j        d         j        d           d S )Nr   labelsr   r   r   r   r   r   s      r(   test_curve_fontsize_both_labelsz-TestCurvePlot.test_curve_fontsize_both_labels   s    eBii  %%&/A%BB&u--g.H	! 	! 	!g.H	! 	! 	! 	! 	!r+   c                     t          t          d                                        ddi          }t          j        |          }|                     |j        d         j        d           d S )Nr   xticksr   r   r   r   r.   r3   r   r<   rM   rR   major_label_text_font_sizer   s      r(   test_curve_fontsize_xticksz(TestCurvePlot.test_curve_fontsize_xticks   l    eBii  %%&/A%BB&u--g.I	! 	! 	! 	! 	!r+   c                     t          t          d                                        ddi          }t          j        |          }|                     |j        d         j        d           d S )Nr   yticksr   r   r   r   r   s      r(   test_curve_fontsize_yticksz(TestCurvePlot.test_curve_fontsize_yticks   r   r+   c                 *   t          t          d                                        ddi          }t          j        |          }|                     |j        d         j        d           |                     |j        d         j        d           d S )Nr   ticksr   r   r   r   r   r   s      r(   test_curve_fontsize_both_ticksz,TestCurvePlot.test_curve_fontsize_both_ticks   s    eBii  %%/@%AA&u--g.I	! 	! 	!g.I	! 	! 	! 	! 	!r+   c                 ,   t          t          d                                        ddd          }t          j        |          }|                     |j        d         j        d           |                     |j        d         j        d           d S )Nr   18ptr   )r   r   r   r   r   r   r   s      r(   )test_curve_fontsize_xticks_and_both_ticksz7TestCurvePlot.test_curve_fontsize_xticks_and_both_ticks   s    eBii  %%&6/R/R%SS&u--g.I	! 	! 	!g.I	! 	! 	! 	! 	!r+   c                 L   t          t          d                                        g d          }t          j        |          j        }|                     |j        d         j        t                     | 
                    |j        d         j        j        g d           d S )Nr   r   r   r   r   r   )r   r.   r3   r   r<   stater   r   tickerr   rM   r   r   s      r(   test_curve_xticks_listz$TestCurvePlot.test_curve_xticks_list       eBii  %%ZZZ%88&u--3djm2K@@@A-3ZZZ@@@@@r+   c                 \   g d}t          t          d                                        |          }t          j        |          j        }|                     |j        d         j        t                     | 
                    |j        d         j        t          |                     d S )N)r   zero)r   five)r   tenr   r   r   )r   r.   r3   r   r<   r   r   r   r   r   rM   major_label_overridesr;   rD   r   r   rG   s       r(   &test_curve_xticks_list_of_tuples_xaxisz4TestCurvePlot.test_curve_xticks_list_of_tuples_xaxis       777eBii  %%U%33&u--3djm2K@@@A<d5kkJJJJJr+   c                 L   t          t          d                                        g d          }t          j        |          j        }|                     |j        d         j        t                     | 
                    |j        d         j        j        g d           d S )Nr   r   r   r   )r   r.   r3   r   r<   r   r   r   r   r   rM   r   r   s      r(   test_curve_yticks_listz$TestCurvePlot.test_curve_yticks_list   r  r+   c                 \   g d}t          t          d                                        |          }t          j        |          j        }|                     |j        d         j        t                     | 
                    |j        d         j        t          |                     d S )Nr  r   r  r   )r   r.   r3   r   r<   r   r   r   r   r   rM   r  r;   r  s       r(   &test_curve_xticks_list_of_tuples_yaxisz4TestCurvePlot.test_curve_xticks_list_of_tuples_yaxis   r
  r+   c                    t          g d                              d          }t          j        |          }|j        d         |j        d         }}|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d	           d S )
Nr   皙?paddingr   r   皙ɿ皙@皙?皙	@r   r3   r   r<   rR   rM   r   r   rD   r   rG   r   r   s        r(   test_curve_padding_squarez'TestCurvePlot.test_curve_padding_square   s    iii  %%c%22&u--<	2DL4K---c***,,,c*****r+   c                    t          g d                              d          }t          j        |          }|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  s        r(   "test_curve_padding_square_per_axisz0TestCurvePlot.test_curve_padding_square_per_axis   s    iii  %%.D%EE&u--<	2DL4K***c***,,,c*****r+   c                    t          g d          j                            d                              d          }t	          j        |          }|j        d         |j        d         }}|                     |j        d           |                     |j	        d	           |                     |j        d
           |                     |j	        d           d S Nr   r   rY   )r5   r  r  r   r   r   rY   r  r  )
r   redimr.   r3   r   r<   rR   rM   r   r   r  s        r(   test_curve_padding_hard_xrangez,TestCurvePlot.test_curve_padding_hard_xrange  s    iii  &,,v,66;;C;HH&u--<	2DL4K***a(((,,,c*****r+   c                    t          g d          j                            d                              d          }t	          j        |          }|j        d         |j        d         }}|                     |j        d           |                     |j	        d	           |                     |j        d
           |                     |j	        d           d S r  )
r   r   
soft_ranger3   r   r<   rR   rM   r   r   r  s        r(   test_curve_padding_soft_xrangez,TestCurvePlot.test_curve_padding_soft_xrange  s    iii  &11F1;;@@@MM&u--<	2DL4K***a(((,,,c*****r+   c                    t          g d                              d          }t          j        |          }|j        d         |j        d         }}|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d	           d S )
Nr   )g?r  r  r   r   皙 @r  r  r  r  s        r(   test_curve_padding_unequalz(TestCurvePlot.test_curve_padding_unequal  s    iii  %%k%::&u--<	2DL4K---c***,,,c*****r+   c                    t          g d                              dd          }t          j        |          }|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  s        r(   test_curve_padding_nonsquarez*TestCurvePlot.test_curve_padding_nonsquare  s    iii  %%c%==&u--<	2DL4K---c***,,,c*****r+   c                    t          g d                              dd          }t          j        |          }|j        d         |j        d         }}|                     |j        d           |                     |j        d           |                     |j        d	           |                     |j        d
           d S )N))r   r   )r,   r,   )rY   rY   r  T)r  logxr   r   9r?u
@r  r  r  r  s        r(   test_curve_padding_logxz%TestCurvePlot.test_curve_padding_logx&  s    ---..33Cd3KK&u--<	2DL4K(;<<<&8999,,,c*****r+   c                    t          g d                              dd          }t          j        |          }|j        d         |j        d         }}|                     |j        d           |                     |j        d           |                     |j        d	           |                     |j        d
           d S )Nr   r  T)r  logyr   r   r  r  r0  r1  r  r  s        r(   test_curve_padding_logyz%TestCurvePlot.test_curve_padding_logy/  s    iii  %%c%==&u--<	2DL4K---c***(;<<<&899999r+   c                    t          d t          dd          D                                           d          }t          j        |          }|j        d         |j        d         }}|                     |j        t          j	        d                     |                     |j
        t          j	        d	                     |                     |j        d
           |                     |j
        d           d S )Nc                 @    g | ]}t          j        d |z            |fS z2016-04-0%dr\   r   r/   s     r(   r)   zDTestCurvePlot.test_curve_padding_datetime_square.<locals>.<listcomp>9  ,    RRRma&788!<RRRr+   r      r  r  r   r   z2016-03-31T19:12:00.000000000z2016-04-03T04:48:00.000000000r  r  r   r.   r3   r   r<   rR   rM   r   r\   r   r   r  s        r(   "test_curve_padding_datetime_squarez0TestCurvePlot.test_curve_padding_datetime_square8  s    RReAqkkRRRSSXX Y 
 
 &u--<	2DL4K6U(V(VWWWbm4S&T&TUUU,,,c*****r+   c                    t          d t          dd          D                                           dd          }t          j        |          }|j        d         |j        d         }}|                     |j        t          j	        d	                     |                     |j
        t          j	        d
                     |                     |j        d           |                     |j
        d           d S )Nc                 @    g | ]}t          j        d |z            |fS r8  r9  r/   s     r(   r)   zGTestCurvePlot.test_curve_padding_datetime_nonsquare.<locals>.<listcomp>D  r:  r+   r   r;  r  r*  r+  r   r   z2016-03-31T21:36:00.000000000z2016-04-03T02:24:00.000000000r  r  r<  r  s        r(   %test_curve_padding_datetime_nonsquarez3TestCurvePlot.test_curve_padding_datetime_nonsquareC  s    RReAqkkRRRSSXXs Y 
 
 &u--<	2DL4K6U(V(VWWWbm4S&T&TUUU,,,c*****r+   c                     t          g dddg                              d          }t          j        |          }|j        d         }|                     |j        d           d S )N)r   r   r   )r   r   r   r   r,   r   r   r[   vdimsrZ   r`   r   )r   r3   r   r<   rR   rM   r   )rD   r   rG   r`   s       r(   test_curve_scalar_color_opz(TestCurvePlot.test_curve_scalar_color_opR  ss    CCC!7^- - --1TT-@-@ 	&u--W%)511111r+   c                    ddg}t          d t          |          D             d                              dd          }t          j        |          }t          |j                                        |          D ]]\  }}t          |j	        |j
                           }|                    |j        i i |          }|                     |d         |           ^d S )Nr   r   c                 X    i | ]'\  }}|t          t          j        |                    (S r#   )r   r\   arange)r%   r'   r[   s      r(   r0   z?TestCurvePlot.test_op_ndoverlay_color_value.<locals>.<dictcomp>[  sD     @ @ @!)E #E")A,,$7$7 @ @ @r+   r[   r   rZ   )r   	enumerater3   r   r<   ra   rC   r   r;   stylecyclic_index_apply_transformscurrent_framerM   )rD   re   rF   rG   subplotr[   rK  s          r(   test_op_ndoverlay_color_valuez+TestCurvePlot.test_op_ndoverlay_color_valueY  s    % @ @-6v->->@ @ @#% %%)T'T%A%A 	 &w//!$-"6"6"8"8&AA 	4 	4NGUw';<==E--g.CRUSSEU7^U3333	4 	4r+   c                     t          g dddg                              d          }d}t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )N)rB  )r   r   r   rC  r   r[   rD  rZ   z4ValueError: Mapping a dimension to the "color" stylematchr   r3   pytestraisesr   r   r<   rD   r   msgs      r(   test_curve_color_opz!TestCurvePlot.test_curve_color_opd  s    DDD!7^- - --1TT-@-@ 	D]/s;;; 	+ 	+#E***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+   A))A-0A-c                     t          g dddg                              d          }d}t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )N)r   r   r  )r   r   g333333?)r   r,   r   r   rt   rD  rs   z4ValueError: Mapping a dimension to the "alpha" stylerR  rT  rW  s      r(   test_curve_alpha_opz!TestCurvePlot.test_curve_alpha_opk  s    ;;;!7^- - --1TT-@-@ 	D]/s;;; 	+ 	+#E***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+rZ  c                     t          g dddg                              d          }d}t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr\  r   	linewidthrD  r|   z9ValueError: Mapping a dimension to the "line_width" stylerR  rT  rW  s      r(   test_curve_line_width_opz&TestCurvePlot.test_curve_line_width_opr  s    ;;;!;/1 1 1151M1M 	I]/s;;; 	+ 	+#E***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+rZ  c                    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                    i          }t          j        |          }|j        	                                D ]\  \  }}}|j
        d         }|j        }|dk    r|                     |d	           n|                     |d
           |j        }|dk    r|                     |g            s|                     |dg           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   r[   	line_dashr`   r   r      )r   r   r3   r;   r   
categorizer   r<   rC   itemsrR   r   rM   ri  )	rD   	ndoverlayrG   rb  rc  spr`   r[   	linestyles	            r(   -test_curve_style_mapping_ndoverlay_dimensionsz;TestCurvePlot.test_curve_style_mapping_ndoverlay_dimensionsy  s   III&&%			2B2BIII&&%			2B2BD D  %en
 
 $T%jj++&,A,ABBe**//gH0M0MNN  
  	 	 &y11"m1133 	1 	1NJS#Jw'E$Eaxx  ....  ///Iczz  B////  QC0000	1 	1r+   c                 @   g d}t          t          ddg|          t          ddg|          t          ddg|          t          d	d
g|          d                              dt          t	          d                              ddd          t	          d                              ddd                    i          }t          j        |          }|j        	                                D ]\  }}|j
        d         }|j        }||         j        d         dk    r|                     |d           n|                     |d           |j        }||         j        d         dk    r|                     |g            |                     |dg           d S )N)r   rb  rc  )r   r   r   r   )r   r   r   r   rD  )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r,   r   r   )r   r   r   r   )r   rY   r   r   )r   r   r,   rY   r   rb  r   r   rd  rc  re  rf  rg  rh  r`   )r   r,   r   r  r   rj  )r   r   r3   r;   r   rk  r   r<   rC   rl  rR   r   ilocrM   ri  )	rD   rE  rm  rG   krn  r`   r[   ro  s	            r(   2test_curve_style_mapping_constant_value_dimensionsz@TestCurvePlot.test_curve_style_mapping_constant_value_dimensions  s   ###nn5UCCCnn5UCCCnn5UCCCnn5UCCC	E E 
 

 $T%jj++&,A,ABBe**//gH0M0MNN  
   	 &y11]((** 	1 	1EArJw'E$E| &!++  ....  ///I| &#--  B////  QC0000	1 	1r+   N)/__name__
__module____qualname__rH   rT   rg   rp   rz   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-  r2  r5  r=  r@  rF  rP  rY  r]  r`  rp  rt  r#   r+   r(   r   r      s       	W 	W 	WP P P	F 	F 	FP P P	F 	F 	F	F 	F 	F? ? ?B B Bc c c; ; ;; ; ;_ _ __ _ __ _ __ _ _	_ 	_ 	_! ! !! ! !! ! !! ! !! ! !! ! !! ! !A A AK K KA A AK K K+ + ++ + ++ + ++ + ++ + ++ + ++ + +: : :	+ 	+ 	+	+ 	+ 	+2 2 2	4 	4 	4+ + ++ + ++ + +1 1 121 1 1 1 1r+   r   )!r   r   numpyr\   pandasr   rU  bokeh.modelsr   r   holoviews.corer   r   r   holoviews.core.optionsr   r	   r
   holoviews.elementr   "holoviews.plotting.bokeh.callbacksr   r   holoviews.plotting.utilr   holoviews.streamsr   holoviews.util.transformr   	test_plotr   r   r   r#   r+   r(   <module>r     s<                1 1 1 1 1 1 1 1 9 9 9 9 9 9 9 9 9 9 G G G G G G G G G G # # # # # # I I I I I I I I + + + + + + & & & & & & ( ( ( ( ( ( 4 4 4 4 4 4 4 4X1 X1 X1 X1 X1M X1 X1 X1 X1 X1r+   