ó
mÜJ]c           @` s·   d  d l  m Z m Z m Z m Z d  d l Z e d  d l m Z d  d l m	 Z	 d  d l
 m Z d  d l m Z d d „ Z d	 „  Z d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   ThreadPoolExecutor(   t   repeat(   t   IOLoop(   t   _CallbackGroupi   c         ` sZ   d d l  m } i d d 6‰  ‡  ‡ ‡ f d †  } d „  } | | | ƒ | _ ˆ  | _ | S(   Ni    (   t
   MethodTypeu   countc           ` s=   ˆ  d c d 7<ˆ d  k	 r9 ˆ  d ˆ k r9 ˆ j ƒ  n  d  S(   Nu   counti   (   t   Nonet   stop(    (   t   countert   loopt
   stop_after(    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   func&   s    c         S` s   |  j  d S(   Nu   count(   R   (   t   self(    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   count*   s    (   t   typesR   R   R   (   R   R   R   R   R   (    (   R   R   R   s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   _make_invocation_counter#   s    		c         C` s0   y |  j  ƒ  Wn t k
 r+ t d ƒ n Xd  S(   Nu   Keyboard interrupt(   t   startt   KeyboardInterruptt   print(   R   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   run2   s
    
t   LoopAndGroupc           B` s&   e  Z d d  „ Z d „  Z d „  Z RS(   c         ` s^   t  ƒ  ˆ  _ ˆ  j j ƒ  t ˆ  j ƒ ˆ  _ | d  k	 rZ ˆ  j j | d ‡  f d †  ƒ n  d  S(   Ng     @@c           ` s   ˆ  j  j ƒ  S(   N(   t   io_loopR
   (    (   R   (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   <lambda>A   t    (   R   R   t   make_currentR   t   groupR	   t
   call_later(   R   t
   quit_after(    (   R   s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   __init__:   s    c         C` s   t  |  j ƒ |  j j ƒ  d  S(   N(   R   R   t   close(   R   t   typet   valuet	   traceback(    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   __exit__C   s    c         C` s   |  S(   N(    (   R   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt	   __enter__G   s    N(   t   __name__t
   __module__R	   R   R$   R%   (    (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyR   9   s   		t   TestCallbackGroupc           B` s   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 RS(   c         C` s§   t  ƒ  b } t | j ƒ } d t | j j ƒ k s9 t ‚ | j j | ƒ d t | j j ƒ k sg t ‚ Wd  QXd | j ƒ  k s… t ‚ d t | j j ƒ k s£ t ‚ d  S(   Ni    i   (	   R   R   R   t   lenR   t   _next_tick_callback_removerst   AssertionErrort   add_next_tick_callbackR   (   R   t   ctxR   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_next_tick_runsO   s    $c         C` s­   t  ƒ  h } t | j ƒ } d t | j j ƒ k s9 t ‚ | j j | d d ƒd t | j j ƒ k sm t ‚ Wd  QXd | j ƒ  k s‹ t ‚ d t | j j ƒ k s© t ‚ d  S(   Ni    t   timeout_millisecondsi   (	   R   R   R   R)   R   t   _timeout_callback_removersR+   t   add_timeout_callbackR   (   R   R-   R   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_timeout_runsY   s    $c         C` sã   t  ƒ  p } t | j d d ƒ} d t | j j ƒ k s? t ‚ | j j | d d ƒ} d t | j j ƒ k su t ‚ Wd  QXd | j ƒ  k s“ t ‚ d t | j j ƒ k s± t ‚ | j j	 | ƒ d t | j j ƒ k sß t ‚ d  S(   NR   i   i    t   period_millisecondsi   (
   R   R   R   R)   R   t   _periodic_callback_removersR+   t   add_periodic_callbackR   t   remove_periodic_callback(   R   R-   R   t   cb_id(    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_periodic_runsc   s    $c         C` se   t  d d ƒ 8 } t | j ƒ } | j j | ƒ } | j j | ƒ Wd  QXd | j ƒ  k sa t ‚ d  S(   NR   i   i    (   R   R   R   R   R,   t   remove_next_tick_callbackR   R+   (   R   R-   R   R7   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt2   test_next_tick_does_not_run_if_removed_immediatelyo   s
    c         C` sk   t  d d ƒ > } t | j ƒ } | j j | d d ƒ} | j j | ƒ Wd  QXd | j ƒ  k sg t ‚ d  S(   NR   i   R/   i   i    (   R   R   R   R   R1   t   remove_timeout_callbackR   R+   (   R   R-   R   R7   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt0   test_timeout_does_not_run_if_removed_immediatelyv   s
    c         C` sq   t  d d ƒ D } t | j d d ƒ} | j j | d d ƒ} | j j | ƒ Wd  QXd | j ƒ  k sm t ‚ d  S(   NR   i   R   i   R3   i   i    (   R   R   R   R   R5   R6   R   R+   (   R   R-   R   R7   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt1   test_periodic_does_not_run_if_removed_immediately}   s
    c         C` s   t  ƒ  X } t | j d d ƒ} | j j | d d ƒ| j j | d d ƒ| j j | ƒ Wd  QXd | j ƒ  k s{ t ‚ d  S(   NR   i   R3   i   R/   i   (	   R   R   R   R   R5   R1   R,   R   R+   (   R   R-   R   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt%   test_same_callback_as_all_three_types„   s    c         C` sc   t  ƒ  < } t | j d d ƒ} | j j | ƒ | j j | ƒ Wd  QXd | j ƒ  k s_ t ‚ d  S(   NR   i   (   R   R   R   R   R,   R   R+   (   R   R-   R   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_adding_next_tick_twice   s
    c         C` so   t  ƒ  H } t | j d d ƒ} | j j | d d ƒ| j j | d d ƒWd  QXd | j ƒ  k sk t ‚ d  S(   NR   i   R/   i   (   R   R   R   R   R1   R   R+   (   R   R-   R   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_adding_timeout_twice”   s
    c         C` so   t  ƒ  H } t | j d d ƒ} | j j | d d ƒ| j j | d d ƒWd  QXd | j ƒ  k sk t ‚ d  S(   NR   i   R3   i   (   R   R   R   R   R5   R   R+   (   R   R-   R   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_adding_periodic_twice›   s
    c         ` s¤   t  d d ƒ w ‰  ‡  f d †  } ˆ  j j | ƒ t ˆ  j d d ƒ} ˆ  j j | d d ƒˆ  j j | d d	 ƒˆ  j j | ƒ Wd  QXd
 | j ƒ  k s  t ‚ d  S(   NR   i   c           ` s   ˆ  j  j ƒ  d  S(   N(   R   t   remove_all_callbacks(    (   R-   (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt
   remove_all¥   s    R   i   R3   i   R/   i   i    (	   R   R   R,   R   R   R5   R1   R   R+   (   R   RC   R   (    (   R-   s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_remove_all_callbacks¢   s    c      
   C` s¨   t  d d ƒ ` } t | j ƒ } | j j | ƒ } | j j | ƒ t j t ƒ  } | j j | ƒ Wd  QXWd  QXd | j	 ƒ  k s‰ t
 ‚ d t | j ƒ k s¤ t
 ‚ d  S(   NR   i   i    u   twice(   R   R   R   R   R,   R9   t   pytestt   raisest
   ValueErrorR   R+   t   reprR"   (   R   R-   R   R7   t   exc(    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_removing_next_tick_twice¯   s    c      
   C` s®   t  d d ƒ f } t | j ƒ } | j j | d d ƒ} | j j | ƒ t j t ƒ  } | j j | ƒ Wd  QXWd  QXd | j	 ƒ  k s t
 ‚ d t | j ƒ k sª t
 ‚ d  S(   NR   i   R/   i   i    u   twice(   R   R   R   R   R1   R;   RE   RF   RG   R   R+   RH   R"   (   R   R-   R   R7   RI   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_removing_timeout_twice¹   s    c      
   C` s´   t  d d ƒ l } t | j d d ƒ} | j j | d d ƒ} | j j | ƒ t j t ƒ  } | j j | ƒ Wd  QXWd  QXd | j	 ƒ  k s• t
 ‚ d t | j ƒ k s° t
 ‚ d  S(	   NR   i   R   i   R3   i   i    u   twice(   R   R   R   R   R5   R6   RE   RF   RG   R   R+   RH   R"   (   R   R-   R   R7   RI   (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   test_removing_periodic_twiceÃ   s    c      
   C` s€   t  d d ƒ S } d } t | j d | ƒ} t | ƒ } t | j | j j t | | ƒ ƒ ƒ Wd  QX| | j	 ƒ  k s| t
 ‚ d  S(   NR   i   iè  R   (   R   R   R   R   t   listt   mapR   R,   R   R   R+   (   R   R-   t   nR   t   tpe(    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt)   test_adding_next_tick_from_another_threadÍ   s    +(   R&   R'   R.   R2   R8   R:   R<   R=   R>   R?   R@   RA   RD   RJ   RK   RL   RQ   (    (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyR(   N   s   	
	
											
	
	
(   t
   __future__R    R   R   R   RE   t   concurrent.futuresR   t	   itertoolsR   t   tornado.ioloopR   t   bokeh.util.tornadoR   R   R   t   objectR   R(   (    (    (    s@   lib/python2.7/site-packages/bokeh/server/tests/test_callbacks.pyt   <module>   s   " 	