
    e+]                         d dl 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mZmZmZmZmZ d dlmZmZmZmZmZmZmZ ddZdd	Z G d
 de          ZdS )    N)TestCase)Mock)Tiles)BoundsXCallbackBoundsXYCallbackBoundsYCallbackRangeXCallbackRangeXYCallbackRangeYCallbackSelection1DCallback)BoundsXBoundsXYBoundsYRangeXRangeXYRangeYSelection1Dc                 t    |  t          t          j                              } t                      }| |_        |S N)struuiduuid4r   	trace_uid)r   plots     Nlib/python3.11/site-packages/holoviews/tests/plotting/plotly/test_callbacks.py	mock_plotr      s0    
%%	66DDNK       c                    g }g }g }g }|D ]}t          |          }	g g }}
t          |          D ]R}g } |            }|fd}|                    |           |
                    |           |                    |           S | |	|
d          }|                    |	           |                    |
           |                    |           |                    |           ||||fS )zu
    Build a collection of plots, callbacks, and streams for a given callback class and
    a list of trace_uids
    c                 0    |                      |           d S r   )append)eventskwargss     r   cbzbuild_callback_set.<locals>.cb5   s    f%%%%%r   N)r   rangeadd_subscriberr!   )callback_cls
trace_uidsstream_typenum_streamsplotsstreamss	callbackseventssr   r   streams
event_list_r"   streamr$   callbacks                    r   build_callback_setr4   &   s'   
 EHIG # #	## "{## 	& 	&AF []]F  & & & &!!"%%%NN6"""f%%%%<gt44T   """z""""(Iw..r   c                       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S )TestCallbacksc                    t          j        dg ddddg ddddd	dg dd
ddd	dg ddddd	gdddiid                                          | _        t          j        dddddddddd
ddgdddiid                                          | _        d\  | _        | _        t          j        | j        | j                  \  | _	        | _
        t          | j	                  | _	        t          | j
                  | _
        | j        d         | j        d         g| j        d         | j        d         g| j        d         | j        d         g| j        d         | j        d         gg| _        d\  | _        | _        t          j        | j        | j                  \  | _        | _        t          | j                  | _        t          | j                  | _        | j        d         | j        d         g| j        d         | j        d         g| j        d         | j        d         g| j        d         | j        d         gg| _        d S )Nscatter)   r      first)typeyuidbarsecondxr=   )r<   r=   r>   xaxisyaxisthirdx2y2forthx3y3titletextzFigure Title)datalayoutscattermapboxmapbox)r<   r>   subplotmapbox2mapbox3))
      )   (   r   r9   ))ii)ii)goFigureto_dictfig_dictmapbox_fig_dict
lon_range1
lat_range1r   lon_lat_to_easting_northingeasting_range1northing_range1tuplemapbox_coords1
lon_range2
lat_range2easting_range2northing_range2mapbox_coords2)selfs    r   setUpzTestCallbacks.setUpF   s   	"ii! ! ii 	 
 #ii	   
 ii	   * &.13+#
 #
  . 799/ 	2  "y(XNN(iPP(YOO &.1	*
 	*
 	  	  799 	 ,>(494UOT_5
 5
1T1 $D$788$T%9:: _Q!34_Q!34_Q!34_Q!34	
 ,B(494UOT_5
 5
1T1 $D$788$T%9:: _Q!34_Q!34_Q!34_Q!34	
r   c                 \   t                      }t                      }t                      }t          |g d           }|                     |j        t          j                   |                     |t          j        |j                            t          |g d           }|                     |j        t          j                   |                     |t          j        |j                            t          |g d           }|                     |j        t          j                   |                     |t          j        |j                            |                     |j        t          j                   |                     |j        t          j                   |                     |j        t          j                   |                     |j        t          j                   |                     |j        t          j                   |                     |j        t          j                   d S r   )	r   r
   assertInr   	instancesassertIsr   r   assertNotIn)rh   plot1plot2plot3
rangexy_cbboundsxy_cbselection1d_cbs          r   !testCallbackClassInstanceTrackingz/TestCallbacks.testCallbackClassInstanceTracking   s     %UB55
eo'@AAAj/";EO"LMMM 'ub$77eo'7'ABBBk#3#=eo#NOOO -UB==eo':'DEEEn&9&CEO&TUUU 	*:*DEEE*=*GHHH/*CDDD*=*GHHH/*CDDD*:*DEEEEEr   c                     ddgddgddddddfD ]<}t          j        d|| j                  }|                     |dd	d
dd	d
d           =d S )Nr9         zxaxis.rangezyaxis.rangezxaxis.range[0]zxaxis.range[1]zyaxis.range[0]zyaxis.range[1]viewportr9   rw   rx   ry   x_rangey_ranger;   r@   )r
   #get_event_data_from_property_updaterZ   assertEqualrh   r|   
event_datas      r   testRangeXYCallbackEventDataz*TestCallbacks.testRangeXYCallbackEventData   s    FB7;; A!Q8 8
 	 	H
 )LHdm J Z%+@@&,AA* *    	 	r   c                     ddgddgddddddfD ]:}t          j        d|| j                  }|                     |dd	idd	id
           ;d S )Nr9   rw   rx   ry   rz   r{   r|   r   r}   r   )r	   r   rZ   r   r   s      r   testRangeXCallbackEventDataz)TestCallbacks.testRangeXCallbackEventData   s    FB7;; A!Q8 8
 	 	H
 (KHdm J Z#V,$f-* *    	 	r   c                     ddgddgddddddfD ]:}t          j        d|| j                  }|                     |dd	idd	id
           ;d S )Nr9   rw   rx   ry   rz   r{   r|   r   r~   r   )r   r   rZ   r   r   s      r   testRangeYCallbackEventDataz)TestCallbacks.testRangeYCallbackEventData   s    FB7;; A!Q8 8
 	 	H
 (KHdm J Z#W-$g.* *    	 	r   c                     d| j         id| j        id}t          j        d|| j                  }|                     || j        | j        d| j        | j	        dd           d S )Ncoordinateszmapbox._derivedzmapbox3._derivedrelayout_datar   r;   rD   )
rb   rg   r
   r   r[   r   r_   r`   re   rf   rh   r   r   s      r   "testMapboxRangeXYCallbackEventDataz0TestCallbacks.testMapboxRangeXYCallbackEventData   s     -t/BC!.0C D
 

 %H]D,@
 

 	!%!4AUVV!%!4AUVV&
 &
 	 	 	 	 	r   c                     d| j         id| j        id}t          j        d|| j                  }|                     |d| j        id| j        id           d S )Nr   r   r   r   r   )rb   rg   r	   r   r[   r   r_   re   r   s      r   !testMapboxRangeXCallbackEventDataz/TestCallbacks.testMapboxRangeXCallbackEventData   s     -t/BC!.0C D
 

 $G]D,@
 

 	!45!45&
 &
 	 	 	 	 	r   c                     d| j         id| j        id}t          j        d|| j                  }|                     |d| j        id| j        id           d S )Nr   r   r   r   r   )rb   rg   r   r   r[   r   r`   rf   r   s      r   !testMapboxRangeYCallbackEventDataz/TestCallbacks.testMapboxRangeYCallbackEventData   s     -t/BC!.0C D
 

 $G]D,@
 

 	!56!56&
 &
 	 	 	 	 	r   c                 Z   t           t          t          g}t          t           g dt          d          \  }}}}t          t          g dt
          d          \  }}}}	t          t          g dt          d          \  }
}}}|D ]%}|                     t          |          d           &ddgddgd}|D ]}|	                    d|| j
                   t          |d	         |d         z   |d	         |d         z   |d	         |d         z             D ]:\  }}}|j        d
k    sJ |j        dk    sJ |j        d
k    sJ |j        dk    sJ ;t          |d         |d         z   |d         |d         z   |d         |d         z             D ]*\  }}}|j        J |j        J |j        J |j        J +ddgd	dgd}|D ]}|	                    d|| j
                   t          |d         |d         |d                   D ]:\  }}}|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ ;ddgddgd}|D ]}|	                    d|| j
                   t          |d         |d         |d                   D ]:\  }}}|j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ ;t          |d         |	d         |d                   D ]E\  }}}t          |          d	k    sJ t          |          d	k    sJ t          |          d	k    sJ Fd S )Nr;   r@   rD   rG   otherr   r9   rw   rx   ry   rz   r|   r   r}   r~   r:      )zxaxis2.rangezyaxis2.ranger   ry   r   r      )zxaxis3.rangezyaxis3.ranger:   r   r9   r   )r
   r	   r   r4   r   r   r   r   len#update_streams_from_property_updaterZ   zipr   r   )rh   range_classesxyplots
xystreamssxycallbacksxyeventsxplots	xstreamss
xcallbacksxeventsyplots	ystreamss
ycallbacksyevents	xystreams	viewport1cb_clsxystreamxstreamystream	viewport2	viewport3xyeventxeventyevents                            r   testRangeCallbacksz TestCallbacks.testRangeCallbacks  st    )..I5GKKKQ6
 6
2[(
 2DJJJA2
 2
.	:w
 2DJJJA2
 2
.	:w $ 	0 	0IS^^Q//// &'FB7CC	# 	 	F66It}   
 +.1
1-!y|+!y|++
 +
 	. 	.&Hgw
 #v----#w....?f,,,,?g----- +.1
1-!y|+!y|++
 +
 	+ 	+&Hgw
 #+++#+++?***?**** '(VaVDD	# 	 	F66It}   
 +.1y|Yq\+
 +
 	- 	-&Hgw #v----#v----?f,,,,?f,,,,, '(VaVDD	# 	 	F66It}   
 +.1y|Yq\+
 +
 	- 	-&Hgw #v----#v----?f,,,,?f,,,,, (+WQZ(
 (
 	$ 	$#GVV w<<1$$$$v;;!####v;;!#####	$ 	$r   c                     dddgddgdi}t          j        d|| j                  }|                     |dd	idd	idd idd id
           d S )Nr%   r9   rw   rx   ry   rA   r=   selected_databoundsr9   rx   rw   ry   r;   r@   rD   rG   )r   r   rZ   r   rh   selected_data1r   s      r   testBoundsXYCallbackEventDataz+TestCallbacks.testBoundsXYCallbackEventData^  s    !!Qr1g#>#>?%I^T]
 

 	./%%	&
 &
 	 	 	 	 	r   c                     dddgddgdi}t          j        d|| j                  }|                     |dd	idd	idd idd id
           d S )Nr%   r9   rw   rx   ry   r   r   boundsxr}   r   )r   r   rZ   r   r   s      r   testBoundsXCallbackEventDataz*TestCallbacks.testBoundsXCallbackEventDatak  s    !!Qr1g#>#>?$H^T]
 

 	( &)&&	&
 &
 	 	 	 	 	r   c                     dddgddgdi}t          j        d|| j                  }|                     |dd	idd	idd idd id
           d S )Nr%   r9   rw   rx   ry   r   r   boundsyr~   r   )r   r   rZ   r   r   s      r   testBoundsYCallbackEventDataz*TestCallbacks.testBoundsYCallbackEventDatax  s    !!Qr1g#>#>?$H^T]
 

 	) '*&&	&
 &
 	 	 	 	 	r   c           
      L   dd| j         d         | j        d         g| j         d         | j        d         ggii}t          j        d|| j                  }|                     |dd id| j        d         | j        d         | j        d         | j        d         fidd id           d S )Nr%   rQ   r   r9   r   r   r;   r@   rD   )r\   r]   r   r   r[   r   r_   r`   rh   r   r   s      r   #testMapboxBoundsXYCallbackEventDataz1TestCallbacks.testMapboxBoundsXYCallbackEventData  s     9_Q!34_Q!34/
 # 
 &I]D,@
 

 	%#A&(<Q(?#A&(<Q(?"  %&
 &
 	 	 	 	 	r   c                    dd| j         d         | j        d         g| j         d         | j        d         ggii}t          j        d|| j                  }|                     |d| j        d         | j        d         fidd idd id           d S )Nr%   rO   r   r9   r   r   r   )r\   r]   r   r   r[   r   r_   r   s      r   "testMapboxBoundsXCallbackEventDataz0TestCallbacks.testMapboxBoundsXCallbackEventData  s     8_Q!34_Q!34.
 # 
 %H]D,@
 

 	#A&(;A(>"  !$'&&
 &
 	 	 	 	 	r   c           	         dd| j         d         | j        d         g| j         d         | j        d         ggii}t          j        d|| j                  }|                     |dd idd id| j        d         | j        d         fid           d S )Nr%   rR   r   r9   r   r   r   )r\   r]   r   r   r[   r   r`   r   s      r   "testMapboxBoundsYCallbackEventDataz0TestCallbacks.testMapboxBoundsYCallbackEventData  s     9_Q!34_Q!34/
 # 
 %H]D,@
 

 	& $'#A&(<Q(?" &
 &
 	 	 	 	 	r   c                    t           t          t          g}t          t           g dt          d          \  }}}}t          t          g dt
          d          \  }}}}	t          t          g dt          d          \  }
}}}dddgddgdi}|D ]}|                    d	|| j                   t          |d
         |d         z   |d
         |d         z   |d
         |d         z             D ]-\  }}}|j
        dk    sJ |j        dk    sJ |j        dk    sJ .t          |d         |d         z   |d         |d         z   |d         |d         z             D ]!\  }}}|j
        J |j        J |j        J "dddgd
dgdi}|D ]}|                    d	|| j                   t          |d         |d         |d                   D ]-\  }}}|j
        dk    sJ |j        dk    sJ |j        dk    sJ .dddgddgdi}|D ]}|                    d	|| j                   t          |d         |d         |d                   D ]-\  }}}|j
        dk    sJ |j        dk    sJ |j        dk    sJ .dg dg ddi}|D ]}|                    d	|| j                   t          |d
         |d         z   |d         z   |d         z   |d
         |d         z   |d         z   |d         z   |d
         |d         z   |d         z   |d         z             D ]!\  }}}|j
        J |j        J |j        J "t          |d         |	d         |d                   D ]\  }}}|g k    sJ |g k    sJ |g k    sJ d S )Nr   r   r%   r9   rw   rx   ry   r   r   r   r   r}   r~   r:   r   )rE   rF   )r   r   ry   r   r   r   r   )rH   rI   )r:   r9   r   r   r   r   lassoPoints)r9   rw   r   )rx   ry   r   )r   r   r   r4   r   r   r   r   rZ   r   r   r   r   )rh   bounds_classesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   selected_data2selected_data3selected_data_lassor   r   r   s                            r   testBoundsCallbacksz!TestCallbacks.testBoundsCallbacks  s    +O_M5GLLLa6
 6
2[(
 2DKKKQ2
 2
.	:w
 2DKKKQ2
 2
.	:w "!Qr1g#>#>?$ 	 	F66   
 +.1
1-!y|+!y|++
 +
 	. 	.&Hgw
 ?m3333?f,,,,?g----- +.1
1-!y|+!y|++
 +
 	+ 	+&Hgw
 ?***?***?**** "1a&A#?#?@$ 	 	F66   
 +.1y|Yq\+
 +
 	- 	-&Hgw ?l2222?f,,,,?f,,,,, "1a&A#?#?@$ 	 	F66   
 +.1y|Yq\+
 +
 	- 	-&Hgw ?l2222?f,,,,?f,,,,,  -IIIJJJ.O.OP$ 	 	F66!4dm    +.1
1-
1=
1M!y|+il:Yq\I!y|+il:Yq\I+
 +
 	+ 	+&Hgw
 ?***?***?**** (+WQZ(
 (
 	  	 #GVV b====R<<<<R<<<<<	  	 r   c                     dddddddgi}t          j        d|| j                  }|                     |dddgidg idg idg id           d S )Npointsr   pointNumbercurveNumberr   r   indexr   )r   r   rZ   r   r   s      r    testSelection1DCallbackEventDataz.TestCallbacks.testSelection1DCallbackEventData$  s    "a00a00%
 
 )L^T]
 

 	1v&mr]r]	&
 &
 	 	 	 	 	r   c                     dddddddgi}t          j        d|| j                  }|                     |dg idddgidg id           d S )	Nr   r   r9   r   r   r   r   r   )r   r   r[   r   r   s      r   &testMapboxSelection1DCallbackEventDataz4TestCallbacks.testMapboxSelection1DCallbackEventData5  s    "a00a00%
 
 )L^T-A
 

 	r]A'r]&
 &
 	 	 	 	 	r   c                    t          t          g dt          d          \  }}}}dddddddgi}t          j        d|| j                   t          |d         |d                   D ])\  }}|j        ddgk    sJ t          |          dk    sJ *|d         |d         z   |d         z   D ]}|j        g k    sJ dddddddddddddgi}t          j        d|| j                   |d         D ]}|j        ddgk    sJ |d         D ]}|j        ddgk    sJ |d         |d         z   D ]}|j        g k    sJ dddddddgi}t          j        d|| j                   t          |d         |d                   D ]\  }}|j        ddgk    sJ t          |d	         |d	                   D ]\  }	}t          |          dk    sJ d S )
Nr   r   r   r   r   r   r9   r:   rw   )r4   r   r   r   rZ   r   r   r   )
rh   r+   r,   r-   
sel_eventsr   r2   r"   _events_streams
             r   testSelection1DCallbackz%TestCallbacks.testSelection1DCallbackE  s   1C!O!O!O2
 2
.xJ #a00a00%
  	?^T]	
 	
 	

 "(1+z!}== 	$ 	$NFF<Aq6))))v;;!##### qkHQK/(1+= 	& 	&F<2%%%%% #a00a00a00a00	%
  	?^T]	
 	
 	

 qk 	* 	*F<Aq6))))) qk 	* 	*F<Aq6))))) qkHQK/ 	& 	&F<2%%%%% #a00a00%
  	?^T]	
 	
 	

  #8A;
1>> 	* 	*OFG<Aq6)))))  #8A;
1>> 	$ 	$OGVv;;!#####	$ 	$r   N)__name__
__module____qualname__ri   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r6   r6   D   sE       @
 @
 @
DF F F>            [$ [$ [$z        &  $  $f  f  f P  "   @$ @$ @$ @$ @$r   r6   r   )r   )r   unittestr   unittest.mockr   plotly.graph_objs
graph_objsrW   	holoviewsr   #holoviews.plotting.plotly.callbacksr   r   r   r	   r
   r   r   holoviews.streamsr   r   r   r   r   r   r   r   r4   r6   r   r   r   <module>r      sp                                                                / / / /<A	$ A	$ A	$ A	$ A	$H A	$ A	$ A	$ A	$ A	$r   