ó
yJ[c           @   s&  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 m Z d  d l m Z d  d l m Z m Z m Z d  d l m Z d  d l m Z d  d	 l m Z m Z d  d
 l m Z m Z d  d l Td  d l m Z m Z m  Z  m! Z! d  d l" m# Z# e r/d  d l$ Z$ n  d „  Z% i  d d d „ Z& i  d d d „ Z' d d d „ Z) e d „ Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 d „  Z1 d „  Z2 d „  Z3 d „  Z4 d „  Z5 d  „  Z6 d! „  Z7 d" „  Z8 d# „  Z9 d$ „  Z: d% „  Z; d& „  Z< d' „  Z= d S((   iÿÿÿÿN(   t   assert_raises(   t
   PatsyError(   t   DesignMatrixt
   DesignInfo(   t   EvalEnvironment(   t	   ModelDesct   Termt	   INTERCEPT(   t   C(   t   Helmert(   t   balancedt   LookupFactor(   t   design_matrix_builderst   build_design_matrices(   t   *(   t   have_pandast   have_pandas_categoricalt   have_pandas_categorical_dtypet   pandas_Categorical_from_codes(   t   Originc   
      C   s„  t  j | | ƒ s t ‚ | j j | k s0 t ‚ | d  k	 ro t  j | | ƒ sT t ‚ | j j | k s“ t ‚ n$ | d  k s t ‚ | d  k s“ t ‚ |  rD| d  k rÀ t | j g | ƒ \ } nQ t | j | j g | ƒ \ }	 } t  j |	 | ƒ sù t ‚ |	 j j | k st ‚ t  j | | ƒ s)t ‚ | j j | k s€t ‚ n< | j j d  k s\t ‚ | d  k s€| j j d  k s€t ‚ d  S(   N(   t   npt   allcloset   AssertionErrort   design_infot   column_namest   NoneR   t   terms(
   t   expect_full_designst   lhst   rhst   datat   expected_rhs_valuest   expected_rhs_namest   expected_lhs_valuest   expected_lhs_namest   new_rhst   new_lhs(    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   check_result   s&    		i    t   matrixc         C   s8   d } t  | t ƒ r" | d 7} n  t |  | | d | ƒS(   Nt	   dataframei   t   return_type(   t
   isinstancet   intt   dmatrix(   t   formula_likeR   t   depthR(   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   dmatrix_pandas:   s    c         C   s8   d } t  | t ƒ r" | d 7} n  t |  | | d | ƒS(   NR'   i   R(   (   R)   R*   t	   dmatrices(   R,   R   R-   R(   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   dmatrices_pandas@   s    c      
      ss  t  | t ƒ r | d 7} n  ‡  f d †  } t  |  t j t t f ƒ sx t  |  t ƒ ri t  |  d t ƒ sx t |  d ƒ rý | d  k r´ t	 |  | | ƒ }	 d  }
 t
 |	 g ˆ  ƒ \ } n' t |  | | ƒ } t
 | ˆ  ƒ \ }
 } t | |
 | ˆ  | | | | ƒ n& t t t |  | ƒ t t t	 |  | ƒ t g } t g } t rX| j t ƒ | j t ƒ n  | d  k rèx? | D]7 } | |  ˆ  | ƒ } t | d  | ˆ  | | | | ƒ qkWxÆ | D]4 } y | |  ˆ  | ƒ Wn t k
 rÚq­Xt ‚ q­Wn‡ x< | D]4 } y | |  ˆ  | ƒ Wn t k
 rqïXt ‚ qïWxE | D]= } | |  ˆ  | ƒ \ }
 } t | |
 | ˆ  | | | | ƒ q.Wd  S(   Ni   c              s   t  ˆ  g ƒ S(   N(   t   iter(    (   R   (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   data_iter_makerL   s    i    t   __patsy_get_model_desc__(   R)   R*   t   sixt   string_typesR   R   t   tuplet   hasattrR   t   incr_dbuilderR   t   incr_dbuildersR%   R    R   R+   R/   R   t   appendR.   R0   R   (   R,   R   R-   R   R   R    R!   R"   R2   t   builderR   R   t   builderst
   one_mat_fst
   two_mat_fst   f(    (   R   s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   tF   s`    	
	
		
c         C   s„   t  | t ƒ r | d 7} n  t t g } t rA | t t g 7} n  x< | D]4 } y | |  | | ƒ Wn | k
 ru qH Xt ‚ qH Wd  S(   Ni   (   R)   R*   R+   R/   R   R.   R0   R   (   R,   R   R-   t   exct   fsR?   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt	   t_invalid…   s    c             sD  t  d d d g d d d g g i  d t d d d g d d d g g d d	 d
 g ƒ t  d  d d d g d d d g g f i  d t d d d g d d d g g d d	 d
 g ƒ t  t j d d d g d d d g g ƒ i  d t d d d g d d d g g d d	 d
 g ƒ t  d  t j d d d g d d d g g ƒ f i  d t d d d g d d d g g d d	 d
 g ƒ t d d d g d d d g g d d ƒ}  t  |  i  d t d d d g d d d g g d d d g ƒ t  d  |  f i  d t d d d g d d d g g d d d g ƒ t  d d g d d d g d d d g g f i  d t d d d g d d d g g d d	 d
 g d g d g g d g ƒ t  d g d g g d d d g d d d g g f i  d t d d d g d d d g g d d	 d
 g d g d g g d g ƒ t  t j d d g ƒ t j d d d g d d d g g ƒ f i  d t d d d g d d d g g d d	 d
 g d g d g g d g ƒ t  t j d g d g g ƒ t j d d d g d d d g g ƒ f i  d t d d d g d d d g g d d	 d
 g d g d g g d g ƒ t d d d g d d d g g d d ƒ} t d d g d d ƒ} t  | | f i  d t d d d g d d d g g d d d g d g d g g d g ƒ t d d d g d d d g d d d g g f i  d ƒ t d d d g g f i  d ƒ t d d d g g d d d g g d d d g g f i  d ƒ t rÔt  t j	 i d d d g d 6ƒ i  d t d g d g d g g d g ƒ t  t j
 d d d g d d ƒi  d t d g d g d g g d g ƒ t  t j	 i d d d g d 6ƒ t j	 i d d d g d 6ƒ f i  d t d g d g d g g d g d g d g d g g d g ƒ t  t j
 d d d g d d ƒt j
 d d d g d d ƒf i  d t d g d g d g g d g d g d g d g g d g ƒ t  t j	 d d d g g ƒ t j	 d d d g g d d d d g ƒf i  d t d d d g g d d d g d d d g g d d d g ƒ t  t j
 d d d g ƒ i  d t d g d g d g g d g ƒ t t j	 d g g d  d g ƒt j	 d g g d  d g ƒf i  d ƒ n  d! t f d" „  ƒ  Y} | ƒ  } t  | i d d g d# 6d d g d d g g d$ 6d t d d g d d g g d% d& g d g d g g d# g ƒ d' t f d( „  ƒ  Y} t | ƒ  i  d ƒ t  d) i d d g d 6d d g d 6d t d d g d d g g d* d g d g d g g d g ƒ t  d+ i d d g d 6d d g d 6d t d d g d d g g d* d g ƒ t  d, i d d g d 6d d g d 6d t d d d g d d d g g d* d d g ƒ t j s@
t  t d) ƒ i d d g d 6d d g d 6d t d d g d d g g d* d g d g d g g d g ƒ d- j d. ƒ } t | t ƒ s
t ‚ t t t | d/ i d d g | 6ƒn  t g  t t d ƒ g ƒ g ƒ } t  | i d0 d1 d2 g d 6d t d0 g d1 g d2 g g d g ƒ t g  t g  ƒ t t d ƒ g ƒ g ƒ } t  | i d0 d1 d2 g d 6d t d d0 g d d1 g d d2 g g d* d g ƒ t t t d ƒ g ƒ g t g  ƒ t t d ƒ g ƒ g ƒ } t  | i d0 d1 d2 g d 6d3 d4 d5 g d 6d t d d0 g d d1 g d d2 g g d* d g d3 g d4 g d5 g g d g ƒ g  t t d ƒ g ƒ g t g  ƒ t t d ƒ g ƒ g f } t | d6 „  d7 d ƒ}	 t  |	 d |	 d f i d3 d4 d5 g d 6d t d d3 g d d4 g d d5 g g d* d g ƒ t  |	 d i d3 d4 d5 g d 6d t d d3 g d d4 g d d5 g g d* d g ƒ t  |	 d |	 d f i d3 d4 d5 g d 6d t d d3 g d d4 g d d5 g g d* d g d3 g d4 g d5 g g d g ƒ d d d g }
 t  d8 i  d t d d g d d g d d g g d* d9 g ƒ t  d8 i d3 d4 d5 g d9 6d t d d3 g d d4 g d d5 g g d* d9 g ƒ t d8 i  d d: t t f ƒd; „  } | ƒ  t j d ƒ ‰  t d8 i  ˆ  d: t t f ƒt j d ƒ ‰  ‡  f d< †  } | ƒ  d  S(=   Ni   i   i   i   i   i   i    t   x0t   x1t   x2t   default_column_prefixt   foot   foo0t   foo1t   foo2t   y0t   bart   bar0t   xt   namet   asdft   yt   columnsi   i   i	   t   x7t   x8t   x9t   y1t   y2t   indext   ForeignModelSourcec           B   s   e  Z d  „  Z RS(   c         S   s1   t  t t d ƒ g ƒ g t t d ƒ g ƒ g ƒ S(   Nt   Yt   X(   R   R   R   (   t   selfR   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyR3   ë   s    (   t   __name__t
   __module__R3   (    (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyRZ   ê   s   R[   R\   s   X[0]s   X[1]t   BadForeignModelSourcec           B   s   e  Z d  „  Z RS(   c         S   s   | S(   N(    (   R]   R   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyR3   ÷   s    (   R^   R_   R3   (    (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyR`   ö   s   s   y ~ xt	   Intercepts   ~ xs   x + ys   Ã©s   utf-8R   g      ø?g      @g      @i
   i   i   c           S   s   t  i d d d g d 6g ƒ S(   Ni   i   i   RO   (   R1   (    (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   <lambda>+  s    t   eval_envs
   ~ x_in_envt   x_in_envRA   c       	   S   sD   d }  t  d i  d t d d g d d g d d g g d d g ƒ d  S(   NRQ   s
   ~ x_in_envi   i   i   Ra   Rd   (   R@   t   True(   Rd   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   check_nested_callF  s    c       	      sD   d }  t  d i  ˆ  t d d g d d g d d g g d d g ƒ d  S(   NRQ   s
   ~ x_in_envi   i   i   Ra   Rd   (   R@   Re   (   Rd   (   t   e(    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   check_nested_call_2P  s    (   R@   t   FalseR   R   t   asarrayR   RC   R   t   pandast	   DataFramet   Seriest   objectRe   R4   t   PY3t   unicodet   decodeR)   R   R    R   R+   R   R   R   R   t	   NameErrorR   t   capture(   t   dmt   x_dmt   y_dmRZ   t   foreign_modelR`   t   eacutet   desct	   termlistsR<   Rd   Rf   Rh   (    (   Rg   s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_formula_likes”   s&   $+*+-+3+*++0'6'B'H'*'7=%$%$0	&&"&+	 &!*+$,'$		*+ +*'++	c          C   s^  t  s
 d  St j d d d g d d d d d d	 g ƒ}  t j d
 d d g d d d d d d	 g ƒ} t d d d ƒ} t j | d d g d d g d d g g ƒ s© t ‚ t j | j d d g ƒ sÊ t ‚ | j	 j
 d d g k sè t ‚ t j | j d d d	 g ƒ st ‚ t d d d ƒ\ } } t j | d
 g d g d g g ƒ sNt ‚ t j | j d g ƒ slt ‚ | j	 j
 d g k s‡t ‚ t j | j d d d	 g ƒ s«t ‚ t j | d d g d d g d d g g ƒ sÞt ‚ t j | j d d g ƒ sÿt ‚ | j	 j
 d d g k st ‚ t j | j d d d	 g ƒ sAt ‚ t |  d d ƒ} t j | d g d g d g g ƒ s}t ‚ t j | j d g ƒ s›t ‚ | j	 j
 d g k s¶t ‚ t j | j d d d	 g ƒ sÚt ‚ t | |  f d d ƒ\ } } t j | d
 g d g d g g ƒ s"t ‚ t j | j d g ƒ s@t ‚ | j	 j
 d g k s[t ‚ t j | j d d d	 g ƒ st ‚ t j | d g d g d g g ƒ s©t ‚ t j | j d g ƒ sÇt ‚ | j	 j
 d g k sât ‚ t j | j d d d	 g ƒ st ‚ t |  d d d g f d d ƒ\ } }	 t j | j |  j ƒ sKt ‚ t j |	 j |  j ƒ sit ‚ t d d d g |  f d d ƒ\ }
 } t j |
 j |  j ƒ s®t ‚ t j | j |  j ƒ sÌt ‚ d d  l } | j j  } zf t | j _  t t t d i d g d 6d d d ƒt t t d i d g d 6d g d 6d d d ƒWd  | | j _  Xd  S(   Ni   i   i   RP   t   AARY   i
   i   i   i   i   i   t   BBt   s1R(   R'   Ra   s   s2 ~ s1t   s2i   i   iÿÿÿÿRO   i    s   y ~ xRR   (   R   Rk   Rm   R+   R   R   R   t   array_equalRS   R   R   RY   R/   t   patsy.highlevelt	   highlevelRi   R    R   (   R~   R   t   df1t   df2t   df3t   df4t   df5t   df6t   df7t   df8t   df9t   df10t   patsyt
   had_pandas(    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_return_pandasW  s`    --3!$*$3!$*$*$*$'' #c          C   s¤   t  d d d d ƒ }  t d |  ƒ } | j j d d d d g k sH t ‚ | j j d d g k sf t ‚ t | j j ƒ d k s„ t ‚ | j j d	 t k s  t ‚ d  S(
   Nt   ai   t   bs   a:bRa   s   b[T.b2]s   a[T.a2]:b[b1]s   a[T.a2]:b[b2]i    (	   R
   R+   R   R   R   t
   term_namest   lenR   R   (   R   R   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_term_infoŽ  s    c       
   C   s“  i d d d g d 6d d d g d 6t  j d d d g d	 t  j ƒd
 6t t t g d 6d d d g d 6t d d d g ƒ d 6t d d d g ƒ d 6t  j d d d+ g d	 t ƒd 6}  t d |  d t d g d g d g g d g ƒ t d |  d t d g d g d g g d g ƒ t d |  d t d g d g d g g d
 g ƒ t d |  d t d d g d d g d d g g d d g ƒ t d |  d t d d d g d d d g d d d g g d d d g ƒ t d |  d t d d d g d d d g d d d g g d  d! d" g ƒ t d# |  d t d d d g d d d g d d d g g d$ d% d& g ƒ t d' |  d t d d d g d d d g d d d g g d( d) d* g ƒ d  S(,   Ni   i   i   R   g      ð?g       @g      @R‘   t   dtypet   ct   dRH   RM   t   bazRg   R?   t   gt   hit   hs   ~ 0 + ai    s   ~ 0 + bs   ~ 0 + cs   ~ 0 + ds   d[False]s   d[True]s   ~ 0 + es   e[bar]s   e[baz]s   e[foo]s   ~ 0 + fs   f[1]s   f[2]s   f[3]s   ~ 0 + gs   g[bar]s   g[baz]s   g[foo]s   ~ 0 + hs   h[1]s   h[foo]s   h[(1, 'hi')](   i   Rš   (	   R   Rj   t   float32Re   Ri   R   t   arrayRn   R@   (   R   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_data_types—  s2    ""+777'c          C   så  t  d d d d ƒ }  t d |  d t d d g d d g d d g d d g g d d g ƒ t d	 |  d t d d g d d g d d g d d g g d d
 g ƒ t d |  d t d d g d d g d d g d d g g d d g ƒ t d |  d t d d d d g d d d d g d d d d g d d d d g g d d d d g ƒ t d |  d t d d d d g d d d d g d d d d g d d d d g g d d d d g ƒ t d |  d t d d d d g d d d d g d d d d g d d d d g g d d d d g ƒ t |  d t ƒ |  d <t d |  d t d d g d d g d d g d d g g d d g ƒ t d |  d t d d g d d g d d g d d g g d d g ƒ t d |  d t d d g d d g d d g d d g g d d g ƒ d  S(   NR   i   R‘   s   ~ C(a)i    i   Ra   s
   C(a)[T.a2]s   ~ C(a, levels=['a2', 'a1'])s   C(a, levels=['a2', 'a1'])[T.a1]s   ~ C(a, Treatment(reference=-1))s#   C(a, Treatment(reference=-1))[T.a1]s   a*bs   a[T.a2]s   b[T.b2]s   a[T.a2]:b[T.b2]s   0 + a:bs   a[a1]:b[b1]s   a[a2]:b[b1]s   a[a1]:b[b2]s   a[a2]:b[b2]s   1 + a + a:bs   a[a1]:b[T.b2]s   a[a2]:b[T.b2]iÿÿÿÿs   a[H.a2]s   C(a, Treatment)s   C(a, Treatment)[T.a2](   R
   R@   Re   R   R	   (   R   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_categorical´  sV    4''44c          C   sî   i d d d g d 6d d d g d 6d	 d
 d g d 6}  t  d |  d t d g d g d g d g d g d g g d g ƒ t  d |  d t d d	 g d d
 g d d g g d d g ƒ t  d |  d t d d g d d g d d g g d d g ƒ d  S(   Ni   i   i   RO   i   i   i   RR   i
   i   i   s   a b cs   0 + I(x + y)i    s   I(x + y)s
   Q('a b c')Ra   s	   center(x)iÿÿÿÿ(   R@   Re   (   R   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_builtinsè  s    1+c             sV  i d d d g d 6d d d g d 6i d d d g d 6d d	 d
 g d 6g ‰  t  j d d d d d	 d
 g ƒ }  t  j |  t  j |  ƒ ƒ } | t  j | ƒ } ‡  f d †  } t d | ƒ } t | ˆ  d ƒ \ } } | j j d g k sî t ‚ | j j d d d g k st ‚ t  j	 | d g d g d g g ƒ s9t ‚ t  j	 | t  j
 d d d g d d d g | d f ƒ ƒ syt ‚ t d | ƒ } t | g ˆ  d ƒ \ } | j j d d d g k sÂt ‚ t  j	 | d g d g d g g ƒ sìt ‚ t  j	 | t  j
 d d d g d d d g | d f ƒ ƒ s,t ‚ t t t d | ƒ t t t d | ƒ d  S(   Nt   a2R   i   i   i   RO   t   a1i   i   i   c              s
   t  ˆ  ƒ S(   N(   R1   (    (   t   datas(    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyR2     s    s!   1 ~ a + center(np.sin(center(x)))Ra   s   a[T.a2]s   center(np.sin(center(x)))i    s   ~ a + center(np.sin(center(x)))s   x ~ x(   R   Rj   t   sint   meanR9   R   R   R   R   R   t   column_stackR8   R    R   (   RO   t   sin_center_xt   x_colR2   R<   R   R   R;   (    (   R£   s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_incrementalö  s>    !	*	*c        
   C   si   t  d i d d d g d 6d t d t j d ƒ g d t j d ƒ g d t j d ƒ g g d d g ƒ d  S(	   Ns   ~ np.sin(x)i   i   i   RO   i    Ra   s	   np.sin(x)(   R@   Re   R   R¤   (    (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_env_transform  s    9c       
      s  t  d d d d ƒ ‰  t j d d d ƒ ˆ  d <ˆ  d d ˆ  d <‡  f d	 †  }  |  d
 d d d d d g ƒ |  d d d d d d g ƒ |  d d d d d d g ƒ |  d d d d d g ƒ |  d d d d d d d g ƒ |  d d d d d d d d d g ƒ d  S(   NR   i   R‘   i    i   i   RE   RF   c            s+   t  |  ˆ  ƒ } | j j | k s' t ‚ d  S(   N(   R+   R   R’   R   (   t   formulat   ordert   m(   R   (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   t_terms3  s    s   a + b + x1 + x2Ra   s   b + a + x2 + x1s   0 + x1 + a + x2 + b + 1s   0 + a:b + a + b + 1s   a:bs   a + a:x1 + x2 + x1 + bs   a:x1s@   0 + a:x1:x2 + a + x2:x1:b + x2 + x1 + a:x1 + x1:x2 + x1:a:x2:a:bs   x1:x2s   a:x1:x2s   x2:x1:bs	   x1:a:x2:b(   R
   R   t   linspace(   R®   (    (   R   s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_term_order.  s     c         C   so   i d d 6d d 6} t  d | d ƒ } |  rM t j | d g g ƒ sk t ‚ n t j | d g g ƒ sk t ‚ d  S(   Ni   RO   i   RR   s   0 + I(x / y)i   g      @(   R+   R   R   R   (   t   expect_true_divisionR   R­   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   _check_divisionD  s
    !c           B   s2   e  j j ƒ  e j k  r d  Se e ƒ d d  Ud  S(   Ns6   from __future__ import division
_check_division(True)
(   t
   __future__t   divisiont   getMandatoryReleaset   syst   version_infoR²   Ri   (    (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_futureO  s    
c          C   s  i d d g d 6d d g d d g g d 6d d g d d g g d	 6}  t  d
 |  d t d d d d d d d d d g	 d d d d d d d d  d! g	 g d d d d d d d d d g	 ƒ t  d |  d t d d d d d d d g d d d d d d d g g d d d d d d d g ƒ d  S("   NR¢   R¡   R   i   i   i   i   R\   R[   s   X*Yi    Ra   s   X[0]s   X[1]s   Y[0]s   Y[1]s	   X[0]:Y[0]s	   X[1]:Y[0]s	   X[0]:Y[1]s	   X[1]:Y[1]s   a:X + Ys
   a[a1]:X[0]s
   a[a2]:X[0]s
   a[a1]:X[1]s
   a[a2]:X[1]i   i   i   i   i   i   i   i   (   R@   Re   (   R   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_multicolumnY  s"    !c          C   sÊ   d d d g }  d d d g } t  j t d ƒ d d g d d g d d g g ƒ sW t ‚ t d ƒ \ } } t  j | d g d g d g g ƒ s“ t ‚ t  j | d d g d d g d d g g ƒ sÆ t ‚ d  S(	   Ni   i   i   i   i   i   RO   s   y ~ x(   R   R   R+   R   R/   (   RO   RR   R   R   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_dmatrix_dmatrices_no_datam  s    9*c          C   s   t  d i d d d g d 6d d d g d	 6d
 d d g d 6ƒ \ }  } |  j j ƒ  d k s` t ‚ | j j ƒ  d k s{ t ‚ d  S(   Ns	   y ~ x + ai   i   i   RR   i   i   i   RO   R¢   R¡   t   a3R   s	   1 + a + x(   R/   R   t   describeR   (   R   R   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_designinfo_describeu  s
    c          C   s+  d „  }  d } y1 t  | i d d d g d 6d d d	 g d
 6ƒ Wn= t k
 r } | j t | d | j d ƒ ƒ k sŒ t ‚ n Xt sŒ t ‚ y t  d i i  d 6ƒ Wnt t k
 r} t j	 d d k rt
 | t ƒ sÞ t ‚ | j t d d d ƒ k st ‚ q't
 | t ƒ s't ‚ n Xt s't ‚ d  S(   Nc         S   s   t  d ƒ ‚ d  S(   Nt   WHEEEEEE(   R   (   RO   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   raise_patsy_error€  s    s   raise_patsy_error(X) + Yi   i   i   R\   i   i   i   R[   i    t    s   1 + x[1]RO   i   (   R+   R   t   originR   RY   R   Ri   t	   ExceptionR¶   R·   R)   t   KeyError(   R¿   R«   Rg   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_evalfactor_reraise|  s    	1.$c          C   sè  i d d d t  j g d 6t  j d d d g d 6}  d	 g } t rQ | j d
 ƒ n  x| D]ˆ} t d d |  d | ƒ} t  j | d d d g d d d g g ƒ s¦ t ‚ | d
 k rÜ | j j t	 j
 d d g ƒ ƒ sÜ t ‚ n  t t t d d |  d | d d ƒt d d |  d | ƒ\ } } t  j | d g d g g ƒ s@t ‚ t  j | d d g d d g g ƒ sjt ‚ | d
 k rÇ| j j t	 j
 d d g ƒ ƒ st ‚ | j j t	 j
 d d g ƒ ƒ sÇt ‚ n  t t t d d |  d | d d ƒt d d |  d | ƒ\ } } t  j | d g d g d g g ƒ s1t ‚ t  j | d g d g d g g ƒ s[t ‚ | d
 k r¾| j j t	 j
 d d d g ƒ ƒ s‘t ‚ | j j t	 j
 d d d g ƒ ƒ s¾t ‚ n  t t t d d |  d | d d ƒqX Wd  S(   Ni   i   i   RO   i   i   i(   RR   R&   R'   s   x + yR   R(   t	   NA_actiont   raises   y ~ xs   y ~ 1(   R   t   nanR   R:   R+   R€   R   RY   t   equalsRk   t   IndexR    R   R/   (   R   t   return_typesR(   t   matt   lmatt   rmat(    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_dmatrix_NA_action—  s>    2	*$*'****-c          C   s  i d d 6d d 6d d 6}  xô d d d d g g f d	 d d
 d g g f g D]Â \ } } t  | |  ƒ } t j | | ƒ s t ‚ t j t | j g |  ƒ d
 | ƒ sª t ‚ t rL t j |  ƒ } t j t  | | ƒ | ƒ sà t ‚ t j t | j g | ƒ d
 | ƒ st ‚ qL qL Wd  S(   Ngš™™™™™ñ?RE   g333333ó?RF   R¢   R   s   x1 + x2i   s   C(a, levels=('a1', 'a2')) + x1i    (	   R+   R   R   R   R   R   R   Rk   Rm   (   t   data_0dR«   t   expectedRË   t   data_series(    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_0d_data¾  s    %
!
c          C   s[   d d d g }  t  d i  ƒ } d d d g }  t  | j i  ƒ } t j | | ƒ sW t ‚ d  S(   Ni   i   i   Rd   i
   i   i   (   R+   R   R   R   R   (   Rd   t   design_matrixt   design_matrix2(    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_env_not_saved_in_builderÔ  s
    c          C   s`  t  s
 d  St d d d g d d g ƒ g }  t rN |  j t j |  d ƒ ƒ n  x|  D]} i | d 6} t j t d | ƒ d d g d d g d d g g ƒ s¤ t	 ‚ t j t d | ƒ d d g d d g d d g g ƒ sà t	 ‚ t j t d | ƒ d d g d d g d d g g ƒ st	 ‚ t j t d | ƒ d d g d d g d d g g ƒ sU t	 ‚ qU Wd  S(	   Ni   i    R‘   R   t   objs   C(obj)s   C(obj, levels=['b', 'a'])s   C(obj, levels=['a', 'b'])(
   R   R   R   R:   Rk   Rm   R   R   R+   R   (   t   objsRÖ   R—   (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   test_C_and_pandas_categoricalÝ  s.    !								(>   R¶   R³   R4   t   numpyR   t
   nose.toolsR    R   R   t   patsy.design_infoR   R   t
   patsy.evalR   t
   patsy.descR   R   R   t   patsy.categoricalR   t   patsy.contrastsR	   t   patsy.user_utilR
   R   t   patsy.buildR   R   R   t
   patsy.utilR   R   R   R   t   patsy.originR   Rk   R%   R.   R0   R   R@   RC   R{   R   R”   Rž   RŸ   R    R©   Rª   R°   R²   R¸   R¹   Rº   R½   RÄ   RÎ   RÒ   RÕ   RØ   (    (    (    s3   lib/python2.7/site-packages/patsy/test_highlevel.pyt   <module>   sR   
"		<	Ã	7				4		(				
					'			