
    ek                         d dl Zd dlZd dlZd dlmZmZ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 dd	lmZ d
dlmZmZ  G d de          ZdS )    N)CategoricalColorMapperFactorRangeLinearColorMapperScatter)	NdOverlay)Cycle)Points)property_to_dict)Stream   )ParamLogStream   )TestBokehPlotbokeh_rendererc                   R   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- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7S )8TestPointPlotc                     t          t          j                            dd          ddg                              d          }|                     |d           d S )N
      abvdims   color_index)r	   nprandomrandopts_test_colormapping)selfpointss     Mlib/python3.11/site-packages/holoviews/tests/plotting/bokeh/test_pointplot.pytest_points_colormappingz&TestPointPlot.test_points_colormapping   sV    	r1--c3Z@@@EERSETT*****    c                     t          dd          } t          t          j                            dd          ddg          j        d	i |}|                     |d           d S )
Nr   red)r   nonselection_colorr   r   r   r   r    )dictr	   r   r   r   r    r!   )r"   r    r#   s      r$   *test_points_colormapping_with_nonselectionz8TestPointPlot.test_points_colormapping_with_nonselection   si    e<<<E	r1--c3Z@@@EMMMM*****r&   c                 ~   t          d t          d          D             ddg                              d          }t          j        |          }|                                 |j        d         }|                     |t                     | 	                    |j
        t          |d                              d S )Nc           	      F    g | ]}||d z  |dz  t          d|z             fS r   r   A   chr.0is     r$   
<listcomp>zFTestPointPlot.test_points_colormapping_categorical.<locals>.<listcomp>   3    EEEa!QqS!A#s2a4yy1EEEr&   r   r   r   r   r   color_mapper)r	   ranger    r   get_plotinitialize_plothandlesassertIsInstancer   assertEqualfactorslist)r"   r#   plotcmappers       r$   $test_points_colormapping_categoricalz2TestPointPlot.test_points_colormapping_categorical   s    EE599EEE #Sz+ + ++/4C4+@+@ 	&v..,~.g'=>>>$vc{*;*;<<<<<r&   c                 V   t          ddd          } t          d t          d          D             ddg	          j        di |}t	          j        |          }|j        d
         }|                     |j        j	        d           |                     |j        j
        d           |                     |j        j	        d           |                     |j        j
        d           |                     |j        j	        d           |                     |j        j
        d           d S )Ngreenr(   blue)colorselection_colorr)   c           	      F    g | ]}||d z  |dz  t          d|z             fS r/   r1   r3   s     r$   r6   zJTestPointPlot.test_points_color_selection_nonselection.<locals>.<listcomp>'   r7   r&   r   r   r   r   glyph_rendererr*   )r+   r	   r9   r    r   r:   r<   r>   glyph
fill_color
line_colorselection_glyphnonselection_glyphr"   r    r#   rA   rJ   s        r$   (test_points_color_selection_nonselectionz6TestPointPlot.test_points_color_selection_nonselection%   s1   '5VTTT0EE599EEE #Sz+ + ++/8 8268 8&v..&67-8'BBB-8'BBB7BEJJJ7BEJJJ:EvNNN:EvNNNNNr&   c                 V   t          ddd          } t          d t          d          D             ddg	          j        di |}t	          j        |          }|j        d
         }|                     |j        j	        d           |                     |j        j
        d           |                     |j        j	        d           |                     |j        j
        d           |                     |j        j	        d           |                     |j        j
        d           d S )N皙?      ?皙?)alphaselection_alphanonselection_alphac           	      F    g | ]}||d z  |dz  t          d|z             fS r/   r1   r3   s     r$   r6   zJTestPointPlot.test_points_alpha_selection_nonselection.<locals>.<listcomp>4   r7   r&   r   r   r   r   rJ   r   r*   )r+   r	   r9   r    r   r:   r<   r>   rK   
fill_alpha
line_alpharN   rO   rP   s        r$   (test_points_alpha_selection_nonselectionz6TestPointPlot.test_points_alpha_selection_nonselection2   s1   #ssKKK0EE599EEE #Sz+ + ++/8 8268 8&v..&67-8#>>>-8#>>>7BAFFF7BAFFF:EsKKK:EsKKKKKr&   c                    t          dd          } t          d t          d          D             ddg          j        di |}t	          j        |          }|j        d	         }|                     |j        j	        d           |                     |j        j
        d           |                     |j        j	        d           |                     |j        j
        d
           d S )NrT   rU   )rW   selection_fill_alphac           	      F    g | ]}||d z  |dz  t          d|z             fS r/   r1   r3   s     r$   r6   zETestPointPlot.test_points_alpha_selection_partial.<locals>.<listcomp>A   r7   r&   r   r   r   r   rJ   r   r*   )r+   r	   r9   r    r   r:   r<   r>   rK   rZ   r[   rN   rP   s        r$   #test_points_alpha_selection_partialz1TestPointPlot.test_points_alpha_selection_partial?   s    CcBBB0EE599EEE #Sz+ + ++/8 8268 8&v..&67-8#>>>-8#>>>7BCHHH7BAFFFFFr&   c                     t          d t          dd          D                       }t          j        |          }|                    |i           }|                     |d           d S )Nc                 R    i | ]$}|t          t          j        |                    %S r*   r	   r   aranger3   s     r$   
<dictcomp>z5TestPointPlot.test_batched_points.<locals>.<dictcomp>K   s*    LLLQry|| 4 4LLLr&   r   d   )r   r   b   rg   )r   r9   r   r:   get_extentsr>   )r"   overlayrA   extentss       r$   test_batched_pointsz!TestPointPlot.test_batched_pointsJ   sg    LLeAsmmLLLMM&w//""7B//.11111r&   c                 $   t          d          t          t          ddg                    d}t          d t          d          D                                           |          }t          j        |          j        d	         }t          j	        g d
          }t          j	        g dd          }| 
                    |j        d         j        d         |           | 
                    |j        d         j        d         |           d S )Nr   legend_limitr   r   valuessizer   r	   c           	      b    i | ]+t          fd t          d          D                       ,S )c                     g | ]}|fS r*   r*   r4   jr5   s     r$   r6   zOTestPointPlot.test_batched_points_size_and_color.<locals>.<dictcomp>.<listcomp>S       'A'A'A1A'A'A'Ar&   r   r	   r9   r3   s    @r$   re   zDTestPointPlot.test_batched_points_size_and_color.<locals>.<dictcomp>S   N     0 0 0!" 'A'A'A'Aa'A'A'A B B 0 0 0r&   r*   )r   r   r   r   #30a2dar|   #fc4f30r}   <U7dtypesourcerG   rr   r+   r   r   r9   r    r   r:   subplotsr   arrayr>   r<   data)r"   r    ri   rA   rr   rG   s         r$   "test_batched_points_size_and_colorz0TestPointPlot.test_batched_points_size_and_colorP   s   !q111E!Q$8$8$8999; ; 0 0&+Ahh0 0 0 1 115d 	&w//8<x%%EEE$& & &h/4W=uEEEh/4V<dCCCCCr&   c                 $   t          d          t          t          ddg                    d}t          d t          d	          D                                           |          }t          j        |          j        d
         }t          j	        g d          }t          j	        g dd          }| 
                    |j        d         j        d         |           | 
                    |j        d         j        d         |           d S )Nr   rm   r(   rF   ro   rM   rs   c           	      b    i | ]+t          fd t          d          D                       ,S )c                     g | ]}|fS r*   r*   rv   s     r$   r6   zUTestPointPlot.test_batched_points_line_color_and_color.<locals>.<dictcomp>.<listcomp>_   rx   r&   r   ry   r3   s    @r$   re   zJTestPointPlot.test_batched_points_line_color_and_color.<locals>.<dictcomp>_   rz   r&   r   r*   )r(   r(   rF   rF   r{   r~   r   r   rL   rM   r   )r"   r    ri   rA   rM   rL   s         r$   (test_batched_points_line_color_and_colorz6TestPointPlot.test_batched_points_line_color_and_color\   s   !q111%v*G*G*GHHHJ J 0 0&+Ahh0 0 0 1 115d 	&w//8<X<<<==
XJJJ$& & &
h/4\BJOOO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
         }t          j	        g d          }t          j	        g dd          }| 
                    |j        d         j        d         |           | 
                    |j        d         j        d         |           d S )Nr   rm         ?r   ro   rV   rs   c           	      b    i | ]+t          fd t          d          D                       ,S )c                     g | ]}|fS r*   r*   rv   s     r$   r6   zPTestPointPlot.test_batched_points_alpha_and_color.<locals>.<dictcomp>.<listcomp>k   rx   r&   r   ry   r3   s    @r$   re   zETestPointPlot.test_batched_points_alpha_and_color.<locals>.<dictcomp>k   rz   r&   r   r*   r   r   rT   rT   r{   r~   r   r   rV   rG   r   )r"   r    ri   rA   rV   rG   s         r$   #test_batched_points_alpha_and_colorz1TestPointPlot.test_batched_points_alpha_and_colorh   s   !q111U3(%;%;%;<<<> > 0 0&+Ahh0 0 0 1 115d 	&w//8<+++,,EEE$& & &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
         }t          j	        g d          }t          j	        g dd          }| 
                    |j        d         j        d         |           | 
                    |j        d         j        d         |           d S )Nr   rm   r   r   ro   
line_widthrs   c           	      b    i | ]+t          fd t          d          D                       ,S )c                     g | ]}|fS r*   r*   rv   s     r$   r6   zUTestPointPlot.test_batched_points_line_width_and_color.<locals>.<dictcomp>.<listcomp>w   rx   r&   r   ry   r3   s    @r$   re   zJTestPointPlot.test_batched_points_line_width_and_color.<locals>.<dictcomp>w   rz   r&   r   r*   r   r{   r~   r   r   r   rG   r   )r"   r    ri   rA   r   rG   s         r$   (test_batched_points_line_width_and_colorz6TestPointPlot.test_batched_points_line_width_and_colort   s   !q111%Qx*@*@*@AAAC C 0 0&+Ahh0 0 0 1 115d 	&w//8<X00011
EEE$& & &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 | ]A}|t          t          t          j        d d                    t	          d          f          BS )z
2016-01-01z
2016-01-31   )r	   r@   pd
date_ranger9   r3   s     r$   re   zDTestPointPlot.test_points_overlay_datetime_hover.<locals>.<dictcomp>   sF    sssefFD|\)R)R$S$SUZ[]U^U^#_``sssr&      Testkdimsr	   toolshover)r   z@{Test})xz@{x}{%F %T}yz@{y}@{x}datetime)
formattersr   r9   r    _test_hover_infor"   objr    s      r$   "test_points_overlay_datetime_hoverz0TestPointPlot.test_points_overlay_datetime_hover   s    ssjopqjrjrsss%h( ( (7WI./hhtnnc#]#]#]*0*)= 	 	? 	? 	? 	? 	?r&   c                     t          d t          d          D             dg          }ddgiddid	}|                    |          }|                     |g d
           d S )Nc           	      j    i | ]0}|t          t          j                            d d                    1S r   r   r	   r   r   r   r3   s     r$   re   zCTestPointPlot.test_points_overlay_hover_batched.<locals>.<dictcomp>   2    KKKQF29>>"Q#7#788KKKr&   r   r   r   r   r   rn   r   r	   r   r   r   r   r   r   r   s      r$   !test_points_overlay_hover_batchedz/TestPointPlot.test_points_overlay_hover_batched   s    KK%((KKK%h( ( ("WI.,a02 2hhtnnc#V#V#VWWWWWr&   c                     t          d t          d          D             dg          }ddgiddid	}|                    |          }|                     |g d
           d S )Nc           	      j    i | ]0}|t          t          j                            d d                    1S r   r   r3   s     r$   re   z;TestPointPlot.test_points_overlay_hover.<locals>.<dictcomp>   r   r&   r   r   r   r   r   rn   r   r   r   r   r   s      r$   test_points_overlay_hoverz'TestPointPlot.test_points_overlay_hover   s    KK%((KKK%h( ( ("WI.,a02 2hhtnnc $3 $3 $3 	4 	4 	4 	4 	4r&   c                     t          ddgd          }t          j        |          }|                                 |j        }|                     t          |j                  d           d S )N)Ar   )Br   r   )labelr   )r	   r   r:   r;   stater>   lenlegend)r"   r#   rA   figs       r$   !test_points_no_single_item_legendz/TestPointPlot.test_points_no_single_item_legend   sf    8,C888&v..jSZ!,,,,,r&   c                    t          j        d          t          j        d          t          t          t          t          dd                              f}t          |dg                              d          }t                      5 }t          j
        |           d d d            n# 1 swxY w Y   |j                                        }d}|                     ||           d S )	Nr   ^   h   zr   r   )
size_indexzThe `size_index` parameter is deprecated in favor of size style mapping, e.g. `size=dim('size')**2`.
z dimension is not numeric, cannot use to scale Points size.
)r   rd   r@   mapr2   r9   r	   r    r   r   r:   streamreadr>   )r"   r   r#   loglog_msgwarnings         r$   $test_points_non_numeric_size_warningz2TestPointPlot.test_points_non_numeric_size_warning   s   	"ry}}d3sE"SMM3J3J.K.KLSE***//1/== 	,#F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,*//##e 	 	'*****s   B--B14B1c                     t          g ddf          }t          j        |          }|j        d         }|                     |t
                     |                     |j        g d           d S )Nr   r   Cr   r   r   x_ranger	   r   r:   r<   r=   r   r>   r?   )r"   r#   rA   r   s       r$   test_points_categorical_xaxisz+TestPointPlot.test_points_categorical_xaxis   sl    '233&v..,y)g{333///:::::r&   c                 |   t          t          d                    }t          g ddf          }t          j        ||z            }|j        d         }|                     |t                     |                     |j        t          t          t          t          d                              g dz              d S )Nr   )r   r   r   r   g       @)r   r   r   r   r   r   )r   r   r   z2.0)r	   r9   r   r:   r<   r=   r   r>   r?   r@   r   strr"   r#   points2rA   r   s        r$   (test_points_categorical_xaxis_mixed_typez6TestPointPlot.test_points_categorical_xaxis_mixed_type   s    b		""111?CDD&vg~66,y)g{333$s3b		/B/B*C*CF\F\F\*\]]]]]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	   r    r   r:   r<   r=   r   r>   r?   )r"   r#   rA   r   s       r$   )test_points_categorical_xaxis_invert_axesz7TestPointPlot.test_points_categorical_xaxis_invert_axes   s}    '23388T8JJ&v..,y)g{333///:::::r&   c                 
   t          g ddf          }t          g ddf          }t          j        ||z            }|j        d         }|                     |t
                     |                     |j        g d           d S )Nr   r   r   r   Dr   r   r   r   r   r   r   s        r$   %test_points_overlay_categorical_xaxisz3TestPointPlot.test_points_overlay_categorical_xaxis   s    '233///7344&vg~66,y)g{333*>*>*>?????r&   c                 D   t          g ddf                              d          }t          g ddf          }t          j        ||z            }|j        d         }|                     |t                     |                     |j        g dd d d                    d S )	Nr   r   T)invert_xaxisr   r   r   r   r   s        r$   1test_points_overlay_categorical_xaxis_invert_axisz?TestPointPlot.test_points_overlay_categorical_xaxis_invert_axis   s    '23388d8KK///7344&vg~66,y)g{333*>*>*>ttt*DEEEEEr&   c                 2   t          g ddf                              d          }t          g ddf          }t          j        ||z            }|j        d         }|                     |t                     |                     |j        g d           d S )Nr   r   Tr   r   r   r   r   )r"   r#   r   rA   r   s        r$   1test_points_overlay_categorical_xaxis_invert_axesz?TestPointPlot.test_points_overlay_categorical_xaxis_invert_axes   s    '23388T8JJ///7344&vg~66,y)g{333*>*>*>?????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   皙ɿ皙@rS   皙	@r	   r    r   r:   r<   r>   startendr"   r#   rA   r   r   s        r$   test_points_padding_squarez(TestPointPlot.test_points_padding_square   s    			""'''44&v..<	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   rU   r   r   r   r   r   rS   g333333@r   )r"   curverA   r   r   s        r$   "test_curve_padding_square_per_axisz0TestPointPlot.test_curve_padding_square_per_axis   s    yyy!!&&/E&FF&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   )g?r   r   r   r   皙 @rS   r   r   r   s        r$   test_points_padding_unequalz)TestPointPlot.test_points_padding_unequal   s    			""'''<<&v..<	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   rS   r   r   r   s        r$   test_points_padding_nonsquarez+TestPointPlot.test_points_padding_nonsquare   s    			""''3'??&v..<	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   )r   r   r   T)r   logxr   r   9r?u
@rS   r   r   r   s        r$   test_points_padding_logxz&TestPointPlot.test_points_padding_logx   s    ///0055c5MM&v..<	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   r
  r  r   r   s        r$   test_points_padding_logyz&TestPointPlot.test_points_padding_logy  s    			""''$'??&v..<	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   
datetime64r3   s     r$   r6   zETestPointPlot.test_points_padding_datetime_square.<locals>.<listcomp>  ,    TTT1"-(9::A>TTTr&   r   r   r   r   r   r   z2016-03-31T19:12:00.000000000z2016-04-03T04:48:00.000000000rS   r   r	   r9   r    r   r:   r<   r>   r   r   r  r   r   s        r$   #test_points_padding_datetime_squarez1TestPointPlot.test_points_padding_datetime_square  s    TTaQRTTTUUZZ [ 
 
 &v..<	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 r  r  r3   s     r$   r6   zHTestPointPlot.test_points_padding_datetime_nonsquare.<locals>.<listcomp>  r  r&   r   r   r   r  r  r   r   z2016-03-31T21:36:00.000000000z2016-04-03T02:24:00.000000000rS   r   r  r   s        r$   &test_points_padding_datetime_nonsquarez4TestPointPlot.test_points_padding_datetime_nonsquare  s    TTaQRTTTUUZZs [ 
 
 &v..<	2DL4K6U(V(VWWWbm4S&T&TUUU,,,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   r   )r   r   r   r   r   r   r   rS   r   )
r	   redimr9   r    r   r:   r<   r>   r   r   r   s        r$   test_points_padding_hard_xrangez-TestPointPlot.test_points_padding_hard_xrange&  s    			""(...88==c=JJ&v..<	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_ranger    r   r:   r<   r>   r   r   r   s        r$   test_points_padding_soft_xrangez-TestPointPlot.test_points_padding_soft_xrange/  s    			""(33f3==BB3BOO&v..<	2DL4K***a(((,,,c*****r&   c           	         t          ddt          j        ddd          fgd                              dg          }t	          j        |          }|j        d         }|                     |j        d         	                    d	          t          j        d
g                     |j        d         }|                     |j        g dddi           d S )Nr   r   i  dater   r   )r   cdsr  l     Bar$ )r   r   )r#  z@{date}{%F %T}z@{date}r   )r	   dtr   r    r   r:   r<   r>   r   astyper   r   tooltips)r"   r#   rA   r$  r   s        r$   test_points_datetime_hoverz(TestPointPlot.test_points_datetime_hover8  s    !QD!Q 7 789HHHMMU\T]M^^&v..l5!&)00>>J]I^@_@_```W%)c)c)c#Z0	2 	2 	2 	2 	2r&   c                     t          g d                              ddg          }t          j        |          }|j        d         }|                     |j        j        ddg           d S )Nr   r   r  r  r   r   selectedr$  )r	   r    r   r:   r<   r>   r-  indices)r"   r#   rA   r$  s       r$   test_points_selectedz"TestPointPlot.test_points_selectedA  sl    0001166A6GG&v..l5!-1v66666r&   c                     t          j        dg                       }t          g d          j                            |j        j                  }t          j        |          }|j	        d         }| 
                    |j        j        g            |                    ddg           | 
                    |j        j        ddg           d S )NSelectedr,  r*  r$  r   r   )r   definer	   applyr    paramr-  r   r:   r<   r>   r.  event)r"   r   r#   rA   r$  s        r$   test_points_update_selectedz)TestPointPlot.test_points_update_selectedG  s    7zB77799000117<<flF[<\\&v..l5!-r222q!f%%%-1v66666r&   c                    t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     |                     t          |j
                  ddi           |                     t          |j                  ddi           d S )	N)r   r   #000)r   r   #F00)r   r   #0F0rG   r   rG   r$  rK   r9  r:  r;  field)r	   r    r   r:   r<   r>   r   r   r   r
   rL   rM   r"   r#   rA   r$  rK   s        r$   test_point_color_opz!TestPointPlot.test_point_color_opT  s    HHH%' ' ''+t't':': 	&v..l5!W%'*BH5M5M5M,N,NOOO)%*:;;gw=OPPP)%*:;;gw=OPPPPPr&   c                    t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|j        d         }|                     |t                     |                     |j        d           |                     |j	        d	           |                     |j
        d         t          j        g d
                     |                     t          |j                  d|d           |                     t          |j                  d|d           d S )Nr   r   r   )r   r   r   )r   r   r   rG   r   r<  r$  rK   color_color_mapperr   r   r   r   r   r>  	transform)r	   r    r   r:   r<   
assertTruer   r>   lowhighr   r   r   r
   rL   rM   r"   r#   rA   r$  rK   rB   s         r$   test_point_linear_color_opz(TestPointPlot.test_point_linear_color_op^  s5   999%' ' ''+t't':': 	&v..l5!W%,34!2333a(((q)))'*BHYYY,?,?@@@)%*:;;w]d=e=efff)%*:;;w]d=e=efffffr&   c                 P   t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|j        d         }|                     |t                     |                     |j        g d           |                     |j	        d         t          j        g d                     |                     t          |j                  d|d	           |                     t          |j                  d|d	           d S )
N)r   r   r   )r   r   r   )r   r   r   rG   r   r<  r$  rK   rD  r   rF  )r	   r    r   r:   r<   rH  r   r>   r?   r   r   r   r
   rL   rM   rK  s         r$   test_point_categorical_color_opz-TestPointPlot.test_point_categorical_color_opl  s!   ???%' ' ''+t't':': 	&v..l5!W%,34!7888///:::'*BH___,E,EFFF)%*:;;w]d=e=efff)%*:;;w]d=e=efffffr&   c                 B   dddd}t          g dd                              dd|	          }t          j        |          }|j        d
         }|j        j        d         j        d         }t          |j	                  ddik    sJ |j
        d         g dk    sJ d S )NA pointB pointC pointr   rN  rG   r   T)rG   show_legendlegend_labelsr$  r   r>  _color_labels)rQ  rR  rS  )r	   r    r   r:   r<   r   r   itemsr
   r   r   )r"   labelsr#   rA   r$  r   s         r$   2test_point_categorical_color_op_legend_with_labelsz@TestPointPlot.test_point_categorical_color_op_legend_with_labelsy  s     yyAA???%' ' ''+t't[at'b'b 	&v..l5!"1%+A.--'?1KKKKKx(,M,M,MMMMMMMr&   c                    t          j        t          g dg dg d                    }|d                             d          |d<   t	          |ddg                              d          }t          j        |          }|j        d	         }|j        d
         }|j        d         }| 	                    |t                     |                     |j        ddg           |                     t          j        |j        d                   t          j        g d                     |                     t#          |j                  d|d           |                     t#          |j                  d|d           d S )N)z	subject 1z	subject 2z	subject 3z	subject 4)applepearr[  r\  )r   r   r   r   )	sample_idcategoryvaluer^  r]  r_  r<  r$  rK   rD  r[  r\  rG   rF  )r   	DataFramer+   r&  r	   r    r   r:   r<   rH  r   r>   r?   r   asarrayr   r   r
   rL   rM   )r"   dfr#   rA   r$  rK   rB   s          r$   %test_point_categorical_dtype_color_opz3TestPointPlot.test_point_categorical_dtype_color_op  s   \$)])])]  iK  iK  iK  S_  S_  S_  `  `  `  a  aJ..z:::['23388z8JJ&v..l5!W%,34!78887F*;<<<CHW$566AcAcAc8d8deee)%*:;;w]d=e=efff)%*:;;w]d=e=efffffr&   c                 l   t          g d                              ddddd          }t          j        |          }|j        d         }|j        d	         }|j        d
         }|                     |t                     |                     |j        g d           |                     |j	        g d           |                     |j
        d         g d           |                     t          |j                  d|d           |                     t          |j                  d|d           d S )N)r+  )r   r   )r   r   r   r(   rE   rF   rE  )rG   cmapr$  rK   rD  )012)r(   rE   rF   color_str__rF  )r	   r    r   r:   r<   rH  r   r>   r?   paletter   r
   rL   rM   rK  s         r$   !test_point_explicit_cmap_color_opz/TestPointPlot.test_point_explicit_cmap_color_op  s<   0001166'f== 7 ? ?&v..l5!W%,34!7888///:::*B*B*BCCC-0///BBB)%*:;;}cj=k=klll)%*:;;}cj=k=klllllr&   c                    t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     | 	                    t          |j                  d	di           |                     t          |j                  d	di           d S )
Nr8  rG   r   r   r$  rK   rM   r=  r>  )r	   r    r   r:   r<   r>   r   r   r   assertNotEqualr
   rL   rM   r?  s        r$   test_point_line_color_opz&TestPointPlot.test_point_line_color_op  s    HHH%' ' ''+twt'?'? 	&v..l5!W%,/:R:R:R1S1STTT,U-=>>,@WXXX)%*:;;g|=TUUUUUr&   c                    t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     |                     t          |j
                  d	di           |                     t          |j                  d	di           d S )
Nr8  rG   r   )rL   r$  rK   rL   r=  r>  )r	   r    r   r:   r<   r>   r   r   r   r
   rL   rm  rM   r?  s        r$   test_point_fill_color_opz&TestPointPlot.test_point_fill_color_op  s    HHH%' ' ''+twt'?'? 	&v..l5!W%,/:R:R:R1S1STTT)%*:;;g|=TUUU,U-=>>,@WXXXXXr&   c                 n   t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     |                     t          |j
                  ddi           d S )	N)rC  )r   r   -   )r   r   Z   angler   )rt  r$  rK   )r   gz !?gz !?r>  )r	   r    r   r:   r<   r>   r   r   r   r
   rt  r?  s        r$   test_point_angle_opz!TestPointPlot.test_point_angle_op  s    ;;;%' ' ''+t't':': 	&v..l5!W%'*BH5L5L5L,M,MNNN)%+66'8JKKKKKr&   c                 n   t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     |                     t          |j
                  ddi           d S )	NrC  )r   r   rU   )r   r   ffffff?rV   r   r   r$  rK   r   rU   rx  r>  )r	   r    r   r:   r<   r>   r   r   r   r
   rZ   r?  s        r$   test_point_alpha_opz!TestPointPlot.test_point_alpha_op  s    ===%' ' ''+t't':': 	&v..l5!W%'*BH]]],C,CDDD)%*:;;gw=OPPPPPr&   c                    t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     |                     t          |j
                  d	di           |                     t          |j                  d	di           d S )
Nrw  rV   r   )r[   r$  rK   r[   ry  r>  )r	   r    r   r:   r<   r>   r   r   r   r
   r[   rm  rZ   r?  s        r$   test_point_line_alpha_opz&TestPointPlot.test_point_line_alpha_op  s    ===%' ' ''+twt'?'? 	&v..l5!W%,/---1H1HIII)%*:;;g|=TUUU,U-=>>,@WXXXXXr&   c                    t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     | 	                    t          |j                  d	di           |                     t          |j                  d	di           d S )
Nrw  rV   r   )rZ   r$  rK   rZ   ry  r>  )r	   r    r   r:   r<   r>   r   r   r   rm  r
   r[   rZ   r?  s        r$   test_point_fill_alpha_opz&TestPointPlot.test_point_fill_alpha_op  s    ===%' ' ''+twt'?'? 	&v..l5!W%,/---1H1HIII,U-=>>,@WXXX)%*:;;g|=TUUUUUr&   c                 n   t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     |                     t          |j
                  ddi           d S )	N)r   r   r   )r   r   r   )r   r      rr   r   rq   r$  rK   r   r   r  r>  )r	   r    r   r:   r<   r>   r   r   r   r
   rr   r?  s        r$   test_point_size_opz TestPointPlot.test_point_size_op  s    999$& & &&*dd&7&7 	&v..l5!W%&)28III+>+>???)%*557HIIIIIr&   c                 n   t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     |                     t          |j
                  ddi           d S )	Nr  r   r   r   r$  rK   r  r>  )r	   r    r   r:   r<   r>   r   r   r   r
   r   r?  s        r$   test_point_line_width_opz&TestPointPlot.test_point_line_width_op  s    999*, , ,,0DLD,I,I 	&v..l5!W%,/)))1D1DEEE)%*:;;g|=TUUUUUr&   c                 n   t          g dd                              d          }t          j        |          }|j        d         }|j        d         }|                     |j        d         t          j        g d                     |                     t          |j
                  ddi           d S )	N))r   r   circle)r   r   triangle)r   r   squaremarkerr   r  r$  rK   )r  r  r  r>  )r	   r    r   r:   r<   r>   r   r   r   r
   r  r?  s        r$   test_point_marker_opz"TestPointPlot.test_point_marker_op  s    PPP&( ( ((,H(=(= 	&v..l5!W%(+RX6V6V6V-W-WXXX)%,77'89LMMMMMr&   c                    ddg}t          d t          |          D             d                              dd          }t          j        |          }t          |j                                        t          t          g|          D ]M\  }}}| 	                    |j
        d         |           |                     |j
        d         j        |           Nd S )Nr  r  c                 X    i | ]'\  }}|t          t          j        |                    (S r*   rc   )r4   r5   r  s      r$   re   z9TestPointPlot.test_op_ndoverlay_value.<locals>.<dictcomp>  s.    ^^^iaVVBIaLL%9%9^^^r&   Markerr	   r  rK   )r   	enumerater    r   r:   zipr   rp   r   r=   r<   r>   r  )r"   markersri   rA   subplot
glyph_typer  s          r$   test_op_ndoverlay_valuez%TestPointPlot.test_op_ndoverlay_value  s    Z(^^9U\K]K]^^^`hiinnow  AIn  J  J&w//+.t}/C/C/E/EQXGY[b+c+c 	F 	F'GZ!!'/'":JGGGW_W5<fEEEE	F 	Fr&   c                 ,   t          g dd                              dd          }t                      5 }t          j        |           d d d            n# 1 swxY w Y   |j                                        }d}|                     ||           d S )NrB  rG   r   )rG   r   zThe `color_index` parameter is deprecated in favor of color style mapping, e.g. `color=dim('color')` or `line_color=dim('color')`
Cannot declare style mapping for 'color' option and declare a color_index; ignoring the color_index.
r	   r    r   r   r:   r   r   r>   r"   r#   r   r   r   s        r$   "test_point_color_index_color_clashz0TestPointPlot.test_point_color_index_color_clash  s    999%' ' ''+t'wt'O'O 	 	,#F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,*//##X 	
 	'*****   AAAc                 x   t          g dd                              dd          }t          j        |          }|j        d         }|j        d         }|j        d         }|                     t          |j                  d|d	           |                     t          |j                  d|d	           d S )
NrB  rG   r   )rL   r   rK   fill_color_color_mapperr8   rL   rF  )	r	   r    r   r:   r<   r>   r
   rL   rM   )r"   r#   rA   rK   rB   cmapper2s         r$   %test_point_color_index_color_no_clashz3TestPointPlot.test_point_color_index_color_no_clash	  s    999%' ' ''+twGt'T'T 	&v..W%,89</)%*:;;|bi=j=jkkk)%*:;;w]e=f=fgggggr&   c                 ,   t          g dd                              dd          }t                      5 }t          j        |           d d d            n# 1 swxY w Y   |j                                        }d}|                     ||           d S )NrB  rr   r   )rr   r   zThe `size_index` parameter is deprecated in favor of size style mapping, e.g. `size=dim('size')**2`.
Cannot declare style mapping for 'size' option and declare a size_index; ignoring the size_index.
r  r  s        r$    test_point_size_index_size_clashz.TestPointPlot.test_point_size_index_size_clash  s    999$& & &&*d6d&J&J 	 	,#F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,*//##5 	
 	'*****r  N)9__name__
__module____qualname__r%   r,   rC   rQ   r\   r`   rk   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/  r6  r@  rL  rO  rY  rc  rk  rn  rp  ru  rz  r|  r~  r  r  r  r  r  r  r  r*   r&   r$   r   r      s       + + ++ + +
= = =O O OL L L	G 	G 	G2 2 2
D 
D 
D
P 
P 
P
F 
F 
F
F 
F 
F? ? ?X X X4 4 4- - -
+ 
+ 
+; ; ;^ ^ ^; ; ;@ @ @F F F@ @ @+ + ++ + ++ + ++ + ++ + +: : :	+ 	+ 	+	+ 	+ 	++ + ++ + +2 2 27 7 77 7 7Q Q Qg g gg g gN N Ng g gm m mV V VY Y YL L LQ Q QY Y YV V VJ J JV V VN N NF F F+ + +h h h+ + + + +r&   r   )r   r%  numpyr   pandasr   bokeh.modelsr   r   r   r   holoviews.corer   holoviews.core.optionsr   holoviews.elementr	   holoviews.plotting.bokeh.utilr
   holoviews.streamsr   utilsr   	test_plotr   r   r   r*   r&   r$   <module>r     s               X X X X X X X X X X X X $ $ $ $ $ $ ( ( ( ( ( ( $ $ $ $ $ $ : : : : : : $ $ $ $ $ $ " " " " " " 4 4 4 4 4 4 4 4M+ M+ M+ M+ M+M M+ M+ M+ M+ M+r&   