
    go                     t   d dl Zd dl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mZmZmZmZ d dlmZmZm Z m!Z! d dl"m#Z# erd dl$Z$d Z%i d dfdZ&i d dfdZ'	 	 d%dZ(efdZ)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d  Z7d! Z8d" Z9d# Z:d$ Z;y)&    N
PatsyError)DesignMatrix
DesignInfo)EvalEnvironment)	ModelDescTerm	INTERCEPT)C)Helmert)balancedLookupFactor)design_matrix_buildersbuild_design_matrices)dmatrix	dmatricesincr_dbuilderincr_dbuilders)have_pandashave_pandas_categoricalhave_pandas_categorical_dtypepandas_Categorical_from_codes)Originc                    t        j                  ||      sJ |j                  j                  |k(  sJ |3t        j                  ||      sJ |j                  j                  |k(  s
J |J |J | r|t	        |j                  g|      \  }nXt	        |j                  |j                  g|      \  }	}t        j                  |	|      sJ |	j                  j                  |k(  sJ t        j                  ||      sJ |j                  j                  |k(  sJ y |j                  j
                  J ||j                  j
                  J y y N)npallclosedesign_infocolumn_namesr   terms)
expect_full_designslhsrhsdataexpected_rhs_valuesexpected_rhs_namesexpected_lhs_valuesexpected_lhs_namesnew_rhsnew_lhss
             Q/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/patsy/test_highlevel.pycheck_resultr,      sP    ;;s/000??''+====
{{3 3444++/AAAA"***!)));./@$GJW4#//2D GW ;;w,,,&&337IIII{{7C(((""//3EEEE$$,,,{coo33;;;;{    matrixc                 N    d}t        |t              r|dz  }t        | |||      S N	dataframe   return_type)
isinstanceintr   formula_liker$   depthr4   s       r+   dmatrix_pandasr:   B   s+    K%
<u+FFr-   c                 N    d}t        |t              r|dz  }t        | |||      S r0   )r5   r6   r   r7   s       r+   dmatrices_pandasr<   I   s+    K%
\4KHHr-   c                    t        |t              r|dz  }fd}t        | t        t        t        f      s/t        | t
              rt        | d   t              st        | d      rP|t        | ||      }	d }
t        |	g      \  }nt        | ||      }t        |      \  }
}t        ||
|||||       n@t        j                  t        t        | |       t        j                  t        t        | |       t        g}t        g}t         r*|j#                  t$               |j#                  t&               |;|D ]  } || |      }t        |d |||||         |D ]  }	  || |       t(         y |D ]  }	  || |       t(         |D ]!  } || |      \  }
}t        ||
|||||       # y # t        $ r Y _w xY w# t        $ r Y Vw xY w)Nr2   c                      t         g      S r   iterr$   s   r+   data_iter_makerzt.<locals>.data_iter_maker]   s    TF|r-   r   __patsy_get_model_desc__)r5   r6   strr   r   tuplehasattrr   r   r   r,   pytestraisesr   r   r   r   appendr:   r<   AssertionError)r8   r$   r9   r!   r%   r&   r'   r(   rB   builderr"   r#   builders
one_mat_fs
two_mat_fsfs    `              r+   trP   P   s    %
 	<#y*!=>|U+
<?J0W<!;<&#L/5IGC*G9d;FS%lOUKH,Xt<HC		
 	j.,Pj-OJJ.)*+" 	AL$.C##"#"		  	%A%,e, %$	%  	%A%,e, %$	%  	A<u5JS###"#"		    s$   
F/7
F>/	F;:F;>	G
	G
c                     t        |t              r|dz  }t        t        g}t        r|t
        t        gz  }|D ]  }	  || ||       t         y # |$ r Y w xY w)Nr2   )r5   r6   r   r   r   r:   r<   rJ   )r8   r$   r9   excfsrO   s         r+   	t_invalidrT      sn    %

9	B
~/00 !	!lD%( ! !  		s   
AAAc                  ~   t        g dg dgi ddg dg dgg d       t        d g dg dgfi ddg dg dgg d       t        t        j                  g dg dg      i ddg dg dgg d       t        d t        j                  g dg dg      fi ddg dg dgg d       t        g dg dgd      } t        | i ddg dg dgg d       t        d | fi ddg dg dgg d       t        d	d
gg dg dgfi ddg dg dgg dd	gd
ggdg       t        d	gd
ggg dg dgfi ddg dg dgg dd	gd
ggdg       t        t        j                  d	d
g      t        j                  g dg dg      fi ddg dg dgg dd	gd
ggdg       t        t        j                  d	gd
gg      t        j                  g dg dg      fi ddg dg dgg dd	gd
ggdg       t        g dg dgd      }t        d	d
gd      }t        ||fi ddg dg dgg dd	gd
ggdg       t	        g dg dg dgfi d       t	        g dgfi d       t	        g dgg dgg dgfi d       t
        rt        t        j                  dg di      i ddd	gd
gdggdg       t        t        j                  g dd      i ddd	gd
gdggdg       t        t        j                  dg di      t        j                  dg di      fi ddd	gd
gdggdgdgdgdggdg       t        t        j                  g dd      t        j                  g dd      fi ddd	gd
gdggdgdgdgdggdg       t        t        j                  g dg      t        j                  g dgg d      fi ddg dgg dg dgg d       t        t        j                  g d      i ddd	gd
gdggdg       t	        t        j                  d	ggd	g      t        j                  d	ggd
g      fi d        G d dt              } |       }t        |d	d
gd	d
gddggdddd	d
gddggd d!gd	gd
ggd"g        G d# d$t              }t	         |       i d       t        d%d	d
gddgd&ddd	dgd	dggd'dgd	gd
ggdg       t        d(d	d
gddgd&ddd	dgd	dggd'dg       t        d)d	d
gddgd&ddg d*g d+gg d,       t        g t        t        d      g      g      }t        |dg d-iddd.gd/gd0ggdg       t        g t        g       t        t        d      g      g      }t        |dg d-iddd	d.gd	d/gd	d0ggd'dg       t        t        t        d      g      gt        g       t        t        d      g      g      }t        |g d-g d1d2ddd	d.gd	d/gd	d0ggd'dgd3gd4gd5ggdg       g t        t        d      g      gt        g       t        t        d      g      gf}t        |d6 d7      }t        |d   |d
   fdg d1iddd	d3gd	d4gd	d5ggd'dg       t        |d
   dg d1iddd	d3gd	d4gd	d5ggd'dg       t        |d	   |d
   fdg d1iddd	d3gd	d4gd	d5ggd'dgd3gd4gd5ggdg       g d}	t        d8i ddd	d	gd	d
gd	dggd'd9g       t        d8d9g d1iddd	d3gd	d4gd	d5ggd'd9g       t	        d8i d	t        t        f:       d; }
 |
        t!        j"                  d	      t	        d8i t        t        f:       t!        j"                  d      fd<} |        y )=Nr2                  r   F)x0x1x2foo)default_column_prefix)foo0foo1foo2r2   rW   y0barbar0xrX   asdf)nameyrZ   r[   r\   )      	   )columns)x7x8x9)re   y1y2r]   )indexc                       e Zd Zd Zy).test_formula_likes.<locals>.ForeignModelSourcec                 j    t        t        t        d      g      gt        t        d      g      g      S )NYX)r   r	   r   selfr$   s     r+   rC   zGtest_formula_likes.<locals>.ForeignModelSource.__patsy_get_model_desc__O  s/    dL$5#6784cAR@S;T:UVVr-   N__name__
__module____qualname__rC    r-   r+   ForeignModelSourcerw   N  s    	Wr-   r   )ry   rz   TX[0]X[1]ry   c                       e Zd Zd Zy)1test_formula_likes.<locals>.BadForeignModelSourcec                     |S r   r   r{   s     r+   rC   zJtest_formula_likes.<locals>.BadForeignModelSource.__patsy_get_model_desc___  s    Kr-   Nr}   r   r-   r+   BadForeignModelSourcer   ^  s    	r-   r   y ~ x)rk   rh   	Interceptz~ xx + y)r2   rX   r2   )r2   rZ   rW   )r   rh   rk   )      ?      @      @r   r   r   
         rh   rk   r   r   r   c                  "    t        dg dig      S )Nrh   rV   r?   r   r-   r+   <lambda>z$test_formula_likes.<locals>.<lambda>  s    4#y!1 23 r-   )eval_env
~ x_in_envx_in_env)rR   c            
      >    d} t        di ddddgddgddggddg       y )	Nri   r   r2   TrW   rX   r   r   rP   )r   s    r+   check_nested_callz-test_formula_likes.<locals>.check_nested_call  s9    	VaVaV$*%	
r-   c            
      @    d} t        di dddgddgddggddg       y )	Nri   r   Tr2   rW   rX   r   r   r   )r   es    r+   check_nested_call_2z/test_formula_likes.<locals>.check_nested_call_2  s:    	VaVaV$*%	
r-   )rP   r   asarrayr   rT   r   pandas	DataFrameSeriesobjectr   r	   r   r   	NameErrorr   r   capture)dmx_dmy_dmr   foreign_modelr   desc	termlistsrL   r   r   r   r   s               @r+   test_formula_likesr      s   y)b!UY	,BDVW		9%&
		I 


Iy)*
		I 	rzz9i012
		I 
y),E	JBb"aI.0HItRj"aI 68PQ 
Q)Y'(
		I
qc
		 #si+,
		I
qc
		 	QF	RZZI(>?@
		I
qc
		 	aS1#J	Y	,B!CD
		I
qc
		 I.eLDAe<D	t
		I 
qc
		 y9i012q9 	{nb!$	{YK)5r1= 	&

C+
,b!UaS1#sOcUS	MM)&1S1#sOH	
 	
sI./1A1A3	BR1STS1#sOES1#sOE		
 	
]]93/ys1STS1#sOES1#sOE		
 	
  )-  )i@ KK	
 	
&--	
"B5A3aS/D6JseA3/1A1AA3%PQs1ST	
WV W '(M!fQFQF+,	
Q!Q	
qc
		  #%r1- !fAq6"	
Q!Q	c
qc
		 eAq6A'DAq6Aq62B[RUDVW!fAq6"		I R$S 12345DdS/"AtsecUSE-BSEJR$r(D,s*;)<$=>?D	o	
SAs8aX&	c dL-./048T<PSCTBU=V2WXDL1	
SAs8aX&	c
tbT		 		|C !	"#	b4c*+,-I
 &3aH 	!hqk"	l	
R1b'Ar7#	c 	l	
R1b'Ar7#	c 	!hqk"	l	
R1b'Ar7#	c
tbT		 HlB41a&1a&1a&!9K;TU	\"	
R1b'Ar7#	j! lB	:'>?	
 "AlB	:'>?"A	
 r-   c                  
   t         sy t        j                  g ddg d      } t        j                  g ddg d      }t        dd	      }t	        j
                  |d
d
gd
dgd
dgg      sJ t	        j                  |j                  ddg      sJ |j                  j                  ddgk(  sJ t	        j                  |j                  g d      sJ t        dd	      \  }}t	        j
                  |dgdgdgg      sJ t	        j                  |j                  dg      sJ |j                  j                  dgk(  sJ t	        j                  |j                  g d      sJ t	        j
                  |d
d
gd
dgd
dgg      sJ t	        j                  |j                  ddg      sJ |j                  j                  ddgk(  sJ t	        j                  |j                  g d      sJ t        | d	      }t	        j
                  |d
gdgdgg      sJ t	        j                  |j                  dg      sJ |j                  j                  dgk(  sJ t	        j                  |j                  g d      sJ t        || fd	      \  }}t	        j
                  |dgdgdgg      sJ t	        j                  |j                  dg      sJ |j                  j                  dgk(  sJ t	        j                  |j                  g d      sJ t	        j
                  |d
gdgdgg      sJ t	        j                  |j                  dg      sJ |j                  j                  dgk(  sJ t	        j                  |j                  g d      sJ t        | g dfd	      \  }}	t	        j                  |j                  | j                        sJ t	        j                  |	j                  | j                        sJ t        g d| fd	      \  }
}t	        j                  |
j                  | j                        sJ t	        j                  |j                  | j                        sJ dd l}|j                  j                   }	 d|j                  _         t        j                  t         t        ddd
gidd	       t        j                  t         t        dd
gdgddd	       ||j                  _         y # ||j                  _         w xY w)NrV   AAr   )rj   ru   rY   BBs1r1   r3   r2   rW   rX   r   zs2 ~ s1rZ   r[   r\   s2)r         r   Frh   r   r   )r   r   r   r   r   r   array_equalro   r   r   ru   r   patsy.highlevel	highlevelrG   rH   r   )r   r   df1df2df3df4df5df6df7df8df9df10patsy
had_pandass                 r+   test_return_pandasr     s%   	yt<	@B	yt<	@B
$K
0C;;saVaVaV4555>>#++T':;;;??''K+>>>>>>#))\222<HC;;saS1#sO,,,>>#++v...??''D6111>>#))\222;;saVaVaV4555>>#++T':;;;??''K+>>>>>>#))\222
"+
.C;;saS1#sO,,,>>#++v...??''D6111>>#))\222"b{;HC;;saS1#sO,,,>>#++v...??''D6111>>#))\222;;saS1#sO,,,>>#++v...??''D6111>>#))\222"l+EHC>>#))RXX...>>#))RXX...<,+FIC>>#))RXX...>>$**bhh///,,J1&+#j'3qc
A;W#QC #	
 '1#j#s   ?AS0 0Tc                  6   t        dd      } t        d|       }|j                  j                  g dk(  sJ |j                  j                  ddgk(  sJ t        |j                  j                        dk(  sJ |j                  j                  d   t        k(  sJ y )NrW   aba:b)r   b[T.b2]za[T.a2]:b[b1]za[T.a2]:b[b2]r   r   )r   r   r   r   
term_nameslenr    r
   )r$   r#   s     r+   test_term_infor   #  s    a1D
%
C??'' ,    ??%%+u)====s$$%***??  #y000r-   c                  n   g dg dt        j                  g dt         j                        g dg dt        g d      t        g d      t        j                  g dt
              d} t        d| d	d
dgdgdggdg       t        d| d	d
dgdgdggdg       t        d| d	d
dgdgdggdg       t        d| d	d
d	dgdd	gd	dggddg       t        d| d	d
g dg dg dgg d       t        d| d	d
g dg dg dgg d       t        d| d	d
g dg dg dgg d       t        d| d	d
g dg dg dgg d        y )!NrV   )g      ?g       @g      @)dtype)TFT)r`   rf   baz)r`   r2   )r2   hi)r   r   cdr   rO   ghz~ 0 + ar   Tr2   rW   rX   r   z~ 0 + br   z~ 0 + cr   z~ 0 + dzd[False]zd[True]z~ 0 + e)r   r   r2   )r2   r   r   )r   r2   r   )ze[bar]ze[baz]ze[foo]z~ 0 + f)zf[1]zf[2]zf[3]z~ 0 + g)zg[bar]zg[baz]zg[foo]z~ 0 + h)zh[1]zh[foo]zh[(1, 'hi')])r   r   float32r   arrayr   rP   rA   s    r+   test_data_typesr   1  s\   ZZ	4 "y\$%XX+6:	D iq$!qcA3#7iq$!qcA3#7iq$!qcA3#7iq$!Q!Q!Q 8:y:QR		Iy)& 		Iy)  		Iy)& 		Iy)*r-   c                  f   t        dd      } t        d| ddddgddgddgddggddg       t        d	| ddddgddgddgddggdd
g       t        d| ddddgddgddgddggddg       t        d| ddg dg dg dg dgg d       t        d| ddg dg dg dg dgg d       t        d| ddg dg dg dg dgg d       t        | d   t              | d<   t        d| ddddgddgddgddggddg       t        d| ddddgddgddgddggddg       t        d| ddddgddgddgddggddg       y ) NrW   r   z~ C(a)r   Tr2   r   z
C(a)[T.a2]z~ C(a, levels=['a2', 'a1'])zC(a, levels=['a2', 'a1'])[T.a1]z~ C(a, Treatment(reference=-1))z#C(a, Treatment(reference=-1))[T.a1]za*b)r2   r   r   r   )r2   r   r2   r   )r2   r2   r   r   )r2   r2   r2   r2   )r   a[T.a2]r   za[T.a2]:b[T.b2]z0 + a:b)r   r   r2   r   )r   r2   r   r   )r   r   r   r2   )za[a1]:b[b1]za[a2]:b[b1]za[a1]:b[b2]za[a2]:b[b2]z1 + a + a:b)r2   r2   r   r2   )r   r   za[a1]:b[T.b2]za[a2]:b[T.b2]r   za[H.a2]zC(a, Treatment)zC(a, Treatment)[T.a2])r   rP   r   r   rA   s    r+   test_categoricalr   c  s   a1D 	
Q!Q!Q!Q(	l# %	
Q!Q!Q!Q(	78 )	
Q!Q!Q!Q(	;< 		|\<@> 		|\<@D 		|\<@B $s)W%DIc4DAr7QGaVaV<{I>VW	
Q!Q!Q!Q(	-. c4DAr7QGaVaV<{I>VWr-   c                      g dg dg dd} t        d| dddgd	gd
gdgdgdggdg       t        d| ddddgddgddggddg       t        d| ddddgddgddggddg       y )NrV   rY   r   )rh   rk   za b cz0 + I(x + y)r   Tr2   rW   rX   rZ   r[   r\   zI(x + y)z
Q('a b c')r   r   r   r   z	center(x)r   r   rA   s    r+   test_builtinsr     s    \BDndAtqcA3aS1#s%Cj\R	
R1b'Ar7#	l# k4DAr7QFQF";k;=WXr-   c            
         g dg ddg dg ddgt        j                  g d      } t        j                  | t        j                  |       z
        }|t        j                  |      z
  }fd}t	        d|      }t        |d	         \  }}|j                  j                  d
gk(  sJ |j                  j                  g dk(  sJ t        j                  |d	gd	gd	gg      sJ t        j                  |t        j                  g dg d|dd  f            sJ t        d|      }t        |gd	         \  }|j                  j                  g dk(  sJ t        j                  |d	gd	gd	gg      sJ t        j                  |t        j                  g dg d|dd  f            sJ t        j                  t        t        d|       t        j                  t        t        d|       y )N)a2r   r   rV   )r   rh   )r   r   a1rY   )r2   rW   rX   rZ   r[   r\   c                      t               S r   r?   )datass   r+   rB   z)test_incremental.<locals>.data_iter_maker  s    E{r-   z!1 ~ a + center(np.sin(center(x)))r2   r   )r   r   zcenter(np.sin(center(x))))r2   r2   r2   )r2   r2   r   rX   z~ a + center(np.sin(center(x)))zx ~ xrh   )r   r   sinmeanr   r   r   r   r   column_stackr   rG   rH   r   )	rh   sin_center_xx_colrB   rL   r"   r#   rK   r   s	           @r+   test_incrementalr     s    !y1 y1E 	

%&A66!bggaj.)L277<00E A?SH$XuQx8HC??''K=888??'' ,   
 ;;saS1#sO,,,;;sBOOY	59,MNOOO=OG"G9eAh7FS??'' ,   
 ;;saS1#sO,,,;;sBOOY	59,MNOOO
MM*mWoF
MM*nc?Cr-   c                      t        ddg didddt        j                  d      gdt        j                  d      gdt        j                  d      ggd	d
g       y )Nz~ np.sin(x)rh   rV   r   Tr2   rW   rX   r   z	np.sin(x))rP   r   r   r   r-   r+   test_env_transformr     sQ    	i	
RVVAY!RVVAY!RVVAY8	k"r-   c                      t        dd      t        j                  ddd      d<   d   dz  d<   fd}  | d	g d
        | dg d        | dg d
        | dg d        | dg d        | dg d       y )NrW   r   r   r2   rZ   r^   r_   c                 T    t        |       }|j                  j                  |k(  sJ y r   )r   r   r   )formulaordermr$   s      r+   t_termsz test_term_order.<locals>.t_terms  s'    GT"}}''5000r-   za + b + x1 + x2)r   r   r   r^   r_   zb + a + x2 + x1)r   r   r   r_   r^   z0 + x1 + a + x2 + b + 1z0 + a:b + a + b + 1)r   r   r   r   za + a:x1 + x2 + x1 + b)r   r   r   r^   a:x1r_   z@0 + a:x1:x2 + a + x2:x1:b + x2 + x1 + a:x1 + x1:x2 + x1:a:x2:a:b)r   zx1:x2za:x1:x2zx2:x1:bz	x1:a:x2:br_   r^   r   )r   r   linspace)r   r$   s    @r+   test_term_orderr     s    a1DQ1%DJdqDJ1 BCBC%'JK!#AB$&QRJMr-   c                     ddd}t        d|d      }| rt        j                  |dgg      sJ y t        j                  |dgg      sJ y )Nr[   rW   r   z0 + I(x / y)r2   r   )r   r   r   )expect_true_divisionr$   r   s      r+   _check_divisionr     sO     Da(A{{1ug&&&{{1se$$$r-   c            	          ddgddgddggddgddggd} t        d| d	d
g dg dgg d       t        d| d	d
g dg dgg d       y )Nr   r   r2   rW   rX   rZ   )r   rz   ry   zX*Yr   T)	r2   r2   rW   r2   rX   r2   rW   rX   r\   )	r2   rX   rZ   rW   rZ   r\   rm   r      )	r   r   r   Y[0]Y[1]z	X[0]:Y[0]z	X[1]:Y[0]z	X[0]:Y[1]z	X[1]:Y[1]za:X + Y)r2   r2   r   rW   r   r2   rX   )r2   r   rX   r   rZ   rW   rZ   )r   z
a[a1]:X[0]z
a[a2]:X[0]z
a[a1]:X[1]z
a[a2]:X[1]r   r   r   rA   s    r+   test_multicolumnr     sz    D\!fq!f!fq!fD
 	77	

	
* 		 56	
r-   c                     g d} g d}t        j                  t        d      ddgddgddgg      sJ t        d      \  }}t        j                  |dgd	gd
gg      sJ t        j                  |ddgddgddgg      sJ y )NrV   rY   rh   r2   rW   rX   r   rZ   r[   r\   )r   r   r   r   )rh   rk   r"   r#   s       r+   test_dmatrix_dmatrices_no_datar   @  s    AA;;ws|q!fq!fq!f%=>>>!HC;;saS1#sO,,,;;saVaVaV4555r-   c                      t        dg dg dg dd      \  } }| j                  j                         dk(  sJ |j                  j                         dk(  sJ y )Nz	y ~ x + arV   rY   )r   r   a3)rk   rh   r   rk   z	1 + a + x)r   r   describe)r"   r#   s     r+   test_designinfo_describer  I  sU    99;MNHC ??##%,,,??##%444r-   c            	      d   d } d}	 t        |g dg dd       J # t        $ r5}|j                  t        |d|j	                  d            k(  sJ Y d }~nd }~ww xY w	 t        dd	i i       J # t
        $ r8}t        |t              sJ |j                  t        dd
d      k(  sJ Y d }~y d }~ww xY w)Nc                     t        d      )NWHEEEEEEr   )rh   s    r+   raise_patsy_errorz2test_evalfactor_reraise.<locals>.raise_patsy_errorU  s    $$r-   zraise_patsy_error(X) + YrV   rY   )rz   ry   r    z1 + x[1]rh   rZ   rm   )r   r   originr   ru   	Exceptionr5   )r  r   r   s      r+   test_evalfactor_reraiser	  Q  s    % )Gyy9: 	u  Bxx6'1gmmC.@AAAAB
S"I&
 	u	  4!Z(((xx6*a33334s,    	A+AAA. .	B/7.B**B/c            	         dddt         j                  gt         j                  dddgd} dg}t        r|j                  d	       |D ]9  }t	        d
| |      }t        j
                  |g dg dg      sJ |d	k(  r2|j                  j                  t        j                  ddg            sJ t        j                  t        t        d
| |d       t        d| |      \  }}t        j
                  |dgdgg      sJ t        j
                  |ddgddgg      sJ |d	k(  rd|j                  j                  t        j                  ddg            sJ |j                  j                  t        j                  ddg            sJ t        j                  t        t        d| |d       t        d| |      \  }}t        j
                  |dgdgdgg      sJ t        j
                  |dgdgdgg      sJ |d	k(  rd|j                  j                  t        j                  g d            sJ |j                  j                  t        j                  g d            sJ t        j                  t        t        d| |d       < y )Nr2   rW   rX   r   r   (   r   r.   r1   r   )r$   r4   )r2   rW   r   )r2   rX   r   raise)r$   r4   	NA_actionr   zy ~ 1rV   )r   nanr   rI   r   r   ru   equalsr   IndexrG   rH   r   r   )r$   return_typesr4   matlmatrmats         r+   test_dmatrix_NA_actionr  k  s>   Q266""&&"b")=>D:LK(# ,
gDkB~~cJ
#;<<<+%99##FLL!Q$8999#	
 wT{K
d~~dbTB4L111~~daVaV$4555+%::$$V\\1a&%9:::::$$V\\1a&%9:::#	
 wT{K
d~~dbTB4"$6777~~daS1#sO444+%::$$V\\)%<===::$$V\\)%<===#	
K,
r-   c                     dddd} dg dgfdg dgffD ]  \  }}t        ||       }t        j                  ||      sJ t        j                  t        |j                  g|       d	   |      sJ t
        sat        j                  |       }t        j                  t        ||      |      sJ t        j                  t        |j                  g|      d	   |      rJ  y )
N皙?333333?r   )r^   r_   r   zx1 + x2)r2   r  r  zC(a, levels=('a1', 'a2')) + x1)r2   r   r  r   )r   r   r   r   r   r   r   r   )data_0dr   expectedr  data_seriess        r+   test_0d_datar    s    $/G 
]O$	)K=9  gw'{{3))){{!3??"3W=a@(
 	
 
  --0K;;ww<hGGG;;%s&7EaH(  r-   c                      g d} t        di       }g d} t        |j                  i       }t        j                  ||      sJ y )NrV   r   r   )r   r   r   r   )r   design_matrixdesign_matrix2s      r+   test_env_not_saved_in_builderr     s>    HJ+MH]66;N;;}n555r-   c                     t         sy t        g dddg      g} t        r'| j                  t	        j
                  | d                | D ]  }d|i}t        j                  t        d|      ddgddgddgg      sJ t        j                  t        d|      ddgddgddgg      sJ t        j                  t        d|      ddgddgddgg      sJ t        j                  t        d	|      ddgddgddgg      rJ  y )
N)r2   r   r2   r   r   r   objr2   zC(obj)zC(obj, levels=['b', 'a'])zC(obj, levels=['a', 'b']))	r   r   r   rI   r   r   r   r   r   )objsr"  r   s      r+   test_C_and_pandas_categoricalr$    s   "))c3Z@AD$FMM$q'*+ 
CL{{75!,1v1v1v.FGGG{{78Q/1a&1a&1a&1IJJJ{{/3q!fq!fq!f5M
 	
 
 {{/3q!fq!fq!f5M
 	
 

r-   )NN)<numpyr   rG   r   r   patsy.design_infor   r   
patsy.evalr   
patsy.descr   r	   r
   patsy.categoricalr   patsy.contrastsr   patsy.user_utilr   r   patsy.buildr   r   r   r   r   r   r   
patsy.utilr   r   r   r   patsy.originr   r   r,   r:   r<   rP   rT   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r   r$  r   r-   r+   <module>r/     s       6 & 1 1  # 2 E M M    <F ')x G )+! I Yx .8 ! gT	:1z1/dCXLY$DN*(	%*Z6543
l.6
r-   