
    J/Pho                     v   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;dS )&    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 |*t          j        ||          sJ |j        j        |k    sJ n|J |J | r|t	          |j        g|          \  }nHt	          |j        |j        g|          \  }	}t          j        |	|          sJ |	j        j        |k    sJ t          j        ||          sJ |j        j        |k    sJ d S |j        j        J ||j        j        J d S d S 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
             T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/patsy/test_highlevel.pycheck_resultr,      sc    ;s/00000?'+=====
{3 344444+/AAAAAA"***!))) <;./@$GGJWW4#/2D   GW ;w,,,,,&37IIIII{7C((((("/3EEEEEEE$,,,{co3;;;{{;;    matrixc                 `    d}t          |t                    r|dz  }t          | |||          S N	dataframe   return_type)
isinstanceintr   formula_liker$   depthr4   s       r+   dmatrix_pandasr:   B   s9    K% 
<u+FFFFr-   c                 `    d}t          |t                    r|dz  }t          | |||          S r0   )r5   r6   r   r7   s       r+   dmatrices_pandasr<   I   s9    K% 
\4KHH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          rd|'t          | ||          }	d }
t          |	g          \  }n$t          | ||          }t          |          \  }
}t          ||
|||||           nBt          j        t          t          | |           t          j        t          t          | |           t          g}t          g}t           r4|                    t$                     |                    t&                     |S|D ]%} || |          }t          |d |||||           &|D ]&}	  || |           t(          # t          $ r Y #w xY wd S |D ]&}	  || |           t(          # t          $ r Y #w xY w|D ](} || |          \  }
}t          ||
|||||           )d S )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*!=>>P|U++P0:<?J0W0WP <!;<<P
 &#L/5IIGC*G9d;;FSS%lOUKKH,Xt<<HC		
 		
 		
 		
 	j.,PPPj-OOOJJ ,.)))*+++" 	 	A!L$..C##"#"	 	 	 	  	% 	%A%,e,,, %$    	% 	%  	% 	%A%,e,,, %$    
  	 	A<u55JS###"#"	 	 	 		 	s$   #F77
GGG""
G/.G/c                     t          |t                    r|dz  }t          t          g}t          r|t
          t          gz  }|D ]!}	  || ||           t          # |$ r Y w xY wd S )Nr2   )r5   r6   r   r   r   r:   r<   rJ   )r8   r$   r9   excfsrO   s         r+   	t_invalidrT      s    % 

9	B 1
~/00 ! !	!AlD%((( !   	 	 	D	! !s   AA"!A"c                  z   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<} |             d S )=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dS ).test_formula_likes.<locals>.ForeignModelSourcec                     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$5#67784cARAR@S;T;T:UVVVr-   N__name__
__module____qualname__rC    r-   r+   ForeignModelSourcerw   N  s(        	W 	W 	W 	W 	Wr-   r   )ry   rz   TX[0]X[1]ry   c                       e Zd Zd ZdS )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#yyy!1 233 r-   )eval_env
~ x_in_envx_in_env)rR   c            
      H    d} t          di ddddgddgddggddg           d S )	Nri   r   r2   TrW   rX   r   r   rP   )r   s    r+   check_nested_callz-test_formula_likes.<locals>.check_nested_call  sM    	VaVaV$*%	
 	
 	
 	
 	
r-   c            
      J    d} t          di dddgddgddggddg           d S )	Nri   r   Tr2   rW   rX   r   r   r   )r   es    r+   check_nested_call_2z/test_formula_likes.<locals>.check_nested_call_2  sN    	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   yyy)))b!UYYY			,BDVDVDVWWW				999%&
		III   

IIIyyy)**
		III   	rz999iii0112
		III   
yyy))),E	J	J	JBb"aIII.0H0H0HIIItRj"aIII 68P8P8PQQQ 
Q)))YYY'(
		III
qc
		 	 	 #siii+,
		III
qc
		 	 	 	QF		RZIII(>??@
		III
qc
		 	 	 	aS1#J		YYY			,B!C!CD
		III
qc
		 	 	 III.eLLLDAe<<<D	t
		III   
qc
		 	 	 yyy999iii012q999 			{nb!$$$			{YYYK)))5r1===  3
	&
C+
,
,b!UaS1#sOcUSSS	M)))&111S1#sOH	
 	
 	
 	
sIII.//1A3			BR1S1STS1#sOES1#sOE		
 		
 		
 	
]9993///yyys1S1S1STS1#sOES1#sOE		
 		
 		
 	
 )))-- )))iii@@@ YYKYYK	
 	
 	
 	
&-			
"
"B5A3aS/D6JJJseA3///1AA3%PQs1S1S1ST	
 	
 	
W W W W WV W W W '&((M!fQFQF+,,	
Q!Q	
qc
		 	 	        ##%%r1--- !fAq6""	
Q!Q	c
qc
		 	 	 eAq6A''DAq6Aq62B[RUDVWWW!fAq6""		III   R$S 1 1233455DdS///"AtsecUSE-BSEJJJR$r((D,s*;*;)<$=$=>??D	ooo	
SAs8aX&	c   dL--.//0488T<PSCTCTBU=V=V2WXXDooLLL11	
SAs8aX&	c
tbT		 	 	 		|C  !	"	"#	b4c**+,,-I
 &33a  H 	!hqk"	lll	
R1b'Ar7#	c   	lll	
R1b'Ar7#	c   	!hqk"	lll	
R1b'Ar7#	c
tbT		 	 	 yyHlB41a&1a&1a&!9K;TUUU	\\\"	
R1b'Ar7#	j!   lB	:'>????	
 	
 	
 ""AlB	:'>????""A	
 	
 	
 	
 	
 r-   c                     t           sd S 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        _         d S # ||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    	yyyt<<<	@	@	@B	yyyt<<<	@	@	@B
$K
0
0
0C;saVaVaV455555>#+T':;;;;;?'K+>>>>>>#)\\\22222<<<HC;saS1#sO,,,,,>#+v.....?'D61111>#)\\\22222;saVaVaV455555>#+T':;;;;;?'K+>>>>>>#)\\\22222
"+
.
.
.C;saS1#sO,,,,,>#+v.....?'D61111>#)\\\22222"b{;;;HC;saS1#sO,,,,,>#+v.....?'D61111>#)\\\22222;saS1#sO,,,,,>#+v.....?'D61111>#)\\\22222"lll+EEEHC>#)RX.....>#)RX.....<<<,+FFFIC>#)RX.....>$*bh/////,J1&+#j'3qc
A;WWWW#QC  #	
 	
 	
 	
 '1###j#0000s   AQ Qc                     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 d S )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0000r-   c                     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            d S )!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&   YY__Z			444   """yyy\\$$$%%X+++6:::	 	D iq$!qcA3#777iq$!qcA3#777iq$!qcA3#777iq$!Q!Q!Q 8:y:QRRR		IIIyyy)&&&   		IIIyyy)      		IIIyyy)&&&   		IIIyyy)***    r-   c                     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           d S ) 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DD   		|||\\\<<<@BBB   $s)W%%DIc4DAr7QGaVaV<{I>VWWW	
Q!Q!Q!Q(	-.   c4DAr7QGaVaV<{I>VWWWW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           d S )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    \\\BBDndAtqcA3aS1#s%Cj\RRR	
R1b'Ar7#	l#   k4DAr7QFQF";k;=WXXXX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|           d S )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     sD    !  yyy11   yyy11E 	
%%%&&A6!bgajj.))L27<000E     A?SSH$XuQx88HC?'K=8888?' , , ,    
 ;saS1#sO,,,,,;sBOYYY			59,MNNOOOOO=OOG"G9eAh77FS?' , , ,    
 ;saS1#sO,,,,,;sBOYYY			59,MNNOOOOO
M*mWoFFF
M*nc?CCCC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           d S )Nz~ np.sin(x)rh   rV   r   Tr2   rW   rX   r   z	np.sin(x))rP   r   r   r   r-   r+   test_env_transformr     si    	iii	
RVAYY!RVAYY!RVAYY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           d S )NrW   r   r   r2   rZ   r^   r_   c                 L    t          |           }|j        j        |k    sJ d S r   )r   r   r   )formulaordermr$   s      r+   t_termsz test_term_order.<locals>.t_terms  s.    GT""}'5000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 1 1 1 1 GBBBCCCGBBBCCCG%'J'J'JKKKG!#A#A#ABBBG$&Q&Q&QRRRGJMMM    r-   c                     ddd}t          d|d          }| rt          j        |dgg          sJ d S t          j        |dgg          sJ d S )Nr[   rW   r   z0 + I(x / y)r2   r   )r   r   r   )expect_true_divisionr$   r   s      r+   _check_divisionr     sn     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           d S )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     s    D\!fq!f!fq!f D
 	777777	

	
 
	
 
	
  * 				 5 5 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 d S )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55555r-   c                      t          dg dg dg dd          \  } }| j                                        dk    sJ |j                                        dk    sJ d S )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  sy    999999;M;M;MNN HC ?##%%,,,,?##%%444444r-   c            	         d } d}	 t          |g dg dd           J # t          $ r9}|j        t          |d|                    d                    k    sJ Y d }~nd }~ww xY w	 t          d	d
i i           J # t
          $ r>}t          |t                    sJ |j        t          d	dd          k    sJ Y d }~d S 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   Fr    z1 + x[1]rh   rZ   rm   )r   r   originr   ru   	Exceptionr5   )r  r   r   s      r+   test_evalfactor_reraiser	  Q  s+   % % % )Gyyyyyy99::: 	  B B Bx6'1gmmC.@.@AAAAAAAAAAAB
S"I&&&
 		  4 4 4!Z(((((x6*a3333333333334s,     
A#/AA#'A; ;
C3B>>Cc            	         dddt           j        gt           j        dddgd} dg}t          r|                    d	           |D ]<}t	          d
| |          }t          j        |g dg dg          sJ |d	k    r0|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    r`|j                            t          j	        ddg                    s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    r`|j                            t          j	        g d                    sJ |j                            t          j	        g d                    sJ t          j        t          t          d| |d           >d S )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26""&"b")=>>D:L )K(((# ,
 ,
gDkBBB~cJJJ


#;<<<<<+%%9##FL!Q$8$899999#	
 	
 	
 	
 wT{KKK
d~dbTB4L11111~daVaV$455555+%%:$$V\1a&%9%9::::::$$V\1a&%9%9:::::#	
 	
 	
 	
 wT{KKK
d~dbTB4"$677777~daS1#sO44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
          rjt          j        |           }t          j        t          ||          |          sJ t          j        t          |j        g|          d	         |          sJ d S )
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$	)KKK=9   gw''{3))))){!3?"3W==a@(
 
 	
 	
 	
  	 -00K;ww<<hGGGGG;%s&7EEaH(     r-   c                      g d} t          di           }g d} t          |j        i           }t          j        ||          sJ d S )NrV   r   r   )r   r   r   r   )r   design_matrixdesign_matrix2s      r+   test_env_not_saved_in_builderr     sS    yyHJ++M||H]6;;N;}n5555555r-   c                  ,   t           sd S t          g dddg          g} t          r-|                     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          sJ d S )
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$    sf   " ))))c3Z@@AD$ ,FM$q'**+++ 
 
CL{75!,,1v1v1v.FGGGGG{78Q//1a&1a&1a&1IJJJJJ{/33q!fq!fq!f5M
 
 	
 	
 	
 {/3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 6 6 6 6 6 6 6 & & & & & & 1 1 1 1 1 1 1 1 1 1       # # # # # # 2 2 2 2 2 2 2 2 E E E E E E E E M M M M M M M M M M M M                   MMM <  <  <F ')x G G G G )+! I I I I Y Y Y Yx .8 ! ! ! ! g g gT	:1 :1 :1z1 1 1/ / /dCX CX CXLY Y Y$D $D $DN  *  (	% 	% 	%* * *Z6 6 65 5 5  43
 3
 3
l  .6 6 6
 
 
 
 
r-   