`L i dZddlZddlZddlZddlmZddlmZm Z ddl m Z ddl m Z ddlmZddlmZmZmZmZmZmZmZmZmZmZmZmZdd lmZdd lm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'dd l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.dd l/m0Z0ejbjed Z3d\Z4Z5e3jme4e5Z7e3jqdde4Z9e3jqdde4Z:e3jme4Z;e3jme4Z<GddeZ=eddZ>ej~jdeeeeeeeeeeeegeddZAej~jdgdeddZBej~jdgdeddZCedd ZDedd!ZEedd"ZFedd#ZGej~jd$e!ej~jd%dd%ggedd&ZHedd'ZIedd(ZJedd)ZKedd*ZLedd+ZMedd,ZNedd-ZOedd.ZPedd/ZQedd0ZRedd1ZSedd2ZTedd3ZUedej~jd4e#d5d67jd8d9:d;fe)d5<d=fe*d5<jee+jd>d>?@dAfgeddBZXej~jdCe+dDd6dEd?eYdFfe+dDdEd6d?eYdGfe*d5<dHdIe*d5<ieYdJfedKdEdieZdLfgeddMZ[eddNZ\eddOZ]eddPZ^eddQZ_eddRZ`eddSZaeddTZbeddUZceddVZdeddWZeeddXZfeddYZgy)Zz Metadata Routing Utility Tests N)config_context) BaseEstimatorclone)UnsetMetadataPassedError)LinearRegression)Pipeline) ConsumingClassifierConsumingRegressorConsumingTransformer MetaRegressorMetaTransformerNonConsumingClassifierWeightedMetaClassifierWeightedMetaRegressor _Registryassert_request_equalassert_request_is_emptycheck_recorded_metadata)metadata_routing)COMPOSITE_METHODSMETHODSSIMPLE_METHODSMethodMetadataRequest MethodPair_MetadataRequesterrequest_is_aliasrequest_is_valid)MetadataRequestMetadataRouter MethodMapping_RoutingNotSupportedMixinget_routing_for_objectprocess_routing)check_is_fitted*)d)size c(eZdZdZdZdZdZdZy)SimplePipelinezA very simple pipeline, assuming the last step is always a predictor. Parameters ---------- steps : iterable of objects An iterable of transformers with the last step being a predictor. c||_yN)steps)selfr/s i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/tests/test_metadata_routing.py__init__zSimplePipeline.__init__Js  c &g|_t|dfi|}|}t|jddD]\}}t |j ||fi|j d|j }|jj||j|fi|j d|j}|jjt |jdj ||fi|jj |S)Nfitstep_) steps_r# enumerater/rr5getappend transform predictor) r0Xy fit_paramsparams X_transformedistep transformers r1r5zSimplePipeline.fitMs  u; ;  CR1 GAt)%+//q$*JJqc{$;$?$?K KK  { +1K11!'eA3K!8!B!BM    %E$**R. ! % %mQ O&:J:J:N:N O  r3c <t||}t|dfi|}t|jddD]4\}}|j|fi|j d|j}6|jdj |fi|jj S)Npredictr6r7)r$r#r9r8r<r:rGr=)r0r>predict_paramsrBrArCrDs r1rGzSimplePipeline.predict_s  yCNC Sb!12 SGAt*DNN1R U1#;0G0Q0QRM S't{{2&&}Q8H8H8P8PQQr3c t|jj}t|jddD][\}}|j d id||idt j ddj ddj ddi]|j |jdt j ddj dd |S) Nownerr6r7method_mappingr5callercalleer<rG)r=rL)r __class____name__r9r/addr )r0routerrCrDs r1get_metadata_routingz#SimplePipeline.get_metadata_routinghsdnn&=&=> CR1 GAt FJJ 1#;% ,E%0E+6Ik:     jjn(? SeS , S )S 4   r3N)rR __module__ __qualname____doc__r2r5rGrUrPr3r1r,r,As$Rr3r,Tenable_metadata_routingc td}t||jjddt||jjddt j t 5t|dddt|d|jjd d t j t 5t|ddddt|dd gttdjtd jttjdd y#1swYxYw#1swYxYw)NtestrJfooparamaliasbarvaluer5excludecarrotTscore estimatorrMrhrL)rrr5 add_requestpytestraisesAssertionErrorrfradd_self_requestrrSr r )requestss r1test_assert_request_is_emptyrp{sV,HH% LL55H% LL58 ~ &*)* He4 NNXT: ~ &9%89 Hug.>?V$  /$? @ (*(?..eE.J  !**99s6 E EEE(rh)registry)rhrqcX|jtt||jvsJy)z=Check that an estimator puts itself in the registry upon fit.N)r5r>r?rqrgs r1$test_estimator_puts_self_in_registryrss&MM!Q  ** ** *r3zval, res))FF)TF)NF)$UNUSED$F)$WARN$Fz invalid-inputF) valid_argTc$t||k(sJyr.)rvalress r1test_request_type_is_aliasr| C C '' 'r3))FT)TT)NT)rtT)ruTrv) alias_argFc$t||k(sJyr.)rrys r1test_request_type_is_validrr}r3cNGddt}t|}|jjddik(sJt tt jjrJt t jtt}|jjdddk(sJ|jjdddk(sJt |tt}|jjdddk(sJt |y)NceZdZddiZy)+test_default_requests..OddEstimator sample_weightTN)rRrVrW$_OddEstimator__metadata_request__fitrPr3r1 OddEstimatorrs T# r3rrTrmetadatarr) rr"r5rolenrrrUr r<r )r odd_request trs_request est_requests r1test_default_requestsrs } )8K ?? # #'> >> >)*@*BCGGPPQQ Q24IIKL()=)?@K ?? # #(    ) )$QU-V VV VK(()<)>?K ?? # #(  K(r3cGddt}Gdd|}Gdd|}t|jddd iit|jddd iiy ) zTest that default requests are correctly overridden regardless of the ASCII order of the class names, hence testing small and capital letter class name starts. Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/28430 ceZdZddiZy)+test_default_request_override..BasegroupsTN)rRrVrW_Base__metadata_request__splitrPr3r1Basers %-t$4!r3rceZdZddiZy).test_default_request_override..class_1r sample_domainN)rRrVrW!_class_1__metadata_request__splitrPr3r1class_1r %-$?!r3rceZdZddiZy).test_default_request_override..Class_1rrN)rRrVrW!_Class_1__metadata_request__splitrPr3r1Class_1rrr3rsplitrrN)rr_get_metadata_request)rrrs r1test_default_request_overridersr5}5@$@@$@ '')Gh5P+Q '')Gh5P+Qr3ctjtd5tt dt dddy#1swYyxYw)Nz Can only route and process inputmatchinvalid_methodr)rkrl TypeErrorr#r my_groupsrPr3r1#test_process_routing_invalid_methodr s; y(J KS+-/? RSSSs AA cGdd}tjtd5t|dtdddy#1swYyxYw)Nc eZdZy):test_process_routing_invalid_object..InvalidObjectN)rRrVrWrPr3r1 InvalidObjectrs r3rz#either implement the routing methodrr5r)rkrlAttributeErrorr#r)rs r1#test_process_routing_invalid_objectrsD   ~-R SB yABBBs AAmethoddefaultci}ttdfi|}||}t|tsJt |j t t k(sJ|j||}||k(sJy)Nr5)r)r#r isinstancedictsetkeysrr:)rr empty_params routed_paramsparams_for_methoddefault_params_for_methods r12test_process_routing_empty_params_get_with_defaultrsL#$7$95QLQM&f- ' .. .  %%' (CL 88 8!. 1 1&' 1 J $(9 99 9r3ctt}|jtttt}|jttt tt }d}tjttj|5|jttt dddtt jd}|jttt t|jddtt jd}|jttt t|jddt tt jd }|jttt t|jddt y#1swY)xYw) Nrgrzo[sample_weight] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.fitrFr5)rparentTrrralternative_weight)r)rrr5r>r? my_weightsr rkrl ValueErrorreescapeset_fit_requestr estimator_)clf err_messages r1test_simple_metadata_routingr+sw !+A+C DCGGAqM !+A+C DCGGAq G+ !+>+@ AC 5 z;)? @0 1J/0 !%'77e7L C GGAq G+CNN5G !%'77d7K CGGAq G+ uU* !%'77.8  C GGAqZG0 uU*A00s '!G//G9c tttjddj ddt t jddjdjd g}d gd gd g}}}|jttt||| t|jdjddtt|jdjdd|t|jd dd|t|jd jdd||j!t|t|jdjdd|y)NTFrrrE inner_weightsrrg outer_weightsr()rrrrrr5)rrrr<r)r,r r rset_transform_requestrr set_predict_requestr5r>r?rrr8 transformer_rrG)pipelinew1w2w3s r1test_nested_routingrdsn 02 $eD&&TE&J  ",. O$$5$9 oOo<  HqcA3BB LL 1y"TV''  ''  5b%%eEQS Qb)'' r3ctttjddj dt t jdjdg}dgd g}}tjttjd  5|jttt|| dddy#1swYyxYw) NTFrrrrgrrr(zIn WeightedMetaRegressor, there is a conflict on sample_weight between what is requested for this estimator and what is requested by its children. You can resolve this conflict by using an alias for the child estimators' requested metadata.r)rrr)r,r r rrrr rkrlrrrr5r>r?r)rrrs r1test_nested_routing_conflictrs 02 $eD&&T&:  ",.>>T>R oOo<  HS1#B  II9   S  QIRr R S S Ss '#CCclttjd}tjt t jd5|jttjttdddttjd}tjt t jd5|jttjttdddy#1swYxYw#1swYyxYw) NTrrz4transform got unexpected argument(s) {'other_param'}r other_paramFz6transform got unexpected argument(s) {'sample_weight'}) r r rrkrlrrrr5r>r?r<r)trss r1test_invalid_metadatars (*@@t@T C yyOP ; 1 z: ; (*@@u@U C yyQR = 1 < ==;;==s4D!4D*D'*D3c&Gddt}Gddt}tjtd5|j dddddddddd d did }t |j ||j d }d dddddd d did }t |j ||jd}ddddddd d did }t |j |y#1swYxYw)Nc*eZdZdddZddddZddiZy).TestDefaultsBadMethodNameN)rmy_paramTrrmy_other_paramr)rRrVrW1_TestDefaultsBadMethodName__metadata_request__fit3_TestDefaultsBadMethodName__metadata_request__score:_TestDefaultsBadMethodName__metadata_request__other_methodrPr3r1TestDefaultsBadMethodNamers0!#  ""% ! -7+=(r3rc*eZdZdddZddddZddiZy)/test_get_metadata_routing..TestDefaultsN)rrTrr)rRrVrW$_TestDefaults__metadata_request__fit&_TestDefaults__metadata_request__score(_TestDefaults__metadata_request__predictrPr3r1 TestDefaultsrs0!"#  ""% ! (24&8#r3rz8'MetadataRequest' object has no attribute 'other_method'rT)rrr)rrr)rfr5rGr)rr)rrkrlrrUrset_score_requestr)rrexpectedests r1test_get_metadata_routingrsL >$6 > 9) 9 X ; "#88:;"! #! % H<<>I . * *M * BC&"! #! % H113X> . ( (t ( _;;s DDct}Gddt}ddi||<Gddt}ddi||<Gddt}ddi||<Gd d t}i||<|jD]e\}}t|jj |k(sJt |jd |j ddgy) NceZdZddiZdZy)6test_setting_default_requests..ExplicitRequestpropNc|Sr.rPr0r>r?kwargss r1r5z:test_setting_default_requests..ExplicitRequest.fit Kr3)rRrVrW'_ExplicitRequest__metadata_request__fitr5rPr3r1ExplicitRequestrs#)4. r3rrceZdZddiZddZy)?test_setting_default_requests..ExplicitRequestOverwriterTNc|Sr.rPr0r>r?rrs r1r5zCtest_setting_default_requests..ExplicitRequestOverwrite.fit*rr3r.)rRrVrW0_ExplicitRequestOverwrite__metadata_request__fitr5rPr3r1ExplicitRequestOverwriter%s$*4. r3rTceZdZddZy)6test_setting_default_requests..ImplicitRequestNc|Sr.rPrs r1r5z:test_setting_default_requests..ImplicitRequest.fit1rr3r.rRrVrWr5rPr3r1ImplicitRequestr/s r3rc0eZdZdejiZddZy)=test_setting_default_requests..ImplicitRequestRemovalrNc|Sr.rPrs r1r5zAtest_setting_default_requests..ImplicitRequestRemoval.fit;rr3r.)rRrVrWrUNUSED._ImplicitRequestRemoval__metadata_request__fitr5rPr3r1ImplicitRequestRemovalr 6s$*+;+B+B"C r3r r5rc)rritemsr"r5rorrU) test_casesrrrr Klassros r1test_setting_default_requestsrsJ-$*4.J=-3D>J'(- $*4.J*,J%&%++- x%eg.22;;xGGG < < >N  D$ r3cGddt}tjtd5|j dddy#1swYyxYw)zFTest that removing a metadata using UNUSED which doesn't exist raises.c.eZdZdejiZdZy)Ftest_removing_non_existing_param_raises..InvalidRequestRemovalrc|Sr.rPrs r1r5zJtest_removing_non_existing_param_raises..InvalidRequestRemoval.fitOrr3N)rRrVrWrr -_InvalidRequestRemoval__metadata_request__fitr5rPr3r1InvalidRequestRemovalrJs$*+;+B+B"C r3rzTrying to remove parameterrN)rrkrlrrU)rs r1'test_removing_non_existing_param_raisesrFsC  z)E F7446777s A  Actdd}tjtd5|j ddddd|j dd|j ddik(sJ|j dd |j dd ik(sJ|j dd |j dd ik(sJ|j dd|j dd ik(sJ|j dd |j dd ik(sJ|j d dhk(sJ|j d d hk(sJy#1swYxYw) Nr\r5rKrzThe alias you're setting forrr]gffffff?r^FTra) return_alias)rrkrlrrjro_get_param_names)mmrs r1test_method_metadata_requestrVs> fU ;C z)G H0 e3/0OO%tO, < )) )OO%tO, < )) )   U  3w >> >   T  2ug == =00s D44D=cGddt}ttdtttt d}|j j ddt|}t|d |j jddik(sJt|}t|d |j jd dik(sJy) NceZdZddiZy)-test_get_routing_for_object..ConsumerrN)rRrVrW _Consumer__metadata_request__fitrPr3r1Consumerr!ms #)4.r3r#r\rJr]rar^r5rcr)rrr"objectrr5rjro)r#mr mr_factorys r1test_get_routing_for_objectr'ks1=12489268<= v &BFFU%0'+JJ6 >> " "uen 44 4  +BB. 66??vtn ,, ,r3cltd}|jddhtk(sJtd}|jj dd|jddhdhk(sJtd}|jj dd|jdddhdhk(sJy ) z@Test that MetadataRequest().consumes() method works as expected.r\rJr5r]rrATr^raN)rconsumesrrr5rj)requests r1%test_metadata_request_consumes_methodr,~s6*G   5%  9SU BB BF+G KK%t4   5%  9eW DD DF+G KK%u5   5%  @UG KK Kr3c ttjddhdhfttjdddhdhfg}|D],\}}}|jj d||k(r,Jy) z=Test that MetadataRouter().consumes method works as expected.Trrgrrr5r)N)rr rrUr*)casesobjinputoutputs r1$test_metadata_router_consumes_methodr2s ",.>>T>R       ",.>>".?  ? + N  E&$YUF'')22%2NRXXXXYr3cGddt}tjtd5|t j dj tttdddy#1swYyxYw)Nc(eZdZdejiZy)>test_metaestimator_warnings..WeightedMetaRegressorWarnrN)rRrVrWrWARN1_WeightedMetaRegressorWarn__metadata_request__fitrPr3r1WeightedMetaRegressorWarnr5#24D4I4I"Jr3r84Support for .* has recently been added to this classrFrrg) rrkwarns UserWarningrrr5r>r?r)r8s r1test_metaestimator_warningsr=shK$9K Q . "&(88u8M #a*# - ...s AA44A=cGddt}tjtd5t |j t ttdddy#1swYyxYw)Nc(eZdZdejiZy)7test_estimator_warnings..ConsumingRegressorWarnrN)rRrVrWrr6._ConsumingRegressorWarn__metadata_request__fitrPr3r1ConsumingRegressorWarnr@r9r3rBr:rrgr) r rkr;r<r r5r>r?r)rBs r1test_estimator_warningsrCs_K!3K Q    6 89== q  >    s 0A$$A-z obj, stringr\r5rr]rar^z{'foo': 'bar'}rJz{}rGrMria*{'estimator': {'mapping': [{'caller': 'predict', 'callee': 'predict'}], 'router': {'fit': {'sample_weight': None, 'metadata': None}, 'partial_fit': {'sample_weight': None, 'metadata': None}, 'predict': {'sample_weight': None, 'metadata': None}, 'score': {'sample_weight': None, 'metadata': None}}}}c$t||k(sJyr.)str)r/strings r1test_string_representationsrGs> s8v  r3z%obj, method, inputs, err_cls, err_msgrSinvalidz Given calleez Given callerrnr/z@Given `obj` is neither a `MetadataRequest` nor does it implementrzUnexpected argsctj||5t||di|dddy#1swYyxYw)NrrP)rkrlgetattr)r/rinputserr_clserr_msgs r1test_validationsrNs<F wg .'V&v&'''s4=ctjddjdd}t|}|ddk(sJ|ddk(sJt}tD]/}|j||t |||j vr/Jt |j t tk(sJtjdd}t|d k(sJy) Nr5r<rMr)r5r<r)r5r5rfz([{'caller': 'score', 'callee': 'score'}])r rSlistrr_routesrrepr)mmmm_listrs r1test_methodmappingrU s  E+ . E% ( 2hG 1:- -- - 1: '' ' B8 fV,&&)RZZ7778 rzz?c'l ** *   GG  rr`ra>rrrar) rrnrr rrSr r rErr]s r1%test_metadata_routing_get_param_namesrc_sr V$   !,>,@ A Q Q, R  $&6617)?..eE.J   F  M M M  " "4U #  : ;; ;  " "5e #  ; << <  " "5d #  ) * ++ +  " "4T #   5d !   r3c Gddt}tD]}t|d|dsJGddt}tD]}t|d|dsJtD]}t|d|drJy)NcVeZdZdZdZdZdZdZdZdZ dZ d Z dd Z d Z d Zy )/test_method_generation..SimpleEstimatorcyr.rPr0r>r?s r1r5z3test_method_generation..SimpleEstimator.fit r3cyr.rPrhs r1 fit_transformz=test_method_generation..SimpleEstimator.fit_transformrir3cyr.rPrhs r1 fit_predictz;test_method_generation..SimpleEstimator.fit_predictrir3cyr.rPrhs r1 partial_fitz;test_method_generation..SimpleEstimator.partial_fitrir3cyr.rPr0r>s r1rGz7test_method_generation..SimpleEstimator.predictrir3cyr.rPrqs r1 predict_probaz=test_method_generation..SimpleEstimator.predict_probarir3cyr.rPrqs r1predict_log_probazAtest_method_generation..SimpleEstimator.predict_log_probarir3cyr.rPrqs r1decision_functionzAtest_method_generation..SimpleEstimator.decision_functionrir3cyr.rPrhs r1rfz5test_method_generation..SimpleEstimator.scorerir3Ncyr.rPrhs r1rz5test_method_generation..SimpleEstimator.splitrir3cyr.rPrqs r1r<z9test_method_generation..SimpleEstimator.transformrir3cyr.rPrqs r1inverse_transformzAtest_method_generation..SimpleEstimator.inverse_transformrir3r.rRrVrWr5rkrmrorGrsrurwrfrr<r|rPr3r1SimpleEstimatorrfs>            r3r~set__requestcleZdZddZddZddZddZddZddZddZ dd Z dd Z dd Z dd Z dd Zy)rfNcyr.rPr0r>r?rs r1r5z3test_method_generation..SimpleEstimator.fitrir3cyr.rPrs r1rkz=test_method_generation..SimpleEstimator.fit_transformrir3cyr.rPrs r1rmz;test_method_generation..SimpleEstimator.fit_predictrir3cyr.rPrs r1roz;test_method_generation..SimpleEstimator.partial_fitrir3cyr.rPr0r>rs r1rGz7test_method_generation..SimpleEstimator.predictrir3cyr.rPrs r1rsz=test_method_generation..SimpleEstimator.predict_probarir3cyr.rPrs r1ruzAtest_method_generation..SimpleEstimator.predict_log_probarir3cyr.rPrs r1rwzAtest_method_generation..SimpleEstimator.decision_functionrir3cyr.rPrs r1rfz5test_method_generation..SimpleEstimator.scorerir3cyr.rPrs r1rz5test_method_generation..SimpleEstimator.splitrir3cyr.rPrs r1r<z9test_method_generation..SimpleEstimator.transformrir3cyr.rPrs r1r|zAtest_method_generation..SimpleEstimator.inverse_transformrir3r.NNr}rPr3r1r~z/test_method_generation..SimpleEstimators>            r3)rrhasattrrr)r~rs r1test_method_generationrs $-$LG?,VHH.EFFFG$-$N$G?,VHH.EFFFG!C(D*ABBBCr3c,Gddt}|}|jjjddddk(sJ|jjjdddk(sJ|j ddt jtd 5|jjddd|jd t jtd 5|jjddd|jdd|jj|jd |jjjddddk(sJy#1swYxYw#1swYxYw) Nc$eZdZddZddZddZy)/test_composite_methods..SimpleEstimatorNcyr.rP)r0r>r?r]ras r1r5z3test_composite_methods..SimpleEstimator.fitrir3cyr.rP)r0r>r]ras r1rGz7test_composite_methods..SimpleEstimator.predictrir3cyr.rP)r0r>rs r1r<z9test_composite_methods..SimpleEstimator.transformrir3rr.)rRrVrWr5rGr<rPr3r1r~rs   r3r~)rar]r)rar]Tr\)r]raz!Conflicting metadata requests forr)rar) rrUrkrormrrkrlrrr)r~rs r1test_composite_methodsrs -   C  # # % 3 3 < <A    # # % 1 1 : :dSW>X XX XDf- z)L M/   "../ % z)L M/   "../ &1**$/  # # % 3 3 < <A  #// //sE>.F >F Fctd5tjtd5t j dddddddy#1swYxYw#1swYyxYw)zCTest that when feature flag disabled, set_{method}_requests raises.FrYzThis method is only availablerTrN)rrkrl RuntimeErrorr rrPr3r1!test_no_feature_flag_raises_errorrsg  6F ]]r?rPr3r1test_none_metadata_passedr's".0155a$5Or3c<Gddtt}t|jtt t jtd5t|jtt tdddy#1swYyxYw)zTest that when no metadata is passed, having a meta-estimator which does not yet support metadata routing works. Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/28246 ceZdZddZy)0test_no_metadata_always_works..EstimatorNc|Sr.rP)r0r>r?rs r1r5z4test_no_metadata_always_works..Estimator.fit6rr3r.rrPr3r1 Estimatorr5 r3rrgz3Estimator has not implemented metadata routing yet.rrN) r!rr r5r>r?rkrlNotImplementedErrorr)rs r1test_no_metadata_always_worksr-ss-} IK(,,Q2 #X K  ,00A 0JKKKs 0BBctt}t|g}tjd}t j t|5|jttddddy#1swYyxYw)z}Test that UnsetMetadataPassedError raises the correct error message when set_{method}_request is not set in nested cases.rga [metadata] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.fit, which is used within WeightedMetaClassifier.fit. Call `ConsumingClassifier.set_fit_request({metadata}=True/False)` for each metadata you want to request/ignore.rblahrN) rr r,rrrkrlrr5r>r?) weighted_metapipemsgs r1%test_unsetmetadatapassederror_correctrBsi+5H5JKM =/ *D )) 0 C /s ;( A'(((s A77Bct}td|fg}tjd}t j t |5|jttddddy#1swYyxYw)zTest that UnsetMetadataPassedError raises the correct error message when composite metadata request methods are not set in nested cases.consuming_transformeraA[metadata] are passed but are not explicitly set as requested or not requested for ConsumingTransformer.fit_transform, which is used within Pipeline.fit_transform. Call `ConsumingTransformer.set_fit_request({metadata}=True/False).set_transform_request({metadata}=True/False)` for each metadata you want to request/ignore.rrrN) r rrrrkrlrrkr>r?)rrrs r1;test_unsetmetadatapassederror_correct_for_composite_methodsrSso12 -/DEF GD )) 9 C /s ;2 1a&1222s A//A8cGddt}tjd}tjt |5|j dddd|j |_|j dtjt |5|j ddddy#1swYlxYw#1swYyxYw)aTests that if the set_{method}_request is unbound, it still works. Also test that passing positional arguments to the set_{method}_request fails with the right TypeError message. Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/28632 ceZdZddZy)(test_unbound_set_methods_work..ANc|Sr.rPrs r1r5z,test_unbound_set_methods_work..A.fitqrr3r.rrPr3r1Arprr3rz>set_fit_request() takes 0 positional argument but 1 were givenrTNr)rrrrkrlrr)r error_messages r1test_unbound_set_methods_workrfsMIIHM y 6" D!" ))ACd+ y 6" D!""""""sC"CC C)hrXrnumpynprksklearnr sklearn.baserrsklearn.exceptionsrsklearn.linear_modelrsklearn.pipeliner%sklearn.tests.metadata_routing_commonr r r r r rrrrrrr sklearn.utilsr sklearn.utils._metadata_requestsrrrrrrrrsklearn.utils.metadata_routingrrr r!r"r#sklearn.utils.validationr$random RandomStaterngNMrandr>randintr?rrmy_other_weightsr,rpmark parametrizersr|rrrrrrrrrrrrrrr'r,r2r=rCrjrSrGrrrNrUrZr^rcrrrrrrrrrPr3r1rs  "81%    +   5iiB 1HHQNKK11K KK2AK & XXa[ 88A;7]7t- . FY[1IK0ik2)<)>U(:(.>(--.-$- L. L-Y.Y6- .. .-  .  - "u = I I5 J     & )   ( , ,,.,22)I2V -  @ 8-.9.<+ O  2     O  E 2      (  N0 1  N   !       - B-'.C D' -B.B*-C.C:-.<-).)X-ZC.ZCz-1.1h-F.F-P.P -K.K(- (. ( -2.2$-"."r3