ó
—W[c           @   sw  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 j
 Z d d l Z d d l j Z d d l m Z m Z d d l j Z y d d l j Z Wn# e k
 rÉ d d l j j Z n Xd d l m Z e e j ƒ d k Z y d d l m Z Wn e k
 rd Z n Xd d l! m" Z" m# Z# d d	 l" m$ Z$ m% Z% m& Z& e j' j( d
 ƒ Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ e e0 ƒ d „  ƒ Z1 d „  Z2 d „  Z3 d „  Z4 d e5 f d „  ƒ  YZ6 d „  Z7 d „  Z8 e e j ƒ d k rad „  Z9 d „  Z: e& d d ƒ d „  ƒ Z; e& d d ƒ d „  ƒ Z< e& d d ƒ d „  ƒ Z= n  d  „  Z> d! „  Z? d S("   s   Tests for plotting utilities.iÿÿÿÿN(   t   assert_equalt   raises(   t   LooseVersions   0.15(   t   BeautifulSoupi   (   t   utilst   rcmod(   t   get_dataset_namest   load_datasett   _networkid   c          C   s›   t  j t ƒ }  t t |  ƒ d ƒ |  \ } } } t t | ƒ t | ƒ ƒ t j d ƒ } t  j | d ƒ \ } } } t j j	 t j
 | | d k ƒ ƒ d S(   s6   Test the function to return barplot args for pmf hist.i   i
   i    N(   R   t   pmf_histt   a_normR    t   lent   npt   aranget   noset   toolst   assert_truet   all(   t   outt   xt   ht   wt   a(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_pmf_hist_basics"   s    c          C   s5   t  j t ƒ \ }  } } t |  d |  d | ƒ d S(   s    Test histogram width is correct.i   i    N(   R   R	   R
   R    (   R   R   R   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_pmf_hist_widths/   s    c          C   sN   t  j t ƒ \ }  } } t j j t | ƒ d ƒ t j j | j ƒ  d ƒ d S(   s)   Test that output data behaves like a PMF.i   N(	   R   R	   R
   R   R   t   assert_almost_equalt   sumt   assert_less_equalt   max(   R   R   R   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_pmf_hist_normalization5   s    c          C   s2   t  j t d ƒ \ }  } } t t |  ƒ d ƒ d S(   s   Test bin specification.i   N(   R   R	   R
   R    R   (   R   R   R   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_pmf_hist_bins<   s    c          C   sk   d d g d d g g }  d d g } t  j d d g d d g g ƒ } t j |  | ƒ } t j | | ƒ d S(   s   Test behavior of ci_to_errsize.g      à?g      ô?g      ø?i   g      Ð?i    N(   R   t   arrayR   t   ci_to_errsizet   nptt   assert_array_equal(   t   cist   heightst   actual_errsizet   test_errsize(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_ci_to_errsizeB   s    	c          C   s€   t  j d d ƒ }  t |  d	 ƒ t  j d d ƒ } t | d
 ƒ t  j d d ƒ } t | d ƒ t  j d d ƒ } t | d ƒ d S(   s   Test color desaturation.t   redg      à?g      è?g      Ð?s   #00FF00i    i   N(   g      è?g      Ð?g      Ð?(   g      Ð?g      è?g      Ð?(   i    i    i   (   g      Ð?g      Ð?g      è?(   g      è?g      Ð?g      Ð?(   R   t
   desaturateR    (   t   out1t   out2t   out3t   out4(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_desaturateP   s    c           C   s   t  j d d ƒ d S(   s1   Test that pct outside of [0, 1] raises exception.t   bluei2   N(   R   R)   (    (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_desaturation_prop_   s    c          C   s    t  j d ƒ }  t |  d ƒ d S(   s(   Test performance of saturation function.g      è?g      Ð?i   i    N(   g      è?g      Ð?g      Ð?(   i   i    i    (   R   t   saturateR    (   R   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_saturatee   s    c          C   s/   t  j d ƒ }  t j |  ƒ } t | d ƒ d S(   s   Test the IQR function.i   i   N(   R   R   R   t   iqrR    (   R   R3   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_iqrk   s    c          C   sN   d }  t  j |  ƒ } t t |  ƒ t t ƒ  ƒ ƒ t t | ƒ t d ƒ ƒ d S(   s,   Test the to_utf8 function: string to Unicodes   \u01ff\u02ffu   Ç¿Ë¿N(   R   t   to_utf8R    t   typet   str(   t   st   u(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_str_to_utf8r   s    t   TestSpineUtilsc           B   s›   e  Z d  d d d g Z d d g Z d  d g Z d Z d Z d e f Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   t   leftt   rightt   bottomt   topi
   t   outwardi    c         C   s   t  j ƒ  \ } } x+ |  j D]  } t j | j | j ƒ  ƒ q Wt j ƒ  x, |  j	 D]! } t j | j | j ƒ  ƒ qT Wx+ |  j
 D]  } t j | j | j ƒ  ƒ qƒ Wt j t t |  j t g d ƒ ƒ   x, |  j D]! } t j | j | j ƒ  ƒ q× Wd  S(   Ni   (   t   pltt   subplotst   sidest   ntR   t   spinest   get_visibleR   t   despinet   outer_sidest   inner_sidest   dictt   zipt   True(   t   selft   ft   axt   side(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_despine„   s    
&c         C   s½   t  j d d ƒ \ } \ } } t j d | ƒ x+ |  j D]  } t j | j | j ƒ  ƒ q8 Wx, |  j	 D]! } t j | j | j ƒ  ƒ qf Wx+ |  j
 D]  } t j | j | j ƒ  ƒ q• Wd  S(   Ni   i   RO   (   RA   RB   R   RG   RC   RD   R   RE   RF   RH   RI   (   RM   RN   t   ax1t   ax2RP   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_despine_specific_axes“   s    c         C   sÌ   t  j ƒ  \ } } x1 |  j D]& } t j | j | j ƒ  |  j ƒ q Wt j	 d | d |  j
 ƒ xf |  j D][ } | j | j ƒ  } | j | j ƒ  } | r± t j | |  j ƒ qi t j | |  j ƒ qi Wd  S(   NRO   t   offset(   RA   RB   RC   RD   R    RE   t   get_positiont   original_positionR   RG   RU   RF   t   offset_position(   RM   RN   RO   RP   t
   is_visiblet   new_position(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_despine_with_offset    s    c         C   s­   t  j ƒ  \ } } t j d | d t d |  j ƒ ƒ xr |  j D]g } | j | j ƒ  } | j | j	 ƒ  } | r’ | d k r’ t
 j | |  j ƒ q> t
 j | |  j ƒ q> Wd  S(   NRO   RU   R<   (   RA   RB   R   RG   RJ   RU   RC   RE   RF   RV   RD   R    RX   RW   (   RM   RN   RO   RP   RY   RZ   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt!   test_despine_side_specific_offset±   s    "c         C   sÅ   t  j d d ƒ \ } \ } } t j d |  j d | ƒ x‡ |  j D]| } t j | j | j	 ƒ  |  j
 ƒ | j | j ƒ  r t j | j | j	 ƒ  |  j ƒ qA t j | j | j	 ƒ  |  j
 ƒ qA Wd  S(   Ni   i   RU   RO   (   RA   RB   R   RG   RU   RC   RD   R    RE   RV   RW   RF   RX   (   RM   RN   RR   RS   RP   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt&   test_despine_with_offset_specific_axes¾   s    
c         C   s   t  j ƒ  \ } } | j d d d g d d d g ƒ | j d d ƒ t j d t ƒ x4 |  j D]) } | j | j	 ƒ  } t
 j | d ƒ q^ Wd  S(   Ni   i   i   g      è?g      
@t   trim(   i   i   (   RA   RB   t   plott   set_xlimR   RG   RL   RI   RE   t
   get_boundsRD   R    (   RM   RN   RO   RP   t   bounds(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_despine_trim_spinesÍ   s    "c         C   s™   t  j ƒ  \ } } | j d d d g d d d g ƒ | j d d ƒ | j ƒ  t j d t ƒ x4 |  j D]) } | j	 | j
 ƒ  } t j | d ƒ qh Wd  S(   Ni   i   i   g333333ë?g333333	@R^   (   i   i   (   RA   RB   R_   t   set_ylimt   invert_yaxisR   RG   RL   RI   RE   Ra   RD   R    (   RM   RN   RO   RP   Rb   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_despine_trim_inverted×   s    "
c         C   sn   t  j ƒ  \ } } | j d d d g d d d g ƒ | j g  ƒ t j d t ƒ t j | j	 ƒ  j
 d ƒ d  S(   Ni   i   i   R^   i    (   RA   RB   R_   t
   set_yticksR   RG   RL   RD   R    t
   get_ytickst   size(   RM   RN   RO   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_despine_trim_noticksã   s
    "c         C   s
  t  j ƒ  \ } } x | j j D] } t | _ q Wt j d | d t d t ƒ x# | j j D] } | j	 s[ t
 ‚ q[ Wt  j | ƒ t  j ƒ  \ } } x | j j D] } t | _ q  Wt j d | d t d t ƒ x$ | j j D] } | j	 sÜ t
 ‚ qÜ Wt  j | ƒ t  j ƒ  \ } } x | j j D] } t | _ q"Wt j d | d t d t ƒ x# | j j D] } | j	 s^t
 ‚ q^Wt  j | ƒ t  j ƒ  \ } } x | j j D] } t | _ q£Wt j d | d t d t ƒ x$ | j j D] } | j	 sßt
 ‚ qßWt  j | ƒ d  S(   NRO   R<   R=   R>   R?   (   RA   RB   t   yaxist
   majorTicksRL   t   tick1OnR   RG   t   Falset   tick2Ont   AssertionErrort   closet   xaxis(   RM   RN   RO   t   tt   y(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_despine_moved_tickesë   s8    (   R@   i    (   t   __name__t
   __module__RC   RH   RI   RU   RW   RX   RQ   RT   R[   R\   R]   Rc   Rf   Rj   Ru   (    (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyR;   z   s   						
		c          C   sË   t  j ƒ  t j d d	 ƒ \ }  } |  j ƒ  t j | j ƒ  ƒ sH t ‚ d
 } | j	 d d ƒ | j
 d d g ƒ | j | ƒ t j | j ƒ  ƒ s™ t ‚ t j | ƒ \ } } | sº t ‚ | sÇ t ‚ d  S(   Nt   figsizei   t   abcdefght   ijklmnopg      à¿g      ø?i    i   (   i   i   (   Ry   Rz   (   R   t   setRA   RB   t   tight_layoutR   t   axis_ticklabels_overlapt   get_xticklabelsRp   R`   t
   set_xtickst   set_xticklabelst   axes_ticklabels_overlap(   RN   RO   t   big_stringsR   Rt   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_ticklabels_overlap  s    

c          C   s¶  d d d d d d g }  d d d d d	 g } d d d d g } t  j |  ƒ } t j | d d d d g ƒ t  j |  | ƒ } t j | | ƒ t  j |  d d g ƒ } t j | d d g ƒ t  j t j |  ƒ ƒ } t j | d d d d g ƒ t  j t j |  ƒ ƒ } t j | d d d d g ƒ t  j | ƒ } t j | d d d d	 d g ƒ t  j t j | ƒ ƒ } t j | d d d d	 d g ƒ t  j t j | ƒ ƒ } t j | d d d d	 d g ƒ t rit j	 |  | ƒ }  t  j |  ƒ } t j | t
 |  j ƒ ƒ t j |  ƒ }  t  j |  ƒ } t j | t
 |  j j ƒ ƒ t  j |  d d g ƒ } t j | d d g ƒ n  d t j d d d d d g }  t  j |  ƒ } t j | d d d d g ƒ d  S(
   NR   t   ct   bt   di   i   i   i   i   (   R   t   categorical_orderRD   R    R   R   t   pdt   Seriest   pandas_has_categoricalst   Categoricalt   listt
   categoriest   catt   nan(   R   Rt   t   orderR   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_categorical_order"  s>    c         C   s.   t  |  d t ƒ} t | t j ƒ s* t ‚ d  S(   Nt   cache(   R   Rn   t
   isinstanceRˆ   t	   DataFrameRp   (   t   namet   ds(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   check_load_datasetS  s    c         C   se   t  j ƒ  } zD t |  d t d | ƒ} t |  d t d | ƒ} t j | | ƒ Wd  t j | ƒ Xd  S(   NR’   t	   data_home(   t   tempfilet   mkdtempR   RL   t   pdtt   assert_frame_equalt   shutilt   rmtree(   R•   t   tmpdirR–   t   ds2(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   check_load_cached_datasetW  s    t   urls'   https://github.com/mwaskom/seaborn-datac          C   sO   t  s t j d ƒ ‚ n  t ƒ  }  t |  ƒ d k s9 t ‚ d |  k sK t ‚ d  S(   Ns+   No BeautifulSoup available for parsing htmli    u   titanic(   R   R   t   SkipTestR   R   Rp   (   t   names(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_get_dataset_namesg  s
    	c          C   s:   t  s t j d ƒ ‚ n  x t ƒ  D] }  t |  ƒ q" Wd  S(   Ns+   No BeautifulSoup available for parsing html(   R   R   R£   R   R—   (   R•   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_load_datasetso  s    c          C   s:   t  s t j d ƒ ‚ n  x t ƒ  D] }  t |  ƒ q" Wd  S(   Ns+   No BeautifulSoup available for parsing html(   R   R   R£   R   R¡   (   R•   (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_load_cached_datasets{  s    c    	      C   sã   t  j d ƒ }  t |  d ƒ t  j d ƒ } t | d ƒ t  j d ƒ } t j j | d ƒ t j j t	 j
 d d d	 ƒ ƒ } g  | D] } t  j | ƒ ^ q‚ } t  j | ƒ } x0 t | | ƒ D] \ } } t j j | | ƒ q¼ Wd
 S(   s   Test relative luminance.t   whitei   s   #000000i    g      Ð?g      à?g      è?gix2ÕÎÉ?i
   N(   g      Ð?g      à?g      è?(   R   t   relative_luminanceR    R   R   R   t   mplt   cmt   RdBuR   t   linspaceRK   (	   R*   R+   R,   t   rgbst   rgbt   lums1t   lums2t   lum1t   lum2(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_relative_luminanceˆ  s    !"c          C   s®   t  j d d t  j d g ƒ }  t j |  ƒ } t j | t  j d d d g ƒ ƒ t j d d t  j d g ƒ } t j | ƒ } t	 j
 | t j d d d g d d d g ƒ ƒ d  S(   Ni   i   i   g      ð?i    (   R   R   R   R   t	   remove_naR!   R"   Rˆ   R‰   R›   t   assert_series_equal(   t   a_arrayt
   a_array_rmt   a_seriest   a_series_rm(    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   test_remove_na›  s    "(@   t   __doc__R™   R   t   numpyR   t   pandasRˆ   t
   matplotlibRª   t   matplotlib.pyplott   pyplotRA   R   t
   nose.toolsR   RD   R    R   t   numpy.testingt   testingR!   t   pandas.testingR›   t   ImportErrort   pandas.util.testingt   utilt   distutils.versionR   t   __version__RŠ   t   bs4R   t   Nonet    R   R   R   R   R   t   randomt   randnR
   R   R   R   R   R'   R.   t
   ValueErrorR0   R2   R4   R:   t   objectR;   Rƒ   R‘   R—   R¡   R¥   R¦   R§   R´   R»   (    (    (    s7   lib/python2.7/site-packages/seaborn/tests/test_utils.pyt   <module>   sX   
									”		/			