Ë
    ÷Q(hDK  ã                   ój  — d dl Z d dlZd dl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mZ d„ fd„Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zej.                  j1                  ddgez   ez   «      d„ «       Zd„ Zd„ Zej.                  j1                  dddg«      d„ «       Zd„ Zd„ Zej.                  j1                  dej>                  jA                  dd«      dddfej>                  jA                  d«      ej>                  jA                  d«      dœdddfej>                  jA                  dd«      d„ ddfej>                  jA                  d«      ej>                  jA                  d«      dœd„ dd fej>                  jA                  dd«      d!„ dd"fej>                  jA                  d«      ej>                  jA                  d«      dœd#„ dd$fej>                  jA                  dd«      dd$d$fej>                  jA                  d«      ej>                  jA                  d«      dœdddfej>                  jA                  dd«      d%„ d$d&fej>                  jA                  d«      ej>                  jA                  d«      dœd'„ dd$fg
«      ej.                  j1                  d(d)d*g«      d+„ «       «       Z!d,„ Z"d-„ Z#d.„ Z$d/„ Z%ej.                  j1                  d0dd1d2gfd3„ d4d5ggg«      ej.                  j1                  d6d)d*g«      d7„ «       «       Z&d8„ Z'd9„ Z(ej.                  j1                  d:d;d<g«      ej.                  j1                  d=g d>¢«      d?„ «       «       Z)ej.                  j1                  d@ddA„ g«      dB„ «       Z*ej.                  j1                  d:d;d<g«      ej.                  j1                  d@ddC„ g«      dD„ «       «       Z+y)Eé    N)Úmake_pipeline)ÚFunctionTransformerÚStandardScaler)Ú_convert_containerÚassert_allclose_dense_sparseÚassert_array_equal)ÚCSC_CONTAINERSÚCSR_CONTAINERSc                 ó   — | S ©N© )ÚXÚaÚks      ús/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/preprocessing/tests/test_function_transformer.pyú<lambda>r      s   € À€ ó    c                 ó   ‡ ‡‡— ˆ ˆˆfd„}|S )Nc                 óz   •— ‰j                  | «       ‰j                  |«       ‰j                  |«        ‰| «      S r   )ÚappendÚextendÚupdate)r   ÚargsÚkwargsÚ
args_storeÚfuncÚkwargs_stores      €€€r   Ú_funcz_make_func.<locals>._func   s6   ø€ Ø×Ñ˜!ÔØ×Ñ˜$ÔØ×Ñ˜FÔ#Ù�A‹wˆr   r   )r   r   r   r   s   ``` r   Ú
_make_funcr      s   ú€ öð €Lr   c                  ó  — g } i }t        j                  d«      j                  d«      }t        t	        t        | |«      «      j                  |«      |d«       | |gk(  sJ dj                  | ¬«      «       ‚|rJ dj                  |¬«      «       ‚g | d d  |j                  «        t	        t        | |«      «      j                  |«      }t        ||d¬«       | |gk(  sJ dj                  | ¬«      «       ‚|rJ dj                  |¬«      «       ‚y )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-      sK  € ð €JØ€LÜ
�	‰	�"‹×Ñ˜fÓ%€AÜÜœJ z°<Ó@ÓA×KÑKÈAÓNØ	Ø4ôð Ø	ðò ð Wà>×EÑEÈ:ÐEÓVóWð ñ
 ðWà<×CÑCÈÐCÓVóWØð €J‰q€MØ×ÑÔÜ%Ü�:˜|Ó,óç�i�ƒlð ô Ø�QÐ Lõð
 Ø	ðò ð Wà>×EÑEÈ:ÐEÓVóWð ñ
 ðWà<×CÑCÈÐCÓVóWØˆLr   c                  óÖ   — t        j                  d«      j                  d«      } t        t	        t         j
                  «      j                  | «      t        j
                  | «      «       y )Nr!   r"   )r&   r'   r(   r   r   Úlog1pr)   ©r   s    r   Útest_np_logr1   D   sF   € Ü
�	‰	�"‹×Ñ˜fÓ%€Aô ÜœBŸH™HÓ%×/Ñ/°Ó2Ü
�‰�‹õr   c                  óü   — t        j                  ddd¬«      j                  d«      } t        t         j                  t        d¬«      ¬«      }t        |j                  | «      t        j                  | d¬«      «       y ©	Nr   é   r!   ©Únumr"   é   ©Údecimals©Úkw_args)r&   Úlinspacer(   r   ÚaroundÚdictr   r)   ©r   ÚFs     r   Útest_kw_argrA   N   sS   € Ü
�‰�A�q˜bÔ!×)Ñ)¨&Ó1€AäœBŸI™I¬t¸QÔ/?Ô@€Aô �q—{‘{ 1“~¤r§y¡y°¸QÔ'?Õ@r   c                  ó  — t        j                  ddd¬«      j                  d«      } t        t         j                  t        d¬«      ¬«      }d|j                  d	<   t        |j                  | «      t        j                  | d¬«      «       y )
Nr   r4   r!   r5   r"   r7   r8   r:   r9   ©	r&   r<   r(   r   r=   r>   r;   r   r)   r?   s     r   Útest_kw_arg_updaterD   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                  ó  — t        j                  ddd¬«      j                  d«      } t        t         j                  t        d¬«      ¬«      }t        d¬«      |_        t        |j                  | «      t        j                  | d¬«      «       y r3   rC   r?   s     r   Útest_kw_arg_resetrF   b   s_   € Ü
�‰�A�q˜bÔ!×)Ñ)¨&Ó1€AäœBŸI™I¬t¸QÔ/?Ô@€Aä˜aÔ €A„Iô �q—{‘{ 1“~¤r§y¡y°¸QÔ'?Õ@r   c                  ó\  — t        j                  g d¢«      j                  d«      } t        t         j                  t         j
                  t        d¬«      ¬«      }t        |j                  |j                  | «      «      t        j
                  t        j                  | «      d¬«      «       y )N©r4   é   é	   é   ©r$   r$   r7   r8   )r   Úinverse_funcÚinv_kw_args)
r&   Úarrayr(   r   Úsqrtr=   r>   r   Úinverse_transformr)   r?   s     r   Útest_inverse_transformrR   m   ss   € Ü
�‰’Ó×'Ñ'¨Ó/€Aô 	Ü�W‰WÜ—Y‘YÜ !Ô$ô	€Aô
 Ø	×Ñ˜AŸK™K¨›NÓ+Ü
�	‰	”"—'‘'˜!“* qÔ)õr   Úsparse_containerc                 ó   — t        j                  g d¢t         j                  ¬«      j                  d«      }| � | |«      }t	        t         j
                  t         j                  | d udd¬«      }d}t        j                  t        |¬«      5  |j                  |«       d d d «       t	        t         j                  t         j                  | d udd¬«      }t        j                  «       5  t        j                  dt        «       |j!                  |«      }d d d «       t#        ||j%                  «      «       y # 1 sw Y   Œ›xY w# 1 sw Y   Œ1xY w)	NrH   ©ÚdtyperL   T)r   rM   Ú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&   rO   Úfloat64r(   r   rP   r=   ÚpytestÚwarnsÚUserWarningÚfitÚexpm1r/   ÚwarningsÚcatch_warningsÚsimplefilterÚfit_transformr   rQ   )rS   r   ÚtransÚwarning_messageÚXts        r   Útest_check_inverserj   |   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Ø× Ñ  Ó#ˆ÷$ô !  E×$;Ñ$;¸BÓ$?Õ@÷ð ú÷$ð $ús   ÂD8Ã(,EÄ8EÅEc                  ó4  — t        j                  g d¢t         j                  ¬«      j                  d«      } t	        t         j
                  d dd¬«      }t        j                  «       5  t        j                  dt        «       |j                  | «       d d d «       t	        d t         j
                  dd¬«      }t        j                  «       5  t        j                  dt        «       |j                  | «       d d d «       y # 1 sw Y   ŒoxY w# 1 sw Y   y xY w)NrH   rU   rL   T)r   rM   rX   rY   r\   )r&   rO   r]   r(   r   rb   rc   rd   re   r`   ra   )r   rg   s     r   Ú/test_check_inverse_func_or_inverse_not_providedrl       sÔ   € ô 	�‰’¤b§j¡jÔ1×9Ñ9¸&ÓA€AäÜ�X‰X D¸Àtô€Eô 
×	 Ñ	 Ó	"ñ Ü×Ñ˜g¤{Ô3Ø�	‰	�!Œ÷ô  Ø¤§¡¸Àtô€Eô 
×	 Ñ	 Ó	"ñ Ü×Ñ˜g¤{Ô3Ø�	‰	�!Œ÷ð ÷ð ú÷ð ús   Á(,DÃ,DÄDÄDc                  óÞ   — t        j                  d«      } | j                  t        j                  j                  dd«      «      }t        «       }|j                  |«      }t        |d«      sJ ‚y )NÚpandaséd   r!   Úloc)	r^   ÚimportorskipÚ	DataFramer&   ÚrandomÚrandnr   rf   Úhasattr)ÚpdÚX_dfÚtransformerÚ
X_df_transs       r   Útest_function_transformer_framerz   ³   sW   € Ü	×	Ñ	˜XÓ	&€BØ�<‰<œŸ	™	Ÿ™¨¨RÓ0Ó1€DÜ%Ó'€KØ×*Ñ*¨4Ó0€JÜ�:˜uÔ%Ð%Ñ%r   ÚX_typerO   Úseriesc                 óX  ‡ ‡‡	‡
— ddddddœŠ
‰
j                  «       D ��ci c]  \  }}||“Œ
 c}}Š	dŠg d¢}t        |‰ d	g‰¬
«      }ˆ
fd„}ˆ ˆˆ	fd„}t        ||dd¬«      }d}t        j                  t
        |¬«      5  |j                  |«       ddd«       yc c}}w # 1 sw Y   yxY w)zKCheck that `FunctionTransformer.check_inverse` raises error on mixed dtype.r4   r$   r7   ÚfiveÚsix)ÚoneÚtwoÚthreer#   é   Úobject)r€   r�   r‚   r€   r€   r#   rƒ   Úvalue©Úcolumns_namerV   c                 ó’   •— t        j                  t        | j                  «      D �cg c]
  }‰| |      ‘Œ c}t        ¬«      S c c}w )NrU   )r&   rO   ÚrangeÚsizer„   )r   ÚiÚmappings     €r   r   zDtest_function_transformer_raise_error_with_mixed_dtype.<locals>.funcÅ   s2   ø€ Ü�x‰x´°a·f±f³Ö>¨1˜  1¡›Ò>ÄfÔMÐMùÒ>s   ¨Ac                 óP   •— t        | D �cg c]  }‰|   ‘Œ	 c}‰dg‰¬«      S c c}w )Nr…   r†   )r   )r   Úxr{   rV   Úinverse_mappings     €€€r   rM   zLtest_function_transformer_raise_error_with_mixed_dtype.<locals>.inverse_funcÈ   s1   ø€ Ü!Ø)*Ö+ Aˆ_˜QÓÒ+ØØ!˜Øô	
ð 	
ùÚ+s   ‹#FT)r   rM   rY   rX   úL'check_inverse' is only supported when all the elements in `X` is numerical.rZ   N)Úitemsr   r   r^   ÚraisesÚ
ValueErrorra   )r{   Úkeyr…   Údatar   rM   rx   ÚmsgrV   r�   rŒ   s   `       @@@r   Ú6test_function_transformer_raise_error_with_mixed_dtyper—   »   s±   û€ ð  ¨A°&¸UÑC€GØ4;·M±M³O×D¡j c¨5�u˜c‘zÓD€OØ€Eâ6€DÜ˜d F¸'¸È%ÔP€DôNö
ô &Ø °uÈDô€Kð Y€CÜ	�‰”z¨Ô	-ñ Ø�‰˜Ô÷ð ùó- E÷,ð ús    BÁ?B Â B)c                  ó¾   — t        j                  d«      } | j                  g d¢g d¢dœ«      }t        d„ d„ d¬«      }|j	                  |«      }t        ||d	z   «       y
)z8Check support for dataframes with only numerical values.rn   ©r4   r$   r7   )rI   r#   rƒ   ©r   Úbc                 ó   — | dz   S ©Nr$   r   ©rŽ   s    r   r   z`test_function_transformer_support_all_nummerical_dataframes_check_inverse_True.<locals>.<lambda>ß   s
   € �q˜1‘u€ r   c                 ó   — | dz
  S r�   r   rž   s    r   r   z`test_function_transformer_support_all_nummerical_dataframes_check_inverse_True.<locals>.<lambda>ß   s
   € °Q¸±U€ r   T©r   rM   rX   r$   N)r^   rq   rr   r   rf   r   )rv   Údfrx   Údf_outs       r   ÚNtest_function_transformer_support_all_nummerical_dataframes_check_inverse_Truer£   Ù   sV   € ä	×	Ñ	˜XÓ	&€Bà	�‰šIªIÑ6Ó	7€BÜ%Ù©?È$ô€Kð
 ×&Ñ& rÓ*€FÜ  ¨¨a©Õ0r   c                  ó  — t        j                  d«      } t        d„ d„ d¬«      }| j                  g d¢g d¢dœ«      }d	}t        j                  t
        |¬
«      5  |j                  |«       ddd«       y# 1 sw Y   yxY w)zYCheck error is raised when check_inverse=True.

    Non-regresion test for gh-25261.
    rn   c                 ó   — | S r   r   rž   s    r   r   zQtest_function_transformer_with_dataframe_and_check_inverse_True.<locals>.<lambda>î   s   € �q€ r   c                 ó   — | S r   r   rž   s    r   r   zQtest_function_transformer_with_dataframe_and_check_inverse_True.<locals>.<lambda>î   s   € °€ r   Tr    r™   ©r   r›   Úcrš   r�   rZ   N)r^   rq   r   rr   r’   r“   ra   )rv   rx   Údf_mixedr–   s       r   Ú?test_function_transformer_with_dataframe_and_check_inverse_Truerª   ç   sn   € ô
 
×	Ñ	˜XÓ	&€BÜ%Ù¡{À$ô€Kð �|‰|¢)²/ÑBÓC€HØ
X€CÜ	�‰”z¨Ô	-ñ "Ø�‰˜Ô!÷"÷ "ñ "ús   ÁA6Á6A?z.X, feature_names_out, input_features, expectedro   r7   ú
one-to-one)Úx0Úx1Úx2rš   c                  ó   — y)Nrš   r   ©rx   Úinput_featuress     r   r   r     ó   � r   c                  ó   — y)N©r¨   ÚdÚer   r°   s     r   r   r     r²   r   r´   c                 ó   — t        |«      dz   S )N)r   ©Útupler°   s     r   r   r     ó   € ´°nÓ0EÈÑ0N€ r   )r¬   r­   r®   r   c                 ó   — t        |«      dz   S ©N)r¨   r¸   r°   s     r   r   r      rº   r   r§   c                 ó   — t        |«      dz   S )N)rµ   r¸   r°   s     r   r   r   5  rº   r   )r   r›   r¨   rµ   c                 ó   — t        |«      dz   S r¼   r¸   r°   s     r   r   r   <  rº   r   rY   TFc                 óH  — t        | t        «      r&t        j                  d«      }|j	                  | «      } t        ||¬«      }|j                  | «       |j                  |«      }t        |t        j                  «      sJ ‚|j                  t        k(  sJ ‚t        ||«       y )Nrn   ©Úfeature_names_outrY   )Ú
isinstancer>   r^   rq   rr   r   ra   Úget_feature_names_outr&   ÚndarrayrV   r„   r   )r   rÁ   r±   ÚexpectedrY   rv   rx   Únamess           r   Ú/test_function_transformer_get_feature_names_outrÇ   ÷   s‰   € ô^ �!”TÔÜ× Ñ  Ó*ˆØ�L‰L˜‹Oˆä%Ø+°hô€Kð ‡O�O�AÔØ×-Ñ-¨nÓ=€EÜ�eœRŸZ™ZÔ(Ð(Ð(Ø�;‰;œ&Ò Ð Ð Ü�u˜hÕ'r   c                  ó  — t        dd¬«      } t        j                  j                  dd«      }| j	                  |«       | j                  d«      }t        |t        j                  «      sJ ‚|j                  t        k(  sJ ‚t        |d«       y )Nr«   FrÀ   ro   r$   rš   )r   r&   rs   Úrandrf   rÃ   rÂ   rÄ   rV   r„   r   )rx   r   rÆ   s      r   ÚBtest_function_transformer_get_feature_names_out_without_validationrÊ   T  sp   € Ü%¸ÈuÔU€KÜ
�	‰	�‰�s˜AÓ€AØ×Ñ˜aÔ à×-Ñ-¨jÓ9€EÜ�eœRŸZ™ZÔ(Ð(Ð(Ø�;‰;œ&Ò Ð Ð Ü�u˜jÕ)r   c                  óþ   — t        «       } t        j                  j                  dd«      }| j	                  |«       d}t        j                  t        |¬«      5  | j                  «        d d d «       y # 1 sw Y   y xY w)Nro   r$   zCThis 'FunctionTransformer' has no attribute 'get_feature_names_out'rZ   )	r   r&   rs   rÉ   rf   r^   r’   ÚAttributeErrorrÃ   )rx   r   r–   s      r   Ú3test_function_transformer_feature_names_out_is_NonerÍ   _  s`   € Ü%Ó'€KÜ
�	‰	�‰�s˜AÓ€AØ×Ñ˜aÔ à
O€CÜ	�‰”~¨SÔ	1ñ ,Ø×)Ñ)Ô+÷,÷ ,ñ ,ús   ÁA3Á3A<c                  óÄ  — d„ } d„ }t        | |t        d¬«      d¬«      }t        j                  d«      }|j	                  t
        j                  j                  d«      t
        j                  j                  d«      d	œ«      }|j                  |«       |j                  «       }t        |t
        j                  «      sJ ‚|j                  t        k(  sJ ‚t        |d
«       y )Nc                 ó‚   — t        j                  | t         j                  j                  t	        | «      |«      gd¬«      S )Nr4   ©Úaxis)r&   Úconcatenaters   rÉ   Úlen)r   Úns     r   Úadd_n_random_featureszYtest_function_transformer_feature_names_out_uses_estimator.<locals>.add_n_random_featuresj  s+   € Ü�~‰~˜q¤"§)¡)§.¡.´°Q³¸Ó";Ð<À1ÔEÐEr   c                 óz   — | j                   d   }t        |«      t        |«      D �cg c]  }d|› �‘Œ	 c}z   S c c}w )NrÔ   Úrnd)r;   Úlistr‰   )rx   r±   rÔ   r‹   s       r   rÁ   zUtest_function_transformer_feature_names_out_uses_estimator.<locals>.feature_names_outm  s:   € Ø×Ñ Ñ$ˆÜ�NÓ#¼%À»(Ö&C°Q¨¨Q¨C¢yÒ&CÑCÐCùÒ&Cs   §8r7   )rÔ   T)r   rÁ   r;   rY   rn   ro   rš   )r   r›   Úrnd0Úrnd1Úrnd2)r   r>   r^   rq   rr   r&   rs   rÉ   rf   rÃ   rÂ   rÄ   rV   r„   r   )rÕ   rÁ   rx   rv   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                  ó$  — d„ } d„ }t        j                  ddgddgddgg«      }t        | |d¬«      }|j                  |«      }|j                  |j
                  d   k(  sJ ‚|j                  |«       |j                  |j
                  d   k(  sJ ‚y	)
zSTest that function transformer does not reset estimator in
    `inverse_transform`.c                 ó|   — t        j                  | j                  d   df«      }t        j                  | |fd¬«      S )Nr   r4   rÐ   )r&   ÚonesÚshaperÒ   )r   ÚX_ones     r   Úadd_constant_featurezHtest_function_transformer_validate_inverse.<locals>.add_constant_feature…  s1   € Ü—‘˜Ÿ™ ™ Q˜Ó(ˆÜ�~‰~˜q %˜j¨qÔ1Ð1r   c                 ó   — | d d …d d…f   S )Néÿÿÿÿr   r0   s    r   Úinverse_add_constantzHtest_function_transformer_validate_inverse.<locals>.inverse_add_constant‰  s   € Ø’�C�R�C�‰yÐr   r4   r$   r7   rI   T)r   rM   rY   N)r&   rO   r   rf   Ún_features_in_rà   rQ   )râ   rå   r   rg   Ú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                 ó2   — |D �cg c]  }|› d�‘Œ	 c}S c c}w )NÚ_outr   )ÚestrÆ   rÔ   s      r   r   r   �  s   € °Ö7¨A ˜s $šZÒ7€ ùÒ7ó   …Úpet_outÚ	color_outÚin_pipelinec                 óŠ  ‡ — t        j                  d«      }|j                  ddgddgdœ«      }ˆ fd„}t        |‰ ¬«      }|rt	        |«      }|j                  |«      }t        ||j                  «      sJ ‚|j                  «       }t        |t        j                  «      sJ ‚|j                  t        k(  sJ ‚t        ||«       y	)
zHCheck that get_feature_names_out works with DataFrames with string data.rn   ÚdogÚcatÚredÚgreen)ré   rê   c                 ó–   •— ‰dk(  r| S  ‰d | j                   «      }| j                  t        t        | j                   |«      «      ¬«      S )Nr«   ©Úcolumns)rù   Úrenamer>   Úzip)r   ÚnamerÁ   s     €r   r   zCtest_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^   rq   rr   r   r   rf   rÂ   rÃ   r&   rÄ   rV   r„   r   )	rÁ   rÅ   rñ   rv   r   r   rx   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˜rŸ|™|Ô,Ð,Ð,à×-Ñ-Ó/€EÜ�eœRŸZ™ZÔ(Ð(Ð(Ø�;‰;œ&Ò Ð Ð Ü�u˜hÕ'r   c                  ó²  — t        j                  d«      } | j                  g d¢g d¢dœ«      }t        t        j
                  d¬«      }t        j                  «       5  t        j                  dt        «       |j                  d¬«       d	d	d	«       |j                  |«      }t        || j                  «      sJ ‚t        |j                  d
dg«       t        d„ «      }|j                  d¬«       t        j                  «       5  t        j                  dt        «       |j                  |«      }d	d	d	«       t        || j                  «      sJ ‚t        |j                  d
dg«       t        d„ «      }dD ]R  }|j                  |¬«       d|› d|› d�}t        j                  t        |¬«      5  |j                  |«       d	d	d	«       ŒT |j                  d¬«       t        j                  «       5  t        j                  dt        «       |j                  |«       d	d	d	«       y	# 1 sw Y   �ŒŸxY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÓxY w# 1 sw Y   y	xY w)z5Check behavior of set_output with different settings.rn   r™   ©r!   é   ro   rš   r«   ©rÁ   r\   ©r)   Nr   r›   c                 ó   — d| z  S r�   r   rž   s    r   r   z&test_set_output_func.<locals>.<lambda>Í  s
   €  q¨1¡u€ r   c                 ó,   — t        j                  | «      S r   )r&   Úasarrayrž   s    r   r   z&test_set_output_func.<locals>.<lambda>Ø  s   € ¬"¯*©*°Q«-€ r   )rn   Úpolarsz'When `set_output` is configured to be 'z'.*z DataFrame.*rZ   Údefault)r^   rq   rr   r   r&   Úlogrc   rd   re   r`   Ú
set_outputrf   rÂ   r   rù   r_   )rv   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˜rŸ|™|Ô,Ð,Ð,Ü�w—‘¨¨c¨
Ô3ä	™_Ó	-€BØ‡M�M˜H€MÔ%ô 
×	 Ñ	 Ó	"ñ &Ü×Ñ˜g¤{Ô3Ø×"Ñ" 1Ó%ˆ÷&ô �g˜rŸ|™|Ô,Ð,Ð,Ü�w—‘¨¨c¨
Ô3ô  Ñ 7Ó8€Eà)ò #ˆ	Ø×Ñ 9ÐÔ-à5°i°[ÀÀIÀ;ð Oð ð 	ô �\‰\œ+¨SÔ1ñ 	#Ø×Ñ Ô"÷	#ð 	#ð#ð 
×Ñ˜yÐÔ)Ü	×	 Ñ	 Ó	"ñ Ü×Ñ˜g¤{Ô3Ø×Ñ˜AÔ÷ð ÷A*ñ *ú÷&ñ &ú÷	#ð 	#ú÷
ð ús0   Á-H'Ä,H4Æ0IÇ2,IÈ'H1È4H>ÉI
	ÉIc                  ón  — t        j                  d«      } d„ }t        t        t        j
                  |¬«      t        «       «      }| j                  ddgddgdd	ggd
dg¬«      }|j                  |«      }|j                  «       j                  «       ddgk(  sJ ‚t        |t        j                  «      sJ ‚y)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
    rn   c                 ó2   — |D �cg c]  }|dz   ‘Œ	 c}S c c}w ©NÚ__logr   ©Ú_rÆ   rü   s      r   Úwith_suffixz?test_consistence_column_name_between_steps.<locals>.with_suffixó  ó   € Ø+0Ö1 4��w“Ò1Ð1ùÒ1rî   r  r4   r$   r7   rI   r#   rƒ   r   r›   rø   Úa__logÚb__logN)r^   rq   r   r   r&   r/   r   rr   rf   rÃ   ÚtolistrÂ   rÄ   )rv   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_librn   r  Útransform_output)r  rn   r  c                 ó  — t        j                  | «      }|dk7  rt        j                  |«       |j                  g d¢g d¢dœ«      }d„ }t        |¬«      j	                  |¬«      }|j                  |«      }t        t        j                  |«      t        j                  |«      «       |j                  «       }t        |j                  «       |d|j                  «      k(  sJ ‚|j                  «        |d|j                  «      k(  sJ ‚y)	z8Check that we overwrite the column names when we should.Únumpyr™   r   rš   c                 ó2   — |D �cg c]  }|dz   ‘Œ	 c}S c c}w r  r   r  s      r   r  zEtest_function_transformer_overwrite_column_names.<locals>.with_suffix  r  rî   r  r  N)r^   rq   rr   r   r
  rf   r   r&   r  rÃ   rØ   rù   r  )r  r  Úlibr¡   r  rx   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                 ó2   — |D �cg c]  }|› d�‘Œ	 c}S c c}w ©NÚ_logr   r  s      r   r   r     ó   € ¸uÖ$E°t¨ v¨T¢]Ò$E€ ùÒ$Erî   c                 ób  — t        j                  d«      }|j                  g d¢g d¢dœ«      }t        | ¬«      }|j	                  |«      }t        t        j                  |«      t        j                  |«      «       |j                  «       }t        |j                  «      t        |«      k(  sJ ‚y)z‘Check the same as `test_function_transformer_overwrite_column_names`
    but for the specific case of pandas where column names can be numerical.rn   r™   r   )r   r4   r  N)r^   rq   rr   r   rf   r   r&   r  rÃ   rØ   rù   )rÁ   rv   r¡   rx   rç   r!  s         r   Ú:test_function_transformer_overwrite_column_names_numericalr(    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                 ó2   — |D �cg c]  }|› d�‘Œ	 c}S c c}w r$  r   r  s      r   r   r   /  r&  rî   c                 ó  ‡ — t        j                  ‰ «      }|j                  g d¢g d¢dœ«      }ˆ fd„}t        ||¬«      }d}t        j                  t
        |¬«      5  |j                  |«      j                   ddd«       y# 1 sw Y   yxY w)	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                 ó\   •— ‰dk(  r| j                  ddi¬«      S | j                  ddi«      S )Nrn   r   r¨   rø   )rú   )r¡   r  s    €r   r   zAtest_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 namesrZ   N)r^   rq   rr   r   r’   r“   rf   rù   )r  rÁ   r   r¡   r   rx   r%   s   `      r   Ú3test_function_transformer_error_column_inconsistentr,  ,  sx   ø€ ô ×
Ñ
˜mÓ
,€Cà	�‰šYª]Ñ;Ó	<€Bô)ô &¨4ÐCTÔU€KØJ€GÜ	�‰”z¨Ô	1ñ .Ø×!Ñ! "Ó%×-Ò-÷.÷ .ñ .ús   ÁBÂB),rc   r  r&   r^   Úsklearn.pipeliner   Úsklearn.preprocessingr   r   Úsklearn.utils._testingr   r   r   Úsklearn.utils.fixesr	   r
   r   r-   r1   rA   rD   rF   rR   ÚmarkÚparametrizerj   rl   rz   r—   r£   rª   rs   rÉ   rÇ   rÊ   rÍ   rÜ   rè   rþ   r  r  r"  r(  r,  r   r   r   ú<module>r3     s  ðÛ ã Û å *ß E÷ñ ÷
 ?ñ /Có ò'Wò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   