
    -ies                       S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKJr  SSKJrJr  SSKJrJrJr  SSKJr  SS	KJr  SS
KJr  SSKJrJrJrJr  SSK J!r!J"r"J#r#  SSK$J%r%  SSK&J'r'J(r(J)r)J*r*  SSK+J,r,J-r-   " S S\\5      r. " S S\5      r/ " S S\5      r0 " S S\5      r1 " S S\5      r2S r3S r4\Rj                  Rm                  SSS/5      S 5       r7\Rj                  Rm                  S S!S"/S S#/S$9\Rj                  Rm                  S%/ \Rp                  " S"S"/5      S"S"/// S&QS$9\Rj                  Rm                  S'S"S!/5      S( 5       5       5       r9S) r:S* r;\Rj                  Rm                  S+\,5      S, 5       r<S- r=\Rj                  Rm                  S+\,5      S. 5       r>S/ r?S0 r@S1 rAS2 rBS3 rC\Rj                  Rm                  S4S5S6/5      S7 5       rDS8 rES9 rFS: rGS; rHS< rIS= rJS> rKS? rLS@ rMSA rNSB rO\Rj                  Rm                  SCS// SDQSE/4S/SF/SE/4SG SH SE/4SI/SJ/SK/4/ SLQ/ SDQ/ SMQ4/5      SN 5       rP\Rj                  Rm                  SOS!S"/5      SP 5       rQ\Rj                  Rm                  SQS/SF/4\Rp                  " S/5      SF/4\R" SSF5      SF/4\Rp                  " S!S"/5      S"S!/4/5      SR 5       rS\Rj                  Rm                  SQS/SF/4\R" SSF5      SF/4\Rp                  " S!S"/5      S"S!/4SS/ST/4SUST/4\Rp                  " SS/5      ST/4\Rp                  " SS/\TSV9ST/4\R" SSS5      ST/4\R" SSSS5      ST/4/	5      SW 5       rU\Rj                  Rm                  SQS/SFSE/4\Rp                  " S/5      SFSE/4\R" SSF5      SFSE/4\Rp                  " / SLQ5      / SXQ4/5      SY 5       rVSZ rWS[ rX\Rj                  Rm                  S+\,5      S\ 5       rY\Rj                  Rm                  S+\,5      S] 5       rZS^ r[S_ r\\Rj                  Rm                  S`Sa/\" Sb\." 5       S/4Sc\." 5       SF/4/\/" 5       Sd9Se4\" Sb\." 5       S/4Sc\." 5       SF/4/S6Sd9Se4\" Sb\." 5       S/4ScS5SF/4/S6Sd9Sf4\" Sb\." 5       S/4ScS6SF/4/S6Sd9Se4\" Sb\." 5       S/4/S6Sd9Sf4\" Sb\." 5       S/4Sc\." 5       SF/4/S5Sd9Sg4\" Sb\." 5       S/4/S5Sd9Sh4/5      \Rj                  Rm                  SiSjSk/5      Sl 5       5       r]Sm r^Sn r_So r`Sp ra\Rj                  Rm                  Sq\R                  /\,Q5      Sr 5       rcSs rd\Rj                  Rm                  StSuSv/S\R                  S4SuSv/SS\TSw/4SuSv/S\f\g/S4Sx/S\TSw/S4Sv/S\g/S4Sv/S\gS4Sv/Sy\R                  /S4Su/S\f/S4Su/Sz\R                  /S4SvSx/S{SS4Sx/S|S\f/4/ S}\gS4/ S~QS\R                  \TSw/S4/5      S 5       rhS riS rjS rk\Rj                  Rm                  S/ \Rp                  " / \fSV9S // SQS$9S 5       rl\Rj                  Rm                  SSF/S S/S S"S!/S /5      S 5       rm\Rj                  Rm                  SSF/S S"S!/S /5      S 5       rn\Rj                  Rm                  S4S6\" 5       /5      S 5       roS rp\Rj                  Rm                  S4S6\" 5       /5      S 5       rq\Rj                  Rm                  S4S6\" 5       /5      S 5       rr\Rj                  Rm                  S/ SQ5      \Rj                  Rm                  S4\." 5       S6S5/5      S 5       5       rsS rtS ru " S S\.5      rv\Rj                  Rm                  SS\v" 5       SS/4SS6S/4/S6/ SQ4S\v" 5       SS/4SS6S/4/S5/ SQ4S\v" 5       S/4SS5S/4/S6/ SQ4S\v" SS/5      / SQ4/S6/ SQ4S\v" SS/5      S/4SS6S/4/S5/ SQ4S\v" \w" SE5       V s/ s H  n SU  3PM
     sn 5      S/4S\v" \w" SE5       V s/ s H  n SU  3PM
     sn 5      S/4/S6/ SQ4SS5S/4/S5/ 4S\v" 5       \R" SFS5      4/S5SS/4S\v" 5       S/4SS5\R" SS5      4/S6/ SQ4S\v" 5       SS/4SS6\R" SS5      4/S6/ SQ4S\v" 5       \R" SS5      4/S5SS/4S\v" 5       S/4SS5\R" SS5      4/S6SS/4S\v" 5       SS/4SS6\R" SS5      4/S6/ SQ4/5      S 5       rxS\yS\y4S jrzS\yS\y4S jr{\Rj                  Rm                  SS\v" 5       SS/4SS6S/4/S6\z/ SQ4S\v" 5       SS/4SS6S/4/S5S/ SQ4S\v" 5       SS/4SS6\R" SS5      4/S6\{/ SQ4/5      S 5       r|\Rj                  Rm                  SS\v" 5       SS/4SS6S/4/S6/ SQ4S\v" S/5      SS/4SS6S/4/S5SS/4S\v" 5       S/4SS5S/4/S6/ SQ4S\v" SS/5      / SQ4/S6/ SQ4S\v" SS/5      S/4SS6S/4/S5/ SQ4S\v" \w" SE5       V s/ s H  n SU  3PM
     sn 5      S/4S\v" \w" SE5       V s/ s H  n SU  3PM
     sn 5      S/4/S6/ SQ4SS5S/4/S5/ 4S\v" 5       \R" SFSE5      4SS5S/4/S6/ SQ4S\v" 5       S/4SS5\R" SS5      4/S6/ SQ4S\v" 5       SS/4SS6\R" SSE5      4/S5/ SQ4S\v" 5       \R" SS5      4SS5S/4/S6/ SQ4S\v" 5       S/4SS5\R" SS5      4/S6SS/4S\v" 5       SS/4SS6\R" SS5      4/S5/ SQ4S\v" 5       SS/4SS6\R" SS5      4/S5/ SQ4/5      S 5       r}\Rj                  Rm                  SS\v" 5       S/4SS6S/4/S5S4S\v" SS/5      S/4SS6S/4/S5S4S\v" S/5      S/4SS6S/4/S6S4S\v" S/5      S/4SS5S/4/S6S4S\v" SS/5      S/4SS6SS/4/S5S4S\v" S/5      S/4SS6S/4S\v" S/5      S/4/S6S4S\v" SS/5      S/4SS6S/4S\v" S/5      S/4/S6S4S\v" \w" S5       V s/ s H  n SU  3PM
     sn 5      S/4S\v" \w" S5       V s/ s H  n SU  3PM
     sn 5      S/4/S6S4S\v" SS/5      \R" SFSE5      4SS6S/4S\v" S/5      S/4/S6S4S\v" SS/5      S/4SS6\R" SSF5      4S\v" S/5      S/4/S6S4S\v" SS/5      \R" SS5      4SS6S/4S\v" S/5      S/4/S6S4S\v" SS/5      S/4SS6\R" SS5      4S\v" S/5      S/4/S6S4/5      S 5       r~\Rj                  Rm                  SS!S"/5      \Rj                  Rm                  S4S5S6/5      S 5       5       r\Rj                  Rm                  S4S5S6/5      \Rj                  Rm                  SkS!S"/5      S 5       5       r\Rj                  Rm                  S4S5S6/5      S 5       r " S S\5      r\Rj                  Rm                  S\" SS9SS/SS/4S5S/S/4S6SS/SS/4/5      S 5       r\Rj                  Rm                  S/ \Rp                  " S"S"/5      S"S"/// S&QS$9S 5       rS rS rS rS rS r\Rj                  Rm                  SSS /5      S 5       r\Rj                  Rm                  SS S/5      S 5       r\Rj                  Rm                  SS S/5      S 5       r\Rj                  GR                  \-" \GR                  5      \-" S5      :  SS9S 5       rS r\Rj                  Rm                  Si/ SQ5      S 5       r\Rj                  Rm                  Si/ SQ5      \" S!S9S 5       5       r\" S!S9S 5       r\Rj                  Rm                  Si/ SQ5      \" S!S9S 5       5       r\" S!S9S 5       r\" S!S9S 5       r\" S!S9S 5       rgs  sn f s  sn f s  sn f s  sn f s  sn f s  sn f )z
Test the ColumnTransformer.
    N)assert_allclosesparse)config_context)BaseEstimatorTransformerMixin)ColumnTransformermake_column_selectormake_column_transformer)NotFittedError)DictVectorizer)VarianceThreshold)FunctionTransformer
NormalizerOneHotEncoderStandardScaler)ConsumingTransformer	_Registrycheck_recorded_metadata_safe_indexing)_convert_containerassert_allclose_dense_sparseassert_almost_equalassert_array_equal)CSR_CONTAINERSparse_versionc                   (    \ rS rSrSS jrSS jrSrg)Trans.   Nc                     U $ N selfXys      `/var/www/html/venv/lib/python3.13/site-packages/sklearn/compose/tests/test_column_transformer.pyfit	Trans.fit/           c                     [        US5      (       a  UR                  5       $ [        USS5      S:X  a   [        R                  " U5      R
                  $ U$ )Nto_framendim      )hasattrr.   getattrnp
atleast_2dTr$   s      r(   	transformTrans.transform2   sF    1j!!::<1fa A%==#%%%r,   r#   r"   __name__
__module____qualname____firstlineno__r)   r7   __static_attributes__r#   r,   r(   r   r   .   s    r,   r   c                   $    \ rS rSrSS jrS rSrg)DoubleTrans<   Nc                     U $ r"   r#   r$   s      r(   r)   DoubleTrans.fit=   r+   r,   c                     SU-  $ )Nr0   r#   r%   r&   s     r(   r7   DoubleTrans.transform@   s    1ur,   r#   r"   r9   r#   r,   r(   r@   r@   <   s    r,   r@   c                   .    \ rS rSrS rSS jrSS jrSrg)SparseMatrixTransD   c                     Xl         g r"   csr_container)r%   rL   s     r(   __init__SparseMatrixTrans.__init__E   s    *r,   Nc                     U $ r"   r#   r$   s      r(   r)   SparseMatrixTrans.fitH   r+   r,   c                 b    [        U5      nU R                  [        R                  " X35      5      $ r"   )lenrL   r   eye)r%   r&   r'   	n_sampless       r(   r7   SparseMatrixTrans.transformK   s%    F	!!&**Y"BCCr,   rK   r"   r:   r;   r<   r=   rM   r)   r7   r>   r#   r,   r(   rH   rH   D   s    +Dr,   rH   c                   (    \ rS rSrSS jrSS jrSrg)	TransNo2DP   Nc                     U $ r"   r#   r$   s      r(   r)   TransNo2D.fitQ   r+   r,   c                     U$ r"   r#   r$   s      r(   r7   TransNo2D.transformT   s    r,   r#   r"   r9   r#   r,   r(   rX   rX   P   s    r,   rX   c                   (    \ rS rSrSS jrSS jrSrg)
TransRaiseX   Nc                     [        S5      eNspecific message
ValueErrorr$   s      r(   r)   TransRaise.fitY       +,,r,   c                     [        S5      erb   rd   r$   s      r(   r7   TransRaise.transform\   rg   r,   r#   r"   r9   r#   r,   r(   r_   r_   X   s    --r,   r_   c                    ^
 [         R                  " / SQ/ SQ/5      R                  n [         R                  " / SQ5      n[         R                  " / SQ5      nUR                  SS5      nU nSU4S/U4SS/U4[         R                  " SS/5      U4[	        SS5      U4[	        SS5      U4[         R                  " SS/5      U4SS/U4[         R                  " SS/5      U4SS/U4/
nU H  u  m
n[        S	[        5       T
4/S
S9n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        [        S	[        5       U
4S j4/S
S9n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        M     [        S[        5       S/4S[        5       S/4/5      n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        [        UR                  5      S:X  d   eSSS.n[        S[        5       S/4S[        5       S/4/US9n	[         R                  " US   U-  US   U-  /5      R                  n[        U	R                  U 5      U5        [        U	R                  U 5      R                  U 5      U5        [        U	R                  5      S:X  d   e[        S	[        5       SS/4/S	S0S9n	[        U	R                  U 5      SU-  5        [        U	R                  U 5      R                  U 5      SU-  5        [        U	R                  5      S:X  d   eg )Nr   r1   r0   r0         r1   r   r0   TFtransdrop	remainderc                    > T$ r"   r#   )x	selections    r(   <lambda>)test_column_transformer.<locals>.<lambda>       )r,   trans1trans2皙?
   rz   r{   transformer_weights)r4   arrayr6   reshapeslicer	   r   r   fit_transformr)   r7   rR   transformers_vstack)X_arrayX_res_first1DX_res_second1DX_res_first
X_res_bothcasesresctr   bothrv   s             @r(   test_column_transformerr   `   sA   hh	9-.00GHHY'MXXi(N''A.KJ 
K
k
Q	1a&	:&	q!k"	q!j!	4-	 +.
$	4,	,
z"E"  	3%'9 =>&Q2++G4c:266'?44W=sC uw 345
 	2++G4c:266'?44W=sC   
Xuw4x1#6NO	PBr''0*=rvvg009:Fr A%%% &)B7
EGaS	!Hegs#;</D )))M9)N:	

 a  t))'2C8txx(227;SAt!!"a'''
57QF	#$7C.D t))'2C*4DEtxx(227;S:=MNt!!"a'''r,   c                     [         R                  " / SQ/ SQ/5      R                  n S[        5       S/4S[        5       S/4/n[	        U5      n[	        [        U5      5      n[        UR                  U 5      UR                  U 5      5        [        UR                  U 5      R                  U 5      UR                  U 5      R                  U 5      5        g )Nrk   rl   rz   r   r{   r1   )
r4   r   r6   r   r	   tupler   r   r)   r7   )r   transformersct_with_listct_with_tuples       r(   4test_column_transformer_tuple_transformers_parameterr      s    hh	9-.00Guw,x1#.FGL$\2L%eL&9:M""7+]-H-H-Q !++G4'",,W5r,   constructor_name	dataframepolarsc                   ^^ U S:X  a  [         R                  " S5      mO[         R                  " U 5      m[        R                  " / SQ/ SQ/5      R                  n[        XSS/S9n[        R                  " / SQ5      R                  SS	5      nUnS/U4SS/U4[        SS5      U4S
/U4S
S	/U4[        R                  " S
S	/5      U4[        S
S	5      U4[        S
S5      U4[        R                  " SS/5      U4SS/U4/
nU S:X  a,  UR                  S
U4SU4TR                  SS/SS/S9U4/5        U H  u  mn[        S[        5       T4/SS9n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [        S[        5       U4S j4/SS9n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        M     [        S[        5       S/4S[        5       S/4/5      n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [!        UR"                  5      S:X  d   eUR"                  S   S
   S:w  d   e[        S[        5       S
/4S[        5       S	/4/5      n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [!        UR"                  5      S:X  d   eUR"                  S   S
   S:w  d   eSSS.n[        S[        5       S/4S[        5       S/4/US9n	[        R$                  " US   US   -  US   US   -  /5      R                  n[        U	R                  U5      U5        [        U	R                  U5      R                  U5      U5        [!        U	R"                  5      S:X  d   eU	R"                  S   S
   S:w  d   e[        S[        5       SS/4/SS0S9n	[        U	R                  U5      SU-  5        [        U	R                  U5      R                  U5      SU-  5        [!        U	R"                  5      S	:X  d   eU	R"                  S   S
   S:w  d   e[        S[        5       S
S	/4/SS0S9n	[        U	R                  U5      SU-  5        [        U	R                  U5      R                  U5      SU-  5        [!        U	R"                  5      S	:X  d   eU	R"                  S   S
   S:w  d   e " U4S jS[&        5      n
[        SU
" TR(                  S9SS/4/5      nUR                  U5        U S:X  Ga
  [        SU
" TR                  S9S4/SS9nUR                  U5        UR+                  5       nS	S
/Ul        [        S[        5       S
4/SS9n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [!        UR"                  5      S:X  d   eUR"                  S   S
   S:X  d   eUR"                  S   S	   S:X  d   e[        UR"                  S   S   S	/5        g g )Nr   pandasrk   rl   firstsecond)columns_namero   r1   r   r0   TFindexrp   rq   rr   c                    > T$ r"   r#   )r&   rv   s    r(   rw   3test_column_transformer_dataframe.<locals>.<lambda>   ry   r,   rz   r{   rs   r|   r}   r~   r   c                   6   > \ rS rSrS rSS jrSU 4S jjrSrg)6test_column_transformer_dataframe.<locals>.TransAsserti!  c                     Xl         g r"   expected_type_transform)r%   r   s     r(   rM   ?test_column_transformer_dataframe.<locals>.TransAssert.__init__"  s    +B(r,   Nc                     U $ r"   r#   r$   s      r(   r)   :test_column_transformer_dataframe.<locals>.TransAssert.fit%      Kr,   c                    > [        XR                  5      (       d   e[        UTR                  5      (       a  UR                  5       nU$ r"   )
isinstancer   Seriesr.   )r%   r&   r'   dataframe_libs      r(   r7   @test_column_transformer_dataframe.<locals>.TransAssert.transform(  s=    a!=!=>>>>!]1122JJLHr,   r   r"   rV   )r   s   r(   TransAssertr   !  s    	C		 	r,   r   r   )pytestimportorskipr4   r   r6   r   r   r   extendr   r	   r   r   r   r)   r7   rR   r   r   r   	DataFramecopycolumns)r   r   X_dfr   r   r   r   r   r   r   r   X_df2r   rv   s               @@r(   !test_column_transformer_dataframer      s   ;&++H5++,<=hh	9-.00G(0CD ((9%--b!4KJ
 K 
8	j)	w	!:. k
Q	1a&	:&	q!k"	q!j!	4-	 +.
$#E& ;& K +&!(($w>Q(R	
	
  	3%'9 =>&Q2++D137266$<11$7= uw 345
 	2++D137266$<11$7=   

EGgY	'(EGhZ)HI
B r''-z:rvvd|--d3Z@r A%%%B"k111	Xuw4x1#6NO	PBr''-z:rvvd|--d3Z@r A%%%B"k111 &)B7
EGgY	'(EGhZ)HI/D )))DM9)DN:	

 a  t))$/5txx~//5s;t!!"a'''b!!$333 
57Wh/	01QT~D t))$/z1ABtxx~//5sZ7GHt!!"a'''b!!$333
57QF	#$7C.D t))$/z1ABtxx~//5sZ7GHt!!"a'''b!!$333m  
 M4K4KL(#	

B T;&  8L8LM 	
 	
 		A%'1 56&I2++E2K@266%=2259;G2##$)))#A&+555#A&&0002++B/2QC87 'r,   r   TFnumpy)idscolumn_selection)listboolbool_intcallable_columnc                 0  ^ [         R                  " / SQ/ SQ/5      R                  nUnU (       a)  [        R                  " S5      nUR                  USS/S9nOUnU(       a  U4S jnOTn[        S[        5       S	S
/4S[        5       U4/5      n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [        UR                  5      S:X  d   e[        UR                  S
   S
   [        5      (       d   e[        S[        5       U4S[        5       S	S
/4/5      n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [        UR                  5      S:X  d   e[        UR                  S	   S
   [        5      (       d   e[        S[        5       U4/SS9n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [        UR                  5      S:X  d   e[        UR                  S	   S
   [        5      (       d   e[         R                  " / / / /5      n	[        S[        5       U4/SS9n[        UR                  U5      U	5        [        UR                  U5      R                  U5      U	5        [        UR                  5      S:X  d   e[        UR                  S	   S
   [        5      (       d   eg )Nrk   rl   r   r   r   r   c                    > T$ r"   r#   )r&   r   s    r(   rw   7test_column_transformer_empty_columns.<locals>.<lambda>k  s    +r,   rz   r   r1   r{   r0   rp   passthroughrr   rq   )r4   r   r6   r   r   r   r	   r   r_   r   r   r)   r7   rR   r   r   )
r   r   r   r   r   pdr&   columnr   fixtures
    `        r(   %test_column_transformer_empty_columnsr   W  s    hh	9-.00GJ  *LL7H*=L>+!	
EGaV	$xv&FG
B r''*J7rvvay**1-z:r A%%%b&&q)!,j9999	
JL&	)Heg1v+FG
B r''*J7rvvay**1-z:r A%%%b&&q)!,j9999	WjlF;<	VBr''*J7rvvay**1-z:r A%%%b&&q)!,j9999hhB|$G	WjlF;<	OBr''*G4rvvay**1-w7r A%%%b&&q)!,j9999r,   c                     [         R                  " S5      R                  SS5      n [        S[	        5       S/4S[	        5       S/4/5      nUR                  U 5      nUR                  [        SS5      [        SS5      [        SS5      S.:X  d   e[        US S 2S/4   US S 2UR                  S   4   5        [        US S 2S/4   US S 2UR                  S   4   5        [        S	[	        5       SS/4/S	S
0S9nUR                  U 5      nUR                  [        SS5      [        SS5      S.:X  d   e[        US S 2SS/4   US S 2UR                  S	   4   5        [        US S 2/ 4   US S 2UR                  S   4   5        [        S[	        5       SS/4S[        5       / 4/5      nUR                  U 5      nUR                  [        SS5      [        SS5      [        SS5      S.:X  d   e[        US S 2SS/4   US S 2UR                  S   4   5        [        US S 2/ 4   US S 2UR                  S   4   5        [        US S 2/ 4   US S 2UR                  S   4   5        [        S	[        5       / 4/SS9nUR                  U 5      nUR                  [        SS5      [        SS5      S.:X  d   e[        US S 2/ 4   US S 2UR                  S	   4   5        [        US S 2SS/4   US S 2UR                  S   4   5        g )Nrn      r0   rz   r   r{   r1   rz   r{   rs   rp   r|   r   )rp   rs   rs   r   rr   )
r4   aranger   r	   r   r   output_indices_r   r   r_   )r   r   X_transs      r(   &test_column_transformer_output_indicesr     s   iil""1a(G	Xuw4x1#6NO	PBw'G1+1+1a["   
 wq1#v23E3Eh3O0O(PQwq1#v23E3Eh3O0O(PQ 

57QF	#$7C.
B w'G5A;U1a[!QQQQwq1a&y)71b6H6H6Q3Q+RSwq"u~wq"2D2D[2Q/Q'RS 
XuwA7(JLRT9UV	WBw'G1+1+1a["   
 wq1a&y)71b6H6H6R3R+STwq"u~wq"2D2DX2N/N'OPwq"u~wq"2D2D[2Q/Q'RS	WjlB78M	RBw'G5A;U1a[!QQQQwq"u~wq"2D2DW2M/M'NOwq1a&y)71b6H6H6U3U+VWr,   c                      [         R                  " S5      n U R                  [        R                  " S5      R                  SS5      SS/S9n[        S[        5       S/4S	[        5       S/4/5      nUR                  U5      nUR                  [        S
S5      [        SS5      [        S
S
5      S.:X  d   e[        US S 2S
/4   US S 2UR                  S   4   5        [        US S 2S/4   US S 2UR                  S	   4   5        [        US S 2/ 4   US S 2UR                  S   4   5        [        S[        5       S
/4S	[        5       S/4/5      nUR                  U5      nUR                  [        S
S5      [        SS5      [        S
S
5      S.:X  d   e[        US S 2S
/4   US S 2UR                  S   4   5        [        US S 2S/4   US S 2UR                  S	   4   5        [        US S 2/ 4   US S 2UR                  S   4   5        g )Nr   rn   r   r0   r   r   r   rz   r{   r   r1   r   rs   )r   r   r   r4   r   r   r	   r   r   r   r   r   )r   r   r   r   s       r(   )test_column_transformer_output_indices_dfr     s   			X	&B<<		!,,Q2Wh<O<PD	
EGgY	'(EGhZ)HI
B t$G1+1+1a["   
 wq1#v23E3Eh3O0O(PQwq1#v23E3Eh3O0O(PQwq"u~wq"2D2D[2Q/Q'RS	Xuw4x1#6NO	PBt$G1+1+1a["   
 wq1#v23E3Eh3O0O(PQwq1#v23E3Eh3O0O(PQwq"u~wq"2D2D[2Q/Q'RSr,   rL   c                    U " [         R                  " SS5      5      nUS S 2S/4   nUnSS/[        SS5      4 H  nSU4SU44 H  u  pV[        S[	        5       U4/US	S
9n[         R
                  " UR                  U5      5      (       d   e[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        M     M     SS/[        SS5      4 H  n[        S[	        5       U4/S	S9n[         R
                  " UR                  U5      5      (       d   e[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        M     g )Nr   r0   r   )r   r1   rq   r   rp   皙?rs   sparse_thresholdr   )
r   rS   r   r	   r   issparser   r   r)   r7   )rL   X_sparser   r   colrs   r   r   s           r(   $test_column_transformer_sparse_arrayr     s\   VZZ1-.H 1qc6"KJqc5A;' &4}j6QRNI"57C()YQTB ??2#3#3H#=>>>>()9)9()CSI()9)C)CH)MsS S ( Aa$%'3 783Or//9::::$R%5%5h%?L$RVVH%5%?%?%I:V	 %r,   c                  L   S[        S5      S// SQ/n [        R                  " S[        S5      SS// SQ/5      n[        S[	        5       SS/4S[        5       S	/4/5      n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        g )
Nr1   nana)r   r   br   )ro   r   r   r1   	numericalcategoricalr0   )
floatr4   r   r	   r   r   r   r   r)   r7   )X_listexpected_resultr   s      r(   test_column_transformer_listr     s    %,$k2Fhhea#	
O 
.*QF3MOaS1	

B r''/Arvvf~//7Ir,   c                    [         R                  " / SQ/ SQ/5      R                  n[        S[	        5       S/4S[        U 5      S4/SS9nUR                  U5        UR                  U5      n[        R                  " U5      (       d   eUR                  UR                  S   UR                  S   S-   4:X  d   e[        UR                  5       S S 2SS 24   [         R                  " UR                  S   5      5        [        UR                  5      S	:X  d   eUR                  S
   S   S:w  d   e[        S[	        5       S/4S[        U 5      S4/SS9nUR                  U5        UR                  U5      n[        R                  " U5      (       a   eUR                  UR                  S   UR                  S   S-   4:X  d   e[        US S 2SS 24   [         R                  " UR                  S   5      5        g )Nrk   rl   rz   r   r{   r1   r   r   r0   ro   rs   r|   )r4   r   r6   r	   r   rH   r)   r7   r   r   shaper   toarrayrS   rR   r   )rL   r   	col_transr   s       r(   'test_column_transformer_sparse_stackingr     s   hh	9-.00G!
EGaS	!H.?.NPQ#RSI MM'!!'*G??7####==W]]1-w}}Q/?!/CDDDDw(AB/a8H1IJy&&'1,,,""2&q)[888!
EGaS	!H.?.NPQ#RSI MM'!!'*Gw''''==W]]1-w}}Q/?!/CDDDDwq!"u~rvvgmmA.>'?@r,   c                     [         R                  " / SQ/ SQ/SS9n [        [        5       S/4SSS/4S	S
9nUR	                  U 5      nUR
                  S:X  d   e[        UR                  5       [         R                  " / SQ/ SQ/5      5        [        [        5       S/4SS/4S	S
9n[        R                  " [        SS9   UR	                  U 5        S S S 5        g ! , (       d  f       g = f)N)r   r1   T)r   r0   FOdtyper   r   r1   r0         ?r   csr)r1   r   r1   r1   )r   r1   r0   r   z'For a sparse output, all columns shouldmatch)r4   r   r   r   r   formatr   r   r   raisesre   )dfr   r   s      r(   )test_column_transformer_mixed_cols_sparser     s    	>?33	?B	 	1#A 7#
B r"G>>U"""w("((L,3O*PQ	 	1# 4s
B 
z)R	S 	 
T	S	Ss   ?C
C(c            	         [         R                  " SS/SS//[        S9R                  n [	        S[        5       S/4S[        5       S	/4/S
S9nUR                  U 5      n[        R                  " U5      (       a   eUR                  (       a   eS Hf  n[	        S[        SS9S/4S[        SS9S	/4/US9nUR                  U 5      n[        R                  " U5      (       d   eUR                  (       a  Mf   e   S Hf  n[	        S[        SS9S/4S[        SS9S	/4/US9nUR                  U 5      n[        R                  " U5      (       a   eUR                  (       d  Mf   e   S Hf  n[	        S[        SS9S/4S[        SS9S	/4/US9nUR                  U 5      n[        R                  " U5      (       a   eUR                  (       d  Mf   e   g )Nr   r   ABr   rz   r   r{   r1   皙?r   )g㈵ ?r1   T)sparse_outputF)g      ?r   )gQ?r   r1   )
r4   r   objectr6   r	   r   r   r   r   sparse_output_)r   r   r   thress       r(   (test_column_transformer_sparse_thresholdr   3  s   hhc
S#J/v>@@G "
MOaS	)Hmos+KLI 
!
!'
*Cs####'''' %=t<qcB=u=sC #
	 %%g.s####'''''  %=t<qcB=u=sC #
	 %%g.??3''''+++++  %=u=sC=u=sC #
	 %%g.??3''''+++++ r,   c                  v   [         R                  " / SQ/ SQ/5      R                  n [        S[	        5       S4/5      nSn[
        R                  " [        US9   UR                  U 5        S S S 5        [
        R                  " [        US9   UR                  U 5        S S S 5        [        S[        5       S4/5      nUR                  UR                  4 H-  n[
        R                  " [        SS9   U" U 5        S S S 5        M/     g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Mc  = f)N        r          @r        @g      @rp   r   z1D data passed to a transformerr   rc   )r4   r   r6   r	   r   r   r   re   r)   r   r_   )r   r   msgfuncs       r(   $test_column_transformer_error_msg_1Dr	  g  s    hh9:<<G!G^-=q#A"BCI
+C	z	-g 
. 
z	-( 
. "GZ\1#=">?I	 7 78]]:-?@M A@ 9 
.	- 
.	-
 A@s$   DD1	D)
D
D&)
D8	c                     [         R                  " / SQ/ SQ/5      R                  n [        SS[	        5       S4/5      nSn[
        R                  " [        US9   UR                  U 5        S S S 5        [
        R                  " [        US9   UR                  U 5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Nrk   rl   )rz   rq   r   r{   r1   z%the 'trans2' transformer should be 2Dr   )
r4   r   r6   r	   rX   r   r   re   r   r)   r   r   r  s      r(   test_2D_transformer_outputr  x  s    hh	9-.00G 
1Hik13MN	OB
1C	z	-
! 
. 
z	-
w 
.	- 
.	- 
.	-s   B(B9(
B69
Cc                     [         R                  " S5      n [        R                  " / SQ/ SQ/5      R                  nU R                  USS/S9n[        S[        5       S4/5      nSn[         R                  " [        US	9   UR                  U5        S S S 5        [         R                  " [        US	9   UR                  U5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)
Nr   rk   rl   col1col2r   rz   z%the 'trans1' transformer should be 2Dr   )r   r   r4   r   r6   r   r	   rX   r   re   r   r)   )r   r   r   r   r  s        r(   !test_2D_transformer_output_pandasr    s    			X	&Bhh	9-.00G<<&&)9<:D 
Xy{F;<	=B
1C	z	-
 
. 
z	-
t 
.	- 
.	- 
.	-s   C4C 
C 
C.rs   rq   r   c                 R   [         R                  " / SQ/ SQ/5      R                  nSSS/[        SS5      [         R                  " S/5      4 HL  n[	        S[        5       U4/U S	9n[        R                  " [        S
S9   UR                  U5        S S S 5        MN     SSS/[        SS5      4 HL  n[	        S[        5       U4/U S	9n[        R                  " [        SS9   UR                  U5        S S S 5        MN     SS/n[	        S[        5       U4/U S	9nUR                  U5        [         R                  " / SQ/ SQ/ SQ/5      R                  nSn[        R                  " [        US9   UR                  U5        S S S 5        [         R                  " / SQ/5      R                  nSn[        R                  " [        US9   UR                  U5        S S S 5        g ! , (       d  f       GM  = f! , (       d  f       GMU  = f! , (       d  f       N= f! , (       d  f       g = f)Nrk   rl         ?stringr1   sr   rp   rr   zNo valid specificationr   otherr   r   Specifying the columnsr   r   rn   	   zIX has 3 features, but ColumnTransformer is expecting 2 features as input.zIX has 1 features, but ColumnTransformer is expecting 2 features as input.)r4   r   r6   r   r	   r   r   r   re   r)   r7   )rs   r   r   r   X_array_morer  X_array_fewererr_msgs           r(   'test_column_transformer_invalid_columnsr    s   hh	9-.00G h]E!SM288SE?C%'3 78IN]]:-EFFF7O GF D 8W-uS#?%'3 78IN]]:-EFFF7O GF @ a&C	Wegs34		JBFF7O88Y	9=>@@L
UC	z	-
\" 
.HH	
 a	  	T  
z	1
]# 
2	13 GF GF 
.	- 
2	1s0    G!!G4.HH!
G1	4
H	
H
H&c                  $    " S S[         5      n [        R                  " / SQ/ SQ/5      R                  n[	        SU " 5       S/4/5      nSn[
        R                  " [        US9   UR                  U5        S S S 5        g ! , (       d  f       g = f)	Nc                   $    \ rS rSrSS jrS rSrg)<test_column_transformer_invalid_transformer.<locals>.NoTransi  Nc                     U $ r"   r#   r$   s      r(   r)   @test_column_transformer_invalid_transformer.<locals>.NoTrans.fit  r   r,   c                     U$ r"   r#   rE   s     r(   predictDtest_column_transformer_invalid_transformer.<locals>.NoTrans.predict  s    Hr,   r#   r"   )r:   r;   r<   r=   r)   r#  r>   r#   r,   r(   NoTransr    s    		r,   r%  rk   rl   rp   r   z1All estimators should implement fit and transformr   )	r   r4   r   r6   r	   r   r   	TypeErrorr)   )r%  r   r   r  s       r(   +test_column_transformer_invalid_transformerr'    sk    -  hh	9-.00G	Wgi!56	7B
=C	y	,
w 
-	,	,s   &B
Bc                      [        5       n [        5       n[        U S4US/45      n[        UR                  6 u  p4nUS:X  d   eX@U4:X  d   eUSS/4:X  d   eg )Nr   r   )standardscaler
normalizer)r   r   r   zipr   )scalernormr   namesr   r   s         r(   test_make_column_transformerr/    sp    F<D	 &'!2TH:4F	GB#&#8 E4444D>)))w
++++r,   c                  v   [         R                  " S5      n [        R                  " / SQ/ SQ/5      R                  nU R                  USS/S9n[        5       n[        S[        5       UR                  4/5      n[        X2R                  45      n[        UR                  U5      UR                  U5      5        g )Nr   rk   rl   r   r   r   r-  )r   r   r4   r   r6   r   r   r	   r   r   r   r   )r   r   r   r-  ct1ct2s         r(   #test_make_column_transformer_pandasr3    s    			X	&Bhh	9-.00G<<'8)<<=D<D
fjlDLLAB
CC
!4"6
7C))$/1B1B41HIr,   c                     [        5       n [        5       n[        U S4US/4SSSS9nUR                  [        U S4US/45      R                  :X  d   eUR                  S:X  d   eUR
                  S:X  d   eUR                  S:X  d   e[        R                  " S5      n[        R                  " [        US9   [        U S4US/4S	S
S.S9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   rq   g      ?)n_jobsrs   r   zRmake_column_transformer() got an unexpected keyword argument 'transformer_weights'r   r}   r1   )pcaTransfr   )r   r   r   r   r5  rs   r   reescaper   r   r&  )r,  r-  r   r  s       r(   #test_make_column_transformer_kwargsr:    s    F<D	 		z
B 	"FG#4thZ6HIVV	W	W 99>><<6!!!#%%%
))	1C 
y	,WH:(*a 8	
 
-	,	,s   7C
C"c                      [        5       n [        5       n[        5       n[        U S4US/4US9nUR                  U:X  d   eg )Nr   r   rr   )r   r   r   rs   )r,  r-  rs   r   s       r(   2test_make_column_transformer_remainder_transformerr<    sJ    F<D I	 	D8*-
B <<9$$$r,   c                  "   [        S[        5       S/4S[        5       S/4/5      n 0 SS _SS_SS	_SU R                  S   S   _S
S_SS_SS_SU R                  S   S   _SS_SS_SS_SU R                  _SS _SS_SS_SS_nU R                  5       U:X  d   eU R	                  SS9  U R                  5       S   (       a   eU R	                  SS9  S SS	SU R                  S   S   SSSU R                  S SSSS.nU R                  5       U:X  d   eg )Nrz   r   r{   r1   r5  rs   rq   r   333333?trans1__copyTtrans1__with_meantrans1__with_stdtrans2__copytrans2__with_meantrans2__with_stdr   r   verbose_feature_names_outverboseFforce_int_remainder_cols
deprecated)r@  r   rz   )r5  rs   r   rz   r{   rB  rC  rD  r   r   rE  rF  rG  )r	   r   r   
get_params
set_paramsr   exps     r(   &test_column_transformer_get_set_paramsrN    s   	
N$qc	*X~7G!,MN
B$V 	C 	"//!$Q'	
 	 	T 	D 	"//!$Q' 	 	T 	D 	 	t 	$T 	5  	#L!C& ==?c!!!MMEM*}}2333MMM'//!$Q'! #%)$0C  ==?c!!!r,   c                     [         R                  " / SQ/ SQ/5      R                  n [        S[	        5       S/4S[	        SS9S/4/5      n[        US	5      (       a   eUR                  U 5        [        US	5      (       d   e[        UR                  S   [        5      (       d   e[        UR                  R                  [        5      (       d   e[        UR                  S   [        5      (       d   e[        UR                  R                  [        5      (       d   eUR                  R                  R                  (       a   eUR                  R                  R                  S
:X  d   eg )Nr  r  rz   r   r{   F)with_stdr1   r   r   )r4   r   r6   r	   r   r2   r)   r   named_transformers_rz   r{   rP  mean_r   r   s     r(   (test_column_transformer_named_estimatorsrT  6  s2   hh9:<<G	~'!-~u5s;	

B r?++++FF7O2''''b,,X6GGGGb,,33^DDDDb,,X6GGGGb,,33^DDDD%%,,5555!!((..#555r,   c                     [         R                  " / SQ/ SQ/5      R                  n [        S[	        5       S/4/5      nUR                  U 5        [        UR                  S   S   S5      (       a   e[        UR                  S   S   S5      (       d   e[        S[	        5       S/4/5      nUR                  U 5        [        UR                  S   S   S5      (       a   e[        UR                  S   S   S5      (       d   eg )Nr  r  rp   r   r1   rR  )
r4   r   r6   r	   r   r)   r2   r   r   r   rS  s     r(   test_column_transformer_cloningrV  J  s    hh9:<<G	Wn&6<=	>BFF7Orq)!,g66662##A&q)73333	Wn&6<=	>BWrq)!,g66662##A&q)73333r,   c                     [         R                  " / SQ/ SQ/5      R                  n [        S[	        5       SS/4/5      n[
        R                  " [        5         UR                  5         S S S 5        UR                  U 5        [        R                  " S5      n[
        R                  " [        US9   UR                  5         S S S 5        g ! , (       d  f       Nh= f! , (       d  f       g = f)Nr  r  rp   r   r1   zETransformer trans (type Trans) does not provide get_feature_names_outr   )r4   r   r6   r	   r   r   r   r   get_feature_names_outr)   r8  r9  AttributeErrorr  s      r(   )test_column_transformer_get_feature_namesrZ  X  s    hh9:<<G	Weg1v67	8B	~	&
  " 
' FF7O
))OC 
~S	1
  " 
2	1 
'	& 
2	1s   C3C
C
C,c                  n   [         R                  " / SQ/ SQ/5      R                  n [        S[	        5       S/4SSS/4/5      n[         R                  " S/S	/S
//5      n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        [        UR                  5      S:X  d   eUR                  S   S   S:w  d   e[        SSS/4SSS/4/5      n[        UR                  U 5      R                  U 5      R                  S5        [        UR                  U 5      R                  S5        [        UR                  5      S:X  d   eUR                  S   S   S:w  d   e[         R                  " / SQ/ SQ/5      R                  n [        S[	        5       S/4SSS/4/5      nU n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        [        UR                  5      S:X  d   eUR                  S   S   S:w  d   eg )Nr  r  rz   r   r{   rq   r1   r  r   r  r0   ro   rs   )r   r   r   )r4   r   r6   r	   r   r   r   r)   r7   rR   r   r   )r   r   rM  s      r(   'test_column_transformer_special_stringsr\  g  s   hh9:<<G	Xuw4x!6MN	OB
((SEC53%(
)Cr''0#6rvvg0093?r A%%%B"k111 
Xvs3h5LM	NBrvvg009??Hr''066?r A%%%B"k111 hh9:<<G	Xuw4xQRPS6TU	VB
Cr''0#6rvvg0093?r A%%%B"k111r,   c                     [         R                  " / SQ/ SQ/5      R                  n [         R                  " / SQ5      R                  SS5      n[         R                  " / SQ5      R                  SS5      nU n[	        S[        5       S/4/5      n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        [        UR                  5      S:X  d   eUR                  S   S   S:X  d   eUR                  S   S   S	:X  d   e[        UR                  S   S   S/5        [	        S
[        5       S/4/SS9n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        [        UR                  5      S:X  d   eUR                  S   S   S:X  d   e[        UR                  S   S   [        5      (       d   e[        UR                  S   S   S/5        [	        S[        5       S/4/SS9n[        UR                  U 5      US S 2S S S24   5        [        UR                  U 5      R                  U 5      US S 2S S S24   5        [        UR                  5      S:X  d   eUR                  S   S   S:X  d   e[        UR                  S   S   [        5      (       d   e[        UR                  S   S   S/5        [	        SS	S/4/SS9n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        [        UR                  5      S:X  d   eUR                  S   S   S:X  d   e[        UR                  S   S   [        5      (       d   e[        UR                  S   S   S/5        [        [        5       S/45      nUR                  S	:X  d   eg )Nrk   rl   ro   r1   rz   r   r0   rs   rq   rp   r   rr   )r4   r   r6   r   r	   r   r   r   r)   r7   rR   r   r   r   r   rs   )r   r   X_res_secondr   r   s        r(   !test_column_transformer_remainderr_    s   hh	9-.00G((9%--b!4K88I&..r15LJ 
Xuw45	6Br''0+>rvvg009;Gr A%%%B"k111B"f,,,r''+A.4 
Wegs34	NBr''0*=rvvg009:Fr A%%%B"k111b&&r*1-/BCCCCr''+A.4 
Xuw45	OBr''0*Q"W2EFrvvg009:a2g;NOr A%%%B"k111b&&r*1-/BCCCCr''+A.4 
Xvs34	NBr''0,?rvvg009<Hr A%%%B"k111b&&r*1-/BCCCCr''+A.4 
!%'A3	0B<<6!!!r,   z%cols1, cols2, expected_remainder_cols)FTFr0   r1   c                     S/$ Nr   r#   ru   s    r(   rw   rw     s    A3r,   c                     S/$ Nr1   r#   rb  s    r(   rw   rw     s    1#r,   r   r   C)TFF)FFTc                 j   [         R                  " S5      n[        U [        5      (       a@  [        U S   [        5      (       a(  [
        R                  " S5      nUR                  U/ SQS9n[        [        5       U 4[        5       U4SS9nUR                  U5        UR                  S   S   U:X  d   eg	)
zsCheck that the remainder columns format matches the format of the other
columns when they're all strings or masks.
r1   r   r   r   )r   r   re  r   r   rr   ro   N)r4   onesr   r   strr   r   r   r   r   r   r   )cols1cols2expected_remainder_colsr&   r   r   s         r(   (test_column_transformer_remainder_dtypesrm    s     	A%:eAh#<#<  *LLOL4 
!	%	%
B
 QB#'>>>>r,   rG  c                    [         R                  " S5      n[        S[        5       S/4S[        5       S/4/SU S9n[        R
                  " [        SS	9   UR                  U5        S
S
S
5        g
! , (       d  f       g
= f)zZCheck that ColumnTransformer raises a FutureWarning when
force_int_remainder_cols is set.
rg  T1r   T2r1   r   )rs   rG  z(`force_int_remainder_cols` is deprecatedr   N)r4   rh  r	   r   r   warnsFutureWarningr)   )rG  r&   r   s      r(   )test_force_int_remainder_cols_deprecationrs    sh    
 	A	
!	egs34!9
B 
m+U	V
q	 
W	V	Vs   A00
A>zkey, expected_colsc                    [         R                  " / SQ/ SQ/5      R                  nUn[        S[	        5       U 4/SS9n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [        UR                  5      S:X  d   eUR                  S   S   S	:X  d   e[        UR                  S   S
   [        5      (       d   eUR                  S   S   U:X  d   eg )Nrk   rl   rz   r   rr   r0   ro   r   rs   r1   )r4   r   r6   r	   r   r   r   r)   r7   rR   r   r   r   keyexpected_colsr   r   r   s        r(   'test_column_transformer_remainder_numpyrx    s     hh	9-.00GJ	
EGS	!"
B r''0*=rvvg009:Fr A%%%B"k111b&&r*1-/BCCCCB"m333r,   r   r   pd-indexr   c                    [         R                  " S5      n[        U [        5      (       a  U S:X  a  UR	                  S/5      n [
        R                  " / SQ/ SQ/5      R                  nUR                  USS/S9nUn[        S[        5       U 4/S	S
9n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [        UR                   5      S:X  d   eUR                   S   S   S:X  d   e[        UR                   S   S   ["        5      (       d   eUR                   S   S   U:X  d   eg )Nr   ry  r   rk   rl   r   r   rz   r   rr   r0   ro   r   rs   r1   )r   r   r   ri  Indexr4   r   r6   r   r	   r   r   r   r)   r7   rR   r   r   )rv  rw  r   r   r   r   r   s          r(   (test_column_transformer_remainder_pandasr|    s6     
		X	&B#sz 1hhy!hh	9-.00G<<'8)<<=DJ	
EGS	!"
B r''-z:rvvd|--d3Z@r A%%%B"k111b&&r*1-/BCCCCB"m333r,   )FTTc                 F   [         R                  " / SQ/ SQ/ SQ/5      R                  nUR                  5       nUS S 2SS24==   S-  ss'   [	        S[        5       U 4/[        5       S9n[        UR                  U5      U5        [        UR                  U5      R                  U5      U5        [        UR                  5      S:X  d   eUR                  S	   S
   S:X  d   e[        UR                  S	   S   [        5      (       d   eUR                  S	   S   U:X  d   eg )Nrk   rl      rn   rm   r1   r   r0   rz   rr   ro   r   rs   )r4   r   r6   r   r	   r   r@   r   r   r)   r7   rR   r   r   ru  s        r(   -test_column_transformer_remainder_transformerr    s    hh	9i89;;GJ q!A#v!	
EGS	!"-
B
 r''0*=rvvg009:Fr A%%%B"k111b&&r*1-{;;;;B"m333r,   c                     [         R                  " / SQ/ SQ/ SQ/5      R                  n [        S[	        5       / SQ4/[        5       S9n[        UR                  U 5      U 5        [        UR                  U 5      R                  U 5      U 5        [        UR                  5      S:X  d   eUR                  S   S   S	:w  d   eg )
Nrk   rl   r~  rz   rr   r1   ro   r   rs   )r4   r   r6   r	   r   r@   r   r   r)   r7   rR   r   rS  s     r(   :test_column_transformer_no_remaining_remainder_transformerr  <  s    hh	9i89;;G	Xuw	:;{}	UBr''0':rvvg0097Cr A%%%B"k111r,   c                  6   [         R                  " / SQ/ SQ/ SQ/5      R                  n SU R                  5       S S 2SS24   -  n[	        SSS	/4/[        5       S
9n[        UR                  U 5      U5        [        UR                  U 5      R                  U 5      U5        [        UR                  5      S:X  d   eUR                  S   S	   S:X  d   e[        UR                  S   S   [
        5      (       d   e[        UR                  S   S   SS/5        g )Nrk   rl   r~  r0   r1   r   rz   rq   r   rr   ro   rs   )r4   r   r6   r   r	   r@   r   r   r)   r7   rR   r   r   )r   r   r   s      r(   7test_column_transformer_drops_all_remainder_transformerr  G  s    hh	9i89;;G W\\^AqsF++J	Xvs34	NBr''0*=rvvg009:Fr A%%%B"k111b&&r*1-{;;;;r''+A.A7r,   c                    [         R                  " / SQ/ SQ/ SQ/5      R                  n[        S[	        5       S/4/[        U 5      SS9nUR                  U5      n[        R                  " U5      (       d   eUR                  S:X  d   e[         R                  " US S 2S4   R                  S	S
5      [         R                  " S5      45      n[        UR                  5       U5        [        UR                   5      S:X  d   eUR                   S	   S   S:X  d   e[#        UR                   S	   S
   [
        5      (       d   e[        UR                   S	   S   S
S/5        g )Nrk   rl   r~  rz   r   r   r   r   rm   ro   r1   r   r0   rs   )r4   r   r6   r	   r   rH   r   r   r   r   hstackr   rS   r   r   rR   r   r   )rL   r   r   r   	exp_arrays        r(   4test_column_transformer_sparse_remainder_transformerr  W  s8   hh	9i89;;G	
EGaS	!"#M2
B w'G??7#### ==J&&&		71a4=00Q7CDIw()4r A%%%B"k111b&&r*1-/@AAAAr''+A.A7r,   c                 T   [         R                  " / SQ/ SQ/ SQ/5      R                  n[        SSS/4/[	        U 5      SS9nUR                  U5      n[        R                  " U5      (       d   eUR                  S	:X  d   e[        UR                  5       [         R                  " S
5      5        [        UR                  5      S:X  d   eUR                  S   S   S:X  d   e[        UR                  S   S   [        5      (       d   e[        UR                  S   S   SS/5        g )Nrk   rl   r~  rz   rq   r   r   r   )r   r   r   r0   ro   rs   r1   )r4   r   r6   r	   rH   r   r   r   r   r   r   rS   rR   r   r   )rL   r   r   r   s       r(   =test_column_transformer_drop_all_sparse_remainder_transformerr  o  s   hh	9i89;;G	
FQC	 !#M2
B w'G??7#### ==F"""w("&&)4r A%%%B"k111b&&r*1-/@AAAAr''+A.A7r,   c                     [        S[        5       S/4/[        5       S9n S U R                  SSSSU R                  S   S   SSSU R                  S SSSS	.nU R	                  5       U:X  d   eU R                  SS
9  U R	                  5       S   (       a   eU R                  SS9  S U R                  SSSSSU R                  S SSSS.nU R	                  5       U:X  d   eg )Nrz   r   rr   Tr>  r1   FrH  )r5  rs   remainder__copyremainder__with_meanremainder__with_stdr   rz   r?  r@  rA  r   r   rE  rF  rG  )r  r  r   rI  )r5  rs   r  r  r  r   rz   r   r   rE  rF  rG  )r	   r   rs   r   rJ  rK  rL  s     r(   5test_column_transformer_get_set_params_with_remainderr    s    	
N$qc	*+~7G
B
 \\ $#//!$Q'! #%)$0C$ ==?c!!!MMeM,}}4555MMM'\\ $$#%)$0C ==?c!!!r,   c                     [         R                  " / SQ/ SQ/ SQ/5      R                  S5      R                  n [	        / [        5       S9nUR                  5       nUS   (       d   eUR                  U 5      nUR                  U R                  :X  d   e[        UR                  5      S:X  d   eUR                  S   S	   S
:X  d   eUR                  S   S   / SQ:X  d   eg )Nrk   rl   r~  r   rr   r  r1   ro   r   rs   r0   )r4   r   astyper6   r	   r   rJ  r   r   rR   r   )r   r   paramsr   s       r(   %test_column_transformer_no_estimatorsr    s    hh	9i89@@IKKG	2)9	:B]]_F()))w'G==GMM)))r A%%%B"k111B"i///r,   estpatternrz   r{   rr   z\[ColumnTransformer\].*\(1 of 3\) Processing trans1.* total=.*\n\[ColumnTransformer\].*\(2 of 3\) Processing trans2.* total=.*\n\[ColumnTransformer\].*\(3 of 3\) Processing remainder.* total=.*\n$z\[ColumnTransformer\].*\(1 of 2\) Processing trans1.* total=.*\n\[ColumnTransformer\].*\(2 of 2\) Processing remainder.* total=.*\n$z\[ColumnTransformer\].*\(1 of 2\) Processing trans1.* total=.*\n\[ColumnTransformer\].*\(2 of 2\) Processing trans2.* total=.*\n$zA\[ColumnTransformer\].*\(1 of 1\) Processing trans1.* total=.*\n$methodr)   r   c                 p   [         R                  " / SQ/ SQ/ SQ/5      R                  n[        X5      nU R	                  SS9  U" U5        UR                  5       R                  (       a   S5       eU R	                  SS9  U" U5        [        R                  " XR                  5       S   5      (       d   eg )	Nrk   rl   r~  F)rF  zGot output for verbose=FalseTr   )	r4   r   r6   r3   rK  
readouterroutr8  r   )r  r  r  capsysr   r  s         r(   test_column_transformer_verboser    s    L hh	9i89;;G3DNN5N!M  "&&F(FF&NN4N M88G..034444r,   c                  X    [        / 5      R                  SS9n U R                  S:X  d   eg )Nr0   )r5  )r	   rK  r5  r   s    r(   0test_column_transformer_no_estimators_set_paramsr    s*    	2		)	)	)	3B99>>r,   c                    ^ [         R                  " / SQ/ SQ/5      R                  m[         R                  " / SQ/5      R                  n U4S jn[        S[	        5       U4/SS9n[        UR                  T5      U 5        [        UR                  T5      R                  T5      U 5        [        UR                  S   S   5      (       d   eUR                  S   S   S/:X  d   eg )	Nrk   rl   c                 "   > [        U T5        S/$ ra  )r   )r&   r   s    r(   r  8test_column_transformer_callable_specifier.<locals>.func  s    1g&s
r,   rp   rq   rr   r   r0   )r4   r   r6   r	   r   r   r   r)   r7   callabler   r   )r   r  r   r   s      @r(   *test_column_transformer_callable_specifierr    s    hh	9-.00G((I;'))K 
Wegt45	HBr''0+>rvvg009;GBOOA&q)****Aq!aS(((r,   c                     ^ [         R                  " S5      n [        R                  " / SQ/ SQ/5      R                  n[        R                  " / SQ/5      R                  nU R                  USS/S9mU4S jn[        S[        5       U4/S	S
9n[        UR                  T5      U5        [        UR                  T5      R                  T5      U5        [        UR                  S   S   5      (       d   eUR                  S   S   S/:X  d   eg )Nr   rk   rl   r   r   r   c                    > [        U R                  TR                  5        [        U R                  TR                  5        S/$ )Nr   )r   r   values)r&   r   s    r(   r  Btest_column_transformer_callable_specifier_dataframe.<locals>.func/  s/    199dll3188T[[1yr,   rp   rq   rr   r   r0   )r   r   r4   r   r6   r   r	   r   r   r   r)   r7   r  r   r   )r   r   r   r  r   r   s        @r(   4test_column_transformer_callable_specifier_dataframer  '  s    			X	&Bhh	9-.00G((I;'))K<<'8)<<=D
 
Wegt45	HBr''-{;rvvd|--d3[ABOOA&q)****Aq!gY...r,   c                  H   [         R                  R                  SS5      n [         R                  " S/S//5      n[         R                  " X/SS9n [        5       n[        SUS/4/SS9n[        SUS/4/SS9n[        UR                  U 5      UR                  U 5      5        g )Nr0   r1   axisohero   r   rr   )	r4   randomrandnr   concatenater   r	   r   r   )r&   X_categoriesr  tf_1tf_2s        r(   /test_column_transformer_negative_column_indexesr  ;  s    
		1A88aS1#J'L
(q1A
/CucB401]KDucA3/0MJDt))!,d.@.@.CDr,   
array_typec                     [         R                  " / SQ/ SQ/ SQ/ SQ/5      nU " U5      n[        S[        5       / SQ4/5      nUR	                  U5      nUR
                  S:X  d   eg )Nr1   r0   r   rm      rn   )r  rn      )r  r  r}   identity)FTFT)r   r0   )r4   	transposer	   r   r   r   )r  r&   column_transformerr   s       r(   %test_column_transformer_mask_indexingr  G  se     	iIzBCA1A*
)+-G	HI !..q1G==F"""r,   c                      SS/SS/SS//n [        S[        5       S/4S	[        5       S/4/5      n[        US
5      (       a   eUR                  U 5        UR                  S:X  d   eg )Nr1   r0   r   rm   r  rn   r   r   r   n_features_in_)r	   r@   r2   r)   r  )r&   r   s     r(   test_n_features_inr  T  st     Q!Q!Q A	S+-!5[]QC7PQ	RBr+,,,,FF1I!!!r,   zcols, pattern, include, excludecol_int	col_floatr  col_strzat$z^col_intz	float|strz^col_szstr$r  r  r  c                     [         R                  " S5      nUR                  [        R                  " / SQ[
        S9[        R                  " / SQ[        S9/ SQS./ SQS9n[        X#US9n[        U" U5      U 5        g )	Nr   rk   r   r  onetwothreer  r   )dtype_includedtype_excluder  )	r   r   r   r4   r   intr   r
   r   )colsr  includeexcluder   r   selectors          r(   ,test_make_column_selector_with_select_dtypesr  _  sq    0 
		X	&B<<xx	5/?.	

 4  D $gH x~t,r,   c                     [         R                  " S5      n U R                  [        R                  " / SQ[
        S9[        R                  " / SQ[        S9/ SQ/ SQS./ SQS9nUS	   R                  S
5      US	'   [        S
[        S/S9n[        [        R                  S9n[        5       n[        5       n[        XB4XS45      n[        USS	/4USS/45      nUR                  U5      nUR                  U5      n	[        X5        g )Nr   rk   r   r  )r  r  r  )lowmiddlehigh)r  r  col_catr  r   r  categoryr  r  r  r  r  )r   r   r   r4   r   r  r   r  r
   r   numberr   r   r   r   r   )
r   r   cat_selectornum_selectorr  r,  ct_selector	ct_direct
X_selectorX_directs
             r(   1test_column_transformer_with_make_column_selectorr    s    			X	&B<<xx	5/?,0		
 ?  D 9o,,Z8DO'z686TUL'bii@L
/CF)3*=?UVK'	y)$%i0H'II **40J&&t,HJ)r,   c                      [        [        R                  S9n [        R                  " SS//5      nSn[        R
                  " [        US9   U " U5        S S S 5        g ! , (       d  f       g = f)Nr  r|   r   z=make_column_selector can only be applied to pandas dataframesr   )r
   r4   r  r   r   r   re   )r  r&   r  s      r(   test_make_column_selector_errorr    sJ    #"))<H
3*A
IC	z	- 
.	-	-s   	A
A,c                  d   [         R                  " S5      n U R                  [        R                  " / SQ[
        S9[        R                  " / SQ[        S9/ SQS./ SQS9n[        [        /S9n[        R                  " [        R                  " U5      5      n[        U" U5      U" U5      5        g )	Nr   rk   r   r  r  r  r   r  )r   r   r   r4   r   r  r   r
   r   pickleloadsdumpsr   )r   r   r  selector_pickeds       r(    test_make_column_selector_pickler    s    			X	&B<<xx	5/?.	

 4  D $6(;Hll6<<#9:Ox~t'<=r,   	empty_colc                     / $ r"   r#   rb  s    r(   rw   rw     s    Br,   )r   r   r  c                     [         R                  " S5      nUR                  / SQ/ SQS.5      n[        S[	        5       SS/4S[	        5       U 4/S	9nUR                  U5        [        UR                  5       / S
Q5        g )Nr   r   r   r   zr  r  r  r  r  r  r  empty_featuresr   )ohe__col1_aohe__col1_bohe__col2_zr   r   r   r	   r   r)   r   rX  )r  r   r   r   s       r(    test_feature_names_empty_columnsr    sw     
		X	&B	H	IB	MOff%56}	:

B FF2J
  "$Qr,   r  c                     S/$ rd  r#   rb  s    r(   rw   rw     s    1#r,   r  c                     S/$ )Nr  r#   rb  s    r(   rw   rw     s    6(r,   c                 
    SS/$ NFTr#   rb  s    r(   rw   rw     s    5$-r,   c                     [         R                  " S5      nUR                  / SQ/ SQS.5      n[        S[	        5       U 4/5      nUR                  U5        [        UR                  5       S/5        g)z1Checks name when selecting only the second columnr   r  r  r  r  r  Nr  )r  r   r   r   s       r(   test_feature_names_out_pandasr    s]     
		X	&B	H	IB	UMOX>?	@BFF2Jr//1M?Cr,   c                     S/$ rd  r#   rb  s    r(   rw   rw     s    r,   c                 
    SS/$ r  r#   rb  s    r(   rw   rw     s    udmr,   c                     SS/SS/SS//n[        S[        5       U 4/5      nUR                  U5        [        UR	                  5       S/5        g)z=Checks name when selecting the second column with numpy arrayr   r  r   r  	ohe__x1_zN)r	   r   r)   r   rX  )r  r&   r   s      r(   !test_feature_names_out_non_pandasr    sR    
 sc3Z#s,A	UMOX>?	@BFF1Ir//1K=Ar,   c                     [        5       n[        SUSS/4/U S9nUR                  5       nUR                  S:X  d   eUR                  SS/S4:X  d   eUR
                  X4:X  d   eg )Nr  r  r  r   rs   r  rs    r   r	   _sk_visual_block_r.  name_details
estimators)rs   r  r   visual_blocks       r(   test_sk_visual_block_remainderr    s     /C	cFF#345
B '')L!5555$$&&)92(>>>>""s&6666r,   c                      [        5       n [        SU SS/4/S9nUR                  5       nUR                  S:X  d   eUR                  SS/4:X  d   eUR
                  U 4:X  d   eg )Nr  r  r  r  )r  r  )r  r   r  s      r(   #test_sk_visual_block_remainder_dropr    sv    
/C	%vv6F)G(H	IB'')L)))$$&&)9(;;;;""sf,,,r,   c                 \   [         R                  " S5      n[        5       n[        SUSS/4/U S9nUR	                  / SQ/ SQ/ SQ/ S	QS
.5      nUR                  U5        UR                  5       nUR                  S:X  d   eUR                  SS/SS/4:X  d   eUR                  X 4:X  d   eg )Nr   r  r  r  r  r   r   cr  r  r   rm   r  )r  r  col3col4r  r  r  )
r   r   r   r	   r   r)   r  r.  r	  r
  )rs   r   r  r   r   r  s         r(   ,test_sk_visual_block_remainder_fitted_pandasr    s     
		X	&B
/C	cFF#345
B 
##		

B FF2J'')L!5555$$&&)9FF;K(LLLL""s&6666r,   c                 0   [         R                  " / SQ/ SQ/[        S9n[        5       n[	        SUSS/4/U S9nUR                  U5        UR                  5       nUR                  S:X  d   eUR                  SS/S	/4:X  d   eUR                  X 4:X  d   eg )
Nr  r  r   scaler   r0   r  )r  rs   r1   )
r4   r   r   r   r	   r)   r  r.  r	  r
  )rs   r&   r,  r   r  s        r(   +test_sk_visual_block_remainder_fitted_numpyr  )  s     	)Y'u5AF	A/0I
B FF1I'')L!7777$$!Q!555""v&9999r,   explicit_colname)r   r   r   r1   c                    [         R                  " S5      n[        R                  " / SQ/ SQ/5      R                  nUR                  USS/S9n[        R                  " / SQ/ SQ/5      R                  nUR                  USS/S9n[        S[        5       U 4/US9nUR                  U5        UR                  U5      nUR                  U5      n	[        X5        UR                  5       n
/ S	QU
S
'   UR                  U
5      n	[        X5        [        U [        5      (       aF  UR                  5       nSn[         R                  " [        US9   UR                  U5        SSS5        gg! , (       d  f       g= f)z=Test the interaction between remainder and column transformerr   rk   rl   r   r   r   bycolrr   r  thirdr  r   N)r   r   r4   r   r6   r   r	   r   r)   r7   r   r   r   ri  r   re   )r  rs   r   X_fit_arrayX_fit_dfX_trans_array
X_trans_dftfX_fit_transr   X_extended_dfr   r  s                r(   8test_column_transformer_reordered_column_names_remainderr$  8  s?    
		X	&B((Iy1244K||K'81D|EHHHi3466Mmh5HIJ	Weg/?@AY	WBFF8,,x(K ll:&GG) MMOM&M'll=)GG)"C(( ""$*]]:W5LL! 65 )
 65s   E**
E8c                     [         R                  " S5      n [        R                  " SS9nU R	                  U/ SQS9nUR                  SSS9n[        S	[        5       S/4/S
S9nUR                  U5        Sn[         R                  " [        US9   UR                  U5        SSS5        [        S	[        5       S/4/SS9nUR                  U5        UR                  U5      nUR                  U5      n[        Xg5        [        S	SS/4/S
S9nUR                  U5        UR                  U5      nUR                  U5      n[        Xg5        g! , (       d  f       N= f)zNTest the interaction between {'drop', 'passthrough'} and
missing column names.r   r  )r   r   r   r  dr   r  r1   r  r  r   rr   zcolumns are missing: {'c'}r   Nrq   )r   r   r4   rh  r   rq   r	   r   r)   r   re   r7   r   )r   r&   r   
df_droppedr!  r  df_dropped_transdf_fit_transs           r(   <test_feature_name_validation_missing_columns_drop_passthoughr+  ^  s3    
		X	&B
fA	a!5	6B1%J 
Wegs34	NBFF2J
'C	z	-
Z  
. 
Wegs34	GBFF2J||J/<<#L$3 
Wfse45	OBFF2J||J/<<#L$3! 
.	-s   E
Ec                  r   [         R                  " S5      n / SQnU R                  / SQ/US9n[        S[	        5       SS/4/SS	9nUR                  U5        [        UR                  U5        [        UR                  [        R                  5      (       d   eUR                  R                  [        :X  d   eg
)a/  Feature names are stored in column transformer.

Column transformer deliberately does not check for column name consistency.
It only checks that the non-dropped names seen in `fit` are seen
in `transform`. This behavior is already tested in
`test_feature_name_validation_missing_columns_drop_passthough`r   r   r  r'  r  r   r  r   r'  r   rr   N)r   r   r   r	   r   r)   r   feature_names_in_r   r4   ndarrayr   r   )r   feature_namesr   r   s       r(   test_feature_names_in_r1    s     
		X	&B#M	yk=	9B	WegSz:;}	UBFF2Jr++];b**BJJ7777%%///r,   c                   (    \ rS rSrSS jrSS jrSrg)TransWithNamesi  Nc                     Xl         g r"   feature_names_out)r%   r6  s     r(   rM   TransWithNames.__init__  s    !2r,   c                 f    U R                   b#  [        R                  " U R                   [        S9$ U$ )Nr   )r6  r4   asarrayr   )r%   input_featuress     r(   rX  $TransWithNames.get_feature_names_out  s+    !!-::d44FCCr,   r5  r"   )r:   r;   r<   r=   rM   rX  r>   r#   r,   r(   r3  r3    s    3r,   r3  z'transformers, remainder, expected_namesbycol1r'  r  bycol2)	bycol1__d	bycol1__c	bycol2__dremainder__aremainder__b)r>  r?  r@  r   )	bycol1__brA  remainder__cpca1pca2)r   r   r'  )bycol1__pca1bycol1__pca2rD  r   )	bycol1__arC  	bycol2__br6  )bycol1__pca0rG  bycol2__pca0bycol2__pca1rA  rD  remainder__dr   rC  r?  rm   rA  )r>  r?  	bycol2__cr@  rA  rB  c                 4   [         R                  " S5      nUR                  / SQ// SQS9n[        U US9nUR	                  U5        UR                  5       n[        U[        R                  5      (       d   eUR                  [        :X  d   e[        Xb5        g)DCheck feature_names_out for verbose_feature_names_out=True (default)r   r1   r0   r   rm   r&  r   rr   Nr   r   r   r	   r)   rX  r   r4   r/  r   r   r   r   rs   expected_namesr   r   r   r.  s          r(   #test_verbose_feature_names_out_truerV    s    t 
		X	&B	|n.B	CB	
B FF2J$$&EeRZZ((((;;&   u-r,   
trans_name	feat_namec                     U S S  SU 3$ )Nr0   z++r#   rW  rX  s     r(   &_feature_names_out_callable_name_clashr[  &  s    !nR	{++r,   c                 H    U R                  5        SUR                  5        3$ )N=)upperrZ  s     r(   !_feature_names_out_callable_upperr_  *  s%     !9??#4"566r,   zBtransformers, remainder, verbose_feature_names_out, expected_names)by++dzby++cr`  zre++azre++bz!{feature_name}-{transformer_name})zd-bycol1zc-bycol1zd-bycol2)zBYCOL1=DzBYCOL1=CzBYCOL2=CzBYCOL2=DzREMAINDER=AzREMAINDER=Bc                 6   [         R                  " S5      nUR                  / SQ// SQS9n[        U UUS9nUR	                  U5        UR                  5       n[        U[        R                  5      (       d   eUR                  [        :X  d   e[        Xs5        g)rQ  r   rR  r&  r   rs   rE  NrS  )r   rs   rE  rU  r   r   r   r.  s           r(   .test_verbose_feature_names_out_callable_or_strrc  .  s    V 
		X	&B	|n.B	CB	";
B
 FF2J$$&EeRZZ((((;;&   u-r,   )r'  r  r   r   )r   r   r  )rE  rF  r  r-  kpca)pca0rE  kpca0kpca1r   r  r'  r  )r'  r  r   c                 6   [         R                  " S5      nUR                  / SQ// SQS9n[        U USS9nUR	                  U5        UR                  5       n[        U[        R                  5      (       d   eUR                  [        :X  d   e[        Xb5        g);Check feature_names_out for verbose_feature_names_out=Falser   rR  r&  r   Frb  NrS  rT  s          r(   $test_verbose_feature_names_out_falserj  h  s    j 
		X	&B	|n.B	CB	"'
B
 FF2J$$&EeRZZ((((;;&   u-r,   z*transformers, remainder, colliding_columnsz['b']z['c']z['a']z
['b', 'c']bycol3z
['a', 'b']rn   z-['pca0', 'pca1', 'pca2', 'pca3', 'pca4', ...]c                 L   [         R                  " S5      nUR                  / SQ// SQS9n[        U USS9nUR	                  U5        [
        R                  " SU S35      n[         R                  " [        US	9   UR                  5         S
S
S
5        g
! , (       d  f       g
= f)ri  r   rR  r&  r   Frb  zOutput feature names: z[ are not unique. Please set verbose_feature_names_out=True to add prefixes to feature namesr   N)
r   r   r   r	   r)   r8  r9  r   re   rX  )r   rs   colliding_columnsr   r   r   r  s          r(   +test_verbose_feature_names_out_false_errorsrn    s    ` 
		X	&B	|n.B	CB	"'
B
 FF2J
))
 !2 3 4J 	JC 
z	-
  " 
.	-	-s   ;B
B#rE  c                 P   [         R                  " S5      nUR                  / SQ// SQS/S9n[        S[	        5       SS/4S	[	        5       S
/4/UU S9nUR                  U5      n[        U[        R                  5      (       d   eUR                  SS9  UR                  / SQ/UR                  S/S9nUR                  U5      n[        XRR                  5      (       d   eUR                  5       n[        UR                  U5        [        UR                  UR                  5        g)z2Check column transformer behavior with set_output.r   rR  r&  r}   r   r   r   r   r  r   r'  rb  r7      N)r   r   r   r	   r3  r   r   r4   r/  
set_outputr   r7   rX  r   r   )rE  rs   r   r   r   r   df_testr6  s           r(   "test_column_transformer_set_outputru  m  s    
		X	&B	|n.B2$	OB	
>#c3Z	08^=MPSu2UV";
B
 r"Ggrzz****MMHM%llL>2::bTlJGll7#Gg||,,,,002w(9:w}}gmm4r,   c                    [         R                  " S5      nUR                  UR                  / SQSS9UR                  / SQSS9/ SQ/ SQUR                  S	UR                  S
/SS9S.5      n[        S[        SSS9S/4S[        5       S/4/U SS9R                  SS9nU(       a  UR                  U5      nO UR                  U5      R                  U5      n[        XRR                  5      (       d   e[        UR                  UR                  5       5        SSSSSSSS.nUR                   R#                  5        H  u  pxXU   :X  a  M   e   g)z6Check ColumnTransformer outputs mixed types correctly.r   dogcatsnaker  r   )greenblueredr   gffffff?g @g@rr  (   r}   rr  d   Int32)petcolorageheightdistancecolor_encodeFint8r   r   r  r  rb  rq  float64int64)
color_bluecolor_green	color_redr  r  r  r  N)r   r   r   r   NAr	   r   r   rs  r   r)   r7   r   r   r   rX  dtypesitems)	rs   r   r   r   r   r   expected_dtypesr   r   s	            r(   &test_column_transform_set_output_mixedr    sa    
		X	&B	994J9GYY7xYH""		2ruuc"2'	B	

B 
 E@	
 N$ug.	
 "'
 j8j$  ""2&&&*&&r*g||,,,,w(@(@(BC O nn**,
,,,, -r,   c                    [         R                  " S5      nUR                  UR                  / SQSS9/ SQ/ SQS.5      n[	        S[        S	S
S9S/4S[        5       S/4/U S	S9nUR                  U5      n[        U[        R                  5      (       d   eUR                  S:X  d   eUR                  SS9  UR                  U5      nS
S
S
SSS.nUR                  R                  5        H  u  pxXU   :X  a  M   e   g )Nr   rw  r  r   r~  r  )r  r  r  r  Fint16r  r  r  rb  r  rq  r  )pet_catpet_dog	pet_snaker  r  )r   r   r   r   r	   r   r   r   r   r4   r/  r   rs  r7   r  r  )	rs   r   r   r   r   r   r  r   r   s	            r(   .test_column_transform_set_output_after_fittingr    s   			X	&B	994J9G""	

B 
 EA
 N$ug.	
 "'
B r"Ggrzz****==I%%%MMHM%b!JO !''--/
,,,, 0r,   c                   <    \ rS rSrSS jrS	S jrS	S jrS	S jrSrg)
PandasOutTransformeri  c                     Xl         g r"   offset)r%   r  s     r(   rM   PandasOutTransformer.__init__  s    r,   Nc                 j    [         R                  " S5      n[        XR                  5      (       d   eU $ Nr   )r   r   r   r   r%   r&   r'   r   s       r(   r)   PandasOutTransformer.fit  s,      *!\\****r,   c                     [         R                  " S5      n[        XR                  5      (       d   eXR                  -
  $ r  )r   r   r   r   r  r  s       r(   r7   PandasOutTransformer.transform  s3      *!\\****;;r,   c                     U $ r"   r#   )r%   r7   s     r(   rs  PandasOutTransformer.set_output  s	     r,   r  )r   r"   )	r:   r;   r<   r=   rM   r)   r7   rs  r>   r#   r,   r(   r  r    s    

r,   r  z;trans_1, expected_verbose_names, expected_non_verbose_namesr  r  trans_0__feat1trans_1__feat0feat1feat0c                 Z   [         R                  " S5      nUR                  / SQ/ SQS.5      n[        S[	        SS9S/4S	U S
/4/5      nUR                  U5      n[        U[        R                  5      (       d   e[         R                  " [        SS9   UR                  5         SSS5        UR                  SS9  UR                  U5      n[        UR                  U5        UR                  SS9  UR                  U5      n[        UR                  U5        g! , (       d  f       N{= f)zCheck that set_config(transform="pandas") is compatible with more transformers.

Specifically, if transformers returns a DataFrame, but does not define
`get_feature_names_out`.
r   )r   r        @)r  r  r  )r  r  trans_0r  r  r  trans_1r  z!not provide get_feature_names_outr   Nrq  FrE  )r   r   r   r	   r  r   r   r4   r/  r   rY  rX  rs  r   r   rK  )	r  expected_verbose_namesexpected_non_verbose_namesr   r   r   
X_trans_npX_trans_df0X_trans_df1s	            r(   ;test_transformers_with_pandas_out_but_not_feature_names_outr    s
   8 
		X	&B<</OLMD	,C87)D'+	

B !!$'Jj"**---- 
~-P	Q
  " 
R MMHM%""4(K{**,BCMMEM2""4(K{**,FG 
R	Qs   D
D*empty_selectionc                 x   [         R                  " S5      nUR                  SS/SS//SS/S9n[        SS	U 4S
[	        5       SS/4/SS9nUR                  SS9  UR                  U5      n[        UR                  SS/5        UR                  SS9  UR                  U5      n[        UR                  SS/5        g)zcCheck that pandas output works when there is an empty selection.

Non-regression test for gh-25487
r   r   皙@r  r   r   r   r   r   r   Tr  rq  numerical__anumerical__bFN)
r   r   r   r	   r   rs  r   r   r   rK  )r  r   r&   r   X_outs        r(   "test_empty_selection_pandas_outputr  +	  s     
		X	&B
sCj3*-SzBA	M?;.*S#J7	
 #'
B MMHM%QEu}}~~&FGMMEM2QEu}}sCj1r,   c                  P   [         R                  " S5      n U R                  SS/SS//SS/SS/S	9n[        S
 SS9n[	        SSS/4SUS/4/5      nUR                  SS9  Sn[         R                  " [        US9   UR                  U5        SSS5        g! , (       d  f       g= f)zeCheck column transformer raises error if indices are not aligned.

Non-regression test for gh-26210.
r   r   r  r  r   r   r  r   rp  c                      U R                  SS9$ )NT)rq   )reset_indexrb  s    r(   rw   7test_raise_error_if_index_not_aligned.<locals>.<lambda>Q	  s    !--T-*r,   z
one-to-oner5  num1r   num2rq  zConcatenating DataFrames from the transformer's output lead to an inconsistent number of samples. The output may have Pandas Indexes that do not match.r   N)	r   r   r   r   r	   rs  r   re   r   )r   r&   reset_index_transformerr   r  s        r(   %test_raise_error_if_index_not_alignedr  H	  s    
 
		X	&B
sCj3*-Sz!QPA1*l 
]SE*,se4	

B MMHM%	& 
 
z	-
 
.	-	-s   <B
B%c                     [         R                  " S5      n U R                  / SQ/ SQS.5      n[        [	        5       [        [        S94[	        5       SS9nUR                  SS9  UR                  U5      nU R                  R                  X15        UR                  S	S9  UR                  U5      n[        U[        R                  5      (       d   eg
)zQCheck that the output is set for the remainder.

Non-regression test for #26306.
r   )TFTr  )r   r   r  Frb  rq  defaultN)r   r   r   r   r   r
   r   rs  r   testingassert_frame_equalr   r4   r/  )r   r   r   r  s       r(   test_remainder_set_outputr  d	  s     
		X	&B	/i@	AB	 		2FG#%"'
B
 MMHM%


2
CJJ!!#*MMIM&


2
Cc2::&&&&r,   c                     [         R                  " S5      n [        U S5      (       d  [         R                  " S5        U R	                  SSS/05      n[        SS/45      n[        R                  " 5          [        R                  " S5        UR                  U5        SSS5        UR                  5       n[         R                  " [        S	S
9   UR                  U5        SSS5        UR                  SS9  UR                  U5        UR                  SS9  UR                  UR                  S5      5        g! , (       d  f       N= f! , (       d  f       No= f)zCheck behavior when a tranformer's output contains pandas.NA

It should raise an error unless the output config is set to 'pandas'.
r   Float64DtypezfThe issue with pd.NA tested here does not happen in old versions that do not have the extension dtypesr   r  Nr   errorz set_output\(transform='pandas'\)r   rq  r  g      )r   r   r2   skipr   r   warningscatch_warningssimplefilterr   convert_dtypesr   re   rs  fillna)r   r   r   s      r(   test_transform_pd_nar  |	  s   
 
		X	&B2~&&-	
 
sS$K(	)B	 -#!7	8B		 	 	"g&
 
# 
			B 
z)L	M
 
N MMHM%RMMIM& RYYt_% 
#	" 
N	Ms   6(D9E
9
E

Ec                  J   [         R                  " S5      n [         R                  " S5      n[        R                  " SS/SS/SS//5      n[        R                  " SS/SS/SS//5      nU R	                  US	S
/S9nUR	                  US	S
/S9n[        [        5       SS/45      nUR                  U5        UR                  U5      n[        Xs5        UR	                  US	S
/S9nU R	                  US	S
/S9n	UR                  U5        UR                  U	5      n
[        X5        g)z?Check fitting and transforming on pandas and polars dataframes.r   r   r   r1   r0   rm   r  r   r   r   r   )schemaN)
r   r   r4   r   r   r   r   r)   r7   r   )r   pl
X_train_np	X_test_np
X_train_pd	X_test_plr   	out_pl_in
X_train_pl	X_test_pd	out_pd_ins              r(   ,test_dataframe_different_dataframe_librariesr  	  s   			X	&B			X	&BAq6Aq6Aq623J1a&1a&1a&12I j3*=JYSz:I	 %'Aq6!2	3BFF:Y'Iy, j#s<JYc
;IFF:Y'Iy,r,   c                     [         R                  " / SQ/ SQ/5      n [        S[        5       SS/4S[        5       SS/4/5      nSn[        R
                  " [        US	9   US     S
S
S
5        UR                  U 5        US   UR                  S   L d   eUS   UR                  S   L d   eSn[        R
                  " [        US	9   US     S
S
S
5        g
! , (       d  f       Nw= f! , (       d  f       g
= f)z(Check __getitem__ for ColumnTransformer.rk   r  t1r   r1   t2r0   z5ColumnTransformer is subscriptable after it is fittedr   Nz0'does_not_exist' is not a valid transformer namedoes_not_exist)
r4   r   r	   r   r   r   r&  r)   rQ  KeyError)r&   r   r  s      r(   "test_column_transformer__getitem__r  	  s    
)Y'(A	T57QF3dEGaV5LM	NB
AC	y	,
4 
- FF1Id8r--d3333d8r--d3333
<C	xs	+
 
,	+ 
-	, 
,	+s   CC'
C$'
C5transform_outputr  c                    [         R                  " S5      nUR                  [        R                  R                  SS5      5      n[        S[        5       SS/4/SS9R                  U S	9nUR                  U5      nUR                  UR                  :X  d   e/ S
Qn[        US5      (       a   UR                  R                  5       U:X  d   eUR                  5       R                  5       U:X  d   eg)zCheck that when `remainder="passthrough"`, inconsistent naming is handled
correctly by the underlying `FunctionTransformer`.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/28232
r   r}   rm   r,  r   r1   r   r  rq  )
scaler__x0
scaler__x1remainder__x2remainder__x3r   N)r   r   r   r4   r  r  r	   r   rs  r   r   r2   r   tolistrX  )r  r   r&   preprocessorr   expected_column_namess         r(   @test_column_transformer_remainder_passthrough_naming_consistencyr  	  s     
		X	&B
RYY__R+,A$!1Aq6:; j+j,  ((+G==AGG### w	""%%'+@@@@--/668<QQQQr,   r   c           	      T   [         R                  " U 5      nUR                  / SQ/ SQ/ SQS.5      n[        SS/ SQ4S[	        5       SS	/4S
[        5       SS/4S[	        S 5      / SQ4/SS9R                  U S9nUR                  U5      n[        UR                  5      / SQ:X  d   eg)zCheck that we properly rename columns when using `ColumnTransformer` and
selected columns are redundant between transformers.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/28260
r  r}   rr     r     i,  x1x2x3r   r   r   r  r  re  r  Dc                     [        U / SS9$ Nr1   r  r   rb  s    r(   rw   9test_column_transformer_column_renaming.<locals>.<lambda>	      nQ.Kr,   Tr   rE  rq  )A__x1A__x2A__x3B__x1B__x2C__x1C__x3N)
r   r   r   r	   r   r   rs  r   r   r   )r   libr   transformerdf_transs        r(   'test_column_transformer_column_renamingr  	  s     

m
,C	i|?S	TB#-!34%'$6."T4L1 #$KL"

 #' j=j)  ((,H  ! &   r,   c           	         [         R                  " U 5      nUR                  / SQ/ SQ/ SQS.5      n[        SS/ SQ4S[	        5       SS	/4S
[        5       SS/4S[	        S 5      / SQ4/SS9R                  U S9n[        R                  " S5      n[         R                  " [        US9   UR                  U5        SSS5        g! , (       d  f       g= f)zvCheck that we raise an error when using `ColumnTransformer` and
the columns names are duplicated between transformers.r  r  r  r  r   r   r   r  r  re  r  r  c                     [        U / SS9$ r  r   rb  s    r(   rw   Gtest_column_transformer_error_with_duplicated_columns.<locals>.<lambda>
  r  r,   Fr   rq  a   Duplicated feature names found before concatenating the outputs of the transformers: ['x1', 'x2', 'x3'].
Transformer A has conflicting columns names: ['x1', 'x2', 'x3'].
Transformer B has conflicting columns names: ['x1', 'x2'].
Transformer C has conflicting columns names: ['x1', 'x3'].
r   N)r   r   r   r	   r   r   rs  r8  r9  r   re   r   )r   r  r   r	  r  s        r(   5test_column_transformer_error_with_duplicated_columnsr  
  s     

m
,C	i|?S	TB#-!34%'$6."T4L1 #$KL"

 #( j=j)  ii	GG 
z	1!!"% 
2	1	1s   *C
Cz1.3zrequires joblib >= 1.3)reasonc                  b   [         R                  R                  S5      R                  SS9n [	        SS9n[        SUS/4/SS9n[        R                  " S	S
S9   UR                  U 5      nSSS5        [        W[	        5       R                  U SS2S/4   5      5        g! , (       d  f       N:= f)ztCheck that ColumnTransformer works in parallel with joblib's auto-memmapping.

non-regression test for issue #28781
r   r  )sizeF)r   r,  r0   )r   r5  lokyr1   )
max_nbytesN)
r4   r  RandomStateuniformr   r	   joblibparallel_backendr   r   )r&   r,  r	  Xts       r(   #test_column_transformer_auto_memmapr  ,
  s     			a ((f(5A'F#!-.K
 
	 	 A	6&&q) 
7 B(66qQCyAB 
7	6s   B  
B.c                  (   [         R                  " S5      n U R                  SSS.SSS./SS/S.SS/S9n[        [	        S	S
9S4[        5       S/45      nUR                  SS9  UR                  U5      n[        UR                  5      SS/:X  d   eg)zCheck index handling when both pd.Series and pd.DataFrame slices are used in
ColumnTransformer.

Non-regression test for issue #31546.
r   r1   r0   )foobarr   )r  baz)dict_col	dummy_colr   Fr   r  r   rq  N)
r   r   r   r   r   r   rs  r   r   r   )r   r   tr&   s       r(   )test_column_transformer_non_default_indexr"  D
  s     
		X	&B	!"1-q/CDQ	
 !f 
 
B 	 	u	%z2		.	A LL8L$	A=QF"""r,   )r7   r   r)   c                 4   [         R                  " / SQ/ SQ/5      R                  n/ SQn[        S[	        5       S/4/5      R                  X5      n[        R                  " [        SS9   [        X05      " S//S/S	S
9  SSS5        g! , (       d  f       g= f)z}Test that the right error message is raised when metadata is passed while
not supported when `enable_metadata_routing=False`.rk   rl   r  rp   r   z1is only supported if enable_metadata_routing=Truer   r1   r   )sample_weightpropN)
r4   r   r6   r	   r   r)   r   r   re   r3   )r  r&   r'   trss       r(   *test_routing_passed_metadata_not_supportedr'  _
  s    
 	)Y'(**AA
guw45
6
:
:1
@C	M
 	qcU1#C@
 
 
s   +B		
B)enable_metadata_routingc           	         [         R                  " / SQ/ SQ/5      R                  n/ SQn[        5       nS/SpT[	        S[        US9R                  SSS	9R                  SSS	9S
/4/5      nU S:X  a!  UR                  XXES	9  UR                  XUS	9  O[        X`5      " XXES	9  [        U5      (       d   eU H  n[        UU U UUS9  M     g)z>Test that metadata is routed correctly for column transformer.rk   rl   r  r1   r   rp   )registryTr$  metadatar   r7   )objr  parentr$  r,  N)r4   r   r6   r   r	   r   set_fit_requestset_transform_requestr)   r7   r3   rR   r   )r  r&   r'   r*  r$  r,  r&  _trss           r(   ,test_metadata_routing_for_column_transformerr2  n
  s     	)Y'(**AA{H c38
 $h7 tdC&&TD&I	

C MEaxHQRx==='	
 r,   c                       " S S[         5      n [        R                  " / SQ/ SQ/5      R                  n/ SQnS/SpC[	        SU " 5       R                  S	S	S
9R                  S	S	S
9S/4/5      nUR                  XX4S
9  UR                  XX4S
9  g)zQTest metadata routing when the sub-estimator doesn't implement
``fit_transform``.c                   (    \ rS rSrSS jrSS jrSrg)>test_metadata_routing_no_fit_transform.<locals>.NoFitTransformi
  Nc                 *    U(       d   eU(       d   eU $ r"   r#   )r%   r&   r'   r$  r,  s        r(   r)   Btest_metadata_routing_no_fit_transform.<locals>.NoFitTransform.fit
  s      =O8Kr,   c                 *    U(       d   eU(       d   eU$ r"   r#   )r%   r&   r$  r,  s       r(   r7   Htest_metadata_routing_no_fit_transform.<locals>.NoFitTransform.transform
  s      =O8Hr,   r#   )NNN)NNr9   r#   r,   r(   NoFitTransformr5  
  s    	
	r,   r:  rk   rl   r  r1   r   rp   Tr+  r   N)	r   r4   r   r6   r	   r/  r0  r)   r   )r:  r&   r'   r$  r,  r&  s         r(   &test_metadata_routing_no_fit_transformr;  
  s    
	 	 	)Y'(**AA c38
   tdC&&TD&I	

C GGAGAa-Kr,   c                    [         R                  " / SQ/ SQ/5      R                  n/ SQnS/SpC[        S[	        5       S/4/5      nSU  3n[
        R                  " [        [        R                  " U5      S	9   U S
:X  a"  UR                  X5        UR                  XUS9  O[        XP5      " XX4S9  SSS5        g! , (       d  f       g= f)zCTest that the right error is raised when metadata is not requested.rk   rl   r  r1   r   rp   r   zw[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for ConsumingTransformer.r   r7   r+  N)r4   r   r6   r	   r   r   r   re   r8  r9  r)   r7   r3   )r  r&   r'   r$  r,  r&  error_messages          r(   2test_metadata_routing_error_for_column_transformerr>  
  s     	)Y'(**AA c38
g';'=sCD
EC	66<X	?  
z=)A	B[ GGAMMM!8MLC ]V 
C	B	Bs   99B;;
C	c                  T    [        S[        5       S/4/5      n U R                  5         g )Nrp   r   )r	   r   get_metadata_routingr  s    r(   +test_get_metadata_routing_works_without_fitrA  
  s*     
W&:&<qcBC	DBr,   c                      [        S[        5       S/4/[        5       R                  SS9R	                  SS9S9n U R                  5       nUR                  SS/5      [        S/5      :X  d   eg )Nrp   r   Tr,  rr   r)   r,  )r	   r   r   r/  r0  r@  consumessetr   routers     r(   %test_remainder_request_always_presentrH  
  sr     

>#aS	)*&(	$	'				-	
B $$&F??5:,/3
|3DDDDr,   c                      [        S[        5       R                  SS9R                  SS9S 4/5      n U R	                  5       nUR                  SS/5      [        S/5      :X  d   eg )Nrp   TrC  c                     / $ r"   r#   )r&   s    r(   rw   9test_unused_transformer_request_present.<locals>.<lambda>
  s    "r,   r)   r,  )r	   r   r/  r0  r@  rD  rE  rF  s     r(   'test_unused_transformer_request_presentrL  
  sr     
 $& $/&&&5	


B $$&F??5:,/3
|3DDDDr,   )__doc__r  r8  r  r  r   r4   r   numpy.testingr   scipyr   sklearnr   sklearn.baser   r   sklearn.composer	   r
   r   sklearn.exceptionsr   sklearn.feature_extractionr   sklearn.feature_selectionr   sklearn.preprocessingr   r   r   r   %sklearn.tests.metadata_routing_commonr   r   r   sklearn.utils._indexingr   sklearn.utils._testingr   r   r   r   sklearn.utils.fixesr   r   r   r@   rH   rX   r_   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r	  r  r  r  r'  r/  r3  r:  r<  rN  rT  rV  rZ  r\  r_  rm  rs  r   rx  r   r|  r  r  r  r  r  r  r  r  r  r  r  r  r9  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r$  r+  r1  r3  rangerV  ri  r[  r_  rc  rj  rn  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  skipif__version__r  r"  r'  r2  r;  r>  rA  rH  rL  )is   0r(   <module>ra     s    	     )  " 8 
 . 5 7  
 3  >m - 	D 	D - -?(D" +k8-DE`9 F`9F D%=x6IJ5%.	!E5>2$  
 *UDM:,: ; K,:^(XVT> .9W :W.J( .9A :A2,1,h"  v}&=> $ ? $F,J
<%."b6(4#26-"` +
"QC(
qcA3	s+
u	35IJ	?	?* 3dE]C D 
qc
	1#	q!qc	4-	 5$-0	44" 
qc
	q!qc	4-	 5$-0
XJ	hZ 	7)	xj)	7)6	*XJ7	tW	z*	w	 8*-
44, 
q!f	1#A	q!q!f	&	')<=	44(28  .98 :8. .98 :8(+"\0 
I EGaS)Hegs+CD%-
X
	
 EGaS)Hegs+CD'
X
	
 EGaS)Hfqc+BC'
X		
 EGaS)HmaS+IJ'
X
	
 %'A378MRX	
 EGaS)Hegs+CDPVU	
 %'A378FKP	
y@CH E?#;<
5 =ICJ
5
) /(	E 

'D^'DE	# F	#" %
[	!4D9
[	!4/AB
[	!4#ut<
dVX.5
ugt,
eT*
		{D1
dSE4(
j299+t4
y	!;d;
hse,	VUD!/YY)		
.-/.-&*>>$ "C	 ,/%  

$ 	
		
D
D !meT]4KLBB }n6F&GH	7 I	7- }n6F&GH7 I7. }n6F&GH: I: +-FGuwv&FG!" H H!"H4D0(U  - >+c3Z8=3%0 S	
 >+c3Z8=3%0 3	
 >+cU36C5) 9	
 >66*:;_M <	
 >3*5u==3%0 3	
 >eAh*GhS9h*GH3%P>eAh*GhS9h*GH3%P 	
$ 6C5) 	
 >+U1a[9 +&	
 >+cU365A;/ 9	
 >+c3Z8=%1+6 S	
 >+U3_= +&	
 >+cU365c?3 .)	
 >+c3Z8=%S/: 	
Ktwp.qwp. ,s ,s ,7# 7# 7 H >+c3Z8=3%0 29	
 >+c3Z8=3%0 /0	
 >+c3Z8=%S/: -	
'#&N.O&N.& - >+c3Z8=3%0  	
 >3%03*==3%0 #J	
 >+cU36C5) 	
 >66*:;_M !	
 >3*5u==3%0 	
 >eAh*GhS9h*GH3%P>uQx*Hx!T!:x*HIC5Q =	
 6C5) 	
 >+U1a[96C5) 	
 >+cU365A;/ 	
 >+c3Z8=%1+6  	
 >+U3_=6C5) 	
 >+cU365c?3 #J	
 >+c3Z8=%S/:  	
 >+c3Z8=%S/: 	
Oorf.grf." 0 >+cU3=3%0 	
 >3*5u==3%0 	
 >3%03%8=3%0 	
 >3%03%86C5) 	
 >3*5u==3*5 	
 >3%03%8=3%0>3%03%8
 	
 >3*5u==3%0>3%03%8
 	
 >eAh*GhS9h*GH3%P>eAh*GhS9h*GH3%P ;	
 >3*5uQ{C=3%0>3%03%8
 	
 >3*5u==%1+6>3%03%8
 	
 >3*5uS#G=3%0>3%03%8
 	
 >3*5u==%S/:>3%03%8
 	
}gjV#WjV#, 4tUmDv}&=>5 ? E5. v}&=>4-8*- 9 ?*-Z v}&=>%- ?%-T= ( A !,/0g	
 I	
 /0g	
( H)( HF 5%.	!E5>2$  
2
208'0&@-4$ +i-BCR DR8 8X*>?" @"J 8X*>?& @&@ &$$%e(<<#  C	C(#6 #HIA JA #HI- 
 . J 
F -L .LD #HI-W . JW& - . -	E .	E -E .Eo  +H*GR +H*Hl +H*Gs$   )}},}"}'},9}1 