ó
mÜJ]c           @` s¢   d  d l  m Z m Z m Z d  d l Z e d  d l Z d  d l Z d  d l Z d  d l	 Z
 d  d l m Z m Z d  d l m Z m Z d e f d „  ƒ  YZ d S(   i    (   t   absolute_importt   divisiont   print_functionN(   t   transform_column_source_datat   convert_datetime_array(   t
   DataSourcet   ColumnDataSourcet   TestColumnDataSourcec           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 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. „  Z0 d/ „  Z1 d0 „  Z2 d1 „  Z3 RS(2   c         C` s"   t  ƒ  } t | t ƒ s t ‚ d  S(   N(   R   t
   isinstanceR   t   AssertionError(   t   selft   ds(    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt
   test_basic+   s    	c         C` sg   t  d d g d d g ƒ } t | ƒ } | j | k s< t ‚ t | j ƒ t | j ƒ  ƒ k sc t ‚ d  S(   Nt   ai   t   bi   (   t   dictR   t   dataR	   t   sett   column_namest   keys(   R
   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_init_dict_arg/   s    c         C` sj   t  d d g d d g ƒ } t d | ƒ } | j | k s? t ‚ t | j ƒ t | j ƒ  ƒ k sf t ‚ d  S(   NR   i   R   i   R   (   R   R   R   R	   R   R   R   (   R
   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_init_dict_data_kwarg5   s    c         C` s;  t  d d d g d d d g ƒ } | j | ƒ } t | ƒ } t | j ƒ j t | j ƒ ƒ sc t ‚ x\ | j ƒ  D]N } t	 | j
 | t j ƒ s• t ‚ t | | ƒ t | j
 | ƒ k sp t ‚ qp Wt	 | j
 d t j ƒ sá t ‚ d d g t | j
 d ƒ k st ‚ t | j ƒ t | j ƒ t d g ƒ k s7t ‚ d  S(   NR   i   i   R   i   t   indexi    (   R   t	   DataFrameR   R   t   columnst   issubsetR   R	   R   R   R   t   npt   ndarrayt   list(   R
   t   pdR   t   dfR   t   key(    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_init_dataframe_arg;   s    !'-%c         C` sV  t  d d d g d d d g ƒ } | j | ƒ } t ƒ  } | j i  k sN t ‚ | | _ t | j ƒ j t | j ƒ ƒ s~ t ‚ x\ | j	 ƒ  D]N } t
 | j | t j ƒ s° t ‚ t | | ƒ t | j | ƒ k s‹ t ‚ q‹ Wt
 | j d t j ƒ sü t ‚ d d g t | j d ƒ k s!t ‚ t | j ƒ t | j ƒ t d g ƒ k sRt ‚ d  S(   NR   i   i   R   i   R   i    (   R   R   R   R   R	   R   R   R   R   R   R   R   R   R   (   R
   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_data_accepts_dataframe_argG   s    !		'-%c         C` s>  t  d d d g d d d g ƒ } | j | ƒ } t d | ƒ } t | j ƒ j t | j ƒ ƒ sf t ‚ x\ | j ƒ  D]N } t	 | j
 | t j ƒ s˜ t ‚ t | | ƒ t | j
 | ƒ k ss t ‚ qs Wt	 | j
 d t j ƒ sä t ‚ d d g t | j
 d ƒ k s	t ‚ t | j ƒ t | j ƒ t d g ƒ k s:t ‚ d  S(	   NR   i   i   R   i   R   R   i    (   R   R   R   R   R   R   R   R	   R   R   R   R   R   R   (   R
   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_init_dataframe_data_kwargU   s    !'-%c         C` sJ  t  d d d g d d d g d d d g ƒ } | j | ƒ } t d	 | ƒ } t | j ƒ j t | j ƒ ƒ sr t ‚ x\ | j ƒ  D]N } t	 | j
 | t j ƒ s¤ t ‚ t | | ƒ t | j
 | ƒ k s t ‚ q Wt	 | j
 d
 t j ƒ sð t ‚ d d g t | j
 d
 ƒ k st ‚ t | j ƒ t | j ƒ t d
 g ƒ k sFt ‚ d  S(   NR   i   i   R   i   R   i   i   R   t   level_0i    (   R   R   R   R   R   R   R   R	   R   R   R   R   R   R   (   R
   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt&   test_init_dataframe_index_named_columna   s    -'-%c         C` sb  t  d d d g d d d g d d d g ƒ } | j | ƒ } t ƒ  } | j i  k sZ t ‚ | | _ t | j ƒ j t | j ƒ ƒ sŠ t ‚ x\ | j	 ƒ  D]N } t
 | j | t j ƒ s¼ t ‚ t | | ƒ t | j | ƒ k s— t ‚ q— Wt
 | j d	 t j ƒ st ‚ d
 d g t | j d	 ƒ k s-t ‚ t | j ƒ t | j ƒ t d	 g ƒ k s^t ‚ d  S(   NR   i   i   R   i   R   i   i   R#   i    (   R   R   R   R   R	   R   R   R   R   R   R   R   R   R   (   R
   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt.   test_data_accepts_dataframe_index_named_columnm   s    -		'-%c         C` sM  | j  d d g ƒ } d d g d d g g } | j d | d | ƒ } t d | ƒ } t | j ƒ j t | j ƒ ƒ s{ t ‚ xV | D]N } t | j	 | t
 j ƒ s§ t ‚ t | | ƒ t | j	 | ƒ k s‚ t ‚ q‚ Wt | j	 d	 t
 j ƒ só t ‚ d d g t | j	 d	 ƒ k st ‚ t | j ƒ t | j ƒ t d	 g ƒ k sIt ‚ d  S(
   NR   R   i    i   i   i   R   R   R   (   t   CategoricalIndexR   R   R   R   R   R   R	   R   R   R   R   R   (   R
   R   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt+   test_init_dataframe_column_categoricalindex{   s    '-%c         C` se  | j  d d g ƒ } d d g d d g g } | j d | d | ƒ } t ƒ  } | j i  k sc t ‚ | | _ t | j ƒ j t | j ƒ ƒ s“ t ‚ xV | D]N } t	 | j | t
 j ƒ s¿ t ‚ t | | ƒ t | j | ƒ k sš t ‚ qš Wt	 | j d	 t
 j ƒ st ‚ d d g t | j d	 ƒ k s0t ‚ t | j ƒ t | j ƒ t d	 g ƒ k sat ‚ d  S(
   NR   R   i    i   i   i   R   R   R   (   R&   R   R   R   R	   R   R   R   R   R   R   R   R   (   R
   R   R   R   R   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt3   test_data_accepts_dataframe_column_categoricalindexˆ   s    		'-%c         C` s\   i d d g d 6d d g d 6} | j  | ƒ } t j t d d ƒ t d | ƒ Wd  QXd  S(   Ni   i   i   t   matchs   expected an element of.*R   (   R   t   pytestt   raisest
   ValueErrorR   (   R
   R   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt*   test_init_dataframe_nonstring_named_column—   s     c         C` s\   i d d g d 6d d g d 6} | j  | ƒ } t j t d d ƒ t d | ƒ Wd  QXd  S(	   Ni   i   i   R)   s   Could not flatten.*R   (   i   i   (   i   i   (   R   R*   R+   t	   TypeErrorR   (   R
   R   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt/   test_init_dataframe_nonstring_named_multicolumn   s     c         C` sì   d d l  m } | j d d d g ƒ } t | ƒ } | j ƒ  } t | j ƒ d k s[ t ‚ t | j	 d t
 j ƒ sz t ‚ xk | j j D]] } d j | ƒ } t | j	 | t
 j ƒ s» t ‚ t | | ƒ t | j	 | ƒ k s‡ t ‚ q‡ Wd  S(	   Ni    (   t   autompgt   byt   origint   cyli1   t
   origin_cylt   _(   t   bokeh.sampledata.autompgR0   t   groupbyR   t   describet   lenR   R	   R   R   R   R   R   t   valuest   joinR   (   R
   R   R   t   groupR   t   sR   t   k2(    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_init_groupby_arg£   s    c         C` s  d d l  m } | j d d d g ƒ } t ƒ  } | j i  k sF t ‚ | | _ | j ƒ  } t | j ƒ d k sv t ‚ t	 | j d t
 j ƒ s• t ‚ xk | j j D]] } d j | ƒ } t	 | j | t
 j ƒ sÖ t ‚ t | | ƒ t | j | ƒ k s¢ t ‚ q¢ Wd  S(	   Ni    (   R0   R1   R2   R3   i1   R4   R5   (   R6   R0   R7   R   R   R	   R8   R9   R   R   R   R   R   R:   R;   R   (   R
   R   R   R<   R   R=   R   R>   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_data_accepts_groupby_arg¯   s    		c         C` sï   d d l  m } | j d d d g ƒ } t d | ƒ } | j ƒ  } t | j ƒ d k s^ t ‚ t | j	 d t
 j ƒ s} t ‚ xk | j j D]] } d	 j | ƒ } t | j	 | t
 j ƒ s¾ t ‚ t | | ƒ t | j	 | ƒ k sŠ t ‚ qŠ Wd  S(
   Ni    (   R0   R1   R2   R3   R   i1   R4   R5   (   R6   R0   R7   R   R8   R9   R   R	   R   R   R   R   R   R:   R;   R   (   R
   R   R   R<   R   R=   R   R>   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_init_groupby_data_kwarg½   s    c         C` s6  | j  i d d d d g d d 6d d d d	 g d d
 6t d ƒ d 6ƒ } | j d d d d d	 g d g ƒ } t d | ƒ } | j ƒ  } t | j ƒ d k s¥ t ‚ t | j	 d t
 j ƒ sÄ t ‚ xk | j j D]] } d j | ƒ } t | j	 | t
 j ƒ st ‚ t | | ƒ t | j	 | ƒ k sÑ t ‚ qÑ Wd  S(   Ni   i   i   i   t   Ai
   i   i   i(   t   Bi   t   CR   i   R   R5   (   R   t   rangeR7   R   R8   R9   R   R	   R   R   R   R   R   R:   R;   R   (   R
   R   R   R<   R   R=   R   R>   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt)   test_init_groupby_with_None_subindex_nameÉ   s    J%c         C` sN  | j  i d d d d g d d 6d d d d	 g d d
 6t d ƒ d 6ƒ } | j d d d d d	 g d g ƒ } t ƒ  } | j i  k s t ‚ | | _ | j ƒ  } t | j ƒ d k s½ t ‚ t	 | j d t
 j ƒ sÜ t ‚ xk | j j D]] } d j | ƒ } t	 | j | t
 j ƒ st ‚ t | | ƒ t | j | ƒ k sé t ‚ qé Wd  S(   Ni   i   i   i   RB   i
   i   i   i(   RC   i   RD   i   R   R5   (   R   RE   R7   R   R   R	   R8   R9   R   R   R   R   R   R:   R;   R   (   R
   R   R   R<   R   R=   R   R>   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt1   test_data_accepts_groupby_with_None_subindex_nameÕ   s    J%		c         C` sž   t  d d g d d g ƒ } t | ƒ j } t d | ƒ } | j | k sN t ‚ t | j ƒ t | ƒ k so t ‚ d | j d d <| d d d k sš t ‚ d  S(   NR   i   R   i   R   i    (   R   R   R   R	   t   id(   R
   R   t   cdR   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt&   test_init_propertyvaluecolumndata_copyã   s    !c         C` sm   t  ƒ  } | j d d d g d d ƒ} | d k s9 t ‚ | j d d d g d d	 ƒ} | d	 k si t ‚ d  S(
   Ni   i   i   t   namet   fooi   i   i   t   bar(   R   t   addR	   (   R
   R   RK   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_add_with_nameì   s
    	c         C` sa   t  ƒ  } | j d d d g ƒ } | d k s3 t ‚ | j d d d g ƒ } | d k s] t ‚ d  S(	   Ni   i   i   s   Series 0i   i   i   s   Series 1(   R   RN   R	   (   R
   R   RK   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_add_without_nameó   s
    	c         C` sd   t  ƒ  } | j d d d g d ƒ } | d k s6 t ‚ | j d d d g ƒ } | d k s` t ‚ d  S(	   Ni   i   i   RL   i   i   i   s   Series 1(   R   RN   R	   (   R
   R   RK   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_add_with_and_without_nameú   s
    	c         C` sV   t  ƒ  } | j d d d g d ƒ } | s0 t ‚ | j d ƒ | j g  k sR t ‚ d  S(   Ni   i   i   RL   (   R   RN   R	   t   removeR   (   R
   R   RK   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_remove_exists  s
    	c         C` sš   t  j d t ƒ ‚ } t ƒ  } | j d ƒ | j g  k s@ t ‚ t | ƒ d k sX t ‚ | d j t	 k sq t ‚ t
 | d j ƒ d k s t ‚ Wd  QXd  S(   Nt   recordRL   i   i    s*   Unable to find column 'foo' in data source(   t   warningst   catch_warningst   TrueR   RR   R   R	   R9   t   categoryt   UserWarningt   strt   message(   R
   t   wR   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_remove_exists2  s    	c         C` s“  t  d t d d g d d g ƒ ƒ } t j t d d ƒ | j t ƒ  ƒ Wd  QXt j t d d ƒ | j t d d g ƒ ƒ Wd  QXt j t d d	 ƒ0 | j t d d g d d g d
 d g ƒ ƒ Wd  QXt j t d d ƒ' | j t d d g d
 d g ƒ ƒ Wd  QXt j t d d ƒ* | j t d d g d d d g ƒ ƒ Wd  QXt j t d d ƒ- | j t d d g d t j d ƒ ƒ ƒ Wd  QXd  S(   NR   R   i
   R   i   R)   s=   Must stream updates to all existing columns \(missing: a, b\)s:   Must stream updates to all existing columns \(missing: b\)s8   Must stream updates to all existing columns \(extra: x\)t   xsD   Must stream updates to all existing columns \(missing: b, extra: x\)s4   All streaming column updates must be the same lengthsD   stream\(...\) only supports 1d sequences, got ndarray with size \(.*i   (   i   i   (   R   R   R*   R+   R,   t   streamR   t   ones(   R
   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_stream_bad_data  s    $1(+c         C` sU   | j  t d d g d d g d d g ƒ ƒ j d ƒ } t j | ƒ d k sQ t ‚ d  S(   NR   i
   R   i   t   ci   (   R   R   t	   set_indexR   t   _df_index_nameR	   (   R
   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt$   test__df_index_name_with_named_index!  s    6c         C` sL   | j  t d d g d d g d d g ƒ ƒ } t j | ƒ d k sH t ‚ d  S(   NR   i
   R   i   Rb   i   R   (   R   R   R   Rd   R	   (   R
   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt&   test__df_index_name_with_unnamed_index%  s    -c         C` sj   t  j d ƒ } | j | ƒ j d d g ƒ } | j j d d g k sK t ‚ t j | ƒ d k sf t ‚ d  S(   Nuy   
Fruit,Color,Count,Price
Apple,Red,3,$1.29
Apple,Green,9,$0.99
Pear,Red,25,$2.59
Pear,Green,26,$2.79
Lime,Green,99,$0.39
t   Fruitt   Colort   Fruit_Color(	   t   iot   StringIOt   read_csvRc   R   t   namesR	   R   Rd   (   R
   R   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt*   test__df_index_name_with_named_multi_index)  s
    	c      
   C` s¯   t  j d d d d d d d d g ƒ t  j d d d d d d d d g ƒ g } | j t  j j d d ƒ d	 | ƒ} | j j d  d  g k s t ‚ t	 j
 | ƒ d	 k s« t ‚ d  S(
   NRM   t   bazRL   t   quxt   onet   twoi   i   R   (   R   t   arrayR   t   randomt   randnR   Rm   t   NoneR	   R   Rd   (   R
   R   t   arraysR   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt,   test__df_index_name_with_unnamed_multi_index6  s
    $*$c      	   ` sß   t  d t d d g d d g ƒ ƒ } d | _ i  ‰  t ƒ  } ‡  f d †  } | | j _ | j t d d d	 g d d
 d g ƒ d | ƒ ˆ  d d | t d d d	 g d d
 d g ƒ d | f k sÅ t ‚ ˆ  d i  k sÛ t ‚ d  S(   NR   R   i
   R   i   t   docc          ` s   |  ˆ  d <| ˆ  d <d  S(   Nt   argst   kw(    (   Rz   R{   (   t   stuff(    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   mockC  s    
i   i   i   i   RL   Rz   R{   (   R   R   t	   _documentt   objectR   t   _streamR	   (   R
   R   t   mock_setterR}   (    (   R|   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test__stream_good_data=  s    $		.@c      	   ` sÓ   t  d t d d g d d g ƒ ƒ } d | _ i  ‰  ‡  f d †  } | | j _ | j t d d d	 g d d
 d g ƒ d ƒ ˆ  d d | t d d d	 g d d
 d g ƒ d d  f k s¹ t ‚ ˆ  d i  k sÏ t ‚ d  S(   NR   R   i
   R   i   Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R|   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR}   Q  s    
i   i   i   i   RL   Rz   R{   (   R   R   R~   R   R€   Rv   R	   (   R
   R   R}   (    (   R|   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_stream_good_dataL  s    $	+@c      
   ` s  t  j j ƒ  } t j g  t d d ƒ D] } | t  j | ƒ ^ q% d d ƒ} t d t d | d t	 t d d ƒ ƒ ƒ ƒ } d | _
 i  ‰  t ƒ  } ‡  f d	 †  } | | j _ t j | t  j d ƒ g d d ƒ} | j t d | d d g ƒ d
 | ƒ t j ˆ  d d d | ƒ st ‚ d  S(   Ni   i
   t   dtypet
   datetime64R   R   R   Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R|   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR}   b  s    
RL   Rz   i   (   t   dtt   datetimet   nowR   Rs   RE   t	   timedeltaR   R   R   R~   R   R   R€   t   array_equalR	   (   R
   Rˆ   t   it   datesR   R   R}   t   new_date(    (   R|   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt!   test__stream_good_datetime64_dataZ  s    >-		%%c   	   
   ` s7  t  j j ƒ  } t j g  t d d ƒ D] } | t  j | ƒ ^ q% d d ƒ} t | ƒ } t d t	 d | d t
 t d d ƒ ƒ ƒ ƒ } d | _ i  ‰  t ƒ  } ‡  f d	 †  } | | j _ t j | t  j d ƒ g d d ƒ} | j t	 d | d d g ƒ d
 | ƒ t | ƒ } t j ˆ  d d d | ƒ s3t ‚ d  S(   Ni   i
   R„   R…   R   R   R   Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R|   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR}   t  s    
RL   Rz   i   (   R†   R‡   Rˆ   R   Rs   RE   R‰   R   R   R   R   R~   R   R   R€   RŠ   R	   (	   R
   Rˆ   R‹   RŒ   R   R   R}   R   t   transformed_date(    (   R|   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt-   test__stream_good_datetime64_data_transformedk  s    >-		%%c      
   ` s;  | j  d | j d d d d d ƒd d g d	 t j t j j d ƒ d
 d ƒƒ } t d	 | ƒ } d | _ i  ‰  t ƒ  } ‡  f d †  } | | j	 _
 | j  d | j | j d ƒ d | j d	 t j j d ƒ ƒ } | j
 | d | ƒ t j ˆ  d d d | j j ƒ st ‚ t j ˆ  d d d | j j ƒ s7t ‚ d  S(   NR   Rˆ   t   periodsi   t   freqt   TR   RB   R   t   axisi    Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R|   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR}   ‰  s    
t   30mRL   Rz   i   (   R   t
   date_rangeR   t   cumsumRt   t   standard_normalR   R~   R   R   R€   R   t   to_timedeltaR   RŠ   R:   R	   RB   (   R
   R   R   R   R   R}   t   new_df(    (   R|   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt)   test__stream_good_df_with_date_index_data~  s"    		$				*c      
   ` sO  | j  d | j d d d d d ƒd d g d	 t j t j j d ƒ d
 d ƒƒ } t d	 | ƒ } d | _ i  ‰  t ƒ  } ‡  f d †  } | | j	 _
 | j  d | j | j d ƒ d | j d	 t j j d ƒ ƒ } | j
 i | j d 6| j d 6d | ƒ t j ˆ  d d d | j j ƒ s!t ‚ t j ˆ  d d d | j j ƒ sKt ‚ d  S(   NR   Rˆ   R‘   i   R’   R“   R   RB   R   R”   i    Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R|   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR}   ¡  s    
R•   RL   Rz   i   (   R   R–   R   R—   Rt   R˜   R   R~   R   R   R€   R   R™   R   RB   RŠ   R:   R	   (   R
   R   R   R   R   R}   Rš   (    (   R|   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt/   test__stream_good_dict_of_index_and_series_data–  s"    		$				'*c      
   ` sr  | j  d | j d d d d d ƒd d g d	 t j t j j d ƒ d
 d ƒƒ } t d	 i t | j j	 ƒ d 6| j
 d 6ƒ } d | _ i  ‰  t ƒ  } ‡  f d †  } | | j _ | j  d | j | j d ƒ d | j d	 t j j d ƒ ƒ } | j i | j d 6| j
 d 6d | ƒ t j ˆ  d d d t | j j	 ƒ ƒ sDt ‚ t j ˆ  d d d | j
 j	 ƒ snt ‚ d  S(   NR   Rˆ   R‘   i   R’   R“   R   RB   R   R”   i    Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R|   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR}   º  s    
R•   RL   Rz   i   (   R   R–   R   R—   Rt   R˜   R   R   R   R:   RB   R~   R   R   R€   R™   R   RŠ   R	   (   R
   R   R   R   R   R}   Rš   (    (   R|   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt;   test__stream_good_dict_of_index_and_series_data_transformed®  s$    		$				'0c         C` sv   | j  ƒ  | j  ƒ  k s t ‚ xQ | j ƒ  D]C \ } } t | ƒ t j k sR t ‚ t j | | | ƒ s+ t ‚ q+ Wd  S(   N(   R   R	   t   itemst   typeR   R   RŠ   (   R
   t   d1t   d2t   kt   v(    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   _assert_equal_dicts_of_arraysÇ  s    c   
      ` sÃ  | j  t d d g d d g d d g ƒ ƒ j d ƒ } t | ƒ } d | _ i  ‰ ‡ f d †  } | | j _ i  ‰ | j j ‰  ‡  ‡ f d	 †  } | | j _ | j t d d
 d g d t j	 d d g ƒ d | j
 d d g ƒ ƒ d ƒ t ˆ d ƒ d k st ‚ d | t d d
 d g d t j	 d d g ƒ d | j
 d d g ƒ ƒ d d  f } x† t t ˆ d | ƒ ƒ D]k \ } \ } }	 | d k rÂ| d |	 d k s¡t ‚ | d =|	 d =|  j | |	 ƒ qi| |	 k sit ‚ qiWˆ d i  k sît ‚ t ˆ d ƒ d k s
t ‚ |  j ˆ d d t d t j	 d g ƒ d t j	 d g ƒ d t j	 d g ƒ ƒ ƒ |  j t | j ƒ t d t j	 d d
 d g ƒ d t j	 d d d g ƒ d t j	 d d d g ƒ ƒ ƒ d  S(   NR   i
   R   i   Rb   i   Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   t   notify_owners_stuff(    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   notify_owners_mockÔ  s    
c          ` s%   |  ˆ d <| ˆ d <ˆ  |  | Ž  d  S(   NRz   t   kwargs(    (   Rz   R§   (   t   data_streamt   stream_stuff(    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   stream_wrapperÜ  s    

i   i   i   i   i   i    i   Rz   i   i   R§   i   i    (   R   R   Rc   R   R~   R   t   _notify_ownersR€   R   Rs   t   SeriesR9   R	   Rv   t	   enumeratet   zipR¤   (
   R
   R   R   R   R¦   Rª   t   expected_stream_argsR‹   t   argt   ex_arg(    (   R¨   R¥   R©   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt&   test_stream_dict_to_ds_created_from_dfÍ  sD    6	!c         ` sÃ  | j  t d d g d d g d d g ƒ ƒ } t | ƒ } d | _ i  ‰ ‡ f d †  } | | j _ i  ‰ | j j ‰  ‡  ‡ f d	 †  } | | j _ | j | j d
 d d g d t d ƒ ƒd ƒ t	 ˆ d ƒ d k sÝ t
 ‚ | j  t d t j d
 g ƒ d t j d g ƒ d t j d g ƒ ƒ ƒ } | j d ƒ } | j j | d <d | | d d  f } x^ t t ˆ d | ƒ ƒ D]C \ }	 \ }
 } |	 d k r¤|  j |
 | ƒ qs|
 | k sst
 ‚ qsWˆ d i  k sÐt
 ‚ t	 ˆ d ƒ d k sìt
 ‚ |  j ˆ d d t d t j d g ƒ d t j d g ƒ d t j d g ƒ d t j d g ƒ ƒ ƒ |  j t | j ƒ t d t j d d
 g ƒ d t j d d g ƒ d t j d d g ƒ d t j d d g ƒ ƒ ƒ d  S(   NR   i
   R   i   Rb   i   Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R¥   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR¦     s    
c          ` s%   |  ˆ d <| ˆ d <ˆ  |  | Ž  d  S(   NRz   R§   (    (   Rz   R§   (   R¨   R©   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyRª     s    

i   i   i   R   t   abci   Rz   i   t   seriesi   R§   i   i    (   R   R   R   R~   R   R«   R€   R¬   R   R9   R	   R   Rs   t   to_dictR   R:   Rv   R­   R®   R¤   (   R
   R   R   R   R¦   Rª   t   expected_dft   expected_stream_datat   expected_argsR‹   R°   R±   (    (   R¨   R¥   R©   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt(   test_stream_series_to_ds_created_from_df   sD    -	.,c         ` sý  | j  t d d g d d g d d g ƒ ƒ j d ƒ } t | ƒ } d | _ i  ‰ ‡ f d †  } | | j _ i  ‰ | j j ‰  ‡  ‡ f d	 †  } | | j _ | j | j  t d d
 d g d d d g d d d g ƒ ƒ j d ƒ d ƒ t ˆ d ƒ d k st	 ‚ t d t
 j d
 d g ƒ d t
 j d d g ƒ d t
 j d d g ƒ ƒ } d | | d d  f } x± t t ˆ d | ƒ ƒ D]– \ } \ }	 }
 | d k rð|	 j ƒ  |
 j ƒ  k s´t	 ‚ xW |	 j ƒ  D]( \ } } t
 j | |
 | ƒ sÁt	 ‚ qÁWqxˆ d | | | k sxt	 ‚ qxWˆ d i  k s(t	 ‚ t ˆ d ƒ d k sDt	 ‚ |  j ˆ d d t d t
 j d g ƒ d t
 j d g ƒ d t
 j d g ƒ ƒ ƒ |  j t | j ƒ t d t
 j d d
 d g ƒ d t
 j d d d g ƒ d t
 j d d d g ƒ ƒ ƒ d  S(   NR   i
   R   i   Rb   i   Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R¥   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR¦   <  s    
c          ` s%   |  ˆ d <| ˆ d <ˆ  |  | Ž  d  S(   NRz   R§   (    (   Rz   R§   (   R¨   R©   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyRª   E  s    

i   i   i   i   i   i    i   Rz   i   i   R§   i   i    (   R   R   Rc   R   R~   R   R«   R€   R9   R	   R   Rs   Rv   R­   R®   R   Rž   RŠ   R¤   (   R
   R   R   R   R¦   Rª   t   expected_steam_dataR¸   R‹   R°   R±   R¢   R£   (    (   R¨   R¥   R©   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt0   test_stream_df_to_ds_created_from_df_named_index5  sD    6	,#"c         ` s  | j  t d d g d d g d d g ƒ ƒ } t | ƒ } d | _ i  ‰ ‡ f d †  } | | j _ i  ‰ | j j ‰  ‡  ‡ f d	 †  } | | j _ | j | j  t d d
 d g d d d g d d d g ƒ ƒ d ƒ t ˆ d ƒ d k sï t ‚ | j  t d t	 j
 d
 d g ƒ d t	 j
 d d g ƒ d t	 j
 d d g ƒ ƒ ƒ } | j d ƒ } | j j | d <d | | d d  f } x“ t t ˆ d | ƒ ƒ D]x \ }	 \ }
 } |	 d k rèxW |
 j ƒ  D]( \ } } t	 j | | | ƒ s¹t ‚ q¹WqŽˆ d |	 | |	 k sŽt ‚ qŽWˆ d i  k s t ‚ t ˆ d ƒ d k s<t ‚ |  j ˆ d d t d t	 j
 d g ƒ d t	 j
 d g ƒ d t	 j
 d g ƒ d t	 j
 d g ƒ ƒ ƒ |  j t | j ƒ t d t	 j
 d d
 d g ƒ d t	 j
 d d d g ƒ d t	 j
 d d d g ƒ d t	 j
 d d d g ƒ ƒ ƒ d  S(   NR   i
   R   i   Rb   i   Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R¥   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR¦   q  s    
c          ` s%   |  ˆ d <| ˆ d <ˆ  |  | Ž  d  S(   NRz   R§   (    (   Rz   R§   (   R¨   R©   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyRª   z  s    

i   i   i   i   i   i    i   Rz   i   R´   R   i   R§   i   i    (   R   R   R   R~   R   R«   R€   R9   R	   R   Rs   Rµ   R   R:   Rv   R­   R®   Rž   RŠ   R¤   (   R
   R   R   R   R¦   Rª   R¶   R·   R¸   R‹   R°   R±   R¢   R£   (    (   R¨   R¥   R©   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt2   test_stream_df_to_ds_created_from_df_default_indexj  sJ    -	!,#"c         C` sª   t  d t d d d g d d d g ƒ ƒ } t j t d d	 ƒ | j t d
 d g ƒ ƒ Wd  QXt j t d d ƒ0 | j t d d g d
 d g d d g ƒ ƒ Wd  QXd  S(   NR   R   i
   i   R   i   i   R)   s,   Can only patch existing columns \(extra: c\)Rb   i    id   s/   Can only patch existing columns \(extra: c, d\)t   d(   i    id   (   i    id   (   i    id   (   i    id   (   R   R   R*   R+   R,   t   patch(   R
   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_patch_bad_columns¢  s
    *c      	   C` sc   t  d t d d d g d d d g ƒ ƒ } t j t d d	 ƒ | j t d d g ƒ ƒ Wd  QXd  S(   NR   R   i
   i   R   i   i   R)   s0   Out-of bounds index \(3\) in patch for column: ai   id   (   i   id   (   R   R   R*   R+   R,   R¾   (   R
   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_patch_bad_simple_indicesª  s    *c      	   ` sÙ   t  d t d d d g d d d g ƒ ƒ } d | _ i  ‰  t ƒ  } ‡  f d	 †  } | | j _ | j t d d d g d d g ƒ | ƒ ˆ  d d | t d d d g d d g ƒ | f k s¿ t ‚ ˆ  d i  k sÕ t ‚ d  S(   NR   R   i
   i   R   i   i   Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R|   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR}   ´  s    
i    id   i   ie   iÈ   Rz   R{   (   i    id   (   i   ie   (   i    iÈ   (   i    id   (   i   ie   (   i    iÈ   (   R   R   R~   R   R   t   _patchR¾   R	   (   R
   R   R   R}   (    (   R|   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_patch_good_simple_indices¯  s    *		(:c         C` s/  t  d t d d d d d d d g d	 d
 d d d d d g ƒ ƒ } t j t d d ƒ6 | j t d t d ƒ t t d ƒ ƒ f g ƒ ƒ Wd  QXt j t d d ƒ9 | j t d t d d ƒ t t d ƒ ƒ f g ƒ ƒ Wd  QXt j t d d ƒ< | j t d t d  d d ƒ t t d ƒ ƒ f g ƒ ƒ Wd  QXt j t d d ƒ< | j t d t d d d ƒ t t d ƒ ƒ f g ƒ ƒ Wd  QXt j t d d ƒ< | j t d t d d d ƒ t t d ƒ ƒ f g ƒ ƒ Wd  QXt j t d d ƒ< | j t d t d d d ƒ t t d ƒ ƒ f g ƒ ƒ Wd  QXd  S(   NR   R   i
   i   i   i   i   i   R   i   i   i   i   i   i   R)   s<   Out-of bounds slice index stop \(10\) in patch for column: as<   Patch slices must have start < end, got slice\(10, 1, None\)i   s[   Patch slices must have non-negative \(start, stop, step\) values, got slice\(None, 10, -1\)iÿÿÿÿs9   Patch slices must have start < end, got slice\(10, 1, 1\)s:   Patch slices must have start < end, got slice\(10, 1, -1\)sX   Patch slices must have non-negative \(start, stop, step\) values, got slice\(1, 10, -1\)(
   R   R   R*   R+   R,   R¾   t   sliceR   RE   Rv   (   R
   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_patch_bad_slice_indices¼  s    B7:===c         ` su  t  d t d d d d d d d g d	 d
 d d d d d g ƒ ƒ } d | _ i  ‰  t ƒ  } ‡  f d †  } | | j _ | j t d t d ƒ d d g f t d d ƒ d d g f g d	 t d d  d ƒ d d d g f g ƒ | ƒ ˆ  d d | t d t d ƒ d d g f t d d ƒ d d g f g d	 t d d  d ƒ d d d g f g ƒ | f k s[t	 ‚ ˆ  d i  k sqt	 ‚ d  S(   NR   R   i
   i   i   i   i   i   R   i   i   i   i   i   i   Ry   c          ` s   |  ˆ  d <| ˆ  d <d  S(   NRz   R{   (    (   Rz   R{   (   R|   (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR}   Ñ  s    
i   id   ie   i   i   i    if   Rz   R{   (
   R   R   R~   R   R   RÁ   R¾   RÃ   Rv   R	   (   R
   R   R   R}   (    (   R|   s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_patch_good_slice_indicesÌ  s    B		j|c         C` s'  t  j d t ƒ 2 } t d t d d d g d d d d	 g ƒ ƒ Wd  QXt | ƒ d
 k s^ t ‚ t | d j ƒ d k s} t ‚ t ƒ  } t  j d t ƒ . } t d d d g d d d d	 g ƒ | _	 Wd  QXt | ƒ d
 k sà t ‚ t | d j ƒ d k sÿ t ‚ t d t d d d g ƒ ƒ } t  j d t ƒ  } d d d	 g | j	 d <Wd  QXt | ƒ d
 k sft ‚ t | d j ƒ d k s…t ‚ t d t d d d g d d d g ƒ ƒ } t  j d t ƒ ) } | j	 j
 t d d d d g ƒ ƒ Wd  QXt | ƒ d
 k st ‚ t | d j ƒ d k s#t ‚ d  S(   NRT   R   R   i
   i   R   i   i   i   i   i    sZ   ColumnDataSource's columns must be of the same length. Current lengths: ('a', 2), ('b', 3)i   sZ   ColumnDataSource's columns must be of the same length. Current lengths: ('a', 3), ('b', 2)(   RU   RV   RW   R   R   R9   R	   RZ   R[   R   t   update(   R
   t   warnsR   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_data_column_lengthsÙ  s&    1	-*(c         C` sH   t  ƒ  } i d d d g d 6} | j d | ƒ | j | k sD t ‚ d  S(   Ni   i   i   RL   R   (   R   t   set_from_jsonR   R	   (   R
   R   R   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_set_data_from_json_list  s    	c         C` sk   t  ƒ  } i t j d d t j ƒd 6} t | ƒ } | j d | ƒ t j | j d | d ƒ sg t ‚ d  S(   Ni   R„   RL   R   (	   R   R   t   aranget   int64R   RÉ   RŠ   R   R	   (   R
   R   R   t   json(    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   test_set_data_from_json_base64  s
    	c         C` sq   t  ƒ  } i t j d d t j ƒg g d 6} t | ƒ } | j d | ƒ t j | j d | d ƒ sm t ‚ d  S(   Ni   R„   RL   R   (	   R   R   RË   RÌ   R   RÉ   RŠ   R   R	   (   R
   R   R   RÍ   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt%   test_set_data_from_json_nested_base64  s
    	%c         C` sz   t  ƒ  } i t j d d t j ƒd d d g g d 6} t | ƒ } | j d | ƒ t j | j d | d ƒ sv t ‚ d  S(   Ni   R„   i   i   RL   R   (	   R   R   RË   RÌ   R   RÉ   RŠ   R   R	   (   R
   R   R   RÍ   (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt.   test_set_data_from_json_nested_base64_and_list  s
    	.(4   t   __name__t
   __module__R   R   R   R    R!   R"   R$   R%   R'   R(   R-   R/   R?   R@   RA   RF   RG   RJ   RO   RP   RQ   RS   R]   Ra   Re   Rf   Rn   Rx   R‚   Rƒ   RŽ   R   R›   Rœ   R   R¤   R²   R¹   R»   R¼   R¿   RÀ   RÂ   RÄ   RÅ   RÈ   RÊ   RÎ   RÏ   RÐ   (    (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyR   )   sd   																																							3	5	5	8						)			(   t
   __future__R    R   R   R*   Rj   R‡   R†   RU   t   numpyR   t   bokeh.util.serializationR   R   t   bokeh.models.sourcesR   R   R   R   (    (    (    s>   lib/python2.7/site-packages/bokeh/models/tests/test_sources.pyt   <module>   s    
