ó
    Û£jŒM  ã                   ól  • S SK r S SKrS SKrS SKJr  S SKJrJr  S SK	J
r
JrJr  S SKJrJr  S 4S jrS rS	 rS
 rS rS rS r\R.                  R1                  SS/\-   \-   5      S 5       rS rS r\R.                  R1                  SSS/5      S 5       rS rS r\R.                  R1                  S\R>                  RA                  SS5      SSS4\R>                  RA                  S5      \R>                  RA                  S5      S.SSS4\R>                  RA                  SS5      S SS4\R>                  RA                  S5      \R>                  RA                  S5      S.S SS 4\R>                  RA                  SS5      S! SS"4\R>                  RA                  S5      \R>                  RA                  S5      S.S# SS$4\R>                  RA                  SS5      SS$S$4\R>                  RA                  S5      \R>                  RA                  S5      S.SSS4\R>                  RA                  SS5      S% S$S&4\R>                  RA                  S5      \R>                  RA                  S5      S.S' SS$4/
5      \R.                  R1                  S(S)S*/5      S+ 5       5       r!S, r"S- r#S. r$S/ r%\R.                  R1                  S0SS1S2/4S3 S4S5///5      \R.                  R1                  S6S)S*/5      S7 5       5       r&S8 r'S9 r(\R.                  R1                  S:S;S</5      \R.                  R1                  S=/ S>Q5      S? 5       5       r)\R.                  R1                  S@SSA /5      SB 5       r*\R.                  R1                  S:S;S</5      \R.                  R1                  S@SSC /5      SD 5       5       r+g)Eé    N)Úmake_pipeline)ÚFunctionTransformerÚStandardScaler)Ú_convert_containerÚassert_allclose_dense_sparseÚassert_array_equal)ÚCSC_CONTAINERSÚCSR_CONTAINERSc                 ó   • U $ ©N© )ÚXÚaÚks      ÚÃC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\sklearn/preprocessing/tests/test_function_transformer.pyÚ<lambda>r      s   € Áó    c                 ó   ^ ^^• U UU4S jnU$ )Nc                 óz   >• TR                  U 5        TR                  U5        TR                  U5        T" U 5      $ r   )ÚappendÚextendÚupdate)r   ÚargsÚkwargsÚ
args_storeÚfuncÚkwargs_stores      €€€r   Ú_funcÚ_make_func.<locals>._func   s6   ø€ Ø×Ñ˜!ÔØ×Ñ˜$ÔØ×Ñ˜FÔ#Ù�A‹wˆr   r   )r   r   r   r   s   ``` r   Ú
_make_funcr       s   ú€ ÷ð €Lr   c                  ó
  • / n 0 n[         R                  " S5      R                  S5      n[        [	        [        X5      5      R                  U5      US5        X/:X  d   SR                  U S95       eU(       a   SR                  US95       e/ U S S & UR                  5         [	        [        X5      5      R                  U5      n[        X2SS9  X/:X  d   SR                  U S95       eU(       a   SR                  US95       eg )Né
   ©é   é   z*transform should have returned X unchangedz5Incorrect positional arguments passed to func: {args})r   z3Unexpected keyword arguments passed to func: {args})Úerr_msg)	ÚnpÚarangeÚreshaper   r   r    Ú	transformÚformatÚclear)r   r   r   Útransformeds       r   Útest_delegate_to_funcr.      s)  € ð €JØ€LÜ
�	Š	�"‹×Ñ˜fÓ%€AÜÜœJ zÓ@ÓA×KÑKÈAÓNØ	Ø4ôð ˜Óð Ø?×FÑFÈJÐFÐWóÐö ð Ø=×DÑDÈ,ÐDÐWóÐð
 €J‰q€MØ×ÑÔÜ%Ü�:Ó,óç�i�ƒlð ô ØÐ Lòð
 ˜Óð Ø?×FÑFÈJÐFÐWóÐö ð Ø=×DÑDÈ,ÐDÐWóÐˆ|r   c                  óÚ   • [         R                  " S5      R                  S5      n [        [	        [         R
                  5      R                  U 5      [         R
                  " U 5      5        g )Nr"   r#   )r'   r(   r)   r   r   Úlog1pr*   ©r   s    r   Útest_np_logr2   D   sF   € Ü
�	Š	�"‹×Ñ˜fÓ%€Aô ÜœBŸH™HÓ%×/Ñ/°Ó2Ü
�Š�‹õr   c                  óè   • [         R                  " SSSS9R                  S5      n [        [         R                  [        SS9S9n[        UR                  U 5      [         R                  " U SS95        g ©	Nr   é   r"   ©Únumr#   é   ©Údecimals©Úkw_args)r'   Úlinspacer)   r   ÚaroundÚdictr   r*   ©r   ÚFs     r   Útest_kw_argrB   N   sS   € Ü
�Š�A�q˜bÑ!×)Ñ)¨&Ó1€AäœBŸI™I¬t¸QÑ/?Ñ@€Aô �q—{‘{ 1“~¤r§y¢y°¸QÑ'?Õ@r   c                  ó  • [         R                  " SSSS9R                  S5      n [        [         R                  [        SS9S9nSUR                  S	'   [        UR                  U 5      [         R                  " U SS95        g )
Nr   r5   r"   r6   r#   r8   r9   r;   r:   ©	r'   r=   r)   r   r>   r?   r<   r   r*   r@   s     r   Útest_kw_arg_updaterE   W   sa   € Ü
�Š�A�q˜bÑ!×)Ñ)¨&Ó1€AäœBŸI™I¬t¸QÑ/?Ñ@€Aà€A‡I�IˆjÑô �q—{‘{ 1“~¤r§y¢y°¸QÑ'?Õ@r   c                  ó  • [         R                  " SSSS9R                  S5      n [        [         R                  [        SS9S9n[        SS9Ul        [        UR                  U 5      [         R                  " U SS95        g r4   rD   r@   s     r   Útest_kw_arg_resetrG   b   s_   € Ü
�Š�A�q˜bÑ!×)Ñ)¨&Ó1€AäœBŸI™I¬t¸QÑ/?Ñ@€Aä˜aÑ €A„Iô �q—{‘{ 1“~¤r§y¢y°¸QÑ'?Õ@r   c                  óP  • [         R                  " / SQ5      R                  S5      n [        [         R                  [         R
                  [        SS9S9n[        UR                  UR                  U 5      5      [         R
                  " [         R                  " U 5      SS95        g )N©r5   é   é	   é   ©r%   r%   r8   r9   )r   Úinverse_funcÚinv_kw_args)
r'   Úarrayr)   r   Úsqrtr>   r?   r   Úinverse_transformr*   r@   s     r   Útest_inverse_transformrS   m   ss   € Ü
�Š’Ó×'Ñ'¨Ó/€Aô 	Ü�W‰WÜ—Y‘YÜ !Ñ$ñ	€Aô
 Ø	×Ñ˜AŸK™K¨›NÓ+Ü
�	Š	”"—'’'˜!“* qÑ)õr   Úsparse_containerc                 ó¤  • [         R                  " / SQ[         R                  S9R                  S5      nU b  U " U5      n[	        [         R
                  [         R                  U S LSSS9nSn[        R                  " [        US9   UR                  U5        S S S 5        [	        [         R                  [         R                  U S LSSS9n[        R                  " 5          [        R                  " S[        5        UR!                  U5      nS S S 5        [#        XR%                  W5      5        g ! , (       d  f       Nž= f! , (       d  f       N:= f)	NrI   ©ÚdtyperM   T)r   rN   Úaccept_sparseÚcheck_inverseÚvalidatez‰The provided functions are not strictly inverse of each other. If you are sure you want to proceed regardless, set 'check_inverse=False'.©ÚmatchÚerror)r'   rP   Úfloat64r)   r   rQ   r>   ÚpytestÚwarnsÚUserWarningÚfitÚexpm1r0   ÚwarningsÚcatch_warningsÚsimplefilterÚfit_transformr   rR   )rT   r   ÚtransÚwarning_messageÚXts        r   Útest_check_inverserk   |   s  € ä
�Š’¤b§j¡jÑ1×9Ñ9¸&ÓA€AØÑ#Ù˜QÓˆäÜ�W‰WÜ—Y‘YØ&¨dÐ2ØØñ€Eð	"ð ô 
�Š”k¨Ó	9Ø�	‰	�!Œ÷ 
:ô  Ü�X‰XÜ—X‘XØ&¨dÐ2ØØñ€Eô 
×	 Ò	 Õ	"Ü×Ò˜g¤{Ô3Ø× Ñ  Ó#ˆ÷ 
#ô ! ×$;Ñ$;¸BÓ$?Õ@÷ 
:Õ	9ú÷ 
#Õ	"ús   ÂD0Ã -EÄ0
D>Å
Ec                  ó@  • [         R                  " / SQ[         R                  S9R                  S5      n [	        [         R
                  S SSS9n[        R                  " 5          [        R                  " S[        5        UR                  U 5        S S S 5        [	        S [         R
                  SSS9n[        R                  " 5          [        R                  " S[        5        UR                  U 5        S S S 5        g ! , (       d  f       Ns= f! , (       d  f       g = f)NrI   rV   rM   T)r   rN   rY   rZ   r]   )r'   rP   r^   r)   r   rc   rd   re   rf   ra   rb   )r   rh   s     r   Ú/test_check_inverse_func_or_inverse_not_providedrm       sÄ   € ô 	�Š’¤b§j¡jÑ1×9Ñ9¸&ÓA€AäÜ�X‰X D¸Àtñ€Eô 
×	 Ò	 Õ	"Ü×Ò˜g¤{Ô3Ø�	‰	�!Œ÷ 
#ô  Ø¤§¡¸Àtñ€Eô 
×	 Ò	 Õ	"Ü×Ò˜g¤{Ô3Ø�	‰	�!Œ÷ 
#Ð	"÷ 
#Õ	"ú÷ 
#Õ	"ús   Á$-C>Ã-DÃ>
DÄ
Dc                  óê   • [         R                  " S5      n U R                  [        R                  R                  SS5      5      n[        5       nUR                  U5      n[        US5      (       d   eg )NÚpandaséd   r"   Úloc)	r_   ÚimportorskipÚ	DataFramer'   ÚrandomÚrandnr   rg   Úhasattr)ÚpdÚX_dfÚtransformerÚ
X_df_transs       r   Útest_function_transformer_framer{   ³   sZ   € Ü	×	Ò	˜XÓ	&€BØ�<‰<œŸ	™	Ÿ™¨¨RÓ0Ó1€DÜ%Ó'€KØ×*Ñ*¨4Ó0€JÜ�:˜u×%Ñ%Ð%Ñ%r   ÚX_typerP   Úseriesc                 óV  ^ ^^	^
• SSSSSS.m
T
R                  5        VVs0 s H  u  pX!_M	     snnm	Sm/ SQn[        UT S	/TS
9nU
4S jnU UU	4S jn[        XESSS9nSn[        R                  " [
        US9   UR                  U5        SSS5        gs  snnf ! , (       d  f       g= f)zKCheck that `FunctionTransformer.check_inverse` raises error on mixed dtype.r5   r%   r8   ÚfiveÚsix)ÚoneÚtwoÚthreer$   é   Úobject)r�   r‚   rƒ   r�   r�   r$   r„   Úvalue©Úcolumn_namesrW   c                 ó’   >• [         R                  " [        U R                  5       Vs/ s H
  nTX      PM     sn[        S9$ s  snf )NrV   )r'   rP   ÚrangeÚsizer…   )r   ÚiÚmappings     €r   r   ÚDtest_function_transformer_raise_error_with_mixed_dtype.<locals>.funcÅ   s4   ø€ Ü�xŠx´°a·f±f´Ó>²¨1˜ ¡œ±Ñ>ÄfÑMÐMùÒ>s   ©Ac                 óP   >• [        U  Vs/ s H  nTU   PM
     snTS/TS9$ s  snf )Nr†   r‡   )r   )r   Úxr|   rW   Úinverse_mappings     €€€r   rN   ÚLtest_function_transformer_raise_error_with_mixed_dtype.<locals>.inverse_funcÈ   s5   ø€ Ü!Ù)*Ó+ª Aˆ_˜QÔ©Ñ+ØØ!˜Øñ	
ð 	
ùÚ+s   ‹#FT)r   rN   rZ   rY   úL'check_inverse' is only supported when all the elements in `X` is numerical.r[   N)Úitemsr   r   r_   ÚraisesÚ
ValueErrorrb   )r|   Úkeyr†   Údatar   rN   ry   ÚmsgrW   r‘   r�   s   `       @@@r   Ú6test_function_transformer_raise_error_with_mixed_dtyperš   »   s¦   û€ ð  ¨A°&¸UÑC€GØ4;·M±M´OÔD²O¡j c�u’z±OÒD€OØ€Eâ6€DÜ˜d F¸'¸È%ÑP€DõN÷
ô &Ø°uÈDñ€Kð Y€CÜ	�Š”z¨Ó	-Ø�‰˜Ô÷ 
.Ð	-ùó- E÷, 
.Õ	-ús    BÁ9BÂ
B(c                  ó¸   • [         R                  " S5      n U R                  / SQ/ SQS.5      n[        S S SS9nUR	                  U5      n[        X1S	-   5        g
)z8Check support for dataframes with only numerical values.ro   ©r5   r%   r8   )rJ   r$   r„   ©r   Úbc                 ó   • U S-   $ ©Nr%   r   ©r�   s    r   r   Ú_test_function_transformer_support_all_numerical_dataframes_check_inverse_True.<locals>.<lambda>ß   s   € �q˜1’ur   c                 ó   • U S-
  $ r    r   r¡   s    r   r   r¢   ß   s   € °Q¸²Ur   T©r   rN   rY   r%   N)r_   rr   rs   r   rg   r   )rw   Údfry   Údf_outs       r   ÚMtest_function_transformer_support_all_numerical_dataframes_check_inverse_Truer§   Ù   sT   € ä	×	Ò	˜XÓ	&€Bà	�‰šIªIÑ6Ó	7€BÜ%Ù©?È$ñ€Kð
 ×&Ñ& rÓ*€FÜ  ¨a©Õ0r   c                  ó  • [         R                  " S5      n [        S S SS9nU R                  / SQ/ SQS.5      nS	n[         R                  " [
        US
9   UR                  U5        SSS5        g! , (       d  f       g= f)zRCheck error is raised when check_inverse=True.

Non-regression test for gh-25261.
ro   c                 ó   • U $ r   r   r¡   s    r   r   ÚQtest_function_transformer_with_dataframe_and_check_inverse_True.<locals>.<lambda>î   s   € ‘qr   c                 ó   • U $ r   r   r¡   s    r   r   rª   î   s   € ±r   Tr¤   rœ   ©r   rž   Úcr�   r“   r[   N)r_   rr   r   rs   r•   r–   rb   )rw   ry   Údf_mixedr™   s       r   Ú?test_function_transformer_with_dataframe_and_check_inverse_Truer¯   ç   se   € ô
 
×	Ò	˜XÓ	&€BÜ%Ù¡{À$ñ€Kð �|‰|¢)²/ÑBÓC€HØ
X€CÜ	�Š”z¨Ó	-Ø�‰˜Ô!÷ 
.×	-Ö	-ús   ÁA2Á2
B z.X, feature_names_out, input_features, expectedrp   r8   ú
one-to-one)Úx0Úx1Úx2r�   c                 ó   • g)Nr�   r   ©ry   Úinput_featuress     r   r   r     s   € °
r   c                 ó   • g)N©r­   ÚdÚer   rµ   s     r   r   r     s   € °r   r¸   c                 ó   • [        U5      S-   $ )N)r   ©Útuplerµ   s     r   r   r     ó   € ´°nÓ0EÈÒ0Nr   )r±   r²   r³   r   c                 ó   • [        U5      S-   $ ©N)r­   r¼   rµ   s     r   r   r      r¾   r   r¬   c                 ó   • [        U5      S-   $ )N)r¹   r¼   rµ   s     r   r   r   5  r¾   r   )r   rž   r­   r¹   c                 ó   • [        U5      S-   $ rÀ   r¼   rµ   s     r   r   r   <  r¾   r   rZ   TFc                 óV  • [        U [        5      (       a'  [        R                  " S5      nUR	                  U 5      n [        XS9nUR                  U 5        UR                  U5      n[        U[        R                  5      (       d   eUR                  [        :X  d   e[        Xs5        g )Nro   ©Úfeature_names_outrZ   )Ú
isinstancer?   r_   rr   rs   r   rb   Úget_feature_names_outr'   ÚndarrayrW   r…   r   )r   rÅ   r¶   ÚexpectedrZ   rw   ry   Únamess           r   Ú/test_function_transformer_get_feature_names_outrË   ÷   s‹   € ô^ �!”T×ÑÜ× Ò  Ó*ˆØ�L‰L˜‹Oˆä%Ø+ñ€Kð ‡O�O�AÔØ×-Ñ-¨nÓ=€EÜ�eœRŸZ™Z×(Ñ(Ð(Ð(Ø�;‰;œ&Ó Ð Ð Ü�uÕ'r   c                  ó"  • [        SSS9n [        R                  R                  SS5      nU R	                  U5        U R                  S5      n[        U[        R                  5      (       d   eUR                  [        :X  d   e[        US5        g )Nr°   FrÄ   rp   r%   r�   )r   r'   rt   Úrandrg   rÇ   rÆ   rÈ   rW   r…   r   )ry   r   rÊ   s      r   ÚBtest_function_transformer_get_feature_names_out_without_validationrÎ   T  ss   € Ü%¸ÈuÑU€KÜ
�	‰	�‰�s˜AÓ€AØ×Ñ˜aÔ à×-Ñ-¨jÓ9€EÜ�eœRŸZ™Z×(Ñ(Ð(Ð(Ø�;‰;œ&Ó Ð Ð Ü�u˜jÕ)r   c                  ó  • [        5       n [        R                  R                  SS5      nU R	                  U5        Sn[
        R                  " [        US9   U R                  5         S S S 5        g ! , (       d  f       g = f)Nrp   r%   zCThis 'FunctionTransformer' has no attribute 'get_feature_names_out'r[   )	r   r'   rt   rÍ   rg   r_   r•   ÚAttributeErrorrÇ   )ry   r   r™   s      r   Ú3test_function_transformer_feature_names_out_is_NonerÑ   _  sW   € Ü%Ó'€KÜ
�	‰	�‰�s˜AÓ€AØ×Ñ˜aÔ à
O€CÜ	�Š”~¨SÓ	1Ø×)Ñ)Ô+÷ 
2×	1Ö	1ús   ÁA1Á1
A?c                  óÆ  • S n S n[        U U[        SS9SS9n[        R                  " S5      nUR	                  [
        R                  R                  S5      [
        R                  R                  S5      S	.5      nUR                  U5        UR                  5       n[        U[
        R                  5      (       d   eUR                  [        :X  d   e[        US
5        g )Nc                 ó~   • [         R                  " U [         R                  R                  [	        U 5      U5      /SS9$ )Nr5   ©Úaxis)r'   Úconcatenatert   rÍ   Úlen)r   Úns     r   Úadd_n_random_featuresÚYtest_function_transformer_feature_names_out_uses_estimator.<locals>.add_n_random_featuresj  s+   € Ü�~Š~˜q¤"§)¡)§.¡.´°Q³¸Ó";Ð<À1ÑEÐEr   c                 ó€   • U R                   S   n[        U5      [        U5       Vs/ s H  nSU 3PM
     sn-   $ s  snf )NrØ   Úrnd)r<   ÚlistrŠ   )ry   r¶   rØ   rŒ   s       r   rÅ   ÚUtest_function_transformer_feature_names_out_uses_estimator.<locals>.feature_names_outm  s>   € Ø×Ñ Ñ$ˆÜ�NÓ#¼%À¼(Ó&Cº(°Q¨¨Q¨C£y¹(Ñ&CÑCÐCùÒ&Cs   §;r8   )rØ   T)r   rÅ   r<   rZ   ro   rp   r�   )r   rž   Úrnd0Úrnd1Úrnd2)r   r?   r_   rr   rs   r'   rt   rÍ   rg   rÇ   rÆ   rÈ   rW   r…   r   )rÙ   rÅ   ry   rw   r¥   rÊ   s         r   Ú:test_function_transformer_feature_names_out_uses_estimatorrâ   i  s¹   € òFòDô &Ø"Ø+Ü�q‘	Øñ	€Kô 
×	Ò	˜XÓ	&€BØ	�‰œBŸI™IŸN™N¨3Ó/´b·i±i·n±nÀSÓ6IÑJÓ	K€BØ×Ñ˜bÔ!Ø×-Ñ-Ó/€Eä�eœRŸZ™Z×(Ñ(Ð(Ð(Ø�;‰;œ&Ó Ð Ð Ü�uÐ@ÕAr   c                  ó$  • S n S n[         R                  " SS/SS/SS//5      n[        U USS9nUR                  U5      nUR                  UR
                  S   :X  d   eUR                  U5        UR                  UR
                  S   :X  d   eg	)
zOTest that function transformer does not reset estimator in
`inverse_transform`.c                 óx   • [         R                  " U R                  S   S45      n[         R                  " X4SS9$ )Nr   r5   rÔ   )r'   ÚonesÚshaperÖ   )r   ÚX_ones     r   Úadd_constant_featureÚHtest_function_transformer_validate_inverse.<locals>.add_constant_feature…  s/   € Ü—’˜Ÿ™ ™ Q˜Ó(ˆÜ�~Š~˜q˜j¨qÑ1Ð1r   c                 ó   • U S S 2S S24   $ )Néÿÿÿÿr   r1   s    r   Úinverse_add_constantÚHtest_function_transformer_validate_inverse.<locals>.inverse_add_constant‰  s   € Ø’�C�R�C�‰yÐr   r5   r%   r8   rJ   T)r   rN   rZ   N)r'   rP   r   rg   Ún_features_in_ræ   rR   )rè   rì   r   rh   ÚX_transs        r   Ú*test_function_transformer_validate_inverserð   �  sš   € ò2òô 	�Š�1�a�&˜1˜a˜& 1 a &Ð)Ó*€AÜØ!Ø)Øñ€Eð
 ×!Ñ! !Ó$€GØ×Ñ 1§7¡7¨1¡:Ó-Ð-Ð-à	×Ñ˜GÔ$Ø×Ñ 1§7¡7¨1¡:Ó-Ð-Ñ-r   zfeature_names_out, expectedÚpetÚcolorc                 ó6   • U Vs/ s H  o" S3PM	     sn$ s  snf )NÚ_outr   )ÚestrÊ   rØ   s      r   r   r   �  s   € ±Ó7²¨A˜s $›Z±Ò7ùÒ7ó   …Úpet_outÚ	color_outÚin_pipelinec                 ó¤  ^ • [         R                  " S5      nUR                  SS/SS/S.5      nU 4S jn[        UT S9nU(       a  [	        U5      nUR                  U5      n[        XsR                  5      (       d   eUR                  5       n[        U[        R                  5      (       d   eUR                  [        :X  d   e[        X�5        g	)
zHCheck that get_feature_names_out works with DataFrames with string data.ro   ÚdogÚcatÚredÚgreen)rñ   rò   c                 ó’   >• TS:X  a  U $ T" S U R                   5      nU R                  [        [        U R                   U5      5      S9$ )Nr°   ©Úcolumns)r  Úrenamer?   Úzip)r   ÚnamerÅ   s     €r   r   ÚCtest_get_feature_names_out_dataframe_with_string_data.<locals>.func¨  sA   ø€ Ø Ó,ØˆHá$ T¨1¯9©9Ó5ˆDØ—8‘8¤D¬¨Q¯Y©Y¸Ó)=Ó$>�8Ð?Ð?r   ©r   rÅ   N)r_   rr   rs   r   r   rg   rÆ   rÇ   r'   rÈ   rW   r…   r   )	rÅ   rÉ   rù   rw   r   r   ry   rï   rÊ   s	   `        r   Ú5test_get_feature_names_out_dataframe_with_string_datar  ™  s·   ø€ ô 
×	Ò	˜XÓ	&€BØ
�‰˜e U˜^°u¸gÐ6FÑGÓH€Aõ@ô &¨4ÐCTÑU€KÞÜ# KÓ0ˆà×'Ñ'¨Ó*€GÜ�gŸ|™|×,Ñ,Ð,Ð,à×-Ñ-Ó/€EÜ�eœRŸZ™Z×(Ñ(Ð(Ð(Ø�;‰;œ&Ó Ð Ð Ü�uÕ'r   c                  óÜ  • [         R                  " S5      n U R                  / SQ/ SQS.5      n[        [        R
                  SS9n[        R                  " 5          [        R                  " S[        5        UR                  SS9  S	S	S	5        UR                  U5      n[        X0R                  5      (       d   e[        UR                  S
S/5        [        S 5      nUR                  SS9  [        R                  " 5          [        R                  " S[        5        UR                  U5      nS	S	S	5        [        X0R                  5      (       d   e[        UR                  S
S/5        [        S 5      nS HN  nUR                  US9  SU SU S3n[         R                  " [        US9   UR                  U5        S	S	S	5        MP     UR                  SS9  [        R                  " 5          [        R                  " S[        5        UR                  U5        S	S	S	5        g	! , (       d  f       GN§= f! , (       d  f       GN= f! , (       d  f       Mß  = f! , (       d  f       g	= f)z5Check behavior of set_output with different settings.ro   rœ   ©r"   é   rp   r�   r°   ©rÅ   r]   ©r*   Nr   rž   c                 ó   • SU -  $ r    r   r¡   s    r   r   Ú&test_set_output_func.<locals>.<lambda>Í  s   €  q¨1¢ur   c                 ó.   • [         R                  " U 5      $ r   )r'   Úasarrayr¡   s    r   r   r  Ø  s   € ¬"¯*ª*°Q¬-r   )ro   Úpolarsz'When `set_output` is configured to be 'z'.*z DataFrame.*r[   Údefault)r_   rr   rs   r   r'   Úlogrd   re   rf   ra   Ú
set_outputrg   rÆ   r   r  r`   )rw   r   Úftrï   Úft_npr*   r™   s          r   Útest_set_output_funcr  ¼  sè  € ä	×	Ò	˜XÓ	&€Bà
�‰š9ª=Ñ9Ó:€Aä	œRŸV™V°|Ñ	D€Bô 
×	 Ò	 Õ	"Ü×Ò˜g¤{Ô3Ø
�‰ ˆÑ)÷ 
#ð ×Ñ˜qÓ!€GÜ�gŸ|™|×,Ñ,Ð,Ð,Ü�w—‘¨¨c¨
Ô3ä	™_Ó	-€BØ‡M�M˜H€MÑ%ô 
×	 Ò	 Õ	"Ü×Ò˜g¤{Ô3Ø×"Ñ" 1Ó%ˆ÷ 
#ô �gŸ|™|×,Ñ,Ð,Ð,Ü�w—‘¨¨c¨
Ô3ô  Ñ 7Ó8€Eã)ˆ	Ø×Ñ 9ÐÑ-à5°i°[ÀÀIÀ;ð Oð ð 	ô �\Š\œ+¨SÓ1Ø×Ñ Ô"÷ 2Ñ1ñ *ð 
×Ñ˜yÐÑ)Ü	×	 Ò	 Õ	"Ü×Ò˜g¤{Ô3Ø×Ñ˜AÔ÷ 
#Ð	"÷A 
#Ö	"ú÷ 
#Ö	"ú÷ 2Ö1ú÷
 
#Õ	"ús0   Á+H'Ä-H9Æ/IÇ1-IÈ'
H6È9
IÉ
I	É
I+c                  óp  • [         R                  " S5      n S n[        [        [        R
                  US9[        5       5      nU R                  SS/SS/SS	//S
S/S9nUR                  U5      nUR                  5       R                  5       SS/:X  d   e[        U[        R                  5      (       d   eg)zçCheck that we have a consistence between the feature names out of
`FunctionTransformer` and the feature names in of the next step in the pipeline.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/27695
ro   c                 ó6   • U Vs/ s H  o"S-   PM	     sn$ s  snf ©NÚ__logr   ©Ú_rÊ   r  s      r   Úwith_suffixÚ?test_consistence_column_name_between_steps.<locals>.with_suffixó  ó   € Ù+0Ó1ª5 4�w”©5Ñ1Ð1ùÒ1rö   r  r5   r%   r8   rJ   r$   r„   r   rž   r   Úa__logÚb__logN)r_   rr   r   r   r'   r0   r   rs   rg   rÇ   ÚtolistrÆ   rÈ   )rw   r  Úpipeliner¥   rï   s        r   Ú*test_consistence_column_name_between_stepsr%  ê  s¯   € ô 
×	Ò	˜XÓ	&€Bò2ô ÜœBŸH™H¸ÑDÄnÓFVó€Hð 
�‰˜˜1�v  1˜v¨¨1 vÐ.¸¸c¸
ˆÐ	C€BØ×$Ñ$ RÓ(€GØ×)Ñ)Ó+×2Ñ2Ó4¸À8Ð8LÓLÐLÐLä�gœrŸz™z×*Ñ*Ð*Ñ*r   Údataframe_libro   r  Útransform_output)r  ro   r  c                 ó  • [         R                  " U 5      nUS:w  a  [         R                  " U5        UR                  / SQ/ SQS.5      nS n[        US9R	                  US9nUR                  U5      n[        [        R                  " U5      [        R                  " U5      5        UR                  5       n[        UR                  5      U" SUR                  5      :X  d   eUR                  5       U" SUR                  5      :X  d   eg)	z8Check that we overwrite the column names when we should.Únumpyrœ   r	  r�   c                 ó6   • U Vs/ s H  o"S-   PM	     sn$ s  snf r  r   r  s      r   r  ÚEtest_function_transformer_overwrite_column_names.<locals>.with_suffix  r   rö   r  r  N)r_   rr   rs   r   r  rg   r   r'   r  rÇ   rÝ   r  r#  )r&  r'  Úlibr¥   r  ry   rï   Úfeature_namess           r   Ú0test_function_transformer_overwrite_column_namesr.    sâ   € ô ×
Ò
˜mÓ
,€CØ˜7Ó"Ü×ÒÐ,Ô-à	�‰šYª]Ñ;Ó	<€Bò2ô &¸ÑD×OÑOØ"ð Pð €Kð ×'Ñ'¨Ó+€GÜ”r—z’z 'Ó*¬B¯JªJ°r«NÔ;à×5Ñ5Ó7€MÜ�—‘Ó ¡K°°b·j±jÓ$AÓAÐAÐAØ×ÑÓ!¡[°°r·z±zÓ%BÓBÐBÑBr   rÅ   c                 ó6   • U Vs/ s H  o" S3PM	     sn$ s  snf ©NÚ_logr   r  s      r   r   r     ó   € ¹uÓ$Eºu°t v¨T£]¹uÒ$EùÒ$Erö   c                 ód  • [         R                  " S5      nUR                  / SQ/ SQS.5      n[        U S9nUR	                  U5      n[        [        R                  " U5      [        R                  " U5      5        UR                  5       n[        UR                  5      [        U5      :X  d   eg)z�Check the same as `test_function_transformer_overwrite_column_names`
but for the specific case of pandas where column names can be numerical.ro   rœ   r	  )r   r5   r  N)r_   rr   rs   r   rg   r   r'   r  rÇ   rÝ   r  )rÅ   rw   r¥   ry   rï   r-  s         r   Ú:test_function_transformer_overwrite_column_names_numericalr4    s‡   € ô 
×	Ò	˜XÓ	&€Bà	�‰š)ªÑ6Ó	7€Bä%Ð8IÑJ€KØ×'Ñ'¨Ó+€GÜ”r—z’z 'Ó*¬B¯JªJ°r«NÔ;à×5Ñ5Ó7€MÜ�—‘Ó ¤D¨Ó$7Ó7Ð7Ñ7r   c                 ó6   • U Vs/ s H  o" S3PM	     sn$ s  snf r0  r   r  s      r   r   r   /  r2  rö   c                 ó   ^ • [         R                  " T 5      nUR                  / SQ/ SQS.5      nU 4S jn[        XAS9nSn[         R                  " [
        US9   UR                  U5      R                    SSS5        g! , (       d  f       g= f)	z‰Check that we raise an error when `func` returns a dataframe with new
column names that become inconsistent with `get_feature_names_out`.rœ   r	  r�   c                 óX   >• TS:X  a  U R                  SS0S9$ U R                  SS05      $ )Nro   r   r­   r   )r  )r¥   r&  s    €r   r   ÚAtest_function_transformer_error_column_inconsistent.<locals>.func:  s3   ø€ Ø˜HÓ$Ø—9‘9 c¨3 Z�9Ð0Ð0à—9‘9˜c 3˜ZÓ(Ð(r   r  z:The output generated by `func` have different column namesr[   N)r_   rr   rs   r   r•   r–   rg   r  )r&  rÅ   r,  r¥   r   ry   r&   s   `      r   Ú3test_function_transformer_error_column_inconsistentr9  ,  sl   ø€ ô ×
Ò
˜mÓ
,€Cà	�‰šYª]Ñ;Ó	<€Bõ)ô &¨4ÑU€KØJ€GÜ	�Š”z¨Ó	1Ø×!Ñ! "Ó%×-Ò-÷ 
2×	1Ö	1ús   ÁA?Á?
B),rd   r)  r'   r_   Úsklearn.pipeliner   Úsklearn.preprocessingr   r   Úsklearn.utils._testingr   r   r   Úsklearn.utils.fixesr	   r
   r    r.   r2   rB   rE   rG   rS   ÚmarkÚparametrizerk   rm   r{   rš   r§   r¯   rt   rÍ   rË   rÎ   rÑ   râ   rð   r  r  r%  r.  r4  r9  r   r   r   Ú<module>r@     s  ðÛ ã Û å *ß E÷ñ ÷
 ?ñ /Cô ò'òTòAòAòAòð ‡�×ÑÐ+¨d¨V°nÑ-DÀ~Ñ-UÓVñ Aó Wð AòFò&&ð ‡�×Ñ˜ G¨XÐ#6Ó7ñó 8ðò:1ò"ð  ‡�×ÑØ4ð �I‰I�N‰N˜3 Ó"ØØØð	
ð —)‘)—.‘. Ó%¨B¯I©I¯N©N¸3Ó,?Ñ@ØØØð	
ð �I‰I�N‰N˜3 Ó"Ù:ØØð	
ð —)‘)—.‘. Ó%¨B¯I©I¯N©N¸3Ó,?Ñ@Ù?ØØð	
ð �I‰I�N‰N˜3 Ó"ÙNØØ#ð	
ð —)‘)—.‘. Ó%¨B¯I©I¯N©N¸3Ó,?Ñ@ÙNØØð	
ð �I‰I�N‰N˜3 Ó"ØØØð	
ð —)‘)—.‘. Ó%¨B¯I©I¯N©N¸3Ó,?Ñ@ØØØð	
ð �I‰I�N‰N˜3 Ó"ÙNØØ ð	
ð —)‘)—.‘. Ó%¨B¯I©I¯N©N¸3Ó,?Ñ@ÙNØØð	
ðAGóJðV ‡�×Ñ˜ d¨E ]Ó3ñ(ó 4óWJðX(ò"*ò,òBò0.ð0 ‡�×ÑØ!à	˜˜wÐ'Ð(Ù	7¸)À[Ð9QÐRðóð ‡�×Ñ˜¨¨u¨Ó6ñ(ó 7óð(ò6+ò\+ð. ‡�×Ñ˜¨8°XÐ*>Ó?Ø‡�×ÑÐ+Ò-LÓMñCó Nó @ðCð, ‡�×ÑØØÑEÐFóñ8ó	ð8ð ‡�×Ñ˜¨8°XÐ*>Ó?Ø‡�×ÑØØÑEÐFóñ.ó	ó @ñ
.r   