ó
mÜJ]c           @` s(  d  d l  m Z m Z m Z m Z d  d l Z e d  d l Z d  d l m Z d  d l	 Z	 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 d  d l j Z d  d	 l m Z d  d
 l m Z m Z d  d l m Z m Z m  Z  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, m- Z- m. Z. d e& f d „  ƒ  YZ/ d e& f d „  ƒ  YZ0 d e& f d „  ƒ  YZ1 d e& f d „  ƒ  YZ2 e j3 d e j4 ƒ d e5 f d „  ƒ  YZ6 d „  Z7 d „  Z8 d „  Z9 e d ƒ d „  ƒ Z: d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   patch(   t   gen(   t	   HTTPError(   t   Application(   t   FunctionHandler(   t   pull_sessiont   push_sessiont   ClientSession(   t   Document(   t   ModelChangedEventt   TitleChangedEvent(   t   Intt   Instancet   Dictt   Stringt   Anyt   DistanceSpect	   AngleSpec(   t   Model(   t   Plot(   t   ManagedServerLoopt   urlt   ws_urlt   http_gett   websocket_opent   AnotherModelInTestClientServerc           B` s   e  Z e d  ƒ Z RS(   i   (   t   __name__t
   __module__R   t   bar(    (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR   3   s   t   SomeModelInTestClientServerc           B` s    e  Z e d  ƒ Z e e ƒ Z RS(   i   (   R   R   R   t   fooR   R   t   child(    (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR!   6   s   t	   DictModelc           B` s   e  Z e e e ƒ Z RS(    (   R   R   R   R   R   t   values(    (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR$   ;   s   t   UnitsSpecModelc           B` s    e  Z e d  ƒ Z e d ƒ Z RS(   i*   i    (   R   R   R   t   distanceR   t   angle(    (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR&   >   s   t   levelt   TestClientServerc           B` s7  e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z
 d d „ Z d d	 „ Z d
 „  Z d „  Z d „  Z d „  Z e j j e j d k d d ƒd „  ƒ Z d „  Z d „  Z e j d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% RS(    c         C` s_   t  ƒ  } t | ƒ D } t d d d | j d t | ƒ ƒ } | j ƒ  | j sU t ‚ Wd  QXd  S(   Nt
   session_idu#   test_minimal_connect_and_disconnectt   io_loopt   websocket_url(   R   R   R   R,   R   t   connectt	   connectedt   AssertionError(   t   selft   applicationt   servert   session(    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt#   test_minimal_connect_and_disconnectF   s    		
c         C` sÂ   t  ƒ  } t | ƒ § } t d d d t | ƒ d | j ƒ } | j ƒ  | j sU t ‚ | j j	 j
 d d t ƒ| j d t ƒ | j sŽ t ‚ | j ƒ  | j d t ƒ | j s¸ t ‚ Wd  QXd  S(   NR+   u   test_disconnect_on_errorR-   R,   t   xxt   binaryt   suppress_warning(   R   R   R   R   R,   R.   R/   R0   t   _connectiont   _sockett   write_messaget   Truet   loop_until_closedt   close(   R1   R2   R3   R4   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   test_disconnect_on_errorR   s    	

c         C` sÎ   t  ƒ  } t | d d ƒ­ } t d | j d t | d ƒ ƒ } | j ƒ  | j sX t ‚ | j ƒ  | j	 d t
 ƒ t d | j d t | ƒ ƒ } | j ƒ  | j sª t ‚ | j ƒ  | j	 d t
 ƒ Wd  QXd  S(   Nt   prefixu   fooR,   R-   u   /fooR8   (   R   R   R   R,   R   R.   R/   R0   R>   R=   R<   (   R1   R2   R3   R4   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   test_connect_with_prefixd   s    	



c      	   C` s`   t  j t ƒ  t | j t | ƒ ƒ Wd  QXt  j t ƒ  t | j t | ƒ d ƒ Wd  QXd  S(   Nu&   autoload.js?bokeh-autoload-element=foo(   t   pytestt   raisesR   R   R,   R   (   R1   R3   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   check_http_gets_failx   s    c      	   C` s:   t  j t ƒ % t | j t | ƒ d d | ƒWd  QXd  S(   Nu0   ?bokeh-protocol-version=1.0&bokeh-session-id=foot   origin(   RB   RC   R   R   R,   R   (   R1   R3   RE   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   check_connect_session_fails~   s    	c         C` s4   t  | j t | ƒ ƒ t  | j t | ƒ d ƒ d  S(   Nu&   autoload.js?bokeh-autoload-element=foo(   R   R,   R   (   R1   R3   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   check_http_gets„   s    c         C` s$   t  | j t | ƒ d d | ƒd  S(   Nu0   ?bokeh-protocol-version=1.0&bokeh-session-id=fooRE   (   R   R,   R   (   R1   R3   RE   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   check_connect_sessionˆ   s    	c         C` s$   |  j  | ƒ |  j | d | ƒd  S(   NRE   (   RG   RH   (   R1   R3   RE   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   check_http_ok_socket_ok   s    c         C` s$   |  j  | ƒ |  j | d | ƒd  S(   NRE   (   RG   RF   (   R1   R3   RE   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   check_http_ok_socket_blocked‘   s    c         C` s$   |  j  | ƒ |  j | d | ƒd  S(   NRE   (   RD   RF   (   R1   R3   RE   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt!   check_http_blocked_socket_blocked•   s    c         C` s  t  ƒ  } t | d d g ƒ } |  j | d d ƒWd  QXt | ƒ 1 } d t j d <|  j | d d ƒt j d =Wd  QXt | d d g ƒ } |  j | d d ƒWd  QXt | ƒ 1 } d t j d <|  j | d d ƒt j d =Wd  QXt | d d g ƒ } |  j | d d ƒWd  QXt | ƒ 1 } d t j d <|  j | d d ƒt j d =Wd  QXt | ƒ  } |  j | d d ƒWd  QXt | ƒ  } |  j | d d	 ƒWd  QXt | d d g ƒ } |  j | d d
 ƒWd  QXt | ƒ 1 } d t j d <|  j | d d
 ƒt j d =Wd  QXt | d d g ƒ } |  j | d d ƒWd  QXt | ƒ 1 } d t j d <|  j | d d ƒt j d =Wd  QXd  S(   Nt   allow_websocket_originu   example.comRE   u   http://example.com:80u   BOKEH_ALLOW_WS_ORIGINu   example.com:8080u   http://example.com:8080u   http://example.comu   hsdf:::///%#^$#:8080u   http://foobar.com:80u   http://example.com:8081(   R   R   RI   t   ost   environRJ   (   R1   R2   R3   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   test_allow_websocket_origin™   sF    	c         C` s˜  t  ƒ  } t | ƒ }} t j ƒ  } | j t d d ƒ ƒ | j t d d ƒ ƒ t | d d d t | ƒ d | j	 ƒ} | j | k sŒ t
 ‚ t | j j ƒ d	 k sª t
 ‚ | j d
 | j ƒ } t | j j ƒ d	 k sÝ t
 ‚ i  } xR | j j D]D } t | d ƒ r| j | d <n  t | d ƒ rð | j | d <qð qð W| d d k sNt
 ‚ | d d k sdt
 ‚ | j ƒ  | j d t ƒ | j sŽt
 ‚ Wd  QXd  S(   NR    i+   R"   i*   R+   u   test_push_documentR   R,   i   u   /u   foou   barR8   (   R   R   t   documentR   t   add_rootR   R!   R
   R   R,   R0   t   lent   rootst   get_sessiont   idt   hasattrR"   R    R>   R=   R<   R/   (   R1   R2   R3   t   doct   client_sessiont   server_sessiont   resultst   r(    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   test_push_documentÖ   s0    		
c   	      C` sj  t  ƒ  } d „  } t | ƒ } | j | ƒ t | ƒ -} t d d d t | ƒ d | j ƒ } t | j j	 ƒ d k s| t
 ‚ | j d | j ƒ } t | j j	 ƒ d k s¯ t
 ‚ i  } xR | j j	 D]D } t | d ƒ rç | j | d <n  t | d	 ƒ rÂ | j | d	 <qÂ qÂ W| d d
 k s t
 ‚ | d	 d k s6t
 ‚ | j ƒ  | j d t ƒ | j s`t
 ‚ Wd  QXd  S(   Nc         S` s0   |  j  t d d ƒ ƒ |  j  t d d ƒ ƒ d  S(   NR    i+   R"   i*   (   RQ   R   R!   (   RW   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt	   add_roots÷   s    R+   u   test_pull_documentR   R,   i   u   /u   foou   bari*   i+   R8   (   R   R   t   addR   R	   R   R,   RR   RP   RS   R0   RT   RU   RV   R"   R    R>   R=   R<   R/   (	   R1   R2   R]   t   handlerR3   RX   RY   RZ   R[   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   test_pull_documentõ   s,    		
c         C` sî   t  ƒ  } t | ƒ Ó } t d d d t | ƒ d | j ƒ } | j ƒ  | j sU t ‚ | j d  k sj t ‚ | j
 ƒ  } d d l m } | d d | k s  t ‚ | d d	 | k sº t ‚ | j ƒ  | j d
 t ƒ | j sä t ‚ Wd  QXd  S(   NR+   u   test_request_server_infoR-   R,   i    (   t   __version__u   version_infou   bokehu   serverR8   (   R   R   R   R   R,   R.   R/   R0   RP   t   Nonet   request_server_infot   bokehRa   R>   R=   R<   (   R1   R2   R3   R4   t   infoRa   (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   test_request_server_info  s    	

u   win32t   reasonu   uninmportant failure on winc         C` s'  t  ƒ  } t | d d ƒ} t d d d t | ƒ d | j ƒ } | j ƒ  | j s[ t ‚ | j d  k sp t ‚ t
 t | j j ƒ ƒ } | j } | j j ƒ  | j ƒ  | | j j k sÀ t ‚ | j j ƒ  | j ƒ  | d | j j k só t ‚ | j ƒ  | j d t ƒ | j st ‚ Wd  QXd  S(	   Nt   keep_alive_millisecondsi    R+   u	   test_pingR-   R,   i   R8   (   R   R   R   R   R,   R.   R/   R0   RP   Rb   t   nextt   itert   _tornadot   _clientst   _ping_countt   _keep_alivet   force_roundtripR:   t   latest_pongR>   R=   R<   (   R1   R2   R3   R4   t
   connectiont   expected_pong(    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt	   test_ping(  s&    	
	


c         ` sð  t  ƒ  } t | ƒ Õ} t j ƒ  } t d d ƒ } t | d d d t | ƒ d | j ƒ} | j d | j	 ƒ } t
 | j j ƒ d k s t ‚ | j | ƒ | j ƒ  t
 | j j ƒ d	 k sÂ t ‚ t t | j j ƒ ƒ ‰  | j d k sï t ‚ ˆ  j d k st ‚ | j j t j k st ‚ d
 | _ | j ƒ  | j j d
 k sJt ‚ d | _ ‡  f d †  } | j j | ƒ ˆ  j d k s‡t ‚ | j | ƒ | j ƒ  t
 | j j ƒ d k s¼t ‚ | j ƒ  | j d t ƒ | j sæt ‚ Wd  QXd  S(   NR"   i*   R+   u    test_client_changes_go_to_serverR   R,   u   /i    i   u   Client Titlei9   c           ` s   ˆ  j  d k S(   Ni9   (   R"   (    (   t   server_root(    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   server_change_madeg  s    R8   (   R   R   RP   R   R!   R
   R   R,   RT   RU   RR   RS   R0   RQ   Ro   Ri   Rj   R"   t   titlet   DEFAULT_TITLER9   t   _loop_untilt   remove_rootR>   R=   R<   R/   (   R1   R2   R3   RW   t   client_rootRX   RY   Ru   (    (   Rt   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt    test_client_changes_go_to_serverD  s:    	
	
	

c         ` s@  t  ƒ  } t | ƒ %} t j ƒ  ‰ t ˆ d d d t | ƒ d | j ƒ‰ | j d ˆ j ƒ ‰ t	 ˆ j j
 ƒ d k s~ t ‚ t d d ƒ ‰ ‡ ‡ f d	 †  } ˆ j | ƒ ‡ f d
 †  } ˆ j j | ƒ t t ˆ j j
 ƒ ƒ ‰  ˆ  j d k sø t ‚ ˆ j d k st ‚ ‡ f d †  } ˆ j | ƒ ‡ f d †  } ˆ j j | ƒ ˆ j j d k s`t ‚ ‡ f d †  } ˆ j | ƒ ‡  f d †  } ˆ j j | ƒ ˆ  j d k s°t ‚ ‡ ‡ f d †  }	 ˆ j |	 ƒ ‡ f d †  }
 ˆ j j |
 ƒ t	 ˆ j j
 ƒ d k st ‚ ˆ j ƒ  ˆ j d t ƒ ˆ j s6t ‚ Wd  QXd  S(   NR+   u    test_server_changes_go_to_clientR   R,   u   /i    R"   i*   c           ` s   ˆ j  j ˆ  ƒ d  S(   N(   RP   RQ   (    (   Rt   RY   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   do_add_server_root‚  s    c           ` s   t  ˆ  j ƒ d k S(   Ni    (   RR   RS   (    (   RW   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   client_has_root†  s    c           ` s   d ˆ  j  _ d  S(   Nu   Server Title(   RP   Rv   (    (   RY   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   do_set_server_title  s    c           ` s   ˆ  j  j t  j k S(   N(   RP   Rv   Rw   (    (   RX   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   client_title_set“  s    u   Server Titlec           ` s   d ˆ  _  d  S(   Ni9   (   R"   (    (   Rt   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   do_set_property_on_serverš  s    c           ` s   ˆ  j  d k S(   Ni9   (   R"   (    (   Rz   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   client_change_made¡  s    i9   c           ` s   ˆ j  j ˆ  ƒ d  S(   N(   RP   Ry   (    (   Rt   RY   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   do_remove_server_root¦  s    c           ` s   t  ˆ  j ƒ d k S(   Ni    (   RR   RS   (    (   RW   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   client_lacks_rootª  s    R8   (   R   R   RP   R   R
   R   R,   RT   RU   RR   RS   R0   R!   t   with_document_lockedR9   Rx   Ri   Rj   R"   Rv   R>   R=   R<   R/   (   R1   R2   R3   R|   R}   R~   R   R€   R   R‚   Rƒ   (    (   Rz   RX   RW   Rt   RY   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt    test_server_changes_go_to_clientt  sF    		
c         c` s   t  j Vt  j | ƒ ‚ d  S(   N(   R   t   momentt   Return(   R1   t   value(    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   async_value³  s    c         ` s!  t  ƒ  } t | ƒ } t j ƒ  } t | d d d t | ƒ d | j ƒ‰  t ƒ  ‰ | j ˆ ƒ t	 j
 ‡  ‡ ‡ f d †  ƒ } | j | d ƒ } ˆ  j d t ƒ t j t ƒ  } | j | ƒ Wd  QXd t | j ƒ k sá t ‚ t d	 d
 d d d d d d d d ƒ ˆ j k st ‚ Wd  QXd  S(   NR+   u!   test_client_session_timeout_asyncR   R,   c           3` s†   d ˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d	 ƒ Vˆ j  d
 <ˆ  j ƒ  t j d ƒ ‚ d  S(   Ni    u   ai   u   bi   u   ci   u   di   u   ei   (   R%   R‰   R>   R   R‡   (    (   RX   t   resultR1   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   cbÅ  s    
i
   R8   u   already removedt   ai    t   bi   t   ci   t   di   t   ei   (   R   R   RP   R   R
   R   R,   R$   RQ   R   t	   coroutinet   add_timeout_callbackR=   R<   RB   RC   t
   ValueErrort   remove_timeout_callbackt   reprRˆ   R0   t   dictR%   (   R1   R2   R3   RW   R‹   t   cb_idt   exc(    (   RX   RŠ   R1   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt!   test_client_session_timeout_async¸  s     			
c         ` s!  t  ƒ  } t | ƒ } t j ƒ  } t ƒ  ‰ | j ˆ ƒ t j ‡  ‡ ‡ f d †  ƒ } | j | d ƒ } t	 | d d d t
 | ƒ d | j ƒ‰  ˆ  j d t ƒ t j t ƒ  } | j | ƒ Wd  QXd t | j ƒ k sá t ‚ t d	 d
 d d d d d d d d ƒ ˆ j k st ‚ Wd  QXd  S(   Nc           3` s†   d ˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d	 ƒ Vˆ j  d
 <ˆ  j ƒ  t j d ƒ ‚ d  S(   Ni    u   ai   u   bi   u   ci   u   di   u   ei   (   R%   R‰   R>   R   R‡   (    (   RX   RŠ   R1   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR‹   á  s    
i
   R+   u!   test_client_session_timeout_asyncR   R,   R8   u   already removedRŒ   i    R   i   RŽ   i   R   i   R   i   (   R   R   RP   R   R$   RQ   R   R‘   R’   R
   R   R,   R=   R<   RB   RC   R“   R”   R•   Rˆ   R0   R–   R%   (   R1   R2   R3   RW   R‹   R—   R˜   (    (   RX   RŠ   R1   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt3   test_client_session_timeout_async_added_before_pushÙ  s     		
	c         ` sN  t  ƒ  } t | ƒ 3} t j ƒ  } | j t ƒ  ƒ t | d d d t | ƒ d | j ƒ‰  | j	 d ˆ  j
 ƒ } t t | j j ƒ ƒ ‰ t j ‡  ‡ ‡ f d †  ƒ } | j j | d ƒ } ˆ  j d t ƒ t j t ƒ  } | j j | ƒ Wd  QXd	 t | j ƒ k st ‚ t d
 d d d d d d d d d ƒ ˆ j k sDt ‚ Wd  QXd  S(   NR+   u!   test_server_session_timeout_asyncR   R,   u   /c           3` s†   d ˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d	 ƒ Vˆ j  d
 <ˆ  j ƒ  t j d ƒ ‚ d  S(   Ni    u   ai   u   bi   u   ci   u   di   u   ei   (   R%   R‰   R>   R   R‡   (    (   RX   RŠ   R1   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR‹     s    
i
   R8   u   already removedRŒ   i    R   i   RŽ   i   R   i   R   i   (   R   R   RP   R   RQ   R$   R
   R   R,   RT   RU   Ri   Rj   RS   R   R‘   R’   R=   R<   RB   RC   R“   R”   R•   Rˆ   R0   R–   R%   (   R1   R2   R3   RW   RY   R‹   R—   R˜   (    (   RX   RŠ   R1   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt!   test_server_session_timeout_asyncú  s"    		c         ` s  t  ƒ  } t | ƒ } t j ƒ  } t | d d d t | ƒ d | j ƒ‰  t ƒ  ‰ | j ˆ ƒ t	 j
 ‡  ‡ ‡ f d †  ƒ } | j | ƒ } ˆ  j d t ƒ t j t ƒ  } | j | ƒ Wd  QXd t | j ƒ k sÞ t ‚ t d d	 d
 d d d d d d d ƒ ˆ j k st ‚ Wd  QXd  S(   NR+   u#   test_client_session_next_tick_asyncR   R,   c           3` s†   d ˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d	 ƒ Vˆ j  d
 <ˆ  j ƒ  t j d ƒ ‚ d  S(   Ni    u   ai   u   bi   u   ci   u   di   u   ei   (   R%   R‰   R>   R   R‡   (    (   RX   RŠ   R1   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR‹   +  s    
R8   u   already removedRŒ   i    R   i   RŽ   i   R   i   R   i   (   R   R   RP   R   R
   R   R,   R$   RQ   R   R‘   t   add_next_tick_callbackR=   R<   RB   RC   R“   t   remove_next_tick_callbackR•   Rˆ   R0   R–   R%   (   R1   R2   R3   RW   R‹   R—   R˜   (    (   RX   RŠ   R1   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt#   test_client_session_next_tick_async  s     			
c         ` s  t  ƒ  } t | ƒ } t j ƒ  } t ƒ  ‰ | j ˆ ƒ t j ‡  ‡ ‡ f d †  ƒ } | j | ƒ } t	 | d d d t
 | ƒ d | j ƒ‰  ˆ  j d t ƒ t j t ƒ  } | j | ƒ Wd  QXd t | j ƒ k sÞ t ‚ t d d	 d
 d d d d d d d ƒ ˆ j k st ‚ Wd  QXd  S(   Nc           3` s†   d ˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d	 ƒ Vˆ j  d
 <ˆ  j ƒ  t j d ƒ ‚ d  S(   Ni    u   ai   u   bi   u   ci   u   di   u   ei   (   R%   R‰   R>   R   R‡   (    (   RX   RŠ   R1   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR‹   G  s    
R+   u#   test_client_session_next_tick_asyncR   R,   R8   u   already removedRŒ   i    R   i   RŽ   i   R   i   R   i   (   R   R   RP   R   R$   RQ   R   R‘   Rœ   R
   R   R,   R=   R<   RB   RC   R“   R   R•   Rˆ   R0   R–   R%   (   R1   R2   R3   RW   R‹   R—   R˜   (    (   RX   RŠ   R1   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt5   test_client_session_next_tick_async_added_before_push?  s     		
	c         ` sK  t  ƒ  } t | ƒ 0} t j ƒ  } | j t ƒ  ƒ t | d d d t | ƒ d | j ƒ‰  | j	 d ˆ  j
 ƒ } t t | j j ƒ ƒ ‰ t j ‡  ‡ ‡ f d †  ƒ } | j j | ƒ } ˆ  j d t ƒ t j t ƒ  } | j j | ƒ Wd  QXd t | j ƒ k st ‚ t d	 d
 d d d d d d d d ƒ ˆ j k sAt ‚ Wd  QXd  S(   NR+   u#   test_server_session_next_tick_asyncR   R,   u   /c           3` s†   d ˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d	 ƒ Vˆ j  d
 <ˆ  j ƒ  t j d ƒ ‚ d  S(   Ni    u   ai   u   bi   u   ci   u   di   u   ei   (   R%   R‰   R>   R   R‡   (    (   RX   RŠ   R1   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR‹   n  s    
R8   u   already removedRŒ   i    R   i   RŽ   i   R   i   R   i   (   R   R   RP   R   RQ   R$   R
   R   R,   RT   RU   Ri   Rj   RS   R   R‘   Rœ   R=   R<   RB   RC   R“   R   R•   Rˆ   R0   R–   R%   (   R1   R2   R3   RW   RY   R‹   R—   R˜   (    (   RX   RŠ   R1   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt#   test_server_session_next_tick_async`  s"    		c         ` sî   t  ƒ  } t | ƒ Ó } t j ƒ  } t | d d d t | ƒ d | j ƒ‰  t ƒ  ‰ | j ˆ ƒ t	 j
 ‡  ‡ ‡ f d †  ƒ } | j | d ƒ } ˆ  j d t ƒ | j | ƒ t d d	 d
 d d d d d d d ƒ ˆ j k sä t ‚ Wd  QXd  S(   NR+   u"   test_client_session_periodic_asyncR   R,   c           3` s†   d ˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d	 ƒ Vˆ j  d
 <ˆ  j ƒ  t j d ƒ ‚ d  S(   Ni    u   ai   u   bi   u   ci   u   di   u   ei   (   R%   R‰   R>   R   R‡   (    (   RX   RŠ   R1   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR‹   ‘  s    
i
   R8   RŒ   i    R   i   RŽ   i   R   i   R   i   (   R   R   RP   R   R
   R   R,   R$   RQ   R   R‘   t   add_periodic_callbackR=   R<   t   remove_periodic_callbackR–   R%   R0   (   R1   R2   R3   RW   R‹   R—   (    (   RX   RŠ   R1   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt"   test_client_session_periodic_async„  s    			
c         ` sî   t  ƒ  } t | ƒ Ó } t j ƒ  } t ƒ  ‰ | j ˆ ƒ t j ‡  ‡ ‡ f d †  ƒ } | j | d ƒ } t	 | d d d t
 | ƒ d | j ƒ‰  ˆ  j d t ƒ | j | ƒ t d d	 d
 d d d d d d d ƒ ˆ j k sä t ‚ Wd  QXd  S(   Nc           3` s†   d ˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d	 ƒ Vˆ j  d
 <ˆ  j ƒ  t j d ƒ ‚ d  S(   Ni    u   ai   u   bi   u   ci   u   di   u   ei   (   R%   R‰   R>   R   R‡   (    (   RX   RŠ   R1   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR‹   «  s    
i
   R+   u"   test_client_session_periodic_asyncR   R,   R8   RŒ   i    R   i   RŽ   i   R   i   R   i   (   R   R   RP   R   R$   RQ   R   R‘   R¡   R
   R   R,   R=   R<   R¢   R–   R%   R0   (   R1   R2   R3   RW   R‹   R—   (    (   RX   RŠ   R1   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt4   test_client_session_periodic_async_added_before_push£  s    		
	c         ` s  t  ƒ  } t | ƒ  } t j ƒ  } | j t ƒ  ƒ t | d d d t | ƒ d | j ƒ‰  | j	 d ˆ  j
 ƒ } t t | j j ƒ ƒ ‰ t j ‡  ‡ ‡ f d †  ƒ } | j j | d ƒ } ˆ  j d t ƒ | j j | ƒ t d	 d
 d d d d d d d d ƒ ˆ j k st ‚ Wd  QXd  S(   NR+   u"   test_server_session_periodic_asyncR   R,   u   /c           3` s†   d ˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d ƒ Vˆ j  d <ˆ j d	 ƒ Vˆ j  d
 <ˆ  j ƒ  t j d ƒ ‚ d  S(   Ni    u   ai   u   bi   u   ci   u   di   u   ei   (   R%   R‰   R>   R   R‡   (    (   RX   RŠ   R1   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR‹   Ð  s    
i
   R8   RŒ   i    R   i   RŽ   i   R   i   R   i   (   R   R   RP   R   RQ   R$   R
   R   R,   RT   RU   Ri   Rj   RS   R   R‘   R¡   R=   R<   R¢   R–   R%   R0   (   R1   R2   R3   RW   RY   R‹   R—   (    (   RX   RŠ   R1   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt"   test_server_session_periodic_asyncÂ  s    		c         ` sœ  t  ƒ  } d „  } t | ƒ } | j | ƒ t | d d ƒY‰ t d d d t ˆ ƒ d ˆ j ƒ ‰ ˆ j ss t ‚ ˆ j	 d ˆ j
 ƒ ‰ ‡ f d	 †  ‰ ˆ j j ˆ d
 ƒ ‰  ‡  ‡ ‡ f d †  } ˆ j j | d ƒ i  ‰ ‡ ‡ ‡ ‡ f d †  } ˆ j j | d ƒ ‡ f d †  } ˆ j j | ƒ ˆ j d t ƒ ˆ j sDt ‚ d ˆ k sVt ‚ ˆ d sft ‚ ˆ d d k s|t ‚ ˆ d d  k s’t ‚ Wd  QXd  S(   Nc         ` s  t  d d d d ƒ ‰ t d d d d ƒ ‰ t d d d d	 ƒ ‰ ˆ  j ˆ ƒ ˆ  j ˆ ƒ ˆ  j ˆ ƒ ‡ f d
 †  ‰ ˆ  j ˆ d ƒ ‰ ‡ f d †  ‰ ˆ  j ˆ d ƒ ‰ ‡  ‡ ‡ ‡ f d †  } ˆ  j | d ƒ ‡  ‡ ‡ ‡ f d †  } ˆ  j | d ƒ ‡ f d †  } ˆ  j | ƒ d  S(   NR    i+   t   nameu   m1R"   i*   u   m2iD   u   m3c           ` s   ˆ  j  d 7_  d  S(   Ni   (   R    (    (   t   m1(    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   timeout1í  s    i   c           ` s   ˆ  j  d 7_  d  S(   Ni   (   R"   (    (   t   m2(    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   timeout2ð  s    i   c           ` s7   ˆ j  d 7_  ˆ  j ˆ ƒ ˆ  j ˆ ˆ j  d ƒ d  S(   Ni   i   (   R    R”   R’   (    (   RW   R§   R¨   t   timeout1_cb_id(    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt	   periodic1ó  s    c           ` s7   ˆ j  d 7_  ˆ  j ˆ ƒ ˆ  j ˆ ˆ j  d ƒ d  S(   Ni   i   (   R"   R”   R’   (    (   RW   R©   Rª   t   timeout2_cb_id(    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt	   periodic2ø  s    c         ` s5   t  |  t ƒ r" |  j ˆ  k r" d  Sˆ  j d 7_ d  S(   Ni   (   t
   isinstanceR   t   modelR"   (   t   event(   t   m3(    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   server_on_changeþ  s    (   R   R!   RQ   R’   R¡   t	   on_change(   RW   R¬   R®   R³   (    (   RW   R§   R©   R²   R¨   R«   Rª   R­   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   setup_stuffæ  s     Rh   i   R+   u    test_lots_of_concurrent_messagesR   R,   u   /c          ` s-   ˆ  j  j d }  |  j d  d  d … |  _ d  S(   Ni    iÿÿÿÿ(   RP   RS   R¦   (   t   m(   R4   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   client_timeout  s    i   c          ` sP   ˆ j  j d }  |  j d  d  d … |  _ ˆ j  j ˆ  ƒ ˆ j  j ˆ d ƒ d  S(   Ni   iÿÿÿÿi   (   RP   RS   R¦   R”   R’   (   R¶   (   R—   R·   R4   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   client_periodic  s    c           ` s]   ˆ j  ˆ  d <ˆ j ˆ  d <t t ˆ j j ƒ ƒ j j ˆ  d <ˆ j j	 ƒ  ˆ  d <ˆ j
 ƒ  d  S(   Nu	   connectedu   server_connection_countu   server_close_codeu   doc(   R/   t   connection_countRi   Rj   Rk   Rl   R:   t
   close_codeRP   t   to_jsonR>   (    (   RŠ   R3   RY   R4   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   end_test  s
    "iú   c         ` s5   t  |  t ƒ s1 ˆ  j j d  d  d … ˆ  j _ n  d  S(   Niÿÿÿÿ(   R¯   R   RP   Rv   (   R±   (   R4   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   client_on_change*  s    R8   u	   connectedu   server_connection_countu   server_close_code(   R   R   R^   R   R	   R   R,   R/   R0   RT   RU   RP   R’   R¡   R´   R=   R<   Rb   (   R1   R2   Rµ   R_   R¸   R¼   R½   (    (   R—   R·   RŠ   R3   RY   R4   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt    test_lots_of_concurrent_messagesä  s2    			N(&   R   R   R5   R?   RA   RD   RF   RG   RH   Rb   RI   RJ   RK   RO   R\   R`   Rf   RB   t   markt   skipift   syst   platformRs   R{   R…   R   R‘   R‰   R™   Rš   R›   Rž   RŸ   R    R£   R¤   R¥   R¾   (    (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR*   D   s8   								=			*	0	?	!	!	$	!	!	$			"c   	      ` s©  t  ƒ  } t | ƒ Ž} t j ƒ  } t d d ƒ } | j | ƒ t | d d d t | ƒ d | j ƒ} | j	 d | j
 ƒ } t | j j ƒ d k sš t ‚ t t | j j ƒ ƒ ‰ | j d k sÇ t ‚ ˆ j d k sÜ t ‚ i  ‰  d  ˆ  d	 <‡  f d
 †  } |  j | d | ƒ d | _ ‡ f d †  } | j j | ƒ ˆ j d k sKt ‚ | j ƒ  ˆ  d	 d  k skt ‚ | j ƒ  | j d t ƒ | j s•t ‚ | j ƒ  Wd  QXd  S(   NR"   i*   R+   u$   test_client_changes_do_not_boomerangR   R,   u   /i   u   resultc         ` s   |  ˆ  d <d  S(   Nu   result(    (   t   message(   t	   got_angry(    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt	   get_angryS  s    u   _handle_patchi9   c           ` s   ˆ  j  d k S(   Ni9   (   R"   (    (   Rt   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyRu   \  s    R8   (   R   R   RP   R   R!   RQ   R
   R   R,   RT   RU   RR   RS   R0   Ri   Rj   R"   Rb   t   setattrR9   Rx   Ro   R>   R=   R<   R/   t   unlisten(	   t   monkeypatchR2   R3   RW   Rz   RX   RY   RÅ   Ru   (    (   RÄ   Rt   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt$   test_client_changes_do_not_boomerang=  s8    		
	

c   	      ` s²  t  ƒ  } t | ƒ —} t j ƒ  } t d d ƒ ‰  | j ˆ  ƒ t | d d d t | ƒ d | j ƒ} | j	 d | j
 ƒ } t | j j ƒ d k sš t ‚ t t | j j ƒ ƒ ‰ ˆ  j d k sÇ t ‚ ˆ j d k sÜ t ‚ i  ‰ d  ˆ d	 <‡ f d
 †  } |  j | d | ƒ ‡ f d †  } | j | ƒ ‡  f d †  } | j j | ƒ ˆ  j d k s^t ‚ | j ƒ  ˆ d	 d  k s~t ‚ | j ƒ  | j d t ƒ | j s¨t ‚ Wd  QXd  S(   NR"   i*   R+   u$   test_server_changes_do_not_boomerangR   R,   u   /i   u   resultc         ` s   |  ˆ  d <d  S(   Nu   result(    (   RÃ   Rq   (   RÄ   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyRÅ     s    u   _handle_patchc           ` s   d ˆ  _  d  S(   Ni9   (   R"   (    (   Rt   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   do_set_foo_property†  s    c           ` s   ˆ  j  d k S(   Ni9   (   R"   (    (   Rz   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyR     s    i9   R8   (   R   R   RP   R   R!   RQ   R
   R   R,   RT   RU   RR   RS   R0   Ri   Rj   R"   Rb   RÆ   R„   R9   Rx   Ro   R>   R=   R<   R/   (	   RÈ   R2   R3   RW   RX   RY   RÅ   RÊ   R   (    (   Rz   RÄ   Rt   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt$   test_server_changes_do_not_boomerangk  s8    		


c         ` s˜  t  ƒ  } t | ƒ }} t j ƒ  } t ƒ  ‰  | j ˆ  ƒ t | d d d t | ƒ d | j ƒ‰ | j	 d ˆ j
 ƒ } t | j j ƒ d k s” t ‚ t t | j j ƒ ƒ ‰ ˆ  j d k sÁ t ‚ ˆ j d k sÖ t ‚ ‡  ‡ ‡ ‡ f d	 †  } | d
 d ƒ | i d d 6i d d 6ƒ | i d d 6i d d 6ƒ | i d d 6d d 6i d d 6d d 6ƒ ˆ j ƒ  ˆ j d t ƒ ˆ j s„t ‚ | j ƒ  Wd  QXd  S(   NR+   u'   test_unit_spec_changes_do_not_boomerangR   R,   u   /i   i*   i    c         ` sŸ   i  ‰  d  ˆ  d <‡  f d †  } ˆ j ˆ d | ƒ ˆ j ‰ ˆ j ‰ |  ˆ _ | ˆ _ ‡ ‡ ‡ f d †  } ˆ j j | ƒ ˆ j ƒ  ˆ  d d  k s› t ‚ d  S(   Nu   resultc         ` s   |  ˆ  d <d  S(   Nu   result(    (   RÃ   (   RÄ   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyRÅ   ´  s    u   _handle_patchc           ` s   ˆ j  ˆ k o ˆ j ˆ  k S(   N(   R'   R(   (    (   t   server_previous_anglet   server_previous_distanceRt   (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyRu   Á  s    (   Rb   RÆ   R'   R(   R9   Rx   Ro   R0   (   t   new_distancet	   new_angleRÅ   Ru   (   Rz   RX   RÈ   Rt   (   RÄ   RÌ   RÍ   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt	   change_to°  s    
				
i9   i:   u   valuei   u   foou   fieldu   bari;   u   screenu   unitsi   u   degR8   (   R   R   RP   R   R&   RQ   R
   R   R,   RT   RU   RR   RS   R0   Ri   Rj   R'   R(   R>   R=   R<   R/   RÇ   (   RÈ   R2   R3   RW   RY   RÐ   (    (   Rz   RX   RÈ   Rt   s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt'   test_unit_spec_changes_do_not_boomerang  s.    			)
u!   bokeh.client.session.show_sessionc         C` sb   t  ƒ  } t ƒ  | _ t ƒ  } | j j g  k s6 t ‚ | j | ƒ | j j | g k s^ t ‚ d  S(   N(   R   R   t	   _documentR   RP   RS   R0   t   show(   R¶   R4   t   p(    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt1   test_session_show_adds_obj_to_curdoc_if_necessaryÖ  s    		(;   t
   __future__R    R   R   R   RB   t   loggingt   mockR   RM   RÁ   t   tornadoR   t   tornado.httpclientR   t   bokeh.applicationR   t   bokeh.application.handlersR   t   bokeh.clientR	   R
   R   t   bokeh.documentRP   R   t   bokeh.document.eventsR   R   t   bokeh.core.propertiesR   R   R   R   R   R   R   t   bokeh.modelR   t   bokeh.modelsR   t   bokeh.server.tests.utilsR   R   R   R   R   R   R!   R$   R&   t   basicConfigt   DEBUGt   objectR*   RÉ   RË   RÑ   RÕ   (    (    (    s=   lib/python2.7/site-packages/bokeh/tests/test_client_server.pyt   <module>   s<   " 4(ÿ ÿ û	.	2	9