`L i= dZddlZddlZddlZddlZddlmZddlZddlZ ddl Z ddl m Z ddl mZmZmZmZmZmZddlmZddlmZddlmZmZdd lmZdd lmZmZm Z dd l!m"Z"m#Z#dd l$m%Z%dd l&m'Z'm(Z(ddl)m*Z*ddl+m,Z,m-Z-m.Z.ddl/m0Z0m1Z1ddl2m3Z3ddl4m5Z5ddl6m7Z7m8Z8m9Z9m:Z:ddl;mm?Z?ddl@mAZAmBZBmCZCmDZDddlEmFZFddlGmHZHmIZIddlJmKZKmLZLmMZMmNZNmOZOmPZPddlQmRZRddlSmTZTmUZUeZVdeVjj_YdeVjj_YdZ[GddeZ\Gd d!e\Z]Gd"d#ee]Z^Gd$d%e^Z_Gd&d'e_Z`Gd(d)eeZaGd*d+eZbGd,d-e_ZcGd.d/eZdd0Zed1Zfd2Zgd3Zhd4Zid5Zjd6Zkd7Zld8Zmd9Znd:Zod;Zpd<Zqd=Zrd>Zse jjd?gd@dAZve jjdBeRdCZwdDZxdEZydFZzddGZ{dHZ|dIZ}dJZ~e jjdKgdLdMZdNZdOZdPZe jjdQddQgdRZe jjdQddQgdSZdTZdUZe jjdVe9e=e.efe9e=e-efe9e=dWfe8gdXfgdYZdZZd[Zd\Zd]Zd^Zd_Zd`ZdaZdbZdcZddZdeZdfZdgZdhZdiZGdjdkeZdlZdmZdnZdoZdpej:e8dqe_fdrebfgdsfe8dqe_fdtdrebfgdufe8dqe_fdvdrebfgdufe8dqe_fdwgdsfe8dxdyeafgdzfe8d{dyeafgdzfe7d|eafd}eafgd~fe7dd}eafdgdfggdDZe jjdedZdZdZdZdZdZdZe jjdQddQgdZe jjdeLeKgdZdZdZdZdZdZdZe jjddeddgdZdZdZe de jjdddgdZe ddZdZe ddZe jjdgddZGddeZe jjdeeeIddhz e ddZe jjdeeeIddhz e ddZe jjdgddZe ddZe jjdddQge ddZe ddZe ddZe de jjdeBeAgdZy)z Test the pipeline module. N)mkdtemp)config_context) BaseEstimatorClassifierMixinTransformerMixinclone is_classifier is_regressor)KMeans) load_iris)PCA TruncatedSVD)DummyRegressor)HistGradientBoostingClassifierRandomForestClassifierRandomTreesEmbedding)NotFittedErrorUnsetMetadataPassedError)CountVectorizer) SelectKBest f_classif) SimpleImputer)LassoLinearRegressionLogisticRegression)accuracy_scorer2_score)train_test_split)LocalOutlierFactor) FeatureUnionPipeline make_pipeline make_union)FunctionTransformerStandardScaler)SVC)"ConsumingNoFitTransformTransformerConsumingTransformer _Registrycheck_recorded_metadata)get_tags)COMPOSITE_METHODSMETHODS)MinimalClassifierMinimalRegressorMinimalTransformerassert_allcloseassert_array_almost_equalassert_array_equal)CSR_CONTAINERS)_check_feature_namescheck_is_fittedF)zthe pizza pizza beer copyrightzthe pizza burger beer copyrightz!the the pizza beer beer copyrightzthe burger beer beer copyrightzthe coke burger coke copyrightzthe coke burger burgerceZdZdZddZy)NoFitz*Small class to test parameter dispatching.Nc ||_||_yNab)selfr<r=s a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/tests/test_pipeline.py__init__zNoFit.__init__TsNN)__name__ __module__ __qualname____doc__r@rAr?r8r8Qs 4rAr8c"eZdZddZddZdZy)NoTransNc|Sr:rGr>Xys r?fitz NoTrans.fitZ rAc4|j|jdS)Nr;r;)r>deeps r? get_paramszNoTrans.get_params]sVV$&&))rAc |d|_|SNr<r<)r>paramss r? set_paramszNoTrans.set_params`s rAr:F)rCrDrErNrRrWrGrAr?rIrIYs*rArIceZdZdZy) NoInvTransfc|Sr:rGr>rLs r? transformzNoInvTransf.transformfrAN)rCrDrEr]rGrAr?rZrZesrArZceZdZdZdZy)Transfc|Sr:rGr\s r?r]zTransf.transformkr^rAc|Sr:rGr\s r?inverse_transformzTransf.inverse_transformnr^rAN)rCrDrEr]rcrGrAr?r`r`js rAr`ceZdZddZy)TransfFitParamsNc ||_|Sr:) fit_paramsr>rLrMrgs r?rNzTransfFitParams.fitss$ rAr:rCrDrErNrGrAr?rerersrArecHeZdZd dZdZd dZdZdZdZexZ xZ Z d dZ y) Multc||_yr:mult)r>rns r?r@z Mult.__init__ys  rAcyNTrGr>s r?__sklearn_is_fitted__zMult.__sklearn_is_fitted__|rANc|Sr:rGrKs r?rNzMult.fitrOrAcFtj||jzSr:npasarrayrnr\s r?r]zMult.transformzz!}tyy((rAcFtj||jz Sr:rvr\s r?rczMult.inverse_transformryrAcftj||jzjdS)Naxis)rwrxrnsumr\s r?predictz Mult.predicts' 1  )..A.66rAc,tj|Sr:rwrrKs r?scorez Mult.scoresvvayrA)r|r:) rCrDrEr@rrrNr]rcr predict_probapredict_log_probadecision_functionrrGrAr?rkrkxs9))7=DCMC%(9rArkc4eZdZdZdZddZdZddZd dZy) FitParamTzMock classifiercd|_y)NF successfulrqs r?r@zFitParamT.__init__s rAc ||_d|_yrp)rfitted_r>rLrMshould_succeeds r?rNz FitParamT.fits( rAc|jSr:rr\s r?rzFitParamT.predicts rAcL|j||||j|S)N)r)rNrrs r? fit_predictzFitParamT.fit_predicts" An5||ArANc:|||z}tj|Sr:r)r>rLrM sample_weights r?rzFitParamT.scores  $M!AvvayrArXrB) rCrDrErFr@rNrrrrGrAr?rrs rArceZdZdZdZy) DummyTransfz(Transformer which store the column meanscptj|d|_tj|_|S)Nrr})rwmeanmeans_time timestamp_rKs r?rNzDummyTransf.fits(ggaa( ))+ rAN)rCrDrErFrNrGrAr?rrs 2rArc4eZdZdZdZdZddZddZddZy) DummyEstimatorParamsz,Mock classifier that takes params on predictcyrprGrqs r?rrz*DummyEstimatorParams.__sklearn_is_fitted__rsrAc|Sr:rGrKs r?rNzDummyEstimatorParams.fitrOrAc||_|Sr: got_attributer>rLrs r?rzDummyEstimatorParams.predict* rAc||_|Sr:rrs r?rz"DummyEstimatorParams.predict_probarrAc||_|Sr:rrs r?rz&DummyEstimatorParams.predict_log_probarrANrX) rCrDrErFrrrNrrrrGrAr?rrs6rArctdg}tjt5|j dggdgdddd}tdt fg}tjt|5|j dggdgdddt }td|fg}|jdtddd|d |jd k(sJ|jd |jd k(sJ|jJt|t}tt}td |fd|fg}|j d |usJ|j d|usJd}tdt fd|fg}tjt|5|j dggdgddd|jd |j"d k(sJt|t%j&d}tjt(|5|jd dddt+|}|j d|j dusJ|jd}|jd}|jd D]}|j-||jd D]}|j-||j-d|j-d |j-d|j-d ||k(sJy#1swYxYw#1swYxYw#1swYxYw#1swYxYw)N)r|r|r|zRLast step of Pipeline should implement fit or be the string 'passthrough'.*NoFit.*clfmatchsvcTrQ)svc__asvc__brF皙?)ranovazAll estimators should implement fit and transform.*\bNoTrans\br] no_transformr)rrcopyrrrrr rNr]rr2rr3raveltoarrayrtransformer_listrWr`rIrrr) r/rLrMr1r2fs X_transformedX_spX_sp_transformedfs2rs r?test_feature_unionrAsv AQA A AA 6C 1 F s|h%78 9BFF1aLLLOM   1771:q/ 11 1mAssF3S5F5Fq5IJ}QU+V-A-A!Q-G-M-M-OP s|h%78 9B  D''a0m-=-E-E-GH )C  q !! $C,@,@,CA,F FF FMMAM  Aq ! ' 'AGGAJ? :: : )E3<(F9KL MB$$Q*M   1771:q/ 11 1 MC  VX.0KL MB y , q  s|h%78 9BFF1aL s JJc t}t}td|fd|fg}|jd|k(sJ|jd|k(sJ|jj|k(sJ|jj |k(sJy)z6Check the behaviour of `named_transformers` attribute.r noinvtransfN)r`rZr named_transformersrrC)rrCr<s r?%test_feature_union_named_transformersrEBs XF-K &)M;+GH IB  *f 44 4  /; >> >  ' '6 11 1 , , ;; ;rActd}t}t||}t|j\}}|dk(sJ|||fk(sJy)Nrr#)rr)r r`r#zipr;)rr6funames transformerss r?test_make_unionrKOsU  C 8D C Br223E< % %% % C; && &rAcdtd}t}t||d}|jt||jk(sJd|jk(sJt j d}tjt|5t||ddd  dddy#1swYyxYw) Nrr#rn_jobszEmake_union() got an unexpected keyword argument 'transformer_weights'r r|)rr`transformer_weights) r r`r#r;rNrrrrr)rr6rHrs r?test_make_union_kwargsrRXs  C 8D Ca (B  *S$"7"H"H HH H  >> ))O C y ,L3"2JKLLLs B&&B/c4t}fd|_|S)z>Helper to create a mock transformer with custom feature names.cHtDcgc]}| c}Scc}wr:)range)input_featuresi base_name n_featuress r?z)create_mock_transformer..js+#(#499+aS99s )r`get_feature_names_out)rXrYr6s`` r?create_mock_transformerr\gs 8D"D KrActj}tj}t}t d}t ||d}|j rJt ||d}|j||tgd|jy)NrFverbose_feature_names_outT) pca__pca0 pca__pca1 pca__pca2 pca__pca3transf__transf0transf__transf1transf__transf2) rrrr r\r#r_rNr3r[)rLrMrr6unionfu_unions r?0test_make_union_passes_verbose_feature_names_outrips{ A A %C "8 ,D sDE BE... .#ttDH LLA  &&( rAcjtj}tdd}td|fg}|j |j |}|j |}|j |}t||t|||j|}|j|}t||y)Nrr)rrr) rrr r!rNr]rr2rc)rLrrX_transX_trans2X_trans3X_backX_back2s r?test_pipeline_transformrps A 1 0C%'Hll1o''*G%%a(H  #Hgx0gx0  ' ' 0F##G,Gfg.rActj}tj}t}t d|fg}|j ||}|j ||j|}t||y)Nr6) rrrr`r!rrNr]r2)rLrMrrrkrls r?test_pipeline_fit_transformrrsf A A XF&&)*+H$$Q*Gzz!Q))!,Hgx0rAz start, end))rr|)rr)r|r)r|rNr|)r|NrBc:tdtfdtfdtfgdd}|||}t|tsJ|j|j||k(sJt |j jt |j j||k(sJ|jd}|jd}|d =|d =||k(sJd }tjt| 5|||d dddy#1swYyxYw) Ntransf1transf2r123T)memoryverboseFrstepsz*Pipeline slicing only supports a step of 1rr3) r!r`rrrzlistritemsrRrrr)startendr pipe_slice pipe_paramspipe_slice_paramsrs r?test_pipeline_slicers0  VX FH 5y{7KL D eCJ j( ++ +   tzz%4 44 4 Z # # ) ) +,   &&( )% 4 5 5//u/-K"--5-9G'" + ++ + 6C z - U3r\s ? DDcjt}t}td|fd|fg}|d|k(sJ|d|k(sJ|d|k(sJ|d|k(sJtjt 5|ddddtjt 5|ddddy#1swY1xYw#1swYyxYw)Nrrrr3rfoobar)r`rr!rr IndexErrorKeyError)rrrs r?test_pipeline_indexrs XF +C h'%6 7D 7f   >V ## # 8s?? ;#   z " Q x  X s'BB)B&)B2ct}t}td|fg}|jd|usJd|fg|_d|jvsJ|jd|usJd|fg|jk(sJ|j d|fgd|fg|jk(sJ|j |d|fg|jk(sJ|j dgt j d}tjt|5|jdggdgdddd }tjt|5|jdggdgdddy#1swYExYw#1swYyxYw) Nr6mock2rzr6)junkrGzJLast step of Pipeline should implement fit or be the string 'passthrough'.rr|z0This 'Pipeline' has no attribute 'fit_transform') r`r!rrzrWrrrrrrNrr)rurvrrs r?test_set_pipeline_stepsrshGhG&'*+,H    '7 22 2()HN -- -- -    (G 33 3 g  8>> 11 1 012 W  (.. 00 0 W% W  (.. 00 0 |n- ))T C y ,! qcUQC ! =C ~S 1+uqc*++ !!++s E#E/#E,/E8ct}td}td|fd|fg}d|jvsJd|jvsJ|jj|usJ|jj |usJtd|fd|fg}|jj |usJ|jj |usJy)Nrrmr6rnrvalues)r`rkr!rr6rnr)rmult2rs r?test_pipeline_named_stepsrs XF aLE&&)FE?;H    & &f 44 4    $ $ -- -rArcVtjdgg}tjdg}td}td}td}td|fd|fd|fd |fg}|j ||gd }|j D cgc]\}} | } }} || k(sJycc} }w) Nr|rrmrm2badm3m5)rrrr)rwrrkr!rNrz) rrLrMrmult3mult5rexpected_namesname_ actual_namess r?%test_pipeline_correctly_adjusts_stepsrs 1#A ! A aLE aLE aLE  ,tUmdE]KH LLA.N(07WT1D7L7 \ )) )8s B%c  tjdgg}tjdg}td td td fd}|}d}t|gg|j ||t|g|j |j |t||j|gg|j|d }t|gg|j ||t|g|j |j |t||j|gg|jd |j | ddddd d k(sJ|j|d}t|gg|j ||t|g|j |j |t||j|gggd}|D]}t||||j d }t|gg|j ||t|g|j |j |t||j|gg|}|j|d}t|gg|j ||j|t|gg|j ||t||j|ggd}d} tjt| 5} t|ddddt! j"j$tsJ|t'| j"j$vsJd }t)d fd|fd fg}t|gg|j ||t|g|j |j |t||j|ggy#1swYxYw)Nr|rrmrrc,tdfdfdfgS)Nrrlast)r!)rrrsr?makez0test_set_pipeline_step_passthrough..make*s!$u GHHrArrOTrF) rzrrrrxm2__mult last__multtransform_inputryr)rrrr]r)rz''str' object has no attribute 'predict'z*This 'Pipeline' has no attribute 'predict'rrrrr)rwrrkr3rrNrrcrWrRrzr$r]rrrrrrrr!)rrLrMrrexp other_methodsr-rrrrrrs @@@r?"test_set_pipeline_step_passthroughr"s 1#A ! A aLE aLE aLEIvH Cw 6 6q! <=uhll1o55a89q(44seW=> ;' Cw 6 6q! <=uhll1o55a89q(44seW=>   D  ) .    ;' Cw 6 6q! <=uhll1o55a89q(44seW=>M %!&!!$% 5! Cw 6 6q! <=uhll1o55a89q(44seW=>vH [) Cw Q 2 < 9I%%s # O>>Pcttd}|j|j|jtt }t |drJ|j|jtd}|jddk(sJt |drJ|j|jtt t}t |drJ|jt |drJttt }t |drJ|jt |drJy)Nrrrrrrrc) r"rkrr]rcr`hasattrrzrZ)rs r?test_pipeline_ducktypingrssT!W%H   VX&Hx++ +  ]+H >>!  > >> >x++ +  VX{}5Hx++ + x!455 5[]FH5Hx++ + x!455 55rAct}t}t||}t|tsJ|jdddk(sJ|jdddk(sJt||t }t|tsJ|jdddk(sJ|jdddk(sJ|jdddk(sJy)Nrztransf-1r|ztransf-2r fitparamt)r`r"rr!rzr)t1t2rs r?test_make_pipeliners B B R D dH %% % ::a= z )) ) ::a= z )) ) R -D dH %% % ::a= z )) ) ::a= z )) ) ::a= { ** *rAzpipeline, check_estimator_typec0t|jduSr:)r+estimator_typeests r?rZrZs 44<rAc|jduSr:)_estimator_typers r?rZrZs3#6#6$#>rAc.t|||sJy)zCheck 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)rcheck_estimator_types r?test_pipeline_estimator_typers& N  )) )rAcztg}t}|j}|j|k(sJy)zCheck that we propagate properly the tags in a Pipeline. Non-regression test as part of: https://github.com/scikit-learn/scikit-learn/issues/30197 rN)r!r__sklearn_tags__)empty_pipelinebe expected_tagss r?%test_sklearn_tags_with_empty_pipeliners: B'N B'')M  * * , == =rAc:tj}tj}tddd}t d}t d|fd|fgdd i }|j |||j|}t d|fd|fgdd i }|j||}t d tfd|fd|fgd d i }|j||}t|dddd fd |j|zt|ddd f|j||jt|dddd fd |j|zt|ddd f|j||j|j|jdd fk(sJy)Nrr rrrrr|rrr2rOrPr6r3)rrrr rr rNr]rr`r2r3r9r)rLrMrr2r<r=X_fit_transformedX_fit_transformed_wo_methods r?test_feature_union_weightsrs A A 1A FC 1 F  &)*  BFF1aLLLOM  &)*  B((A.  &( eS\Hf+=>#RL B#%"2"21a"8mAssF3R#:K:KA:N5NO}QU+V-A-A!Q-G-M-M-OP/3B37c>O>OPQ>R9RS(B/1E1Ea1K1Q1Q1ST & , ,Q ?? ?rAc"t}tdtdfdtdfg}tdtdfdtdfgd}tdtdfdtdfgd}|j||j |}|j dt |k(sJ|j||j |}|j |j k(sJt|j|j|j|}t|j|j|j |}t|j|jy) NwordswordanalyzercharscharrrMr) JUNK_FOOD_DOCSr rrNr]rrr3r:r)rLr< fs_parallel fs_parallel2r=X_transformed_parallelX_transformed_parallel2s r?test_feature_union_parallelrs|A  ov6 7 ov6 7  B ov6 7 ov6 7  K ov6 7 ov6 7  LFF1ILLOM   q !SV ++ +OOA(2215   "8">"> >> >},,.0F0N0N0PQ+88;},,.0G0O0O0QR+44Q7},,.0G0O0O0QRrActd}tdd}td|fd|fg}|jt|j }|D] }d|vrd |vr Jt |d k(sJtd t fgjd gg}tjd }tjt|5|j dddy#1swYyxYw)Nrrchar_wb)rr)r ngram_rangerrchars__words__#tr1r|zDTransformer tr1 (type Transf) does not provide get_feature_names_outr) rr rNrr[rr`rrrrr) word_vect char_vectft feature_namesfeatrs r? test_feature_union_feature_namesrs0IGI +gy-AB CBFF>,,.M6D I$5556 }  ## # vx() * . .u 5B ))N C ~S 1#   "###s C##C,cBtj}tj}tt dt }|j ||tjt5t|ddddtt dtd}tjt5t|dddd|j ||t|jtj|y#1swYxYw#1swYQxYw)Nr|rclasses_rr)rrrr"rrrNrrrr$rr3rrwr)rLrMregrs r?test_classes_propertyr#s A A  a(*:*< =CGGAqM ~ &!Z !  a(*.8$rAcdgSNx2rGrs r?rZz.test_set_feature_union_steps..9rrAcdgS)Nx5rGrs r?rZz.test_set_feature_union_steps..:rrArrr|m2__x2m3__x3rm5__x5r6)r;mock__x3rmock__x5) rkr[r r3r]rwrxr;rW)rrrrs r?test_set_feature_union_stepsr3sl GE GE GE"?E"?E"?E e}tUm4 5BAxbjj1#.?!@A(+R-E-E-GH!%=/Bubll2::se+<=>z2#;#;#=>MMVUO#4M5ubll2::se+<=> |R%=%=%?@MMuMubll2::se+<=> |R%=%=%?@rActd}td}d|_d|_tjdgg}t d|fd|fg}t ddgg|j |j|t ddgg|j|t dd g|j|jd t dgg|j |j|t dgg|j|t d g|j|jd t gg|j |j|t gg|j|t g|j|j| t dgg|j |j|t d d|fg}t dgg|j |j|t dgg|j|t d g|jy)NrrcdgSrrGrs r?rZz2test_set_feature_union_step_drop..TrrAcdgSrrGrs r?rZz2test_set_feature_union_step_drop..UrrAr|rrrrdroprr)rr) rkr[rwrxr r3rNr]rrW)rrrLrs r? test_set_feature_union_step_droprPs GE GE"?E"?E QC5A e}tUm4 5BAx!4!4Q!78Ax!1!1!!45(+R-E-E-GHMMVMubffQi11!45ub..q12z2#;#;#=>MMVMtRVVAY0034tR--a01r23356MMUMubffQi11!45 ~e}5 6BubffQi11!45ub..q12z2#;#;#=>rAc td}td}d|_d|_tjdgg}t d|fd|fg}t ddgg|j |j|t ddgg|j|t dd g|j|jd t ddgg|j |j|t ddgg|j|t d d g|jd g|jd t ddgg|j |j|t ddgg|j|t d dg|jd g|j|t ddgg|j |j|t ddgg|j|t d d g|jd gt dd|fg}t ddgg|j |j|t ddgg|j|t d d g|jd gtj}|jd}tddd}t dd|fg}t ||j |j|ddd|ft ||j|ddd|ft gd|jgd|jd |j |j|}t |tj||g|j|}t |tj||gt gd|jgd|j|t ||j |j|dd| dft ||j|dd| dft gd|jgdt dd|fgd di}t |dz|j |j|ddd|ft |dz|j|ddd|ft gd|jgdy)z@Check the behaviour of setting a transformer to `"passthrough"`.rrcdgSrrGrs r?rZz4test_set_feature_union_passthrough..zrrAcdgSrrGrs r?rZz4test_set_feature_union_passthrough..{rrAr|rrrrrr m2__myfeatmyfeatr m3__myfeat)rrr rrrrN)passthrough__f0passthrough__f1passthrough__f2passthrough__f3r`ra)f0f1f2f3)r)rrrr pca__f0pca__f1pca__f2pca__f3)r)passthrough__pca0passthrough__pca1rrrrrP)rkr[rwrxr r3rNr]rrWrrrr hstack)rrrLrcolumnsrX_fts r?"test_set_feature_union_passthroughrss GE GE#@E"?E QC5A e}tUm4 5BAx!4!4Q!78Ax!1!1!!45(+R-E-E-GHMM]M#Ax!4!4Q!78Ax!1!1!!45 h/1I1I8*1UVMM]M#Ax!4!4Q!78Ax!1!1!!45 |$b&>&>z&J MMUMAx!4!4Q!78Ax!1!1!!45 h/1I1I8*1UV ,tUm< =BAx!4!4Q!78Ax!1!1!!45 h/1I1I8*1UV AggajG 1A FC 5s|D EBq"&&)--a0HWH=>q"**1-a'k:;    !9: MMmM$ 66!9  q !DtRYY1v./  A DtRYY1v./    !9: MMcM"q"&&)--a0WHI>?q"**1-a'l;<    !9:   '%6*A. Bq1ubffQi11!4Q[ABq1ub..q1!XgX+>?    !9: rActj}tddd}td|fdg}|j |t gd|j y) zDCheck feature_names_out for verbose_feature_names_out=True (default)rr rrrr)r`rapassthrough__x0passthrough__x1passthrough__x2passthrough__x3Nrrr r rNr3r[rLrrs r?9test_feature_union_passthrough_get_feature_names_out_truersS A 1A FC s|%CD EBFF1I    " rActj}tddd}td|fdgd}|j |t gd |j y ) z;Check feature_names_out for verbose_feature_names_out=Falserr rrrrFr^)pca0pca1x0x1rrNrrs r?:test_feature_union_passthrough_get_feature_names_out_falser%s[ A 1A FC  56RW BFF1I    " rActjd}|jddgddggddg}tdd }t d t fd |fgd }|j |tjd}tjt|5|jdddy#1swYyxYw)zFCheck get_feature_names_out and non-verbose names and colliding names.pandasr|rrr<r=rc|dgSrTrGrLs r?rZzStest_feature_union_passthrough_get_feature_names_out_false_errors..s !SE(rAc.tjdgSrT)rwrx)r>rs r?rZzStest_feature_union_passthrough_get_feature_names_out_false_errors..sbjj#>OrA)feature_names_outrrFr^zvOutput feature names: ['a'] are not unique. Please set verbose_feature_names_out=True to add prefixes to feature namesrN) r importorskip DataFramer$r r%rNrrrrr[)pdrLselect_argrs r?Atest_feature_union_passthrough_get_feature_names_out_false_errorsr1s   X &B q!fq!f%Sz :A".OH   !D(#34"' E IIaL )) U C z -& ##%&&&s B66B?ctjd}|jtt dgt dDcgc]}d| c}}t ddgd}|j |tjd }tjt| 5|jd d d y cc}w#1swYy xYw) zLCheck get_feature_names_out with non-verbose names and >= 5 colliding names.r'rOfr()rr)rrFr^zOutput feature names: ['f0', 'f1', 'f2', 'f3', 'f4', ...] are not unique. Please set verbose_feature_names_out=True to add prefixes to feature namesrN) rr-r.r{rUr rNrrrrr[)r/rWrLrgrs r?Ptest_feature_union_passthrough_get_feature_names_out_false_errors_overlap_over_5r4%s   X &B d59o&%)0LQ1QC0L MA   56"' E  IIaL ))  C z -& ##%&&1M&&s C &CCc pd}d}d}dtdfdtdfg}dtdfdtdfg}td ftd ffD]\}}dtdf|tdfg}||f||f|||zffD]x\}} tjt | 5|d i||ij d ggd gddd|d i|dtd fgi} t| ||tjt | 5| j d ggd gdddtjt | 5| jd ggd gddd|d i|dtd fgi} | jd i||itjt | 5| j d ggd gdddtjt | 5| jd ggd gddd{y#1swYBxYw#1swYxYw#1swYxYw#1swYnxYw#1swYxYw)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__qrr=rr<rzr;rr|rG) rkr!r rrrrNsetattrrrW) error_message_1error_message_2error_message_3 bad_steps1 bad_steps2rparam bad_steps3 bad_stepsmessagers r?test_step_name_validationrA;sHLODOVO47#c47^4JQ.3Q.1J '*\;M,NO. UDGnud1g&67  )  ) 50 1#  . Iwz9 :)ui()--seaS9 :2#tAw 012C C *z9 $!s# $z9 .!!A3%!- .2#tAw 012C CNN 0eY/ 0z9 $!s# $z9 .!!A3%!- . .3 .. : :  $ $ . .  $ $ . .s<G:H9HHH+:H H H H( +H5 ctdtdtfgfg}|jdt|jdt fgdy)Nr<r=gMbP?) a__b__alphaa__br)a__stepsa__b__C)r!rrWrr) estimators r?test_set_params_nested_pipelinerHasX330@*A)B CDEFI U9 C);)=#>"?KrAcrtj}tj}t} t j |d}t dd}t}tdt|fd|fg}td|fd|fg|}|j|||j|||jdj}t|j||j|t|j||j|t|j!||j!|t|j#|||j#||t|jdj$|jdj$t'|d rJ|j||t|j||j|t|j||j|t|j!||j!|t|j#|||j#||t|jdj$|jdj$||jdjk(sJt dd} t} td | fd| fg|} | j||t|j|| j|t|j|| j|t|j!|| j!|t|j#||| j#||t|jdj$| jd j$|| jd jk(sJ t)j*|y#t)j*|wxYw) NrOlocationryTrrrrrxrtransf_2)rrrrjoblibMemoryr&rr!rrNrrr3rrrrrrshutilrmtree) rLrMcachedirrxrrr cached_pipetsclf_2rM cached_pipe_2s r?test_pipeline_memoryrWgs A AyH8 "=d3(E&M2UCLAB6 2UCLA&Q  1 A  $ $X . 9 94<<?K,?,?,BC4--a0+2K2KA2NO411!4k6S6STU6VW4::a+[->->q!-DE   X & - -{/F/Fx/P/W/W 68,,, 14<<?K,?,?,BC4--a0+2K2KA2NO411!4k6S6STU6VW4::a+[->->q!-DE   X & - -{/F/Fx/P/W/W [,,X6AAAAA15= ( #eU^ 4V  !Q 4<<?M,A,A!,DE4--a0-2M2Ma2PQ  " "1 %}'F'Fq'I  4::a+]-@-@A-FG   X & - -  % %j 1 8 8 ]..z:EEEEE h hs OPP6c@t}tj|d}tt t |}|j |usJtt t }|j Jt|dk(sJtj|y)NrOrJrLr) rrNrOr"rr&rxrrPrQ)rRrxrs r?test_make_pipeline_memoryrYs{yH ]]Hb 9F[]CE&AH ??f $$ $[]CE2H ?? "" " x=A   MM(rAc$eZdZddZddZddZy)FeatureNameSaverNc"t||d|S)NT)reset)r5rKs r?rNzFeatureNameSaver.fitsT1D1 rAc|Sr:rGrKs r?r]zFeatureNameSaver.transformr^rAc|Sr:rG)r>rVs r?r[z&FeatureNameSaver.get_feature_names_outsrAr:)rCrDrErNr]r[rGrAr?r[r[srAr[ctdtfddtfg}t}|j |j |j t|ddj|j|jy)z5Check pipeline.get_feature_names_out with passthroughrIpassrrrNr3) r!r[rr rNrrr3r[r)rrs r?test_features_names_passthroughrcsu  &( ) # &( )  D ;DHHTYY $ Sb ''(:(:;T=O=OrAc&tdtfdtfg}tDcgc]}d|v}}|j t|t |ddj gdt |ddj dgdycc}w) z5Check pipeline.get_feature_names_out with vectorizersvectrrpizzaNr3)beerburgercoke copyrightrfthenonsense_is_ignored)r!rrrrNr3r[)rrrMs r?#test_feature_names_count_vectorizerrms FO$56@R@T8UV WD-.!A.A.HH^Q Sb '')? Sb ''(=>? /s Bctdtfg}t}|j|j|j d}t jt|5|jdddy#1swYyxYw)zZCheck that error is raised when a transformer does not define `get_feature_names_out`.notransrz&does not provide get_feature_names_outrN) r!rIr rNrrrrrr[)rrrs r?8test_pipeline_feature_names_out_error_without_definitionrpsi Iwy12 3D ;DHHTYY $ 2C ~S 1% ""$%%%s %A??Bctt}tjtd5|j dgdggddgddgdddy#1swYyxYw)Nz8Pipeline.fit does not accept the sample_weight parameterrrr|r)r"rrrrrN)rs r?test_pipeline_param_errorrrs[ *, -C T : !qc QF1a&9:::s AAc#K|]L\\}}}t||r8|dk(r,t|dr t|jddts|||fNyw)rrzr3r|N)rrrzr).0rpatternr-s r? rvs^<ghsF/! C ! syy}Q' 3s '6<sAArrzv\[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$)rwr)rN)rNrnzw\[Pipeline\].*\(step 1 of 2\) Processing transf.* total=.*\n\[Pipeline\].*\(step 2 of 2\) Processing mult.* total=.*\n$)rrmult1rz\[FeatureUnion\].*\(step 1 of 2\) Processing mult1.* total=.*\n\[FeatureUnion\].*\(step 2 of 2\) Processing mult2.* total=.*\n$)rxr)rrz@\[FeatureUnion\].*\(step 1 of 1\) Processing mult2.* total=.*\n$)rNrrzest, pattern, methodcFt||}gdgdg}dgdgg}|jd||||jjrJd|jd|||t j ||jjsJy) Nr|rr)r5rrrrF)ryzGot output for verbose=FalseT)r$rW readouterroutrr)rr-rucapsysfuncrLrMs r? test_verboser0s 3 D IA qc ANN5N!AJ  "&&F(FF &NN4N AJ 88GV..044 55 5rAcddgddgddgg}gd}t}t}t||}t|drJ|j |||j |j cxk(rdk(sJJt}t}t||}|j |||j |j cxk(rdk(sJJt|drJy Nr|rrr5rrrr|rn_features_in_)r%rr"rrNr)rLrMssgbdtrs r?test_n_features_in_pipeliner@s Q!Q!Q AA  B ) +D T "Dt-.. .HHQN   ""3"3 8q 88 88 8  B ) +D T "DFF1aL   ""3"3 8q 88 88 8t-.. ..rAcjddgddgddgg}gd}t}t|}t|drJ|j|||j|jcxk(rdk(sJJt}t|}|j|||j|jcxk(rdk(sJJyr)r%r#rrNr)rLrMrrHs r? test_n_features_in_feature_unionrWs Q!Q!Q AA  B BBr+,, ,FF1aL   1 1 6Q 66 66 6  B BBFF1aL   1 1 6Q 66 66 6rAcGddtt}tjtj}}t d|fd|fg}t jt5|j||dddt jt5|j||ddd|j||d|j||dy#1swYfxYw#1swY>xYw)NceZdZddZddZy)7test_feature_union_fit_params..DummyTransformerNc |ddik7rt|S)Nr<rrrhs r?rNz;test_feature_union_fit_params..DummyTransformer.fitnsc1X%  KrAc|Sr:rGrKs r?r]zAtest_feature_union_fit_params..DummyTransformer.transformsHrAr:rCrDrErNr]rGrAr?DummyTransformerrms    rArdummy0dummy1rrU) rrrrrr rrrrNrrrLrMrs r?test_feature_union_fit_paramsrks+] 99dkkqAx!1!34xAQAS6TUVA z " a  z " 1EE!Q!EOOAqAOs)C!C-!C*-C6cDGddt}tjtj}}t d|fd|fg}t j t5|j||dddd|j||dy#1swYxYw)NceZdZddZy)Mtest_feature_union_fit_params_without_fit_transform..DummyTransformerNc |ddik7rt|S)Nmetadatar|rrhs r?rNzQtest_feature_union_fit_params_without_fit_transform..DummyTransformer.fitsj!_,  KrAr:rirGrAr?rrs rArnofittransform0nofittransform1r)rr|) r'rrrr rrrrrs r?3test_feature_union_fit_params_without_fit_transformrs= 99dkkqA  0 2 3  0 2 3  A z "* 1q)*OOAq1O%**s $BBctjjtjj}}tj j ddg|jddgjt}tj||<ttt}|j||j||dkDsJy)Nr|rrg?)pg?)rrr8rrwrandomchoicerastypeboolnanr"rrrNr)rLrMmaskrs r?%test_pipeline_missing_values_leniencyrs 99>> T[[--/qA 99  QFAGGSz  : A A$ GDffAdG *<*> ?D 88Aq>  1 % ++ +rAcddgddgddgg}gd}dtfg}d di}d }t|| }tjt| 5|j ||dddy#1swYyxYw) Nr|rrr5rrrr transformerzZAttempting to weight transformer "transformer", but it is not present in transformer_list.rPr)r`r rrrrN)rLrMr;weights expected_msgrgs r?3test_feature_union_warns_unknown_transformer_weightrs Q!Q!Q AA!68,-a G 5 )w GE z 6 !Qs A''A0cxt|t}|jjjrJyr:)r"r&r input_tagspairwise)rrs r?test_pipeline_get_tags_noners3 ce ,D$$&11::: ::rA Predictorc\tjjd}|jddtjdgdzdgdzz}}t dt fd|fg}|j|||j|}t|rAt|d|j||tjt||k(sJyt||j!|j||tjt#||k(sJy) Nrrrr|r predictor)rwr RandomStaterandnrr!r0rNrr r3rrapproxrr1rr)rrngrLrMmodely_preds r?1test_search_cv_using_minimal_compatible_estimatorrs ))   "C 99R RXXqcAgb&89qA  +- .ik0JK E IIaO ]]1 FU61%{{1a FMM.F2K$LLLL){{1a FMM(1f2E$FFFFrAc,Gddt}td|fg}tjt5t |ddd|j tjtjt |y#1swYCxYw)NceZdZdZy)0test_pipeline_check_if_fitted..Estimatorcd|_|SrprrKs r?rNz4test_pipeline_check_if_fitted..Estimator.fitDLKrANrirGrAr? Estimatorrs rArr) rr!rrrr6rNrrr)rrs r?test_pipeline_check_if_fittedrskM %-./H ~ &"!" LLDKK(H""s B  Bcddgddgddgg}gd}tdtfg}tjt5t |d d d |j ||t |td g}t |tdtfd g}tjt5t |d d d |j ||t |y #1swYxYw#1swY3xYw) z1Check __sklearn_is_fitted__ is defined correctly.r|rrr5rrrrNra)r r0rrrr6rN)rLrMrgs r?"test_feature_union_check_if_fittedrs Q!Q!Q AA 5"4"678 9E ~ & IIaOE 12 3EE 5"4"679PQ RE ~ & IIaOEs C)7 C5)C25C>c>tjtj}}Gddt}t |t}|j ||tj }|j|}t||Dcgc]}d| c}ycc}w)zRCheck that pipeline passes names through. Non-regresion test for #21349. c eZdZdfd ZxZS)Ytest_pipeline_get_feature_names_out_passes_names_through..AddPrefixStandardScalarct||}tj|Dcgc]}d| c}tScc}w)Nr my_prefix_)dtype)superr[rwrxobject)r>rVrIr __class__s r?r[zotest_pipeline_get_feature_names_out_passes_names_through..AddPrefixStandardScalar.get_feature_names_outs;G11PE::uEtD62EVT TEs >r:)rCrDrEr[ __classcell__)rs@r?AddPrefixStandardScalarrs U UrArrN) rrrr%r"rNrr[r3)rLrMrr input_namesr,rs r?8test_pipeline_get_feature_names_out_passes_names_throughrs 99dkkqAU.U 02N4D EDHHQN$$K22;?(;*W4Zv+>*WX*Ws B c*tjdtdd\}}tt t }|j d|j|||ddj}|dj}t||y)z.Test pipeline's set_output with feature names.r'Tas_frame return_X_yr]Nr3) rr-r r"r%r set_outputrNr[feature_names_in_r3)rLrMrrlog_reg_feature_namess r?$test_pipeline_set_output_integrationrs ! dt 4DAq )+=+? @DOOhO'HHQNSb 779 H66(*?@rActjd}tdd\}}t|d\}}t dt fdt fg}|jd|j||j|}t||jsJt|j|jt|j|jy ) z'Test feature union with set_output API.r'TrrrscalarrrN)rr-r rr r%r rrNr]rr.r3rr[index)r/rLrX_trainX_testrgrks r?test_feature_union_set_outputr"s   X &B dt 4DAq&qq9OGV 8^%56G HE x( IIgoof%G gr|| ,, ,w(C(C(EFw}}fll3rAct}t}td|fd|fddg}|d|usJ|d|usJ|ddk(sJ|ddk(sJy ) z8Check FeatureUnion.__getitem__ returns expected results.rrra)drop_merrbrrrN)r%r r )rrrgs r?test_feature_union_getitemr2s  F %C  v  CL #    E ?f $$ $ <3   =M )) )  v %% %rAkeyrctdtfdtfg}d}tjt |5||dddy#1swYyxYw)z5Raise error when __getitem__ gets a non-string input.rrzOnly string keys are supportedrN)r r%r rrr)rrgrs r? test_feature_union_getitem_errorrDsP 8^%56G HE *C xs + c s AAcHtjdtdd\}}t}|j |t d|fg}t |dsJt|j|jt|j|jt dg}|j |t |dsJt|j|j|j}t dg}|j |t |drJy)zxEnsure feature union has `.feature_names_in_` attribute if `X` has a `columns` attribute. Test for #24754. r'TrscalerraN) rr-r r%rNr rr3rrto_numpy)rLrrrgX_arrays r?$test_feature_union_feature_names_in_rOs  ! dt 4DAq F JJqM 7F+, -E 5- .. .qyy%"9"9:v//1H1HI 12 3E IIaL 5- .. .qyy%"9"9:jjlG 12 3E IIgu122 22rActjdjdd}tjt d5t dtdfdtd fgj|d d d y #1swYy xYw) z?Test that FeatureUnion raises error for 1D transformer outputs.rrrz@Transformer 'b' returned an array or dataframe with 1 dimensionsrr<c|Sr:rGr*s r?rZz.test_feature_union_1d_output..ysArAr=c|dddfSrsrGr*s r?rZz.test_feature_union_1d_output..zsAadGrAN) rwarangereshaperrrr r$rr*s r?test_feature_union_1d_outputros{ ! Q"A P   )+67)*;<=  -    s 5A??BT)enable_metadata_routingr-rNrc d fd}d}tjddgddgg}tjddg}tjddgg}tjd d gg}tjd d gg}|\}} } } } |j||||| || ddg|||| ddg|| ddg|dz||| |jd|dz|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.registryrr)r(set_fit_requestset_transform_request)rrrs r?get_transformerz6test_transform_input_pipeline..get_transformers/ !( 3 _=8_ L " " " R rAc ttttf\}}}}t|dd|dd|dd|dddg}|||||fS)zGet a pipeline and corresponding registries. The pipeline has 4 steps, with different request values set to test different cases. One is aliased. TrF other_weightsrr)r)r") registry_1 registry_2 registry_3 registry_4rrs r? get_pipelinez3test_transform_input_pipeline..get_pipelines K K K K : 6 J J  JdT J Jee L JdT J JoPT U,-  ZZCCrAcF|sJ|D]}|D]}t|f||d|y)zACheck that the right metadata was recorded for the given methods.)r-parentN)r*)rmethodsrrGr-s r?check_metadataz5test_transform_input_pipeline..check_metadatasGx! I! '!!   rAr|rrr5rr(d)rrrrNr]rrN)rwrrNsplit)r-rrrLrMrrrrrrrrrs @r?test_transform_input_pipeliner s  D*  1a&1a&!"A !QAHHq!fX&MHHr2hZ(Mxx#s %H;G>8D*j*jHH  ##  UK( PX:{34  #a'   S#a' rAcGddtt}Gddtt}tjddgg}tjddg}tjddgg}tjddg}t d|fd |j d d fgd g }|j|||| y)z;Test that the right transformed values are passed to `fit`.ceZdZdZdZy)>test_transform_input_explicit_value_check..Transformercd|_|SrprrKs r?rNzBtest_transform_input_explicit_value_check..Transformer.fitrrAc |dzSrsrGr\s r?r]zHtest_transform_input_explicit_value_check..Transformer.transform q5LrANrrGrAr? Transformerr   rArceZdZddZy).EstimatorNct|tjddggt|tjddgt|tjddggt|tjddg|S)Nr|rrr)r3rwrr>rLrMX_valy_vals r?rNz@test_transform_input_explicit_value_check..Estimator.fitsg q"((QF8"4 5 q"((Aq6"2 3 ubhhAx&8 9 ubhh1v&6 7KrArBrirGrAr?rrs rArrr|rrrGTrrrrN)rrrrwrr!rrN)rrrLrMrrrs r?)test_transform_input_explicit_value_checkrs& O] 1a&A !QA HHq!fX E HHaV E  KM * )+55D5M N !  D HHQeH,rActjddgddgg}tjddg}d}tjt|5t t dg j||d d d y #1swYy xYw) zBB1aHIIIs 'BB cGddtt}Gddtt}tjddgg}tjddg}tjddgg}tjddg}tjdd gg}tjddg}t d |fd |j d d fgdg}|j||||f||f y)zHTest that if metadata is a tuple of arrays, both arrays are transformed.ceZdZddZy)-test_transform_tuple_input..EstimatorNct|tsJt|tsJt|dtjddggt|dtjddgt|dtjddggt|dtjddgd|_|S)Nrrrr| T)rtupler3rwrrrs r?rNz1test_transform_tuple_input..Estimator.fitseU+ ++eU+ ++ uQxAq6(); < uQx1a&)9 : uQxB8*)= > uQx1a&)9 :DLKrArBrirGrAr?rr"s rArceZdZdZdZy)/test_transform_tuple_input..Transformercd|_|SrprrKs r?rNz3test_transform_tuple_input..Transformer.fitrrAc |dzSrsrGr\s r?r]z9test_transform_tuple_input..Transformer.transformrrANrrGrAr?rr( rrArr|rrrOr$rrGTrrrN)rrrrwrr!rrN) rrrLrMX_val0y_val0X_val1y_val1rs r?test_transform_tuple_inputr/s O] &  1a&A !QA XX1vh F XXq!f F XXBxj !F XXq!f F  KM * )+55D5M N !  D HHQ&&)&&1AHBrA)rrrrrrr]rccGddt}td|fg}tjtd5t ||dggdddy#1swYyxYw)NcFeZdZdZdZdZdZdZdZdZ dZ d Z d Z y ) :test_pipeline_warns_not_fitted..StatelessEstimatorzStateless 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|Sr:rGrKs r?rNz>test_pipeline_warns_not_fitted..StatelessEstimator.fit@sKrAc|Sr:rGr\s r?r]zDtest_pipeline_warns_not_fitted..StatelessEstimator.transformCrrAc>tjt|Sr:rwonesrr\s r?rzBtest_pipeline_warns_not_fitted..StatelessEstimator.predictF773q6? "rAc>tjt|Sr:r6r\s r?rzHtest_pipeline_warns_not_fitted..StatelessEstimator.predict_probaIr8rAc>tjt|Sr:rwzerosrr\s r?rzLtest_pipeline_warns_not_fitted..StatelessEstimator.predict_log_probaLs88CF# #rAc>tjt|Sr:r6r\s r?rzLtest_pipeline_warns_not_fitted..StatelessEstimator.decision_functionOr8rAcyrsrGrKs r?rz@test_pipeline_warns_not_fitted..StatelessEstimator.scoreRsrAc>tjt|Sr:r6r\s r?rzHtest_pipeline_warns_not_fitted..StatelessEstimator.score_samplesUr8rAc|Sr:rGr\s r?rczLtest_pipeline_warns_not_fitted..StatelessEstimator.inverse_transformXrrAN) rCrDrErFrNr]rrrrrrrcrGrAr?StatelessEstimatorr28s4    # # $ #  # rArArGz)This Pipeline instance is not fitted yet.rr|)rr!rwarns FutureWarningr$)r-rArs r?test_pipeline_warns_not_fittedrD*s`!]!F k#5#789 :D m+V W%fse$%%%s AA%cbeZdZdZd dZd dZd dZd dZd dZd dZ d d Z d d Z d d Z d d Z y)SimpleEstimatorcyrprGrqs r?rrz%SimpleEstimator.__sklearn_is_fitted__grsrANc*|J||J||Sr:rGr>rLrMrprops r?rNzSimpleEstimator.fitjs)(7-7(%% rAc|J|J|dzSrsrGrIs r?rzSimpleEstimator.fit_transformo#(((1u rAcN|J|Jtjt|Sr:r6rIs r?rzSimpleEstimator.fit_predictt,(((wws1vrAcN|J|Jtjt|Sr:r6r>rLrrJs r?rzSimpleEstimator.predictyrNrAcN|J|Jtjt|Sr:r6rPs r?rzSimpleEstimator.predict_proba~rNrAcN|J|Jtjt|Sr:r;rPs r?rz!SimpleEstimator.predict_log_probas-(((xxArAcN|J|Jtjt|Sr:r6rPs r?rz!SimpleEstimator.decision_functionrNrAc|J|JyrsrGrIs r?rzSimpleEstimator.scores(((rAc|J|J|dzSrsrGrPs r?r]zSimpleEstimator.transformrLrAc|J|J|dz SrsrGrPs r?rcz!SimpleEstimator.inverse_transformrLrArB)rCrDrErrrNrrrrrrrr]rcrGrAr?rFrFds9         rArFr  partial_fitc>d}tjdggtjdg}}dgdd}}}t}|||dd}||ddd}tj ddj ddj dd}td |fd |fg} d|vr| j||||} t| |||||| t|dd|| t|d d || y#t$rt| ||||| YBwxYw)z5Test that metadata is routed correctly for pipelines.cj|tvr t|}n|g}|D]}t|d|ddi||S)zSet 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__requestrG)r,r$)rr-kwargrs r? set_requestz7test_metadata_routing_for_pipeline..set_requestsO & &'/GhG ;F 1GC4xx0 1 :E : ; rAr|r<r=TrrJrNrtrsrG)rrJr)objr-rrrr]N) rwrrFr(rrset_inverse_transform_requestr!rNr$rr*) r-r]rLrMrrJrrr_rs r?"test_metadata_routing_for_pipelinerbsP  88aSE?BHHaSMqA%&Cc4M  C c6D AC c54 @C td ;  TD  A & &TD & I  % S'9:;H F<<1M<M !&! q D8  #  #   !&! ]  sC::DDcRdggdg}}dgd}}t}td|fg}d|}tjtt j |5 t||||||dddy#t$rt|||||Y)wxYw#1swYyxYw)zBTest that metadata is not routed for pipelines when not requested.r|r<rGzn[sample_weight, prop] are passed but are not explicitly set as requested or not requested for SimpleEstimator.rr^N) rFr!rrrrrr$r)r-rLrMrrJrr error_messages r?(test_metadata_routing_error_for_pipelineresC51#qA#s4M  C+s+,-H 117 : z=)A BQ Q %GHf %a-d SQQ Q &GHf %a}4 P Q QQs*BA99BBBBB&)rr]rcctdtfg}tjtd5t ||dggdgddddy#1swYyxYw)zTest that the right error message is raised when metadata is passed while not supported when `enable_metadata_routing=False`.rGz1is only supported if enable_metadata_routing=Truerr|r<r^N)r!rFrrrr$)r-rs r?*test_routing_passed_metadata_not_supportedrgsa k?#456 7D M B fseA3SABBBs AActdtfdtfg}|jdggdg|j dggy)zFTest that pipeline works with estimators that have a `__len__` method.r_rGr|N)r!rrrNrr)s r?%test_pipeline_with_estimator_with_lenri sN  %' (;8N8P*QR D HHqcUQCLL1#rA last_stepctdtfd|fg}|jdggdgjdgdgdggdgdgdggk(sJy)zTest that the pipeline works when there is not last step. It should just ignore and pass through the data on transform. r_rGr|rrN)r!r$rNr])rjrs r?test_pipeline_with_no_last_steprl sc e023k95MN OD 88aSEA3  ) )A3aS/ :sQC!o MM MrActjddgddgddgg}gd}gdd}}td tfg}d tjd }t j ttj| 5|j|||| dddtd tjdd fg}d tjd}t j ttj| 5|j|||| j||| dddy#1swYxYw#1swYyxYw)zCTest that the right error is raised when metadata is not requested.rr|rr5rrzr|r|r|r<sub_transformerzb[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for z.fitrrNTz .transform) rwrr r(rCrrrrrrNrr])rLrMrr feature_unionrds r?)test_feature_union_metadata_routing_errorrq sm 1a&1a&1a&)*AA'8M!#46J6L"M!NOM !!5!>!> ?t E /ryy7O PP!QmhOP!"$&66"&7   M 4 = =>j J /ryy7O PG q   )A]X) FGG)PP(GGsD9(E9EEcPtdtfg}|jy)zaTest that get_metadata_routing() works regardless of the Child's consumption of any metadata.roN)r r(get_metadata_routing)rps r?3test_feature_union_get_metadata_routing_without_fitrtG s'!#46J6L"M!NOM&&(rArc dtjddgddgddgg}gd}gdd}}td |t j d d j d d fd |t j d d j d d fg}||d }|j ||fi||j||fi||j ||fi|j|fi||jD]4}|dj}t|sJ|D]}td|ddd|6y)z8Test that metadata is routed correctly for FeatureUnion.rr|rr5rrzrnr< sub_trans1rTr sub_trans2rN)r`r-rNrG) rwrr r)rrrNrr]r;rrr*) rrLrMrrrpkwargsr sub_transs r?#test_feature_union_metadata_routingrzO si 1a&1a&1a&)*AA'8M Y[1 tdC&&TD&I  Y[1 tdC&&TD&I   M" -( CFMa%f%M1///Ma%f%//**8}}! I #      rA)r)rF itertoolsrrPrtempfilerrNnumpyrwrsklearnr sklearn.baserrrrr r sklearn.clusterr sklearn.datasetsr sklearn.decompositionr r sklearn.dummyrsklearn.ensemblerrrsklearn.exceptionsrrsklearn.feature_extraction.textrsklearn.feature_selectionrrsklearn.imputersklearn.linear_modelrrrsklearn.metricsrrsklearn.model_selectionrsklearn.neighborsrsklearn.pipeliner r!r"r#sklearn.preprocessingr$r% sklearn.svmr&%sklearn.tests.metadata_routing_commonr'r(r)r* sklearn.utilsr+ sklearn.utils._metadata_requestsr,r-sklearn.utils._testingr.r/r0r1r2r3sklearn.utils.fixesr4sklearn.utils.validationr5r6rrflags writeablerrr8rIrZr`rerkrrrrrrrrrrrrrrrr!r%r*mark parametrizer.rArErKrRr\rirprrrrrrrrrrrrrrrrrrrrr%r1r4rArHrWrYr[rcrmrprrproductparameter_grid_test_verboserrrrrrrrrrrrrrrslicerrrr rrr/rDrFsortedsetrbrergrirlrqrtrzrGrAr?rs   "#&3( H;<(LL440NNE #G/J {! # M e "G [f  ]2 .&=,Qh   , > 636  P 7"<<, 7 ID11.9,:,^ <' L:/& 1V8$+B."}(=>*?*"}(=>M??M?`68 +$ ~');)= > N ~')9); ? * * >@B*SZ#& 3 A: ?Fnb(,&.&,#.LL < ~  }    %:<"3)"3"38VX. 0DEFN  8VX. @TUVN !68,/ ,N 8VX. >?N  *VTV,<=>O  3fdf5EFGO  w/'461BCDT  /'461BDUVWS Y0 b 0e3#<~/1LM 6N 6/.7(.&0,$}(=>;?;'79J&KLGMG( 2Y* A 4 &$E!QK 0123@ (-E?#;<J=.JZ--.-BI-$C.$CX   &% &%Z6m6t6#g,'=9Q*Q#RS-=.T=F6#g,'=9Q*Q#RS-Q.TQ* E B B-.t]&;<-N.=N-%G.%GP-).)-(*LM&.&rA