ó
mÜJ]c           @` sk  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	 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 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! j" j" Z" d e# f d „  ƒ  YZ$ g  Z% d e# f d „  ƒ  YZ& d e# f d „  ƒ  YZ' e ƒ  d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   copy(   t   patch(   t   curdoc(   t   ColumnDataSource(   t   ColumnsPatchedEventt   ColumnsStreamedEventt   ModelChangedEventt   RootAddedEventt   RootRemovedEventt   SessionCallbackAddedt   SessionCallbackRemovedt   TitleChangedEvent(   t   process_document_events(   t   basicConfigi   (   t   AnotherModelInTestDocumentt   SomeModelInTestDocumentt   ModelThatOverridesNamet   ModelWithSpecInTestDocumentt   TestDocumentHoldc           B` s°   e  Z e j j d  e j ƒ e j j d „  ƒ ƒ Z d „  Z	 e j j d d
 d g ƒ e j j d „  ƒ ƒ Z
 e j j d  e j ƒ e j j d „  ƒ ƒ Z e d ƒ d	 „  ƒ Z RS(   u   policyc         C` s\   t  j ƒ  } | j d  k s! t ‚ | j g  k s6 t ‚ | j | ƒ | j | k sX t ‚ d  S(   N(   t   documentt   Documentt   _holdt   Nonet   AssertionErrort   _held_eventst   hold(   t   selft   policyt   d(    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt	   test_hold4   s
    c         C` s3   t  j ƒ  } t j t ƒ  | j d ƒ Wd  QXd  S(   Nu   junk(   R   R   t   pytestt   raisest
   ValueErrorR   (   R   R    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_hold_bad_policy>   s    u   first,secondu   combineu   collectc         C` s%  t  j ƒ  } | j t j ƒ | j | ƒ | j d k sA t ‚ t | j	 ƒ d k s\ t ‚ | j | ƒ | j d k s~ t ‚ t | j	 ƒ d k s™ t ‚ | j | ƒ | j j
 ƒ  j d | | f ƒ sÎ t ‚ t | j	 ƒ d k sé t ‚ | j ƒ  | j | ƒ t | j	 ƒ d k st ‚ Wd  QXd  S(   Nu    i    u,   hold already active with '%s', ignoring '%s'i   (   R   R   t   at_levelt   loggingt   WARNR   t   textR   t   lent   recordst   stript   endswitht   unhold(   R   t   firstt   secondt   caplogR    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_reholdC   s    (
c         C` s{   t  j ƒ  } | j d  k s! t ‚ | j g  k s6 t ‚ | j | ƒ | j | k sX t ‚ | j ƒ  | j d  k sw t ‚ d  S(   N(   R   R   R   R   R   R   R   R.   (   R   R   R    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_unholdY   s    
u3   bokeh.document.document.Document._trigger_on_changec         C` s€   t  j ƒ  } | j d ƒ d d d g | _ | j ƒ  | j d k sJ t ‚ | j d d k sc t ‚ | j d i  k s| t ‚ d  S(   Nu   collecti   i   i   i    (   i   (   R   R   R   R   R.   t
   call_countR   t	   call_args(   R   t   mock_triggerR    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_unhold_triggers_eventse   s    
(   u   combineu   collect(   u   collectu   combine(   t   __name__t
   __module__R"   t   markt   parametrizeR   t
   HoldPolicyt   unitR!   R%   R2   R3   R   R7   (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR   2   s   		t   Test_Document_delete_modulesc           B` s   e  Z d  „  Z d „  Z RS(   c         C` sÆ   t  j ƒ  } | j s t ‚ d t f d „  ƒ  Y} | ƒ  } d d  l } d | j k s\ t ‚ | | j d <| j j | ƒ d | j k sŽ t ‚ | j	 ƒ  d | j k s­ t ‚ | j d  k sÂ t ‚ d  S(   Nt   FakeModc           B` s   e  Z d  Z  RS(   u   junkjunkjunk(   R8   R9   (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR?   v   s   i    u   junkjunkjunk(   R   R   t   rootsR   t   objectt   syst   modulest   _modulest   appendt   delete_modulesR   (   R   R    R?   t   modRB   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt
   test_basics   s    	
c         C` sM  t  j ƒ  } | j s t ‚ d t f d „  ƒ  Y} | ƒ  } d d  l } d | j k s\ t ‚ | | j d <| j j | ƒ d | j k sŽ t ‚ t	 j | ƒ d d  l
 } t | j | ƒ ƒ d	 k sÈ t ‚ | j t j ƒ C | j ƒ  d | | j k sþ t ‚ t | j ƒ d k st ‚ Wd  QXd | j k s4t ‚ | j d  k sIt ‚ d  S(
   NR?   c           B` s   e  Z d  Z  RS(   u   junkjunkjunk(   R8   R9   (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR?   …   s   i    u   junkjunkjunki   i   ue   Module %r has extra unexpected referrers! This could indicate a serious memory leak. Extra referrers:i   (   i   i   (   R   R   R@   R   RA   RB   RC   RD   RE   t   extrat   gcR*   t   get_referrersR&   R'   t   ERRORRF   R)   R+   R   (   R   R1   R    R?   RG   RB   RJ   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_extra_referrer_error‚   s$    	!
!(   R8   R9   RH   RM   (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR>   q   s   	t   TestDocumentc           B` sy  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* RS()   c         C` s    t  j ƒ  } | j s t ‚ d  S(   N(   R   R   R@   R   (   R   R    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt
   test_emptyŸ   s    c         C` s5   t  j ƒ  } | j s t ‚ | j i  k s1 t ‚ d  S(   N(   R   R   R@   R   t   template_variables(   R   R    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_default_template_vars£   s    c         C` so   t  j ƒ  } | j s t ‚ | j t ƒ  ƒ t | j ƒ d k sG t ‚ t t | j ƒ ƒ j  | k sk t ‚ d  S(   Ni   (	   R   R   R@   R   t   add_rootR   R*   t   nextt   iter(   R   R    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_add_roots¨   s
    c         C` sï   t  j ƒ  } | j s t ‚ t ƒ  t ƒ  t ƒ  g } x | D] } | j | ƒ q; Wt | j ƒ d k sm t ‚ t | j ƒ t k sˆ t ‚ t	 | j ƒ } t
 | ƒ | d k s³ t ‚ t
 | ƒ | d k sÏ t ‚ t
 | ƒ | d k së t ‚ d  S(   Ni   i    i   i   (   R   R   R@   R   R   RR   R*   t   typet   listRT   RS   (   R   R    R@   t   rt
   roots_iter(    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt$   test_roots_preserves_insertion_order¯   s    c         C` sF   t  j ƒ  } | j t  j k s$ t ‚ d | _ | j d k sB t ‚ d  S(   Nu   Foo(   R   R   t   titlet   DEFAULT_TITLER   (   R   R    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_set_titleÀ   s    	c         C` s	  t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t ƒ  } t ƒ  } | | _ | j	 | ƒ t | j ƒ d k sz t ‚ t | j ƒ d k s• t ‚ d  | _ t | j ƒ d k s¹ t ‚ | | _ t | j ƒ d k sÝ t ‚ | j | ƒ t | j ƒ d k st ‚ d  S(   Ni    i   i   (   R   R   R@   R   R*   t   _all_modelsR   R   t   childRR   R   t   remove_root(   R   R    t   mt   m2(    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_all_modelsÆ   s    					c         C` sð   t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t ƒ  } t ƒ  } | | _ | j	 | ƒ t | j ƒ d k sz t ‚ t | j ƒ d k s• t ‚ | j
 | j ƒ | k s³ t ‚ | j
 | j ƒ | k sÑ t ‚ | j
 d ƒ d  k sì t ‚ d  S(   Ni    i   i   u   not a valid ID(   R   R   R@   R   R*   R^   R   R   R_   RR   t   get_model_by_idt   idR   (   R   R    Ra   Rb   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_get_model_by_id×   s    			c         C` s  t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t d d ƒ } t d d ƒ } | | _ | j	 | ƒ t | j ƒ d k s† t ‚ t | j ƒ d k s¡ t ‚ t | j
 j ƒ d k s¿ t ‚ | j | j ƒ | k sÝ t ‚ | j | j ƒ | k sû t ‚ | j d ƒ d  k st ‚ d  S(   Ni    t   nameu   foou   bari   i   u   not a valid name(   R   R   R@   R   R*   R^   R   R   R_   RR   t   _all_models_by_namet   _dictt   get_model_by_nameRg   R   (   R   R    Ra   Rb   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_get_model_by_nameå   s    	c         C` s†   t  j ƒ  } t d d ƒ } | j | ƒ | j d ƒ | k sC t ‚ d | _ | j d ƒ d  k sg t ‚ | j d ƒ | k s‚ t ‚ d  S(   NRg   u   foou   bar(   R   R   R   RR   Rj   R   Rg   R   (   R   R    Ra   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_get_model_by_changed_nameô   s    	c         C` sk   t  j ƒ  } t d d  ƒ } | j | ƒ | j d ƒ d  k sC t ‚ d | _ | j d ƒ | k sg t ‚ d  S(   NRg   u   bar(   R   R   R   R   RR   Rj   R   Rg   (   R   R    Ra   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt(   test_get_model_by_changed_from_none_nameý   s    	c         C` sk   t  j ƒ  } t d d ƒ } | j | ƒ | j d ƒ | k sC t ‚ d  | _ | j d ƒ d  k sg t ‚ d  S(   NRg   u   bar(   R   R   R   RR   Rj   R   R   Rg   (   R   R    Ra   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt&   test_get_model_by_changed_to_none_name  s    	c         C` sk   t  j ƒ  } t d d ƒ } | j | ƒ | j d ƒ | k sC t ‚ d | _ | j d ƒ | k sg t ‚ d  S(   NRg   u   foou   bar(   R   R   R   RR   Rj   R   Rg   (   R   R    Ra   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt*   test_can_get_name_overriding_model_by_name  s    	c         C` sÇ   t  j ƒ  } t d d ƒ } t d d ƒ } | j | ƒ | j | ƒ t } y | j d ƒ Wn1 t k
 rŽ } t } d t | ƒ k s t	 ‚ n X| s› t	 ‚ | j
 | ƒ | j d ƒ | k sÃ t	 ‚ d  S(   NRg   u   foou   Found more than one(   R   R   R   RR   t   FalseRj   R$   t   Truet   reprR   R`   (   R   R    Ra   Rb   t	   got_errort   e(    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt)   test_cannot_get_model_with_duplicate_name  s    c   	      C` s´  t  j ƒ  } t d d d d ƒ } t d d d d ƒ } t d d d d ƒ } t d d d d	 ƒ } t d d
 d d ƒ } | | _ | | _ | j | ƒ | j | ƒ | j | ƒ t | g ƒ t | j t d d ƒ ƒ ƒ k sá t ‚ t | g ƒ t | j t d d ƒ ƒ ƒ k st ‚ t | | g ƒ t | j t d d ƒ ƒ ƒ k sJt ‚ t ƒ  t | j t d d ƒ ƒ ƒ k swt ‚ t ƒ  t | j t d d ƒ ƒ ƒ k s¤t ‚ t | g ƒ t | j t d d ƒ ƒ ƒ k s×t ‚ | | j	 t d d	 ƒ ƒ k sût ‚ d  | j	 t d d ƒ ƒ k st ‚ t } y | j	 t d d ƒ ƒ Wn1 t k
 rr} t } d t | ƒ k sst ‚ n X| st ‚ d  | j	 t d d ƒ ƒ k s£t ‚ | | j	 t d d ƒ ƒ k sÇt ‚ | j t d d ƒ t d d ƒ ƒ t | | | g ƒ t | j t d d ƒ ƒ ƒ k s"t ‚ | j t d d ƒ t d d ƒ ƒ t | | g ƒ t | j t d d ƒ ƒ ƒ k szt ‚ t | | g ƒ t | j t d d ƒ ƒ ƒ k s°t ‚ d  S(   Nt   fooi*   Rg   u   ai+   u   bi,   u   cu   di-   u   nopeu   Found more than onei9   (   R   R   R   R_   RR   t   sett   selectt   dictR   t
   select_oneR   Rp   R$   Rq   Rr   t
   set_select(	   R   R    t   root1t   child1t   root2t   root3t   child3Rs   Rt   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_select%  sB    		336--3$$$$"9"6c         C` sœ   t  j ƒ  } | j t d d ƒ d ƒ s- t ‚ | j t d d ƒ d ƒ sN t ‚ | j t d d d d ƒ d ƒ sv t ‚ | j t d d ƒ d ƒ s˜ t ‚ d  S(   NRv   u   cu   foot   baru   di*   (   R   R   t   _is_single_string_selectorRy   R   (   R   R    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_is_single_string_selectorW  s
    !!(c         C` s˜  t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t ƒ  } t ƒ  } t ƒ  } | | _ | | _ | j	 | ƒ | j	 | ƒ t | j ƒ d k s™ t ‚ t | j ƒ d k s´ t ‚ d  | _ t | j ƒ d k sØ t ‚ d  | _ t | j ƒ d k sü t ‚ | | _ t | j ƒ d k s t ‚ | | _ t | j ƒ d k sDt ‚ | j | ƒ t | j ƒ d k slt ‚ | j | ƒ t | j ƒ d k s”t ‚ d  S(   Ni    i   i   (   R   R   R@   R   R*   R^   R   R   R_   RR   R   R`   (   R   R    R|   R~   R}   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt(   test_all_models_with_multiple_references_  s0    									c         C` sÃ  t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t ƒ  } t ƒ  } t ƒ  } | | _ | | _ | | _ t d ƒ | j	 | ƒ t d ƒ | j	 | ƒ t | j ƒ d k s¶ t ‚ t | j ƒ d k sÑ t ‚ t d ƒ d  | _ t | j ƒ d k sÿ t ‚ t d ƒ d  | _ t | j ƒ d k s-t ‚ t d ƒ | | _ t | j ƒ d k s[t ‚ t d	 ƒ | j | ƒ t | j ƒ d
 k st ‚ t d ƒ | j | ƒ t | j ƒ d k s¿t ‚ d  S(   Ni    u   adding root1u   adding root2i   i   u   clearing child of root1u   clearing child of root2u   putting child1 back in root1u   Removing root1i   u   Removing root2(   R   R   R@   R   R*   R^   R   R_   t   printRR   R   R`   (   R   R    R|   R~   R}   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_all_models_with_cyclesy  s<    						


	
	
	

c         ` sq  t  j ƒ  } | j s t ‚ t ƒ  } | j | ƒ t | j ƒ d k sM t ‚ | j d k sb t ‚ t ƒ  | k	 sw t ‚ g  ‰ g  ‰  ‡  ‡ f d †  } | j	 | ƒ d | _ ˆ s· t ‚ ˆ d } t
 | t ƒ sÖ t ‚ | j  | k së t ‚ | j | k s t ‚ | j d k st ‚ | j d k s*t ‚ | j d k s?t ‚ t ˆ  ƒ d k sWt ‚ ˆ  d | k smt ‚ d  S(   Ni   c         ` s!   ˆ  j  t ƒ  ƒ ˆ j  |  ƒ d  S(   N(   RE   R   (   t   event(   t   curdoc_from_listenert   events(    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   listener¤  s    i*   i    u   bar(   R   R   R@   R   R   RR   R*   R‚   R   t	   on_changet
   isinstanceR
   t   modelt   attrt   oldt   new(   R   R    Ra   R‹   Rˆ   (    (   R‰   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_change_notificationš  s,    		
c         ` sV  t  j ƒ  } | j s t ‚ t d t d d g d d g ƒ ƒ } | j | ƒ t | j ƒ d k sh t ‚ t ƒ  | k	 s} t ‚ g  ‰ g  ‰  ‡  ‡ f d †  } | j	 | ƒ | j
 t d d d	 g d d
 d g ƒ d ƒ ˆ sß t ‚ ˆ d } t | t ƒ sþ t ‚ t | j t ƒ st ‚ | j  | k s+t ‚ | j | k s@t ‚ | j j | k sXt ‚ | j j t d d d	 g d d
 d g ƒ k s‹t ‚ | j j d k s£t ‚ | j d k s¸t ‚ | j t d d d d	 g d d d
 d g ƒ k sît ‚ | j t d d d d	 g d d d
 d g ƒ k s$t ‚ t ˆ  ƒ d k s<t ‚ ˆ  d | k sRt ‚ d  S(   Nt   datat   ai
   t   bi   i   c         ` s!   ˆ  j  t ƒ  ƒ ˆ j  |  ƒ d  S(   N(   RE   R   (   Rˆ   (   R‰   RŠ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR‹   ½  s    i   i   i   i   iÈ   i    u   data(   R   R   R@   R   R   Ry   RR   R*   R   RŒ   t   streamR   R
   t   hintR	   RŽ   t   column_sourceR“   t   rolloverR   R   R‘   (   R   R    Ra   R‹   Rˆ   (    (   R‰   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_stream_notification´  s2    $+
366c         ` s/  t  j ƒ  } | j s t ‚ t d t d d d g d d d g ƒ ƒ } | j | ƒ t | j ƒ d k sn t ‚ t ƒ  | k	 sƒ t ‚ g  ‰ g  ‰  ‡  ‡ f d	 †  } | j	 | ƒ | j
 t d d g d d d g ƒ ƒ ˆ sß t ‚ ˆ d
 } t | t ƒ sþ t ‚ t | j t ƒ st ‚ | j  | k s+t ‚ | j | k s@t ‚ | j j | k sXt ‚ | j j t d d g d d d g ƒ k sˆt ‚ | j d k st ‚ | j t d d d g d d
 d g ƒ k sÍt ‚ | j t d d d g d d
 d g ƒ k sýt ‚ t ˆ  ƒ d k st ‚ ˆ  d
 | k s+t ‚ d  S(   NR“   R”   i
   i   R•   i   i   i   c         ` s!   ˆ  j  t ƒ  ƒ ˆ j  |  ƒ d  S(   N(   RE   R   (   Rˆ   (   R‰   RŠ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR‹   Û  s    i    u   data(   i    i   (   i    i    (   i   i   (   i    i   (   i    i    (   i   i   (   R   R   R@   R   R   Ry   RR   R*   R   RŒ   R   R   R
   R—   R   RŽ   R˜   t   patchesR   R   R‘   (   R   R    Ra   R‹   Rˆ   (    (   R‰   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_patch_notificationÒ  s0    *%
000c         ` sð   t  j ƒ  } | j s t ‚ t ƒ  } | j | ƒ t | j ƒ d k sM t ‚ | j d k sb t ‚ g  ‰  ‡  f d †  } | j | ƒ d | _ t ˆ  ƒ d k s¥ t ‚ ˆ  d j	 d k s¾ t ‚ | j
 | ƒ d | _ t ˆ  ƒ d k sì t ‚ d  S(   Ni   c         ` s   ˆ  j  |  ƒ d  S(   N(   RE   (   Rˆ   (   RŠ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR‹   ø  s    i*   i    i+   (   R   R   R@   R   R   RR   R*   R‚   RŒ   R‘   t   remove_on_change(   R   R    Ra   R‹   (    (   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt    test_change_notification_removalð  s    			c         ` s(  t  j ƒ  } | j s t ‚ g  ‰  ‡  f d †  } | j | ƒ t d d ƒ } | j | ƒ t | j ƒ d k su t ‚ t ˆ  ƒ d k s t ‚ t ˆ  d t	 ƒ s¦ t ‚ ˆ  d j
 | k s¿ t ‚ t d d ƒ } | j | ƒ t | j ƒ d k sö t ‚ t ˆ  ƒ d k st ‚ t ˆ  d t	 ƒ s't ‚ ˆ  d j
 | k s@t ‚ | j | ƒ t | j ƒ d k sht ‚ t ˆ  ƒ d k s€t ‚ t ˆ  d t ƒ s™t ‚ ˆ  d j
 | k s²t ‚ | j | ƒ t | j ƒ d k sÚt ‚ t ˆ  ƒ d k sòt ‚ t ˆ  d t ƒ st ‚ ˆ  d j
 | k s$t ‚ d  S(   Nc         ` s   ˆ  j  |  ƒ d  S(   N(   RE   (   Rˆ   (   RŠ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR‹     s    R‚   i   i    i   i   i   (   R   R   R@   R   RŒ   R   RR   R*   R   R   RŽ   R`   R   (   R   R    R‹   Ra   Rb   (    (   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_notification_of_roots  s6    c         ` sÛ   t  j ƒ  } | j s t ‚ | j t  j k s4 t ‚ g  ‰  ‡  f d †  } | j | ƒ d | _ | j d k st t ‚ t ˆ  ƒ d k sŒ t ‚ t ˆ  d t	 ƒ s¥ t ‚ ˆ  d j  | k s¾ t ‚ ˆ  d j d k s× t ‚ d  S(   Nc         ` s   ˆ  j  |  ƒ d  S(   N(   RE   (   Rˆ   (   RŠ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR‹   *  s    u   Fooi   i    (
   R   R   R@   R   R[   R\   RŒ   R*   R   R   (   R   R    R‹   (    (   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_notification_of_title$  s    	c         ` sv  t  j ƒ  } g  ‰  ‡  f d †  } | j | ƒ t | j ƒ d k sI t ‚ ˆ  sV t ‚ d „  } | j | d ƒ } t | j ƒ t ˆ  ƒ k o— d k n s¢ t ‚ t ˆ  d t ƒ s» t ‚ | | j d k oà ˆ  d j	 k n së t ‚ | j
 d k s t ‚ | j | ƒ t | j ƒ d k s(t ‚ t ˆ  ƒ d k s@t ‚ t ˆ  d t ƒ sYt ‚ t ˆ  d t ƒ srt ‚ d  S(   Nc         ` s   ˆ  j  |  ƒ d  S(   N(   RE   (   Rˆ   (   RŠ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR‹   9  s    i    c           S` s   d  S(   N(    (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   cb@  t    i   i   (   R   R   RŒ   R*   t   session_callbacksR   t   add_periodic_callbackR   R   t   callbackt   periodt   remove_periodic_callbackR   (   R   R    R‹   R¡   t   callback_obj(    (   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt!   test_add_remove_periodic_callback5  s"    	10c         ` sv  t  j ƒ  } g  ‰  ‡  f d †  } | j | ƒ t | j ƒ d k sI t ‚ ˆ  sV t ‚ d „  } | j | d ƒ } t | j ƒ t ˆ  ƒ k o— d k n s¢ t ‚ t ˆ  d t ƒ s» t ‚ | | j d k oà ˆ  d j	 k n së t ‚ | j
 d k s t ‚ | j | ƒ t | j ƒ d k s(t ‚ t ˆ  ƒ d k s@t ‚ t ˆ  d t ƒ sYt ‚ t ˆ  d t ƒ srt ‚ d  S(   Nc         ` s   ˆ  j  |  ƒ d  S(   N(   RE   (   Rˆ   (   RŠ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR‹   R  s    i    c           S` s   d  S(   N(    (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR¡   Y  R¢   i   i   (   R   R   RŒ   R*   R£   R   t   add_timeout_callbackR   R   R¥   t   timeoutt   remove_timeout_callbackR   (   R   R    R‹   R¡   R¨   (    (   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt    test_add_remove_timeout_callbackN  s"    	10c         ` s   d d l  m } t j ƒ  } g  ‰  ‡  f d †  } | j | ƒ t | j ƒ d k sY t ‚ ˆ  sf t ‚ d „  } | | ƒ } | j | d ƒ } t | j ƒ t ˆ  ƒ k o³ d k n s¾ t ‚ t	 ˆ  d t
 ƒ s× t ‚ | | j d k oü ˆ  d j k n st ‚ | j d k st ‚ d  S(   Ni    (   t   partialc         ` s   ˆ  j  |  ƒ d  S(   N(   RE   (   Rˆ   (   RŠ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR‹   l  s    c           S` s   d  S(   N(    (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   _cbs  R¢   i   (   t	   functoolsR®   R   R   RŒ   R*   R£   R   Rª   R   R   R¥   R«   (   R   R®   R    R‹   R¯   R¡   R¨   (    (   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_add_partial_callbackg  s    	10c         ` s^  t  j ƒ  } g  ‰  ‡  f d †  } | j | ƒ t | j ƒ d k sI t ‚ ˆ  sV t ‚ d „  } | j | ƒ } t | j ƒ t ˆ  ƒ k o” d k n sŸ t ‚ t ˆ  d t ƒ s¸ t ‚ | | j d k oÝ ˆ  d j	 k n sè t ‚ | j
 | ƒ t | j ƒ d k st ‚ t ˆ  ƒ d k s(t ‚ t ˆ  d t ƒ sAt ‚ t ˆ  d t ƒ sZt ‚ d  S(   Nc         ` s   ˆ  j  |  ƒ d  S(   N(   RE   (   Rˆ   (   RŠ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR‹   €  s    i    c           S` s   d  S(   N(    (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR¡   ‡  R¢   i   i   (   R   R   RŒ   R*   R£   R   t   add_next_tick_callbackR   R   R¥   t   remove_next_tick_callbackR   (   R   R    R‹   R¡   R¨   (    (   RŠ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt"   test_add_remove_next_tick_callback|  s     	10c         ` s„   t  j ƒ  } t ƒ  | k	 s! t ‚ g  ‰  ‡  f d †  } | j | d ƒ } | j ƒ  t ˆ  ƒ d k sj t ‚ ˆ  d | k s€ t ‚ d  S(   Nc           ` s   ˆ  j  t ƒ  ƒ d  S(   N(   RE   R   (    (   t   curdoc_from_cb(    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR¡   ˜  s    i   i    (   R   R   R   R   R¤   R¥   R*   (   R   R    R¡   R¨   (    (   Rµ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt"   test_periodic_callback_gets_curdoc”  s    
c         ` s„   t  j ƒ  } t ƒ  | k	 s! t ‚ g  ‰  ‡  f d †  } | j | d ƒ } | j ƒ  t ˆ  ƒ d k sj t ‚ ˆ  d | k s€ t ‚ d  S(   Nc           ` s   ˆ  j  t ƒ  ƒ d  S(   N(   RE   R   (    (   Rµ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR¡   £  s    i   i    (   R   R   R   R   Rª   R¥   R*   (   R   R    R¡   R¨   (    (   Rµ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt!   test_timeout_callback_gets_curdocŸ  s    
c         ` s   t  j ƒ  } t ƒ  | k	 s! t ‚ g  ‰  ‡  f d †  } | j | ƒ } | j ƒ  t ˆ  ƒ d k sg t ‚ ˆ  d | k s} t ‚ d  S(   Nc           ` s   ˆ  j  t ƒ  ƒ d  S(   N(   RE   R   (    (   Rµ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR¡   ®  s    i   i    (   R   R   R   R   R²   R¥   R*   (   R   R    R¡   R¨   (    (   Rµ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt#   test_next_tick_callback_gets_curdocª  s    
c         ` s   t  j ƒ  } t d d ƒ } | j | ƒ t ƒ  | k	 s= t ‚ g  ‰  ‡  f d †  } | j d | ƒ d | _ t ˆ  ƒ d k sƒ t ‚ ˆ  d | k s™ t ‚ d  S(   NR‚   i*   c         ` s   ˆ  j  t ƒ  ƒ d  S(   N(   RE   R   (   R   R   R‘   (   Rµ   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyR¡   »  s    u   bari+   i   i    (	   R   R   R   RR   R   R   RŒ   R‚   R*   (   R   R    Ra   R¡   (    (   Rµ   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_model_callback_gets_curdocµ  s    	c         C` sÐ   t  j ƒ  } | j s t ‚ | j t  j k s4 t ‚ | j t ƒ  ƒ | j t ƒ  ƒ d | _ t | j ƒ d k sx t ‚ | j d k s t ‚ | j	 ƒ  | j s§ t ‚ | j
 s· t ‚ | j d k sÌ t ‚ d  S(   Nu   Fooi   (   R   R   R@   R   R[   R\   RR   R   R*   t   clearR^   (   R   R    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt
   test_clearÂ  s    	
c         C` s¨   t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t ƒ  } | j | ƒ d | _ | j	 ƒ  } t  j j
 | ƒ } t | j ƒ d k s t ‚ | j d k s¤ t ‚ d  S(   Ni    u   Fooi   (   R   R   R@   R   R*   R^   R   RR   R[   t   to_json_stringt   from_json_string(   R   R    R|   t   jsonR   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_serialization_one_modelÐ  s    		c   
      C` sa  t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t d d ƒ } t d d ƒ } t d d ƒ } | | _ | | _ | j | ƒ | j | ƒ t | j ƒ d k s« t ‚ | j	 ƒ  } t  j j
 | ƒ } t | j ƒ d k sä t ‚ g  } x! | j D] } | j | j ƒ qô W| j ƒ  d d g | k s0t ‚ t t | j ƒ ƒ }	 |	 j j d k s]t ‚ d  S(   Ni    Rv   i*   i+   i,   i   (   R   R   R@   R   R*   R^   R   R_   RR   R¼   R½   RE   Rv   t   sortRS   RT   (
   R   R    R|   R~   R}   R¾   R   t   foosRX   t	   some_root(    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_serialization_more_modelsÞ  s*    		
c         C` sB   d d l  m } t j ƒ  } | j ƒ  } | d | k s> t ‚ d  S(   Ni    (   t   __version__u   version(   t   bokehRÄ   R   R   t   to_jsonR   (   R   RÄ   R    R¾   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_serialization_has_versionø  s    c   
      C` sY  t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t d d ƒ } t d d ƒ } t d d ƒ } | | _ | | _ | j | ƒ | j | ƒ t | j ƒ d k s« t ‚ t	 | | d | j
 d d ƒ } t | g ƒ \ } } | j | ƒ | j
 d k s t ‚ t	 | | d | j
 d	 d	 ƒ } t | g ƒ \ }	 } | j |	 ƒ | j
 d	 k sUt ‚ d  S(
   Ni    Rv   i*   i+   i,   i   u   fooi9   iC   (   R   R   R@   R   R*   R^   R   R_   RR   R
   Rv   R   t   apply_json_patch_string(
   R   R    R|   R~   R}   t   event1t   patch1t   bufferst   event2t   patch2(    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_patch_integer_propertyþ  s&    		c         ` sÆ  t  j ƒ  ‰  ˆ  j s t ‚ t ˆ  j ƒ d k s7 t ‚ t d d ƒ ‰ ˆ  j ˆ ƒ t ˆ  j ƒ d k sn t ‚ ‡  ‡ f d †  } | d ƒ d ˆ j k sŸ t ‚ | t	 d d	 ƒ ƒ d ˆ j k sÇ t ‚ | t	 d d	 d
 d ƒ ƒ d ˆ j k sõ t ‚ | t	 d d d
 d ƒ ƒ d ˆ j k s#t ‚ | t	 d d d
 d ƒ ƒ d ˆ j k sQt ‚ | t	 d d d
 d ƒ ƒ d ˆ j k st ‚ | t	 d d d
 d ƒ ƒ d ˆ j k s­t ‚ | d ƒ d ˆ j k sÌt ‚ d ˆ _
 | d ƒ d ˆ j k sôt ‚ | t	 d d ƒ ƒ d ˆ j k st ‚ | t	 d d d
 d ƒ ƒ d ˆ j k sJt ‚ | t	 d d ƒ ƒ d ˆ j k srt ‚ | t	 d d ƒ ƒ d ˆ j k sšt ‚ d ˆ _
 | d ƒ d ˆ j k sÂt ‚ d  S(   Ni    Rv   i*   i   c         ` sØ   ˆ j  d ƒ j j ˆ d |  ƒ } t ˆ  ˆ d ˆ j |  | ƒ } t | g ƒ \ } } ˆ  j | ƒ t |  t ƒ r¿ t	 |  ƒ } d | k r˜ ˆ j
 | d <n  | ˆ j  d ƒ j ˆ ƒ k sÔ t ‚ n |  ˆ j k sÔ t ‚ d  S(   Nu   foou   units(   t   lookupt   propertyt   to_serializableR
   Rv   R   RÈ   R   Ry   R   t	   foo_unitst   serializable_valueR   (   t	   new_valuet   serializable_newRÉ   RÊ   RË   t   expected(   R    R|   (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt
   patch_test  s    	'i9   u   datat   valuei:   t   unitsu   screeni;   i<   i=   u   a_stringu   woott   fieldu   woot2u   woot3iF   i{   iG   (   R   R   R@   R   R*   R^   R   RR   RÒ   Ry   Rv   (   R   R×   (    (   R    R|   sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_patch_spec_property  sJ    

	
	
c         C` s—  t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t d d ƒ } t d d ƒ } t d d ƒ } t d d ƒ } t d d d | ƒ } | | _ | | _ | j | ƒ | j | ƒ t | j ƒ d	 k sÏ t ‚ | j	 | j k sç t ‚ | j	 | j k sÿ t ‚ | j	 | j k st ‚ t
 | | d
 | j | | ƒ } t | g ƒ \ } }	 | j | ƒ | j j	 | j	 k srt ‚ | j j j	 | j	 k st ‚ | j	 | j k s¨t ‚ | j	 | j k sÀt ‚ | j	 | j k sØt ‚ t
 | | d
 | j | | ƒ }
 t |
 g ƒ \ } }	 | j | ƒ | j j	 | j	 k s3t ‚ | j j d  k sKt ‚ | j	 | j k sct ‚ | j	 | j k s{t ‚ | j	 | j k s“t ‚ d  S(   Ni    Rv   i*   i+   i,   i-   i.   R_   i   u   child(   R   R   R@   R   R*   R^   R   R_   RR   Re   R
   R   RÈ   R   (   R   R    R|   R~   R}   t   child2R€   RÉ   RÊ   RË   RÌ   RÍ   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_patch_reference_propertyL  s@    		c   	      C` si  t  j ƒ  } | j s t ‚ t | j ƒ d k s7 t ‚ t d d ƒ } t d d ƒ } | | _ | j | ƒ t | j ƒ d k s† t ‚ | j | k s› t ‚ | j	 d k s° t ‚ | j j	 d k sÈ t ‚ t d d ƒ } t
 | | d | j	 d d ƒ } t
 | | d	 | j | | ƒ } t | | g ƒ \ } } | j | ƒ | j	 d k sMt ‚ | j j	 d k set ‚ d  S(
   Ni    Rv   i*   i+   i   i,   u   fooi9   u   child(   R   R   R@   R   R*   R^   R   R_   RR   Rv   R
   R   RÈ   (	   R   R    R|   R}   RÜ   RÉ   RÌ   RÊ   RË   (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt!   test_patch_two_properties_at_onceu  s$    	c   	   	   C` sû   d d l  m } d d l m } d d  l } t j ƒ  } | | ƒ | j sR t ‚ t	 | j
 ƒ d k sm t ‚ | d g  ƒ } d } | j d d | j | ƒ } | j | ƒ } | j | | d d d	 d
 d d ƒ| j | ƒ t	 | j ƒ d k s÷ t ‚ d  S(   Ni    (   t
   set_curdoc(   t   figuret   toolsi
   i   t   coloru   #FF00FFt   nonselection_fill_coloru   #FFFF00t   nonselection_fill_alphai   (   t   bokeh.io.docRß   t   bokeh.plottingRà   t   numpyR   R   R@   R   R*   R^   t   linspacet   pit   sint   scatterRR   (	   R   Rß   Rà   t   npR    t   p1t   Nt   xt   y(    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   test_scatter  s    
"c         ` sÏ   d d l  m } t j ƒ  ‰ | d d ƒ } | d d ƒ ‰  ‡  ‡ ‡ f d †  } d „  ‰ | j | ƒ ˆ j | ƒ t j i d d	 6i | j d
 6d 6ƒ } y ˆ j	 | ƒ Wn t
 k
 rÊ t j d ƒ n Xd  S(   Ni    (   t   Buttont   labelu   1u   2c           ` s   ˆ  j  ˆ ƒ ˆ j ˆ  ƒ d  S(   N(   t   on_clickRR   (    (   t   button2t	   clicked_2R    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt	   clicked_1£  s    c           S` s   d  S(   N(    (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyRö   ¦  s    u   button_clicku
   event_nameu   model_idu   event_valuesu>   apply_json_event probably did not copy models before modifying(   t   bokeh.modelsRò   R   R   Rô   RR   R¾   t   dumpsRe   t   apply_json_eventt   RuntimeErrorR"   t   fail(   R   Rò   t   button1R÷   t
   event_json(    (   Rõ   Rö   R    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt2   test_event_handles_new_callbacks_in_event_callbackž  s    	'(+   R8   R9   RO   RQ   RU   RZ   R]   Rc   Rf   Rk   Rl   Rm   Rn   Ro   Ru   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ñ   Rÿ   (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyRN      sR   															2			!					"															5	)		((   t
   __future__R    R   R   R   R"   R'   R   R¾   t   mockR   Rå   R   Rø   R   t   bokeh.document.eventsR   R	   R
   R   R   R   R   R   t!   bokeh.protocol.messages.patch_docR   t   bokeh.util.logconfigR   t   setupR   R   R   R   t   bokeh.document.documentR   RA   R   RI   R>   RN   (    (    (    sA   lib/python2.7/site-packages/bokeh/document/tests/test_document.pyt   <module>   s*   " :"
=,ÿ ÿ ÿ )