
    Pit                    D"   d Z ddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ ddlmZmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZmZ ddl m!Z!m"Z"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-  G d dee          Z. G d de          Z/ G d de          Z0 G d de          Z1 G d de          Z2d Z3d Z4ej5        6                    dddg          d             Z7ej5        6                    d d!d"gd d#g$          ej5        6                    d%g  ej8        d"d"g          d"d"ggg d&$          ej5        6                    d'd"d!g          d(                                     Z9d) Z:d* Z;ej5        6                    d+e,          d,             Z<d- Z=ej5        6                    d+e,          ej5        6                    dg d.          d/                         Z>d0 Z?d1 Z@d2 ZAd3 ZBd4 ZCej5        6                    d5d6d7g          d8             ZDd9 ZEd: ZFd; ZGd< ZHd= ZId> ZJd? ZKd@ ZLdA ZMdB ZNdC ZOej5        6                    dDdgg dEdFgfdgdGgdFgfdH dI dFgfdJgdKgdLgfg dMg dEg dNfg          dO             ZPej5        6                    dPd!d"g          dQ             ZQej5        6                    dRdgdGgf ej8        dg          dGgf eRddG          dGgf ej8        d!d"g          d"d!gfg          dS             ZSej5        6                    dRdgdGgf eRddG          dGgf ej8        d!d"g          d"d!gfdTgdUgfdVdUgf ej8        dTg          dUgf ej8        dTgeTW          dUgf eRddT          dUgf eRdTdT          dUgfg	          dX             ZUej5        6                    dRdgdGdFgf ej8        dg          dGdFgf eRddG          dGdFgf ej8        g dM          g dYfg          dZ             ZVd[ ZWd\ ZXej5        6                    d+e,          d]             ZYej5        6                    d+e,          d^             ZZd_ Z[d` Z\ej5        6                    dadbg edc e.            dgfdd e.            dGgfg e/            e          dff edc e.            dgfdd e.            dGgfgd7e          dff edc e.            dgfddd6dGgfgd7e          dgf edc e.            dgfddd7dGgfgd7e          dff edc e.            dgfgd7e          dgf edc e.            dgfdd e.            dGgfgd6e          dhf edc e.            dgfgd6e          difg          ej5        6                    djdkdlg          dm                         Z]dn Z^do Z_dp Z`dq Zaej5        6                    drejb        ge,          ds             Zcdt Zdej5        6                    dudvdwgdeje        dfdvdwgddeTdxgfdvdwgdefeggdfdygdeTdxgdfdwgdeggdfdwgdegdfdwgdzeje        gdfdvgdefgdfdvgd{eje        gdfdwdygd|ddfdygd}defgfg d~egdfg ddeje        eTdxgdfg          d             Zhd Zid Zjd Zkej5        6                    dg  ej8        g efW          d gg d$          d             Zlej5        6                    ddGgd dgd d"d!gd g          d             Zmej5        6                    ddGgd d"d!gd g          d             Znej5        6                    d5d7 e            g          d             Zod Zpej5        6                    d5d7 e            g          d             Zqej5        6                    d5d7 e            g          d             Zrej5        6                    dg d          ej5        6                    d5 e.            d7d6g          d                         Zsd Ztd Zu G d de.          Zvej5        6                    dd ev            ddgfdd7dgfgd7g dfd ev            ddgfdd7dgfgd6g dfd ev            dgfdd6dgfgd7g dfd evddg          g dfgd7g dfd evddg          dgfdd7dgfgd6g dfd evd  ewdF          D                       dgfd evd  ewdF          D                       dgfgd7g dfdd6dgfgd6g fd ev             eRdGd          fgd6ddgfd ev            dgfdd6 eRdd          fgd7g dfd ev            ddgfdd7 eRdd          fgd7g dfd ev             eRdd          fgd6ddgfd ev            dgfdd6 eRdd          fgd7ddgfd ev            ddgfdd7 eRdd          fgd7g dfg          d             ZxdeydeyfdZzdeydeyfdZ{ej5        6                    dd ev            ddgfdd7dgfgd7ezg dfd ev            ddgfdd7dgfgd6dg dfd ev            ddgfdd7 eRdd          fgd7e{g dfg          d             Z|ej5        6                    dd ev            ddgfdd7dgfgd7g dfd evdg          ddgfdd7dgfgd6ddgfd ev            dgfdd6dgfgd7g dfd evddg          g dfgd7g dfd evddg          dgfdd7dgfgd6g d¢fd evdÄ  ewdF          D                       dgfd evdĄ  ewdF          D                       dgfgd7g dŢfdd6dgfgd6g fd ev             eRdGdF          fdd6dgfgd7g dfd ev            dgfdd6 eRdd          fgd7g dfd ev            ddgfdd7 eRddF          fgd6g dfd ev             eRdd          fdd6dgfgd7g dƢfd ev            dgfdd6 eRdd          fgd7ddgfd ev            ddgfdd7 eRdd          fgd6g dfd ev            ddgfdd7 eRdd          fgd6g dǢfg          dȄ             Z}ej5        6                    dd ev            dgfdd7dgfgd6dfd evddg          dgfdd7dgfgd6dfd evdg          dgfdd7dgfgd7dfd evdg          dgfdd6dgfgd7dfd evddg          dgfdd7ddgfgd6dfd evdg          dgfdd7dgfd evdg          dgfgd7dfd evddg          dgfdd7dgfd evdg          dgfgd7dfd evdЄ  ewdѦ          D                       dgfd evd҄  ewdѦ          D                       dgfgd7dfd evddg           eRdGdF          fdd7dgfd evdg          dgfgd7dfd evddg          dgfdd7 eRddG          fd evdg          dgfgd7dfd evddg           eRdd          fdd7dgfd evdg          dgfgd7dfd evddg          dgfdd7 eRdd          fd evdg          dgfgd7dfg          dԄ             Z~ej5        6                    dd!d"g          ej5        6                    d5d6d7g          dք                         Zej5        6                    d5d6d7g          ej5        6                    dld!d"g          dׄ                         Zej5        6                    d5d6d7g          d؄             Z G dل de          Zej5        6                    d edܬݦ          ddgddgfd6dgdgfd7ddgddgfg          d             Zej5        6                    dg  ej8        d"d"g          d"d"ggg d&$          d             Zd Zd Zd Zd Zd Zej5        6                    ddd g          d             Zej5        6                    dd dg          d             Zej5        6                    dd dg          d             Zej5        j        ej5                             e-ej                   e-d          k     d          d                         Zd Zej5        6                    djg d          d             Zej5        6                    djg d           ed!          d                         Z ed!          d             Zej5        6                    djg d           ed!          d                         Z ed!          d             Z ed!          d             Z ed!          d             ZdS )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                       e Zd ZddZddZdS )TransNc                     | S N selfXys      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/compose/tests/test_column_transformer.pyfitz	Trans.fit/           c                     t          |d          r|                                S t          |dd          dk    rt          j        |          j        S |S )Nto_framendim      )hasattrr,   getattrnp
atleast_2dTr#   s      r'   	transformzTrans.transform2   sQ    1j!! 	 ::<<1fa  A%%=##%%r*   r!   __name__
__module____qualname__r(   r5   r"   r*   r'   r   r   .   s<                r*   r   c                       e Zd ZddZd ZdS )DoubleTransNc                     | S r!   r"   r#   s      r'   r(   zDoubleTrans.fit=   r)   r*   c                     d|z  S )Nr.   r"   r$   r%   s     r'   r5   zDoubleTrans.transform@   s    1ur*   r!   r6   r"   r*   r'   r;   r;   <   s7               r*   r;   c                   $    e Zd Zd ZddZddZdS )SparseMatrixTransc                     || _         d S r!   )csr_container)r$   rB   s     r'   __init__zSparseMatrixTrans.__init__E   s    *r*   Nc                     | S r!   r"   r#   s      r'   r(   zSparseMatrixTrans.fitH   r)   r*   c                 p    t          |          }|                     t          j        ||                    S r!   )lenrB   r   eye)r$   r%   r&   	n_sampless       r'   r5   zSparseMatrixTrans.transformK   s-    FF	!!&*Y	"B"BCCCr*   r!   r7   r8   r9   rC   r(   r5   r"   r*   r'   r@   r@   D   sQ        + + +   D D D D D Dr*   r@   c                       e Zd ZddZddZdS )	TransNo2DNc                     | S r!   r"   r#   s      r'   r(   zTransNo2D.fitQ   r)   r*   c                     |S r!   r"   r#   s      r'   r5   zTransNo2D.transformT   s    r*   r!   r6   r"   r*   r'   rK   rK   P   s<                r*   rK   c                       e Zd ZddZddZdS )
TransRaiseNc                      t          d          Nspecific message
ValueErrorr#   s      r'   r(   zTransRaise.fitY       +,,,r*   c                      t          d          rQ   rS   r#   s      r'   r5   zTransRaise.transform\   rU   r*   r!   r6   r"   r*   r'   rO   rO   X   s<        - - - -- - - - - -r*   rO   c                    
 t          j        g dg dg          j        } t          j        g d          }t          j        g d          }|                    dd          }| }d|fdg|fddg|ft          j        ddg          |ft	          dd          |ft	          dd          |ft          j        ddg          |fddg|ft          j        ddg          |fddg|fg
}|D ]\  
}t          d	t                      
fgd
          }t          |                    |           |           t          |	                    |           
                    |           |           t          d	t                      
fdfgd
          }t          |                    |           |           t          |	                    |           
                    |           |           t          dt                      dgfdt                      dgfg          }t          |                    |           |           t          |	                    |           
                    |           |           t          |j                  dk    sJ ddd}t          dt                      dgfdt                      dgfg|          }	t          j        |d         |z  |d         |z  g          j        }t          |	                    |           |           t          |		                    |           
                    |           |           t          |	j                  dk    sJ t          d	t                      ddgfgd	di          }	t          |	                    |           d|z             t          |		                    |           
                    |           d|z             t          |	j                  dk    sJ d S )Nr   r/   r.   r.         r/   r   r.   TFtransdrop	remainderc                     S r!   r"   )x	selections    r'   <lambda>z)test_column_transformer.<locals>.<lambda>       ) r*   trans1trans2皙?
   rf   rg   transformer_weights)r2   arrayr4   reshapeslicer	   r   r   fit_transformr(   r5   rF   transformers_vstack)X_arrayX_res_first1DX_res_second1DX_res_first
X_res_bothcasesresctrl   bothrc   s             @r'   test_column_transformerr|   `   s   h			999-..0GHYYY''MXiii((N''A..KJ 
K
k
Q	1a&		:&	q!k"	q!j!	4-	 	 +.
$	4,		,
z"E"   
D 
D	3%''9 =>&QQQ2++G44c:::266'??44W==sCCC uww 3 3 3 345
 
 
 	2++G44c:::266'??44W==sCCCC	Xuww4x1#6NO	P	PBr''00*===rvvg0099:FFFr  A%%%% &)B77
EGGaS	!Heggs#;</  D ))M9)N:	
 
   t))'22C888txx((227;;SAAAt!""a''''
577QF	#$7C.  D t))'22C*4DEEEtxx((227;;S:=MNNNt!""a''''''r*   c                     t          j        g dg dg          j        } dt                      dgfdt                      dgfg}t	          |          }t	          t          |                    }t          |                    |           |                    |                      t          |                    |           	                    |           |                    |           	                    |                      d S )NrX   rY   rf   r   rg   r/   )
r2   rm   r4   r   r	   tupler   rp   r(   r5   )rs   transformersct_with_listct_with_tuples       r'   4test_column_transformer_tuple_transformers_parameterr      s    h			999-..0Guww,x1#.FGL$\22L%eL&9&9::M""7++]-H-H-Q-Q   !!++G44'"",,W55    r*   constructor_name	dataframepolarsc                    | dk    rt          j        d          nt          j        |           t          j        g dg dg          j        }t          || ddg          }t          j        g d                              dd	          }|}dg|fddg|ft          dd          |fd
g|fd
d	g|ft          j        d
d	g          |ft          d
d	          |ft          d
d          |ft          j        ddg          |fddg|fg
}| dk    r7|                    d
|fd|f	                    ddgddg          |fg           |D ]\  }t          dt                      fgd          }t          |                    |          |           t          |                    |                              |          |           t          dt                      fdfgd          }t          |                    |          |           t          |                    |                              |          |           t          dt                      dgfdt                      dgfg          }t          |                    |          |           t          |                    |                              |          |           t!          |j                  dk    sJ |j        d         d
         dk    sJ t          dt                      d
gfdt                      d	gfg          }t          |                    |          |           t          |                    |                              |          |           t!          |j                  dk    sJ |j        d         d
         dk    sJ ddd}t          dt                      dgfdt                      dgfg|          }	t          j        |d         |d         z  |d         |d         z  g          j        }t          |	                    |          |           t          |	                    |                              |          |           t!          |	j                  dk    sJ |	j        d         d
         dk    sJ t          dt                      ddgfgddi          }	t          |	                    |          d|z             t          |	                    |                              |          d|z             t!          |	j                  d	k    sJ |	j        d         d
         dk    sJ t          dt                      d
d	gfgddi          }	t          |	                    |          d|z             t          |	                    |                              |          d|z             t!          |	j                  d	k    sJ |	j        d         d
         dk    sJ  G fddt&                    }
t          d |
j                  ddgfg          }|                    |           | dk    r@t          d |
j	                  dfgd          }|                    |           |                                }d	d
g|_        t          dt                      d
fgd          }t          |                    |          |           t          |                    |                              |          |           t!          |j                  dk    sJ |j        d         d
         dk    sJ |j        d         d	         dk    sJ t          |j        d         d         d	g           d S d S )Nr   pandasrX   rY   firstsecondcolumns_namer\   r/   r   r.   TFindexr]   r^   r_   c                     S r!   r"   )r%   rc   s    r'   rd   z3test_column_transformer_dataframe.<locals>.<lambda>   re   r*   rf   rg   r`   rh   ri   rj   rk   c                   *    e Zd Zd ZddZd fd	ZdS )6test_column_transformer_dataframe.<locals>.TransAssertc                     || _         d S r!   expected_type_transform)r$   r   s     r'   rC   z?test_column_transformer_dataframe.<locals>.TransAssert.__init__"  s    +BD(((r*   Nc                     | S r!   r"   r#   s      r'   r(   z:test_column_transformer_dataframe.<locals>.TransAssert.fit%      Kr*   c                     t          || j                  sJ t          |j                  r|                                }|S r!   )
isinstancer   Seriesr,   )r$   r%   r&   dataframe_libs      r'   r5   z@test_column_transformer_dataframe.<locals>.TransAssert.transform(  sC    a!=>>>>>!]122 !JJLLHr*   r!   rI   )r   s   r'   TransAssertr   !  sY        	C 	C 	C	 	 	 		 	 	 	 	 	 	 	r*   r   r   )pytestimportorskipr2   rm   r4   r   rn   ro   extendr   r	   r   r   rp   r(   r5   rF   rq   rr   r   	DataFramecopycolumns)r   rs   X_dfrv   rw   rx   ry   rz   rl   r{   r   X_df2r   rc   s               @@r'   !test_column_transformer_dataframer      si   ;&&+H55+,<==h			999-..0G!(0C  D (999%%--b!44KJ
 K 
8	j)	w	!	!:. k
Q	1a&		:&	q!k"	q!j!	4-	 	 +.
$#E& ;&& K +&!(($w>Q(RR	
	
 
	
 
	
   
> 
>	3%''9 =>&QQQ2++D113777266$<<11$77=== uww 3 3 3 345
 
 
 	2++D113777266$<<11$77====	
EGGgY	'(EGGhZ)HI
 
B r''--z:::rvvd||--d33Z@@@r  A%%%%B"k1111	Xuww4x1#6NO	P	PBr''--z:::rvvd||--d33Z@@@r  A%%%%B"k1111 &)B77
EGGgY	'(EGGhZ)HI/  D ))DM9)DN:	
 
   t))$//555txx~~//55s;;;t!""a''''b!!$3333 
577Wh/	01QT~  D t))$//z1ABBBtxx~~//55sZ7GHHHt!""a''''b!!$3333
577QF	#$7C.  D t))$//z1ABBBtxx~~//55sZ7GHHHt!""a''''b!!$3333      m    
 M4KLLL(#	

 
B T;&&  K8LMMM 	
 	
 	
 	
 		A%''1 56&III2++E22K@@@266%==22599;GGG2#$$))))#A&+5555#A&&00002+B/2QC888887 '&r*   r   TFnumpy)idscolumn_selection)listboolbool_intcallable_columnc                    t          j        g dg dg          j        }|}| r.t          j        d          }|                    |ddg          }n|}|rfd}n}t          dt                      d	d
gfdt                      |fg          }t          |
                    |          |           t          |                    |                              |          |           t          |j                  dk    sJ t          |j        d
         d
         t                    sJ t          dt                      |fdt                      d	d
gfg          }t          |
                    |          |           t          |                    |                              |          |           t          |j                  dk    sJ t          |j        d	         d
         t                    sJ t          dt                      |fgd          }t          |
                    |          |           t          |                    |                              |          |           t          |j                  dk    sJ t          |j        d	         d
         t                    sJ t          j        g g g g          }	t          dt                      |fgd          }t          |
                    |          |	           t          |                    |                              |          |	           t          |j                  dk    sJ t          |j        d	         d
         t                    sJ d S )NrX   rY   r   r   r   r   c                     S r!   r"   )r%   r   s    r'   rd   z7test_column_transformer_empty_columns.<locals>.<lambda>k  s    + r*   rf   r   r/   rg   r.   r]   passthroughr_   r^   )r2   rm   r4   r   r   r   r	   r   rO   r   rp   r(   r5   rF   rq   r   )
r   r   r   rs   rw   pdr%   columnrz   fixtures
    `        r'   %test_column_transformer_empty_columnsr   W  sT    h			999-..0GJ  **LL7H*=L>> "++++!	
EGGaV	$xv&FG
 
B r''**J777rvvayy**1--z:::r  A%%%%b&q)!,j99999	
JLL&	)Hegg1v+FG
 
B r''**J777rvvayy**1--z:::r  A%%%%b&q)!,j99999	WjllF;<	V	V	VBr''**J777rvvayy**1--z:::r  A%%%%b&q)!,j99999hB|$$G	WjllF;<	O	O	OBr''**G444rvvayy**1--w777r  A%%%%b&q)!,j9999999r*   c                  H   t          j        d                              dd          } t          dt	                      dgfdt	                      dgfg          }|                    |           }|j        t          dd          t          dd          t          dd          dk    sJ t          |d d dgf         |d d |j        d         f                    t          |d d dgf         |d d |j        d         f                    t          d	t	                      ddgfgd	d
i          }|                    |           }|j        t          dd          t          dd          dk    sJ t          |d d ddgf         |d d |j        d	         f                    t          |d d g f         |d d |j        d         f                    t          dt	                      ddgfdt                      g fg          }|                    |           }|j        t          dd          t          dd          t          dd          dk    sJ t          |d d ddgf         |d d |j        d         f                    t          |d d g f         |d d |j        d         f                    t          |d d g f         |d d |j        d         f                    t          d	t                      g fgd          }|                    |           }|j        t          dd          t          dd          dk    sJ t          |d d g f         |d d |j        d	         f                    t          |d d ddgf         |d d |j        d         f                    d S )Nr[      r.   rf   r   rg   r/   rf   rg   r`   r]   rh   rk   )r]   r`   r`   r   r_   )
r2   arangern   r	   r   rp   output_indices_ro   r   rO   )rs   rz   X_transs      r'   &test_column_transformer_output_indicesr     s   ill""1a((G	Xuww4x1#6NO	P	PBw''G1++1++1a[[" "    
 wqqq1#v23Eh3O0O(PQQQwqqq1#v23Eh3O0O(PQQQ 

577QF	#$7C.
 
 
B w''G5A;;U1a[[!Q!QQQQQwqqq1a&y)7111b6H6Q3Q+RSSSwqqq"u~wqqq"2D[2Q/Q'RSSS 
XuwwA7(JLLRT9UV	W	WBw''G1++1++1a[[" "    
 wqqq1a&y)7111b6H6R3R+STTTwqqq"u~wqqq"2DX2N/N'OPPPwqqq"u~wqqq"2D[2Q/Q'RSSS	WjllB78M	R	R	RBw''G5A;;U1a[[!Q!QQQQQwqqq"u~wqqq"2DW2M/M'NOOOwqqq1a&y)7111b6H6U3U+VWWWWWr*   c                     t          j        d          } |                     t          j        d                              dd          ddg          }t          dt                      dgfd	t                      dgfg          }|                    |          }|j	        t          d
d          t          dd          t          d
d
          dk    sJ t          |d d d
gf         |d d |j	        d         f                    t          |d d dgf         |d d |j	        d	         f                    t          |d d g f         |d d |j	        d         f                    t          dt                      d
gfd	t                      dgfg          }|                    |          }|j	        t          d
d          t          dd          t          d
d
          dk    sJ t          |d d d
gf         |d d |j	        d         f                    t          |d d dgf         |d d |j	        d	         f                    t          |d d g f         |d d |j	        d         f                    d S )Nr   r[   r   r.   r   r   r   rf   rg   r   r/   r   r`   )r   r   r   r2   r   rn   r	   r   rp   r   ro   r   )r   r   rz   r   s       r'   )test_column_transformer_output_indices_dfr     s   		X	&	&B<<	!,,Q22Wh<O<PPD	
EGGgY	'(EGGhZ)HI
 
B t$$G1++1++1a[[" "    
 wqqq1#v23Eh3O0O(PQQQwqqq1#v23Eh3O0O(PQQQwqqq"u~wqqq"2D[2Q/Q'RSSS	Xuww4x1#6NO	P	PBt$$G1++1++1a[[" "    
 wqqq1#v23Eh3O0O(PQQQwqqq1#v23Eh3O0O(PQQQwqqq"u~wqqq"2D[2Q/Q'RSSSSSr*   rB   c                 f    | t          j        dd                    }|d d dgf         }|}ddgt          dd          fD ]}d|fd|ffD ]\  }}t          dt	                      |fg|d	
          }t          j        |                    |                    sJ t          |                    |          |           t          |                    |          	                    |          |           ddgt          dd          fD ]}t          dt	                      |fgd	          }t          j        |                    |                    sJ t          |                    |          |           t          |                    |          	                    |          |           d S )Nr   r.   r   )r   r/   r^   r   r]   皙?r`   sparse_thresholdr   )
r   rG   ro   r	   r   issparserp   r   r(   r5   )rB   X_sparserv   rw   colr`   ry   rz   s           r'   $test_column_transformer_sparse_arrayr     s   }VZ1--..H 111qc6"KJqc5A;;' T T &4}j6QR 	T 	TNIs"577C()YQT  B ?2#3#3H#=#=>>>>>()9)9()C)CSIII()9)9)C)CH)M)MsSSSS	T Aa$ W W%''3 783OOOr//99:::::$R%5%5h%?%?LLL$RVVH%5%5%?%?%I%I:VVVV	W Wr*   c                     dt          d          dgg dg} t          j        dt          d          ddgg dg          }t          dt	                      ddgfdt                      d	gfg          }t          |                    |           |           t          |                    |           	                    |           |           d S )
Nr/   nana)r   r   br   )r\   r   r   r/   	numericalcategoricalr.   )
floatr2   rm   r	   r   r   r   rp   r(   r5   )X_listexpected_resultrz   s      r'   test_column_transformer_listr     s    %,,$kkk2Fhea#MM	
 O 
.**QF3MOOaS1	

 
B r''//AAArvvf~~//77IIIIIr*   )rm   r   r   c                 F   t          j        g dg dg          j        }t          ||ddg          }t	          dt                      dgfdt          |           d	fgd
          }|                    |           |                    |          }t          j
        |          sJ |j        |j        d         |j        d         d	z   fk    sJ t          |                                d d d	d f         t          j        |j        d                              t          |j                  dk    sJ |j        d         d         dk    sJ t	          dt                      dgfdt          |           d	fgd          }|                    |           |                    |          }t          j
        |          rJ |j        |j        d         |j        d         d	z   fk    sJ t          |d d d	d f         t          j        |j        d                              d S )NrX   rY   r   r   r   rf   r   rg   r/   r   r   r.   r\   r`   rh   )r2   rm   r4   r   r	   r   r@   r(   r5   r   r   shaper   toarrayrG   rF   rq   )rB   r   r%   	col_transr   s        r'   'test_column_transformer_sparse_stackingr     s4    	)))YYY'((*A1.gx=PQQQA!
EGGaS	!H.?.N.NPQ#RS  I MM!!!!$$G?7#####=W]1-w}Q/?!/CDDDDDw((ABB/a8H1I1IJJJy&''1,,,,"2&q)[8888!
EGGaS	!H.?.N.NPQ#RS  I MM!!!!$$Gw'''''=W]1-w}Q/?!/CDDDDDwqqq!""u~rvgmA.>'?'?@@@@@r*   c                     t          j        g dg dgd          } t          t                      dgfdddgfd	
          }|                    |           }|j        dk    sJ t          |                                t          j        g dg dg                     t          t                      dgfddgfd	
          }t          j	        t          d          5  |                    |            d d d            d S # 1 swxY w Y   d S )N)r   r/   T)r   r.   FOdtyper   r   r/   r.         ?r   csr)r/   r   r/   r/   )r   r/   r.   r   z'For a sparse output, all columns shouldmatch)r2   rm   r   r   rp   formatr   r   r   raisesrT   )dfrz   r   s      r'   )test_column_transformer_mixed_cols_sparser      sj   	>>>???33	?	?	?B	 	1#A 7#
 
 
B r""G>U""""w(("(LLL,,,3O*P*PQQQ	 	1# 4s
 
 
B 
z)R	S	S	S   	                 s   D  DDc                     t          j        ddgddggt                    j        } t	          dt                      dgfdt                      d	gfgd
          }|                    |           }t          j        |          rJ |j	        rJ dD ]m}t	          dt          d          dgfdt          d          d	gfg|          }|                    |           }t          j        |          sJ |j	        sJ ndD ]m}t	          dt          d          dgfdt          d          d	gfg|          }|                    |           }t          j        |          rJ |j	        rJ ndD ]m}t	          dt          d          dgfdt          d          d	gfg|          }|                    |           }t          j        |          rJ |j	        rJ nd S )Nr   r   ABr   rf   r   rg   r/   皙?r   )g㈵ ?r/   T)sparse_outputF)g      ?r   )gQ?r   r/   )
r2   rm   objectr4   r	   r   rp   r   r   sparse_output_)rs   r   ry   thress       r'   (test_column_transformer_sparse_thresholdr   6  sq   hc
S#J/v>>>@G "
MOOaS	)Hmoo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                     t          j        g dg dg          j        } t          dt	                      dfg          }d}t          j        t          |          5  |                    |            d d d            n# 1 swxY w Y   t          j        t          |          5  |	                    |            d d d            n# 1 swxY w Y   t          dt                      dfg          }|j        |j	        fD ]@}t          j        t          d          5   ||            d d d            n# 1 swxY w Y   Ad S )N        r          @r         @g      @r]   r   z1D data passed to a transformerr   rR   )r2   rm   r4   r	   r   r   r   rT   r(   rp   rO   )rs   r   msgfuncs       r'   $test_column_transformer_error_msg_1Dr   j  s   h9::<G!G^-=-=q#A"BCCI
+C	z	-	-	-  g               
z	-	-	- ) )((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) "GZ\\1#=">??I	 78  ]:-?@@@ 	 	DMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s6   A>>BB$CC
C
D33D7	:D7	c                     t          j        g dg dg          j        } t          ddt	                      dfg          }d}t          j        t          |          5  |                    |            d d d            n# 1 swxY w Y   t          j        t          |          5  |	                    |            d d d            d S # 1 swxY w Y   d S )NrX   rY   )rf   r^   r   rg   r/   z%the 'trans2' transformer should be 2Dr   )
r2   rm   r4   r	   rK   r   r   rT   rp   r(   rs   rz   r   s      r'   test_2D_transformer_outputr   {  sN   h			999-..0G 
1Hikk13MN	O	OB
1C	z	-	-	- " "
!!!" " " " " " " " " " " " " " " 
z	-	-	-  
w                 s$   A??BB%CCCc                     t          j        d          } t          j        g dg dg          j        }|                     |ddg          }t          dt                      dfg          }d}t          j        t          |	          5  |
                    |           d d d            n# 1 swxY w Y   t          j        t          |	          5  |                    |           d d d            d S # 1 swxY w Y   d S )
Nr   rX   rY   col1col2r   rf   z%the 'trans1' transformer should be 2Dr   )r   r   r2   rm   r4   r   r	   rK   r   rT   rp   r(   )r   rs   r   rz   r   s        r'   !test_2D_transformer_output_pandasr     su   		X	&	&Bh			999-..0G<<&&)9<::D 
Xy{{F;<	=	=B
1C	z	-	-	-  
               
z	-	-	-  
t                 s$   	B++B/2B/C44C8;C8r`   r^   r   c                    t          j        g dg dg          j        }dddgt          dd          t          j        dg          fD ]k}t	          dt                      |fg| 	          }t          j        t          d
          5  |	                    |           d d d            n# 1 swxY w Y   ldddgt          dd          fD ]k}t	          dt                      |fg| 	          }t          j        t          d          5  |	                    |           d d d            n# 1 swxY w Y   lddg}t	          dt                      |fg| 	          }|	                    |           t          j        g dg dg dg          j        }d}t          j        t          |          5  |
                    |           d d d            n# 1 swxY w Y   t          j        g dg          j        }d}t          j        t          |          5  |
                    |           d d d            d S # 1 swxY w Y   d S )NrX   rY         ?stringr/   sr   r]   r_   zNo valid specificationr   otherr   r   Specifying the columnsr   r   r[   	   zIX has 3 features, but ColumnTransformer is expecting 2 features as input.zIX has 1 features, but ColumnTransformer is expecting 2 features as input.)r2   rm   r4   ro   r	   r   r   r   rT   r(   r5   )r`   rs   r   rz   X_array_morer   X_array_fewererr_msgs           r'   'test_column_transformer_invalid_columnsr    sI   h			999-..0G h]E!SMM28SE??C  %''3 78INNN]:-EFFF 	 	FF7OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 8W-uS#?  %''3 78INNN]:-EFFF 	 	FF7OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 a&C	Weggs34		J	J	JBFF7OOO8YYY			999=>>@L
UC	z	-	-	- # #
\"""# # # # # # # # # # # # # # #HII	
  	  	T  
z	1	1	1 $ $
]###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $sH   B))B-	0B-	D**D.	1D.	/GGGH88H<?H<c                  8    G d dt                     } t          j        g dg dg          j        }t	          d |             dgfg          }d}t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )	Nc                       e Zd ZddZd ZdS )<test_column_transformer_invalid_transformer.<locals>.NoTransNc                     | S r!   r"   r#   s      r'   r(   z@test_column_transformer_invalid_transformer.<locals>.NoTrans.fit  r   r*   c                     |S r!   r"   r>   s     r'   predictzDtest_column_transformer_invalid_transformer.<locals>.NoTrans.predict  s    Hr*   r!   )r7   r8   r9   r(   r
  r"   r*   r'   NoTransr    s7        	 	 	 		 	 	 	 	r*   r  rX   rY   r]   r   z1All estimators should implement fit and transformr   )	r   r2   rm   r4   r	   r   r   	TypeErrorr(   )r  rs   rz   r   s       r'   +test_column_transformer_invalid_transformerr    s        -    h			999-..0G	Wggii!56	7	7B
=C	y	,	,	,  
w                 s   ,BBBc                      t                      } t                      }t          | df|dgf          }t          |j         \  }}}|dk    sJ || |fk    sJ |ddgfk    sJ d S )Nr   r   )standardscaler
normalizer)r   r   r   zipr   )scalernormrz   namesr   r   s         r'   test_make_column_transformerr    s    F<<D	 &'!2TH:4F	G	GB#&#8 E<44444FD>))))w
+++++++r*   c                     t          j        d          } t          j        g dg dg          j        }|                     |ddg          }t                      }t          dt                      |j        fg          }t          ||j        f          }t          |                    |          |                    |                     d S )Nr   rX   rY   r   r   r   r  )r   r   r2   rm   r4   r   r   r	   r   r   r   rp   )r   rs   r   r  ct1ct2s         r'   #test_make_column_transformer_pandasr    s    		X	&	&Bh			999-..0G<<'8)<<==D<<D
fjllDLAB
C
CC
!4"6
7
7C))$//1B1B41H1HIIIIIr*   c                     t                      } t                      }t          | df|dgfddd          }|j        t          | df|dgf          j        k    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ t          j        d          }t          j
        t          |          5  t          | df|dgfd	d
d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r^   g      ?)n_jobsr`   r   zRmake_column_transformer() got an unexpected keyword argument 'transformer_weights'r   ri   r/   )pcaTransfrk   )r   r   r   r   r  r`   r   reescaper   r   r  )r  r  rz   r   s       r'   #test_make_column_transformer_kwargsr     s}   F<<D	 		z
 
 
B 	"FG#4thZ6HIIV	W 	W 	W 	W 9>>>><6!!!!#%%%%
)	1 C 
y	,	,	, 
 
WH:(*a 8 8	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   1CC Cc                      t                      } t                      }t                      }t          | df|dgf|          }|j        |k    sJ d S )Nr   r   r_   )r   r   r   r`   )r  r  r`   rz   s       r'   2test_make_column_transformer_remainder_transformerr"    sc    F<<D  I	 	D8*-
 
 
B <9$$$$$$r*   c                  ^   t          dt                      dgfdt                      dgfg          } i dd dddd	d| j        d         d         d
dddddd| j        d         d         ddddddd| j        dd dddddd}|                                 |k    sJ |                     d           |                                 d         rJ |                     d           d dd	d| j        d         d         ddd| j        d dddd}|                                 |k    sJ d S )Nrf   r   rg   r/   r  r`   r^   r   333333?trans1__copyTtrans1__with_meantrans1__with_stdtrans2__copytrans2__with_meantrans2__with_stdr   rl   verbose_feature_names_outverboseFforce_int_remainder_cols
deprecated)r&  r   rf   )r  r`   r   rf   rg   r(  r)  r*  r   rl   r+  r,  r-  )r	   r   r   
get_params
set_paramsrz   exps     r'   &test_column_transformer_get_set_paramsr4    s   	
N$$qc	*X~7G7G!,MN
 
B$V 	C 	"/!$Q'	
 	 	T 	D 	"/!$Q' 	 	T 	D 	 	t 	$T 	5  	#L!C& ==??c!!!!MMEM***}}23333MMM'''/!$Q'! #%)$0 C  ==??c!!!!!!r*   c                  |   t          j        g dg dg          j        } t          dt	                      dgfdt	          d          dgfg          }t          |d	          rJ |                    |            t          |d	          sJ t          |j        d         t                    sJ t          |j        j	        t                    sJ t          |j        d         t                    sJ t          |j        j
        t                    sJ |j        j
        j        rJ |j        j	        j        d
k    sJ d S )Nr   r   rf   r   rg   F)with_stdr/   rq   r   )r2   rm   r4   r	   r   r0   r(   r   named_transformers_rf   rg   r6  mean_rs   rz   s     r'   (test_column_transformer_named_estimatorsr:  9  sD   h9::<G	~''!-~u555s;	

 
B r?+++++FF7OOO2'''''b,X6GGGGGb,3^DDDDDb,X6GGGGGb,3^DDDDD%,5555!(.#555555r*   c                  0   t          j        g dg dg          j        } t          dt	                      dgfg          }|                    |            t          |j        d         d         d          rJ t          |j        d         d         d          sJ t          dt	                      dgfg          }|	                    |            t          |j        d         d         d          rJ t          |j        d         d         d          sJ d S )Nr   r   r]   r   r/   r8  )
r2   rm   r4   r	   r   r(   r0   r   rq   rp   r9  s     r'   test_column_transformer_cloningr<  M  s   h9::<G	Wn&6&6<=	>	>BFF7OOOrq)!,g666662#A&q)733333	Wn&6&6<=	>	>BWrq)!,g666662#A&q)73333333r*   c                     t          j        g dg dg          j        } t          dt	                      ddgfg          }t          j        t                    5  |                                 d d d            n# 1 swxY w Y   |	                    |            t          j        d          }t          j        t          |          5  |                                 d d d            d S # 1 swxY w Y   d S )Nr   r   r]   r   r/   zETransformer trans (type Trans) does not provide get_feature_names_outr   )r2   rm   r4   r	   r   r   r   r   get_feature_names_outr(   r  r  AttributeErrorr   s      r'   )test_column_transformer_get_feature_namesr@  [  si   h9::<G	Wegg1v67	8	8B	~	&	& # #
  """# # # # # # # # # # # # # # # FF7OOO
)O C 
~S	1	1	1 # #
  """# # # # # # # # # # # # # # # # # #s$   A;;A?A?
C,,C03C0c                     t          j        g dg dg          j        } t          dt	                      dgfdddgfg          }t          j        dgd	gd
gg          }t          |                    |           |           t          |                    |                               |           |           t          |j
                  dk    sJ |j
        d         d         dk    sJ t          dddgfdddgfg          }t          |                    |                               |           j        d           t          |                    |           j        d           t          |j
                  dk    sJ |j
        d         d         dk    sJ t          j        g dg dg          j        } t          dt	                      dgfdddgfg          }| }t          |                    |           |           t          |                    |                               |           |           t          |j
                  dk    sJ |j
        d         d         dk    sJ d S )Nr   r   rf   r   rg   r^   r/   r   r   r   r.   r\   r`   )r   r   r   )r2   rm   r4   r	   r   r   rp   r(   r5   rF   rq   r   )rs   rz   r3  s      r'   'test_column_transformer_special_stringsrB  j  sg   h9::<G	Xuww4x!6MN	O	OB
(SEC53%(
)
)Cr''00#666rvvg00993???r  A%%%%B"k1111 
Xvs3h5LM	N	NBrvvg0099?HHHr''006???r  A%%%%B"k1111 h9::<G	Xuww4xQRPS6TU	V	VB
Cr''00#666rvvg00993???r  A%%%%B"k111111r*   c                   	   t          j        g dg dg          j        } t          j        g d                              dd          }t          j        g d                              dd          }| }t	          dt                      dgfg          }t          |                    |           |           t          |                    |           	                    |           |           t          |j                  dk    sJ |j        d         d         dk    sJ |j        d         d         d	k    sJ t          |j        d         d         dg           t	          d
t                      dgfgd          }t          |                    |           |           t          |                    |           	                    |           |           t          |j                  dk    sJ |j        d         d         dk    sJ t          |j        d         d         t                    sJ t          |j        d         d         dg           t	          dt                      dgfgd          }t          |                    |           |d d d d df                    t          |                    |           	                    |           |d d d d df                    t          |j                  dk    sJ |j        d         d         dk    sJ t          |j        d         d         t                    sJ t          |j        d         d         dg           t	          dd	dgfgd          }t          |                    |           |           t          |                    |           	                    |           |           t          |j                  dk    sJ |j        d         d         dk    sJ t          |j        d         d         t                    sJ t          |j        d         d         dg           t          t                      dgf          }|j        d	k    sJ d S )NrX   rY   r\   r/   rf   r   r.   r`   r^   r]   r   r_   )r2   rm   r4   rn   r	   r   r   rp   r(   r5   rF   rq   r   r   r   r`   )rs   rv   X_res_secondrw   rz   s        r'   !test_column_transformer_remainderrE    sQ   h			999-..0G(999%%--b!44K8III&&..r155LJ 
Xuww45	6	6Br''00+>>>rvvg0099;GGGr  A%%%%B"k1111B"f,,,,r'+A.444 
Weggs34	N	N	NBr''00*===rvvg0099:FFFr  A%%%%B"k1111b&r*1-/BCCCCCr'+A.444 
Xuww45	O	O	OBr''00*QQQ"W2EFFFrvvg0099:aaa2g;NOOOr  A%%%%B"k1111b&r*1-/BCCCCCr'+A.444 
Xvs34	N	N	NBr''00,???rvvg0099<HHHr  A%%%%B"k1111b&r*1-/BCCCCCr'+A.444 
!%''A3	0	0B<6!!!!!!r*   z%cols1, cols2, expected_remainder_cols)FTFr.   r/   c                     dgS Nr   r"   rb   s    r'   rd   rd     s    A3 r*   c                     dgS Nr/   r"   rH  s    r'   rd   rd     s    1# r*   r   r   C)TFF)FFTc                    t          j        d          }t          | t                    rHt          | d         t                    r-t          j        d          }|                    |g d          }t          t                      | ft                      |fd          }|
                    |           |j        d         d         |k    sJ d	S )
z{Check that the remainder columns format matches the format of the other
    columns when they're all strings or masks.
    r/   r   r   r   )r   r   rK  r   r   r_   r\   N)r2   onesr   r   strr   r   r   r   r   rp   rq   )cols1cols2expected_remainder_colsr%   r   rz   s         r'   (test_column_transformer_remainder_dtypesrS    s     	A% 5:eAh#<#< 5 **LLOOOL44 
!	%	%
 
 
B
 QB#'>>>>>>>r*   r-  c                 (   t          j        d          }t          dt                      dgfdt                      dgfgd|           }t	          j        t          d	          5  |                    |           d
d
d
           d
S # 1 swxY w Y   d
S )zbCheck that ColumnTransformer raises a FutureWarning when
    force_int_remainder_cols is set.
    rM  T1r   T2r/   r   )r`   r-  z(`force_int_remainder_cols` is deprecatedr   N)r2   rN  r	   r   r   warnsFutureWarningr(   )r-  r%   rz   s      r'   )test_force_int_remainder_cols_deprecationrY    s    
 	A	
!	eggs34!9
 
 
B 
m+U	V	V	V  
q			                 s   $BBBzkey, expected_colsc                 $   t          j        g dg dg          j        }|}t          dt	                      | fgd          }t          |                    |          |           t          |                    |                              |          |           t          |j
                  dk    sJ |j
        d         d         d	k    sJ t          |j
        d         d
         t                    sJ |j
        d         d         |k    sJ d S )NrX   rY   rf   r   r_   r.   r\   r   r`   r/   )r2   rm   r4   r	   r   r   rp   r(   r5   rF   rq   r   r   keyexpected_colsrs   rw   rz   s        r'   'test_column_transformer_remainder_numpyr^    s    h			999-..0GJ	
EGGS	!"
 
 
B r''00*===rvvg0099:FFFr  A%%%%B"k1111b&r*1-/BCCCCCB"m333333r*   r   r   pd-indexr   c                    t          j        d          }t          | t                    r| dk    r|                    dg          } t          j        g dg dg          j        }|                    |ddg          }|}t          dt                      | fgd	
          }t          |                    |          |           t          |                    |                              |          |           t          |j                  dk    sJ |j        d         d         dk    sJ t          |j        d         d         t"                    sJ |j        d         d         |k    sJ d S )Nr   r_  r   rX   rY   r   r   rf   r   r_   r.   r\   r   r`   r/   )r   r   r   rO  Indexr2   rm   r4   r   r	   r   r   rp   r(   r5   rF   rq   r   )r\  r]  r   rs   r   rw   rz   s          r'   (test_column_transformer_remainder_pandasrb    ss     
	X	&	&B#s "z 1 1hhy!!h			999-..0G<<'8)<<==DJ	
EGGS	!"
 
 
B r''--z:::rvvd||--d33Z@@@r  A%%%%B"k1111b&r*1-/BCCCCCB"m333333r*   )FTTc                    t          j        g dg dg dg          j        }|                                }|d d ddfxx         dz  cc<   t	          dt                      | fgt                                }t          |                    |          |           t          |	                    |          
                    |          |           t          |j                  dk    sJ |j        d	         d
         dk    sJ t          |j        d	         d         t                    sJ |j        d	         d         |k    sJ d S )NrX   rY      r[   rZ   r/   r   r.   rf   r_   r\   r   r`   )r2   rm   r4   r   r	   r   r;   r   rp   r(   r5   rF   rq   r   r[  s        r'   -test_column_transformer_remainder_transformerrf  "  sU    h			999iii899;GJ qqq!A#v!	
EGGS	!"--
 
 
B
 r''00*===rvvg0099:FFFr  A%%%%B"k1111b&r*1-{;;;;;B"m333333r*   c                     t          j        g dg dg dg          j        } t          dt	                      g dfgt                                }t          |                    |           |            t          |                    |           	                    |           |            t          |j                  dk    sJ |j        d         d         d	k    sJ d S )
NrX   rY   rd  rf   r_   r/   r\   r   r`   )r2   rm   r4   r	   r   r;   r   rp   r(   r5   rF   rq   r9  s     r'   :test_column_transformer_no_remaining_remainder_transformerrh  ?  s    h			999iii899;G	Xuww			:;{}}	U	U	UBr''00':::rvvg00997CCCr  A%%%%B"k111111r*   c                     t          j        g dg dg dg          j        } d|                                 d d ddf         z  }t	          ddd	gfgt                      
          }t          |                    |           |           t          |                    |           	                    |           |           t          |j                  dk    sJ |j        d         d	         dk    sJ t          |j        d         d         t
                    sJ t          |j        d         d         ddg           d S )NrX   rY   rd  r.   r/   r   rf   r^   r   r_   r\   r`   )r2   rm   r4   r   r	   r;   r   rp   r(   r5   rF   rq   r   )rs   rw   rz   s      r'   7test_column_transformer_drops_all_remainder_transformerrj  J  s8   h			999iii899;G W\\^^AAAqsF++J	Xvs34	N	N	NBr''00*===rvvg0099:FFFr  A%%%%B"k1111b&r*1-{;;;;;r'+A.A77777r*   c                    t          j        g dg dg dg          j        }t          dt	                      dgfgt          |           d          }|                    |          }t          j        |          sJ |j	        dk    sJ t          j
        |d d df                             d	d
          t          j        d          f          }t          |                                |           t          |j                  dk    sJ |j        d	         d         dk    sJ t#          |j        d	         d
         t
                    sJ t          |j        d	         d         d
dg           d S )NrX   rY   rd  rf   r   r   r   r   rZ   r\   r/   r   r.   r`   )r2   rm   r4   r	   r   r@   rp   r   r   r   hstackrn   rG   r   r   rF   rq   r   )rB   rs   rz   r   	exp_arrays        r'   4test_column_transformer_sparse_remainder_transformerro  Z  ss   h			999iii899;G	
EGGaS	!"#M22
 
 
B w''G?7##### =J&&&&	7111a4=00Q77CDDIw(()444r  A%%%%B"k1111b&r*1-/@AAAAAr'+A.A77777r*   c                 f   t          j        g dg dg dg          j        }t          dddgfgt	          |           d          }|                    |          }t          j        |          sJ |j        d	k    sJ t          |
                                t          j        d
                     t          |j                  dk    sJ |j        d         d         dk    sJ t          |j        d         d         t                    sJ t          |j        d         d         ddg           d S )NrX   rY   rd  rf   r^   r   r   r   )r   r   r   r.   r\   r`   r/   )r2   rm   r4   r	   r@   rp   r   r   r   r   r   rG   rF   rq   r   )rB   rs   rz   r   s       r'   =test_column_transformer_drop_all_sparse_remainder_transformerrq  r  s?   h			999iii899;G	
FQC	 !#M22
 
 
B w''G?7##### =F""""w(("&))444r  A%%%%B"k1111b&r*1-/@AAAAAr'+A.A77777r*   c                     t          dt                      dgfgt                                } d | j        dddd| j        d         d         ddd| j        d dddd	}|                                 |k    sJ |                     d
           |                                 d         rJ |                     d           d | j        ddddd| j        d dddd}|                                 |k    sJ d S )Nrf   r   r_   Tr$  r/   Fr.  )r  r`   remainder__copyremainder__with_meanremainder__with_stdr   rf   r%  r&  r'  r   rl   r+  r,  r-  )ru  ru  r   r/  )r  r`   rs  rt  ru  r   rf   r   rl   r+  r,  r-  )r	   r   r`   r   r0  r1  r2  s     r'   5test_column_transformer_get_set_params_with_remainderrv    s0   	
N$$qc	*+~7G7G
 
 
B
 \ $#/!$Q'! #%)$0 C$ ==??c!!!!MMeM,,,}}45555MMM'''\ $$#%)$0 C ==??c!!!!!!r*   c                     t          j        g dg dg dg                              d          j        } t	          g t                                }|                                }|d         sJ |                    |           }|j        | j        k    sJ t          |j
                  dk    sJ |j
        d         d	         d
k    sJ |j
        d         d         g dk    sJ d S )NrX   rY   rd  r   r_   rt  r/   r\   r   r`   r.   )r2   rm   astyper4   r	   r   r0  rp   r   rF   rq   )rs   rz   paramsr   s       r'   %test_column_transformer_no_estimatorsrz    s    h			999iii899@@IIKG	2)9)9	:	:	:B]]__F())))w''G=GM))))r  A%%%%B"k1111B"iii//////r*   estpatternrf   rg   r_   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(   rp   c                    t          j        g dg dg dg          j        }t          | |          }|                     d            ||           |                                j        r
J d            |                     d            ||           t          j        ||                                d                   sJ d S )	NrX   rY   rd  F)r,  zGot output for verbose=FalseTr   )	r2   rm   r4   r1   r1  
readouterroutr  r   )r{  r|  r}  capsysrs   r   s         r'   test_column_transformer_verboser    s    L h			999iii899;G3DNN5N!!!DMMM  ""&FF(FFF&NN4N   DMMM8GV..0034444444r*   c                  f    t          g                               d          } | j        dk    sJ d S )Nr.   )r  )r	   r1  r  rz   s    r'   0test_column_transformer_no_estimators_set_paramsr    s3    	2			)	)	)	3	3B9>>>>>>r*   c                     t          j        g dg dg          j        t          j        g dg          j        } fd}t          dt	                      |fgd          }t          |                              |            t          |                                                            |            t          |j
        d         d                   sJ |j        d         d         dgk    sJ d S )	NrX   rY   c                 *    t          |            dgS rG  )r   )r%   rs   s    r'   r   z8test_column_transformer_callable_specifier.<locals>.func  s    1g&&&s
r*   r]   r^   r_   r   r.   )r2   rm   r4   r	   r   r   rp   r(   r5   callabler   rq   )rv   r   rz   rs   s      @r'   *test_column_transformer_callable_specifierr    s   h			999-..0G(III;'')K     
Weggt45	H	H	HBr''00+>>>rvvg0099;GGGBOA&q)*****Aq!aS((((((r*   c                  N   t          j        d          } t          j        g dg dg          j        }t          j        g dg          j        }|                     |ddg          fd}t          dt                      |fgd	
          }t          |	                              |           t          |
                                                            |           t          |j        d         d                   sJ |j        d         d         dgk    sJ d S )Nr   rX   rY   r   r   r   c                 r    t          | j        j                   t          | j        j                   dgS )Nr   )r   r   values)r%   r   s    r'   r   zBtest_column_transformer_callable_specifier_dataframe.<locals>.func2  s3    19dl33318T[111yr*   r]   r^   r_   r   r.   )r   r   r2   rm   r4   r   r	   r   r   rp   r(   r5   r  r   rq   )r   rs   rv   r   rz   r   s        @r'   4test_column_transformer_callable_specifier_dataframer  *  s+   		X	&	&Bh			999-..0G(III;'')K<<'8)<<==D    
 
Weggt45	H	H	HBr''--{;;;rvvd||--d33[AAABOA&q)*****Aq!gY......r*   c                     t           j                            dd          } t          j        dgdgg          }t          j        | |gd          } t                      }t          d|dgfgd          }t          d|dgfgd          }t          |                    |           |                    |                      d S )Nr.   r/   axisoher\   r   r_   )	r2   randomrandnrm   concatenater   r	   r   rp   )r%   X_categoriesr  tf_1tf_2s        r'   /test_column_transformer_negative_column_indexesr  >  s    
	1A8aS1#J''L
<(q111A
//CucB401]KKKDucA3/0MJJJDt))!,,d.@.@.C.CDDDDDr*   
array_typec                     t          j        g dg dg dg dg          } | |          }t          dt                      g dfg          }|                    |          }|j        dk    sJ d S )Nr/   r.   r   rZ      r[   )r  r[      )re  r   ri   identity)FTFT)r   r.   )r2   	transposer	   r   rp   r   )r  r%   column_transformerr   s       r'   %test_column_transformer_mask_indexingr  J  s     	iiiIIIzzzBCCA
1A*
)++-G-G-G	HI  !..q11G=F""""""r*   c                      ddgddgddgg} t          dt                      dgfd	t                      dgfg          }t          |d
          rJ |                    |            |j        dk    sJ d S )Nr/   r.   r   rZ   r  r[   r   r   r   n_features_in_)r	   r;   r0   r(   r  )r%   rz   s     r'   test_n_features_inr  W  s     Q!Q!Q A	S+--!5[]]QC7PQ	R	RBr+,,,,,FF1III!!!!!!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                 .   t          j        d          }|                    t          j        g dt
                    t          j        g dt                    g ddg d          }t          |||          }t           ||          |            d S )	Nr   rX   r   r   onetwothreer  r   )dtype_includedtype_excluder|  )	r   r   r   r2   rm   intr   r
   r   )colsr|  includeexcluder   r   selectors          r'   ,test_make_column_selector_with_select_dtypesr  b  s    0 
	X	&	&B<<x			555///???...	
 	

 433   D $Wg  H xx~~t,,,,,r*   c                     t          j        d          } |                     t          j        g dt
                    t          j        g dt                    g dg ddg d          }|d	                             d
          |d	<   t          d
t          dg          }t          t          j
                  }t                      }t                      }t          ||f||f          }t          |dd	gf|ddgf          }|                    |          }|                    |          }	t          ||	           d S )Nr   rX   r   r   )r  r  r  )lowmiddlehigh)r  r  col_catr  r   r  categoryr   r  r  r  r  )r   r   r   r2   rm   r  r   rx  r
   r   numberr   r   r   rp   r   )
r   r   cat_selectornum_selectorr  r  ct_selector	ct_direct
X_selectorX_directs
             r'   1test_column_transformer_with_make_column_selectorr    sV   		X	&	&B<<x			555///???,,,000		
 	
 ?>>   D 9o,,Z88DO'z686TUUUL'bi@@@L
//CF)3*=?UVVK'	y)$%i0H'I I **400J&&t,,HJ)))))r*   c                      t          t          j                  } t          j        ddgg          }d}t	          j        t          |          5   | |           d d d            d S # 1 swxY w Y   d S )Nr  rh   r   z=make_column_selector can only be applied to pandas dataframesr   )r
   r2   r  rm   r   r   rT   )r  r%   r   s      r'   test_make_column_selector_errorr    s    #")<<<H
3*A
IC	z	-	-	-                   s   A((A,/A,c                     t          j        d          } |                     t          j        g dt
                    t          j        g dt                    g ddg d          }t          t          dg	          }t          j
        t          j        |                    }t           ||           ||                     d S )
Nr   rX   r   r   r  r  r   r   r  )r   r   r   r2   rm   r  r   r
   r   pickleloadsdumpsr   )r   r   r  selector_pickeds       r'    test_make_column_selector_pickler    s    		X	&	&B<<x			555///???...	
 	

 433   D $682DEEEHl6<#9#9::Oxx~~t'<'<=====r*   	empty_colc                     g S r!   r"   rH  s    r'   rd   rd     s    B r*   )r   rm   r  c                 <   t          j        d          }|                    g dg dd          }t          dt	                      ddgfdt	                      | fg	          }|                    |           t          |                                g d
           d S )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   r>  )r  r   r   rz   s       r'    test_feature_names_empty_columnsr    s     
	X	&	&B	HH	I	IB	MOOff%56}	:

 
 
B FF2JJJ
  ""$Q$Q$Q    r*   r  c                     dgS rJ  r"   rH  s    r'   rd   rd     s    1# r*   r   c                     dgS )Nr   r"   rH  s    r'   rd   rd     s    6( r*   c                 
    ddgS NFTr"   rH  s    r'   rd   rd     s
    5$- r*   c                    t          j        d          }|                    g dg dd          }t          dt	                      | fg          }|                    |           t          |                                dg           dS )z1Checks name when selecting only the second columnr   r  r  r  r  r  Nr  )r  r   r   rz   s       r'   test_feature_names_out_pandasr    s     
	X	&	&B	HH	I	IB	UMOOX>?	@	@BFF2JJJr//11M?CCCCCr*   c                     dgS rJ  r"   rH  s    r'   rd   rd     s     r*   c                 
    ddgS r  r"   rH  s    r'   rd   rd     s
    udm r*   c                     ddgddgddgg}t          dt                      | fg          }|                    |           t          |                                dg           dS )z=Checks name when selecting the second column with numpy arrayr   r  r   r  	ohe__x1_zN)r	   r   r(   r   r>  )r  r%   rz   s      r'   !test_feature_names_out_non_pandasr    sj    
 sc3Z#s,A	UMOOX>?	@	@BFF1IIIr//11K=AAAAAr*   c                     t                      }t          d|ddgfg|           }|                                }|j        dk    sJ |j        ddgdfk    sJ |j        || fk    sJ d S )Nr  r   r   r   r`   r  r`    r   r	   _sk_visual_block_r  name_details
estimators)r`   r  rz   visual_blocks       r'   test_sk_visual_block_remainderr    s     //C	cFF#345
 
 
B ''))L!55555$&&)92(>>>>>"sI&6666666r*   c                      t                      } t          d| ddgfg          }|                                }|j        dk    sJ |j        ddgfk    sJ |j        | fk    sJ d S )Nr  r   r   r  )r  r  )r  rz   r  s      r'   #test_sk_visual_block_remainder_dropr  	  s    
//C	%vv6F)G(H	I	I	IB''))L))))$&&)9(;;;;;"sf,,,,,,r*   c                 l   t          j        d          }t                      }t          d|ddgfg|           }|                    g dg dg dg d	d
          }|                    |           |                                }|j        dk    sJ |j        ddgddgfk    sJ |j	        || fk    sJ d S )Nr   r  r   r   r  r   r   cr  r  r   rZ   r  )r   r   col3col4r  r  r  )
r   r   r   r	   r   r(   r  r  r  r  )r`   r   r  rz   r   r  s         r'   ,test_sk_visual_block_remainder_fitted_pandasr    s     
	X	&	&B
//C	cFF#345
 
 
B 
#OO#OOIIII		
 	

 
B FF2JJJ''))L!55555$&&)9FF;K(LLLLL"sI&6666666r*   c                 @   t          j        g dg dgt                    }t                      }t	          d|ddgfg|           }|                    |           |                                }|j        dk    sJ |j        ddgd	gfk    sJ |j	        || fk    sJ d S )
Nr  r  r   scaler   r.   r  )r  r`   r/   )
r2   rm   r   r   r	   r(   r  r  r  r  )r`   r%   r  rz   r  s        r'   +test_sk_visual_block_remainder_fitted_numpyr  +  s     	)))YYY'u555AF	A/0I
 
 
B FF1III''))L!77777$!Q!5555"vy&9999999r*   explicit_colname)r   r   r   r/   c                 Z   t          j        d          }t          j        g dg dg          j        }|                    |ddg          }t          j        g dg dg          j        }|                    |ddg          }t          dt                      | fg|          }|                    |           |	                    |          }|	                    |          }	t          |	|           |                                }
g d	|
d
<   |	                    |
          }	t          |	|           t          | t                    ra|                                }d}t          j        t          |          5  |	                    |           ddd           dS # 1 swxY w Y   dS dS )z=Test the interaction between remainder and column transformerr   rX   rY   r   r   r   bycolr_   r   thirdr   r   N)r   r   r2   rm   r4   r   r	   r   r(   r5   r   r   r   rO  r   rT   )r  r`   r   X_fit_arrayX_fit_dfX_trans_array
X_trans_dftfX_fit_transr   X_extended_dfrs   r  s                r'   8test_column_transformer_reordered_column_names_remainderr  :  s    
	X	&	&B(IIIyyy1224K||K'81D|EEHHiii3446Mmh5HIIJ	Wegg/?@AY	W	W	WBFF8,,x((K ll:&&GG[))) MMOOM&YYM'll=))GG[)))"C(( " ""$$*]:W555 	" 	"LL!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" "s   ;FF"%F"c                  f   t          j        d          } t          j        d          }|                     |g d          }|                    dd          }t          d	t                      dgfgd
          }|                    |           d}t          j	        t          |          5  |                    |           ddd           n# 1 swxY w Y   t          d	t                      dgfgd          }|                    |           |                    |          }|                    |          }t          ||           t          d	ddgfgd
          }|                    |           |                    |          }|                    |          }t          ||           dS )zRTest the interaction between {'drop', 'passthrough'} and
    missing column names.r   rl  )r   r   r   r  dr   r  r/   r  r  r   r_   zcolumns are missing: {'c'}r   Nr^   )r   r   r2   rN  r   r^   r	   r   r(   r   rT   r5   r   )r   r%   r   
df_droppedr  r   df_dropped_transdf_fit_transs           r'   <test_feature_name_validation_missing_columns_drop_passthoughr  `  s    
	X	&	&B
fA	a!5!5!5	6	6B1%%J 
Weggs34	N	N	NBFF2JJJ
'C	z	-	-	- ! !
Z   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
Weggs34	G	G	GBFF2JJJ||J//<<##L$l333 
Wfse45	O	O	OBFF2JJJ||J//<<##L$l33333s   .CCCc                  t   t          j        d          } g d}|                     g dg|          }t          dt	                      ddgfgd	          }|                    |           t          |j        |           t          |j        t          j
                  sJ |j        j        t          k    sJ d
S )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   r_   N)r   r   r   r	   r   r(   r   feature_names_in_r   r2   ndarrayr   r   )r   feature_namesr   rz   s       r'   test_feature_names_in_r    s     
	X	&	&B#OOM	yyyk=	9	9B	WeggSz:;}	U	U	UBFF2JJJr+];;;b*BJ77777%//////r*   c                       e Zd ZddZddZdS )TransWithNamesNc                     || _         d S r!   feature_names_out)r$   r  s     r'   rC   zTransWithNames.__init__  s    !2r*   c                 T    | j          t          j        | j         t                    S |S )Nr   )r  r2   asarrayr   )r$   input_featuress     r'   r>  z$TransWithNames.get_feature_names_out  s)    !-:d4FCCCCr*   r!   )r7   r8   r9   rC   r>  r"   r*   r'   r  r    s<        3 3 3 3     r*   r  z'transformers, remainder, expected_namesbycol1r  r  bycol2)	bycol1__d	bycol1__c	bycol2__dremainder__aremainder__b)r   r!  r"  r   )	bycol1__br#  remainder__cpca1pca2)r   r   r  )bycol1__pca1bycol1__pca2r&  r   )	bycol1__ar%  	bycol2__bc                     g | ]}d | S r  r"   .0is     r'   
<listcomp>r2        *G*G*G999*G*G*Gr*   c                     g | ]}d | S r.  r"   r/  s     r'   r2  r2    r3  r*   )bycol1__pca0r)  bycol2__pca0bycol2__pca1r#  r&  remainder__dr   r%  r!  rZ   r#  )r   r!  	bycol2__cr"  r#  r$  c                 V   t          j        d          }|                    g dgg d          }t          | |          }|                    |           |                                }t          |t          j                  sJ |j	        t          k    sJ t          ||           dS )DCheck feature_names_out for verbose_feature_names_out=True (default)r   r/   r.   r   rZ   r
  r   r_   Nr   r   r   r	   r(   r>  r   r2   r  r   r   r   r   r`   expected_namesr   r   rz   r  s          r'   #test_verbose_feature_names_out_truer@    s    t 
	X	&	&B	|||n.B.B.B	C	CB	
 
 
B FF2JJJ$$&&EeRZ(((((;&    un-----r*   
trans_name	feat_namec                      | d d          d| S )Nr.   z++r"   rA  rB  s     r'   &_feature_names_out_callable_name_clashrE  (  s    !n++	+++r*   c                 X    |                                   d|                                  S )N=)upperrD  s     r'   !_feature_names_out_callable_upperrI  ,  s,      669??#4#4666r*   zBtransformers, remainder, verbose_feature_names_out, expected_names)by++dzby++crJ  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                 X   t          j        d          }|                    g dgg d          }t          | ||          }|                    |           |                                }t          |t          j                  sJ |j	        t          k    sJ t          ||           dS )r;  r   r<  r
  r   r`   r+  Nr=  )r   r`   r+  r?  r   r   rz   r  s           r'   .test_verbose_feature_names_out_callable_or_strrM  0  s    V 
	X	&	&B	|||n.B.B.B	C	CB	";
 
 
B
 FF2JJJ$$&&EeRZ(((((;&    un-----r*   )r  r  r   r   )r   r   r  )r'  r(  r  r  c                     g | ]}d | S r.  r"   r/  s     r'   r2  r2    r3  r*   c                     g | ]}d | S )kpcar"   r/  s     r'   r2  r2    s    *H*H*H!:!::*H*H*Hr*   )pca0r'  kpca0kpca1r   r  r  r  )r  r  r   c                 X   t          j        d          }|                    g dgg d          }t          | |d          }|                    |           |                                }t          |t          j                  sJ |j	        t          k    sJ t          ||           dS );Check feature_names_out for verbose_feature_names_out=Falser   r<  r
  r   FrL  Nr=  r>  s          r'   $test_verbose_feature_names_out_falserV  j  s    j 
	X	&	&B	|||n.B.B.B	C	CB	"'
 
 
B
 FF2JJJ$$&&EeRZ(((((;&    un-----r*   z*transformers, remainder, colliding_columnsz['b']z['c']z['a']z
['b', 'c']bycol3z
['a', 'b']c                     g | ]}d | S r.  r"   r/  s     r'   r2  r2  -  r3  r*   r[   c                     g | ]}d | S r.  r"   r/  s     r'   r2  r2  .  r3  r*   z-['pca0', 'pca1', 'pca2', 'pca3', 'pca4', ...]c                 t   t          j        d          }|                    g dgg d          }t          | |d          }|                    |           t          j        d| d          }t          j        t          |	          5  |	                                 d
d
d
           d
S # 1 swxY w Y   d
S )rU  r   r<  r
  r   FrL  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(   r  r  r   rT   r>  )r   r`   colliding_columnsr   r   rz   r   s          r'   +test_verbose_feature_names_out_false_errorsr\    s   ` 
	X	&	&B	|||n.B.B.B	C	CB	"'
 
 
B
 FF2JJJ
)	J!2 	J 	J 	J C 
z	-	-	- # #
  """# # # # # # # # # # # # # # # # # #s   B--B14B1r+  c                    t          j        d          }|                    g dgg ddg          }t          dt	                      ddgfd	t	                      d
gfg||           }|                    |          }t          |t          j                  sJ |	                    d           |                    g dg|j
        dg          }|                    |          }t          ||j                  sJ |                                }t          |j
        |           t          |j        |j                   dS )z2Check column transformer behavior with set_output.r   r<  r
  ri   r   r   r   r   r  r   r  rL  r5      N)r   r   r   r	   r  rp   r   r2   r  
set_outputr   r5   r>  r   r   )r+  r`   r   r   rz   r   df_testr  s           r'   "test_column_transformer_set_outputrc  o  sG    
	X	&	&B	|||n.B.B.B2$	O	OB	
>##c3Z	08^=M=MPSu2UV";
 
 
B
 r""Ggrz*****MMHM%%%llLLL>2:bTlJJGll7##Ggr|,,,,,0022w(9:::w}gm44444r*   c                    t          j        d          }|                    |                    g dd          |                    g dd          g dg d|                    d	|j        d
gd          d          }t          dt          dd          dgfdt                      dgfg| d                              d          }|r|	                    |          }n(|
                    |                              |          }t          ||j                  sJ t          |j        |                                           dddddddd}|j                                        D ]\  }}|||         k    sJ dS )z6Check ColumnTransformer outputs mixed types correctly.r   dogcatsnaker  r   )greenblueredr   gffffff?g @g@r`  (   ri   r`  d   Int32)petcolorageheightdistancecolor_encodeFint8r   r   rr  rs  rL  r_  float64int64)
color_bluecolor_green	color_redrs  rq  rt  ru  N)r   r   r   r   NAr	   r   r   ra  rp   r(   r5   r   r   r   r>  dtypesitems)	r`   rp   r   r   rz   r   expected_dtypesr   r   s	            r'   &test_column_transform_set_output_mixedr    s    
	X	&	&B	99444J9GGYY777xYHH"??"ll		2ruc"2'	BB	
 	

 
B 
 E@@@	
 N$$ug.	
 "'
 
 
 j8j$$   +""2&&&&**&&r**gr|,,,,,w(@(@(B(BCCC  O n**,, - -
U,,,,,,- -r*   c                 @   t          j        d          }|                    |                    g dd          g dg dd          }t	          dt          d	d
          dgfdt                      dgfg| d	          }|                    |          }t          |t          j
                  sJ |j        dk    sJ |                    d           |                    |          }d
d
d
ddd}|j                                        D ]\  }}|||         k    sJ d S )Nr   re  r  r   rl  rm  )rq  rs  rt  rv  Fint16rx  rq  rs  rL  ry  r_  rz  )pet_catpet_dog	pet_snakert  rs  )r   r   r   r   r	   r   r   rp   r   r2   r  r   ra  r5   r  r  )	r`   r   r   rz   r   r  r  r   r   s	            r'   .test_column_transform_set_output_after_fittingr    st   		X	&	&B	99444J9GG"??"ll	
 	

 
B 
 EAAA
 N$$ug.	
 "'
 
 
B r""Ggrz*****=I%%%%MMHM%%%b!!J O !'--// - -
U,,,,,,- -r*   c                   .    e Zd ZddZddZddZddZdS )	PandasOutTransformerr   c                     || _         d S r!   offset)r$   r  s     r'   rC   zPandasOutTransformer.__init__  s    r*   Nc                 \    t          j        d          }t          ||j                  sJ | S Nr   )r   r   r   r   r$   r%   r&   r   s       r'   r(   zPandasOutTransformer.fit  s/     **!R\*****r*   c                 l    t          j        d          }t          ||j                  sJ || j        z
  S r  )r   r   r   r   r  r  s       r'   r5   zPandasOutTransformer.transform  s6     **!R\*****4;r*   c                     | S r!   r"   )r$   r5   s     r'   ra  zPandasOutTransformer.set_output  s	     r*   )r   r!   )r7   r8   r9   rC   r(   r5   ra  r"   r*   r'   r  r    sd              
   
     r*   r  z;trans_1, expected_verbose_names, expected_non_verbose_namesr   r  trans_0__feat1trans_1__feat0feat1feat0c                    t          j        d          }|                    g dg dd          }t          dt	          d          dgfd	| d
gfg          }|                    |          }t          |t          j                  sJ t          j	        t          d          5  |                                 ddd           n# 1 swxY w Y   |                    d           |                    |          }t          |j        |           |                    d           |                    |          }t          |j        |           dS )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   Nr_  Fr+  )r   r   r   r	   r  rp   r   r2   r  r   r?  r>  ra  r   r   r1  )	r  expected_verbose_namesexpected_non_verbose_namesr   r   rz   
X_trans_npX_trans_df0X_trans_df1s	            r'   ;test_transformers_with_pandas_out_but_not_feature_names_outr    s   8 
	X	&	&B<<///OOOLLMMD	,C8887)D'+	

 
B !!$''Jj"*----- 
~-P	Q	Q	Q # #
  """# # # # # # # # # # # # # # # MMHM%%%""4((K{*,BCCCMMEM222""4((K{*,FGGGGGs   $CC	C	empty_selectionc                    t          j        d          }|                    ddgddggddg          }t          dd	| fd
t	                      ddgfgd          }|                    d           |                    |          }t          |j        ddg           |	                    d           |                    |          }t          |j        ddg           dS )zkCheck 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  r_  numerical__anumerical__bFN)
r   r   r   r	   r   ra  rp   r   r   r1  )r  r   r%   rz   X_outs        r'   "test_empty_selection_pandas_outputr  -	  s     
	X	&	&B
sCj3*-SzBBA	M?;.**S#J7	
 #'
 
 
B MMHM%%%QEu}~~&FGGGMMEM222QEu}sCj11111r*   c                     t          j        d          } |                     ddgddggddgddg	          }t          d
 d          }t	          dddgfd|dgfg          }|                    d           d}t          j        t          |          5  |                    |           ddd           dS # 1 swxY w Y   dS )zmCheck column transformer raises error if indices are not aligned.

    Non-regression test for gh-26210.
    r   r   r  r  r   r   re  r   r^  c                 .    |                      d          S )NT)r^   )reset_indexrH  s    r'   rd   z7test_raise_error_if_index_not_aligned.<locals>.<lambda>S	  s    !--T-** r*   z
one-to-oner  num1r   num2r_  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	   ra  r   rT   rp   )r   r%   reset_index_transformerrz   r   s        r'   %test_raise_error_if_index_not_alignedr  J	  s;   
 
	X	&	&B
sCj3*-Sz!QPPA1**l   
]SE*,se4	

 
B MMHM%%%	& 
 
z	-	-	-  
                 s   B88B<?B<c                     t          j        d          } |                     g dg dd          }t          t	                      t          t                    ft	                      d          }|                    d           |                    |          }| j	        
                    ||           |                    d	           |                    |          }t          |t          j                  sJ d
S )zYCheck that the output is set for the remainder.

    Non-regression test for #26306.
    r   )TFTr  )r   r   r  FrL  r_  defaultN)r   r   r   r   r   r
   r   ra  rp   testingassert_frame_equalr   r2   r  )r   r   rz   r  s       r'   test_remainder_set_outputr  f	  s     
	X	&	&B	///iii@@	A	AB	 			2FFFG#%%"'
 
 
B
 MMHM%%%


2

CJ!!#r***MMIM&&&


2

Cc2:&&&&&&&r*   c                     t          j        d          } t          | d          st          j        d           |                     dddgi          }t          ddgf          }t          j                    5  t          j        d           |	                    |           ddd           n# 1 swxY w Y   |
                                }t          j        t          d	
          5  |	                    |           ddd           n# 1 swxY w Y   |                    d           |	                    |           |                    d           |	                    |                    d                     dS )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   r_  r  g      )r   r   r0   skipr   r   warningscatch_warningssimplefilterrp   convert_dtypesr   rT   ra  fillna)r   r   rz   s      r'   test_transform_pd_nar  ~	  s   
 
	X	&	&B2~&& 
-	
 	
 	
 
sS$K(	)	)B	 -#!7	8	8B		 	"	"  g&&&
               
				B 
z)L	M	M	M  
               MMHM%%%RMMIM&&& RYYt__%%%%%s$   7*B--B14B1'D		DDc                     t          j        d          } t          j        d          }t          j        ddgddgddgg          }t          j        ddgddgddgg          }|                     |d	d
g          }|                    |d	d
g          }t          t                      ddgf          }|                    |           |                    |          }t          ||           |                    |d	d
g          }|                     |d	d
g          }	|                    |           |                    |	          }
t          |
|           dS )z?Check fitting and transforming on pandas and polars dataframes.r   r   r   r/   r.   rZ   r  r   r   r   r   )schemaN)
r   r   r2   rm   r   r   r   r(   r5   r   )r   pl
X_train_np	X_test_np
X_train_pd	X_test_plrz   	out_pl_in
X_train_pl	X_test_pd	out_pd_ins              r'   ,test_dataframe_different_dataframe_librariesr  	  sT   		X	&	&B		X	&	&BAq6Aq6Aq6233J1a&1a&1a&122I j3*==JYSz::I	 %''Aq6!2	3	3BFF:Y''Iy),,, j#s<<JYc
;;IFF:Y''Iy),,,,,r*   c                     t          j        g dg dg          } t          dt                      ddgfdt                      ddgfg          }d}t	          j        t          |	          5  |d          d
d
d
           n# 1 swxY w Y   |                    |            |d         |j        d         u sJ |d         |j        d         u sJ d}t	          j        t          |	          5  |d          d
d
d
           d
S # 1 swxY w Y   d
S )z(Check __getitem__ for ColumnTransformer.rX   r  t1r   r/   t2r.   z5ColumnTransformer is subscriptable after it is fittedr   Nz0'does_not_exist' is not a valid transformer namedoes_not_exist)
r2   rm   r	   r   r   r   r  r(   r7  KeyError)r%   rz   r   s      r'   "test_column_transformer__getitem__r  	  s   
)))YYY'((A	T577QF3dEGGaV5LM	N	NB
AC	y	,	,	,  
4               FF1IIId8r-d33333d8r-d33333
<C	xs	+	+	+  
                 s$   +	B  BB+	DDDtransform_outputr  c                    t          j        d          }|                    t          j                            dd                    }t          dt                      ddgfgd                              | 	          }|	                    |          }|j
        |j
        k    sJ g d
}t          |d          r|j                                        |k    sJ |                                                                |k    sJ dS )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   ri   rZ   r  r   r/   r   r  r_  )
scaler__x0
scaler__x1remainder__x2remainder__x3r   N)r   r   r   r2   r  r  r	   r   ra  rp   r   r0   r   tolistr>  )r  r   r%   preprocessorr   expected_column_namess         r'   @test_column_transformer_remainder_passthrough_naming_consistencyr  	  s    
	X	&	&B
RY__R++,,A$!1!1Aq6:;   j+j,,  ((++G=AG####   w	"" A%%''+@@@@@--//6688<QQQQQQQr*   r   c           	         t          j        |           }|                    g dg dg dd          }t          ddg dfdt	                      dd	gfd
t                      ddgfdt	          d           g dfgd                              |           }|                    |          }t          |j	                  g dk    sJ dS )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  ri   r`     ro     i,  x1x2x3r   r   r   r  r  rK  r  Dc                 &    t          | g d          S Nr/   r  r   rH  s    r'   rd   z9test_column_transformer_column_renaming.<locals>.<lambda>	      nQ.K.K.K r*   Tr   r+  r_  )A__x1A__x2A__x3B__x1B__x2C__x1C__x3N)
r   r   r   r	   r   r   ra  rp   r   r   )r   libr   transformerdf_transs        r'   'test_column_transformer_column_renamingr  	  s    
m
,
,C	iii|||???SS	T	TB#-!3!3!34%''$6.""T4L1 #$K$KLL"""

 #'   j=j))  ((,,H !! & & &      r*   c           	         t          j        |           }|                    g dg dg dd          }t          ddg dfdt	                      dd	gfd
t                      ddgfdt	          d           g dfgd                              |           }t          j        d          }t          j	        t          |          5  |                    |           ddd           dS # 1 swxY w Y   dS )zzCheck 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  rK  r  r  c                 &    t          | g d          S r  r   rH  s    r'   rd   zGtest_column_transformer_error_with_duplicated_columns.<locals>.<lambda>
  r  r*   Fr  r_  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   ra  r  r  r   rT   rp   )r   r  r   r  r  s        r'   5test_column_transformer_error_with_duplicated_columnsr  
  sq    
m
,
,C	iii|||???SS	T	TB#-!3!3!34%''$6.""T4L1 #$K$KLL"""

 #(   j=j))  i	G G 
z	1	1	1 & &!!"%%%& & & & & & & & & & & & & & & & & &s   C))C-0C-z1.3zrequires joblib >= 1.3)reasonc                    t           j                            |                               d          }t	          d          }t          d|dgfgd          }t          j        d	d
          5  |                    |          }ddd           n# 1 swxY w Y   t          |t	                                          |dddgf                              dS )z|Check that ColumnTransformer works in parallel with joblib's auto-memmapping.

    non-regression test for issue #28781
    rl  )sizeF)r   r  r   r.   )r   r  lokyr/   )
max_nbytesN)
r2   r  RandomStateuniformr   r	   joblibparallel_backendrp   r   )global_random_seedr%   r  r  Xts        r'   #test_column_transformer_auto_memmapr  0
  s    		01199v9FFA'''F#!-.  K
 
	 A	6	6	6 * *&&q))* * * * * * * * * * * * * * * B((66qQCyAABBBBBs   0BBBc                  f   t          j        d          } |                     ddddddgddgdddg          }t          t	          d	
          dft                      dgf          }|                    d           |                    |          }t          |j	                  ddgk    sJ dS )zCheck index handling when both pd.Series and pd.DataFrame slices are used in
    ColumnTransformer.

    Non-regression test for issue #31546.
    r   r/   r.   )foobarr   )r  baz)dict_col	dummy_colr   Fr   r  r  r_  N)
r   r   r   r   r   r   ra  rp   r   r   )r   r   tr%   s       r'   )test_column_transformer_non_default_indexr
  I
  s     
	X	&	&B	!"1--q/C/CDQ	
 	
 !f 
 
 
B 	 	u	%	%	%z2			.	 	A LL8L$$$	A==QF""""""r*   )r5   rp   r(   c                 Z   t          j        g dg dg          j        }g d}t          dt	                      dgfg                              ||          }t          j        t          d          5   t          ||           dggdgd	
           ddd           dS # 1 swxY w Y   dS )zTest that the right error message is raised when metadata is passed while
    not supported when `enable_metadata_routing=False`.rX   rY   r  r]   r   z1is only supported if enable_metadata_routing=Truer   r/   r   )sample_weightpropN)
r2   rm   r4   r	   r   r(   r   r   rT   r1   )r}  r%   r&   trss       r'   *test_routing_passed_metadata_not_supportedr  d
  s   
 	)))YYY'((*A		A
guww45
6
6
:
:1a
@
@C	M
 
 
 A A 	VqcU1#C@@@@A A A A A A A A A A A A A A A A A As   3 B  B$'B$)enable_metadata_routingc                    t          j        g dg dg          j        }g d}t                      }dgd}}t	          dt          |                              dd	                              dd	          d
gfg          }| dk    r2|                    ||||	           |	                    |||	           n t          ||           ||||	           t          |          sJ |D ]}t          || | ||           dS )z>Test that metadata is routed correctly for column transformer.rX   rY   r  r/   r   r]   )registryTr  metadatar   r5   )objr}  parentr  r  N)r2   rm   r4   r   r	   r   set_fit_requestset_transform_requestr(   r5   r1   rF   r   )r}  r%   r&   r  r  r  r  _trss           r'   ,test_metadata_routing_for_column_transformerr  s
  sO    	)))YYY'((*A		A{{H c38M
 $h777 tdCC&&TD&II	

 
C 1MHEEEa}xHHHHVQRRRRx=== 
 
'	
 	
 	
 	
 	

 
r*   c                  l    G d dt                     } t          j        g dg dg          j        }g d}dgd}}t	          d |                                 d	d	
                              d	d	
          dgfg          }|                    ||||
           |                    ||||
           dS )zUTest metadata routing when the sub-estimator doesn't implement
    ``fit_transform``.c                       e Zd ZddZddZdS )>test_metadata_routing_no_fit_transform.<locals>.NoFitTransformNc                     |sJ |sJ | S r!   r"   )r$   r%   r&   r  r  s        r'   r(   zBtest_metadata_routing_no_fit_transform.<locals>.NoFitTransform.fit
  s       =OO8Kr*   c                     |sJ |sJ |S r!   r"   )r$   r%   r  r  s       r'   r5   zHtest_metadata_routing_no_fit_transform.<locals>.NoFitTransform.transform
  s       =OO8Hr*   )NNN)NNr6   r"   r*   r'   NoFitTransformr  
  s<        	 	 	 	
	 	 	 	 	 	r*   r   rX   rY   r  r/   r   r]   Tr  r   N)	r   r2   rm   r4   r	   r  r  r(   rp   )r   r%   r&   r  r  r  s         r'   &test_metadata_routing_no_fit_transformr!  
  s    
	 	 	 	 	 	 	 	 	)))YYY'((*A		A c38M
    tdCC&&TD&II	

 
C GGAqGAAAa-(KKKKKr*   c                    t          j        g dg dg          j        }g d}dgd}}t          dt	                      dgfg          }d|  }t          j        t          t          j	        |          	          5  | d
k    r/|
                    ||           |                    |||           n t          ||           ||||           ddd           dS # 1 swxY w Y   dS )zCTest that the right error is raised when metadata is not requested.rX   rY   r  r/   r   r]   r   zw[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for ConsumingTransformer.r   r5   r  N)r2   rm   r4   r	   r   r   r   rT   r  r  r(   r5   r1   )r}  r%   r&   r  r  r  error_messages          r'   2test_metadata_routing_error_for_column_transformerr$  
  sa    	)))YYY'((*A		A c38M
g';'='=sCD
E
EC	?6<	? 	?  
z=)A)A	B	B	B W W[  GGAqMMMMM!=8MLLLL GC  A]XVVVVW W W W W W W W W W W W W W W W W Ws   ;ACC"Cc                  n    t          dt                      dgfg          } |                                  d S )Nr]   r   )r	   r   get_metadata_routingr  s    r'   +test_get_metadata_routing_works_without_fitr'  
  s<     
W&:&<&<qcBC	D	DBr*   c                  0   t          dt                      dgfgt                                          d                              d                    } |                                 }|                    ddg          t          dg          k    sJ d S )Nr]   r   Tr  r_   r(   r  )r	   r   r   r  r  r&  consumessetrz   routers     r'   %test_remainder_request_always_presentr.  
  s     

>##aS	)*&((	$	'	'				-	-	
 
 
B $$&&F??5:,//3
|3D3DDDDDDDr*   c                     t          dt                                          d                              d          d fg          } |                                 }|                    ddg          t          dg          k    sJ d S )Nr]   Tr)  c                     g S r!   r"   )r%   s    r'   rd   z9test_unused_transformer_request_present.<locals>.<lambda>
  s    " r*   r(   r  )r	   r   r  r  r&  r*  r+  r,  s     r'   'test_unused_transformer_request_presentr1  
  s     
 $&& $//&&&55	


 

B $$&&F??5:,//3
|3D3DDDDDDDr*   )__doc__r  r  r  r  r   r2   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;   r@   rK   rO   r|   r   markparametrizer   rm   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r"  r4  r:  r<  r@  rB  rE  rS  rY  ro   r^  r   rb  rf  rh  rj  ro  rq  rv  rz  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ranger@  rO  rE  rI  rM  rV  r\  rc  r  r  r  r  r  r  r  r  r  r  r  r  r  thread_unsafeskipif__version__r  r
  r  r  r!  r$  r'  r.  r1  r"   r*   r'   <module>rF     s      				        ) ) ) ) ) )       " " " " " " 8 8 8 8 8 8 8 8         
 . - - - - - 5 5 5 5 5 5 7 7 7 7 7 7                    
 3 2 2 2 2 2            > = = = = = = =    m       -   	D 	D 	D 	D 	D 	D 	D 	D       - - - - - - - -?( ?( ?(D  " +k8-DEE`9 `9 FE`9F D%=x6IJJ5%.	!	!E5>2$$$   
 *UDM::,: ,: ;:  KJ,:^(X (X (XVT T T> .99W W :9W.J J J( .99+-J-J-JKKA A LK :9A6  ,1, 1, 1,h  "      v}&=>> $  $ ?> $F  , , ,J J J
 
 
<% % %." ." ."b6 6 6(4 4 4# # #2 2 26-" -" -"` +
"""QC(
qcA3	s+
u			3335I5I5IJ	 	? ?	 	?* 3dE]CC  DC 
qc
	1#	q!qc	4-	 	 5$-0	 4 4 4" 
qc
	q!qc	4-	 	 5$-0
XJ	hZ 	7)		xj)	7)6	*	*	*XJ7	tW		z*	w	 	 8*-
 4 4 4, 
q!f	1#A	q!q!f	&&&	'	')<)<)<=	 4 4 4(2 2 28 8 8  .998 8 :98. .998 8 :98(+" +" +"\0 0 0 
I EEGGaS)Heeggs+CD%+--  
X
	
 EEGGaS)Heeggs+CD'  
X
	
 EEGGaS)Hfqc+BC'  
X		
 EEGGaS)HmaS+IJ'  
X
	
 %%''A378MRRRX	
 EEGGaS)Heeggs+CDPV  U	
 %%''A378FKKKP	
y@C CH E?#;<<
5 
5 =<IC CJ
5  
) ) ) / / /(	E 	E 	E 
'D^'DEE	# 	# FE	#" " " %
[	!4D9
[	!4/AB
[	!4#ut<
dVX.5
ugt,
eT*
	{D1
dSE4(
j29+t4
y	!;d;
hse,	VUD!///Y)		
 .- -/ .-&* * *>  > > >" "C	 	 	 ,,/%%%   
  
$ 	
		
 
D D
 
D !mmeT]4K4KL B B B }nn6F6F&GHH	7 	7 IH	7- - - }nn6F6F&GHH7 7 IH7. }nn6F6F&GHH: : IH: +-F-F-FGGuuwwv&FGG!" !" HG HG!"H4 4 4D0 0 0(    U    - >>++c3Z8=3%0 SSS	
 >>++c3Z8=3%0 333	
 >>++cU36C5) 999	
 >>66*:;;___M <<<	
 >>3*55u==3%0 333	
 >>*G*GeeAhh*G*G*GHH3%P>>*G*GeeAhh*G*G*GHH3%P   	
$ 6C5) 	
 >>++UU1a[[9 +&	
 >>++cU3655A;;/ 999	
 >>++c3Z8=%%1++6 SSS	
 >>++UU3__= +&	
 >>++cU3655c??3 .)	
 >>++c3Z8=%%S//:   	
Ktw wp. .qw wp. ,s ,s , , , ,7# 7# 7 7 7 7 H >>++c3Z8=3%0 2999	
 >>++c3Z8=3%0 /000	
 >>++c3Z8=%%S//: -  	
'#& &N. .O& &N.& - >>++c3Z8=3%0    	
 >>3%003*==3%0 #J	
 >>++cU36C5) OO	
 >>66*:;;___M !!!	
 >>3*55u==3%0 OO	
 >>*G*GeeAhh*G*G*GHH3%P>>*H*HuuQxx*H*H*HIIC5Q ===	
 6C5) 	
 >>++UU1a[[96C5) OO	
 >>++cU3655A;;/ OO	
 >>++c3Z8=%%1++6    	
 >>++UU3__=6C5) OO	
 >>++cU3655c??3 #J	
 >>++c3Z8=%%S//:    	
 >>++c3Z8=%%S//: OO	
Oor rf. .gr rf." 0 >>++cU3=3%0 	
 >>3*55u==3%0 	
 >>3%003%8=3%0 	
 >>3%003%86C5) 	
 >>3*55u==3*5 	
 >>3%003%8=3%0>>3%003%8
 	
 >>3*55u==3%0>>3%003%8
 	
 >>*G*GeeAhh*G*G*GHH3%P>>*G*GeeAhh*G*G*GHH3%P ;	
 >>3*55uuQ{{C=3%0>>3%003%8
 	
 >>3*55u==%%1++6>>3%003%8
 	
 >>3*55uuS#G=3%0>>3%003%8
 	
 >>3*55u==%%S//:>>3%003%8
 	
}gj jV# #Wj jV#, 4tUmDDv}&=>>5 5 ?> ED5. v}&=>>4-88*- *- 98 ?>*-Z v}&=>>%- %- ?>%-T    =   ( A ! ,,,/0g	
 I	
 /0g	
 ( H  H) ( HF 5%.	!	!E5>2$$$   
2 2 
20  8' ' '0& & &@- - -4  $ +i-BCCR R DCR8 8X*>??" " @?"J 8X*>??& & @?&D M&$%%e(<(<<#   C C	  
C(# # #6 #H#H#HIIA A JIA #H#H#HII--- 
  
 .- JI 
F ---L L .-LD #H#H#HII---W W .- JIW& ---  .- ---	E 	E .-	E ---E E .-E E Er*   