Ë
    ÜÍ:jÖb ã                   óH  — d Z ddlZddlZddlZddlZddlmZmZ ddlZddl	Z
ddlZddlmZ ddlmZmZmZmZmZmZ ddlmZmZmZmZ ddlmZ ddlmZ dd	lmZm Z  dd
l!m"Z" ddl#m$Z$m%Z%m&Z& ddl'm(Z(m)Z) ddl*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZE ddlFmGZG ddlHmIZImJZJmKZKmLZL ddlMmNZN ddlOmPZPmQZQmRZRmSZS ddlTmUZUmVZV ddlWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^ ddl_m`Z` ddlambZbmcZc  e«       ZddedjÊ                  jÌ                  _g        dedjÐ                  jÌ                  _g        d Zi G d!„ d"e«      Zj G d#„ d$ej«      Zk G d%„ d&eek«      Zl G d'„ d(el«      Zm G d)„ d*em«      Zn G d+„ d,ee«      Zo G d-„ d.e«      Zp G d/„ d0em«      Zq G d1„ d2e«      Zrd3„ Zsejè                  jë                  d4 e@d5efg«      d6f e@d5efd7g«      d6f e@d8d5efg«      d6f e@d9d5efg«      d6f e@d:eEfd5 e«       fg«      d;f e?d5efd< e «       fg«      d6f e?d5 e«       fd<e fg«      d=f e?d>d<e fg«      d=f e?d5efd8g«      d6fg	«      d?„ «       Zvd@„ ZwdA„ ZxdB„ ZydC„ ZzdD„ Z{dE„ Z|dF„ Z}dG„ Z~dH„ ZdI„ Z€dJ„ Z�dK„ Z‚dL„ ZƒdM„ Z„dN„ Z…ejè                  jë                  dOg dP¢«      dQ„ «       Z†ejè                  jë                  dRe`«      dS„ «       Z‡dT„ ZˆdU„ Z‰dV„ ZŠdÓdW„Z‹dX„ ZŒdY„ Z�dZ„ ZŽejè                  jë                  d[g d\¢«      d]„ «       Z�d^„ Z�d_„ Z‘d`„ Z’ejè                  jë                  daddag«      db„ «       Z“ejè                  jë                  daddag«      dc„ «       Z”dd„ Z•de„ Z–ejè                  jë                  df eA eE«        e6«       «      ef eA eE«        e5«       «      ef eA eE«       «      dg„ f e@g «      dh„ fg«      di„ «       Z—dj„ Z˜dk„ Z™ejè                  �j4                  dl„ «       Z›dm„ Zœdn„ Z�do„ Zždp„ ZŸdq„ Z dr„ Z¡ds„ Z¢dt„ Z£du„ Z¤ G dv„ dwe«      Z¥ejè                  jë                  dxdydzg«      ejè                  jë                  d{ eE«        e¥«       dagg d|¢¬}«      d~„ «       «       Z¦d„ Z§d€„ Z¨d�„ Z©d‚„ Zª G dƒ„ d„e«      Z«d…„ Z¬d†„ Z­d‡„ Z®dˆ„ Z¯d‰„  e�j`                   e@dŠ em«       fd‹ ep«       fg«      dŒf e@dŠ em«       fd�d‹ ep«       fg«      dŽf e@dŠ em«       fd�d‹ ep«       fg«      dŽf e@dŠ em«       fd�g«      dŒf e@d‘d’ eo«       fg«      d“f e@d”d’ eo«       fg«      d“f e?d• eo«       fd– eo«       fg«      d—f e?d˜d– eo«       fd™g«      dšfgg d›¢«      D «       Z±ejè                  jë                  dœe±«      d�„ «       Z²dž„ Z³dŸ„ Z´d „ Zµd¡„ Z¶d¢„ Z·d£„ Z¸ejè                  jë                  daddag«      d¤„ «       Z¹ejè                  jë                  d¥eYeXg«      d¦„ «       Zºd§„ Z»d¨„ Z¼d©„ Z½dª„ Z¾ejè                  jë                  d«dydzg«      d¬„ «       Z¿d­„ ZÀejè                  jë                  d®d eÁdd¯«      g«      d°„ «       ZÂd±„ ZÃd²„ ZÄejè                  jë                  d³ eS«       «      d´„ «       ZÅdµ„ ZÆ ed¶¬·«      ejè                  jë                  d¸d¹dºg«      d»„ «       «       ZÇ ed¶¬·«      d¼„ «       ZÈd½„ ZÉ ed¶¬·«      d¾„ «       ZÊejè                  jë                  d¸g d¿¢«      dÀ„ «       ZË G dÁ„ dÂe«      ZÌejè                  jë                  d¸ eÍ eÎeV«      dÃdÄhz
  «      «       ed¶¬·«      dÅ„ «       «       ZÏejè                  jë                  d¸ eÍ eÎeV«      dÃdÄhz
  «      «       ed¶¬·«      dÆ„ «       «       ZÐejè                  jë                  d¸g dÇ¢«      dÈ„ «       ZÑ ed¶¬·«      dÉ„ «       ZÒejè                  jë                  dÊddag«       ed¶¬·«      dË„ «       «       ZÓ ed¶¬·«      dÌ„ «       ZÔ ed¶¬·«      dÍ„ «       ZÕ ed¶¬·«      ejè                  jë                  dÎeJeIg«      dÏ„ «       «       ZÖedÐ„ «       Z×edÑ„ «       ZØedÒ„ «       ZÙy)Ôz
Test the pipeline module.
é    N)ÚTemporaryDirectoryÚmkdtemp)Úconfig_context)ÚBaseEstimatorÚClassifierMixinÚTransformerMixinÚcloneÚis_classifierÚis_regressor)ÚMaxIterEstimatorÚRecordingAutoPropagatedCallbackÚRecordingCallbackÚskip_callback_test_if_wasm)ÚKMeans)Ú	load_iris)ÚPCAÚTruncatedSVD)ÚDummyRegressor)ÚHistGradientBoostingClassifierÚRandomForestClassifierÚRandomTreesEmbedding)ÚNotFittedErrorÚUnsetMetadataPassedError)ÚCountVectorizer)ÚSelectKBestÚ	f_classif)ÚSimpleImputer)ÚNystroem)ÚLassoÚLinearRegressionÚLogisticRegression)Úaccuracy_scoreÚr2_score)Útrain_test_split)ÚLocalOutlierFactor)ÚFeatureUnionÚPipelineÚmake_pipelineÚ
make_union)ÚFunctionTransformerÚStandardScaler)ÚSVC)Ú"ConsumingNoFitTransformTransformerÚConsumingTransformerÚ	_RegistryÚcheck_recorded_metadata)Úget_tags)Ú_atol_for_typeÚget_namespace_and_deviceÚmove_toÚ)yield_namespace_device_dtype_combinations)ÚCOMPOSITE_METHODSÚMETHODS)ÚMinimalClassifierÚMinimalRegressorÚMinimalTransformerÚ_array_api_for_testsÚassert_allcloseÚassert_array_almost_equalÚassert_array_equal)ÚCSR_CONTAINERS)Ú_check_feature_namesÚcheck_is_fittedF)zthe pizza pizza beer copyrightzthe pizza burger beer copyrightz!the the pizza beer beer copyrightzthe burger beer beer copyrightzthe coke burger coke copyrightzthe coke burger burgerc                   ó   — e Zd ZdZdd„Zy)ÚNoFitz*Small class to test parameter dispatching.Nc                 ó    — || _         || _        y ©N©ÚaÚb)ÚselfrG   rH   s      úp/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/tests/test_pipeline.pyÚ__init__zNoFit.__init__b   s   € ØˆŒØˆ�ó    ©NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rK   © rL   rJ   rC   rC   _   s
   „ Ù4ôrL   rC   c                   ó"   — e Zd Zdd„Zdd„Zd„ Zy)ÚNoTransNc                 ó   — | S rE   rR   ©rI   ÚXÚys      rJ   ÚfitzNoTrans.fith   ó   € ØˆrL   c                 ó4   — | j                   | j                  dœS )NrF   rF   )rI   Údeeps     rJ   Ú
get_paramszNoTrans.get_paramsk   s   € Ø—V‘V $§&¡&Ñ)Ð)rL   c                 ó   — |d   | _         | S ©NrG   ©rG   )rI   Úparamss     rJ   Ú
set_paramszNoTrans.set_paramsn   s   € Ø˜‘ˆŒØˆrL   rE   ©F)rN   rO   rP   rY   r]   rb   rR   rL   rJ   rT   rT   g   s   „ óó*órL   rT   c                   ó   — e Zd Zd„ Zy)ÚNoInvTransfc                 ó   — |S rE   rR   ©rI   rW   s     rJ   Ú	transformzNoInvTransf.transformt   ó   € ØˆrL   N)rN   rO   rP   rh   rR   rL   rJ   re   re   s   s   „ órL   re   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTransfc                 ó   — |S rE   rR   rg   s     rJ   rh   zTransf.transformy   ri   rL   c                 ó   — |S rE   rR   rg   s     rJ   Úinverse_transformzTransf.inverse_transform|   ri   rL   N)rN   rO   rP   rh   rn   rR   rL   rJ   rk   rk   x   s   „ òórL   rk   c                   ó   — e Zd Zdd„Zy)ÚTransfFitParamsNc                 ó   — || _         | S rE   )Ú
fit_params©rI   rW   rX   rr   s       rJ   rY   zTransfFitParams.fit�   s   € Ø$ˆŒØˆrL   rE   ©rN   rO   rP   rY   rR   rL   rJ   rp   rp   €   s   „ ôrL   rp   c                   óH   — e Zd Zd	d„Zd„ Zd
d„Zd„ Zd„ Zd„ ZexZ	xZ
Zd
d„Zy)ÚMultc                 ó   — || _         y rE   ©Úmult)rI   ry   s     rJ   rK   zMult.__init__‡   s	   € Øˆ�	rL   c                  ó   — y©NTrR   ©rI   s    rJ   Ú__sklearn_is_fitted__zMult.__sklearn_is_fitted__Š   ó   € ØrL   Nc                 ó   — | S rE   rR   rV   s      rJ   rY   zMult.fit�   rZ   rL   c                 óF   — t        j                  |«      | j                  z  S rE   ©ÚnpÚasarrayry   rg   s     rJ   rh   zMult.transform�   ó   € Ü�z‰z˜!‹}˜tŸy™yÑ(Ð(rL   c                 óF   — t        j                  |«      | j                  z  S rE   r�   rg   s     rJ   rn   zMult.inverse_transform“   r„   rL   c                 óf   — t        j                  |«      | j                  z  j                  d¬«      S )Né   ©Úaxis)r‚   rƒ   ry   Úsumrg   s     rJ   ÚpredictzMult.predict–   s'   € Ü—
‘
˜1“ §	¡	Ñ)×.Ñ.°AÐ.Ó6Ð6rL   c                 ó,   — t        j                  |«      S rE   ©r‚   rŠ   rV   s      rJ   Úscorez
Mult.score›   s   € Ü�v‰v�a‹yÐrL   )r‡   rE   )rN   rO   rP   rK   r}   rY   rh   rn   r‹   Úpredict_probaÚpredict_log_probaÚdecision_functionrŽ   rR   rL   rJ   rv   rv   †   s9   „ óòóò)ò)ò7ð =DÐC€MÐCÐ%Ð(9ôrL   rv   c                   ó4   — e Zd ZdZd„ Zdd„Zd„ Zdd„Zd	d„Zy)
Ú	FitParamTzMock classifierc                 ó   — d| _         y )NF©Ú
successfulr|   s    rJ   rK   zFitParamT.__init__¢   s	   € Øˆ�rL   c                 ó    — || _         d| _        y r{   )r–   Úfitted_©rI   rW   rX   Úshould_succeeds       rJ   rY   zFitParamT.fit¥   s   € Ø(ˆŒØˆ�rL   c                 ó   — | j                   S rE   r•   rg   s     rJ   r‹   zFitParamT.predict©   s   € Ø�‰ÐrL   c                 óL   — | j                  |||¬«       | j                  |«      S )N)rš   )rY   r‹   r™   s       rJ   Úfit_predictzFitParamT.fit_predict¬   s"   € Ø�‰��A nˆÔ5Ø�|‰|˜A‹ÐrL   Nc                 ó:   — |�||z  }t        j                  |«      S rE   r�   )rI   rW   rX   Úsample_weights       rJ   rŽ   zFitParamT.score°   s    € ØÐ$Ø�MÑ!ˆAÜ�v‰v�a‹yÐrL   rc   rM   )	rN   rO   rP   rQ   rK   rY   r‹   r�   rŽ   rR   rL   rJ   r“   r“   Ÿ   s   „ Ùò óòóôrL   r“   c                   ó   — e Zd ZdZd„ Zy)ÚDummyTransfz(Transformer which store the column meansc                 óp   — t        j                  |d¬«      | _        t        j                  «       | _        | S )Nr   rˆ   )r‚   ÚmeanÚmeans_ÚtimeÚ
timestamp_rV   s      rJ   rY   zDummyTransf.fit¹   s(   € Ü—g‘g˜a aÔ(ˆŒô Ÿ)™)›+ˆŒØˆrL   N)rN   rO   rP   rQ   rY   rR   rL   rJ   r¡   r¡   ¶   s
   „ Ù2órL   r¡   c                   ó4   — e Zd ZdZd„ Zd„ Zdd„Zdd„Zdd„Zy)	ÚDummyEstimatorParamsz,Mock classifier that takes params on predictc                  ó   — yr{   rR   r|   s    rJ   r}   z*DummyEstimatorParams.__sklearn_is_fitted__Ä   r~   rL   c                 ó   — | S rE   rR   rV   s      rJ   rY   zDummyEstimatorParams.fitÇ   rZ   rL   c                 ó   — || _         | S rE   ©Úgot_attribute©rI   rW   r­   s      rJ   r‹   zDummyEstimatorParams.predictÊ   ó   € Ø*ˆÔØˆrL   c                 ó   — || _         | S rE   r¬   r®   s      rJ   r�   z"DummyEstimatorParams.predict_probaÎ   r¯   rL   c                 ó   — || _         | S rE   r¬   r®   s      rJ   r�   z&DummyEstimatorParams.predict_log_probaÒ   r¯   rL   Nrc   )	rN   rO   rP   rQ   r}   rY   r‹   r�   r�   rR   rL   rJ   r¨   r¨   Á   s   „ Ù6òòóóôrL   r¨   c                  ó²  — t        dg«      } t        j                  t        «      5  | j	                  dggdg«       d d d «       d}t        dt        «       fg«      } t        j                  t        |¬«      5  | j	                  dggdg«       d d d «       t        «       }t        d|fg«      }|j                  d¬«      t        dd d |d	œ|j                  d
¬«      ¤Žk(  sJ ‚|j                  d¬«       |j                  dk(  sJ ‚|j                  �J ‚t        |«       t        «       }t        t        «      }t        d|fd|fg«      }|j                   d   |u sJ ‚|j                   d   |u sJ ‚d}t        dt        «       fd|fg«      } t        j                  t        |¬«      5  | j	                  dggdg«       d d d «       |j                  d¬«       |j"                  dk(  sJ ‚t        |«       t%        j&                  d«      }t        j                  t(        |¬«      5  |j                  d¬«       d d d «       t+        |«      }|j                   d   |j                   d   usJ ‚|j                  d¬«      }|j                  d¬«      }|j                  d
¬«      D ]  }|j-                  |«       Œ |j                  d
¬«      D ]  }|j-                  |«       Œ |j-                  d«       |j-                  d«       |j-                  d«       |j-                  d«       ||k(  sJ ‚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   �ŒxY w)N)r‡   r‡   r‡   zRLast step of Pipeline should implement fit or be the string 'passthrough'.*NoFit.*Úclf©ÚmatchÚsvcT©r\   )Úsvc__aÚsvc__br¶   Fçš™™™™™¹?)r¸   Úanovaz<All intermediate steps should be transformers.*\bNoTrans\b.*Út)Úsvc__Cz]Invalid parameter 'C' for estimator SelectKBest(). Valid parameters are: ['k', 'score_func'].)Úanova__CrR   )r'   ÚpytestÚraisesÚ	TypeErrorrY   rC   rT   r]   Údictrb   rG   rH   Úreprr,   r   r   Únamed_stepsÚCÚreÚescapeÚ
ValueErrorr	   Úpop)	ÚpipelineÚmsgr³   ÚpipeÚfilter1Úpipe2ra   Úparams2Úxs	            rJ   Ú test_pipeline_invalid_parametersrÑ   ×   s8  € ô ˜˜Ó!€HÜ	�‰”yÓ	!ñ !Ø�‰�q�c�U˜Q˜CÔ ÷!ð	ð ô
 ˜%¤£Ð)Ð*Ó+€HÜ	�‰”y¨Ô	,ñ !Ø�‰�q�c�U˜Q˜CÔ ÷!ô ‹)€CÜ�e˜S�\�NÓ#€DØ�?‰? ˆ?Ó%¬ð *Ø˜D cñ*Ø-1¯_©_À%¨_Ó-Hñ*ò ð ð ð
 	‡O�O˜3€OÔØ�5‰5�CŠ<Ðˆ<Ø�5‰5ˆ=Ðˆ=äˆ„Jô ‹%€CÜœ)Ó$€GÜ�g˜wÐ'¨%°¨Ð6Ó7€Dð ×Ñ˜GÑ$¨Ñ/Ð/Ð/Ø×Ñ˜EÑ" cÑ)Ð)Ð)ð K€CÜ˜#œw›yÐ)¨E°3¨<Ð8Ó9€HÜ	�‰”y¨Ô	,ñ !Ø�‰�q�c�U˜Q˜CÔ ÷!ð 	‡O�O˜3€OÔØ�5‰5�CŠ<Ðˆ<äˆ„Jô �)‰)ð	ó€Cô 
�‰”z¨Ô	-ñ &Ø�‰ ˆÔ%÷&ô �$‹K€EØ×Ñ˜EÑ"¨%×*;Ñ*;¸EÑ*BÑBÐBÐBð �_‰_ $ˆ_Ó'€FØ×Ñ DÐÓ)€Gà�_‰_ %ˆ_Ó(ò ˆØ�
‰
�1�ðð ×Ñ 5ÐÓ)ò ˆØ�‰�A�ðð ‡J�JˆuÔØ
‡J�JˆwÔØ‡K�K�ÔØ‡K�K�ÔØ�WÒÐÑ÷[!ñ !ú÷!ñ !ú÷<!ñ !ú÷&ñ &ús/   ¦L%Á7L2Æ#L?ÈMÌ%L/Ì2L<Ì?M	ÍMzmeta_estimators, class_nameÚpcar   )ÚidentN©ÚpassthroughrÕ   )rÕ   NÚscaler+   Úsvdr   )ÚdroprØ   c                 óØ   — t        | «      } t        j                  d|› d|› d�«      }t        j                  t
        |¬«      5  | j                  dgg«       d d d «       y # 1 sw Y   y xY w)Nz Expected an estimator instance (z"()), got estimator class instead (z).r´   r‡   )r	   rÆ   rÇ   r¿   rÀ   rÁ   rY   )Úmeta_estimatorsÚ
class_namerË   s      rJ   Ú3test_meta_estimator_raises_class_not_instance_errorrÜ   +  sk   € ô  ˜OÓ,€OÜ
�)‰)Ø
*¨:¨,ð 7(Ø(2 |°2ð	7ó€Cô 
�‰”y¨Ô	,ñ #Ø×Ñ˜a˜S˜EÔ"÷#÷ #ñ #ús   ÁA Á A)c                  óâ   — t         j                  } t         j                  }t        g «      }d}t	        j
                  t        |¬«      5  |j                  | |«       d d d «       y # 1 sw Y   y xY w)Nz(The pipeline is empty. Please add steps.r´   )ÚirisÚdataÚtargetr'   r¿   rÀ   rÈ   rY   )rW   rX   rÌ   rË   s       rJ   Útest_empty_pipelinerá   D  sR   € Ü�	‰	€AÜ�‰€Aä�B‹<€DØ
4€CÜ	�‰”z¨Ô	-ñ Ø�‰��AŒ÷÷ ñ ús   Á	A%Á%A.c                  ó<   — t        g «      } t        | «      }d|v sJ ‚y)z+Check that dir() works on an empty pipelineÚstepsN)r'   Údir)rÌ   Úattrss     rJ   Útest_empty_pipeline_dirræ   N  s"   € ä�B‹<€DÜ�‹I€EØ�eÑÐÑrL   c                  ó*  — t        j                  ddgg«      } t        dt        «       fdt	        «       ff«      }|j                  | d ¬«       |j                  | «       |j                  d¬«       |j                  | d ¬«       |j                  | «       y )Nr‡   é   Útransfr³   ©rX   rÕ   )ré   )r‚   Úarrayr'   rk   r“   rY   rŽ   rb   ©rW   rÌ   s     rJ   Útest_pipeline_init_tuplerí   U  sw   € ä
�‰�1�a�&�Ó€AÜ�h¤£Ð)¨E´9³;Ð+?Ð@ÓA€DØ‡H�HˆQ�$€HÔØ‡J�Jˆq„Mà‡O�O˜=€OÔ)Ø‡H�HˆQ�$€HÔØ‡J�Jˆq…MrL   c                  óJ  — t         j                  } t         j                  }t        «       }t	        t
        d¬«      }t        d|fd|fg«      }|j                  | |«       |j                  | «       |j                  | «       |j                  | «       |j                  | |«       y )Nrè   ©Úkr»   Úlogistic)rÞ   rß   rà   r!   r   r   r'   rY   r‹   r�   r�   rŽ   )rW   rX   r³   rÍ   rÌ   s        rJ   Útest_pipeline_methods_anovarò   a  sƒ   € ä�	‰	€AÜ�‰€Aä
Ó
€CÜœ) qÔ)€GÜ�g˜wÐ'¨*°cÐ):Ð;Ó<€DØ‡H�HˆQ�„NØ‡L�L�„OØ×Ñ�qÔØ×Ñ˜1ÔØ‡J�Jˆq�!ÕrL   c                  ó²  — t        dt        «       fdt        «       fg«      } | j                  d d d¬«       | j	                  d «      sJ ‚| j
                  d   j                  �J ‚| j
                  d   j                  �J ‚t        j                  d«      }t        j                  t        |¬«      5  | j                  d d d¬«       d d d «       y # 1 sw Y   y xY w)Nré   r³   T)rW   rX   Úclf__should_succeedz.fit() got an unexpected keyword argument 'bad'r´   )Úclf__bad)r'   rk   r“   rY   r‹   rÄ   rG   rH   rÆ   rÇ   r¿   rÀ   rÁ   )rÌ   rË   s     rJ   Útest_pipeline_fit_paramsrö   p  sÃ   € ä�h¤£Ð)¨E´9³;Ð+?Ð@ÓA€DØ‡H�Hˆt�t°€HÔ6à�<‰<˜ÔÐÐà×Ñ˜HÑ%×'Ñ'Ð/Ð/Ð/Ø×Ñ˜HÑ%×'Ñ'Ð/Ð/Ð/ô �)‰)ÐDÓ
E€CÜ	�‰”y¨Ô	,ñ ,Ø�‰��t dˆÔ+÷,÷ ,ñ ,ús   Â/CÃCc                  ó„  — t        j                  ddgg«      } t        dt        «       fdt	        «       fg«      }|j                  | d ¬«       |j                  | «      dk(  sJ ‚|j                  | d ¬«      dk(  sJ ‚|j                  | d d ¬«      dk(  sJ ‚|j                  | t        j                  ddg«      ¬«      d	k(  sJ ‚y )
Nr‡   rè   ré   r³   rê   é   )rX   rŸ   ©rŸ   é   )r‚   rë   r'   rk   r“   rY   rŽ   rì   s     rJ   Ú%test_pipeline_sample_weight_supportedrû   €  s¹   € ä
�‰�1�a�&�Ó€AÜ�h¤£Ð)¨E´9³;Ð+?Ð@ÓA€DØ‡H�HˆQ�$€HÔØ�:‰:�a‹=˜AÒÐÐØ�:‰:�a˜4ˆ:Ó  AÒ%Ð%Ð%Ø�:‰:�a˜4¨tˆ:Ó4¸Ò9Ð9Ð9Ø�:‰:�a¤r§x¡x°°A°Ó'7ˆ:Ó8¸AÒ=Ð=Ñ=rL   c                  óÒ  — t        j                  ddgg«      } t        dt        «       fdt	        «       fg«      }|j                  | d ¬«       |j                  | «      dk(  sJ ‚|j                  | d ¬«      dk(  sJ ‚t        j                  d«      }t        j                  t        |¬	«      5  |j                  | t        j                  ddg«      ¬«       d d d «       y # 1 sw Y   y xY w)
Nr‡   rè   ré   r³   rê   rø   rù   z:score() got an unexpected keyword argument 'sample_weight'r´   )r‚   rë   r'   rk   rv   rY   rŽ   rÆ   rÇ   r¿   rÀ   rÁ   )rW   rÌ   rË   s      rJ   Ú'test_pipeline_sample_weight_unsupportedrý   ‹  sÂ   € ä
�‰�1�a�&�Ó€AÜ�h¤£Ð)¨E´4³6¨?Ð;Ó<€DØ‡H�HˆQ�$€HÔØ�:‰:�a‹=˜AÒÐÐØ�:‰:�a tˆ:Ó,°Ò1Ð1Ð1ä
�)‰)ÐPÓ
Q€CÜ	�‰”y¨Ô	,ñ 6Ø�
‰
�1¤B§H¡H¨a°¨VÓ$4ˆ
Ô5÷6÷ 6ñ 6ús   Â+)CÃC&c                  ó  — t        dt        «       fg«      } t        j                  d«      }t	        j
                  t        |¬«      5  | j                  d¬«       d d d «       t	        j
                  t        |¬«      5  | j                  d¬«       d d d «       t        j                  d«      }t	        j
                  t        |¬«      5  | j                  d¬«       d d d «       y # 1 sw Y   Œ‹xY w# 1 sw Y   ŒaxY w# 1 sw Y   y xY w)	NÚclszžInvalid parameter 'fake' for estimator Pipeline(steps=[('cls', LinearRegression())]). Valid parameters are: ['memory', 'steps', 'transform_input', 'verbose'].r´   Únope)Úfake)Úfake__estimatorz“Invalid parameter 'invalid_param' for estimator LinearRegression(). Valid parameters are: ['copy_X', 'fit_intercept', 'n_jobs', 'positive', 'tol'].)Úcls__invalid_param)r'   r    rÆ   rÇ   r¿   rÀ   rÈ   rb   )rÌ   Ú	error_msgs     rJ   Ú$test_pipeline_raise_set_params_errorr  ˜  sá   € ä�eÔ-Ó/Ð0Ð1Ó2€Dô —	‘	ð	*ó€Iô
 
�‰”z¨Ô	3ñ %Ø�‰˜VˆÔ$÷%ô
 
�‰”z¨Ô	3ñ 0Ø�‰¨ˆÔ/÷0ô —	‘	ð	Uó€Iô 
�‰”z¨Ô	3ñ 3Ø�‰¨6ˆÔ2÷3ð 3÷%ð %ú÷
0ð 0ú÷3ð 3ús$   ÁC$Á=C0ÃC<Ã$C-Ã0C9Ã<Dc                  óD  — t         j                  } t         j                  }t        «       }t	        ddd¬«      }t        d|fd|fg«      }|j                  | |«       |j                  | «       |j                  | «       |j                  | «       |j                  | |«       y )NÚfullÚmleT©Ú
svd_solverÚn_componentsÚwhitenrÒ   Ú
classifier)rÞ   rß   rà   r!   r   r'   rY   r‹   r�   r�   rŽ   )rW   rX   r³   rÒ   rÌ   s        rJ   Ú$test_pipeline_methods_pca_classifierr  ³  s„   € ä�	‰	€AÜ�‰€Aä
Ó
€CÜ
˜¨e¸DÔ
A€CÜ�e˜S�\ L°#Ð#6Ð7Ó8€DØ‡H�HˆQ�„NØ‡L�L�„OØ×Ñ�qÔØ×Ñ˜1ÔØ‡J�Jˆq�!ÕrL   c                  óª  — t         j                  } t        ddd¬«      }t        d¬«      }t	        d|fd|fg«      }|j                  | «       |j                  | «      j                  | j                  d   fk(  sJ ‚|j                  |j                  | «      «       t        |j                  | «      |j                  |j                  | «      «      «       y )	Nr  r  Tr	  )ÚnoveltyrÒ   Úlofr   )rÞ   rß   r   r%   r'   rY   Úscore_samplesÚshapeÚfit_transformr<   rh   )rW   rÒ   r  rÌ   s       rJ   Ú#test_pipeline_score_samples_pca_lofr  Â  s°   € Ü�	‰	€Aô ˜¨e¸DÔ
A€CÜ
 TÔ
*€CÜ�e˜S�\ E¨3 <Ð0Ó1€DØ‡H�HˆQ„Kà×Ñ˜aÓ ×&Ñ&¨1¯7©7°1©:¨-Ò7Ð7Ð7à‡G�GˆC×Ñ˜aÓ Ô!Ü�D×&Ñ& qÓ)¨3×+<Ñ+<¸S¿]¹]È1Ó=MÓ+NÕOrL   c                  óÊ  — t        j                  dgdgg«      } t        j                  ddg«      }t        t        «       «      }|j	                  | |«       d}d}t        j                  t        |¬«      5 }|j                  | «       d d d «       t        j                  j                  t        «      sJ ‚|t        |j                  j                  «      v sJ ‚y # 1 sw Y   ŒSxY w)Nr‡   rè   z<'LogisticRegression' object has no attribute 'score_samples'z+'Pipeline' has no attribute 'score_samples'r´   )r‚   rë   r(   r!   rY   r¿   rÀ   ÚAttributeErrorr  Ú
isinstanceÚvalueÚ	__cause__Ústr)rW   rX   rÌ   Ú	inner_msgÚ	outer_msgÚ	exec_infos         rJ   Ú4test_score_samples_on_pipeline_without_score_samplesr  Ò  s½   € Ü
�‰�1�#˜�s�Ó€AÜ
�‰�!�Q�Ó€Aô Ô+Ó-Ó.€DØ‡H�HˆQ�„NàN€IØ=€IÜ	�‰”~¨YÔ	7ð ¸9Ø×Ñ˜1Ô÷ô �i—o‘o×/Ñ/´Ô@Ð@Ð@Øœ˜IŸO™O×5Ñ5Ó6Ñ6Ð6Ñ6÷	ð ús   Á5CÃC"c                  ó|  — t         j                  } t         j                  }| j                  d   }t	        t        j                  |«      «      }t        «       }t        ddd¬«      }t        «       }||fD ]Æ  }t        d|fd|fg«      }|j                  | |«       |j                  | «      }	|	j                  |fk(  sJ ‚|j                  | «      }
|
j                  ||fk(  sJ ‚|j                  | «      }|j                  ||fk(  sJ ‚|j                  | «      }|j                  ||fk(  sJ ‚|j!                  | |«       ŒÈ y )Nr   rè   Ú
randomizedT)r  r
  r  Ú
preprocessr¶   )rÞ   rß   rà   r  Úlenr‚   Úuniquer+   r   r!   r'   rY   r‹   r�   r�   r‘   rŽ   )rW   rX   Ú	n_samplesÚ	n_classesÚscalerrÒ   r³   ÚpreprocessingrÌ   r‹   ÚprobaÚ	log_probar‘   s                rJ   Ú.test_pipeline_methods_preprocessing_classifierr+  ã  s2  € ä�	‰	€AÜ�‰€AØ—‘˜‘
€IÜ”B—I‘I˜a“LÓ!€IÜÓ€FÜ
˜1¨¸dÔ
C€CÜ
Ó
€Cà  #˜ò ˆÜ˜,¨Ð6¸À¸ÐEÓFˆØ�‰��AŒð —,‘,˜q“/ˆØ�}‰}  Ò,Ð,Ð,à×"Ñ" 1Ó%ˆØ�{‰{˜y¨)Ð4Ò4Ð4Ð4à×*Ñ*¨1Ó-ˆ	Ø�‰ 9¨iÐ"8Ò8Ð8Ð8à ×2Ñ2°1Ó5ÐØ ×&Ñ&¨9°iÐ*@Ò@Ð@Ð@à�
‰
�1�aÕñ#rL   c                  ó8  — t        «       } t        dd¬«      }t        «       }t        dd¬«      }| j                  t        j                  «      }|j                  |«      }t        d|fd|fg«      }|j                  t        j                  «      }t        ||«       y )Nr   Úauto)Úrandom_stateÚn_initr'  ÚKmeans)r+   r   r  rÞ   rß   r�   r'   r=   )r'  ÚkmÚscaler_for_pipelineÚkm_for_pipelineÚscaledÚseparate_predrÌ   Úpipeline_preds           rJ   Útest_fit_predict_on_pipeliner7    s�   € ô Ó€FÜ	˜Q vÔ	.€Bô )Ó*ÐÜ¨!°FÔ;€Oð ×!Ñ!¤$§)¡)Ó,€FØ—N‘N 6Ó*€Mô �hÐ 3Ð4°xÀÐ6QÐRÓS€DØ×$Ñ$¤T§Y¡YÓ/€Mä˜m¨]Õ;rL   c                  ód  — t        «       } t        d¬«      }t        d| fd|fg«      }d}d}t        j                  t
        |¬«      5 }t        |d«       d d d «       t        j                  j                  t
        «      sJ ‚|t        |j                  j                  «      v sJ ‚y # 1 sw Y   ŒSxY w)	Nr  ©r
  r'  rÒ   z)'Pipeline' has no attribute 'fit_predict'z+'PCA' object has no attribute 'fit_predict'r´   r�   )r+   r   r'   r¿   rÀ   r  Úgetattrr  r  r  r  )r'  rÒ   rÌ   r  r  r  s         rJ   Ú0test_fit_predict_on_pipeline_without_fit_predictr;    sž   € ô Ó€FÜ
˜Ô
 €CÜ�h Ð'¨%°¨Ð6Ó7€Dà;€IØ=€IÜ	�‰”~¨YÔ	7ð %¸9Ü��mÔ$÷%ä�i—o‘o×/Ñ/´Ô@Ð@Ð@Øœ˜IŸO™O×5Ñ5Ó6Ñ6Ð6Ñ6÷%ð %ús   ÁB&Â&B/c                  ó  — t        dt        «       fdt        «       fg«      } | j                  d d dd¬«       | j                  d   j
                  d   sJ ‚| j                  d   j                  sJ ‚d| j                  d   j
                  vsJ ‚y )Nré   r³   T)rW   rX   Útransf__should_get_thisrô   Úshould_get_thisrš   )r'   rp   r“   r�   rÄ   rr   r–   ©rÌ   s    rJ   Ú-test_fit_predict_with_intermediate_fit_paramsr@  &  s™   € ô �h¤Ó 1Ð2°U¼I»KÐ4HÐIÓJ€DØ×ÑØ
�$°È$ð ô ð ×Ñ˜HÑ%×0Ñ0Ð1BÒCÐCÐCØ×Ñ˜EÑ"×-Ò-Ð-Ð-Ø 4×#3Ñ#3°HÑ#=×#HÑ#HÑHÐHÑHrL   Úmethod_name)r‹   r�   r�   c                 óÌ   — t        dt        «       fdt        «       fg«      }|j                  d d «       t	        || «      } |d d¬«       |j
                  d   j                  sJ ‚y )Nré   r³   T)rW   r­   )r'   rk   r¨   rY   r:  rÄ   r­   )rA  rÌ   Úmethods      rJ   Ú(test_predict_methods_with_predict_paramsrD  2  sa   € ô �h¤£Ð)¨EÔ3GÓ3IÐ+JÐKÓL€DØ‡H�HˆT�4ÔÜ�T˜;Ó'€FÙ
ˆT Õ&à×Ñ˜EÑ"×0Ò0Ð0Ñ0rL   Úcsr_containerc                 ó(  — t         j                  j                  «       }||j                  d¬«      z  }t         j                  }t        dd¬«      }t        d¬«      }t        d|fd|fg«      }|j                  ||«       |j                  |«      }|j                  |j                  d   d	fk(  sJ ‚t        |d d …d d
…f   |j                  |«      «       t        |d d …d
f   |j                  ||«      j                  «       «       t        d|fd|fg«      } | |«      }|j                  ||«      }t        ||j                  «       «       t!        |«      }	|j"                  d   d   |	j"                  d   d   usJ ‚|j%                  d¬«       |j                  ||«      j                  |j                  d   dfk(  sJ ‚t        dt'        «       fd|fd|fg«      }|j                  ||«      }|j                  |j                  d   dfk(  sJ ‚d}
t        dt'        «       fdt)        «       fg«      }t+        j,                  t.        |
¬«      5  |j                  |«       d d d «       t        d|fd|ff«      }|j                  ||«       y # 1 sw Y   Œ-xY w)Nr   rˆ   rè   ©r  r.  r‡   rï   r×   Úselectrø   éÿÿÿÿ)Ú	select__ké   Úmockrú   z>All estimators should implement fit and transform.*\bNoTrans\brh   Úno_transformr´   )rÞ   rß   Úcopyr£   rà   r   r   r&   rY   rh   r  r=   r  r>   ÚravelÚtoarrayr	   Útransformer_listrb   rk   rT   r¿   rÀ   rÁ   )rE  rW   rX   r×   rH  ÚfsÚX_transformedÚX_spÚX_sp_transformedÚfs2rË   s              rJ   Útest_feature_unionrW  @  sv  € ô 	�	‰	�‰Ó€AØˆ�‰�Qˆ‹Ñ€AÜ�‰€AÜ
 A°AÔ
6€CÜ˜1Ô€FÜ	˜˜s�| h°Ð%7Ð8Ó	9€BØ‡F�Fˆ1ˆa„LØ—L‘L “O€MØ×Ñ 1§7¡7¨1¡:¨q /Ò1Ð1Ð1ô ˜mªA¨s°¨s¨FÑ3°S×5FÑ5FÀqÓ5IÔJÜ�}¢Q¨ UÑ+¨V×-AÑ-AÀ!ÀQÓ-G×-MÑ-MÓ-OÔPô 
˜˜s�| h°Ð%7Ð8Ó	9€BÙ˜Ó€DØ×'Ñ'¨¨aÓ0ÐÜ˜mÐ-=×-EÑ-EÓ-GÔHô �‹)€CØ×Ñ˜qÑ! !Ñ$¨C×,@Ñ,@ÀÑ,CÀAÑ,FÑFÐFÐFð ‡M�M˜A€MÔØ×Ñ˜A˜qÓ!×'Ñ'¨A¯G©G°A©J¸¨?Ò:Ð:Ð:ô 
˜¤£Ð)¨E°3¨<¸(ÀFÐ9KÐLÓ	M€BØ×$Ñ$ Q¨Ó*€MØ×Ñ 1§7¡7¨1¡:¨q /Ò1Ð1Ð1ð M€CÜ	˜¤V£XÐ.°ÄÃÐ0KÐLÓ	M€BÜ	�‰”y¨Ô	,ñ Ø
�‰ˆqŒ	÷ô 
˜˜s�| h°Ð%7Ð8Ó	9€BØ‡F�Fˆ1ˆa…L÷ð ús   É
JÊJc                  ó
  — t        «       } t        «       }t        d| fd|fg«      }|j                  d   | k(  sJ ‚|j                  d   |k(  sJ ‚|j                  j                  | k(  sJ ‚|j                  j
                  |k(  sJ ‚y)z6Check the behaviour of `named_transformers` attribute.ré   ÚnoinvtransfN)rk   re   r&   Únamed_transformersré   rY  )ré   rY  rR  s      rJ   Ú%test_feature_union_named_transformersr[  p  s‘   € ä‹X€FÜ“-€KÜ	˜ &Ð)¨M¸;Ð+GÐHÓ	I€BØ× Ñ  Ñ*¨fÒ4Ð4Ð4Ø× Ñ  Ñ/°;Ò>Ð>Ð>ð × Ñ ×'Ñ'¨6Ò1Ð1Ð1Ø× Ñ ×,Ñ,°Ò;Ð;Ñ;rL   c                  ó’   — t        d¬«      } t        «       }t        | |«      }t        |j                  Ž \  }}|dk(  sJ ‚|| |fk(  sJ ‚y )Nr  r9  )rÒ   ré   )r   rk   r)   ÚziprQ  )rÒ   rL  ÚfuÚnamesÚtransformerss        rJ   Útest_make_unionra  }  sU   € Ü
˜Ô
 €CÜ‹8€DÜ	�C˜Ó	€BÜ˜r×2Ñ2Ð3Ñ€Eˆ<ØÐ%Ò%Ð%Ð%Ø˜C ˜;Ò&Ð&Ñ&rL   c                  ód  — t        d¬«      } t        «       }t        | |d¬«      }|j                  t        | |«      j                  k(  sJ ‚d|j                  k(  sJ ‚t        j                  d«      }t        j                  t        |¬«      5  t        | |ddd	œ¬
«       d d d «       y # 1 sw Y   y xY w)Nr  r9  rø   ©Ún_jobszEmake_union() got an unexpected keyword argument 'transformer_weights'r´   é
   r‡   )rÒ   rk   ©Útransformer_weights)
r   rk   r)   rQ  rd  rÆ   rÇ   r¿   rÀ   rÁ   )rÒ   rL  r^  rË   s       rJ   Útest_make_union_kwargsrh  †  sŸ   € Ü
˜Ô
 €CÜ‹8€DÜ	�C˜ aÔ	(€BØ×Ñ¤*¨S°$Ó"7×"HÑ"HÒHÐHÐHØ�—	‘	Š>Ðˆ>ô �)‰)ØOó€Cô 
�‰”y¨Ô	,ñ LÜ�3˜¸"ÈÑ2JÕK÷L÷ Lñ Lús   ÂB&Â&B/c                 ó4   ‡ ‡— t        «       }ˆ ˆfd„|_        |S )z>Helper to create a mock transformer with custom feature names.c                 óH   •— t        ‰«      D �cg c]  }‰› |› �‘Œ
 c}S c c}w rE   )Úrange)Úinput_featuresÚiÚ	base_nameÚ
n_featuress     €€rJ   ú<lambda>z)create_mock_transformer.<locals>.<lambda>˜  s+   ø€ Ü#(¨Ó#4ö9Øˆ9ˆ+�a�SÒò9€ ùò 9s   �)rk   Úget_feature_names_out)rn  ro  rL  s   `` rJ   Úcreate_mock_transformerrr  •  s   ù€ ä‹8€Dô"€DÔð €KrL   c                  ó  — t         j                  } t         j                  }t        «       }t	        d«      }t        ||d¬«      }|j                  rJ ‚t        ||d¬«      }|j                  | |«       t        g d¢|j                  «       «       y )Nré   F©Úverbose_feature_names_outT)Ú	pca__pca0Ú	pca__pca1Ú	pca__pca2Ú	pca__pca3Útransf__transf0Útransf__transf1Útransf__transf2)
rÞ   rß   rà   r   rr  r)   ru  rY   r>   rq  )rW   rX   rÒ   rL  ÚunionÚfu_unions         rJ   Ú0test_make_union_passes_verbose_feature_names_outr  ž  s{   € ô 	�	‰	€AÜ�‰€Aä
‹%€CÜ" 8Ó,€DÜ�s˜D¸EÔB€Eà×.Ò.Ð.Ð.ä˜#˜t¸tÔD€HØ‡L�L��AÔäò	
ð 	×&Ñ&Ó(õrL   c                  ój  — t         j                  } t        dd¬«      }t        d|fg«      }|j	                  | «      j                  | «      }|j                  | «      }|j                  | «      }t        ||«       t        ||«       |j                  |«      }|j                  |«      }t        ||«       y )Nrè   r  )r  r
  rÒ   )	rÞ   rß   r   r'   rY   rh   r  r=   rn   )rW   rÒ   rÊ   ÚX_transÚX_trans2ÚX_trans3ÚX_backÚX_back2s           rJ   Útest_pipeline_transformr†  »  s¡   € ô 	�	‰	€AÜ
˜1¨Ô
0€CÜ˜% ˜˜Ó'€Hð �l‰l˜1‹o×'Ñ'¨Ó*€GØ×%Ñ% aÓ(€HØ× Ñ  Ó#€HÜ˜g xÔ0Ü˜g xÔ0à×'Ñ'¨Ó0€FØ×#Ñ# GÓ,€GÜ˜f gÕ.rL   c                  óò   — t         j                  } t         j                  }t        «       }t	        d|fg«      }|j                  | |«      }|j                  | |«      j                  | «      }t        ||«       y )NrL  )	rÞ   rß   rà   rk   r'   r  rY   rh   r=   )rW   rX   ré   rÊ   r�  r‚  s         rJ   Útest_pipeline_fit_transformrˆ  Î  sf   € ä�	‰	€AÜ�‰€AÜ‹X€FÜ˜& &Ð)Ð*Ó+€Hð ×$Ñ$ Q¨Ó*€GØ�z‰z˜!˜QÓ×)Ñ)¨!Ó,€HÜ˜g xÕ0rL   z
start, end))r   r‡   )r   rè   )r‡   rè   )r‡   rø   ©Nr‡   )r‡   NrM   c                 ó:  — t        dt        «       fdt        «       fdt        «       fgdd¬«      }|| | }t        |t         «      sJ ‚|j                  |j                  | | k(  sJ ‚t        |j                  j                  «       «      t        |j                  j                  «       «      | | k(  sJ ‚|j                  d¬«      }|j                  d¬«      }|d	= |d	= ||k(  sJ ‚d
}t        j                  t        |¬«      5  || |d…    d d d «       y # 1 sw Y   y xY w)NÚtransf1Útransf2r³   Ú123T)ÚmemoryÚverboseFr·   rã   z*Pipeline slicing only supports a step of 1r´   rI  )r'   rk   r“   r  rã   ÚlistrÄ   Úitemsr]   r¿   rÀ   rÈ   )ÚstartÚendrÌ   Ú
pipe_sliceÚpipe_paramsÚpipe_slice_paramsrË   s          rJ   Útest_pipeline_slicer—  Û  s0  € ô Ø
”V“XÐ	 ¬F«HÐ 5¸¼y»{Ð7KÐLØØô€Dð
 �e˜C�€Jä�j¤(Ô+Ð+Ð+à×Ñ˜tŸz™z¨%°Ð4Ò4Ð4Ð4ô 	ˆZ×#Ñ#×)Ñ)Ó+Ó,Ü�× Ñ ×&Ñ&Ó(Ó)¨%°Ð4ò	5ðð	5ð —/‘/ u�/Ó-€KØ"×-Ñ-°5Ð-Ó9ÐØ�GÐØ˜'Ð"ØÐ+Ò+Ð+Ð+à
6€CÜ	�‰”z¨Ô	-ñ ØˆU�3�rˆ\Ò÷÷ ñ ús   Ã?	DÄDc                  ój  — t        «       } t        «       }t        d| fd|fg«      }|d   | k(  sJ ‚|d   | k(  sJ ‚|d   |k(  sJ ‚|d   |k(  sJ ‚t        j                  t
        «      5  |d    d d d «       t        j                  t        «      5  |d    d d d «       y # 1 sw Y   Œ1xY w# 1 sw Y   y xY w)Nré   r³   r   rI  rø   Úfoobar)rk   r“   r'   r¿   rÀ   Ú
IndexErrorÚKeyError)ré   r³   rÌ   s      rJ   Útest_pipeline_indexrœ  ú  sÇ   € Ü‹X€FÜ
‹+€CÜ�h Ð'¨%°¨Ð6Ó7€DØ�‰7�fÒÐÐØ�‰>˜VÒ#Ð#Ð#Ø�‰8�sŠ?Ðˆ?Ø�‰;˜#ÒÐÐô 
�‰”zÓ	"ñ ØˆQŠ÷ô 
�‰”xÓ	 ñ ØˆXŠ÷ð ÷	ð ú÷ð ús   Á'BÂB)ÂB&Â)B2c                  óö  — t        «       } t        «       }t        d| fg«      }|j                  d   | u sJ ‚d|fg|_        d|j                  vsJ ‚|j                  d   |u sJ ‚d|fg|j                  k(  sJ ‚|j	                  d| fg¬«       d| fg|j                  k(  sJ ‚|j	                  |¬«       d|fg|j                  k(  sJ ‚|j	                  dg¬«       t        j                  d«      }t        j                  t        |¬«      5  |j                  dggdg«       d d d «       d	}t        j                  t        |¬«      5  |j                  dggdg«       d d d «       y # 1 sw Y   ŒExY w# 1 sw Y   y xY w)
NrL  Úmock2©rã   ©rL  )ÚjunkrR   zJLast step of Pipeline should implement fit or be the string 'passthrough'.r´   r‡   z0This 'Pipeline' has no attribute 'fit_transform')rk   r'   rÄ   rã   rb   rÆ   rÇ   r¿   rÀ   rÁ   rY   r  r  )r‹  rŒ  rÊ   rË   s       rJ   Útest_set_pipeline_stepsr¢    s™  € Ü‹h€GÜ‹h€GÜ˜& 'Ð*Ð+Ó,€HØ×Ñ Ñ'¨7Ñ2Ð2Ð2ð  Ð(Ð)€H„NØ˜×-Ñ-Ñ-Ð-Ð-Ø×Ñ Ñ(¨GÑ3Ð3Ð3Ø�gÐÐ 8§>¡>Ò1Ð1Ð1ð ×Ñ ¨Ð0Ð1ÐÔ2Ø�WÐÐ (§.¡.Ò0Ð0Ð0ð ×Ñ˜WÐÔ%Ø�WÐÐ (§.¡.Ò0Ð0Ð0ð ×Ñ˜|˜nÐÔ-Ü
�)‰)ØTó€Cô 
�‰”y¨Ô	,ñ !Ø�‰�q�c�U˜Q˜CÔ ÷!ð =€CÜ	�‰”~¨SÔ	1ñ +Ø×Ñ  ˜u q cÔ*÷+ð +÷	!ð !ú÷+ð +ús   Ä	E#ÅE/Å#E,Å/E8c                  ó„  — t        «       } t        d¬«      }t        d| fd|fg«      }d|j                  v sJ ‚d|j                  vsJ ‚|j                  j                  | u sJ ‚|j                  j
                  |u sJ ‚t        d| fd|fg«      }|j                  j                  | usJ ‚|j                  j
                  |u sJ ‚y )Nrè   rx   rL  ry   rž  Úvalues)rk   rv   r'   rÄ   rL  ry   r¤  )ré   Úmult2rÊ   s      rJ   Útest_pipeline_named_stepsr¦  -  sÖ   € Ü‹X€FÜ�aŒL€EÜ˜& &Ð)¨F°E¨?Ð;Ó<€Hð �X×)Ñ)Ñ)Ð)Ð)Ø˜(×.Ñ.Ñ.Ð.Ð.Ø×Ñ×$Ñ$¨Ñ.Ð.Ð.Ø×Ñ×$Ñ$¨Ñ-Ð-Ð-ô ˜( FÐ+¨f°e¨_Ð=Ó>€HØ×Ñ×&Ñ&¨fÑ4Ð4Ð4Ø×Ñ×$Ñ$¨Ñ-Ð-Ñ-rL   rÕ   c                 óV  — t        j                  dgg«      }t        j                  dg«      }t        d¬«      }t        d¬«      }t        d¬«      }t        d|fd| fd|fd	|fg«      }|j	                  ||«       g d
¢}|j
                  D ��	cg c]  \  }}	|‘Œ	 }
}}	||
k(  sJ ‚y c c}	}w )Nr‡   rè   rx   rø   é   Úm2ÚbadÚm3Úm5)r©  rª  r«  r¬  )r‚   rë   rv   r'   rY   rã   )rÕ   rW   rX   r¥  Úmult3Úmult5rÊ   Úexpected_namesÚnameÚ_Úactual_namess              rJ   Ú%test_pipeline_correctly_adjusts_stepsr³  >  s§   € ä
�‰�1�#�‹€AÜ
�‰�!�‹€AÜ�aŒL€EÜ�aŒL€EÜ�aŒL€EäØ
�ˆ˜ Ð,¨t°U¨m¸dÀE¸]ÐKó€Hð ‡L�L��AÔÚ.€NØ(0¯©×7™W˜T 1’DÐ7€LÑ7Ø˜\Ò)Ð)Ñ)ùó 8s   ÂB%c                 ó  ‡‡‡— t        j                  dgg«      }t        j                  dg«      }t        d¬«      Št        d¬«      Št        d¬«      Šˆˆˆfd„} |«       }d}t        |gg|j	                  ||«      «       t        |g|j                  |«      j                  |«      «       t        ||j                  |gg«      «       |j                  | ¬«       d	}t        |gg|j	                  ||«      «       t        |g|j                  |«      j                  |«      «       t        ||j                  |gg«      «       |j                  d
¬«      |j                  ‰| ‰d ddd ddœ	k(  sJ ‚|j                  | ¬«       d}t        |gg|j	                  ||«      «       t        |g|j                  |«      j                  |«      «       t        ||j                  |gg«      «       g d¢}|D ]  } t        ||«      |«       Œ |j                  ‰¬«       d	}t        |gg|j	                  ||«      «       t        |g|j                  |«      j                  |«      «       t        ||j                  |gg«      «        |«       }|j                  | ¬«       d}t        |gg|j                  ||«      j                  |«      «       t        |gg|j	                  ||«      «       t        ||j                  |gg«      «       d}d}	t        j                  t        |	¬«      5 }
t        |d«       d d d «       t!        
j"                  j$                  t        «      sJ ‚|t'        |
j"                  j$                  «      v sJ ‚d	}t)        d‰fd| fd‰fg«      }t        |gg|j	                  ||«      «       t        |g|j                  |«      j                  |«      «       t        ||j                  |gg«      «       y # 1 sw Y   ŒÏxY w)Nr‡   rè   rx   rø   r¨  c                  ó,   •— t        d‰ fd‰fd‰fg«      S )Nr©  r«  Úlast)r'   )r¥  r­  r®  s   €€€rJ   Úmakez0test_set_pipeline_step_passthrough.<locals>.makeX  s!   ø€ Ü˜$ ˜¨¨u¨¸À°ÐGÓHÐHrL   é   ©r«  re  Tr·   F)	rã   r©  r«  r¶  rŽ  Úm2__multÚ
last__multÚtransform_inputr�  ©r©  )r�   r�   r‘   rh   rŽ   )r¶  é   z''str' object has no attribute 'predict'z*This 'Pipeline' has no attribute 'predict'r´   r‹   r©  r«  r¶  )r‚   rë   rv   r>   r  rY   r‹   rn   rb   r]   rã   r:  rh   r¿   rÀ   r  r  r  r  r  r'   )rÕ   rW   rX   r·  rÊ   ÚexpÚother_methodsrC  r  r  r  r¥  r­  r®  s              @@@rJ   Ú"test_set_pipeline_step_passthroughrÁ  P  s®  ú€ ä
�‰�1�#�‹€AÜ
�‰�!�‹€AÜ�aŒL€EÜ�aŒL€EÜ�aŒL€EöIñ ‹v€Hà
€CÜ˜˜�w × 6Ñ 6°q¸!Ó <Ô=Ü˜�u˜hŸl™l¨1›o×5Ñ5°aÓ8Ô9Ü�q˜(×4Ñ4°s°e°WÓ=Ô>à×Ñ˜;ÐÔ'Ø
€CÜ˜˜�w × 6Ñ 6°q¸!Ó <Ô=Ü˜�u˜hŸl™l¨1›o×5Ñ5°aÓ8Ô9Ü�q˜(×4Ñ4°s°e°WÓ=Ô>Ø×Ñ DÐÓ)Ø—‘ØØØØØØØØñ
.ò 
ð 
ð 
ð ×Ñ˜;ÐÔ'Ø
€CÜ˜˜�w × 6Ñ 6°q¸!Ó <Ô=Ü˜�u˜hŸl™l¨1›o×5Ñ5°aÓ8Ô9Ü�q˜(×4Ñ4°s°e°WÓ=Ô>ò€Mð  ò %ˆØ!Œ�˜&Ó! !Õ$ð%ð ×Ñ˜5ÐÔ!Ø
€CÜ˜˜�w × 6Ñ 6°q¸!Ó <Ô=Ü˜�u˜hŸl™l¨1›o×5Ñ5°aÓ8Ô9Ü�q˜(×4Ñ4°s°e°WÓ=Ô>á‹v€HØ×Ñ˜[ÐÔ)à
€CÜ˜˜�w §¡¨Q°Ó 2× <Ñ <¸QÓ ?Ô@Ü˜˜�w × 6Ñ 6°q¸!Ó <Ô=Ü�q˜(×4Ñ4°s°e°WÓ=Ô>à9€IØ<€IÜ	�‰”~¨YÔ	7ð %¸9Ü�˜)Ô$÷%ä�i—o‘o×/Ñ/´Ô@Ð@Ð@Øœ˜IŸO™O×5Ñ5Ó6Ñ6Ð6Ð6ð €CÜ˜$ ˜¨¨{Ð(;¸fÀe¸_ÐMÓN€HÜ˜˜�w × 6Ñ 6°q¸!Ó <Ô=Ü˜�u˜hŸl™l¨1›o×5Ñ5°aÓ8Ô9Ü�q˜(×4Ñ4°s°e°WÓ=Õ>÷%ð %ús   Ì#O>Ï>Pc                  ó€  — t        t        d«      «      } | j                   | j                   | j                   t        t        «       «      } t        | d«      rJ ‚| j                   | j                   t        d«      } | j                  d   dk(  sJ ‚t        | d«      rJ ‚| j                   | j                   t        t        «       t        «       «      } t        | d«      rJ ‚| j                   t        | d«      rJ ‚t        t        «       t        «       «      } t        | d«      rJ ‚| j                   t        | d«      rJ ‚y )Nr¨  r‹   rÕ   r   rÔ   rn   )	r(   rv   r‹   rh   rn   rk   Úhasattrrã   re   )rÊ   s    rJ   Útest_pipeline_ducktypingrÄ  ¡  s  € ÜœT !›WÓ%€HØ×ÒØ×ÒØ×ÒäœV›XÓ&€HÜ�x Ô+Ð+Ð+Ø×ÒØ×Òä˜]Ó+€HØ�>‰>˜!ÑÐ >Ò>Ð>Ð>Ü�x Ô+Ð+Ð+Ø×ÒØ×ÒäœV›X¤{£}Ó5€HÜ�x Ô+Ð+Ð+Ø×ÒÜ�xÐ!4Ô5Ð5Ð5äœ[›]¬F«HÓ5€HÜ�x Ô+Ð+Ð+Ø×ÒÜ�xÐ!4Ô5Ð5Ð5Ð5rL   c                  óœ  — t        «       } t        «       }t        | |«      }t        |t        «      sJ ‚|j                  d   d   dk(  sJ ‚|j                  d   d   dk(  sJ ‚t        | |t        «       «      }t        |t        «      sJ ‚|j                  d   d   dk(  sJ ‚|j                  d   d   dk(  sJ ‚|j                  d   d   dk(  sJ ‚y )Nr   ztransf-1r‡   ztransf-2rè   Ú	fitparamt)rk   r(   r  r'   rã   r“   )Út1Út2rÌ   s      rJ   Útest_make_pipelinerÉ  ½  sÓ   € Ü	‹€BÜ	‹€BÜ˜˜RÓ €DÜ�dœHÔ%Ð%Ð%Ø�:‰:�a‰=˜Ñ˜zÒ)Ð)Ð)Ø�:‰:�a‰=˜Ñ˜zÒ)Ð)Ð)ä˜˜R¤£Ó-€DÜ�dœHÔ%Ð%Ð%Ø�:‰:�a‰=˜Ñ˜zÒ)Ð)Ð)Ø�:‰:�a‰=˜Ñ˜zÒ)Ð)Ð)Ø�:‰:�a‰=˜Ñ˜{Ò*Ð*Ñ*rL   zpipeline, check_estimator_typec                 ó0   — t        | «      j                  d u S rE   ©r1   Úestimator_type©Úests    rJ   rp  rp  Ó  s   € œ ›×4Ñ4¸Ð<€ rL   c                 ó0   — t        | «      j                  d u S rE   rË  rÍ  s    rJ   rp  rp  Õ  s   € ¤8¨C£=×#?Ñ#?À4Ð#G€ rL   c                 ó.   — t        | «        || «      sJ ‚y)zªCheck that the estimator type returned by the pipeline is correct.

    Non-regression test as part of:
    https://github.com/scikit-learn/scikit-learn/issues/30197
    N)rÃ   )rÊ   Úcheck_estimator_types     rJ   Útest_pipeline_estimator_typerÒ  Ì  s   € ô& 	ˆ„NÙ Ô)Ð)Ñ)rL   c                  óz   — t        g ¬«      } t        «       }|j                  «       }| j                  «       |k(  sJ ‚y)z Check that we propagate properly the tags in a Pipeline.

    Non-regression test as part of:
    https://github.com/scikit-learn/scikit-learn/issues/30197
    rŸ  N)r'   r   Ú__sklearn_tags__)Úempty_pipelineÚbeÚexpected_tagss      rJ   Ú%test_sklearn_tags_with_empty_pipelinerØ  ã  s:   € ô  BÔ'€NÜ	‹€Bà×'Ñ'Ó)€MØ×*Ñ*Ó,°Ò=Ð=Ñ=rL   c                  ó:  — t         j                  } t         j                  }t        ddd¬«      }t	        d¬«      }t        d|fd|fgdd	i¬
«      }|j                  | |«       |j                  | «      }t        d|fd|fgdd	i¬
«      }|j                  | |«      }t        dt        «       fd|fd|fgdd	i¬
«      }|j                  | |«      }t        |d d …d d…f   d	|j                  | «      z  «       t        |d d …df   |j                  | |«      j                  «       «       t        |d d …d d…f   d	|j                  | «      z  «       t        |d d …df   |j                  | |«      j                  «       «       |j                  | j                  d   dfk(  sJ ‚y )Nrè   r!  r   ©r  r
  r.  r‡   rï   rÒ   rH  re  rf  rL  rI  é   )rÞ   rß   rà   r   r   r&   rY   rh   r  rk   r=   r>   rO  r  )rW   rX   rÒ   rH  rR  rS  ÚX_fit_transformedÚX_fit_transformed_wo_methods           rJ   Útest_feature_union_weightsrÞ  ð  s¤  € ä�	‰	€AÜ�‰€AÜ
˜1¨ÀAÔ
F€CÜ˜1Ô€Fä	Ø
�ˆ˜ &Ð)Ð*ÀÈÀô
€Bð ‡F�Fˆ1ˆa„LØ—L‘L “O€Mä	Ø
�ˆ˜ &Ð)Ð*ÀÈÀô
€Bð ×(Ñ(¨¨AÓ.Ðä	Ø
”&“(Ð	˜e S˜\¨H°fÐ+=Ð>Ø# R˜Lô
€Bð #%×"2Ñ"2°1°aÓ"8Ðô ˜mªA¨s°¨s¨FÑ3°R¸#×:KÑ:KÈAÓ:NÑ5NÔOÜ�}¢Q¨ UÑ+¨V×-AÑ-AÀ!ÀQÓ-G×-MÑ-MÓ-OÔPÜÐ/²°3°B°3°Ñ7¸¸c×>OÑ>OÐPQÓ>RÑ9RÔSÜÐ(ª¨B¨Ñ/°×1EÑ1EÀaÈÓ1K×1QÑ1QÓ1SÔTØ&×,Ñ,°·±¸±¸Q°Ò?Ð?Ñ?rL   c                  ó"  — t         } t        dt        d¬«      fdt        d¬«      fg«      }t        dt        d¬«      fdt        d¬«      fgd¬«      }t        dt        d¬«      fdt        d¬«      fgd¬«      }|j                  | «       |j	                  | «      }|j
                  d   t        | «      k(  sJ ‚|j                  | «       |j	                  | «      }|j
                  |j
                  k(  sJ ‚t        |j                  «       |j                  «       «       |j                  | «      }t        |j                  «       |j                  «       «       |j	                  | «      }t        |j                  «       |j                  «       «       y )	NÚwordsÚword©ÚanalyzerÚcharsÚcharrè   rc  r   )
ÚJUNK_FOOD_DOCSr&   r   rY   rh   r  r#  r>   rP  r  )rW   rR  Úfs_parallelÚfs_parallel2rS  ÚX_transformed_parallelÚX_transformed_parallel2s          rJ   Útest_feature_union_parallelrë    s~  € ô 	€Aä	à”o¨vÔ6Ð7Ø”o¨vÔ6Ð7ð	
ó
€Bô à”o¨vÔ6Ð7Ø”o¨vÔ6Ð7ð	
ð ô€Kô  à”o¨vÔ6Ð7Ø”o¨vÔ6Ð7ð	
ð ô€Lð ‡F�Fˆ1„IØ—L‘L “O€MØ×Ñ˜qÑ!¤S¨£VÒ+Ð+Ð+à‡O�O�AÔØ(×2Ñ2°1Ó5ÐØ×ÑÐ"8×">Ñ">Ò>Ð>Ð>Ü�}×,Ñ,Ó.Ð0F×0NÑ0NÓ0PÔQð +×8Ñ8¸Ó;ÐÜ�}×,Ñ,Ó.Ð0G×0OÑ0OÓ0QÔRð +×4Ñ4°QÓ7ÐÜ�}×,Ñ,Ó.Ð0G×0OÑ0OÓ0QÕRrL   c                  óÞ  — t        d¬«      } t        dd¬«      }t        d|fd| fg«      }|j                  t        «       |j	                  «       }|D ]  }d|v rŒd	|v rŒJ ‚ t        |«      d
k(  sJ ‚t        dt        «       fg«      j                  dgg«      }t        j                  d«      }t        j                  t        |¬«      5  |j	                  «        d d d «       y # 1 sw Y   y xY w)Nrá  râ  Úchar_wb)rø   rø   )rã  Úngram_rangerä  rà  Úchars__Úwords__é#   Útr1r‡   zDTransformer tr1 (type Transf) does not provide get_feature_names_outr´   )r   r&   rY   ræ  rq  r#  rk   rÆ   rÇ   r¿   rÀ   r  )Ú	word_vectÚ	char_vectÚftÚfeature_namesÚfeatrË   s         rJ   Ú test_feature_union_feature_namesrø  A  sç   € Ü¨Ô0€IÜ¨ÀÔG€IÜ	˜ Ð+¨g°yÐ-AÐBÓ	C€BØ‡F�FŒ>ÔØ×,Ñ,Ó.€MØò 6ˆØ˜DÒ  I°Ò$5Ð5Ð5ð6äˆ}Ó Ò#Ð#Ð#ä	˜œv›xÐ(Ð)Ó	*×	.Ñ	.°°¨uÓ	5€Bä
�)‰)ØNó€Cô 
�‰”~¨SÔ	1ñ #Ø
× Ñ Ô"÷#÷ #ñ #ús   Ã	C#Ã#C,c                  óB  — t         j                  } t         j                  }t        t	        d¬«      t        «       «      }|j                  | |«       t        j                  t        «      5  t        |d«       d d d «       t        t	        d¬«      t        d¬«      «      }t        j                  t        «      5  t        |d«       d d d «       |j                  | |«       t        |j                  t        j                  |«      «       y # 1 sw Y   Œ“xY w# 1 sw Y   ŒQxY w)Nr‡   rï   Úclasses_r   ©r.  )rÞ   rß   rà   r(   r   r    rY   r¿   rÀ   r  r:  r!   r>   rú  r‚   r$  )rW   rX   Úregr³   s       rJ   Útest_classes_propertyrý  T  sÈ   € Ü�	‰	€AÜ�‰€Aä
œ aÔ(Ô*:Ó*<Ó
=€CØ‡G�GˆAˆq„MÜ	�‰”~Ó	&ñ !Ü��ZÔ ÷!ô œ aÔ(Ô*<È!Ô*LÓ
M€CÜ	�‰”~Ó	&ñ !Ü��ZÔ ÷!à‡G�GˆAˆq„MÜ�s—|‘|¤R§Y¡Y¨q£\Õ2÷!ð !ú÷!ð !ús   Á*D	Â8DÄ	DÄDc                  óf  — t        d«      } t        d«      }t        d«      }d„ |_        d„ | _        d„ |_        t        d| fd|fg«      }t        ddgg|j	                  t        j                  d	gg«      «      «       t        d
dg|j                  «       «       d|fg|_        t        dgg|j	                  t        j                  d	gg«      «      «       t        dg|j                  «       «       |j                  d|fg¬«       t        dgg|j	                  t        j                  d	gg«      «      «       t        dg|j                  «       «       |j                  |¬«       t        dgg|j	                  t        j                  d	gg«      «      «       t        dg|j                  «       «       y )Nrè   rø   r¨  c                 ó   — dgS ©NÚx3rR   ©rl  s    rJ   rp  z.test_set_feature_union_steps.<locals>.<lambda>i  ó   € ¸$¸€ rL   c                 ó   — dgS ©NÚx2rR   r  s    rJ   rp  z.test_set_feature_union_steps.<locals>.<lambda>j  r  rL   c                 ó   — dgS )NÚx5rR   r  s    rJ   rp  z.test_set_feature_union_steps.<locals>.<lambda>k  r  rL   r©  r«  r‡   Úm2__x2Úm3__x3r¬  Úm5__x5rL  )rQ  Úmock__x3r   Úmock__x5)	rv   rq  r&   r>   rh   r‚   rƒ   rQ  rb   )r¥  r­  r®  rõ  s       rJ   Útest_set_feature_union_stepsr  d  sl  € Ü�‹G€EÜ�‹G€EÜ�‹G€Eá"?€EÔÙ"?€EÔÙ"?€EÔä	˜˜e�} t¨U mÐ4Ó	5€BÜ˜˜A˜�x §¡¬b¯j©j¸1¸#¸Ó.?Ó!@ÔAÜ˜ (Ð+¨R×-EÑ-EÓ-GÔHð ! %˜=˜/€BÔÜ˜˜�u˜bŸl™l¬2¯:©:¸°s°eÓ+<Ó=Ô>Ü˜�z 2×#;Ñ#;Ó#=Ô>ð ‡M�M V¨U OÐ#4€MÔ5Ü˜˜�u˜bŸl™l¬2¯:©:¸°s°eÓ+<Ó=Ô>Ü˜
�| R×%=Ñ%=Ó%?Ô@ð ‡M�M�u€MÔÜ˜˜�u˜bŸl™l¬2¯:©:¸°s°eÓ+<Ó=Ô>Ü˜
�| R×%=Ñ%=Ó%?Õ@rL   c                  ó¢  — t        d«      } t        d«      }d„ | _        d„ |_        t        j                  dgg«      }t	        d| fd|fg«      }t        ddgg|j                  |«      j                  |«      «       t        ddgg|j                  |«      «       t        dd	g|j                  «       «       |j                  d
¬«       t        dgg|j                  |«      j                  |«      «       t        dgg|j                  |«      «       t        d	g|j                  «       «       |j                  d
¬«       t        g g|j                  |«      j                  |«      «       t        g g|j                  |«      «       t        g |j                  «       «       |j                  |¬«       t        dgg|j                  |«      j                  |«      «       t	        dd|fg«      }t        dgg|j                  |«      j                  |«      «       t        dgg|j                  |«      «       t        d	g|j                  «       «       y )Nrè   rø   c                 ó   — dgS r  rR   r  s    rJ   rp  z2test_set_feature_union_step_drop.<locals>.<lambda>…  r  rL   c                 ó   — dgS r   rR   r  s    rJ   rp  z2test_set_feature_union_step_drop.<locals>.<lambda>†  r  rL   r‡   r©  r«  r	  r
  rØ   r½  r¹  )r©  rØ   )
rv   rq  r‚   rƒ   r&   r>   rY   rh   r  rb   )r¥  r­  rW   rõ  s       rJ   Ú test_set_feature_union_step_dropr  �  sì  € Ü�‹G€EÜ�‹G€Eá"?€EÔÙ"?€EÔä
�
‰
�Q�C�5Ó€Aä	˜˜e�} t¨U mÐ4Ó	5€BÜ˜˜A˜�x §¡¨£×!4Ñ!4°QÓ!7Ô8Ü˜˜A˜�x ×!1Ñ!1°!Ó!4Ô5Ü˜ (Ð+¨R×-EÑ-EÓ-GÔHà‡M�M�V€MÔÜ˜˜�u˜bŸf™f Q›i×1Ñ1°!Ó4Ô5Ü˜˜�u˜b×.Ñ.¨qÓ1Ô2Ü˜�z 2×#;Ñ#;Ó#=Ô>à‡M�M�V€MÔÜ˜�t˜RŸV™V A›Y×0Ñ0°Ó3Ô4Ü˜�t˜R×-Ñ-¨aÓ0Ô1Ü�r˜2×3Ñ3Ó5Ô6ð ‡M�M�U€MÔÜ˜˜�u˜bŸf™f Q›i×1Ñ1°!Ó4Ô5ô 
�~¨¨e }Ð5Ó	6€BÜ˜˜�u˜bŸf™f Q›i×1Ñ1°!Ó4Ô5Ü˜˜�u˜b×.Ñ.¨qÓ1Ô2Ü˜�z 2×#;Ñ#;Ó#=Õ>rL   c                  ó
  — t        d«      } t        d«      }d„ | _        d„ |_        t        j                  dgg«      }t	        d| fd|fg«      }t        ddgg|j                  |«      j                  |«      «       t        ddgg|j                  |«      «       t        dd	g|j                  «       «       |j                  d
¬«       t        ddgg|j                  |«      j                  |«      «       t        ddgg|j                  |«      «       t        dd	g|j                  dg«      «       |j                  d
¬«       t        ddgg|j                  |«      j                  |«      «       t        ddgg|j                  |«      «       t        ddg|j                  dg«      «       |j                  |¬«       t        ddgg|j                  |«      j                  |«      «       t        ddgg|j                  |«      «       t        dd	g|j                  dg«      «       t	        dd|fg«      }t        ddgg|j                  |«      j                  |«      «       t        ddgg|j                  |«      «       t        dd	g|j                  dg«      «       t        j                  }|j                  d   }t        ddd¬«      }t	        dd|fg«      }t        ||j                  |«      j                  |«      dd…d|…f   «       t        ||j                  |«      dd…d|…f   «       t        g d¢|j                  g d¢«      «       |j                  d
¬«       |j                  |«      j                  |«      }t        |t        j                  ||g«      «       |j                  |«      }t        |t        j                  ||g«      «       t        g d¢|j                  g d¢«      «       |j                  |¬«       t        ||j                  |«      j                  |«      dd…| d…f   «       t        ||j                  |«      dd…| d…f   «       t        g d¢|j                  g d¢«      «       t	        dd|fgd
di¬«      }t        |dz  |j                  |«      j                  |«      dd…d|…f   «       t        |dz  |j                  |«      dd…d|…f   «       t        g d¢|j                  g d¢«      «       y)z@Check the behaviour of setting a transformer to `"passthrough"`.rè   rø   c                 ó   — dgS r  rR   r  s    rJ   rp  z4test_set_feature_union_passthrough.<locals>.<lambda>«  r  rL   c                 ó   — dgS r   rR   r  s    rJ   rp  z4test_set_feature_union_passthrough.<locals>.<lambda>¬  r  rL   r‡   r©  r«  r	  r
  rÕ   r½  Ú
m2__myfeatÚmyfeatr¹  Ú
m3__myfeat)r©  rÕ   r!  r   rÚ  rÔ   rÒ   N)Úpassthrough__f0Úpassthrough__f1Úpassthrough__f2Úpassthrough__f3rv  rw  )Úf0Úf1Úf2Úf3)rÒ   )r  r  r  r  Úpca__f0Úpca__f1Úpca__f2Úpca__f3)rÕ   )Úpassthrough__pca0Úpassthrough__pca1r!  r"  r#  r$  rf  )rv   rq  r‚   rƒ   r&   r>   rY   rh   r  rb   rÞ   rß   r  r   Úhstack)r¥  r­  rW   rõ  ÚcolumnsrÒ   ÚX_fts          rJ   Ú"test_set_feature_union_passthroughr*  ¤  s‡  € ä�‹G€EÜ�‹G€Eñ #@€EÔÙ"?€EÔä
�
‰
�Q�C�5Ó€Aä	˜˜e�} t¨U mÐ4Ó	5€BÜ˜˜A˜�x §¡¨£×!4Ñ!4°QÓ!7Ô8Ü˜˜A˜�x ×!1Ñ!1°!Ó!4Ô5Ü˜ (Ð+¨R×-EÑ-EÓ-GÔHà‡M�M�]€MÔ#Ü˜˜A˜�x §¡¨£×!4Ñ!4°QÓ!7Ô8Ü˜˜A˜�x ×!1Ñ!1°!Ó!4Ô5Ü˜ hÐ/°×1IÑ1IÈ8È*Ó1UÔVà‡M�M�]€MÔ#Ü˜˜A˜�x §¡¨£×!4Ñ!4°QÓ!7Ô8Ü˜˜A˜�x ×!1Ñ!1°!Ó!4Ô5ÜØ	�|Ð$ b×&>Ñ&>À¸zÓ&Jôð
 ‡M�M�U€MÔÜ˜˜A˜�x §¡¨£×!4Ñ!4°QÓ!7Ô8Ü˜˜A˜�x ×!1Ñ!1°!Ó!4Ô5Ü˜ hÐ/°×1IÑ1IÈ8È*Ó1UÔVô 
Ð,¨t°U¨mÐ<Ó	=€BÜ˜˜A˜�x §¡¨£×!4Ñ!4°QÓ!7Ô8Ü˜˜A˜�x ×!1Ñ!1°!Ó!4Ô5Ü˜ hÐ/°×1IÑ1IÈ8È*Ó1UÔVä�	‰	€AØ�g‰g�a‰j€GÜ
˜1¨ÀAÔ
F€Cä	Ð5¸¸s°|ÐDÓ	E€BÜ�q˜"Ÿ&™& ›)×-Ñ-¨aÓ0²°H°W°H°Ñ=Ô>Ü�q˜"×*Ñ*¨1Ó-ªa°°'°¨kÑ:Ô;Üò	
ð 	× Ñ Ò!9Ó:ô
ð ‡M�M�m€MÔ$Ø�6‰6�!‹9×Ñ˜qÓ!€DÜ�tœRŸY™Y¨¨1 vÓ.Ô/Ø×Ñ˜AÓ€DÜ�tœRŸY™Y¨¨1 vÓ.Ô/Üò		
ð 	× Ñ Ò!9Ó:ôð ‡M�M˜c€MÔ"Ü�q˜"Ÿ&™& ›)×-Ñ-¨aÓ0²°W°H±I°Ñ>Ô?Ü�q˜"×*Ñ*¨1Ó-ªa°'°±¨lÑ;Ô<Üò	
ð 	× Ñ Ò!9Ó:ô
ô 
Ø	'¨%°¨Ð6Ø*¨AÐ.ô
€Bô �q˜1‘u˜bŸf™f Q›i×1Ñ1°!Ó4²Q¸¸¸°[ÑAÔBÜ�q˜1‘u˜b×.Ñ.¨qÓ1²!°X°g°X°+Ñ>Ô?Üò	
ð 	× Ñ Ò!9Ó:õ
rL   c                  ó¸   — t         j                  } t        ddd¬«      }t        d|fdg«      }|j	                  | «       t        g d¢|j                  «       «       y)	zDCheck feature_names_out for verbose_feature_names_out=True (default)rè   r!  r   rÚ  rÒ   rÔ   )rv  rw  Úpassthrough__x0Úpassthrough__x1Úpassthrough__x2Úpassthrough__x3N©rÞ   rß   r   r&   rY   r>   rq  ©rW   rÒ   rõ  s      rJ   Ú9test_feature_union_passthrough_get_feature_names_out_truer2    sS   € ä�	‰	€AÜ
˜1¨ÀAÔ
F€Cä	˜˜s�|Ð%CÐDÓ	E€BØ‡F�Fˆ1„IÜò	
ð 	× Ñ Ó"õ
rL   c                  ó¼   — t         j                  } t        ddd¬«      }t        d|fdgd¬«      }|j	                  | «       t        g d	¢|j                  «       «       y
)z;Check feature_names_out for verbose_feature_names_out=Falserè   r!  r   rÚ  rÒ   rÔ   Frt  )Úpca0Úpca1Úx0Úx1r  r  Nr0  r1  s      rJ   Ú:test_feature_union_passthrough_get_feature_names_out_falser8  )  s[   € ä�	‰	€AÜ
˜1¨ÀAÔ
F€Cä	Ø
�ˆÐ5Ð6ÐRWô
€Bð ‡F�Fˆ1„IÜò	
ð 	× Ñ Ó"õ
rL   c                  ó„  — t        j                  d«      } | j                  ddgddggddg¬«      }t        d„ d	„ ¬
«      }t	        dt        «       f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)zFCheck get_feature_names_out and non-verbose names and colliding names.Úpandasr‡   rè   rø   rG   rH   ©r(  c                 ó   — | dg   S r_   rR   ©rW   s    rJ   rp  zStest_feature_union_passthrough_get_feature_names_out_false_errors.<locals>.<lambda>E  s   € �!�S�E‘(€ rL   c                 ó.   — t        j                  dg«      S r_   )r‚   rƒ   )rI   r±  s     rJ   rp  zStest_feature_union_passthrough_get_feature_names_out_false_errors.<locals>.<lambda>E  s   € ¼b¿j¹jÈ#ÈÓ>O€ rL   )Úfeature_names_outrÇ  rÈ  Frt  zvOutput feature names: ['a'] are not unique. Please set verbose_feature_names_out=True to add prefixes to feature namesr´   N)r¿   ÚimportorskipÚ	DataFramer*   r&   r+   rY   rÆ   rÇ   rÀ   rÈ   rq  )ÚpdrW   Úselect_ar}  rË   s        rJ   ÚAtest_feature_union_passthrough_get_feature_names_out_false_errorsrD  ?  s»   € ä	×	Ñ	˜XÓ	&€BØ
�‰�q˜!�f˜q !˜fÐ%°°S¨zˆÓ:€Aä"ÙÑ.Oô€Hô Ø
”Ó Ð	! D¨(Ð#3Ð4Ø"'ô€Eð 
‡I�Iˆa„Lä
�)‰)ð	Uó€Cô
 
�‰”z¨Ô	-ñ &Ø×#Ñ#Ô%÷&÷ &ñ &ús   ÂB6Â6B?c                  ó¢  — t        j                  d«      } | j                  t        t	        d«      «      gt	        d«      D �cg c]  }d|› �‘Œ	 c}¬«      }t        ddgd¬«      }|j                  |«       t        j                  d	«      }t        j                  t        |¬
«      5  |j                  «        ddd«       yc c}w # 1 sw Y   yxY w)zLCheck get_feature_names_out with non-verbose names and >= 5 colliding names.r:  re  Úfr;  )rÇ  rÕ   )rÈ  rÕ   Frt  z”Output feature names: ['f0', 'f1', 'f2', 'f3', 'f4', ...] are not unique. Please set verbose_feature_names_out=True to add prefixes to feature namesr´   N)r¿   r@  rA  r�  rk  r&   rY   rÆ   rÇ   rÀ   rÈ   rq  )rB  rm  rW   r}  rË   s        rJ   ÚPtest_feature_union_passthrough_get_feature_names_out_false_errors_overlap_over_5rG  V  s¶   € ä	×	Ñ	˜XÓ	&€BØ
�‰”dœ5 ›9“oÐ&Ä%ÈÃ)Ö0L¸Q°1°Q°C²Ò0LˆÓM€AäØ	Ð 5Ð6Ø"'ô€Eð
 
‡I�Iˆa„Lä
�)‰)ð	ó€Cô 
�‰”z¨Ô	-ñ &Ø×#Ñ#Ô%÷&ð &ùò 1M÷&ð &ús   ÁC 
Â&CÃCc                   ó,   — e Zd Zdd„Zdd„Zdd„Zdd„Zy)ÚDfOutTransformerc                 ó   — || _         y rE   ©Úoffset)rI   rL  s     rJ   rK   zDfOutTransformer.__init__n  s	   € Øˆ�rL   Nc                 ó   — | S rE   rR   rV   s      rJ   rY   zDfOutTransformer.fitq  rZ   rL   c                 ó    — || j                   z
  S rE   rK  rV   s      rJ   rh   zDfOutTransformer.transformt  s   € Ø�4—;‘;‰ÐrL   c                 ó   — | S rE   rR   )rI   rh   s     rJ   Ú
set_outputzDfOutTransformer.set_outputw  s	   € ð ˆrL   )g      ð?rE   )rN   rO   rP   rK   rY   rh   rP  rR   rL   rJ   rI  rI  m  s   „ óóóôrL   rI  Údf_lib_namer:  ÚpolarsÚT1)r+   rI  rÕ   )Úidsc                 óì  — t        j                  | «      }|j                  g d¢g d¢dœ«      }t        d|fdt	        «       fg«      }|j                  | ¬«       |j                  |«      }t        |j                  «      g d¢k(  sJ ‚t        |j                  «      ddgk(  sJ ‚|j                  d	¬
«       t        j                  t        d¬«      5  |j                  |«       ddd«       y# 1 sw Y   yxY w)a8  Check FeatureUnion behavior when transformers output duplicate column names.

    Check that an error is raised when verbose_feature_names_out is False.
    Check that no error is raised and columns are correctly prefixed when
    verbose_feature_names_out is True.

    Non-regression test for issue #32104
    )r‡   rè   rø   rK  rF   rÇ  rÈ  ©rh   )Út1__aÚt1__bÚt2__aÚt2__brG   rH   Frt  z%Output feature names:.*are not uniquer´   N)r¿   r@  rA  r&   r+   rP  r  r�  r(  rb   rÀ   rÈ   )rQ  rS  Údf_libÚdfr^  Údf_ts         rJ   Ú)test_feature_union_duplicate_column_namesr^  }  sÙ   € ô × Ñ  Ó-€FØ	×	Ñ	¢²<Ñ@Ó	A€BÜ	˜˜b�z D¬.Ó*:Ð#;Ð<Ó	=€BØ‡M�M˜K€MÔ(ð ×Ñ˜BÓ€DÜ�—‘ÓÒ!EÒEÐEÐEô �—
‘
Ó  S˜zÒ)Ð)Ð)à‡M�M¨E€MÔ2Ü	�‰”zÐ)QÔ	Rñ Ø
×Ñ˜Ô÷÷ ñ ús   ÃC*Ã*C3c                  óp  — d} d}d}dt        d«      fdt        d«      fg}dt        d«      fdt        d«      fg}t        d	ft        d
ffD �]ª  \  }}dt        d«      f|t        d«      fg}|| f||f|||z  ffD �]x  \  }}	t        j                  t
        |	¬«      5   |di ||i¤Žj                  dggdg«       d d d «        |di |dt        d«      fgi¤Ž}
t        |
||«       t        j                  t
        |	¬«      5  |
j                  dggdg«       d d d «       t        j                  t
        |	¬«      5  |
j                  dggdg«       d d d «        |di |dt        d«      fgi¤Ž}
 |
j                  di ||i¤Ž t        j                  t
        |	¬«      5  |
j                  dggdg«       d d d «       t        j                  t
        |	¬«      5  |
j                  dggdg«       d d d «       �Œ{ �Œ­ y # 1 sw Y   �ŒBxY w# 1 sw Y   ŒòxY w# 1 sw Y   ŒÅxY w# 1 sw Y   ŒnxY w# 1 sw Y   �Œ»xY w)Nz3Estimator names must not contain __: got \['a__q'\]z+Names provided are not unique: \['a', 'a'\]z=Estimator names conflict with constructor arguments: \['%s'\]Úa__qrè   rH   rø   rG   rã   rQ  r´   r‡   rR   )
rv   r'   r&   r¿   rÀ   rÈ   rY   Úsetattrr  rb   )Úerror_message_1Úerror_message_2Úerror_message_3Ú
bad_steps1Ú
bad_steps2rÿ   ÚparamÚ
bad_steps3Ú	bad_stepsÚmessagerÎ  s              rJ   Útest_step_name_validationrk  �  sH  € ØL€OØD€OØV€OØœ4 ›7Ð# c¬4°«7 ^Ð4€JØœ˜Q›�. 3¬¨Q« .Ð1€JÜ  'Ð*¬\Ð;MÐ,NÐOó .‰
ˆˆUàœD ›G�n u¬d°1«gÐ&6Ð7ˆ
à˜Ð)Ø˜Ð)Ø˜¨5Ñ0Ð1ð#
ó 	.ÑˆI�wô —‘œz°Ô9ñ :ÙÑ)�u˜iÐ(Ñ)×-Ñ-°¨s¨e°a°SÔ9÷:ñ Ñ2˜ #¤t¨A£w Ð 0Ð1Ñ2ˆCÜ�C˜ 	Ô*Ü—‘œz°Ô9ñ $Ø—‘˜!˜˜ ˜sÔ#÷$ô —‘œz°Ô9ñ .Ø×!Ñ! A 3 %¨!¨Ô-÷.ñ Ñ2˜ #¤t¨A£w Ð 0Ð1Ñ2ˆCØˆC�N‰NÑ0˜e YÐ/Ò0Ü—‘œz°Ô9ñ $Ø—‘˜!˜˜ ˜sÔ#÷$ô —‘œz°Ô9ñ .Ø×!Ñ! A 3 %¨!¨Ô-÷.ñ .ò3	.ñ.÷:ñ :ú÷$ð $ú÷.ð .ú÷$ð $ú÷.ñ .ús<   ÂG:Ä HÄ9HÆHÇH+Ç:HÈHÈHÈH(È+H5c                  óº   — t        dt        dt        «       fg«      fg«      } | j                  dt        «       ¬«       | j                  dt	        «       fgd¬«       y )NrG   rH   gü©ñÒMbP?)Úa__b__alphaÚa__br¨  )Úa__stepsÚa__b__C)r'   r   rb   r   r!   )Ú	estimators    rJ   Útest_set_params_nested_pipelinerr  Ã  sX   € Ü˜3¤¨3´Ó0@Ð*AÐ)BÓ CÐDÐEÓF€IØ×Ñ U´³ÐÔ9Ø×Ñ CÔ);Ó)=Ð#>Ð"?ÈÐÕKrL   c                  ón  — t         j                  } t         j                  }t        «       }	 t	        j
                  |d¬«      }t        d¬«      }t        «       }t        dt        |«      fd|fg«      }t        d|fd|fg|¬«      }|j                  | |«       |j                  | |«       |j                  d   j                  }t        |j                  | «      |j                  | «      «       t        |j                  | «      |j                  | «      «       t        |j!                  | «      |j!                  | «      «       t        |j#                  | |«      |j#                  | |«      «       t        |j                  d   j$                  |j                  d   j$                  «       t'        |d«      rJ ‚|j                  | |«       t        |j                  | «      |j                  | «      «       t        |j                  | «      |j                  | «      «       t        |j!                  | «      |j!                  | «      «       t        |j#                  | |«      |j#                  | |«      «       t        |j                  d   j$                  |j                  d   j$                  «       ||j                  d   j                  k(  sJ ‚t        d¬«      }	t        «       }
t        d	|
fd|	fg|¬«      }|j                  | |«       t        |j                  | «      |j                  | «      «       t        |j                  | «      |j                  | «      «       t        |j!                  | «      |j!                  | «      «       t        |j#                  | |«      |j#                  | |«      «       t        |j                  d   j$                  |j                  d	   j$                  «       ||j                  d	   j                  k(  sJ ‚	 t)        j*                  |«       y # t)        j*                  |«       w xY w)
Nre  ©Úlocationr�  r   rû  ré   Úlogreg©rŽ  r¤   Útransf_2)rÞ   rß   rà   r   ÚjoblibÚMemoryr!   r¡   r'   r	   rY   rÄ   r¦   r>   r‹   r�   r�   rŽ   r¤   rÃ  ÚshutilÚrmtree)rW   rX   ÚcachedirrŽ  r³   ré   rÌ   Úcached_pipeÚtsÚclf_2rx  Úcached_pipe_2s               rJ   Útest_pipeline_memoryr‚  É  s~  € Ü�	‰	€AÜ�‰€AÜ‹y€Hð8 Ü—‘¨¸"Ô=ˆä ¨aÔ0ˆÜ“ˆÜ˜(¤E¨&£MÐ2°X¸s°OÐDÓEˆÜ ¨6Ð 2°X¸s°OÐDÈVÔTˆð 	�‰˜˜1ÔØ�‰��AŒà×$Ñ$ XÑ.×9Ñ9ˆä˜4Ÿ<™<¨›?¨K×,?Ñ,?ÀÓ,BÔCÜ˜4×-Ñ-¨aÓ0°+×2KÑ2KÈAÓ2NÔOÜ˜4×1Ñ1°!Ó4°k×6SÑ6SÐTUÓ6VÔWÜ˜4Ÿ:™: a¨Ó+¨[×->Ñ->¸qÀ!Ó-DÔEÜØ×Ñ˜XÑ&×-Ñ-¨{×/FÑ/FÀxÑ/P×/WÑ/Wô	
ô ˜6 8Ô,Ð,Ð,ð 	�‰˜˜1Ôä˜4Ÿ<™<¨›?¨K×,?Ñ,?ÀÓ,BÔCÜ˜4×-Ñ-¨aÓ0°+×2KÑ2KÈAÓ2NÔOÜ˜4×1Ñ1°!Ó4°k×6SÑ6SÐTUÓ6VÔWÜ˜4Ÿ:™: a¨Ó+¨[×->Ñ->¸qÀ!Ó-DÔEÜØ×Ñ˜XÑ&×-Ñ-¨{×/FÑ/FÀxÑ/P×/WÑ/Wô	
ð �[×,Ñ,¨XÑ6×AÑAÒAÐAÐAô #°Ô2ˆÜ“=ˆÜ Ø˜(Ð# h°Ð%6Ð7Àô
ˆð 	×Ñ˜!˜QÔô 	˜4Ÿ<™<¨›?¨M×,AÑ,AÀ!Ó,DÔEÜ˜4×-Ñ-¨aÓ0°-×2MÑ2MÈaÓ2PÔQÜØ×"Ñ" 1Ó% }×'FÑ'FÀqÓ'Iô	
ô 	˜4Ÿ:™: a¨Ó+¨]×-@Ñ-@ÀÀAÓ-FÔGÜØ×Ñ˜XÑ&×-Ñ-Ø×%Ñ% jÑ1×8Ñ8ô	
ð �]×.Ñ.¨zÑ:×EÑEÒEÐEÑEä�‰�hÕøŒ�‰�hÕús   ¬OP ÐP4c                  ó@  — t        «       } t        j                  | d¬«      }t        t	        «       t        «       |¬«      }|j                  |u sJ ‚t        t	        «       t        «       «      }|j                  �J ‚t        |«      dk(  sJ ‚t        j                  | «       y )Nre  rt  rw  rè   )
r   ry  rz  r(   r¡   r,   rŽ  r#  r{  r|  )r}  rŽ  rÊ   s      rJ   Útest_make_pipeline_memoryr„    s{   € Ü‹y€HÜ�]‰] H°bÔ9€FÜœ[›]¬C«E¸&ÔA€HØ�?‰?˜fÑ$Ð$Ð$Üœ[›]¬C«EÓ2€HØ�?‰?Ð"Ð"Ð"Üˆx‹=˜AÒÐÐä
‡M�M�(ÕrL   c                   ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚFeatureNameSaverNc                 ó"   — t        | |d¬«       | S )NT)Úreset)r@   rV   s      rJ   rY   zFeatureNameSaver.fit  s   € Ü˜T 1¨DÕ1ØˆrL   c                 ó   — |S rE   rR   rV   s      rJ   rh   zFeatureNameSaver.transform  ri   rL   c                 ó   — |S rE   rR   )rI   rl  s     rJ   rq  z&FeatureNameSaver.get_feature_names_out  s   € ØÐrL   rE   )rN   rO   rP   rY   rh   rq  rR   rL   rJ   r†  r†    s   „ óóôrL   r†  c                  ó  — t        dt        «       fddt        «       fg¬«      } t        «       }| j	                  |j
                  |j                  «       t        | dd j                  |j                  «      |j                  «       y)z5Check pipeline.get_feature_names_out with passthroughr_  ©ÚpassrÕ   r³   rŸ  NrI  )
r'   r†  r!   r   rY   rß   rà   r>   rq  rö  )rÌ   rÞ   s     rJ   Útest_features_names_passthroughrŽ     su   € äàÔ&Ó(Ð)Ø#ØÔ&Ó(Ð)ð
ô€Dô ‹;€DØ‡H�HˆT�Y‰Y˜Ÿ™Ô$ÜØˆSˆbˆ	×'Ñ'¨×(:Ñ(:Ó;¸T×=OÑ=OõrL   c                  ó&  — t        dt        «       fdt        «       fg¬«      } t        D �cg c]  }d|v ‘Œ }}| j	                  t        |«       t        | dd j                  «       g d¢«       t        | dd j                  d«      g d¢«       yc c}w )	z5Check pipeline.get_feature_names_out with vectorizersÚvectr³   rŸ  ÚpizzaNrI  )ÚbeerÚburgerÚcokeÚ	copyrightr‘  ÚtheÚnonsense_is_ignored)r'   r   r!   ræ  rY   r>   rq  )rÌ   rÐ   rX   s      rJ   Ú#test_feature_names_count_vectorizerr˜  0  s‹   € ä˜F¤OÓ$5Ð6¸Ô@RÓ@TÐ8UÐVÔW€DÜ-Ö.˜!ˆ�AŠÐ.€AÐ.Ø‡H�HŒ^˜QÔÜØˆSˆbˆ	×'Ñ'Ó)Ú?ôô ØˆSˆbˆ	×'Ñ'Ð(=Ó>Ú?õùò 	/s   «Bc                  ó  — t        dt        «       fg¬«      } t        «       }| j                  |j                  |j
                  «       d}t        j                  t        |¬«      5  | j                  «        ddd«       y# 1 sw Y   yxY w)zZCheck that error is raised when a transformer does not define
    `get_feature_names_out`.ÚnotransrŸ  z&does not provide get_feature_names_outr´   N)
r'   rT   r   rY   rß   rà   r¿   rÀ   r  rq  )rÌ   rÞ   rË   s      rJ   Ú8test_pipeline_feature_names_out_error_without_definitionr›  ?  si   € ô ˜I¤w£yÐ1Ð2Ô3€DÜ‹;€DØ‡H�HˆT�Y‰Y˜Ÿ™Ô$à
2€CÜ	�‰”~¨SÔ	1ñ %Ø×"Ñ"Ô$÷%÷ %ñ %ús   Á%A?Á?Bc                  óÂ   — t        t        «       «      } t        j                  t        d¬«      5  | j                  dgdggddgddg¬«       d d d «       y # 1 sw Y   y xY w)Nz8Pipeline.fit does not accept the sample_weight parameterr´   r   r‡   rù   )r(   r!   r¿   rÀ   rÈ   rY   )r³   s    rJ   Útest_pipeline_param_errorr�  K  s[   € Ü
Ô*Ó,Ó
-€CÜ	�‰ÜÐTô
ñ :ð 	�‰�!��q�c�
˜Q ˜F°1°a°&ˆÔ9÷:÷ :ñ :ús   ¯AÁAc              #   ó¬   K  — | ]L  \  \  }}}t        ||«      r8|d k(  r,t        |d«      r t        |j                  d   d   t        «      s|||f–— ŒN y­w)r  rã   rI  r‡   N)rÃ  r  rã   r“   )Ú.0rÎ  ÚpatternrC  s       rJ   ú	<genexpr>r¡  S  s^   è ø€ ò <á‰ˆˆg˜ôh ˆs�FÔà�/Ò!Ü�C˜Ô!Ü�s—y‘y ‘} QÑ'¬Ô3ðs 	ˆ'�6Ôñ<ùs   ‚AAré   r³   zv\[Pipeline\].*\(step 1 of 2\) Processing transf.* total=.*\n\[Pipeline\].*\(step 2 of 2\) Processing clf.* total=.*\n$)ÚnoopNz°\[Pipeline\].*\(step 1 of 3\) Processing transf.* total=.*\n\[Pipeline\].*\(step 2 of 3\) Processing noop.* total=.*\n\[Pipeline\].*\(step 3 of 3\) Processing clf.* total=.*\n$)r¢  rÕ   )r³   N)ré   Nry   zw\[Pipeline\].*\(step 1 of 2\) Processing transf.* total=.*\n\[Pipeline\].*\(step 2 of 2\) Processing mult.* total=.*\n$)ré   rÕ   Úmult1r¥  z\[FeatureUnion\].*\(step 1 of 2\) Processing mult1.* total=.*\n\[FeatureUnion\].*\(step 2 of 2\) Processing mult2.* total=.*\n$)r£  rØ   )r­  rØ   z@\[FeatureUnion\].*\(step 1 of 1\) Processing mult2.* total=.*\n$)rY   r  r�   zest, pattern, methodc                 óF  — t        | |«      }g d¢g d¢g}dgdgg}| j                  d¬«        |||«       |j                  «       j                  rJ d«       ‚| j                  d¬«        |||«       t	        j
                  ||j                  «       j                  «      sJ ‚y )	N©r‡   rè   rø   )rK  r¨  r¾  rÛ  rú   F)r�  zGot output for verbose=FalseT)r:  rb   Ú
readouterrÚoutrÆ   rµ   )rÎ  rC  r   ÚcapsysÚfuncrW   rX   s          rJ   Útest_verboserª  ’  s”   € ä�3˜Ó€Dâ	’IÐ€AØ
ˆˆqˆcˆ
€Aà‡N�N˜5€NÔ!ÙˆˆA„JØ× Ñ Ó"×&Ò&ÐFÐ(FÓFÐ&à‡N�N˜4€NÔ ÙˆˆA„JÜ�8‰8�G˜V×.Ñ.Ó0×4Ñ4Ô5Ð5Ñ5rL   c                  ó²  — ddgddgddgg} g d¢}t        «       }t        «       }t        ||«      }t        |d«      rJ ‚|j	                  | |«       |j
                  |j
                  cxk(  rdk(  sJ ‚ J ‚t        «       }t        «       }t        ||«      }|j	                  | |«       |j
                  |j
                  cxk(  rdk(  sJ ‚ J ‚t        |d«      rJ ‚y ©	Nr‡   rè   rø   rK  r¨  r¾  ©r   r‡   rè   Ún_features_in_)r+   r   r(   rÃ  rY   r®  )rW   rX   ÚssÚgbdtrÌ   s        rJ   Útest_n_features_in_pipeliner±  ¢  sä   € ð ˆQˆ�!�Q�˜!˜Q˜Ð €AÚ€Aä	Ó	€BÜ)Ó+€DÜ˜˜TÓ"€DÜ�tÐ-Ô.Ð.Ð.Ø‡H�HˆQ�„NØ×Ñ "×"3Ñ"3Ô8°qÒ8Ð8Ñ8Ð8Ð8ô 
Ó	€BÜ)Ó+€DÜ˜˜TÓ"€DØ‡F�Fˆ1ˆa„LØ×Ñ "×"3Ñ"3Ô8°qÒ8Ð8Ñ8Ð8Ð8Ü�tÐ-Ô.Ð.Ð.Ð.rL   c                  ój  — ddgddgddgg} g d¢}t        «       }t        |«      }t        |d«      rJ ‚|j                  | |«       |j                  |j                  cxk(  rdk(  sJ ‚ J ‚t        «       }t        |«      }|j                  | |«       |j                  |j                  cxk(  rdk(  sJ ‚ J ‚y r¬  )r+   r)   rÃ  rY   r®  )rW   rX   r¯  r^  s       rJ   Ú test_n_features_in_feature_unionr³  ¹  sº   € ð ˆQˆ�!�Q�˜!˜Q˜Ð €AÚ€Aä	Ó	€BÜ	�B‹€BÜ�rÐ+Ô,Ð,Ð,Ø‡F�Fˆ1ˆa„LØ×Ñ × 1Ñ 1Ô6°QÒ6Ð6Ñ6Ð6Ð6ô 
Ó	€BÜ	�B‹€BØ‡F�Fˆ1ˆa„LØ×Ñ × 1Ñ 1Ô6°QÒ6Ð6Ñ6Ð6Ñ6rL   c                  óò  —  G d„ dt         t        «      } t        j                  t        j                  }}t        d | «       fd | «       fg«      }t        j                  t        «      5  |j                  ||«       d d d «       t        j                  t        «      5  |j                  ||«       d d d «       |j                  ||d¬«       |j                  ||d¬«       y # 1 sw Y   ŒfxY w# 1 sw Y   Œ>xY w)Nc                   ó   — e Zd Zdd„Zdd„Zy)ú7test_feature_union_fit_params.<locals>.DummyTransformerNc                 ó    — |ddik7  rt         ‚| S )NrG   r   ©rÈ   rs   s       rJ   rY   z;test_feature_union_fit_params.<locals>.DummyTransformer.fitÐ  s   € Ø˜c 1˜XÒ%Ü Ð ØˆKrL   c                 ó   — |S rE   rR   rV   s      rJ   rh   zAtest_feature_union_fit_params.<locals>.DummyTransformer.transformÕ  ó   € ØˆHrL   rE   ©rN   rO   rP   rY   rh   rR   rL   rJ   ÚDummyTransformerr¶  Ï  s   „ ó	ô
	rL   r¼  Údummy0Údummy1r   r`   )r   r   rÞ   rß   rà   r&   r¿   rÀ   rÈ   rY   r  ©r¼  rW   rX   r¼   s       rJ   Útest_feature_union_fit_paramsrÀ  Í  sÊ   € ôÔ+¬]ô ô �9‰9”d—k‘k€q€AÜ�xÑ!1Ó!3Ð4°xÑAQÓASÐ6TÐUÓV€AÜ	�‰”zÓ	"ñ Ø	�‰ˆa�Œ÷ô 
�‰”zÓ	"ñ Ø	�‰˜˜1Ô÷ð ‡E�Eˆ!ˆQ�!€EÔØ‡O�O�A�q˜A€OÕ÷ð ú÷ð ús   Á)C!ÂC-Ã!C*Ã-C6c                  óD  —  G d„ dt         «      } t        j                  t        j                  }}t	        d | «       fd | «       fg«      }t        j                  t        «      5  |j                  ||d¬«       d d d «       |j                  ||d¬«       y # 1 sw Y   ŒxY w)Nc                   ó   — e Zd Zdd„Zy)úMtest_feature_union_fit_params_without_fit_transform.<locals>.DummyTransformerNc                 ó    — |ddik7  rt         ‚| S )NÚmetadatar‡   r¸  rs   s       rJ   rY   zQtest_feature_union_fit_params_without_fit_transform.<locals>.DummyTransformer.fité  s   € Ø˜j¨!˜_Ò,Ü Ð ØˆKrL   rE   rt   rR   rL   rJ   r¼  rÃ  è  s   „ ô	rL   r¼  Únofittransform0Únofittransform1r   )rÅ  r‡   )	r-   rÞ   rß   rà   r&   r¿   rÀ   rÈ   r  r¿  s       rJ   Ú3test_feature_union_fit_params_without_fit_transformrÈ  ä  s’   € ôÔ=ô ô �9‰9”d—k‘k€q€AÜàÑ 0Ó 2Ð3ØÑ 0Ó 2Ð3ð	
ó	€Aô 
�‰”zÓ	"ñ *Ø	�‰˜˜1 qˆÔ)÷*ð ‡O�O�A�q 1€OÕ%÷*ð *ús   Á$BÂBc                  ó®  — t         j                  j                  «       t         j                  j                  «       }} t        j
                  j                  ddg| j                  ddg¬«      j                  t        «      }t        j                  | |<   t        t        «       t        «       «      }|j                  | |«      j                  | |«      dkD  sJ ‚y )Nr‡   r   rº   gÍÌÌÌÌÌì?)Úpgš™™™™™Ù?)rÞ   rß   rN  rà   r‚   ÚrandomÚchoicer  ÚastypeÚboolÚnanr(   r   r!   rY   rŽ   )rW   rX   ÚmaskrÌ   s       rJ   Ú%test_pipeline_missing_values_leniencyrÑ  ü  s›   € ô �9‰9�>‰>ÓœTŸ[™[×-Ñ-Ó/€q€AÜ�9‰9×Ñ˜Q ˜F A§G¡G°°S¨zÐÓ:×AÑAÄ$ÓG€DÜ�f‰f€A€d�GÜœ›Ô*<Ó*>Ó?€DØ�8‰8�A�q‹>×Ñ  1Ó%¨Ò+Ð+Ñ+rL   c                  óæ   — ddgddgddgg} g d¢}dt        «       fg}d	di}d
}t        ||¬«      }t        j                  t        |¬«      5  |j                  | |«       d d d «       y # 1 sw Y   y xY w)Nr‡   rè   rø   rK  r¨  r¾  r­  ré   ÚtransformerzZAttempting to weight transformer "transformer", but it is not present in transformer_list.rf  r´   )rk   r&   r¿   rÀ   rÈ   rY   )rW   rX   rQ  ÚweightsÚexpected_msgr}  s         rJ   Ú3test_feature_union_warns_unknown_transformer_weightrÖ    s„   € ð ˆQˆ�!�Q�˜!˜Q˜Ð €AÚ€Aà!¤6£8Ð,Ð-Ðà˜aÐ €Gð	5ð ô Ð)¸wÔG€EÜ	�‰”z¨Ô	6ñ Ø�	‰	�!�QŒ÷÷ ñ ús   ÁA'Á'A0c                 óx   — t        | t        «       «      }|j                  «       j                  j                  rJ ‚y rE   )r(   r,   rÔ  Ú
input_tagsÚpairwise)rÕ   rÌ   s     rJ   Útest_pipeline_get_tags_nonerÚ    s3   € ô ˜¤c£eÓ,€DØ×$Ñ$Ó&×1Ñ1×:Ò:Ð:Ð:Ð:rL   Ú	Predictorc                 ó\  — t         j                  j                  d«      }|j                  dd«      t        j                  dgdz  dgdz  z   «      }}t        dt        «       fd | «       fg«      }|j                  ||«       |j                  |«      }t        |«      rAt        |d«       |j                  ||«      t        j                  t        ||«      «      k(  sJ ‚y t        ||j!                  «       «       |j                  ||«      t        j                  t#        ||«      «      k(  sJ ‚y )	Nr   é   rè   r¨  r‡   é   rÓ  Ú	predictor)r‚   rË  ÚRandomStateÚrandnrë   r'   r:   rY   r‹   r
   r>   rŽ   r¿   Úapproxr"   r<   r£   r#   )rÛ  ÚrngrW   rX   ÚmodelÚy_preds         rJ   Ú1test_search_cv_using_minimal_compatible_estimatorræ  $  sù   € ô �)‰)×
Ñ
 Ó
"€CØ�9‰9�R˜ÓœRŸX™X q c¨A¡g°°°b±Ñ&8Ó9€q€AäØ
Ô+Ó-Ð	.°¹i»kÐ0JÐKó€Eð 
‡I�Iˆa�„Oà�]‰]˜1Ó€FÜ�UÔÜ˜6 1Ô%Ø�{‰{˜1˜aÓ ¤F§M¡M´.ÀÀFÓ2KÓ$LÒLÐLÑLä˜ §¡£Ô)Ø�{‰{˜1˜aÓ ¤F§M¡M´(¸1¸fÓ2EÓ$FÒFÐFÑFrL   c                  ó,  —  G d„ dt         «      } t        d | «       fg«      }t        j                  t        «      5  t        |«       d d d «       |j                  t        j                  t        j                  «       t        |«       y # 1 sw Y   ŒCxY w)Nc                   ó   — e Zd Zd„ Zy)ú0test_pipeline_check_if_fitted.<locals>.Estimatorc                 ó   — d| _         | S r{   ©r˜   rV   s      rJ   rY   z4test_pipeline_check_if_fitted.<locals>.Estimator.fit;  ó   € ØˆDŒLØˆKrL   Nrt   rR   rL   rJ   Ú	Estimatorré  :  s   „ ó	rL   rí  r³   )
r   r'   r¿   rÀ   r   rA   rY   rÞ   rß   rà   )rí  rÊ   s     rJ   Útest_pipeline_check_if_fittedrî  9  sk   € ô”Mô ô
 ˜%¡£Ð-Ð.Ó/€HÜ	�‰”~Ó	&ñ "Ü˜Ô!÷"à‡L�L”—‘œDŸK™KÔ(Ü�HÕ÷"ð "ús   ¼B
Â
Bc                  ó  — ddgddgddgg} g d¢}t        dt        «       fg«      }t        j                  t        «      5  t        |«       d	d	d	«       |j                  | |«       t        |«       t        d
g«      }t        |«       t        dt        «       fd
g«      }t        j                  t        «      5  t        |«       d	d	d	«       |j                  | |«       t        |«       y	# 1 sw Y   ŒŸxY w# 1 sw Y   Œ3xY w)z1Check __sklearn_is_fitted__ is defined correctly.r‡   rè   rø   rK  r¨  r¾  r­  r³   NrŒ  )r&   r:   r¿   rÀ   r   rA   rY   )rW   rX   r}  s      rJ   Ú"test_feature_union_check_if_fittedrð  F  sè   € ð ˆQˆ�!�Q�˜!˜Q˜Ð €AÚ€Aä˜5Ô"4Ó"6Ð7Ð8Ó9€EÜ	�‰”~Ó	&ñ Ü˜Ô÷ð 
‡I�Iˆa�„OÜ�EÔô Ð1Ð2Ó3€EÜ�EÔä˜5Ô"4Ó"6Ð7Ð9PÐQÓR€EÜ	�‰”~Ó	&ñ Ü˜Ô÷ð 
‡I�Iˆa�„OÜ�EÕ÷ð ú÷ð ús   ¿C)Â7C5Ã)C2Ã5C>c                  ó>  — t         j                  t         j                  }}  G d„ dt        «      }t	         |«       t        «       «      }|j                  | |«       t         j                  }|j                  |«      }t        ||D �cg c]  }d|› �‘Œ	 c}«       yc c}w )zSCheck that pipeline passes names through.

    Non-regression test for #21349.
    c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )úYtest_pipeline_get_feature_names_out_passes_names_through.<locals>.AddPrefixStandardScalarc                 ó†   •— t         ‰| �  |¬«      }t        j                  |D �cg c]  }d|› �‘Œ	 c}t        ¬«      S c c}w )Nr  Ú
my_prefix_)Údtype)Úsuperrq  r‚   rƒ   Úobject)rI   rl  r_  r°  Ú	__class__s       €rJ   rq  zotest_pipeline_get_feature_names_out_passes_names_through.<locals>.AddPrefixStandardScalar.get_feature_names_outg  s;   ø€ Ü‘GÑ1ÀÐ1ÓPˆEÜ—:‘:¸uÖE°t ¨D¨6Ò2ÒEÌVÔTÐTùÒEs   ¥>rE   )rN   rO   rP   rq  Ú__classcell__)rù  s   @rJ   ÚAddPrefixStandardScalarró  f  s   ø„ ÷	Uñ 	UrL   rû  rõ  N)	rÞ   rß   rà   r+   r(   rY   rö  rq  r>   )rW   rX   rû  rÌ   Úinput_namesr?  r°  s          rJ   Ú8test_pipeline_get_feature_names_out_passes_names_throughrý  _  s�   € ô
 �9‰9”d—k‘k€q€AôU¤.ô Uô
 Ñ0Ó2´NÓ4DÓE€DØ‡H�HˆQ�„Nä×$Ñ$€KØ×2Ñ2°;Ó?ÐäÐ(È;Ö*WÀ4¨Z¸°vÒ+>Ò*WÕXùÒ*Ws   ÂB
c                  ó*  — t        j                  d«       t        dd¬«      \  } }t        t	        «       t        «       «      }|j                  d¬«       |j                  | |«       |dd j                  «       }|d   j                  }t        ||«       y)z.Test pipeline's set_output with feature names.r:  T©Úas_frameÚ
return_X_yrV  NrI  )r¿   r@  r   r(   r+   r!   rP  rY   rq  Úfeature_names_in_r>   )rW   rX   rÌ   r  Úlog_reg_feature_namess        rJ   Ú$test_pipeline_set_output_integrationr  t  s   € ä
×Ñ˜Ô!ä˜d¨tÔ4�D€A€qäœÓ)Ô+=Ó+?Ó@€DØ‡O�O˜h€OÔ'Ø‡H�HˆQ�„Nà˜S˜b˜	×7Ñ7Ó9ÐØ  ™H×6Ñ6ÐäÐ(Ð*?Õ@rL   Ú
df_libraryc                 óÜ  — t        j                  | «      }t        dd¬«      \  }}t        |d¬«      \  }}t	        dt        «       fdt        «       fg«      }|j                  | ¬«       |j                  |«       |j                  |«      }t        ||j                  «      sJ ‚t        |j                  |j                  «       «       | dk(  r!t        |j                  |j                  «       y	y	)
z'Test feature union with set_output API.Trÿ  r   rû  ÚscalarrÒ   rV  r:  N)r¿   r@  r   r$   r&   r+   r   rP  rY   rh   r  rA  r>   r(  rq  Úindex)r  ÚlibrW   r±  ÚX_trainÚX_testr}  r�  s           rJ   Útest_feature_union_set_outputr  „  sÆ   € ô ×
Ñ
˜jÓ
)€Cä˜d¨tÔ4�D€A€qÜ& q°qÔ9�O€GˆVÜ˜8¤^Ó%5Ð6¸ÄÃ¸ÐGÓH€EØ	×Ñ˜zÐÔ*Ø	‡I�IˆgÔà�o‰o˜fÓ%€GÜ�g˜sŸ}™}Ô-Ð-Ð-Ü�w—‘¨×(CÑ(CÓ(EÔFØ�XÒÜ˜7Ÿ=™=¨&¯,©,Õ7ð rL   c                  óž   — t        «       } t        «       }t        d| fd|fddg«      }|d   | u sJ ‚|d   |u sJ ‚|d   dk(  sJ ‚|d   dk(  sJ ‚y	)
z8Check FeatureUnion.__getitem__ returns expected results.r  rÒ   rŒ  )Údrop_merØ   r�  rÕ   r  rØ   N)r+   r   r&   )r  rÒ   r}  s      rJ   Útest_feature_union_getitemr  –  s€   € äÓ€FÜ
‹%€CÜà�vÐØ�CˆLØ#Øð		
ó€Eð �‰?˜fÑ$Ð$Ð$Ø�‰<˜3ÑÐÐØ�‰=˜MÒ)Ð)Ð)Ø�Ñ˜vÒ%Ð%Ñ%rL   Úkeyrè   c                 ó´   — t        dt        «       fdt        «       fg«      }d}t        j                  t
        |¬«      5  ||     ddd«       y# 1 sw Y   yxY w)z5Raise error when __getitem__ gets a non-string input.r  rÒ   zOnly string keys are supportedr´   N)r&   r+   r   r¿   rÀ   r›  )r  r}  rË   s      rJ   Ú test_feature_union_getitem_errorr  ¨  sP   € ô ˜8¤^Ó%5Ð6¸ÄÃ¸ÐGÓH€Eà
*€CÜ	�‰”x sÔ	+ñ ØˆcŠ
÷÷ ñ ús   ¿AÁAc                  óH  — t        j                  d«       t        dd¬«      \  } }t        «       }|j	                  | «       t        d|fg«      }t        |d«      sJ ‚t        | j                  |j                  «       t        |j                  |j                  «       t        dg«      }|j	                  | «       t        |d«      sJ ‚t        | j                  |j                  «       | j                  «       }t        dg«      }|j	                  |«       t        |d«      rJ ‚y)zxEnsure feature union has `.feature_names_in_` attribute if `X` has a
    `columns` attribute.

    Test for #24754.
    r:  Trÿ  rÖ   r  rŒ  N)r¿   r@  r   r+   rY   r&   rÃ  r>   r(  r  Úto_numpy)rW   r±  r'  r}  ÚX_arrays        rJ   Ú$test_feature_union_feature_names_in_r  ³  sÿ   € ô ×Ñ˜Ô!ä˜d¨tÔ4�D€A€qô Ó€FØ
‡J�Jˆq„MÜ˜7 FÐ+Ð,Ó-€EÜ�5Ð-Ô.Ð.Ð.Ü�q—y‘y %×"9Ñ"9Ô:Ü�v×/Ñ/°×1HÑ1HÔIô Ð1Ð2Ó3€EØ	‡I�Iˆa„LÜ�5Ð-Ô.Ð.Ð.Ü�q—y‘y %×"9Ñ"9Ô:ð �j‰j‹l€GÜÐ1Ð2Ó3€EØ	‡I�IˆgÔÜ�uÐ1Ô2Ð2Ð2Ð2rL   c                  ó  — t        j                  d«      j                  dd«      } t        j                  t
        d¬«      5  t        dt        d„ «      fdt        d	„ «      fg«      j                  | «       d
d
d
«       y
# 1 sw Y   y
xY w)z?Test that FeatureUnion raises error for 1D transformer outputs.r¾  rø   rè   z@Transformer 'b' returned an array or dataframe with 1 dimensionsr´   rG   c                 ó   — | S rE   rR   r=  s    rJ   rp  z.test_feature_union_1d_output.<locals>.<lambda>Ý  s   € °A€ rL   rH   c                 ó   — | d d …df   S r‰  rR   r=  s    rJ   rp  z.test_feature_union_1d_output.<locals>.<lambda>Þ  s   € °A²a¸°d±G€ rL   N)	r‚   ÚarangeÚreshaper¿   rÀ   rÈ   r&   r*   r  r=  s    rJ   Útest_feature_union_1d_outputr  Ó  s{   € ä
�	‰	�!‹×Ñ˜Q Ó"€Aä	�‰ÜØPô
ñ 	ô 	àÔ)©+Ó6Ð7ØÔ)Ñ*;Ó<Ð=ðó	
÷
 ‰-˜Ô
÷	÷ 	ñ 	ús   Á5A?Á?Bz(array_namespace, device_name, dtype_namec           	      óî  — t        | ||«      \  }}t        j                  j                  d«      }d\  }}|j	                  ||f¬«      j                  |«      }|j                  ||¬«      }	d\  }
}t        dt        |
d¬«      fdt        |d	¬«      fg«      }|j                  |«      }t        d
¬«      5  |j                  |	«      }t        |t        d¬«      }|j                  D ]K  \  }}dD ]A  }t        ||«      sŒt        t        ||«      «      \  }}}||u sJ ‚|t        |	«      d   k(  rŒAJ ‚ ŒM 	 ddd«       t!        |«      }t#        ||¬«       |j$                  ||
|z   fk(  sJ ‚y# 1 sw Y   Œ9xY w)zDTest that FeatureUnion with Array API-compatible transformers works.r   )rÞ  re  )Úsize)Údevice)r¨  rú   Ú	nystroem1rG  Ú	nystroem2r‡   T)Úarray_api_dispatchÚcpu)Úxpr  )Úcomponents_Únormalization_rè   N)Úatol)r;   r‚   rË  rà  ÚuniformrÍ  rƒ   r&   r   r  r   r4   rQ  rÃ  r3   r:  r2   r<   r  )Úarray_namespaceÚdevice_nameÚ
dtype_namer$  r  Úrndr%  ro  ÚX_npÚX_xpÚn_components_1Ún_components_2r}  ÚX_np_transformedÚX_xp_transformedÚX_xp_transformed_npr°  ÚtransÚattrÚtrans_xpr±  Útrans_devicer'  s                          rJ   Ú'test_feature_union_array_api_compliancer8  ã  s¬  € ô & o°{ÀJÓO�J€BˆÜ
�)‰)×
Ñ
 Ó
"€CØ"Ñ€IˆzØ�;‰;˜Y¨
Ð3ˆ;Ó4×;Ñ;¸JÓG€DØ�:‰:�d 6ˆ:Ó*€Dà%)Ñ"€N�NÜàœ(°ÈQÔOÐPØœ(°ÈQÔOÐPð	
ó€Eð ×*Ñ*¨4Ó0Ðä	¨4Ô	0ñ MØ ×.Ñ.¨tÓ4ÐÜ%Ð&6¼2ÀeÔLÐà ×1Ñ1ò 	M‰KˆD�%Ø9ò M�Ü˜5 $Õ'Ü0HÜ  tÓ,ó1Ñ-�H˜a ð $ r™>Ð)˜>Ø'Ô+CÀDÓ+IÈ!Ñ+LÓLÐLÐLñMñ	M÷	Mô ˜*Ó%€DÜÐ$Ð&9ÀÕEØ×$Ñ$ØØ˜Ñ'ð)ò ð ñ ÷Mð Mús   Â4AE+Ã<0E+Ä-E+Å+E4c                  ó¢  — t        dt        «       fdt        dd¬«      fg«      } t        | «      j                  du sJ ‚t        dt        «       fdt        d¬	«      fg«      } t        | «      j                  d
u sJ ‚t        dt        «       fddg«      } t        | «      j                  du sJ ‚t        dd«      } t        | «      j                  du sJ ‚y)zHCheck that FeatureUnion.array_api_support tag reflects its transformers.r'  Únystroemr¨  r   rG  Tr×   rè   )r  FrŒ  )ÚdroppedrØ   rØ   rÕ   N)r&   r+   r   r1   Úarray_api_supportr   r)   )r}  s    rJ   Ú(test_feature_union_array_api_support_tagr=    sì   € ô à”~Ó'Ð(Øœ¨q¸qÔAÐBð	
ó€Eô �E‹?×,Ñ,°Ñ4Ð4Ð4ô à”~Ó'Ð(Ø”L¨aÔ0Ð1ð	
ó€Eô �E‹?×,Ñ,°Ñ5Ð5Ð5ô à”~Ó'Ð(Ø#Øð	
ó€Eô �E‹?×,Ñ,°Ñ4Ð4Ð4ô �v˜}Ó-€EÜ�E‹?×,Ñ,°Ñ4Ð4Ñ4rL   T)Úenable_metadata_routingrC  rY   r  c                 óæ  ‡— d„ Šˆfd„}d„ }t        j                  ddgddgg«      }t        j                  ddg«      }t        j                  ddgg«      }t        j                  d	d
gg«      }t        j                  ddgg«      } |«       \  }}	}
}}|j                  |||||¬«        ||	ddg||¬«        ||
ddg«        ||ddg|dz   |¬«        ||| j                  d«      |dz   |¬«       y)zLTest that with transform_input, data is correctly transformed for each step.c                 ó^   — t        | ¬«      j                  ||¬«      j                  ||¬«      S )z$Get a transformer with requests set.©Úregistry©rŸ   rÅ  )r.   Úset_fit_requestÚset_transform_request)rB  rŸ   rÅ  s      rJ   Úget_transformerz6test_transform_input_pipeline.<locals>.get_transformer:  s/   € ô !¨(Ô3ß‰_¨=À8ˆ_ÓLß"Ñ"°ÈÐ"ÓRð	
rL   c            
      óÒ   •— t        «       t        «       t        «       t        «       f\  } }}}t         ‰| dd¬«       ‰|dd¬«       ‰|dd¬«       ‰|dd¬«      dg¬«      }|| |||fS )z«Get a pipeline and corresponding registries.

        The pipeline has 4 steps, with different request values set to test different
        cases. One is aliased.
        TrC  FÚother_weightsrŸ   ©r¼  )r/   r(   )Ú
registry_1Ú
registry_2Ú
registry_3Ú
registry_4rÌ   rF  s        €rJ   Úget_pipelinez3test_transform_input_pipeline.<locals>.get_pipelineB  s   ø€ ô ‹KÜ‹KÜ‹KÜ‹Kð	:
Ñ6ˆ
�J 
¨Jô Ù˜J°dÀTÔJÙ˜J°eÀeÔLÙ˜J°dÀTÔJÙ˜J°oÐPTÔUØ,Ð-ô
ˆð �Z ¨Z¸ÐCÐCrL   c                 óF   — | sJ ‚| D ]  }|D ]  }t        |f||dœ|¤Ž Œ Œ y)zACheck that the right metadata was recorded for the given methods.)rC  ÚparentN)r0   )rB  ÚmethodsrÅ  rq  rC  s        rJ   Úcheck_metadataz5test_transform_input_pipeline.<locals>.check_metadataW  sG   € áˆˆxØ!ò 	ˆIØ!ò �Ü'Øðà!Ø!ñð ó	ññ	rL   r‡   rè   rø   rK  r   r¸  é(   éd   éÈ   )rŸ   rH  rÅ  rY   rh   rC  r±  N)r‚   rë   rY   Úsplit)rC  rN  rR  rW   rX   rŸ   rH  rÅ  rÌ   rJ  rK  rL  rM  rF  s                @rJ   Útest_transform_input_pipelinerW  5  s  ø€ ò

ôDò*
ô 	�‰�1�a�&˜1˜a˜&Ð!Ó"€AÜ
�‰�!�Q�Ó€AÜ—H‘H˜q !˜f˜XÓ&€MÜ—H‘H˜r 2˜h˜ZÓ(€MÜ�x‰x˜#˜s˜˜Ó%€Há;G»>Ñ8€Dˆ*�j *¨jØ‡H�HØ	Ø	Ø#Ø#Øð ô ñ Ø�U˜KÐ(¸ÐPXõñ �:  {Ð3Ô4ÙØØ	�ÐØ# aÑ'Øõ	ñ ØØ�‰�SÓØ# aÑ'Øö	rL   c                  ó˜  —  G d„ dt         t        «      }  G d„ dt        t        «      }t        j                  ddgg«      }t        j                  ddg«      }t        j                  ddgg«      }t        j                  ddg«      }t        d | «       fd	 |«       j                  d
d
¬«      fgdg¬«      }|j                  ||||¬«       y)z;Test that the right transformed values are passed to `fit`.c                   ó   — e Zd Zd„ Zd„ Zy)ú>test_transform_input_explicit_value_check.<locals>.Transformerc                 ó   — d| _         | S r{   rë  rV   s      rJ   rY   zBtest_transform_input_explicit_value_check.<locals>.Transformer.fit‰  rì  rL   c                 ó   — |dz   S r‰  rR   rg   s     rJ   rh   zHtest_transform_input_explicit_value_check.<locals>.Transformer.transform�  ó   € Ø�q‘5ˆLrL   Nr»  rR   rL   rJ   ÚTransformerrZ  ˆ  ó   „ ò	ó	rL   r^  c                   ó   — e Zd Zdd„Zy)ú<test_transform_input_explicit_value_check.<locals>.EstimatorNc                 ó  — t        |t        j                  ddgg«      «       t        |t        j                  ddg«      «       t        |t        j                  ddgg«      «       t        |t        j                  ddg«      «       | S )Nr‡   rè   r   rø   )r>   r‚   rë   ©rI   rW   rX   ÚX_valÚy_vals        rJ   rY   z@test_transform_input_explicit_value_check.<locals>.Estimator.fit‘  sg   € Ü˜q¤"§(¡(¨Q°¨F¨8Ó"4Ô5Ü˜q¤"§(¡(¨A¨q¨6Ó"2Ô3Ü˜u¤b§h¡h°°A°¨xÓ&8Ô9Ü˜u¤b§h¡h°°1¨vÓ&6Ô7ØˆKrL   rM   rt   rR   rL   rJ   rí  ra  �  s   „ ô	rL   rí  r   r‡   rè   rÓ  rq  T©rd  re  rd  rI  N)r   r   r   r‚   rë   r'   rD  rY   )r^  rí  rW   rX   rd  re  rÌ   s          rJ   Ú)test_transform_input_explicit_value_checkrg  „  s½   € ôÔ&¬ô ô”O¤]ô ô 	�‰�1�a�&�Ó€AÜ
�‰�!�Q�Ó€AÜ�H‰H�q˜!�f�XÓ€EÜ�H‰H�a˜�VÓ€EÜà™K›MÐ*Ø™)›+×5Ñ5¸DÈÐ5ÓMÐNð	
ð !˜	ô€Dð 	‡H�HˆQ�˜ e€HÕ,rL   c                  ó  — t        j                  ddgddgg«      } t        j                  ddg«      }d}t        j                  t        |¬«      5  t        t        «       dg¬	«      j                  | |«       d
d
d
«       y
# 1 sw Y   y
xY w)z<Make sure the right error is raised if slep6 is not enabled.r‡   rè   rø   rK  r   z;The `transform_input` parameter can only be set if metadatar´   ÚblahrI  N)r‚   rë   r¿   rÀ   rÈ   r(   r¡   rY   )rW   rX   rË   s      rJ   Útest_transform_input_no_slep6rj  ¦  sv   € ä
�‰�1�a�&˜1˜a˜&Ð!Ó"€AÜ
�‰�!�Q�Ó€AØ
G€CÜ	�‰”z¨Ô	-ñ IÜ”k“m°f°XÔ>×BÑBÀ1ÀaÔH÷I÷ Iñ Iús   Á'B Â B	c                  óþ  —  G d„ dt         t        «      }  G d„ dt        t        «      }t        j                  ddgg«      }t        j                  ddg«      }t        j                  ddgg«      }t        j                  ddg«      }t        j                  dd	gg«      }t        j                  ddg«      }t        d
 |«       fd | «       j                  dd¬«      fgdg¬«      }|j                  ||||f||f¬«       y)zHTest that if metadata is a tuple of arrays, both arrays are transformed.c                   ó   — e Zd Zdd„Zy)ú-test_transform_tuple_input.<locals>.EstimatorNc                 ó€  — t        |t        «      sJ ‚t        |t        «      sJ ‚t        |d   t        j                  ddgg«      «       t        |d   t        j                  ddg«      «       t        |d   t        j                  ddgg«      «       t        |d   t        j                  ddg«      «       d| _        | S )Nr   rè   rø   r‡   é   é   T)r  Útupler>   r‚   rë   r˜   rc  s        rJ   rY   z1test_transform_tuple_input.<locals>.Estimator.fit´  sž   € Ü˜e¤UÔ+Ð+Ð+Ü˜e¤UÔ+Ð+Ð+ä˜u Q™x¬¯©°A°q°6°(Ó);Ô<Ü˜u Q™x¬¯©°1°a°&Ó)9Ô:Ü˜u Q™x¬¯©°B¸°8°*Ó)=Ô>Ü˜u Q™x¬¯©°1°a°&Ó)9Ô:ØˆDŒLØˆKrL   rM   rt   rR   rL   rJ   rí  rm  ³  s   „ ô		rL   rí  c                   ó   — e Zd Zd„ Zd„ Zy)ú/test_transform_tuple_input.<locals>.Transformerc                 ó   — d| _         | S r{   rë  rV   s      rJ   rY   z3test_transform_tuple_input.<locals>.Transformer.fitÀ  rì  rL   c                 ó   — |dz   S r‰  rR   rg   s     rJ   rh   z9test_transform_tuple_input.<locals>.Transformer.transformÄ  r]  rL   Nr»  rR   rL   rJ   r^  rs  ¿  r_  rL   r^  r‡   rè   r   re  ro  rÓ  rq  Trf  rd  rI  N)r   r   r   r‚   rë   r'   rD  rY   )	rí  r^  rW   rX   ÚX_val0Úy_val0ÚX_val1Úy_val1rÌ   s	            rJ   Útest_transform_tuple_inputrz  ¯  sí   € ô
”O¤]ô 
ôÔ&¬ô ô 	�‰�1�a�&�Ó€AÜ
�‰�!�Q�Ó€AÜ�X‰X˜˜1�v�hÓ€FÜ�X‰X�q˜!�fÓ€FÜ�X‰X˜˜B�x�jÓ!€FÜ�X‰X�q˜!�fÓ€FÜà™K›MÐ*Ø™)›+×5Ñ5¸DÈÐ5ÓMÐNð	
ð !˜	ô€Dð 	‡H�HˆQ�˜& &Ð)°&¸&Ð1A€HÕBrL   )r‹   r�   r�   r‘   rŽ   r  rh   rn   c                 óÌ   —  G d„ dt         «      }t        d |«       fg«      }t        j                  t        «      5   t        || «      dgg«       d d d «       y # 1 sw Y   y xY w)Nc                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ú:test_pipeline_warns_not_fitted.<locals>.StatelessEstimatorzñStateless estimator that doesn't check if it's fitted.

        Stateless estimators that don't require fit, should properly set the
        `requires_fit` flag and implement a `__sklearn_check_is_fitted__` returning
        `True`.
        c                 ó   — | S rE   rR   rV   s      rJ   rY   z>test_pipeline_warns_not_fitted.<locals>.StatelessEstimator.fitñ  s   € ØˆKrL   c                 ó   — |S rE   rR   rg   s     rJ   rh   zDtest_pipeline_warns_not_fitted.<locals>.StatelessEstimator.transformô  rº  rL   c                 ó>   — t        j                  t        |«      «      S rE   ©r‚   Úonesr#  rg   s     rJ   r‹   zBtest_pipeline_warns_not_fitted.<locals>.StatelessEstimator.predict÷  ó   € Ü—7‘7œ3˜q›6“?Ð"rL   c                 ó>   — t        j                  t        |«      «      S rE   r�  rg   s     rJ   r�   zHtest_pipeline_warns_not_fitted.<locals>.StatelessEstimator.predict_probaú  rƒ  rL   c                 ó>   — t        j                  t        |«      «      S rE   ©r‚   Úzerosr#  rg   s     rJ   r�   zLtest_pipeline_warns_not_fitted.<locals>.StatelessEstimator.predict_log_probaý  s   € Ü—8‘8œC ›FÓ#Ð#rL   c                 ó>   — t        j                  t        |«      «      S rE   r�  rg   s     rJ   r‘   zLtest_pipeline_warns_not_fitted.<locals>.StatelessEstimator.decision_function 	  rƒ  rL   c                  ó   — yr‰  rR   rV   s      rJ   rŽ   z@test_pipeline_warns_not_fitted.<locals>.StatelessEstimator.score	  s   € ØrL   c                 ó>   — t        j                  t        |«      «      S rE   r�  rg   s     rJ   r  zHtest_pipeline_warns_not_fitted.<locals>.StatelessEstimator.score_samples	  rƒ  rL   c                 ó   — |S rE   rR   rg   s     rJ   rn   zLtest_pipeline_warns_not_fitted.<locals>.StatelessEstimator.inverse_transform		  rº  rL   N)rN   rO   rP   rQ   rY   rh   r‹   r�   r�   r‘   rŽ   r  rn   rR   rL   rJ   ÚStatelessEstimatorr}  é  s4   „ ñ	ò	ò	ò	#ò	#ò	$ò	#ò	ò	#ó	rL   rŒ  rq  r‡   )r   r'   r¿   rÀ   r   r:  )rC  rŒ  rÌ   s      rJ   Útest_pipeline_warns_not_fittedr�  Û  s]   € ô!œ]ô !ôF �kÑ#5Ó#7Ð8Ð9Ó:€DÜ	�‰”~Ó	&ñ %ØŒ��fÓ ˜s˜eÔ$÷%÷ %ñ %ús   ¼AÁA#c                   ób   — e Zd Zd„ Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd	„Z
dd
„Zdd„Zdd„Zy)ÚSimpleEstimatorc                  ó   — yr{   rR   r|   s    rJ   r}   z%SimpleEstimator.__sklearn_is_fitted__	  r~   rL   Nc                 ó*   — |€J |«       ‚|€J |«       ‚| S rE   rR   ©rI   rW   rX   rŸ   Úprops        rJ   rY   zSimpleEstimator.fit	  s)   € ØÐ(Ð7¨-Ó7Ð(ØÐÐ% Ó%ÐØˆrL   c                 ó   — |€J ‚|€J ‚|dz   S r‰  rR   r’  s        rJ   r  zSimpleEstimator.fit_transform 	  ó#   € ØÐ(Ð(Ð(ØÐÐÐØ�1‰uˆrL   c                 óN   — |€J ‚|€J ‚t        j                  t        |«      «      S rE   r�  r’  s        rJ   r�   zSimpleEstimator.fit_predict%	  ó,   € ØÐ(Ð(Ð(ØÐÐÐÜ�w‰w”s˜1“v‹ÐrL   c                 óN   — |€J ‚|€J ‚t        j                  t        |«      «      S rE   r�  ©rI   rW   rŸ   r“  s       rJ   r‹   zSimpleEstimator.predict*	  r—  rL   c                 óN   — |€J ‚|€J ‚t        j                  t        |«      «      S rE   r�  r™  s       rJ   r�   zSimpleEstimator.predict_proba/	  r—  rL   c                 óN   — |€J ‚|€J ‚t        j                  t        |«      «      S rE   r†  r™  s       rJ   r�   z!SimpleEstimator.predict_log_proba4	  s-   € ØÐ(Ð(Ð(ØÐÐÐÜ�x‰xœ˜A›ÓÐrL   c                 óN   — |€J ‚|€J ‚t        j                  t        |«      «      S rE   r�  r™  s       rJ   r‘   z!SimpleEstimator.decision_function9	  r—  rL   c                 ó   — |€J ‚|€J ‚yr‰  rR   r’  s        rJ   rŽ   zSimpleEstimator.score>	  s   € ØÐ(Ð(Ð(ØÐÐÐØrL   c                 ó   — |€J ‚|€J ‚|dz   S r‰  rR   r™  s       rJ   rh   zSimpleEstimator.transformC	  r•  rL   c                 ó   — |€J ‚|€J ‚|dz
  S r‰  rR   r™  s       rJ   rn   z!SimpleEstimator.inverse_transformH	  r•  rL   rM   )rN   rO   rP   r}   rY   r  r�   r‹   r�   r�   r‘   rŽ   rh   rn   rR   rL   rJ   r�  r�  	  s9   „ òóó
ó
ó
ó
ó
 ó
ó
ó
ô
rL   r�  rV  Úpartial_fitc                 ó>  — d„ }t        j                  dgg«      t        j                  dg«      }}dgdd}}}t        «       } ||| dd¬«      } ||ddd¬«      }t        «       j	                  dd¬«      j                  dd¬«      j                  dd¬«      }t        d	|fd
|fg«      }	d| vr|	j                  ||||¬«      }		  t        |	| «      |||||¬«       t        |dd||¬«       t        |dd||¬«       y# t        $ r  t        |	| «      ||||¬«       Y ŒBw xY w)z5Test that metadata is routed correctly for pipelines.c                 ój   — |t         v r
t         |   }n|g}|D ]  } t        | d|› d�«      di |¤Ž Œ | S )z Set requests for a given method.

        If the given method is a composite method, set the same requests for
        all the methods that compose it.
        Úset_Ú_requestrR   )r6   r:  )rÎ  rC  ÚkwargrQ  s       rJ   Úset_requestz7test_metadata_routing_for_pipeline.<locals>.set_requestT	  sO   € ð Ô&Ñ&Ü'¨Ñ/‰Gà�hˆGàò 	;ˆFØ1ŒG�C˜4 ˜x xÐ0Ó1Ñ:°EÓ:ð	;àˆ
rL   r‡   rG   rH   T©rŸ   r“  rY   rC  Útrsrq  )rŸ   r“  rÅ  )ÚobjrC  rP  rŸ   rÅ  rh   N)r‚   rë   r�  r.   rD  rE  Úset_inverse_transform_requestr'   rY   r:  rÁ   r0   )
rC  r¦  rW   rX   rŸ   r“  rÅ  rÎ  r¨  rÊ   s
             rJ   Ú"test_metadata_routing_for_pipeliner«  O	  sP  € ò
ô �8‰8�a�S�E‹?œBŸH™H a S›M€q€AØ%& C¨¨c˜�4€Mô Ó
€CÙ
�c˜6°¸DÔ
A€CÙ
�c˜5°¸4Ô
@€CäÓß	‰ t°dˆÓ	;ß	Ñ	¨T¸DÐ	Ó	Aß	&Ñ	&°TÀDÐ	&Ó	Ið	 ô ˜% ˜¨°SÐ'9Ð:Ó;€Hà�FÑØ—<‘<  1°MÈ�<ÓMˆð
Ø!Œ�˜&Ó!Øˆq °DÀ8õ	
ô ØØØØ#Øõô ØØØØ#Øöøô ò 
à!Œ�˜&Ó!Ø˜]°À÷	
ð
ús   ÃC: Ã:DÄDc                 óR  — dggdg}}dgd}}t        «       }t        d|fg«      }d| › �}t        j                  t        t        j                  |«      ¬«      5  	  t        || «      ||||¬«       ddd«       y# t        $ r  t        || «      |||¬«       Y Œ)w xY w# 1 sw Y   yxY w)zBTest that metadata is not routed for pipelines when not requested.r‡   rG   rq  zn[sample_weight, prop] are passed but are not explicitly set as requested or not requested for SimpleEstimator.r´   r§  N)	r�  r'   r¿   rÀ   rÈ   rÆ   rÇ   r:  rÁ   )rC  rW   rX   rŸ   r“  rÎ  rÊ   Úerror_messages           rJ   Ú(test_metadata_routing_error_for_pipeliner®  ”	  sË   € ð ˆCˆ5�1�#€q€AØ˜#˜s�4€MÜ
Ó
€Cä˜+ sÐ+Ð,Ó-€Hð	1Ø17°ð	:ð ô 
�‰”z¬¯©°=Ó)AÔ	Bñ Qð	Qà%ŒG�H˜fÓ% a¨¸-ÈdÕS÷Qð Qøô ò 	Qð &ŒG�H˜fÓ% a°}È4×Pð	Qú÷	Qð Qús*   ÁBÁA9Á9BÂBÂBÂBÂB&)r‘   rh   rn   c                 óÀ   — t        dt        «       fg«      }t        j                  t        d¬«      5   t        || «      dggdgd¬«       ddd«       y# 1 sw Y   yxY w)z�Test that the right error message is raised when metadata is passed while
    not supported when `enable_metadata_routing=False`.rq  z1is only supported if enable_metadata_routing=Truer´   r‡   rG   r§  N)r'   r�  r¿   rÀ   rÈ   r:  )rC  rÌ   s     rJ   Ú*test_routing_passed_metadata_not_supportedr°  «	  sa   € ô �k¤?Ó#4Ð5Ð6Ó7€Dä	�‰ÜÐMô
ñ Bð 	Œ��fÓ ˜s˜e°A°3¸SÕA÷B÷ Bñ Bús   ²AÁAc                  ó–   — t        dt        «       fdt        «       fg«      } | j                  dggdg«       | j	                  dgg«       y)zFTest that pipeline works with estimators that have a `__len__` method.r¨  rq  r‡   N)r'   r   r   rY   r‹   r?  s    rJ   Ú%test_pipeline_with_estimator_with_lenr²  º	  sN   € ô Ø
Ô%Ó'Ð	(¨;Ô8NÓ8PÐ*QÐRó€Dð 	‡H�HˆqˆcˆU�Q�CÔØ‡L�L�1�#�ÕrL   Ú	last_stepc                 ó    — t        dt        «       fd| fg«      }|j                  dggdg«      j                  dgdgdgg«      dgdgdggk(  sJ ‚y)z�Test that the pipeline works when there is not last step.

    It should just ignore and pass through the data on transform.
    r¨  rq  r‡   rè   rø   N)r'   r*   rY   rh   )r³  rÌ   s     rJ   Útest_pipeline_with_no_last_steprµ  Ä	  sc   € ô �eÔ0Ó2Ð3°kÀ9Ð5MÐNÓO€DØ�8‰8�a�S�E˜A˜3Ó×)Ñ)¨A¨3°°°a°S¨/Ó:À¸sÀQÀCÈ!È¸oÒMÐMÑMrL   c                  ó¢  — t        j                  ddgddgddgg«      } g d¢}g d¢d}}t        d	t        «       fg«      }d
t        j                  › d�}t        j                  t        t        j                  |«      ¬«      5  |j                  | |||¬«       ddd«       t        d	t        «       j                  dd¬«      fg«      }d
t        j                  › d�}t        j                  t        t        j                  |«      ¬«      5  |j                  | |||¬«      j                  | ||¬«       ddd«       y# 1 sw Y   Œ£xY w# 1 sw Y   yxY w)zCTest that the right error is raised when metadata is not requested.r   r‡   rè   rK  r¾  r¥  ©r‡   r‡   r‡   rG   Úsub_transformerzb[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for z.fitr´   rC  NTz
.transform)r‚   rë   r&   r.   rN   r¿   rÀ   r   rÆ   rÇ   rY   rD  rh   )rW   rX   rŸ   rÅ  Úfeature_unionr­  s         rJ   Ú)test_feature_union_metadata_routing_errorrº  Ï	  sm  € ô 	�‰�1�a�&˜1˜a˜& 1 a &Ð)Ó*€AÚ€AÚ'¨�8€Mô !Ð#4Ô6JÓ6LÐ"MÐ!NÓO€Mð	!Ü!5×!>Ñ!>Ð ?¸tð	Eð ô
 
�‰Ô/´r·y±yÀÓ7OÔ	Pñ PØ×Ñ˜!˜Q¨mÀhÐÔO÷Pô !ð "Ü$Ó&×6Ñ6Ø"&°ð 7ó ðð	
ó	€Mð	 Ü 4× =Ñ =Ð>¸jð	Jð ô
 
�‰Ô/´r·y±yÀÓ7OÔ	Pñ GØ×ÑØˆq ¸ð 	ó 	
ç
‰)�A ]¸Xˆ)Ô
F÷Gð G÷)Pð Pú÷(Gð Gús   ÂD9Ä(EÄ9EÅEc                  óP   — t        dt        «       fg«      } | j                  «        y)zaTest that get_metadata_routing() works regardless of the Child's
    consumption of any metadata.r¸  N)r&   r.   Úget_metadata_routing)r¹  s    rJ   Ú3test_feature_union_get_metadata_routing_without_fitr½  ø	  s'   € ô !Ð#4Ô6JÓ6LÐ"MÐ!NÓO€MØ×&Ñ&Õ(rL   rÓ  c           	      ód  — t        j                  ddgddgddgg«      }g d¢}g d¢d}}t        d	 | t        «       ¬
«      j	                  dd¬«      j                  dd¬«      fd | t        «       ¬
«      j	                  dd¬«      j                  dd¬«      fg«      }||dœ} |j                  ||fi |¤Ž  |j                  ||fi |¤Ž   |j                  ||fi |¤Žj                  |fi |¤Ž |j                  D ]4  } | d   j                  }t        |«      sJ ‚|D ]  }t        d|dddœ|¤Ž Œ Œ6 y)z8Test that metadata is routed correctly for FeatureUnion.r   r‡   rè   rK  r¾  r¥  r·  rG   Ú
sub_trans1rA  TrC  Ú
sub_trans2rY   )r©  rC  rP  NrR   )r‚   rë   r&   r/   rD  rE  rY   r  rh   rQ  rB  r#  r0   )	rÓ  rW   rX   rŸ   rÅ  r¹  ÚkwargsrB  Ú	sub_transs	            rJ   Ú#test_feature_union_metadata_routingrÃ   
  si  € ô 	�‰�1�a�&˜1˜a˜& 1 a &Ð)Ó*€AÚ€AÚ'¨�8€Mä ð Ù¤Y£[Ô1ß ‘¨t¸d�ÓCß&Ñ&°TÀDÐ&ÓIð	ð Ù¤Y£[Ô1ß ‘¨t¸d�ÓCß&Ñ&°TÀDÐ&ÓIð	ð	
ó€Mð"  -¸(ÑC€FØ€M×Ñ�a˜Ñ%˜fÒ%Ø€M×Ñ  1Ñ/¨Ò/Ø/Ð€M×Ñ�a˜Ñ%˜fÑ%×/Ñ/°Ñ<°VÒ<à$×5Ñ5ò 
ˆà˜q‘>×*Ñ*ˆÜ�8Œ}Ðˆ}Ø!ò 	ˆIÜ#ð ØØØñð ó	ñ	ñ	
rL   c                  óˆ  — t        d¬«      \  } }d}t        «       }t        dt        «       fddt	        |¬«      fg«      j                  |«      j                  | |«       |j                  d«      d	k(  sJ ‚|j                  d
«      d	k(  sJ ‚|j                  d«      dd	|z   z   k(  sJ ‚|j                  d«      dd	|z   z   k(  sJ ‚y)zpCheck that callbacks are propagated correctly for a pipeline.

    passthrough step is counted as one task.
    T©r  rø   ÚscrÔ   rÎ  ©Úmax_iterÚsetupr‡   ÚteardownÚon_fit_task_beginÚon_fit_task_endN)r   r   r'   r+   r   Úset_callbacksrY   Úcount_hooks)rW   rX   rÈ  Úcallbacks       rJ   Útest_pipeline_with_callbacksrÐ  1
  sØ   € ô  Ô%�D€A€qØ€HÜ.Ó0€Häà”>Ó#Ð$Ø*ØÔ$¨hÔ7Ð8ð	
ó÷ �m�HÓŸc™c ! Qœià×Ñ Ó(¨AÒ-Ð-Ð-Ø×Ñ 
Ó+¨qÒ0Ð0Ð0ð ×ÑÐ 3Ó4¸	ÀQÈÁ\Ñ8RÒRÐRÐRØ×ÑÐ 1Ó2°iÀ1ÀxÁ<Ñ6PÒPÐPÑPrL   c                  ód  — t        d¬«      \  } }t        «       }t        «       j                  |«      }d}t        «       }t	        |¬«      j                  |«      }t        d|fd|fg«      j                  | |«       |j                  d«      dk(  sJ ‚|j                  d	«      dk(  sJ ‚|j                  d
«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d«      dk(  sJ ‚|j                  d	«      dk(  sJ ‚|j                  d
«      d|z   k(  sJ ‚|j                  d«      d|z   k(  sJ ‚y)z?Check that callbacks registered on steps are correctly invoked.TrÅ  rø   rÇ  rÆ  rÎ  rÉ  r‡   rÊ  rË  rÌ  N)r   r   r+   rÍ  r   r'   rY   rÎ  )rW   rX   Úsc_callbackrÆ  rÈ  Úest_callbackrÎ  s          rJ   Ú%test_pipeline_with_callbacks_on_stepsrÔ  K
  sE  € ô  Ô%�D€A€qä#Ó%€KÜ	Ó	×	'Ñ	'¨Ó	4€Bà€HÜ$Ó&€LÜ
 HÔ
-×
;Ñ
;¸LÓ
I€Cäˆt�Rˆj˜5 #˜,Ð'Ó(×,Ñ,¨Q°Ô2à×"Ñ" 7Ó+¨qÒ0Ð0Ð0Ø×"Ñ" :Ó.°!Ò3Ð3Ð3Ø×"Ñ"Ð#6Ó7¸1Ò<Ð<Ð<Ø×"Ñ"Ð#4Ó5¸Ò:Ð:Ð:à×#Ñ# GÓ,°Ò1Ð1Ð1Ø×#Ñ# JÓ/°1Ò4Ð4Ð4Ø×#Ñ#Ð$7Ó8¸AÀ¹LÒHÐHÐHØ×#Ñ#Ð$5Ó6¸!¸h¹,ÒFÐFÑFrL   c            	      óž  — t        d¬«      \  } }t        «       5 }d}t        dt        «       fddt	        |¬«      fgt        j                  |¬«      ¬	«      }t        «       }|j                  |«       |j                  | |«       |j                  d
«      }|j                  d«      }t        |j                  d   d«      rJ ‚t        «       }|j                  |«      j                  | |«       |j                  d
«      |dz
  k(  sJ ‚|j                  d«      |dz
  k(  sJ ‚t        |j                  d   d«      rJ ‚	 ddd«       y# 1 sw Y   yxY w)zGCheck that callbacks don't break the caching mechanism of the pipeline.TrÅ  rø   rÆ  rÔ   rÎ  rÇ  )ru  rw  rË  rÌ  Ú_skl_callbacksr‡   N)r   r   r'   r+   r   ry  rz  r   rÍ  rY   rÎ  rÃ  rÄ   )rW   rX   r}  rÈ  rÌ   rÏ  Ún_task_beginÚ
n_task_ends           rJ   Ú7test_pipeline_memory_callbacks_second_fit_same_pipelinerÙ  d
  sU  € ô  Ô%�D€A€qÜ	Ó	ð E ØˆÜà”~Ó'Ð(Ø.ØÔ(°(Ô;Ð<ðô
 —=‘=¨(Ô3ô
ˆô 3Ó4ˆØ×Ñ˜8Ô$Ø�‰��AŒØ×+Ñ+Ð,?Ó@ˆØ×)Ñ)Ð*;Ó<ˆ
ä˜4×+Ñ+¨DÑ1Ð3CÔDÐDÐDô 3Ó4ˆØ×Ñ˜8Ó$×(Ñ(¨¨AÔ.Ø×#Ñ#Ð$7Ó8¸LÈ1Ñ<LÒLÐLÐLØ×#Ñ#Ð$5Ó6¸*Àq¹.ÒHÐHÐHÜ˜4×+Ñ+¨DÑ1Ð3CÔDÐDÐDÐD÷1E÷ Eñ Eús   šDEÅE)rø   )ÚrQ   Ú	itertoolsrÆ   r{  r¥   Útempfiler   r   ry  Únumpyr‚   r¿   Úsklearnr   Úsklearn.baser   r   r   r	   r
   r   Úsklearn.callback.tests._utilsr   r   r   r   Úsklearn.clusterr   Úsklearn.datasetsr   Úsklearn.decompositionr   r   Úsklearn.dummyr   Úsklearn.ensembler   r   r   Úsklearn.exceptionsr   r   Úsklearn.feature_extraction.textr   Úsklearn.feature_selectionr   r   Úsklearn.imputer   Úsklearn.kernel_approximationr   Úsklearn.linear_modelr   r    r!   Úsklearn.metricsr"   r#   Úsklearn.model_selectionr$   Úsklearn.neighborsr%   Úsklearn.pipeliner&   r'   r(   r)   Úsklearn.preprocessingr*   r+   Úsklearn.svmr,   Ú%sklearn.tests.metadata_routing_commonr-   r.   r/   r0   Úsklearn.utilsr1   Úsklearn.utils._array_apir2   r3   r4   r5   Ú sklearn.utils._metadata_requestsr6   r7   Úsklearn.utils._testingr8   r9   r:   r;   r<   r=   r>   Úsklearn.utils.fixesr?   Úsklearn.utils.validationr@   rA   rÞ   rß   ÚflagsÚ	writeablerà   ræ  rC   rT   re   rk   rp   rv   r“   r¡   r¨   rÑ   ÚmarkÚparametrizerÜ   rá   ræ   rí   rò   rö   rû   rý   r  r  r  r  r+  r7  r;  r@  rD  rW  r[  ra  rh  rr  r  r†  rˆ  r—  rœ  r¢  r¦  r³  rÁ  rÄ  rÉ  rÒ  rØ  rÞ  Úthread_unsaferë  rø  rý  r  r  r*  r2  r8  rD  rG  rI  r^  rk  rr  r‚  r„  r†  rŽ  r˜  r›  r�  ÚproductÚparameter_grid_test_verboserª  r±  r³  rÀ  rÈ  rÑ  rÖ  rÚ  ræ  rî  rð  rý  r  r  r  Úslicer  r  r  r8  r=  rW  rg  rj  rz  r�  r�  ÚsortedÚsetr«  r®  r°  r²  rµ  rº  r½  rÃ  rÐ  rÔ  rÙ  rR   rL   rJ   ú<module>r     sY
  ðñó Û 	Û Û ß 0ã Û Û å "÷÷ ÷ó õ #Ý &ß 3Ý (÷ñ ÷
 HÝ ;ß <Ý (Ý 1ß LÑ Lß 4Ý 4Ý 0ß NÓ Nß EÝ ÷ó õ #÷ó ÷ H÷÷ ñ õ /ß Jñ
 ƒ{€Ø!€‡	�	‡�Ô Ø#€‡�× Ñ Ô ð€ôˆMô ô	ˆeô 	ôÐ" Gô ô
ˆ[ô ô�fô ôÐ˜]ô ô2�ô ô.�&ô ô˜=ô ò,Qðh ‡�×ÑØ!á	�E˜3�<�.Ó	! 5Ð)Ù	�E˜3�< Ð1Ó	2°EÐ:Ù	Ð1°E¸3°<Ð@Ó	AÀ5ÐIÙ	Ð(¨5°#¨,Ð7Ó	8¸%Ð@Ù	�G˜^Ð,¨u±c³e¨nÐ=Ó	>Ð@PÐQÙ	˜˜s�| e©\«^Ð%<Ð=Ó	>ÀÐFÙ	˜™s›u�~¨¨|Ð'<Ð=Ó	>ÀÐOÙ	Ð'¨%°Ð)>Ð?Ó	@À.ÐQÙ	˜˜s�|Ð%CÐDÓ	EÀuÐMð
óñ#óð#òòò	òò,ò >ò
6ò3ò6òPò 7ò"ò<<ò,7ò	Ið ‡�×ÑØÒDóñ1óð1ð ‡�×Ñ˜¨.Ó9ñ,ó :ð,ò^
<ò'òLóòò:/ò&
1ð ‡�×ÑØÒVóñóðò8ò$+òB.ð" ‡�×Ñ˜¨¨}Ð(=Ó>ñ*ó ?ð*ð" ‡�×Ñ˜¨¨}Ð(=Ó>ñM?ó ?ðM?ò`6ò8+ð ‡�×ÑØ$á	‘~Ó'Ñ);Ó)=Ó	>ÀÐNÙ	‘~Ó'Ñ)9Ó);Ó	<¸lÐKá™.Ó*Ó+Ù<ð	
ñ 
�"‹ÑGÐHðóñ*óð*ò
>ò@ðF ‡�×Òñ*Só ð*SòZ#ò&3ò Aò: ?òFnòbò(ò,&ò.&ô.�}ô ð  ‡�×Ñ˜¨°8Ð(<Ó=Ø‡�×ÑØÙÓÑ'Ó)¨=Ð9Ú=ð ó ñ
óó >ðò4#.òLLò< ò~	ô	�}ô 	òò ò	%ò:ñ<à"3 )×"3Ò"3ñ ˜8¡V£XÐ.°¹	»Ð0DÐEÓFðNðñ ˜8¡V£XÐ.°ÀÉ	ËÐ@TÐUÓVðNðñ à!¡6£8Ð,Ø/Ø¡	£Ð,ðóðNðñ ˜8¡V£XÐ.°Ð>Ó?ðNðñ Ð*¨V±T³VÐ,<Ð=Ó>ðOðñ Ð3°f¹d»fÐ5EÐFÓGðOðñ ˜w©«Ð/°'¹4»6Ð1BÐCÓDðTðñ Ð/°'¹4»6Ð1BÐDUÐVÓWØSððY0	
òb 	0óe3#ô<Ð ð~ ‡�×ÑÐ/Ð1LÓMñ6ó Nð6ò/ò.7ò(ò.&ò0,òð$ ‡�×Ñ˜¨¨}Ð(=Ó>ñ;ó ?ð;ð ‡�×Ñ˜Ð'7Ð9JÐ&KÓLñGó MðGò(
òò2Yò*Að  ‡�×Ñ˜¨°(Ð';Ó<ñ8ó =ð8ò"&ð$ ‡�×Ñ˜ ¡E¨!¨Q£KÐ 0Ó1ñó 2ðò3ò@ð  ‡�×ÑØ.Ù-Ó/óñ$ó	ð$òN 5ñN ¨Ô-Ø‡�×Ñ˜ E¨?Ð#;Ó<ñJó =ó .ðJñZ ¨Ô-ñ-ó .ð-òBIñ ¨Ô-ñ$Có .ð$CðV ‡�×ÑØò	óñ&%óð&%ôZ6�mô 6ðt ‡�×Ñ˜¡6©#¨g«,¸'À=Ð9QÑ*QÓ#RÓSÙ¨Ô-ñ=ó .ó Tð=ðF ‡�×Ñ˜¡6©#¨g«,¸'À=Ð9QÑ*QÓ#RÓSÙ¨Ô-ñQó .ó TðQð* ‡�×ÑØÒEóñ	Bóð	Bñ ¨Ô-ñó .ðð ‡�×Ñ˜ t¨]Ð&;Ó<Ù¨Ô-ñNó .ó =ðNñ ¨Ô-ñ%Gó .ð%GñP ¨Ô-ñ)ó .ð)ñ ¨Ô-Ø‡�×ÑØÐ(Ð*LÐMóñ&óó .ð&ðZ ñQó ðQð2 ñGó ðGð0 ñEó ñErL   