
    e                     X   d dl Z d dlZd dlZd dlZd dl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 d d	lmZ d d
lm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"m#Z#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z*  e&j+        d          Z, G d de          Z- G d de          Z.dS )    N)pull_session)Document)curdoc
set_curdoc)ColumnDataSource)serve)state)DiscreteSliderFloatSlider)Store)
DynamicMap)CurveHLinePathPolygons)ComparisonTestCase)Renderer)CallbackRangeXYCallbackResetCallback)BokehRenderer)	PlotResetRangeXYStreamserver)modec                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestBokehServerSetupc                 0   t           j        | _        dt           _        t                      | _        t          t                                 t          j        | _	        t          j        d          5  dt          _        d d d            d S # 1 swxY w Y   d S )NbokehERRORF)r   current_backendprevious_backendr   docr   r   r   notebook_context	nbcontextparamlogging_levelselfs    Jlib/python3.11/site-packages/holoviews/tests/plotting/bokeh/test_server.pysetUpzTestBokehServerSetup.setUp   s     % 5 '888::!2 )) 	. 	.(-H%	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   1BBBc                 z   | j         t          _        d t          _        i t
          _        t          j        d          5  | j	        t          _        d d d            n# 1 swxY w Y   d t          _        t                                                       t          | j                   t#          j        d           d S )Nr!      )r#   r   r"   bokeh_renderer	last_plotr   
_callbacksr'   r(   r&   r   r%   r	   r   clearr   r$   timesleepr)   s    r+   tearDownzTestBokehServerSetup.tearDown%   s     $ 5#'   )) 	7 	7(,H%	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	748
1s   AA #A c                     t          g           }t                              |          }|                     |t	                                 |                     t          j        j        t	                                 d S N)r   r/   
server_docassertIsr   r0   document)r*   objr$   s      r+   test_render_server_doc_elementz3TestBokehServerSetup.test_render_server_doc_element0   s\    Bii'',,c688$$$n.7BBBBB    c                     t          g           }t                      }t                              ||          }|                     ||           |                     t          j        j        |           d S r7   )r   r   r/   r8   r9   r0   r:   )r*   r;   r$   r8   s       r+   'test_render_explicit_server_doc_elementz<TestBokehServerSetup.test_render_explicit_server_doc_element6   s_    Biijj#..sC88
j#&&&n.7=====r=   c                    t          g           }t          |          }t                              |          }|                     |t
                     |                     t          t          j        j	                  d           t          j        j	        d         }|                     |t                     |                     |j        |g           dt          j        j        j        v sJ d S )Nsourcer.   r   rangesupdate)r   r   r/   r8   assertIsInstancer   assertEquallenr0   	callbacksr   streamsr	   _event_callbacksr*   r;   streamr8   cbs        r+   .test_set_up_linked_change_stream_on_server_doczCTestBokehServerSetup.test_set_up_linked_change_stream_on_server_doc=   s    Bii$$$#..s33
j(333^5?@@!DDD%/2b/222fX...!9!?!PPPPPPPr=   c                 J   t          g           }t          |          }t                              |          }|                     |t
                     t          j        j        d         }|                     |t                     | 	                    |j
        |g           d S )NrA   r   )r   r   r/   r8   rD   r   r0   rG   r   rE   rH   rJ   s        r+   -test_set_up_linked_event_stream_on_server_doczBTestBokehServerSetup.test_set_up_linked_event_stream_on_server_docH   s    Bii#&&&#..s33
j(333%/2b-000fX.....r=   N)	__name__
__module____qualname__r,   r5   r<   r?   rM   rO    r=   r+   r   r      st        . . .	 	 	C C C> > >	Q 	Q 	Q/ / / / /r=   r   c                       e Zd Zd Zd ZddZed             Zd Zd Z	e
j                            d	
          d             Zd Zd Zd ZdS )TestBokehServerc                 N    t           j        | _        dt           _        d | _        d S )Nr    )r   r"   r#   _portr)   s    r+   r,   zTestBokehServer.setUpU   s      % 5 '


r=   c                     | j         t          _        i t          _        t          j                     t          j        d           d S Nr.   )	r#   r   r"   r   r1   r	   kill_all_serversr3   r4   r)   s    r+   r5   zTestBokehServer.tearDownZ   s5     $ 5    
1r=   Tq  c                    	 t          j                     n5# t          $ r( t          j        t          j                               Y nw xY w|| _        t          ||d|          }t          j        d           || j	        fS )NF)threadedshowportg      ?)
asyncioget_event_loop	Exceptionset_event_loopnew_event_looprW   r   r3   r4   session)r*   r;   r]   r_   r   s        r+   	_launcherzTestBokehServer._launcher`   s    	= "$$$$ 	= 	= 	="7#9#;#;<<<<<	= 
sXEEEE
3t|##s    /AAc                 X    dt          | j                  z   dz   }t          d|          S )Nzhttp://localhost:/Test)
session_idurl)strrW   r   )r*   rk   s     r+   re   zTestBokehServer.sessionm   s,    !C
OO3c9v37777r=   c                 R    t          g           }|                     |d           d S )Nr[   r_   )r   rf   )r*   r;   s     r+   test_launch_simple_serverz)TestBokehServer.test_launch_simple_serverr   s)    Biis&&&&&r=   c                    t          g           }t          |          }t                              |d           \  }}|                     |d          \  }}|j                                        \  \  }}|j        d         }|                     |t                     | 
                    |j        |g           d|j        j        v sJ d S )NrA   ir  rn   r   rC   )r   r   r/   	_validaterf   _plotsvaluesrG   rD   r   rE   rH   r	   rI   )r*   elrK   r;   _r   plotrL   s           r+   test_launch_server_with_streamz.TestBokehServer.test_launch_server_with_streamv   s    2YY###))"d33QNN3TN22	j''))$^Ab/222fX...!<<<<<<<r=      )rerunsc                     t          d t                      g          }|t          d          z  }t          g           t	          g           z  t          g           z  }||z   }|                     |d           d S )Nc                      t          g           S r7   r   )x_rangey_ranges     r+   <lambda>zFTestBokehServer.test_launch_server_with_complex_plot.<locals>.<lambda>   s    599 r=   )rH   r   is  rn   )r   r   r   r   r   r   rf   )r*   dmapoverlaystaticlayouts        r+   $test_launch_server_with_complex_plotz4TestBokehServer.test_launch_server_with_complex_plot   st    <<wyykRRRq/"R(59946!vD)))))r=   c                 D  	 t          d dg          j                            d          }t                              |d           \  }}|                     |d          \  }}|j                                        \  \  }}|j        	                                \  \  }}|j
        j        d                             d	t          i          }|                     |j        d         d
         d           |j                            t$                    d         		fd}|                    |           t)          j        d           | j        j
        j        d                             d	t          i          }|                     |j        d         d
         d           d S )Nc                 &    t          dd| g          S Nr.      r|   ys    r+   r   zBTestBokehServer.test_server_dynamicmap_with_dims.<locals>.<lambda>       E1a)$4$4 r=   r   )kdims)皙?   r   it  rn   r   typer   r   c                      d _         d S )N@valuesliders   r+   runz=TestBokehServer.test_server_dynamicmap_with_dims.<locals>.run   s    FLLLr=   r.   r   )r   redimranger/   rq   rf   rr   rs   
_documentsitemsr:   roots
select_oner   rE   datar   selectr   add_next_tick_callbackr3   r4   re   )
r*   r   r;   ru   re   rv   r$   cdsr   r   s
            @r+    test_server_dynamicmap_with_dimsz0TestBokehServer.test_server_dynamicmap_with_dims   sz   44SEBBBHNNQYNZZ))$55Q^^Cd^33
7j''))$^))++
#q$Q'22F<L3MNN#q)3///"";//2	 	 	 	 	""3'''
1l#)!,77AQ8RSS#q)3/////r=   c                     t          j        dd                      t          d dgg          }t                              |d           \  }}|                     |d          \  }}|j                                        \  \  }}|j        j	        d	         
                    d
t          i          }|                     |j        d         d         d           fd}|                    |           t          j        d           | j        j        j	        d	         
                    d
t          i          }|                     |j        d         d         d           d S )NCustomr   r   c                 &    t          dd| g          S r   r|   r   s    r+   r   zDTestBokehServer.test_server_dynamicmap_with_stream.<locals>.<lambda>   r   r=   r   r   rH   iu  rn   r   r   c                  4                          d           d S Nrx   r   eventrK   s   r+   r   z?TestBokehServer.test_server_dynamicmap_with_stream.<locals>.run       LL1Lr=   r.   rx   )r   definer   r/   rq   rf   r   r   r:   r   r   r   rE   r   r   r3   r4   re   )	r*   r   r;   ru   re   r$   r   r   rK   s	           @r+   "test_server_dynamicmap_with_streamz2TestBokehServer.test_server_dynamicmap_with_stream   sR   -x1---//44SEF8TTT))$55Q^^Cd^33
7^))++
#q$Q'22F<L3MNN#q)1---	 	 	 	 	""3'''
1l#)!,77AQ8RSS#q)1-----r=   c                   	
  t          j        dd                      
t          d ddg
g          j                            g d	          }t
                              |d           \  }}|                     |d
          \  }}|j        	                                \  \  }}|j
        j        d                             dt          i          }|                     |j        d         d         d           
fd}|                    |           t#          j        d           | j        j
        j        d                             dt          i          }|                     |j        d         d         d           |                     |j        d         d         d           |j                            t,                    d         		fd}|                    |           t#          j        d           | j        j
        j        d                             dt          i          }|                     |j        d         d         d           d S )Nr   r   r   c                 &    t          | d|g          S rY   r|   )xr   s     r+   r   zITestBokehServer.test_server_dynamicmap_with_stream_dims.<locals>.<lambda>   s    uaAY'7'7 r=   r   r   r   )r.   r   rx   )r   iv  rn   r   r   c                  4                          d           d S r   r   r   s   r+   r   zDTestBokehServer.test_server_dynamicmap_with_stream_dims.<locals>.run   r   r=   r.   rx   c                      d _         d S )Nrx   r   r   s   r+   r   zDTestBokehServer.test_server_dynamicmap_with_stream_dims.<locals>.run   s    FLLLr=   )r   r   r   r   rs   r/   rq   rf   r   r   r:   r   r   r   rE   r   r   r3   r4   re   r   r   r
   )r*   r   r;   ru   re   r$   orig_cdsr   r   r   rK   s            @@r+   'test_server_dynamicmap_with_stream_dimsz7TestBokehServer.test_server_dynamicmap_with_stream_dims   s2   -x1---//77Sz#)(, , ,,1&&999&2E2E 	))$55Q^^Cd^33
7^))++
#q#)!,77AQ8RSSs+A.222	 	 	 	 	""3'''
1l#)!,77AQ8RSS#q)1---s+A.222"">2215	 	 	 	 	""3'''
1l#)!,77AQ8RSS#q)1-----r=   N)Tr[   )rP   rQ   rR   r,   r5   rf   propertyre   ro   rw   pytestmarkflakyr   r   r   r   rS   r=   r+   rU   rU   S   s          
  $ $ $ $ 8 8 X8' ' '= = = [a  * * ! *0 0 0". . . . . . . .r=   rU   )/r`   r3   r'   r   bokeh.clientr   bokeh.documentr   bokeh.io.docr   r   bokeh.modelsr   panelr   panel.io.stater	   panel.widgetsr
   r   holoviews.core.optionsr   holoviews.core.spacesr   holoviews.elementr   r   r   r   holoviews.element.comparisonr   holoviews.plottingr   "holoviews.plotting.bokeh.callbacksr   r   r   !holoviews.plotting.bokeh.rendererr   holoviews.streamsr   r   r   instancer/   r   rU   rS   r=   r+   <module>r      s       % % % % % % # # # # # # + + + + + + + + ) ) ) ) ) )                   5 5 5 5 5 5 5 5 ( ( ( ( ( ( , , , , , , : : : : : : : : : : : : ; ; ; ; ; ; ' ' ' ' ' ' W W W W W W W W W W ; ; ; ; ; ; 8 8 8 8 8 8 8 8 8 8''X6665/ 5/ 5/ 5/ 5/- 5/ 5/ 5/rr. r. r. r. r.( r. r. r. r. r.r=   