
    rhr                    8   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jj                  jm                  dddg      d        Z7ejj                  jm                  d d!d"gd d#g$      ejj                  jm                  d%g  ejp                  d"d"g      d"d"ggg d&$      ejj                  jm                  d'd"d!g      d(                      Z9d) Z:d* Z;ejj                  jm                  d+e,      d,        Z<d- Z=ejj                  jm                  d+e,      d.        Z>d/ Z?d0 Z@d1 ZAd2 ZBd3 ZCejj                  jm                  d4d5d6g      d7        ZDd8 ZEd9 ZFd: ZGd; ZHd< ZId= ZJd> ZKd? ZLd@ ZMdA ZNdB ZOejj                  jm                  dCdgg dDdEgfdgdFgdEgfdG dH dEgfdIgdJgdKgfg dLg dDg dMfg      dN        ZPejj                  jm                  dOd!d"g      dP        ZQejj                  jm                  dQdgdFgf ejp                  dg      dFgf eRddF      dFgf ejp                  d!d"g      d"d!gfg      dR        ZSejj                  jm                  dQdgdFgf eRddF      dFgf ejp                  d!d"g      d"d!gfdSgdTgfdUdTgf ejp                  dSg      dTgf ejp                  dSgeTV      dTgf eRddS      dTgf eRdSdS      dTgfg	      dW        ZUejj                  jm                  dQdgdFdEgf ejp                  dg      dFdEgf eRddF      dFdEgf ejp                  g dL      g dXfg      dY        ZVdZ ZWd[ ZXejj                  jm                  d+e,      d\        ZYejj                  jm                  d+e,      d]        ZZd^ Z[d_ Z\ejj                  jm                  d`dag edb e.       dgfdc e.       dFgfg e/       d      def edb e.       dgfdc e.       dFgfgd6d      def edb e.       dgfdcd5dFgfgd6d      dff edb e.       dgfdcd6dFgfgd6d      def edb e.       dgfgd6d      dff edb e.       dgfdc e.       dFgfgd5d      dgf edb e.       dgfgd5d      dhfg      ejj                  jm                  didjdkg      dl               Z]dm Z^dn Z_do Z`dp Zaejj                  jm                  dqej                  ge,      dr        Zcds Zdejj                  jm                  dtdudvgdej                  dfdudvgddeTfdudvgdefeggdfdwgdeTgdfdwgdeTdfdvgdegdfdvgdxej                  gdfdugdefgdfdugdyej                  gdfdvdwgdzddfdwgd{defgfg d|egdfg d}dej                  eTgdfg      d~        Zhd Zid Zjd Zkejj                  jm                  dg  ejp                  g efV      d gg d$      d        Zlejj                  jm                  ddFgd dgd d"d!gd g      d        Zmejj                  jm                  ddFgd d"d!gd g      d        Znejj                  jm                  d4d6 e       g      d        Zod Zpejj                  jm                  d4d6 e       g      d        Zqejj                  jm                  d4d6 e       g      d        Zrejj                  jm                  dg d      ejj                  jm                  d4 e.       d6d5g      d               Zsd Ztd Zu G d de.      Zvejj                  jm                  dd ev       ddgfdd6dgfgd6g dfd ev       ddgfdd6dgfgd5g dfd ev       dgfdd5dgfgd6g dfd evddg      g dfgd6g dfd evddg      dgfdd6dgfgd5g dfd ev ewdE      D  cg c]  } d|  	 c}       dgfd ev ewdE      D  cg c]  } d|  	 c}       dgfgd6g dfdd5dgfgd5g fd ev        eRdFd      fgd5ddgfd ev       dgfdd5 eRdd      fgd6g dfd ev       ddgfdd6 eRdd      fgd6g dfd ev        eRdd      fgd5ddgfd ev       dgfdd5 eRdd      fgd6ddgfd ev       ddgfdd6 eRdd      fgd6g dfg      d        ZxdeydeyfdZzdeydeyfdZ{ejj                  jm                  dd ev       ddgfdd6dgfgd6ezg dfd ev       ddgfdd6dgfgd5dg dfd ev       ddgfdd6 eRdd      fgd6e{g dfg      d        Z|ejj                  jm                  dd ev       ddgfdd6dgfgd6g dfd evdg      ddgfdd6dgfgd5ddgfd ev       dgfdd5dgfgd6g dfd evddg      g dfgd6g dfd evddg      dgfdd6dgfgd5g dfd ev ewdE      D  cg c]  } d|  	 c}       dgfd ev ewdE      D  cg c]  } d|  	 c}       dgfgd6g dfdd5dgfgd5g fd ev        eRdFdE      fdd5dgfgd6g dfd ev       dgfdd5 eRdd      fgd6g dfd ev       ddgfdd6 eRddE      fgd5g dfd ev        eRdd      fdd5dgfgd6g d¢fd ev       dgfdd5 eRdd      fgd6ddgfd ev       ddgfdd6 eRdd      fgd5g dfd ev       ddgfdd6 eRdd      fgd5g dâfg      dĄ        Z}ejj                  jm                  dd ev       dgfdd6dgfgd5dfd evddg      dgfdd6dgfgd5dfd evdg      dgfdd6dgfgd6dfd evdg      dgfdd5dgfgd6dfd evddg      dgfdd6ddgfgd5dfd evdg      dgfdd6dgfd evdg      dgfgd6dfd evddg      dgfdd6dgfd evdg      dgfgd6dfd ev ewd̫      D  cg c]  } d|  	 c}       dgfd ev ewd̫      D  cg c]  } d|  	 c}       dgfgd6dfd evddg       eRdFdE      fdd6dgfd evdg      dgfgd6dfd evddg      dgfdd6 eRddF      fd evdg      dgfgd6dfd evddg       eRdd      fdd6dgfd evdg      dgfgd6dfd evddg      dgfdd6 eRdd      fd evdg      dgfgd6dfg      d΄        Z~ejj                  jm                  dd!d"g      ejj                  jm                  d4d5d6g      dЄ               Zejj                  jm                  d4d5d6g      ejj                  jm                  dkd!d"g      dф               Zejj                  jm                  d4d5d6g      d҄        Z G dӄ de      Zejj                  jm                  d ed֬׫      ddgddgfd5dgdgfd6ddgddgfg      d܄        Zejj                  jm                  dg  ejp                  d"d"g      d"d"ggg d&$      dބ        Zd߄ Zd Zd Zd Zd Zejj                  jm                  ddd g      d        Zejj                  jm                  dd dg      d        Zejj                  jm                  dd dg      d        Zejj                  j                   e-ej                         e-d      k  d      d        Zd Zejj                  jm                  dig d      d        Zejj                  jm                  dig d       ed!      d               Z ed!      d        Zejj                  jm                  dig d       ed!      d               Z ed!      d        Z ed!      d        Z ed!      d        Zyc c} w c c} w c c} w c c} w c c} w c c} w )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y)TransNc                     | S N selfXys      /var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/sklearn/compose/tests/test_column_transformer.pyfitz	Trans.fit/           c                     t        |d      r|j                         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   sC    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y)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;   <   s    r*   r;   c                   "    e Zd Zd ZddZddZy)SparseMatrixTransc                     || _         y 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                 b    t        |      }| j                  t        j                  ||            S r!   )lenrB   r   eye)r$   r%   r&   	n_sampless       r'   r5   zSparseMatrixTrans.transformK   s'    F	!!&**Y	"BCCr*   r!   r7   r8   r9   rC   r(   r5   r"   r*   r'   r@   r@   D   s    +Dr*   r@   c                       e Zd ZddZddZy)	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y)
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      }|j                  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        |j                  |       |       t        |j                  |       j                  |       |       t        d	t               
fdfgd
      }t        |j                  |       |       t        |j                  |       j                  |       |        t        dt               dgfdt               dgfg      }t        |j                  |       |       t        |j                  |       j                  |       |       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        |	j                  |       |       t        |	j                  |       j                  |       |       t        |	j                        dk(  sJ t        d	t               ddgfgd	di      }	t        |	j                  |       d|z         t        |	j                  |       j                  |       d|z         t        |	j                        dk(  sJ y )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|   `   sH   hh	9-.00GHHY'MXXi(N''A.KJ 
K
k
Q	1a&	:&	q!k"	q!j!	4-	 +.
$	4,	,
z"E"   
D	3%'9 =>&Q2++G4c:266'?44W=sC uw 345
 	2++G4c:266'?44W=sC
D 
Xuw4x1#6NO	PBr''0*=rvvg009:Fr A%%% &)B7
EGaS	!Hegs#;</D )))M9)N:	

 a  t))'2C8txx(227;SAt!!"a'''
57QF	#$7C.D t))'2C*4DEtxx(227;S:=MNt!!"a'''r*   c                     t        j                  g dg dg      j                  } dt               dgfdt               dgfg}t	        |      }t	        t        |            }t        |j                  |       |j                  |              t        |j                  |       j                  |       |j                  |       j                  |              y )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    hh	9-.00Guw,x1#.FGL$\2L%eL&9:M""7+]-H-H-Q !++G4'",,W5r*   constructor_name	dataframepolarsc                 ,   | 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      j                  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(  r/|j                  d
|fd|fj                  ddgddg      |fg       |D ]  \  }t        dt               fgd      }t        |j                  |      |       t        |j                  |      j                  |      |       t        dt               fdfgd      }t        |j                  |      |       t        |j                  |      j                  |      |        t        dt               dgfdt               dgfg      }t        |j                  |      |       t        |j                  |      j                  |      |       t!        |j"                        dk(  sJ |j"                  d   d
   dk7  sJ t        dt               d
gfdt               d	gfg      }t        |j                  |      |       t        |j                  |      j                  |      |       t!        |j"                        dk(  sJ |j"                  d   d
   dk7  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        |	j                  |      |       t        |	j                  |      j                  |      |       t!        |	j"                        dk(  sJ |	j"                  d   d
   dk7  sJ t        dt               ddgfgddi      }	t        |	j                  |      d|z         t        |	j                  |      j                  |      d|z         t!        |	j"                        d	k(  sJ |	j"                  d   d
   dk7  sJ t        dt               d
d	gfgddi      }	t        |	j                  |      d|z         t        |	j                  |      j                  |      d|z         t!        |	j"                        d	k(  sJ |	j"                  d   d
   dk7  sJ  G fddt&              }
t        d |
j(                        ddgfg      }|j                  |       | dk(  rt        d |
j                        dfgd      }|j                  |       |j+                         }d	d
g|_        t        dt               d
fgd      }t        |j                  |      |       t        |j                  |      j                  |      |       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       y y )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y)6test_column_transformer_dataframe.<locals>.TransAssertc                     || _         y 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|j                         }|S r!   )
isinstancer   Seriesr,   )r$   r%   r&   dataframe_libs      r'   r5   z@test_column_transformer_dataframe.<locals>.TransAssert.transform(  s9    a!=!=>>>!]112JJLHr*   r!   rI   )r   s   r'   TransAssertr   !  s    	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      s   ;&++H5++,<=hh	9-.00G!(0CD ((9%--b!4KJ
 K 
8	j)	w	!:. k
Q	1a&	:&	q!k"	q!j!	4-	 +.
$#E& ;& K +&!(($w>Q(R	
	
   
>	3%'9 =>&Q2++D137266$<11$7= uw 345
 	2++D137266$<11$7=
> 

EGgY	'(EGhZ)HI
B r''-z:rvvd|--d3Z@r A%%%B"k111	Xuw4x1#6NO	PBr''-z:rvvd|--d3Z@r A%%%B"k111 &)B7
EGgY	'(EGhZ)HI/D )))DM9)DN:	

 a  t))$/5txx~//5s;t!!"a'''b!!$333 
57Wh/	01QT~D t))$/z1ABtxx~//5sZ7GHt!!"a'''b!!$333
57QF	#$7C.D t))$/z1ABtxx~//5sZ7GHt!!"a'''b!!$333m  
 M4K4KL(#	

B T;&  8L8LM 	
 	
 		A%'1 56&I2++E2K@266%=2259;G2##$)))#A&+555#A&&0002++B/2QC87 'r*   r   TFnumpy)idscolumn_selection)listboolbool_intcallable_columnc                    t        j                  g dg dg      j                  }|}| r+t        j                  d      }|j                  |ddg      }n|}|rfd}n}t        dt               d	d
gfdt               |fg      }t        |j                  |      |       t        |j                  |      j                  |      |       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        |j                  |      |       t        |j                  |      j                  |      |       t        |j                        dk(  sJ t        |j                  d	   d
   t              sJ t        dt               |fgd      }t        |j                  |      |       t        |j                  |      j                  |      |       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        |j                  |      |	       t        |j                  |      j                  |      |	       t        |j                        dk(  sJ t        |j                  d	   d
   t              sJ y )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  s    hh	9-.00GJ  *LL7H*=L>+!	
EGaV	$xv&FG
B r''*J7rvvay**1-z:r A%%%b&&q)!,j999	
JL&	)Heg1v+FG
B r''*J7rvvay**1-z:r A%%%b&&q)!,j999	WjlF;<	VBr''*J7rvvay**1-z:r A%%%b&&q)!,j999hhB|$G	WjlF;<	OBr''*G4rvvay**1-w7r A%%%b&&q)!,j999r*   c                     t        j                  d      j                  dd      } t        dt	               dgfdt	               dgfg      }|j                  |       }|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                  |       }|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                  |       }|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                  |       }|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          y )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   iil""1a(G	Xuw4x1#6NO	PBw'G1+1+1a["   
 wq1#v23E3Eh3O0O(PQwq1#v23E3Eh3O0O(PQ 

57QF	#$7C.
B w'G5A;U1a[!QQQQwq1a&y)71b6H6H6Q3Q+RSwq"u~wq"2D2D[2Q/Q'RS 
XuwA7(JLRT9UV	WBw'G1+1+1a["   
 wq1a&y)71b6H6H6R3R+STwq"u~wq"2D2DX2N/N'OPwq"u~wq"2D2D[2Q/Q'RS	WjlB78M	RBw'G5A;U1a[!QQQQwq"u~wq"2D2DW2M/M'NOwq1a&y)71b6H6H6U3U+VWr*   c                     t        j                  d      } | j                  t        j                  d      j                  dd      ddg      }t        dt               dgfd	t               dgfg      }|j                  |      }|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                  |      }|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          y )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2Wh<O<PD	
EGgY	'(EGhZ)HI
B t$G1+1+1a["   
 wq1#v23E3Eh3O0O(PQwq1#v23E3Eh3O0O(PQwq"u~wq"2D2D[2Q/Q'RS	Xuw4x1#6NO	PBt$G1+1+1a["   
 wq1#v23E3Eh3O0O(PQwq1#v23E3Eh3O0O(PQwq"u~wq"2D2D[2Q/Q'RSr*   rB   c                     | 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
                  |j                  |            sJ t        |j                  |      |       t        |j                  |      j                  |      |         ddgt        dd      fD ]  }t        dt	               |fgd	      }t        j
                  |j                  |            sJ t        |j                  |      |       t        |j                  |      j                  |      |        y )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     sl   VZZ1-.H 1qc6"KJqc5A;' T &4}j6QR 	TNIs"57C()YQTB ??2#3#3H#=>>>()9)9()CSI()9)C)CH)MsS	TT Aa$ W%'3 783Or//9:::$R%5%5h%?L$RVVH%5%?%?%I:V	Wr*   c                  J   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        |j                  |       |       t        |j                  |       j                  |       |       y )
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    %,$k2Fhhea#	
O 
.*QF3MOaS1	

B r''/Arvvf~//7Ir*   c                    t        j                  g dg dg      j                  }t        dt	               dgfdt        |       dfgd      }|j                  |       |j                  |      }t        j                  |      sJ |j                  |j                  d   |j                  d   dz   fk(  sJ t        |j                         d d dd f   t        j                  |j                  d                t        |j                        d	k(  sJ |j                  d
   d   dk7  sJ t        dt	               dgfdt        |       dfgd      }|j                  |       |j                  |      }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                y )NrX   rY   rf   r   rg   r/   r   r   r.   r\   r`   rh   )r2   rm   r4   r	   r   r@   r(   r5   r   r   shaper   toarrayrG   rF   rq   )rB   rs   	col_transr   s       r'   'test_column_transformer_sparse_stackingr     s   hh	9-.00G!
EGaS	!H.?.NPQ#RSI MM'!!'*G??7###==W]]1-w}}Q/?!/CDDDDw(AB/a8H1IJy&&'1,,,""2&q)[888!
EGaS	!H.?.NPQ#RSI MM'!!'*Gw'''==W]]1-w}}Q/?!/CDDDDwq!"u~rvvgmmA.>'?@r*   c                     t        j                  g dg dgd      } t        t               dgfdddgfd	
      }|j	                  |       }|j
                  dk(  sJ t        |j                         t        j                  g dg dg             t        t               dgfddgfd	
      }t        j                  t        d      5  |j	                  |        d d d        y # 1 sw Y   y xY w)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     s    	>?33	?B	 	1#A 7#
B r"G>>U"""w("((L,3O*PQ	 	1# 4s
B 
z)R	S  	  s   C""C+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
      }|j                  |       }t        j                  |      rJ |j                  rJ dD ]c  }t	        dt        d      dgfdt        d      d	gfg|      }|j                  |       }t        j                  |      sJ |j                  rcJ  dD ]c  }t	        dt        d      dgfdt        d      d	gfg|      }|j                  |       }t        j                  |      rJ |j                  scJ  dD ]c  }t	        dt        d      dgfdt        d      d	gfg|      }|j                  |       }t        j                  |      rJ |j                  scJ  y )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   3  s   hhc
S#J/v>@@G "
MOaS	)Hmos+KLI 
!
!'
*Cs###''''  
(%=t<qcB=u=sC #
	 %%g.s###''''
(  
,%=t<qcB=u=sC #
	 %%g.??3'''++++
,  
,%=u=sC=u=sC #
	 %%g.??3'''++++
,r*   c                  \   t        j                  g dg dg      j                  } t        dt	               dfg      }d}t        j                  t        |      5  |j                  |        d d d        t        j                  t        |      5  |j                  |        d d d        t        dt               dfg      }|j                  |j                  fD ].  }t        j                  t        d      5   ||        d d d        0 y # 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   SxY w)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   g  s    hh9:<<G!G^-=q#A"BCI
+C	z	- g 
z	- )() "GZ\1#=">?I	 7 78 ]]:-?@ 	M	 	 ) )
	 	s$   D
D6	D"
DD"D+	c                     t        j                  g dg dg      j                  } t        ddt	               dfg      }d}t        j                  t        |      5  |j                  |        d d d        t        j                  t        |      5  |j                  |        d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)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   x  s    hh	9-.00G 
1Hik13MN	OB
1C	z	- "
!" 
z	- 
w " " s   B+B7+B47C c                     t        j                  d      } t        j                  g dg dg      j                  }| j                  |ddg      }t        dt               dfg      }d}t        j                  t        |	      5  |j                  |       d d d        t        j                  t        |	      5  |j                  |       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)
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     s    			X	&Bhh	9-.00G<<&&)9<:D 
Xy{F;<	=B
1C	z	- 
 
z	- 
t   s   C9C C C)r`   r^   r   c                 8   t        j                  g dg dg      j                  }dddgt        dd      t        j                  dg      fD ]P  }t	        dt               |fg| 	      }t        j                  t        d
      5  |j                  |       d d d        R dddgt        dd      fD ]P  }t	        dt               |fg| 	      }t        j                  t        d      5  |j                  |       d d d        R ddg}t	        dt               |fg| 	      }|j                  |       t        j                  g dg dg dg      j                  }d}t        j                  t        |      5  |j                  |       d d d        t        j                  g dg      j                  }d}t        j                  t        |      5  |j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   QxY w# 1 sw Y   }xY w# 1 sw Y   y xY w)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    s   hh	9-.00G h]E!SM288SE?C %'3 78IN]]:-EF 	FF7O	 	 8W-uS#? %'3 78IN]]:-EF 	FF7O	 	 a&C	Wegs34		JBFF7O88Y	9=>@@L
UC	z	- #
\"#HH	
 a	  	T  
z	1 $
]#$ $3	 		 	# #$ $s0   G*'G76HH*G4	7H	HHc                      G d dt               } t        j                  g dg dg      j                  }t	        d |        dgfg      }d}t        j                  t        |      5  |j                  |       d d d        y # 1 sw Y   y xY w)	Nc                       e Zd ZddZd Zy)<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    s    		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    st    -  hh	9-.00G	Wgi!56	7B
=C	y	, 
w  s   '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 y )Nr   r   )standardscaler
normalizer)r   r   r   zipr   )scalernormrz   namesr   r   s         r'   test_make_column_transformerr    st    F<D	 &'!2TH:4F	GB#&#8 E<4444FD>)))w
++++r*   c                  z   t        j                  d      } t        j                  g dg dg      j                  }| j                  |ddg      }t               }t        dt               |j                  fg      }t        ||j                  f      }t        |j                  |      |j                  |             y )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hh	9-.00G<<'8)<<=D<D
fjlDLLAB
CC
!4"6
7C))$/1B1B41H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        y # 1 sw Y   y xY w)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VV	W	W 99>><<6!!!#%%%
))	1C 
y	, 
WH:(*a 8	

 
 
s   7CC c                      t               } t               }t               }t        | df|dgf|      }|j                  |k(  sJ y )Nr   r   r_   )r   r   r   r`   )r  r  r`   rz   s       r'   2test_make_column_transformer_remainder_transformerr!    sJ    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}| j                         |k(  sJ | j	                  d       | j                         d   rJ | j	                  d       d dd	d| j                  d   d   ddd| j                  d dddd}| j                         |k(  sJ y )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_paramsr3    s   	
N$qc	*X~7G!,MN
B$V 	C 	"//!$Q'	
 	 	T 	D 	"//!$Q' 	 	T 	D 	 	t 	$T 	5  	#L!C& ==?c!!!MMEM*}}2333MMM'//!$Q'! #%)$0C  ==?c!!!r*   c                     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 |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 y )Nr   r   rf   r   rg   F)with_stdr/   rq   r   )r2   rm   r4   r	   r   r0   r(   r   named_transformers_rf   rg   r5  mean_rs   rz   s     r'   (test_column_transformer_named_estimatorsr9  6  s    hh9:<<G	~'!-~u5s;	

B r?+++FF7O2'''b,,X6GGGb,,33^DDDb,,X6GGGb,,33^DDD%%,,5555!!((..#555r*   c                     t        j                  g dg dg      j                  } t        dt	               dgfg      }|j                  |        t        |j                  d   d   d      rJ t        |j                  d   d   d      sJ t        dt	               dgfg      }|j                  |        t        |j                  d   d   d      rJ t        |j                  d   d   d      sJ y )Nr   r   r]   r   r/   r7  )
r2   rm   r4   r	   r   r(   r0   r   rq   rp   r8  s     r'   test_column_transformer_cloningr;  J  s    hh9:<<G	Wn&6<=	>BFF7Orq)!,g6662##A&q)7333	Wn&6<=	>BWrq)!,g6662##A&q)7333r*   c                     t        j                  g dg dg      j                  } t        dt	               ddgfg      }t        j                  t              5  |j                          d d d        |j                  |        t        j                  d      }t        j                  t        |      5  |j                          d d d        y # 1 sw Y   dxY w# 1 sw Y   y xY w)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?  X  s    hh9:<<G	Weg1v67	8B	~	& #
  "# FF7O
))OC 
~S	1 #
  "# ## ## #s   C2CCC!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        |j                  |       |       t        |j                  |       j                  |       |       t        |j                        dk(  sJ |j                  d   d   dk7  sJ t        dddgfdddgfg      }t        |j                  |       j                  |       j                  d       t        |j                  |       j                  d       t        |j                        dk(  sJ |j                  d   d   dk7  sJ t        j                  g dg dg      j                  } t        dt	               dgfdddgfg      }| }t        |j                  |       |       t        |j                  |       j                  |       |       t        |j                        dk(  sJ |j                  d   d   dk7  sJ y )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   r2  s      r'   'test_column_transformer_special_stringsrA  g  s   hh9:<<G	Xuw4x!6MN	OB
((SEC53%(
)Cr''0#6rvvg0093?r A%%%B"k111 
Xvs3h5LM	NBrvvg009??Hr''066?r A%%%B"k111 hh9:<<G	Xuw4xQRPS6TU	VB
Cr''0#6rvvg0093?r A%%%B"k111r*   c                     t        j                  g dg dg      j                  } t        j                  g d      j                  dd      }t        j                  g d      j                  dd      }| }t	        dt               dgfg      }t        |j                  |       |       t        |j                  |       j                  |       |       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        |j                  |       |       t        |j                  |       j                  |       |       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        |j                  |       |d d d d df          t        |j                  |       j                  |       |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        |j                  |       |       t        |j                  |       j                  |       |       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 y )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_remainderrD    s   hh	9-.00G((9%--b!4K88I&..r15LJ 
Xuw45	6Br''0+>rvvg009;Gr A%%%B"k111B"f,,,r''+A.4 
Wegs34	NBr''0*=rvvg009:Fr A%%%B"k111b&&r*1-/BCCCr''+A.4 
Xuw45	OBr''0*Q"W2EFrvvg009:a2g;NOr A%%%B"k111b&&r*1-/BCCCr''+A.4 
Xvs34	NBr''0,?rvvg009<Hr A%%%B"k111b&&r*1-/BCCCr''+A.4 
!%'A3	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"   rG  s    r'   rd   rd     s    1# r*   r   r   C)TFF)FFTc                 \   t        j                  d      }t        | t              r=t        | d   t              r*t        j                  d      }|j                  |g d      }t        t               | ft               |fd      }|j                  |       |j                  d   d   |k(  sJ y	)
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   rJ  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_dtypesrR    s     	A%:eAh#<  *LLOL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  |j                  |       d
d
d
       y
# 1 sw Y   y
xY w)zbCheck that ColumnTransformer raises a FutureWarning when
    force_int_remainder_cols is set.
    rL  T1r   T2r/   r   )r`   r,  z(`force_int_remainder_cols` is deprecatedr   N)r2   rM  r	   r   r   warnsFutureWarningr(   )r,  r%   rz   s      r'   )test_force_int_remainder_cols_deprecationrX    sp    
 	A	
!	egs34!9
B 
m+U	V 
q	  s   A44A=zkey, expected_colsc                    t        j                  g dg dg      j                  }|}t        dt	               | fgd      }t        |j                  |      |       t        |j                  |      j                  |      |       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 y )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     hh	9-.00GJ	
EGS	!"
B r''0*=rvvg009:Fr A%%%B"k111b&&r*1-/BCCCB"m333r*   r   r   pd-indexr   c                    t        j                  d      }t        | t              r| dk(  r|j	                  dg      } t        j                  g dg dg      j                  }|j                  |ddg      }|}t        dt               | fgd	
      }t        |j                  |      |       t        |j                  |      j                  |      |       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 y )Nr   r^  r   rX   rY   r   r   rf   r   r_   r.   r\   r   r`   r/   )r   r   r   rN  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_pandasra    s0     
		X	&B#sz 1hhy!hh	9-.00G<<'8)<<=DJ	
EGS	!"
B r''-z:rvvd|--d3Z@r A%%%B"k111b&&r*1-/BCCCB"m333r*   )FTTc                 :   t        j                  g dg dg dg      j                  }|j                         }|d d ddfxx   dz  cc<   t	        dt               | fgt                     }t        |j                  |      |       t        |j                  |      j                  |      |       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 y )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   rZ  s        r'   -test_column_transformer_remainder_transformerre    s    hh	9i89;;GJ q!A#v!	
EGS	!"-
B
 r''0*=rvvg009:Fr A%%%B"k111b&&r*1-{;;;B"m333r*   c                     t        j                  g dg dg dg      j                  } t        dt	               g dfgt                     }t        |j                  |       |        t        |j                  |       j                  |       |        t        |j                        dk(  sJ |j                  d   d   d	k7  sJ y )
NrX   rY   rc  rf   r_   r/   r\   r   r`   )r2   rm   r4   r	   r   r;   r   rp   r(   r5   rF   rq   r8  s     r'   :test_column_transformer_no_remaining_remainder_transformerrg  <  s    hh	9i89;;G	Xuw	:;{}	UBr''0':rvvg0097Cr A%%%B"k111r*   c                  ,   t        j                  g dg dg dg      j                  } d| j                         d d ddf   z  }t	        ddd	gfgt               
      }t        |j                  |       |       t        |j                  |       j                  |       |       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       y )NrX   rY   rc  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_transformerri  G  s    hh	9i89;;G W\\^AqsF++J	Xvs34	NBr''0*=rvvg009:Fr A%%%B"k111b&&r*1-{;;;r''+A.A7r*   c                    t        j                  g dg dg dg      j                  }t        dt	               dgfgt        |       d      }|j                  |      }t        j                  |      sJ |j                  dk(  sJ t        j                  |d d df   j                  d	d
      t        j                  d      f      }t        |j                         |       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       y )NrX   rY   rc  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_transformerrn  W  s2   hh	9i89;;G	
EGaS	!"#M2
B w'G??7### ==J&&&		71a4=00Q7CDIw()4r A%%%B"k111b&&r*1-/@AAAr''+A.A7r*   c                 :   t        j                  g dg dg dg      j                  }t        dddgfgt	        |       d      }|j                  |      }t        j                  |      sJ |j                  d	k(  sJ t        |j                         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       y )NrX   rY   rc  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_transformerrp  o  s   hh	9i89;;G	
FQC	 !#M2
B w'G??7### ==F"""w("&&)4r A%%%B"k111b&&r*1-/@AAAr''+A.A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	}| j	                         |k(  sJ | j                  d
       | j	                         d   rJ | j                  d       d | j                  ddddd| j                  d dddd}| j	                         |k(  sJ y )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,  )rt  rt  r   r.  )r  r`   rr  rs  rt  r   rf   r   rl   r*  r+  r,  )r	   r   r`   r   r/  r0  r1  s     r'   5test_column_transformer_get_set_params_with_remainderru    s    	
N$qc	*+~7G
B
 \\ $#//!$Q'! #%)$0C$ ==?c!!!MMeM,}}4555MMM'\\ $$#%)$0C ==?c!!!r*   c                     t        j                  g dg dg dg      j                  d      j                  } t	        g t                     }|j                         }|d   sJ |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 y )NrX   rY   rc  r   r_   rs  r/   r\   r   r`   r.   )r2   rm   astyper4   r	   r   r/  rp   r   rF   rq   )rs   rz   paramsr   s       r'   %test_column_transformer_no_estimatorsry    s    hh	9i89@@IKKG	2)9	:B]]_F()))w'G==GMM)))r A%%%B"k111B"i///r*   est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                 h   t        j                  g dg dg dg      j                  }t        | |      }| j	                  d        ||       |j                         j                  rJ d       | j	                  d        ||       t        j                  ||j                         d         sJ y )	NrX   rY   rc  F)r+  zGot output for verbose=FalseTr   )	r2   rm   r4   r1   r0  
readouterroutr  r   )rz  r{  r|  capsysrs   r   s         r'   test_column_transformer_verboser    s    L hh	9i89;;G3DNN5N!M  "&&F(FF&NN4N M88GV..03444r*   c                  \    t        g       j                  d      } | j                  dk(  sJ y )Nr.   )r  )r	   r0  r  rz   s    r'   0test_column_transformer_no_estimators_set_paramsr    s*    	2		)	)	)	3B99>>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        |j                        |        t        |j                        j                        |        t        |j                  d   d         sJ |j                  d   d   dgk(  sJ y )	NrX   rY   c                 "    t        |        dgS rF  )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    hh	9-.00G((I;'))K 
Wegt45	HBr''0+>rvvg009;GBOOA&q)***Aq!aS(((r*   c                     t        j                  d      } t        j                  g dg dg      j                  }t        j                  g dg      j                  }| j                  |ddg      fd}t        dt               |fgd	
      }t        |j                        |       t        |j                        j                        |       t        |j                  d   d         sJ |j                  d   d   dgk(  sJ y )Nr   rX   rY   r   r   r   c                     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>.func/  s/    199dll3188T[[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hh	9-.00G((I;'))K<<'8)<<=D
 
Wegt45	HBr''-{;rvvd|--d3[ABOOA&q)***Aq!gY...r*   c                  X   t         j                  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        |j                  |       |j                  |              y )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88aS1#J'L
<(q1A
/CucB401]KDucA3/0MJDt))!,d.@.@.CDr*   
array_typec                     t        j                  g dg dg dg dg      } | |      }t        dt               g dfg      }|j	                  |      }|j
                  dk(  sJ y )Nr/   r.   r   rZ      r[   )r  r[      )rd  r   ri   identity)FTFT)r   r.   )r2   	transposer	   r   rp   r   )r  r%   column_transformerr   s       r'   %test_column_transformer_mask_indexingr  G  se     	iIzBCA1A*
)+-G	HI !..q1G==F"""r*   c                      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                  |        |j                  dk(  sJ y )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  T  sq     Q!Q!Q A	S+-!5[]QC7PQ	RBr+,,,FF1I!!!r*   zcols, pattern, include, excludecol_int	col_floatcol_strzat$z^col_intz	float|strz^col_szstr$r  r  r  c                    t        j                  d      }|j                  t        j                  g dt
              t        j                  g dt              g ddg d      }t        |||      }t         ||      |        y )	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  _  ss    & 
		X	&B<<xx	5/?.	

 4  D $WgH x~t,r*   c                  (   t        j                  d      } | j                  t        j                  g dt
              t        j                  g dt              g dg ddg d      }|d	   j                  d
      |d	<   t        d
t        g      }t        t        j                        }t               }t               }t        ||f||f      }t        |dd	gf|ddgf      }|j                  |      }|j                  |      }	t        ||	       y )Nr   rX   r   r   )r  r  r  )lowmiddlehigh)r  r  col_catr  r   r  categoryr  r  r  r  )r   r   r   r2   rm   r  r   rw  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    s    			X	&B<<xx	5/?,0		
 ?  D 9o,,Z8DO'z66JKL'bii@L
/CF)3*=?UVK'	y)$%i0H'II **40J&&t,HJ)r*   c                      t        t        j                        } t        j                  ddgg      }d}t	        j
                  t        |      5   | |       d d d        y # 1 sw Y   y xY w)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    sS    #"))<H
3*A
IC	z	-   s   	A""A+c                  r   t        j                  d      } | j                  t        j                  g dt
              t        j                  g dt              g ddg d      }t        t        g      }t        j                  t        j                  |            }t         ||       ||             y )	Nr   rX   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<<xx	5/?.	

 4  D $6(;Hll6<<#9:Ox~t'<=r*   	empty_colc                     g S r!   r"   rG  s    r'   rd   rd     s    B r*   )r   rm   r  c                    t        j                  d      }|j                  g dg dd      }t        dt	               ddgfdt	               | fg	      }|j                  |       t        |j                         g d
       y )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    sw     
		X	&B	H	IB	MOff%56}	:

B FF2J
  "$Qr*   r  c                     dgS rI  r"   rG  s    r'   rd   rd     s    1# r*   r   c                     dgS )Nr   r"   rG  s    r'   rd   rd     s    6( r*   c                 
    ddgS NFTr"   rG  s    r'   rd   rd     s
    5$- r*   c                     t        j                  d      }|j                  g dg dd      }t        dt	               | fg      }|j                  |       t        |j                         dg       y)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	IB	UMOX>?	@BFF2Jr//1M?Cr*   c                     dgS rI  r"   rG  s    r'   rd   rd     s     r*   c                 
    ddgS r  r"   rG  s    r'   rd   rd     s
    udm r*   c                     ddgddgddgg}t        dt               | fg      }|j                  |       t        |j	                         dg       y)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    sR    
 sc3Z#s,A	UMOX>?	@BFF1Ir//1K=Ar*   c                     t               }t        d|ddgfg|       }|j                         }|j                  dk(  sJ |j                  ddgdfk(  sJ |j
                  || fk(  sJ y )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$$&&)92(>>>>""sI&6666r*   c                      t               } t        d| ddgfg      }|j                         }|j                  dk(  sJ |j                  ddgfk(  sJ |j
                  | fk(  sJ y )Nr  r   r   r  )r  r  )r  rz   r  s      r'   #test_sk_visual_block_remainder_dropr    sv    
/C	%vv6F)G(H	IB'')L)))$$&&)9(;;;;""sf,,,r*   c                 \   t        j                  d      }t               }t        d|ddgfg|       }|j	                  g dg dg dg d	d
      }|j                  |       |j                         }|j                  dk(  sJ |j                  ddgddgfk(  sJ |j                  || fk(  sJ y )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 
##		

B FF2J'')L!5555$$&&)9FF;K(LLLL""sI&6666r*   c                 6   t        j                  g dg dgt              }t               }t	        d|ddgfg|       }|j                  |       |j                         }|j                  dk(  sJ |j                  ddgd	gfk(  sJ |j                  || fk(  sJ y )
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     	)Y'u5AF	A/0I
B FF1I'')L!7777$$!Q!555""vy&9999r*   explicit_colname)r   r   r   r/   c                    t        j                  d      }t        j                  g dg dg      j                  }|j                  |ddg      }t        j                  g dg dg      j                  }|j                  |ddg      }t        dt               | fg|      }|j                  |       |j                  |      }|j                  |      }	t        |	|       |j                         }
g d	|
d
<   |j                  |
      }	t        |	|       t        | t              rH|j                         }d}t        j                  t        |      5  |j                  |       ddd       yy# 1 sw Y   yxY w)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   rN  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  3  sI    
		X	&B((Iy1244K||K'81D|EHHHi3466Mmh5HIJ	Weg/?@AY	WBFF8,,x(K ll:&GG[) MMOM&M'll=)GG[)"C( ""$*]]:W5 	"LL!	" 	" )
	" 	"s   E//E8c                     t        j                  d      } t        j                  d      }| j	                  |g d      }|j                  dd      }t        d	t               dgfgd
      }|j                  |       d}t        j                  t        |      5  |j                  |       ddd       t        d	t               dgfgd      }|j                  |       |j                  |      }|j                  |      }t        ||       t        d	ddgfgd
      }|j                  |       |j                  |      }|j                  |      }t        ||       y# 1 sw Y   xY w)zRTest the interaction between {'drop', 'passthrough'} and
    missing column names.r   rk  )r   r   r   r  dr   r  r/   r  r  r   r_   zcolumns are missing: {'c'}r   Nr^   )r   r   r2   rM  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  Y  s>    
		X	&B
fA	a!5	6B1%J 
Wegs34	NBFF2J
'C	z	- !
Z ! 
Wegs34	GBFF2J||J/<<#L$l3 
Wfse45	OBFF2J||J/<<#L$l3!! !s   E!!E*c                  p   t        j                  d      } g d}| j                  g dg|      }t        dt	               ddgfgd	      }|j                  |       t        |j                  |       t        |j                  t        j                        sJ |j                  j                  t        k(  sJ y
)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#M	yk=	9B	WegSz:;}	UBFF2Jr++];b**BJJ777%%///r*   c                       e Zd ZddZddZy)TransWithNamesNc                     || _         y r!   feature_names_out)r$   r  s     r'   rC   zTransWithNames.__init__  s
    !2r*   c                 h    | j                   %t        j                  | j                   t              S |S )Nr   )r  r2   asarrayr   )r$   input_featuress     r'   r=  z$TransWithNames.get_feature_names_out  s+    !!-::d44FCCr*   r!   )r7   r8   r9   rC   r=  r"   r*   r'   r  r    s    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__br  )bycol1__pca0r(  bycol2__pca0bycol2__pca1r"  r%  remainder__dr   r$  r   rZ   r"  )r  r   	bycol2__cr!  r"  r#  c                 4   t        j                  d      }|j                  g dgg d      }t        | |      }|j	                  |       |j                         }t        |t        j                        sJ |j                  t        k(  sJ t        ||       y)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_truer7    s    t 
		X	&B	|n.B	CB	
B FF2J$$&EeRZZ(((;;&   un-r*   
trans_name	feat_namec                     | d d  d| S )Nr.   z++r"   r8  r9  s     r'   &_feature_names_out_callable_name_clashr<  !  s    !nR	{++r*   c                 H    | j                          d|j                          S )N=)upperr;  s     r'   !_feature_names_out_callable_upperr@  %  s%     !9??#4"566r*   zBtransformers, remainder, verbose_feature_names_out, expected_names)by++dzby++crA  zre++azre++bz!{feature_name}-{transformer_name})zd-bycol1zc-bycol1zd-bycol2)zBYCOL1=DzBYCOL1=CzBYCOL2=CzBYCOL2=DzREMAINDER=AzREMAINDER=Bc                 6   t        j                  d      }|j                  g dgg d      }t        | ||      }|j	                  |       |j                         }t        |t        j                        sJ |j                  t        k(  sJ t        ||       y)r2  r   r3  r	  r   r`   r*  Nr4  )r   r`   r*  r6  r   r   rz   r  s           r'   .test_verbose_feature_names_out_callable_or_strrD  )  s    V 
		X	&B	|n.B	CB	";
B
 FF2J$$&EeRZZ(((;;&   un-r*   )r
  r  r   r   )r   r   r  )r&  r'  r  r  kpca)pca0r&  kpca0kpca1r   r  r
  r  )r
  r  r   c                 6   t        j                  d      }|j                  g dgg d      }t        | |d      }|j	                  |       |j                         }t        |t        j                        sJ |j                  t        k(  sJ t        ||       y);Check feature_names_out for verbose_feature_names_out=Falser   r3  r	  r   FrC  Nr4  r5  s          r'   $test_verbose_feature_names_out_falserK  c  s    j 
		X	&B	|n.B	CB	"'
B
 FF2J$$&EeRZZ(((;;&   un-r*   z*transformers, remainder, colliding_columnsz['b']z['c']z['a']z
['b', 'c']bycol3z
['a', 'b']r[   z-['pca0', 'pca1', 'pca2', 'pca3', 'pca4', ...]c                 N   t        j                  d      }|j                  g dgg d      }t        | |d      }|j	                  |       t        j                  d| d      }t        j                  t        |	      5  |j                          d
d
d
       y
# 1 sw Y   y
xY w)rJ  r   r3  r	  r   FrC  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_errorsrO    s    ` 
		X	&B	|n.B	CB	"'
B
 FF2J
))
 !2 3 4J 	JC 
z	- #
  "# # #s   BB$r*  c                 T   t        j                  d      }|j                  g dgg ddg      }t        dt	               ddgfd	t	               d
gfg||       }|j                  |      }t        |t        j                        sJ |j                  d       |j                  g dg|j                  dg      }|j                  |      }t        ||j                        sJ |j                         }t        |j                  |       t        |j                  |j                         y)z2Check column transformer behavior with set_output.r   r3  r	  ri   r   r   r   r   r  r   r
  rC  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_outputrV  h  s    
		X	&B	|n.B2$	OB	
>#c3Z	08^=MPSu2UV";
B
 r"Ggrzz***MMHM%llL>2::bTlJGll7#Ggr||,,,002w(9:w}}gmm4r*   c                    t        j                  d      }|j                  |j                  g dd      |j                  g dd      g dg d|j                  d	|j                  d
gd      d      }t        dt        dd      dgfdt               dgfg| d      j                  d      }|r|j                  |      }n |j                  |      j                  |      }t        ||j                        sJ t        |j                  |j                                dddddddd}|j                   j#                         D ]  \  }}|||   k(  rJ  y)z6Check ColumnTransformer outputs mixed types correctly.r   dogcatsnaker  r   )greenblueredr   gffffff?g @g@rS  (   ri   rS  d   Int32)petcolorageheightdistancecolor_encodeFint8r   r   re  rf  rC  rR  float64int64)
color_bluecolor_green	color_redrf  rd  rg  rh  N)r   r   r   r   NAr	   r   r   rT  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_mixedru    si    
		X	&B	994J9GYY7xYH""		2ruuc"2'	B	

B 
 E@	
 N$ug.	
 "'
 j8j$  ""2&&&*&&r*gr||,,,w(@(@(BC O nn**, -
U,,,,-r*   c                    t        j                  d      }|j                  |j                  g dd      g dg dd      }t	        dt        d	d
      dgfdt               dgfg| d	      }|j                  |      }t        |t        j                        sJ |j                  dk(  sJ |j                  d       |j                  |      }d
d
d
ddd}|j                  j                         D ]  \  }}|||   k(  rJ  y )Nr   rX  r  r   r_  r`  )rd  rf  rg  ri  Fint16rk  rd  rf  rC  rl  rR  rm  )pet_catpet_dog	pet_snakerg  rf  )r   r   r   r   r	   r   r   rp   r   r2   r  r   rT  r5   rr  rs  )	r`   r   r   rz   r   r  rt  r   r   s	            r'   .test_column_transform_set_output_after_fittingr{    s    			X	&B	994J9G""	

B 
 EA
 N$ug.	
 "'
B r"Ggrzz***==I%%%MMHM%b!JO !''--/ -
U,,,,-r*   c                   ,    e Zd ZddZddZddZddZy)PandasOutTransformerc                     || _         y 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                 z    t        j                  d      }t        ||j                        sJ || j                  z
  S r  )r   r   r   r   r  r  s       r'   r5   zPandasOutTransformer.transform  s4      *!R\\***4;;r*   c                     | S r!   r"   )r$   r5   s     r'   rT  zPandasOutTransformer.set_output  s	     r*   )r   r!   )r7   r8   r9   rC   r(   r5   rT  r"   r*   r'   r}  r}    s    

r*   r}  z;trans_1, expected_verbose_names, expected_non_verbose_namesr   r  trans_0__feat1trans_1__feat0feat1feat0c                 Z   t        j                  d      }|j                  g dg dd      }t        dt	        d      dgfd	| d
gfg      }|j                  |      }t        |t        j                        sJ t        j                  t        d      5  |j                          ddd       |j                  d       |j                  |      }t        |j                  |       |j                  d       |j                  |      }t        |j                  |       y# 1 sw Y   |xY w)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   NrR  Fr*  )r   r   r   r	   r}  rp   r   r2   r  r   r>  r=  rT  r   r   r0  )	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<</OLMD	,C87)D'+	

B !!$'Jj"**--- 
~-P	Q #
  "# MMHM%""4(K{**,BCMMEM2""4(K{**,FG# #s   D!!D*empty_selectionc                    t        j                  d      }|j                  ddgddggddg      }t        dd	| fd
t	               ddgfgd      }|j                  d       |j                  |      }t        |j                  ddg       |j                  d       |j                  |      }t        |j                  ddg       y)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  rR  numerical__anumerical__bFN)
r   r   r   r	   r   rT  rp   r   r   r0  )r  r   r%   rz   X_outs        r'   "test_empty_selection_pandas_outputr  &	  s     
		X	&B
sCj3*-SzBA	M?;.*S#J7	
 #'
B MMHM%QEu}}~~&FGMMEM2QEu}}sCj1r*   c                  Z   t        j                  d      } | j                  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      }|j                  d       d}t        j                  t        |      5  |j                  |       ddd       y# 1 sw Y   yxY w)zmCheck column transformer raises error if indices are not aligned.

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

    Non-regression test for #26306.
    r   )TFTr  )r   r   r  FrC  rR  defaultN)r   r   r   r   r   r
   r   rT  rp   testingassert_frame_equalr   r2   r  )r   r   rz   r  s       r'   test_remainder_set_outputr  _	  s     
		X	&B	/i@	AB	 		2FG#%"'
B
 MMHM%


2
CJJ!!#r*MMIM&


2
Cc2::&&&r*   c                     t        j                  d      } t        | d      st        j                  d       | j	                  dddgi      }t        ddgf      }t        j                         5  t        j                  d       |j                  |       ddd       |j                         }t        j                  t        d	
      5  |j                  |       ddd       |j                  d       |j                  |       |j                  d       |j                  |j                  d             y# 1 sw Y   xY w# 1 sw Y   kxY w)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   rR  r  g      )r   r   r0   skipr   r   warningscatch_warningssimplefilterrp   convert_dtypesr   rT   rT  fillna)r   r   rz   s      r'   test_transform_pd_nar  w	  s   
 
		X	&B2~&-	
 
sS$K(	)B	 -#!7	8B		 	 	" g&
 
			B 
z)L	M 
 MMHM%RMMIM& RYYt_%  s   .'D8E8EE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      }| j	                  |d	d
g      }|j	                  |d	d
g      }t        t               ddgf      }|j                  |       |j                  |      }t        ||       |j	                  |d	d
g      }| j	                  |d	d
g      }	|j                  |       |j                  |	      }
t        |
|       y)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  	  s   			X	&B			X	&BAq6Aq6Aq623J1a&1a&1a&12I j3*=JYSz:I	 %'Aq6!2	3BFF:Y'Iy), j#s<JYc
;IFF:Y'Iy),r*   c                     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
       |j                  |        |d   |j                  d   u sJ |d   |j                  d   u sJ d}t	        j
                  t        |	      5  |d    d
d
d
       y
# 1 sw Y   rxY w# 1 sw Y   y
xY w)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(   r6  KeyError)r%   rz   r   s      r'   "test_column_transformer__getitem__r  	  s    
)Y'(A	T57QF3dEGaV5LM	NB
AC	y	, 
4 FF1Id8r--d3333d8r--d3333
<C	xs	+ 
   s    CC#C #C,transform_outputr  c                    t        j                  d      }|j                  t        j                  j                  dd            }t        dt               ddgfgd      j                  | 	      }|j                  |      }|j                  |j                  k(  sJ g d
}t        |d      r|j                  j                         |k(  sJ |j                         j                         |k(  sJ y)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  rR  )
scaler__x0
scaler__x1remainder__x2remainder__x3r   N)r   r   r   r2   r  r  r	   r   rT  rp   r   r0   r   tolistr=  )r  r   r%   preprocessorr   expected_column_namess         r'   @test_column_transformer_remainder_passthrough_naming_consistencyr  	  s     
		X	&B
RYY__R+,A$!1Aq6:; j+j,  ((+G==AGG### w	"%%'+@@@@--/668<QQQQr*   r   c           	      \   t        j                  |       }|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      j                  |       }|j                  |      }t        |j                        g dk(  sJ y)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   rS     rb     i,  x1x2x3r   r   r   r  r  rJ  r  Dc                     t        | g d      S Nr/   r  r   rG  s    r'   rd   z9test_column_transformer_column_renaming.<locals>.<lambda>	      nQ.K r*   Tr   r*  rR  )A__x1A__x2A__x3B__x1B__x2C__x1C__x3N)
r   r   r   r	   r   r   rT  rp   r   r   )r   libr   transformerdf_transs        r'   'test_column_transformer_column_renamingr  	  s     

m
,C	i|?S	TB#-!34%'$6."T4L1 #$KL"

 #' j=j)  ((,H  ! &   r*   c           	         t        j                  |       }|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      j                  |       }t        j                  d      }t        j                  t        |      5  |j                  |       ddd       y# 1 sw Y   yxY w)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  rJ  r  r  c                     t        | g d      S r  r   rG  s    r'   rd   zGtest_column_transformer_error_with_duplicated_columns.<locals>.<lambda>
  r  r*   Fr  rR  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   rT  r  r  r   rT   rp   )r   r  r   r  r  s        r'   5test_column_transformer_error_with_duplicated_columnsr  
  s     

m
,C	i|?S	TB#-!34%'$6."T4L1 #$KL"

 #( j=j)  ii	GG 
z	1 &!!"%& & &s   0CCz1.3zrequires joblib >= 1.3)reasonc                  n   t         j                  j                  d      j                  d      } t	        d      }t        d|dgfgd      }t        j                  d	d
      5  |j                  |       }ddd       t        t	               j                  | dddgf                y# 1 sw Y   5xY w)z|Check that ColumnTransformer works in parallel with joblib's auto-memmapping.

    non-regression test for issue #28781
    r   rk  )sizeF)r   r  r.   )r   r  lokyr/   )
max_nbytesN)
r2   r  RandomStateuniformr   r	   joblibparallel_backendrp   r   )r%   r  r  Xts       r'   #test_column_transformer_auto_memmapr  '
  s     			a ((f(5A'F#!-.K
 
	 	 A	6 *&&q)* B(66qQCyAB* *s   %B++B4c                  6   t        j                  d      } | j                  ddddddgddgdddg      }t        t	        d	
      dft               dgf      }|j                  d       |j                  |      }t        |j                        ddgk(  sJ y)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  rR  N)
r   r   r   r   r   r   rT  rp   r   r   )r   r   tr%   s       r'   )test_column_transformer_non_default_indexr  ?
  s     
		X	&B	!"1-q/CDQ	
 !f 
 
B 	 	u	%z2		.	A LL8L$	A=QF"""r*   )r5   rp   r(   c                 6   t        j                  g dg dg      j                  }g d}t        dt	               dgfg      j                  ||      }t        j                  t        d      5   t        ||       dggdgd	
       ddd       y# 1 sw Y   yxY w)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  Z
  s    
 	)Y'(**AA
guw45
6
:
:1a
@C	M
 A 	VqcU1#C@A A As   -BB)enable_metadata_routingc                    t        j                  g dg dg      j                  }g d}t               }dgd}}t	        dt        |      j                  dd	      j                  dd	      d
gfg      }| dk(  r*|j                  ||||	       |j                  |||	       n t        ||       ||||	       t        |      sJ |D ]  }t        || | ||        y)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  i
  s     	)Y'(**AA{H c38M
 $h7 tdC&&TD&I	

C 1MHEa}xHVQRx== 
'	

r*   c                  @    G d dt               } t        j                  g dg dg      j                  }g d}dgd}}t	        d |        j                  d	d	
      j                  d	d	
      dgfg      }|j                  ||||
       |j                  ||||
       y)zUTest metadata routing when the sub-estimator doesn't implement
    ``fit_transform``.c                       e Zd ZddZddZy)>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      =O8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      =O8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    
	 	 	)Y'(**AA c38M
   tdC&&TD&I	

C GGAqGAa-(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'|j                  ||       |j                  |||       n t        ||       ||||       ddd       y# 1 sw Y   yxY w)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  
  s     	)Y'(**AA c38M
g';'=sCD
EC	66<X	?  
z=)A	B W[ GGAqMMM!=8ML GC A]XVW W Ws   :ACCc                  T    t        dt               dgfg      } | j                          y )Nr]   r   )r	   r   get_metadata_routingr  s    r'   +test_get_metadata_routing_works_without_fitr  
  s*     
W&:&<qcBC	DBr*   c                      t        dt               dgfgt               j                  d      j	                  d            } | j                         }|j                  ddg      t        dg      k(  sJ y )Nr]   r   Tr  r_   r(   r  )r	   r   r   r	  r
  r  consumessetrz   routers     r'   %test_remainder_request_always_presentr   
  sr     

>#aS	)*&(	$	'				-	
B $$&F??5:,/3
|3DDDDr*   c                      t        dt               j                  d      j                  d      d fg      } | j	                         }|j                  ddg      t        dg      k(  sJ y )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_presentr#  
  sr     
 $& $/&&&5	


B $$&F??5:,/3
|3D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!  r3  r9  r;  r?  rA  rD  rR  rX  ro   r]  r   ra  re  rg  ri  rn  rp  ru  ry  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  ranger7  rN  r<  r@  rD  rK  rO  rV  ru  r{  r}  r  r  r  r  r  r  r  r  r  r  skipif__version__r  r  r  r  r  r  r  r   r#  )is   0r'   <module>r8     s    	     )  " 8 
 . 5 7  
 3  >m - 	D 	D - -?(D" +k8-DE`9 F`9F D%=x6IJ5%.	!E5>2$  
 *UDM:,: ; K,:^(XVT> .9W :W.J( .9A :A2,1,h"  v}&=> $ ? $F,J
<%."b6(4#26-"` +
"QC(
qcA3	s+
u	35IJ	?	?* 3dE]C D 
qc
	1#	q!qc	4-	 5$-0	44" 
qc
	q!qc	4-	 5$-0
XJ	hZ 	7)	xj)	7)6	*XJ7	tW	z*	w	 8*-
44, 
q!f	1#A	q!q!f	&	')<=	44(28  .98 :8. .98 :8(+"\0 
I EGaS)Hegs+CD%-
X
	
 EGaS)Hegs+CD'
X
	
 EGaS)Hfqc+BC'
X		
 EGaS)HmaS+IJ'
X
	
 %'A378MRX	
 EGaS)Hegs+CDPVU	
 %'A378FKP	
y@CH E?#;<
5 =ICJ
5
) /(	E 

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