Ë
    /�Dj$k  ã                   ó  — d dl Zd dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZmZ d dlmZmZ erd dlZd	„ Zd
„ Zd„ Zdd„Zdd„Zd„ Zd„ Zd„ Zde_         d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-y) é    N)Ú
PatsyError)Úatleast_2d_column_defaultÚhave_pandasÚhave_pandas_categorical)ÚTermÚ	INTERCEPT)Úbuild_design_matricesÚdesign_matrix_builders)ÚC)ÚbalancedÚLookupFactor)ÚDesignMatrixÚ
DesignInfoc                 óÞ   — t        | «      } | j                  d   dk(  ryt        j                  j	                  | «      \  }}}t        j
                  |dkD  «      }|| j                  d   k(  sJ ‚y )Né   r   Tg»½×Ùß|Û=)r   ÚshapeÚnpÚlinalgÚsvdÚsum)ÚmÚuÚsÚvÚranks        úTC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\patsy/test_build.pyÚassert_full_rankr      s^   € Ü! !Ó$€AØ‡w�wˆq�z�Q‚ØÜ�i‰i�m‰m˜AÓ�G€A€qˆ!Ü�6‰6�!�e‘)Ó€DØ�1—7‘7˜1‘:ÒÑÐó    c                  óœ  — t        t        j                  d«      «       t        ddgddgddgddgg«       t        j                  t
        t         ddgddgg«       t        j                  t
        t         ddgddgg«       t        j                  t
        t         g d¢g d¢g«       t        j                  t
        t         g d¢g d¢g d	¢g«       y )
Né
   r   r   é   é   ©r   r!   é   )r   r    éd   )r   é   é   )r   r'   é   )r   r   ÚeyeÚpytestÚraisesÚAssertionError© r   r   Útest_assert_full_rankr.   !   s�   € Ü”R—V‘V˜B“ZÔ Ü�q˜!�f˜q !˜f q¨! f¨q°!¨fÐ5Ô6Ü
‡M�M”.Ô"2°a¸°V¸aÀ¸VÐ4DÔEÜ
‡M�M”.Ô"2°a¸°V¸aÀ¸VÐ4DÔEÜ
‡M�M”.Ô"2²YÂÐ4MÔNä
‡M�M”.Ô"2²YÂ	Ê9Ð4UÕVr   c                  ó„   — g }| D ]3  }|j                  t        |D �cg c]  }t        |«      ‘Œ c}«      «       Œ5 |S c c}w ©N)Úappendr   r   )ÚentriesÚtermsÚentryÚnames       r   Úmake_termlistr6   +   sD   € Ø€EØò CˆØ�‰”T¸%Ö@°$œ<¨Õ-Ò@ÓAÕBðCà€Lùò As   œ=c                 óø   — t        | «       t        | j                  j                  «      t        |«      k(  sJ ‚|�| j                  j                  |k(  sJ ‚| j
                  dk(  sJ ‚| j                  d   |k(  sJ ‚y )Nr!   r   )r   ÚsetÚdesign_infor3   Úcolumn_namesÚndimr   )ÚmmÚexpected_rankÚtermlistr:   s       r   Úcheck_design_matrixr?   2   sg   € Ü�RÔÜˆr�~‰~×#Ñ#Ó$¬¨H«Ò5Ñ5ØÐØ�~‰~×*Ñ*¨lÒ:Ñ:Ø�7‰7�aŠ<ÑØ�8‰8�A‰;˜-Ò'Ñ'Ð'r   c                 óF  ‡ — t        |Ž }ˆ fd„}t        |g|d¬«      }t        |‰ «      }|d   }|d   j                  |j                  j                  k(  sJ ‚|d   j
                  |j                  j
                  k(  sJ ‚|j                  |d   u sJ ‚t        ||||¬«       |S )Nc               3   ó   •K  — ‰ –— y ­wr0   r-   ©Údatas   €r   Ú
iter_makerzmake_matrix.<locals>.iter_maker>   ó   øè ø€ Ø‹
ùó   ƒ	r   ©Úeval_env©r:   )r6   r
   r	   Úterm_slicesr9   r:   r?   )	rC   r=   r2   r:   r>   rD   Údesign_infosÚmatricesÚmatrixs	   `        r   Úmake_matrixrN   ;   s£   ø€ Ü˜gÐ&€Hôô *¨8¨*°jÈ1ÔM€LÜ$ \°4Ó8€HØ�a‰[€FØ˜‰?×&Ñ&¨&×*<Ñ*<×*HÑ*HÒHÑHØ˜‰?×'Ñ'¨6×+=Ñ+=×+JÑ+JÒJÑJØ×Ñ ¨a¡Ñ0Ñ0Ü˜ ¨xÀlÕSØ€Mr   c                  ó  — t        dd¬«      } t        j                  ddt        | d   «      «      x}| d<   | d   dz  x}| d<   t	        | ddggdd	g¬
«      }t        j
                  |ddgddgddgddgg«      sJ ‚t	        | dg dggddg¬
«      }t        j
                  |ddgddgddgddgg«      sJ ‚t	        | dddggg d¢¬
«      }t        j
                  |g d¢g d¢g d¢g d¢g«      sJ ‚t	        | dg dgdgddggg d¢¬
«      }t        j
                  |g d¢g d¢g d¢g d¢g«      sJ ‚t	        | dg dgdgddggg d¢¬
«      }t        j
                  |g d¢g d¢g d¢g d¢g«      sJ ‚t	        | ddgdgddggg d¢¬
«      }t        j
                  |dd|d   dgdd|d   dgdd|d   |d   gdd|d   |d   gg«      sJ ‚t	        | ddgdgddggg d¢¬
«      }t        j
                  |t        j                  ||||z  f«      «      sJ ‚y )Nr!   )ÚaÚbr   r   rP   Úx1Úx2úa[a1]úa[a2]rI   Ú	Interceptúa[T.a2]r"   rQ   )za[a1]:b[b1]za[a2]:b[b1]za[a1]:b[b2]za[a2]:b[b2])r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )rV   rW   úb[T.b2]za[T.a2]:b[T.b2]©r   r   r   r   )r   r   r   r   )r   r   r   r   )rV   rX   rW   zb[T.b2]:a[T.a2])rT   rU   rR   z
a[T.a2]:x1r$   )rR   rS   zx2:x1)r   r   ÚlinspaceÚlenrN   ÚallcloseÚcolumn_stack)rC   rR   rS   r   s       r   Útest_simpler^   K   sd  € Ü�a˜1Ô€DÜ—k‘k ! Q¬¨D°©I«Ó7Ð7€Bˆˆd‰Ø˜4‘j A‘oÐ%€Bˆˆd‰ä�D˜!˜s˜e˜W°G¸WÐ3EÔF€AÜ�;‰;�q˜A˜q˜6 A q 6¨A¨q¨6°A°q°6Ð:Ô;Ñ;ä�D˜!˜b 3 %˜[¸ÀYÐ7OÔP€AÜ�;‰;�q˜A˜q˜6 A q 6¨A¨q¨6°A°q°6Ð:Ô;Ñ;äØØ	Ø
ˆsˆˆÚQô		€Aô �;‰;�qš<ª²|Â\ÐRÔSÑSäØØ	Ø	ˆcˆU�S�E˜C ˜:Ð&ÚKô		€Aô �;‰;�qš<ª²|Â\ÐRÔSÑSäØØ	Ø	ˆcˆU�S�E˜C ˜:Ð&ÚKô		€Aô �;‰;�qš<ª²|Â\ÐRÔSÑSäØØ	Ø
ˆ��˜˜d˜Ð$Ú;ô		€Aô �;‰;Ø	à��2�a‘5˜!ÐØ��2�a‘5˜!ÐØ��2�a‘5˜"˜Q™%Ð Ø��2�a‘5˜"˜Q™%Ð ð		
ôñ ô 	Øˆa�4�&˜4˜& 4¨ ,Ð/Ò>Sô	€Aô �;‰;�qœ"Ÿ/™/¨2¨r°2¸±7Ð*;Ó<Ô=Ñ=Ð=r   c                  óÚ   — t        ddd¬«      } t        j                  ddt        | d   «      «      | d<   t	        | dg ddgg«       t	        | d	ddgddgg«       t	        | d	dd
gddgg«       y )Nr!   ©rP   rQ   Úcr   r   rP   Úxr"   rQ   r'   ra   )r   r   rZ   r[   rN   rB   s    r   Útest_R_bugsrc   „   s{   € Ü�a˜1 Ô"€DÜ—‘˜A˜q¤# d¨3¡i£.Ó1€Dˆ�Iô ��a˜"˜s C˜jÐ)Ô*ô ��a˜3 ˜* s¨C jÐ1Ô2ô ��a˜3 ˜* s¨C jÐ1Õ2r   c            
      ó¬  ‡— t        ddd¬«      } t        j                  ddt        | d   «      «      | d<   | d   dz  | d<   ˆfd	„Št	         ‰d
«      «      }t	         ‰|«      «      }t        t        |«      «       ddgddgddgddgddgg}d}dd l}|j                  «       }|D �]  }t        |«      }|D ]  \  }	}
|	|v sŒ|
|vsŒ Œ# t        «       }|D ]x  }t        |D �cg c]  }|j                  d«      sŒ|‘Œ c}«      }|D �cg c]  }|j                  d«      rŒ|‘Œ }} ‰|«      D ]  }|j                  t        ||z   «      «       Œ! Œz t        |«      }|dv r"t        j                  t        t        | ||«       nt        | ||«       |dz  }|dz  dk(  sŒ÷t        d|«       �Œ t        d|j                  «       |z
  fz  «       y c c}w c c}w )Nr!   r&   )rP   rQ   Úrepeatr   r   rP   rR   rS   c              3   ó¶   •K  — | st        «       –— y | d   } ‰| dd  «      D ]2  }t        t        |«      «      –— t        t        |f|z   «      «      –— Œ4 y ­w)Nr   r   )ÚtupleÚsorted)ÚlÚobjÚsubsetÚall_subsetss      €r   rl   z/test_redundancy_thoroughly.<locals>.all_subsetsŸ   sY   øè ø€ ÙÜ“'‹Mà�A‘$ˆCÙ% a¨¨ eÓ,ò 5�ÜœF 6›NÓ+Ò+ÜœF C 6¨F¡?Ó3Ó4Ó4ñ5ùs   ƒAA)rP   rQ   rR   rS   )rQ   )rP   )rS   )rR   )rQ   rS   )rP   rR   )rP   rQ   rS   )rP   rQ   rR   )rQ   rR   rS   )rP   rR   rS   rb   )r-   )r-   r%   z
Completed:zTook %0.2f seconds)r   r   rZ   r[   ÚlistÚprintÚtimer8   rg   Ú
startswithÚaddÚ	frozensetr*   r+   r   rN   )rC   Ú	all_termsÚall_termlist_templatesÚ	redundantÚcountro   ÚstartÚtermlist_templateÚtermlist_setÚdispreferredÚ	preferredÚexpanded_termsÚterm_templateÚtÚnumericÚrestÚsubset_restr=   rl   s                     @r   Útest_redundancy_thoroughlyr‚   —   s  ø€ ô �a˜1 QÔ'€DÜ—‘˜Q ¤3 t¨C¡y£>Ó2€Dˆ�JØ�d‘˜q‘€Dˆ�Jô5ô ‘[Ð!7Ó8Ó9€IÜ!¡+¨iÓ"8Ó9ÐÜ	Œ#Ð$Ó
%Ô&ð 
�ÐØ	�'ÐØ	�kÐ"Ø	Ð+Ð,Ø	Ð-Ð.ð€Ið €EÛà�I‰I‹K€EØ3ó +ÐÜÐ,Ó-ˆØ'0ò 	+Ñ#ˆL˜)Ø˜|Ò+°	ÀÒ0MÙð	+ô !›UˆNØ!2ò I�Ü¨MÖ O q¸Q¿\¹\È#Õ=N¢Ò OÓP�Ø#0ÖJ˜a¸¿¹ÀSÕ8IšÐJ�ÐJÙ#.¨tÓ#4ò I�KØ"×&Ñ&¤y°¸wÑ1FÓ'GÕHñIðIô   Ó/ˆMØ  KÑ/ä—‘Ü¤¨T°=ÐBSõô ˜D -Ð1BÔCØ�Q‰JˆEØ�s‰{˜aÓÜ�l EÖ*ð1+ô2 
Ð
 $§)¡)£+°Ñ"5Ð!7Ñ
7Õ8ùò# !PùÚJs   Ã!GÃ8GÄGÄGr   c            	      ó€  — g d¢g d¢dœ} t        | «      }|d   D �cg c]  }|j                  d«      ‘Œ c}|d<   g d¢g d¢dœ}t        | «      }|d   D �cg c]  }t        |«      ‘Œ c}|d<   t        j                  t        t        | d   | d   «      «      ddt        fg¬«      }t        j                  t        t        | d   | d   «      «      d	dt        fg¬«      }|j                  t        j                  «      }|j                  t        j                  «      }| ||||g}t        rLt        j                  |«      }	|j                  |	«       t        j                  |«      }
|j                  |
«       |D ]<  }t        |d
dgddggg d¢¬«      }t        j                  |g d¢g d¢g d¢g d¢g«      rŒ<J ‚ y c c}w c c}w )N)Úa1Úa2r„   r…   ©r   r!   r$   r"   )rP   rb   rP   Úasciirb   )rP   ÚS2©Údtype)rP   ÚU2r"   )rT   rU   za[a1]:xza[a2]:xrI   rY   )r   r   r   r!   )r   r   r$   r   )r   r   r   r"   )ÚdictÚencodeÚstrr   Úarrayrm   ÚzipÚintÚviewÚrecarrayr   ÚpandasÚ	DataFramer1   rN   r\   )Ú
basic_dictÚbasic_dict_bytesr   Úbasic_dict_unicodeÚstructured_array_bytesÚstructured_array_unicodeÚrecarray_bytesÚrecarray_unicodeÚdatasÚdf_bytesÚ
df_unicoderC   r   s                r   Útest_data_typesr    Ö   s®  € Ú/²lÑC€Jä˜JÓ'ÐØ8HÈÑ8MÖN°1˜QŸX™X gÕ.ÒNÐ�SÑâ7ºlÑKÐÜ˜jÓ)ÐØ/AÀ#Ñ/FÖG¨!œs 1�vÒGÐ�sÑäŸX™XÜŒS�˜C‘ *¨S¡/Ó2Ó3¸KÈ#ÌsÈÐ;TôÐô  "Ÿx™xÜŒS�˜C‘ *¨S¡/Ó2Ó3¸KÈ#ÌsÈÐ;Tô Ðð ,×0Ñ0´·±Ó=€NØ/×4Ñ4´R·[±[ÓAÐàØØ ØØð€Eõ Ü×#Ñ#Ð$4Ó5ˆØ�‰�XÔÜ×%Ñ%Ð&8Ó9ˆ
Ø�‰�ZÔ Øò XˆÜØØØˆU�S˜#�JÐÚAô	
ˆô �{‰{˜1š|ª\º<ÊÐVÕWÑWñXùò5 Oùò Hs   œF6ÁF;c                  ó>  ‡— dg d¢iŠˆfd„} t        t        d«      g| d«      d   }t        |g‰«      d   }|j                  t	        j                  t        j
                  «      k(  sJ ‚t        |g‰t        j                  ¬«      d   }|j                  t	        j                  t        j                  «      k(  sJ ‚t        t        d«      rSt        |g‰t        j                  ¬«      d   }|j                  t	        j                  t        j                  «      k(  sJ ‚y y )Nrb   r#   c               3   ó   •K  — ‰ –— y ­wr0   r-   rB   s   €r   rD   z4test_build_design_matrices_dtype.<locals>.iter_maker  rE   rF   r   r‰   Úfloat128)	r
   r6   r	   rŠ   r   Úfloat64Úfloat32Úhasattrr£   ©rD   ÚbuilderÚmatrC   s      @r   Ú test_build_design_matrices_dtyperª   þ   sÚ   ø€ Ø’Ð€Dôô %¤m°CÓ&8Ð%9¸:ÀqÓIÈ!ÑL€Gä
  	¨4Ó
0°Ñ
3€CØ�9‰9œŸ™¤§¡Ó,Ò,Ñ,ä
  	¨4´r·z±zÔ
BÀ1Ñ
E€CØ�9‰9œŸ™¤§¡Ó,Ò,Ñ,äŒr�:ÔÜ# W I¨t¼2¿;¹;ÔGÈÑJˆØ�y‰yœBŸH™H¤R§[¡[Ó1Ò1Ñ1Ð1ð r   c                  óÞ   ‡— dg d¢iŠˆfd„} t        t        d«      g| d«      d   }t        |g‰d¬«      d   }t        |t        «      sJ ‚t        j                  t        t        |g‰d¬«       y )Nrb   r#   c               3   ó   •K  — ‰ –— y ­wr0   r-   rB   s   €r   rD   z$test_return_type.<locals>.iter_maker  rE   rF   r   rM   ©Úreturn_typeÚasdfsadf)r
   r6   r	   Ú
isinstancer   r*   r+   r   r§   s      @r   Útest_return_typer±     so   ø€ Ø’Ð€Dôô %¤m°CÓ&8Ð%9¸:ÀqÓIÈ!ÑL€Gô    	¨4¸XÔ
FÀqÑ
I€CÜ�cœ<Ô(Ñ(ô ‡M�MÜÔ)¨G¨9°dÈ
ör   c            
      óÖ  ‡— g d¢g d¢dœŠˆfd„} t        t        dd«      g| d«      d   }t        |gdt        j                  d	gt        j
                  g d
¢t        ¬«      dœ«      d   }|j                  dk(  sJ ‚t        j                  |g d¢g«      sJ ‚t        |gdt        j                  d	gt        j
                  g d
¢t        ¬«      dœd¬«      d   }|j                  dk(  sJ ‚t        j                  |g d¢g«      sJ ‚ddl	m
}  |g ¬«      }t        |gdt        j                  gt        j
                  ddgt        ¬«      dœ|¬«      d   }|j                  dk(  sJ ‚t        j                  j                  |g d¢ddt        j                  gg«       t        j                  t        t        |gdt        j                  d	gt        j
                  g d
¢t        ¬«      dœd¬«       y )Nr#   )Úc1Úc2r³   ©rb   ra   c               3   ó   •K  — ‰ –— y ­wr0   r-   )Úinitial_datas   €r   rD   z"test_NA_action.<locals>.iter_maker&  s   øè ø€ ØÓùrF   rb   ra   r   ç      $@g      4@)r³   r´   Nr‰   )r   r$   )ç      ð?ç        r¸   Údrop)Ú	NA_action)ÚNAAction)ÚNA_typesr³   r´   )r!   r$   rº   r¹   Úraise)r
   r6   r	   r   ÚnanÚasarrayÚobjectr   Úarray_equalÚpatsy.missingr½   ÚtestingÚassert_array_equalr*   r+   r   )rD   r¨   r©   r½   r¼   r·   s        @r   Útest_NA_actionrÇ   #  s²  ø€ Ú"Ò);Ñ<€Lôô %¤m°C¸Ó&=Ð%>À
ÈAÓNÈqÑQ€Gô  Ø	ˆ	Ø”R—V‘V˜TÐ"¬¯©Ò4FÌfÔ)UÑVóð ñ	€Cð �9‰9˜ÒÑÜ�>‰>˜#Ò 0Ð1Ô2Ñ2ô  Ø	ˆ	Ø”R—V‘V˜TÐ"¬¯©Ò4FÌfÔ)UÑVØôð ñ		€Cð
 �9‰9˜ÒÑÜ�>‰>˜#Ò 0Ð1Ô2Ñ2õ 'ñ  "Ô%€IÜ
Ø	ˆ	Ø”R—V‘Vˆn¤2§:¡:¨t°T¨lÄ&Ô#IÑJØôð ñ		€Cð
 �9‰9˜ÒÑä‡J�J×!Ñ! #Ò(8¸3ÀÄRÇVÁVÐ:LÐ'MÔNô ‡M�MÜÜØ	ˆ	Ø”R—V‘V˜TÐ"¬¯©Ò4FÌfÔ)UÑVØör   c                  ó  ‡— dt         j                  dgg d¢dœŠˆfd„} t        t        dd«      g| d«      d   }|j                  g d	¢k(  sJ ‚t        |g‰«      \  }|j                  d
k(  sJ ‚t        j                  |g d¢g d¢g«      sJ ‚y )Nr¹   ç      @)r³   r´   Úc3rµ   c               3   ó   •K  — ‰ –— y ­wr0   r-   rB   s   €r   rD   z1test_NA_drop_preserves_levels.<locals>.iter_makerY  rE   rF   rb   ra   r   )zc[c1]zc[c2]zc[c3]rb   )r!   r"   )r¹   rº   rº   r¹   )rº   rº   r¹   rÉ   )r   rÀ   r
   r6   r:   r	   r   rÃ   )rD   r9   r©   rC   s      @r   Útest_NA_drop_preserves_levelsrÌ   T  s�   ø€ ð ”r—v‘v˜sÐ#Ò*<Ñ=€Dôô )¬-¸¸SÓ*AÐ)BÀJÐPQÓRÐSTÑU€Kà×#Ñ#Ò'GÒGÑGä" K =°$Ó7�F€Sà�9‰9˜ÒÑÜ�>‰>˜#Ò 4Ò6JÐKÔLÑLÐLr   c            
      óÚ  ‡— t         sy t        j                  g d¢g d¢g d¢dœg d¢¬«      Šˆfd„} t        t	        g «      g| d«      \  }t        t	        d	«      t	        d
«      g| d¬«      \  }}t        t	        d
d«      g| d¬«      \  }t        t	        d
d	«      g| d¬«      \  }t        j                  t        t        |g‰d
   ‰d   d d d…   dœ«       t        j                  t        t        ||g‰d
   ‰d	   d d d…   dœ«        G d„ dt        j                  «      }t        j                  t        t        |g |‰«      «       t        |g‰d
   g d¢dœ«      \  }t        j                  |ddgddgddgg«      sJ ‚t        ||g‰d¬«      \  }}	t        |t        j                  «      sJ ‚t        |	t        j                  «      sJ ‚t        j                  |dgdgdgg«      sJ ‚t        j                  |	dgdgdgg«      sJ ‚t        j                  |j                  g d¢«      sJ ‚t        j                  |	j                  g d¢«      sJ ‚t        j                  |j                  d	g«      sJ ‚t        j                  |	j                  d
g«      sJ ‚|j                  j                   d	gk(  sJ ‚|	j                  j                   d
gk(  sJ ‚|j                  j"                  d	gk(  sJ ‚|	j                  j"                  d
gk(  sJ ‚t        ||gg d¢‰d
   dœd¬«      \  }}	t        |t        j                  «      sJ ‚t        |	t        j                  «      sJ ‚t        j                  |d gd!gd"gg«      sJ ‚t        j                  |	dgdgdgg«      sJ ‚t        j                  |j                  g d¢«      sJ ‚t        j                  |	j                  g d¢«      sJ ‚t        j                  |j                  d	g«      sJ ‚t        j                  |	j                  d
g«      sJ ‚|j                  j                   d	gk(  sJ ‚|	j                  j                   d
gk(  sJ ‚|j                  j"                  d	gk(  sJ ‚|	j                  j"                  d
gk(  sJ ‚t        |gg d#¢‰d   dœd¬«      \  }
t        |
t        j                  «      sJ ‚t        j                  |
g d$¢g d%¢g d&¢g«      sJ ‚t        j                  |
j                  g d¢«      sJ ‚t        |gg d¢g d'¢dœd¬«      \  }t        |t        j                  «      sJ ‚t        j                  |d(d gd)d!gd*d"gg«      sJ ‚t        j                  |j                  g d+¢«      sJ ‚t        |g‰d¬«      \  }t        |t        j                  «      sJ ‚t        j                  |dgdgdgg«      sJ ‚|j                  j%                  t        j&                  g d¢«      «      sJ ‚dd l}|j*                  j                   }	 d,|j*                  _         t        j                  t        t        |gd
g d¢id¬«       ||j*                  _         t        |gd-t        j,                  d.gt        j.                  g d/¢t0        ¬0«      dœd1d¬2«      \  }	|	j                  j%                  t        j&                  dg«      «      sJ ‚y # ||j*                  _         w xY w)3Nr#   )r"   r&   r'   ©r„   r…   r„   )rb   ÚyrP   )r    é   é   )Úindexc               3   ó   •K  — ‰ –— y ­wr0   r-   rB   s   €r   rD   z+test_return_type_pandas.<locals>.iter_makern  rE   rF   r   rÏ   rb   rG   rP   éÿÿÿÿ©rb   rP   ©rb   rÏ   c                   ó   — e Zd Zd„ Zy)ú2test_return_type_pandas.<locals>.CheatingDataFramec                 ó˜   — |dk(  r&t         j                  j                  | |«      d d d…   S t         j                  j                  | |«      S )Nrb   rÔ   )r”   r•   Ú__getitem__)ÚselfÚkeys     r   rÚ   z>test_return_type_pandas.<locals>.CheatingDataFrame.__getitem__�  sD   € Ø�cŠzÜ×'Ñ'×3Ñ3°D¸#Ó>¹tÀ¸tÑDÐDä×'Ñ'×3Ñ3°D¸#Ó>Ð>r   N)Ú__name__Ú
__module__Ú__qualname__rÚ   r-   r   r   ÚCheatingDataFramerØ   Ž  s   „ ó	?r   rà   )é(   é2   é<   r   rá   r!   râ   r$   rã   Ú	dataframer­   r"   r&   r'   )r(   é   é	   )rÏ   rb   r(   rå   ræ   )rÔ   éþÿÿÿéýÿÿÿ)r   r   rÔ   )r   r   rç   )r   r   rè   )r    é   é   r    ré   rê   )r   r   r!   Fr¹   rÉ   )Nr…   r„   r‰   r»   )r¼   r®   )r   r”   r•   r
   r6   r*   r+   r   r	   r   r\   r°   rÃ   rÒ   Úcolumnsr9   r:   Ú
term_namesÚequalsÚIndexÚpatsy.buildÚbuildrÀ   rÁ   rÂ   )rD   Úint_builderÚ	y_builderÚ	x_builderÚx_a_builderÚx_y_builderrà   r©   Úy_dfÚx_dfÚx_a_dfÚx_y_dfÚint_dfÚpatsyÚ
had_pandasrC   s                  @r   Útest_return_type_pandasrý   f  sç  ø€ ÝØä×ÑÚšiÒ.@ÑAÊô€Dôô ,¬]¸2Ó->Ð,?ÀÈQÓO�N€[Ü3Ü	�sÓ	œ]¨3Ó/Ð0°*ÀqôÑ€Y�	ô ,Ü	�s˜CÓ	 Ð! :¸ô�N€[ô ,Ü	�s˜CÓ	 Ð! :¸ô�N€[ô
 ‡M�MÜÜØ	ˆØ�3‰i˜d 3™i©¨"¨™oÑ.ô	ô ‡M�MÜÜØ	�IÐØ�3‰i˜d 3™i©¨"¨™oÑ.ô	ô?œF×,Ñ,ô ?ô ‡M�MÜÔ)¨I¨;Ñ8IÈ$Ó8Oôô
 # K =¸¸S¹	ÊÑ2UÓV�F€SÜ�;‰;�s˜a ˜W q¨" g°°2¨wÐ7Ô8Ñ8ô 'Ø	�IÐ °+ô�J€Dˆ$ô �dœF×,Ñ,Ô-Ñ-Ü�dœF×,Ñ,Ô-Ñ-Ü�>‰>˜$ !  q c¨A¨3 Ô0Ñ0Ü�>‰>˜$ !  q c¨A¨3 Ô0Ñ0Ü�>‰>˜$Ÿ*™*¢lÔ3Ñ3Ü�>‰>˜$Ÿ*™*¢lÔ3Ñ3Ü�>‰>˜$Ÿ,™,¨¨Ô.Ñ.Ü�>‰>˜$Ÿ,™,¨¨Ô.Ñ.Ø×Ñ×(Ñ(¨S¨EÒ1Ñ1Ø×Ñ×(Ñ(¨S¨EÒ1Ñ1Ø×Ñ×&Ñ&¨3¨%Ò/Ñ/Ø×Ñ×&Ñ&¨3¨%Ò/Ñ/ô 'Ø	�IÐÚ˜d 3™iÑ(Øô�J€Dˆ$ô
 �dœF×,Ñ,Ô-Ñ-Ü�dœF×,Ñ,Ô-Ñ-Ü�>‰>˜$ !  q c¨A¨3 Ô0Ñ0Ü�>‰>˜$ !  q c¨A¨3 Ô0Ñ0Ü�>‰>˜$Ÿ*™*¢lÔ3Ñ3Ü�>‰>˜$Ÿ*™*¢lÔ3Ñ3Ü�>‰>˜$Ÿ,™,¨¨Ô.Ñ.Ü�>‰>˜$Ÿ,™,¨¨Ô.Ñ.Ø×Ñ×(Ñ(¨S¨EÒ1Ñ1Ø×Ñ×(Ñ(¨S¨EÒ1Ñ1Ø×Ñ×&Ñ&¨3¨%Ò/Ñ/Ø×Ñ×&Ñ&¨3¨%Ò/Ñ/ä%Ø	ˆš\°°S±	Ñ:Èô�I€Vô �fœf×.Ñ.Ô/Ñ/Ü�>‰>˜&¢:ªzº:Ð"FÔGÑGÜ�>‰>˜&Ÿ,™,ªÔ5Ñ5ô &Ø	ˆšYª\Ñ:Èô�I€Vô �fœf×.Ñ.Ô/Ñ/Ü�>‰>˜& B¨ 7¨R°¨G°b¸!°WÐ"=Ô>Ñ>Ü�>‰>˜&Ÿ,™,ª	Ô2Ñ2ô & { m°TÀ{ÔS�I€VÜ�fœf×.Ñ.Ô/Ñ/Ü�>‰>˜& A 3¨¨¨a¨S /Ô2Ñ2Ø�<‰<×ÑœvŸ|™|ªLÓ9Ô:Ñ:ãà—‘×(Ñ(€Jð-Ø"'ˆ�‰Ôä�‰ÜÜ!ØˆKØ’)ÐØ#õ	
ð #-ˆ�‰Ôä#Ø	ˆØ”B—F‘F˜CÐ ¤r§z¡zÒ2DÌFÔ'SÑTØØô	�G€Tð �:‰:×ÑœVŸ\™\¨1¨#Ó.Ô/Ñ/Ð/øð #-ˆ�‰Õús   Ø8[ Û[*c                  ój  ‡— g d¢g d¢ft        g d¢g d¢¬«      t        g d¢g d¢¬«      fdgdgdggddgddgddggfg d	¢g d
¢g d¢gddgddgddggfg} g d¢g d¢fg d¢t        g d¢«      fg d¢t        g d¢«      fg d¢g d¢fg}g d¢g d¢fg}t        dg«      Šˆfd„}ˆfd„}| D ])  \  }} |||«        |||«        |||«        |||«       Œ+ |D ]  \  }} |||«        |||«       Œ |D ]  \  }} |||«        |||«       Œ t        j                  t        t
        g d¢g d¢dœddgdgg«       y )Nr#   )TFTr`   )ra   rQ   rP   )Úlevelsr   r!   r$   )r   r   r   )r!   r!   r!   )r$   r$   r$   )rP   rQ   Údrb   c                 ó”   •‡ ‡— ˆ ˆfd„}	 t        ‰g|d«      }t        |d‰ i«       t        |d‰i«       t        ‚# t        $ r Y y w xY w)Nc               3   ó&   •K  — d‰ i–— d‰i–— y ­w©Nrb   r-   )Údata1Údata2s   €€r   rD   z=test_data_mismatch.<locals>.t_incremental.<locals>.iter_maker  s   øè ø€ Ø˜�,ÒØ˜�,Óùs   ƒr   rb   )r
   r	   r,   r   ©r  r  rD   Úbuildersr>   s   ``  €r   Út_incrementalz)test_data_mismatch.<locals>.t_incremental  sU   ú€ õ	ð	!Ü-¨x¨j¸*ÀaÓHˆHÜ! (¨S°%¨LÔ9Ü! (¨S°%¨LÔ9ô !Ð øô ò 	Ùð	ús   ‹*; »	AÁAc                 ór   •‡ — ˆ fd„}t        ‰g|d«      }t        j                  t        t        |d|i«       y )Nc               3   ó   •K  — d‰ i–— y ­wr  r-   ©r  s   €r   rD   z?test_data_mismatch.<locals>.t_setup_predict.<locals>.iter_maker  s   øè ø€ Ø˜�,Óùs   ƒr   rb   )r
   r*   r+   r   r	   r  s   `   €r   Út_setup_predictz+test_data_mismatch.<locals>.t_setup_predict  s1   ù€ ô	ô *¨8¨*°jÀ!ÓDˆÜ�‰”jÔ"7¸ÀCÈÀ<ÕPr   r†   rÖ   rÏ   )r   r6   r*   r+   r   rN   )Útest_cases_twowayÚtest_cases_onewayÚsetup_predict_onlyr  r  rP   rQ   r>   s          @r   Útest_data_mismatchr  ñ  s�  ø€ ò 
Ò'Ð(äŠo¢oÔ6ÜŠo¢oÔ6ð	
ð
 ˆ#�ˆs�Q�Cˆ˜A˜q˜6 A q 6¨A¨q¨6Ð2Ð3Ú
’Y¢	Ð	*¨a°¨V°a¸°V¸aÀ¸VÐ,DÐEð
Ðò 
’OÐ$Ú	”A’oÓ&Ð'Ú	œa¢Ó0Ð1Ú	šoÐ.ð	Ðò 
š/Ð*ð	Ðô ˜c˜UÓ#€Hô!ôQð "ò ‰ˆˆ1Ù�a˜ÔÙ�a˜ÔÙ˜˜1ÔÙ˜˜1Õð	ð
 "ò ‰ˆˆ1Ù�a˜ÔÙ˜˜1Õðð #ò ‰ˆˆ1Ù˜˜1ÔÙ˜˜1Õðô ‡M�MÜ”K¢y²|Ñ!DÀaÈ3È%ÐRUÐQVÈõr   c                  ó¨  ‡	— dg d¢iŠ	ˆ	fd„} t        t        «       g| d«      d   }t        j                  t        t
        |g‰	«       t        t        g «      g| d¬«      d   }t        j                  t        t
        |g‰	«       t        j                  t        t
        ||g‰	«       t        rSt        ||gt        j                  ‰	«      «      \  }}t        j                  |dgdgdgg«      sJ ‚|j                  dk(  sJ ‚t        dg«      }t        |t        «       g| d¬«      }t        |‰	«      \  }}t        j                  |dgdgd	gg«      sJ ‚|j                  dk(  sJ ‚t        |t        g «      g| d¬«      }t        |‰	«      \  }}t        |‰	«      \  }}t        j                  |dgdgd	gg«      sJ ‚t        j                  |dgdgdgg«      sJ ‚y )
Nrb   r#   c               3   ó   •K  — ‰ –— y ­wr0   r-   rB   s   €r   rD   z1test_data_independent_builder.<locals>.iter_maker4  rE   rF   r   rG   r   )r$   r   r!   r$   )r
   r6   r*   r+   r   r	   r   r”   r•   r   r\   r   )
rD   Únull_builderÚintercept_builderÚint_mÚnull_mÚ
x_termlistr  Úx_mÚintercept_mrC   s
            @r   Útest_data_independent_builderr  1  sÍ  ø€ Ø’Ð€Dôô *¬=«?Ð*;¸ZÈÓKÈAÑN€LÜ
‡M�M”*Ô3°l°^ÀTÔJä.Ü	�rÓ	Ð˜Z°!ôàñ	Ðô ‡M�M”*Ô3Ð6GÐ5HÈ$ÔOä
‡M�MÜÔ)¨LÐ:KÐ+LÈdôõ
 Ü-Ø Ð-¬v×/?Ñ/?ÀÓ/Eó
‰ˆˆvô �{‰{˜5 A 3¨¨¨a¨S /Ô2Ñ2Ø�|‰|˜vÒ%Ñ%ô  ˜uÓ%€Jä%Ø	”]“_Ð% z¸Aô€Hô (¨°$Ó7�K€CˆÜ�;‰;�s˜a˜S 1 #¨ s˜OÔ,Ñ,Ø�<‰<˜6Ò!Ñ!ä%Ø	”] 2Ó&Ð'¨¸aô€Hô (¨°$Ó7�K€CˆÜ,¨X°tÓ<Ñ€CˆÜ�;‰;�s˜a˜S 1 #¨ s˜OÔ,Ñ,Ü�;‰;�{ a S¨1¨#°¨s OÔ4Ñ4Ð4r   c                  óR  ‡— g d¢g d¢dœŠˆfd„} t        dg«      }t        ddg«      }t        ||g| d¬«      }t        |‰«      \  }}t        |d	|dg¬
«       t	        j
                  |d	gdgdgg«      sJ ‚t        |d|ddg¬
«       t	        j
                  |d	dgddgddgg«      sJ ‚y )Nr#   rÎ   rÕ   c               3   ó   •K  — ‰ –— y ­wr0   r-   rB   s   €r   rD   z4test_same_factor_in_two_matrices.<locals>.iter_makerg  rE   rF   rb   rP   r   rG   r   rI   r!   r$   zx:a[a1]zx:a[a2])r6   r
   r	   r?   r   r\   )rD   Út1Út2r  Úm1Úm2rC   s         @r   Ú test_same_factor_in_two_matricesr!  d  s¸   ø€ ÚÒ!3Ñ4€Dôô 
˜�uÓ	€BÜ	˜˜S�zÓ	"€BÜ% r¨2 h°
ÀQÔG€HÜ" 8¨TÓ2�F€BˆÜ˜˜A˜r°°Õ6Ü�;‰;�r˜Q˜C !  q c˜?Ô+Ñ+Ü˜˜A˜r°¸IÐ0FÕGÜ�;‰;�r˜Q ˜F Q¨ F¨Q°¨FÐ3Ô4Ñ4Ð4r   c                  ór   ‡— dg d¢iŠˆfd„} t        j                  t        t        t	        d«      g| d«       y )Nrb   r#   c               3   ó   •K  — ‰ –— y ­wr0   r-   rB   s   €r   rD   z.test_eval_env_type_builder.<locals>.iter_makerw  rE   rF   Úfoo)r*   r+   Ú	TypeErrorr
   r6   )rD   rC   s    @r   Útest_eval_env_type_builderr&  t  s4   ø€ Ø’Ð€Dôô ‡M�MÜÔ)¬M¸#Ó,>Ð+?ÀÈUõr   c                  óÊ   — dg d¢i} dt        g d¢«      i}| |g}t        r*dt        j                  g d¢«      i}|j	                  |«       d„ }|D ]  }|D ]  } |||«       Œ Œ y )NrP   rÎ   )r…   r„   r…   )r„   r…   r…   c                 óZ   ‡ — ˆ fd„}t        t        dg«      g|d¬«      }t        ||«       y )Nc               3   ó   •K  — ‰ –— y ­wr0   r-   r  s   €r   rD   z/test_categorical.<locals>.t.<locals>.iter_makerˆ  s   øè ø€ Ø‹KùrF   rP   r   rG   )r
   r6   r	   )r  r  rD   r  s   `   r   r~   ztest_categorical.<locals>.t‡  s1   ø€ ô	ô *Ü˜C˜5Ó!Ð" J¸ô
ˆô 	˜h¨Õ.r   )r   r   r”   ÚCategoricalr1   )Údata_stringsÚ
data_categr�   Údata_pandasr~   r  r  s          r   Útest_categoricalr.    sz   € ØÒ+Ð,€LØ”qÒ+Ó,Ð-€JØ˜:Ð&€EÝØœF×.Ñ.Ò/AÓBÐCˆØ�‰�[Ô!ò/ð ò ˆØò 	ˆEÙˆe�U�Oñ	ñr   c                  óØ  — ddl m} m} g d¢}t        dt	        |«      iddggg d¢¬«      }t        j                  |g d¢g d	¢g d¢g d
¢g«      sJ ‚| |«       fD ]E  }t        dt	        ||«      iddggg d¢¬«      }t        j                  |g d¢g d¢g d¢g d¢g«      rŒEJ ‚ t        dt	        | |d¬«      «      iddggg d¢¬«      }t        j                  |g d¢g d¢g d¢g d¢g«      sJ ‚t        dt	        |«      idg dggg d¢¬«      }t        j                  |g d¢g d¢g d¢g d¢g«      sJ ‚| |«       fD ]F  }t        dt	        ||«      idg dggg d¢¬«      }t        j                  |g d¢g d¢g d¢g d¢g«      rŒFJ ‚ t        dt	        | |d¬«      «      idg dggg d¢¬«      }t        j                  |g d¢g d¢g d¢g d¢g«      sJ ‚t        dt	        |ddgddgddgg«      iddggddg¬«      }t        j                  |ddgddgddgddgg«      sJ ‚t        dt	        | | ddgddgddggddg«      «      iddggddg¬«      }t        j                  |ddgddgddgddgg«      sJ ‚y ) Nr   )ÚContrastMatrixÚSum)r„   Úa3r„   r…   rP   r$   )rT   rU   za[a3]rI   )r   r   r   )r   r   r   )r   r   r   )úa[mean]úa[S.a1]úa[S.a2])r   r   r   )r   rÔ   rÔ   )r   r   r   )Úomit)r3  r5  úa[S.a3])rV   rW   za[T.a3])rV   r4  r5  )rV   r5  r7  r(   rê   r!   é   rå   rÔ   z
a[custom0]z
a[custom1]z[foo]z[bar]za[foo]za[bar])Úpatsy.contrastsr0  r1  rN   r   r   r\   )r0  r1  Úvaluesr   r   s        r   Útest_contrastr;  •  s¼  € ß3â%€Fô 	Ø	Œa�‹iÐ˜!˜s˜e˜WÒ3Nô	€Aô �;‰;�qš9¢i²ºIÐFÔGÑGà‘3“5ˆ\ò NˆÜØ”!�F˜A“,ÐØØˆUˆGÚ:ô	
ˆô �{‰{˜1šyª+²yÂ)ÐLÕMÑMðNô 	Ø	Œa�™ œÓ$Ð%Ø	Ø
ˆˆÚ6ô		€Aô �;‰;�qš;ª	²;Â	ÐJÔKÑKô 	Ø	Œa�‹iÐØ	Ø	ˆcˆUˆÚ8ô		€Aô �;‰;�qš9¢i²ºIÐFÔGÑGà‘3“5ˆ\ò NˆÜØ”!�F˜A“,ÐØØ�#�ˆKÚ<ô	
ˆô �{‰{˜1šyª+²yÂ)ÐLÕMÑMðNô 	Ø	Œa�™ œÓ$Ð%Ø	Ø	ˆcˆUˆÚ8ô		€Aô �;‰;�qš;ª	²;Â	ÐJÔKÑKô 	Ø	Œa�˜!˜R˜ 1 b '¨A¨r¨7Ð3Ó4Ð5Ø	Ø
ˆˆØ" LÐ1ô		€Aô �;‰;�q˜A˜r˜7 Q¨ G¨a°¨W°q¸"°gÐ>Ô?Ñ?äà”Ø™¨¨B¨°!°R°¸1¸b¸'Ð'BÀWÈgÐDVÓWóð	
ð
 	
Ø
ˆˆØ Ð)ô		€Aô �;‰;�q˜A˜r˜7 Q¨ G¨a°¨W°q¸"°gÐ>Ô?Ñ?Ð?r   c                  ó’  ‡‡‡— ddgddgddggddgd	œŠt        d
dd«      } ˆfd„}t        | g|d«      d   Št        ‰g‰«      d   Šˆˆˆfd„} |dg d	¢t        d «      «        |g d	¢g d	¢t        d «      «        || g d	¢t        d «      «        || d   d| d   gg d	¢t        d «      «        |dd
dgddg«        |d
dgd
dgddg«        || d   | d   gd
dgddg«        || d   dgd
dgddg«        |dd
dgddg«        |dd
gd
dgddg«        || d   | d   gd
dgddg«        || d   d
gd
dgddg«        |ddgddg«        |dgdgddg«        || d   gdgddg«       t	        j
                  t        ‰j                  d«       t	        j
                  t        ‰j                  d«       t	        j
                  t        ‰j                  dg«       t	        j
                  t        ‰j                  t        dg«      g«       t        g d¢«      }|j                  ddg«      }|j                  ddgk(  sJ ‚|j                  �J ‚y )Nr   r!   gÍÌÌÌÌÌ@gš™™™™™	@gffffff@gÍÌÌÌÌÌ@r&   r'   )rb   rÏ   Úzrb   rÏ   r=  c               3   ó   •K  — ‰ –— y ­wr0   r-   )Úall_datas   €r   rD   z*test_DesignInfo_subset.<locals>.iter_makerï  s   øè ø€ Ø‹ùrF   r   c                 ó  •— ‰j                  | «      }i }|D ]
  }‰	|   ||<   Œ t        |g|«      d   }‰
d d …|f   }t        | t        «      s#t	        | «      t	        |j
                  «      k(  sJ ‚t        j                  ||«      sJ ‚y )Nr   )rk   r	   r°   rŽ   r[   r3   r   rÃ   )Úwhich_termsÚ	variablesrë   Úsub_design_infoÚsub_dataÚvariableÚ
sub_matrixÚsub_full_matrixÚall_builderr?  Úfull_matrixs           €€€r   r~   z!test_DesignInfo_subset.<locals>.tõ  s‘   ø€ Ø%×,Ñ,¨[Ó9ˆØˆØ!ò 	4ˆHØ!)¨(Ñ!3ˆH�XÒð	4ä*¨OÐ+<¸hÓGÈÑJˆ
Ø%¢a¨ jÑ1ˆÜ˜+¤sÔ+Ü�{Ó#¤s¨?×+@Ñ+@Ó'AÒAÑAÜ�~‰~˜j¨/Ô:Ñ:Ð:r   z~ 0 + x + y + zz~ 0 + x + zr$   z~ 0 + z + xz~ 0 + yza ~ az~ asdfÚasdfr`   ra   rP   )r6   r
   r	   Úslicer*   r+   r   rk   ÚKeyErrorr   r   r:   r3   )rs   rD   r~   Úmin_diÚmin_di_subsetrH  r?  rI  s        @@@r   Útest_DesignInfo_subsetrO  ç  sv  ú€ ð
 ˜�V C¨ :°°S¨zÐ":À!ÀQÀÑH€HÜ˜c 3¨Ó,€Iôô )¨)¨°jÀ!ÓDÀQÑG€KÜ'¨¨°xÓ@ÀÑC€Kö	;ñ Ðš¬%°«+Ô6Ù‚o’¬¨d«Ô4Ù€i’¤%¨£+Ô.Ù€y��|�S˜) A™,Ð'ª¼%À»+ÔFá€m�c˜3�Z ! Q Ô(Ù€sˆC€j�3˜�*˜q !˜fÔ%Ù€y��|�Y˜q‘\Ð" S¨# J°°A°Ô7Ù€y��|�SÐ˜C ˜:¨¨1 vÔ.á€m�c˜3�Z ! Q Ô(Ù€sˆC€j�3˜�*˜q !˜fÔ%Ù€y��|�Y˜q‘\Ð" S¨# J°°A°Ô7Ù€y��|�SÐ˜C ˜:¨¨1 vÔ.á€i�#�˜˜A˜ÔÙ€s€eˆcˆU�Q˜�FÔÙ€y��|€n�s�e˜a ˜VÔ$ô ‡M�M”*˜k×0Ñ0°'Ô:ä
‡M�M”(˜K×.Ñ.°Ô9Ü
‡M�M”(˜K×.Ñ.°°Ô9Ü
‡M�M”(˜K×.Ñ.´°v°h³Ð0@ÔAô šÓ(€FØ—M‘M 3¨ *Ó-€MØ×%Ñ%¨#¨s¨Ò3Ñ3Ø×ÑÐ&Ñ&Ð&r   r0   ).Únumpyr   r*   rû   r   Ú
patsy.utilr   r   r   Ú
patsy.descr   r   rï   r	   r
   Úpatsy.categoricalr   Úpatsy.user_utilr   r   Úpatsy.design_infor   r   r”   r   r.   r6   r?   rN   r^   rc   r‚   Úslowr    rª   r±   rÇ   rÌ   rý   r  r  r!  r&  r.  r;  rO  r-   r   r   ú<module>rW     s­   ðó Û Ý ß VÑ Vß &ß EÝ ß 2ß 6áÛòòWòó(óò 6>òr3ò&99ðx #$Ð Ô ò%XòP2ò&ò$.òbMò$H0òV=ò@05òf5ò òò,O@ód7'r   