Ë
    ÜÍ:j¤¶  ã                   óŠ
  — d 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	 ddl
mZ ddlmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZ dd	lmZ dd
lm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0 ejb                  je                  d«      Z3d\  Z4Z5e3jm                  e4e5«      Z7e3jq                  dde4¬«      Z9e3jq                  dde4¬«      Z:e3jm                  e4«      Z;e3jm                  e4«      Z< G d„ de«      Z= ed¬«      d„ «       Z>ej~                  j�                  d e e«       ¬«       e e«       ¬«       e e«       ¬«       e e«        e«       ¬«       e e«        e«       ¬«      g«       ed¬«      d„ «       «       ZAej~                  j�                  dg d¢«       ed¬«      d„ «       «       ZBej~                  j�                  dg d¢«       ed¬«      d„ «       «       ZC ed¬«      d „ «       ZD ed¬«      d!„ «       ZE ed¬«      d"„ «       ZF ed¬«      d#„ «       ZGej~                  j�                  d$e!«      ej~                  j�                  d%dd%g g«       ed¬«      d&„ «       «       «       ZH ed¬«      d'„ «       ZI ed¬«      d(„ «       ZJ ed¬«      d)„ «       ZK ed¬«      d*„ «       ZL ed¬«      d+„ «       ZM ed¬«      d,„ «       ZN ed¬«      d-„ «       ZOd.„ ZP ed¬«      d/„ «       ZQ ed¬«      d0„ «       ZR ed¬«      d1„ «       ZS ed¬«      d2„ «       ZT ed¬«      d3„ «       ZU ed¬«      d4„ «       ZV ed¬«      ej~                  j�                  d5 e#d6d7¬8«      j¯                  d9d:¬;«      d<f e)d6¬=«      d>f e*d6¬=«      j±                   e«        e+«       j±                  d?d?¬@«      ¬A«      dBfg«       ed¬«      dC„ «       «       «       ZYej~                  j�                  dD e+«       dEd7dFd@œeZdGf e+«       dEdFd7d@œeZdHf e*d6¬=«      dIdJ e*d6¬=«      ieZdKf e«       dLdFdie[dMfg«       ed¬«      dN„ «       «       Z\ ed¬«      dO„ «       Z] ed¬«      dP„ «       Z^ ed¬«      dQ„ «       Z_ ed¬«      dR„ «       Z` ed¬«      dS„ «       Za ed¬«      dT„ «       Zb ed¬«      dU„ «       Zc ed¬«      dV„ «       Zd ed¬«      dW„ «       Ze ed¬«      dX„ «       Zf ed¬«      dY„ «       Zg ed¬«      dZ„ «       Zh G d[„ d\«      Zid]„ Zjd^„ Zkd_„ Zl ed¬«      d`„ «       Zm ed¬«      da„ «       Zn ed¬«      db„ «       Zo ed¬«      dc„ «       Zpy)dz 
Metadata Routing Utility Tests
é    N)Úconfig_context)ÚBaseEstimatorÚclone)ÚUnsetMetadataPassedError)ÚLinearRegression)ÚPipeline)ÚConsumingClassifierÚConsumingRegressorÚConsumingTransformerÚMetaRegressorÚMetaTransformerÚNonConsumingClassifierÚWeightedMetaClassifierÚWeightedMetaRegressorÚ	_RegistryÚassert_request_equalÚassert_request_is_emptyÚcheck_recorded_metadata)Úmetadata_routing)ÚCOMPOSITE_METHODSÚMETHODSÚSIMPLE_METHODSÚMethodMetadataRequestÚ
MethodPairÚ_MetadataRequesterÚrequest_is_aliasÚrequest_is_valid)ÚMetadataRequestÚMetadataRouterÚMethodMappingÚ_RoutingNotSupportedMixinÚget_routing_for_objectÚprocess_routing)Úcheck_is_fittedé*   )éd   é   é   )Úsizeé
   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚSimplePipelinezÓA 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                 ó   — || _         y ©N)Ústeps)Úselfr/   s     úx/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/sklearn/tests/test_metadata_routing.pyÚ__init__zSimplePipeline.__init__J   s	   € Øˆ�
ó    c           	      ó&  — g | _         t        | dfi |¤Ž}|}t        | j                  d d «      D ]ˆ  \  }} t	        |«      j
                  ||fi |j                  d|› �«      j
                  ¤Ž}| j                   j                  |«        |j                  |fi |j                  d|› �«      j                  ¤Ž}ŒŠ | j                   j                   t	        | j                  d   «      j
                  ||fi |j                  j
                  ¤Ž«       | S )NÚfitéÿÿÿÿÚstep_)
Ústeps_r#   Ú	enumerater/   r   r5   ÚgetÚappendÚ	transformÚ	predictor)	r0   ÚXÚyÚ
fit_paramsÚparamsÚX_transformedÚiÚstepÚtransformers	            r1   r5   zSimplePipeline.fitM   s  € ØˆŒÜ   uÑ;°
Ñ;ˆØˆÜ  §¡¨C¨R Ó1ò 	‰GˆAˆtØ)œ% ›+Ÿ/™/Ø˜qñØ$*§J¡J°°q°c¨{Ó$;×$?Ñ$?ñˆKð �K‰K×Ñ˜{Ô+Ø1˜K×1Ñ1ØñØ!'§¡¨e°A°3¨KÓ!8×!BÑ!Bñ‰Mð	ð 	�‰×ÑØ%ŒE�$—*‘*˜R‘.Ó!×%Ñ% m°QÑO¸&×:JÑ:J×:NÑ:NÑOô	
ð ˆr3   c           	      ó<  — t        | «       |}t        | dfi |¤Ž}t        | j                  d d «      D ]4  \  }} |j                  |fi |j                  d|› �«      j                  ¤Ž}Œ6  | j                  d   j                  |fi |j                  j                  ¤ŽS )NÚpredictr6   r7   )r$   r#   r9   r8   r<   r:   rG   r=   )r0   r>   Úpredict_paramsrB   rA   rC   rD   s          r1   rG   zSimplePipeline.predict_   s�   € Ü˜ÔØˆÜ   yÑC°NÑCˆÜ  §¡¨S¨bÐ!1Ó2ò 	S‰GˆAˆtØ*˜DŸN™N¨1ÑR°·
±
¸UÀ1À#¸;Ó0G×0QÑ0QÑR‰Mð	Sð 'ˆt�{‰{˜2‰×&Ñ& }ÑQ¸×8HÑ8H×8PÑ8PÑQÐQr3   c           
      óž  — t        | ¬«      }t        | j                  d d «      D ][  \  }} |j                  d
i d|› �|i¤dt	        «       j                  dd¬«      j                  dd¬«      j                  dd¬«      i¤Ž Œ] |j                  | j                  d   t	        «       j                  dd¬«      j                  dd¬«      ¬	«       |S )N©Úownerr6   r7   Úmethod_mappingr5   ©ÚcallerÚcalleer<   rG   )r=   rL   © )r   r9   r/   Úaddr    )r0   ÚrouterrC   rD   s       r1   Úget_metadata_routingz#SimplePipeline.get_metadata_routingh   sÉ   € Ü dÔ+ˆÜ  §¡¨C¨R Ó1ò 	‰GˆAˆtØˆF�J‰Jñ Ø˜1˜#�; Ð%ñä,›ß‘˜E¨%�Ó0ß‘˜E¨+�Ó6ß‘˜I¨k�Ó:ôð	ð 	�
‰
Ø—j‘j ‘nÜ(›?ß‰S˜ eˆSÓ,ß‰S˜	¨)ˆSÓ4ð	 	ô 	
ð ˆr3   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   r5   rG   rS   rP   r3   r1   r,   r,   A   s   „ ñòòò$Rór3   r,   T©Úenable_metadata_routingc            	      óÖ  — t        d¬«      } t        | «       | j                  j                  dd ¬«       t        | «       | j                  j                  dd¬«       t	        j
                  t        «      5  t        | «       d d d «       t        | d¬«       | j                  j                  d	d
¬«       t	        j
                  t        «      5  t        | d¬«       d d d «       t        | ddg¬«       t        t        d¬«      j                  t        d ¬«      «      j                  t        «       t        «       j                  dd¬«      ¬«      «       y # 1 sw Y   ŒÒxY w# 1 sw Y   Œ…xY w)NÚtestrJ   Úfoo©ÚparamÚaliasÚbarÚvaluer5   ©ÚexcludeÚcarrotTÚscore©Ú	estimatorrM   ©rg   rL   )r   r   r5   Úadd_requestÚpytestÚraisesÚAssertionErrorre   r   Úadd_self_requestr   rQ   r
   r    )Úrequestss    r1   Útest_assert_request_is_emptyro   {   s  € ä VÔ,€HÜ˜HÔ%à‡L�L×Ñ 5°ÐÔ5ä˜HÔ%à‡L�L×Ñ 5°ÐÔ8Ü	�‰”~Ó	&ñ *ä Ô)÷*ô
 ˜H¨eÕ4à‡N�N×Ñ X°TÐÔ:Ü	�‰”~Ó	&ñ 9ä °%Õ8÷9ô
 ˜H¨u°gÐ.>Õ?ô Ü˜VÔ$ß	Ñ	Ô/¸$Ô?Ó	@ß	‰Ü(Ó*Ü(›?×.Ñ.°eÀEÐ.ÓJð 
ó 

õ÷!*ð *ú÷9ð 9ús   Á6EÃEÅEÅE(rg   )Úregistry)rg   rp   c                 ój   — t        | «      j                  t        t        «      } | | j                  v sJ ‚y)z=Check that an estimator puts itself in the registry upon fit.N)r   r5   r>   r?   rp   rf   s    r1   Ú$test_estimator_puts_self_in_registryrr   Ÿ   s/   € ô �iÓ ×$Ñ$¤Q¬Ó*€IØ˜	×*Ñ*Ñ*Ð*Ñ*r3   zval, res))FF)TF)NF)ú$UNUSED$F)ú$WARN$F©zinvalid-inputF)Ú	valid_argTc                 ó$   — t        | «      |k(  sJ ‚y r.   )r   ©ÚvalÚress     r1   Útest_request_type_is_aliasr{   °   ó   € ô ˜CÓ  CÒ'Ð'Ñ'r3   ))FT)TT)NT)rs   T)rt   Tru   )Ú	alias_argFc                 ó$   — t        | «      |k(  sJ ‚y r.   )r   rx   s     r1   Útest_request_type_is_validr   Â   r|   r3   c                  óN  —  G d„ dt         «      } t         | «       «      }|j                  j                  ddik(  sJ ‚t	        t        t        «       «      j                  j                  «      rJ ‚t        t        «       j                  «       «       t        t        «       «      }|j                  j                  d d dœk(  sJ ‚|j                  j                  d d dœk(  sJ ‚t        |«       t        t        «       «      }|j                  j                  d d dœk(  sJ ‚t        |«       y )Nc                   ó   — e Zd ZddiZdd„Zy)ú+test_default_requests.<locals>.OddEstimatorÚsample_weightTNc                 ó   — | S r.   rP   ©r0   r>   r?   s      r1   r5   z/test_default_requests.<locals>.OddEstimator.fitÜ   ó   € ØˆKr3   r.   )rT   rU   rV   Ú$_OddEstimator__metadata_request__fitr5   rP   r3   r1   ÚOddEstimatorr‚   Ö   s   „ ð ˜Tð#
Ðô
	r3   rˆ   rƒ   T©rƒ   Úmetadata©rŠ   rƒ   )r   r"   r5   rn   Úlenr   r   rS   r   r<   r	   )rˆ   Úodd_requestÚtrs_requestÚest_requests       r1   Útest_default_requestsr�   Ô   s  € ô”}ô ô )©«Ó8€KØ�?‰?×#Ñ#¨¸Ð'>Ò>Ð>Ð>ô Ô)Ô*@Ó*BÓC×GÑG×PÑPÔQÐQÐQÜÔ2Ó4×IÑIÓKÔLä(Ô)=Ó)?Ó@€KØ�?‰?×#Ñ#ØØñ(ò ð ð ð × Ñ ×)Ñ)¸$ÐQUÑ-VÒVÐVÐVÜ˜KÔ(ä(Ô)<Ó)>Ó?€KØ�?‰?×#Ñ#ØØñ(ò ð ð ô ˜KÕ(r3   c                  óÚ   —  G d„ dt         «      }  G d„ d| «      } G d„ d| «      }t         |«       j                  «       ddd	ii«       t         |«       j                  «       ddd	ii«       y
)zþTest 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
    c                   ó   — e Zd ZddiZdd„Zy)ú+test_default_request_override.<locals>.BaseÚgroupsTNc                  ó   — y r.   rP   r…   s      r1   Úsplitz1test_default_request_override.<locals>.Base.split   ó   € Ør3   r.   )rT   rU   rV   Ú_Base__metadata_request__splitr–   rP   r3   r1   ÚBaser“   ý   s   „ Ø%-¨tÐ$4Ð!ô	r3   r™   c                   ó   — e Zd ZddiZdd„Zy)ú.test_default_request_override.<locals>.class_1r”   Úsample_domainNc                  ó   — y r.   rP   r…   s      r1   r–   z4test_default_request_override.<locals>.class_1.split  r—   r3   r.   )rT   rU   rV   Ú!_class_1__metadata_request__splitr–   rP   r3   r1   Úclass_1r›     ó   „ Ø%-¨Ð$?Ð!ô	r3   rŸ   c                   ó   — e Zd ZddiZdd„Zy)ú.test_default_request_override.<locals>.Class_1r”   rœ   Nc                  ó   — y r.   rP   r…   s      r1   r–   z4test_default_request_override.<locals>.Class_1.split  r—   r3   r.   )rT   rU   rV   Ú!_Class_1__metadata_request__splitr–   rP   r3   r1   ÚClass_1r¢   	  r    r3   r¥   r–   r”   rœ   N)r   r   Ú_get_metadata_request)r™   rŸ   r¥   s      r1   Útest_default_request_overrider§   ö   sn   € ôŒ}ô ô�$ô ô�$ô ô Ù‹	×'Ñ'Ó)¨G°hÀÐ5PÐ+Qôô Ù‹	×'Ñ'Ó)¨G°hÀÐ5PÐ+Qõr3   c                  ó˜   — t        j                  t        d¬«      5  t        t	        «       dt
        ¬«       d d d «       y # 1 sw Y   y xY w)Nz Can only route and process input©ÚmatchÚinvalid_method©r”   )rj   rk   Ú	TypeErrorr#   r	   Ú	my_groupsrP   r3   r1   Ú#test_process_routing_invalid_methodr¯     s;   € ä	�‰”yÐ(JÔ	Kñ SÜÔ+Ó-Ð/?Ì	ÕR÷S÷ Sñ Sús   œA Á A	c                  ó¦   —  G d„ d«      } t        j                  t        d¬«      5  t         | «       dt        ¬«       d d d «       y # 1 sw Y   y xY w)Nc                   ó   — e Zd Zy)ú:test_process_routing_invalid_object.<locals>.InvalidObjectN)rT   rU   rV   rP   r3   r1   ÚInvalidObjectr²     s   „ Ør3   r³   z#either implement the routing methodr©   r5   r¬   )rj   rk   ÚAttributeErrorr#   r®   )r³   s    r1   Ú#test_process_routing_invalid_objectrµ     sD   € ÷ñ ô 
�‰”~Ð-RÔ	Sñ BÜ™›¨´yÕA÷B÷ Bñ Bús   ¦AÁAÚmethodÚdefaultc                 óê   — i }t        t        «       dfi |¤Ž}||    }t        |t        «      sJ ‚t	        |j                  «       «      t	        t        «      k(  sJ ‚|j                  | |¬«      }||k(  sJ ‚y )Nr5   )r·   )r#   r	   Ú
isinstanceÚdictÚsetÚkeysr   r:   )r¶   r·   Úempty_paramsÚrouted_paramsÚparams_for_methodÚdefault_params_for_methods         r1   Ú2test_process_routing_empty_params_get_with_defaultrÁ   &  s„   € ð €LÜ#Ô$7Ó$9¸5ÑQÀLÑQ€Mð & fÑ-ÐÜÐ'¬Ô.Ð.Ð.ÜÐ ×%Ñ%Ó'Ó(¬C´«LÒ8Ð8Ð8ð !.× 1Ñ 1°&À'Ð 1Ó JÐØ$Ð(9Ò9Ð9Ñ9r3   c                  óø  — t        t        «       ¬«      } | j                  t        t        «       t        t        «       ¬«      } | j                  t        t        t
        ¬«       t        t        «       ¬«      } d}t        j                  t        t        j                  |«      ¬«      5  | j                  t        t        t
        ¬«       d d d «       t        t        «       j                  d¬«      ¬«      } | j                  t        t        t
        ¬«       t        | j                  dd¬«       t        t        «       j                  d¬«      ¬«      } | j                  t        t        t
        ¬«       t        | j                  ddt
        ¬	«       t        t        «       j                  d
¬«      ¬«      } | j                  t        t        t
        ¬«       t        | j                  ddt
        ¬	«       y # 1 sw Y   �Œ)xY w)Nrf   ©rƒ   zo[sample_weight] are passed but are not explicitly set as requested or not requested for ConsumingClassifier.fitr©   Fr5   )r¶   ÚparentT©r¶   rÄ   rƒ   Úalternative_weight)rÆ   )r   r   r5   r>   r?   Ú
my_weightsr	   rj   rk   Ú
ValueErrorÚreÚescapeÚset_fit_requestr   Ú
estimator_)ÚclfÚerr_messages     r1   Útest_simple_metadata_routingrÏ   7  sw  € ô
 !Ô+AÓ+CÔ
D€CØ‡G�GŒAŒq„Mô !Ô+AÓ+CÔ
D€CØ‡G�GŒAŒq¤
€GÔ+ô !Ô+>Ó+@Ô
A€Cð	5ð ô 
�‰”z¬¯©°;Ó)?Ô	@ñ 0Ø�‰””1¤JˆÔ/÷0ô !Ü%Ó'×7Ñ7ÀeÐ7ÓLô€Cð ‡G�GŒAŒq¤
€GÔ+Ü˜CŸN™N°5ÀÕGô !Ü%Ó'×7Ñ7ÀdÐ7ÓKô€Cð ‡G�GŒAŒq¤
€GÔ+ÜØ�‰˜u¨UÄ*õô
 !Ü%Ó'×7Ñ7Ø.ð 8ó 
ô€Cð
 ‡G�GŒAŒq¤Z€GÔ0ÜØ�‰˜u¨UÄ*ö÷A0ñ 0ús   Â'!G/Ç/G9c            	      ó  — t        t        t        «       j                  dd¬«      j	                  dd¬«      ¬«      t        t        «       j                  dd¬«      j                  d¬«      ¬«      j                  d	¬«      g«      } d
gdgdg}}}| j                  t        t        t        |||¬«       t        | j                  d   j                  ddt        ¬«       t        | j                  d   j                  dd|¬«       t        | j                  d
   dd|¬«       t        | j                  d
   j                  dd|¬«       | j!                  t        |¬«       t        | j                  d   j                  dd|¬«       y )NTFr‹   r‰   ©rE   Úinner_weightsrÃ   rf   Úouter_weightsé   r(   é   )rŠ   rƒ   rÓ   rÒ   r   r5   )r¶   rÄ   rŠ   r<   rÅ   )r,   r   r   rË   Úset_transform_requestr   r
   Úset_predict_requestr5   r>   r?   r®   r   r8   Útransformer_rÌ   rG   )ÚpipelineÚw1Úw2Úw3s       r1   Útest_nested_routingrÝ   p  sn  € ô äÜ0Ó2ß ‘¨$¸e�ÓDß&Ñ&°TÀEÐ&ÓJôô
 "Ü,Ó.ß ‘¨È�ÓOß$Ñ$°5Ð$Ó9ô÷ ‰o¨OˆoÓ<ð	
ó€Hð ��q�c˜A˜3ˆBˆ€BØ‡L�LÜ	Œ1”y°À"ÐTVð ô ô Ø�‰˜Ñ×'Ñ'ØØÜõ	ô Ø�‰˜Ñ×'Ñ'ØØØõ	ô Ø�‰˜Ñ 5°Àbõô Ø�‰˜Ñ×%Ñ%¨e¸EÐQSõð ×Ñ”Q bÐÔ)ÜØ�‰˜Ñ×'Ñ'ØØØö	r3   c                  ó¾  — t        t        t        «       j                  dd¬«      j	                  d¬«      ¬«      t        t        «       j                  d¬«      ¬«      j                  d¬«      g«      } dgd	g}}t        j                  t        t        j                  d
«      ¬«      5  | j                  t        t        t        ||¬«       d d d «       y # 1 sw Y   y xY w)NTFr‹   rÃ   rÑ   rf   rÓ   rÔ   r(   zðIn 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©   )rŠ   rƒ   rÓ   )r,   r   r   rË   rÖ   r   r
   rj   rk   rÈ   rÉ   rÊ   r5   r>   r?   r®   )rÙ   rÚ   rÛ   s      r1   Útest_nested_routing_conflictrß   ¡  sÇ   € ô äÜ0Ó2ß ‘¨$¸e�ÓDß&Ñ&°TÐ&Ó:ôô
 "Ü,Ó.×>Ñ>ÈTÐ>ÓRôç‰o¨OˆoÓ<ð		
ó€Hð ˆS�1�#ˆ€BÜ	�‰Üä�I‰Ið9óô

ñ Sð 	�‰”Qœ¤I¸RÈrˆÔR÷S÷ Sñ Sús   Â'#CÃCc                  ól  — t        t        «       j                  d¬«      ¬«      } t        j                  t
        t        j                  d«      ¬«      5  | j                  t        t        «      j                  t        t        ¬«       d d d «       t        t        «       j                  d¬«      ¬«      } t        j                  t
        t        j                  d«      ¬«      5  | j                  t        t        «      j                  t        t        ¬«       d d d «       y # 1 sw Y   Œ˜xY w# 1 sw Y   y xY w)	NTrÃ   rÑ   z4transform got unexpected argument(s) {'other_param'}r©   ©Úother_paramFz6transform got unexpected argument(s) {'sample_weight'})r   r   rÖ   rj   rk   r­   rÉ   rÊ   r5   r>   r?   r<   rÇ   )Útrss    r1   Útest_invalid_metadatarä   ¿  së   € ô Ü(Ó*×@Ñ@ÈtÐ@ÓTô€Cô 
�‰ÜÜ�y‰yÐOÓPô
ñ ;ð 	�‰””1‹×Ñ¤¬zÐÔ:÷	;ô Ü(Ó*×@Ñ@ÈuÐ@ÓUô€Cô 
�‰ÜÜ�y‰yÐQÓRô
ñ =ð 	�‰””1‹×Ñ¤´ÐÔ<÷	=ð =÷;ð ;ú÷=ð =ús   Á4DÃ!4D*ÄD'Ä*D3c                  ó~  —  G d„ dt         «      } dd d dœd d dœddidœ}t         | «       j                  «       |«        | «       j                  d¬	«      }dd d dœd d dœddidœ}t        |j                  «       |«        | «       j	                  d¬
«      }dd d dœd ddœddidœ}t        |j                  «       |«       y )Nc                   ó@   — e Zd ZdddœZddddœZddiZd	d„Zd	d„Zd„ Zy)
ú/test_get_metadata_routing.<locals>.TestDefaultsN)rƒ   Úmy_other_paramT)rƒ   Úmy_paramrè   ré   c                 ó   — | S r.   rP   r…   s      r1   r5   z3test_get_metadata_routing.<locals>.TestDefaults.fitä  r†   r3   c                  ó   — y r.   rP   r…   s      r1   re   z5test_get_metadata_routing.<locals>.TestDefaults.scoreç  r—   r3   c                  ó   — y r.   rP   ©r0   r>   s     r1   rG   z7test_get_metadata_routing.<locals>.TestDefaults.predictê  r—   r3   r.   )	rT   rU   rV   Ú$_TestDefaults__metadata_request__fitÚ&_TestDefaults__metadata_request__scoreÚ(_TestDefaults__metadata_request__predictr5   re   rG   rP   r3   r1   ÚTestDefaultsrç   Ø  s?   „ à!Ø"ñ#
Ðð
 "ØØ"ñ%
Ð!ð
 (2°4Ð&8Ð#ó	ó	ó	r3   rñ   T)ré   rè   rƒ   )rè   rƒ   ré   )re   r5   rG   râ   )ré   rÃ   )r   r   rS   Úset_score_requestrË   )rñ   ÚexpectedÚests      r1   Útest_get_metadata_routingrõ   Ö  s  € ôÔ)ô ð. Ø"Ø!ñ
ð #Ø!ñ
ð  Ð%ñ€Hô ™›×<Ñ<Ó>ÀÔIá
‹.×
*Ñ
*°MÐ
*Ó
B€Cð &Ø"Ø!ñ
ð #Ø!ñ
ð  Ð%ñ€Hô ˜×1Ñ1Ó3°XÔ>á
‹.×
(Ñ
(°tÐ
(Ó
<€Cð Ø"Ø!ñ
ð #Ø!ñ
ð  Ð%ñ€Hô ˜×1Ñ1Ó3°XÕ>r3   c                  ó´  — t        «       }  G d„ dt        «      }dd i| |<    G d„ dt        «      }ddi| |<    G d„ dt        «      }dd i| |<    G d	„ d
t        «      }i | |<   | j                  «       D ]e  \  }}t         |«       «      j                  j
                  |k(  sJ ‚t         |«       j                  «       d¬«        |«       j	                  d d «       Œg y )Nc                   ó   — e Zd ZddiZd„ Zy)ú6test_setting_default_requests.<locals>.ExplicitRequestÚpropNc                 ó   — | S r.   rP   ©r0   r>   r?   Úkwargss       r1   r5   z:test_setting_default_requests.<locals>.ExplicitRequest.fit#  r†   r3   )rT   rU   rV   Ú'_ExplicitRequest__metadata_request__fitr5   rP   r3   r1   ÚExplicitRequestrø     s   „ à#)¨4 .Ðó	r3   rþ   rù   c                   ó   — e Zd ZddiZdd„Zy)ú?test_setting_default_requests.<locals>.ExplicitRequestOverwriterù   TNc                 ó   — | S r.   rP   ©r0   r>   r?   rù   rü   s        r1   r5   zCtest_setting_default_requests.<locals>.ExplicitRequestOverwrite.fit-  r†   r3   r.   )rT   rU   rV   Ú0_ExplicitRequestOverwrite__metadata_request__fitr5   rP   r3   r1   ÚExplicitRequestOverwriter   (  s   „ ð $*¨4 .Ðô	r3   r  Tc                   ó   — e Zd Zdd„Zy)ú6test_setting_default_requests.<locals>.ImplicitRequestNc                 ó   — | S r.   rP   r  s        r1   r5   z:test_setting_default_requests.<locals>.ImplicitRequest.fit4  r†   r3   r.   ©rT   rU   rV   r5   rP   r3   r1   ÚImplicitRequestr  2  s   „ ô	r3   r	  c                   ó0   — e Zd Zdej                  iZdd„Zy)ú=test_setting_default_requests.<locals>.ImplicitRequestRemovalrù   Nc                 ó   — | S r.   rP   r  s        r1   r5   zAtest_setting_default_requests.<locals>.ImplicitRequestRemoval.fit>  r†   r3   r.   )rT   rU   rV   r   ÚUNUSEDÚ._ImplicitRequestRemoval__metadata_request__fitr5   rP   r3   r1   ÚImplicitRequestRemovalr  9  s   „ ð $*Ð+;×+BÑ+BÐ"CÐô	r3   r  r5   rb   )rº   r   Úitemsr"   r5   rn   r   rS   )Ú
test_casesrþ   r  r	  r  ÚKlassrn   s          r1   Útest_setting_default_requestsr    sÛ   € ô “€Jôœ-ô ð $*¨4 .€JˆÑô¤=ô ð -3°D¨>€JÐ'Ñ(ôœ-ô ð
 $*¨4 .€JˆÑô¤ô ð *,€JÐ%Ñ&à%×+Ñ+Ó-ò  ‰ˆˆxÜ%¡e£gÓ.×2Ñ2×;Ñ;¸xÒGÐGÐGÜ¡£× <Ñ <Ó >ÈÕNÙ‹�‰�D˜$Õñ r3   c                  ó¬   —  G d„ dt         «      } t        j                  t        d¬«      5   | «       j	                  «        ddd«       y# 1 sw Y   yxY w)zFTest that removing a metadata using UNUSED which doesn't exist raises.c                   ó.   — e Zd Zdej                  iZd„ Zy)úFtest_removing_non_existing_param_raises.<locals>.InvalidRequestRemovalrù   c                 ó   — | S r.   rP   rû   s       r1   r5   zJtest_removing_non_existing_param_raises.<locals>.InvalidRequestRemoval.fitR  r†   r3   N)rT   rU   rV   r   r  Ú-_InvalidRequestRemoval__metadata_request__fitr5   rP   r3   r1   ÚInvalidRequestRemovalr  M  s   „ ð $*Ð+;×+BÑ+BÐ"CÐó	r3   r  zTrying to remove parameterr©   N)r   rj   rk   rÈ   rS   )r  s    r1   Ú'test_removing_non_existing_param_raisesr  I  sC   € ô¤ô ô 
�‰”zÐ)EÔ	Fñ 7ÙÓ×4Ñ4Ô6÷7÷ 7ñ 7ús   «A
Á
Ac                  óö   —  G d„ dt         «      } | j                  d«      dddœk(  sJ ‚| j                  ddh¬«      ddik(  sJ ‚dd	„}| j                  d
|dh¬«      ddik(  sJ ‚| j                  d«      i k(  sJ ‚y)z¹Test `_get_class_level_metadata_request_values`, which infers metadata
    requests from callables; used for class methods in consumers and by scorers
    for custom `score_func`s.
    c                   ó   — e Zd Zdd„Zy)ú;test_get_class_level_metadata_request_values.<locals>.DummyNc                 ó   — | S r.   rP   )r0   r>   r?   rƒ   Úextras        r1   r5   z?test_get_class_level_metadata_request_values.<locals>.Dummy.fit`  r†   r3   ©NNr  rP   r3   r1   ÚDummyr  _  ó   „ ô	r3   r!  r5   N)rƒ   r  rƒ   )Úignore_paramsr  c                  ó   — y)Nr   rP   )Úy_trueÚy_predrƒ   s      r1   Ú
score_funcz@test_get_class_level_metadata_request_values.<locals>.score_funco  s   € Ør3   re   r&  )r¶   r#  rG   r.   )r   Ú(_get_class_level_metadata_request_values)r!  r'  s     r1   Ú,test_get_class_level_metadata_request_valuesr)  Y  sÁ   € ô”ô ð
 ×9Ñ9¸%Ó@ØØñEò ð ð ð ×9Ñ9Ø˜oÐ.ð :ó à
�4ˆòð ð ó
ð ×9Ñ9Ø˜
°8°*ð :ó à
˜4Ð	 ò!ð !ð !ð
 ×9Ñ9¸)ÓDÈÒJÐJÑJr3   c                  ó€  — t        dd¬«      } t        j                  t        d¬«      5  | j	                  dd¬«       d d d «       | j	                  dd ¬«       | j
                  dd ik(  sJ ‚| j	                  dd	¬«       | j
                  dd	ik(  sJ ‚| j	                  dd
¬«       | j
                  dd
ik(  sJ ‚| j	                  dd¬«       | j
                  dd
ik(  sJ ‚| j	                  dd¬«       | j
                  ddik(  sJ ‚| j                  d	¬«      dhk(  sJ ‚| j                  d
¬«      dhk(  sJ ‚y # 1 sw Y   ŒøxY w)Nr[   r5   ©rK   r¶   zThe alias you're setting forr©   r\   gffffffö?r]   FTr`   )Úreturn_alias)r   rj   rk   rÈ   ri   rn   Ú_get_param_names)Úmmrs    r1   Útest_method_metadata_requestr/  z  s>  € ä
 f°UÔ
;€Cä	�‰”zÐ)GÔ	Hñ 0Ø�‰˜e¨3ˆÔ/÷0ð ‡O�O˜% t€OÔ,Ø�<‰<˜E 4˜=Ò(Ð(Ð(Ø‡O�O˜% u€OÔ-Ø�<‰<˜E 5˜>Ò)Ð)Ð)Ø‡O�O˜% t€OÔ,Ø�<‰<˜E 4˜=Ò(Ð(Ð(Ø‡O�O˜% u€OÔ-Ø�<‰<˜E 4˜=Ò(Ð(Ð(Ø‡O�O˜% u€OÔ-Ø�<‰<˜E 5˜>Ò)Ð)Ð)Ø×Ñ¨UÐÓ3¸°wÒ>Ð>Ð>Ø×Ñ¨TÐÓ2°u°gÒ=Ð=Ñ=÷0ð 0ús   ©D4Ä4D=c                  ó²  —  G d„ dt         «      } t        t        d «      «       t        t        t        «       «      «       t	        d¬«      }|j
                  j                  dd¬«       t        |«      }t        |d¬	«       |j
                  j                  ddik(  sJ ‚t         | «       «      }t        |d¬	«       |j
                  j                  d
d ik(  sJ ‚y )Nc                   ó   — e Zd ZddiZdd„Zy)ú-test_get_routing_for_object.<locals>.Consumerrù   Nc                 ó   — | S r.   rP   r…   s      r1   r5   z1test_get_routing_for_object.<locals>.Consumer.fit”  r†   r3   r.   )rT   rU   rV   Ú _Consumer__metadata_request__fitr5   rP   r3   r1   ÚConsumerr2  ‘  s   „ Ø#)¨4 .Ðô	r3   r5  r[   rJ   r\   r`   r]   r5   rb   rù   )r   r   r"   Úobjectr   r5   ri   rn   )r5  ÚmrÚ
mr_factorys      r1   Útest_get_routing_for_objectr9  �  s¯   € ô”=ô ô Ô2°4Ó8Ô9ÜÔ2´6³8Ó<Ô=ä	˜vÔ	&€BØ‡F�F×Ñ˜U¨%ÐÔ0Ü'¨Ó+€JÜ˜J°Õ6Ø�>‰>×"Ñ" u¨e nÒ4Ð4Ð4ä	¡£
Ó	+€BÜ˜B¨Õ.Ø�6‰6�?‰?˜v t˜nÒ,Ð,Ñ,r3   c                  ól  — t        d¬«      } | j                  ddh¬«      t        «       k(  sJ ‚t        d¬«      } | j                  j	                  dd¬«       | j                  ddh¬«      dhk(  sJ ‚t        d¬«      } | j                  j	                  dd¬«       | j                  dddh¬«      dhk(  sJ ‚y	)
z@Test that MetadataRequest().consumes() method works as expected.r[   rJ   r5   r\   ©r¶   rA   Tr]   r`   N)r   Úconsumesr»   r5   ri   )Úrequests    r1   Ú%test_metadata_request_consumes_methodr>  ¥  s¸   € ô  FÔ+€GØ×Ñ 5°%°ÐÓ9¼S»UÒBÐBÐBä FÔ+€GØ‡K�K×Ñ %¨tÐÔ4Ø×Ñ 5°%°ÐÓ9¸e¸WÒDÐDÐDä FÔ+€GØ‡K�K×Ñ %¨uÐÔ5Ø×Ñ 5°%¸°ÐÓ@ÀUÀGÒKÐKÑKr3   c                  ó  — t        t        «       j                  d¬«      ¬«      dhdhft        t        «       j                  d¬«      ¬«      ddhdhfg} | D ],  \  }}}|j                  «       j	                  d|¬«      |k(  rŒ,J ‚ y)	z=Test that MetadataRouter().consumes method works as expected.TrÃ   rf   rƒ   rÇ   r5   r;  N)r   r
   rË   rS   r<  )ÚcasesÚobjÚinputÚoutputs       r1   Ú$test_metadata_router_consumes_methodrD  ´  s³   € ô "Ü,Ó.×>Ñ>ÈTÐ>ÓRôð ÐØÐð	
ô "Ü,Ó.×>Ñ>Ø".ð ?ó ôð
 ˜?Ð+ØˆNð	
ð€Eð& $ò YÑˆˆU�FØ×'Ñ'Ó)×2Ñ2¸%ÈÐ2ÓNÐRXÓXÐXÐXñYr3   c                  ó   —  G d„ dt         «      } t        j                  t        d¬«      5   | t	        «       j                  d¬«      ¬«      j                  t        t        t        ¬«       d d d «       y # 1 sw Y   y xY w)Nc                   ó(   — e Zd Zdej                  iZy)ú>test_metaestimator_warnings.<locals>.WeightedMetaRegressorWarnrƒ   N)rT   rU   rV   r   ÚWARNÚ1_WeightedMetaRegressorWarn__metadata_request__fitrP   r3   r1   ÚWeightedMetaRegressorWarnrG  Ò  ó   „ Ø#2Ð4D×4IÑ4IÐ"JÑr3   rJ  ú2Support for .* has recently been added to .* classr©   FrÃ   rf   )
r   rj   ÚwarnsÚUserWarningr   rË   r5   r>   r?   rÇ   )rJ  s    r1   Útest_metaestimator_warningsrO  Ð  sh   € ôKÔ$9ô Kô 
�‰ÜÐOô
ñ .ñ 	"Ü&Ó(×8Ñ8ÀuÐ8ÓMô	
ç
‰#Œa”¤*ˆ#Ô
-÷.÷ .ñ .ús   «A A4Á4A=c                  óà   —  G d„ dt         «      } t        j                  t        d¬«      5  t	         | «       ¬«      j                  t        t        t        ¬«       d d d «       y # 1 sw Y   y xY w)Nc                   ó(   — e Zd Zdej                  iZy)ú7test_estimator_warnings.<locals>.ConsumingRegressorWarnrƒ   N)rT   rU   rV   r   rH  Ú._ConsumingRegressorWarn__metadata_request__fitrP   r3   r1   ÚConsumingRegressorWarnrR  ß  rK  r3   rT  rL  r©   rf   rÃ   )	r
   rj   rM  rN  r   r5   r>   r?   rÇ   )rT  s    r1   Útest_estimator_warningsrU  Ý  s_   € ôKÔ!3ô Kô 
�‰ÜÐOô
ñ 
ô 	Ñ 6Ó 8Ô9×=Ñ=ÜŒq¤
ð 	>ô 	
÷
÷ 
ñ 
ús   «0A$Á$A-zobj, stringr[   r5   r+  r\   r`   r]   z{'foo': 'bar'}rJ   z{}rG   rM   rh   a*  {'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(  sJ ‚y r.   )Ústr)rA  Ústrings     r1   Útest_string_representationsrY  ê  s   € ô> ˆs‹8�vÒÐÑr3   z%obj, method, inputs, err_cls, err_msgrQ   ÚinvalidzGiven calleezGiven callerrm   rA  z@Given `obj` is neither a `MetadataRequest` nor does it implementrË   zUnexpected argsc                 ó€   — t        j                  ||¬«      5   t        | |«      di |¤Ž d d d «       y # 1 sw Y   y xY w)Nr©   rP   )rj   rk   Úgetattr)rA  r¶   ÚinputsÚerr_clsÚerr_msgs        r1   Útest_validationsr`    s<   € ôF 
�‰�w gÔ	.ñ 'ØŒ��VÓÑ&˜vÒ&÷'÷ 'ñ 'ús   ˜4´=c                  óÂ  — t        «       j                  dd¬«      j                  dd¬«      } t        | «      }|d   dk(  sJ ‚|d   dk(  sJ ‚t        «       } t        D ]/  }| j                  ||¬«       t	        ||«      | j
                  v rŒ/J ‚ t        | j
                  «      t        t        «      k(  sJ ‚t        «       j                  dd¬«      } t        | «      d	k(  sJ ‚y )
Nr5   r<   rM   r   )r5   r<   rÔ   )r5   r5   re   z([{'caller': 'score', 'callee': 'score'}])r    rQ   Úlistr   r   Ú_routesrŒ   Úrepr)ÚmmÚmm_listr¶   s      r1   Útest_methodmappingrg  3  sß   € ô 	‹ß	‰�E +ˆÓ	.ß	‰�E %ˆÓ	(ð ô �2‹h€GØ�1‰:Ð-Ò-Ð-Ð-Ø�1‰:˜Ò'Ð'Ð'ä	‹€BÜò 8ˆØ
�‰�f VˆÔ,Ü˜& &Ó)¨R¯Z©ZÒ7Ð7Ð7ð8ô ˆr�z‰z‹?œc¤'›lÒ*Ð*Ð*ä	‹×	Ñ	 G°GÐ	Ó	<€BÜ�‹8ÐAÒAÐAÑAr3   c                  ó|  — t        d¬«      } | j                  j                  dd¬«       t        d¬«      j	                  | «      }t        |j                  «      t        | «      k(  sJ ‚|j                  | usJ ‚t        «       j                  d¬«      }t        d¬«      j	                  |¬	«      }t        |j                  «      t        |j                  «       «      k(  sJ ‚|j                  |j                  «       usJ ‚t        t        «       j                  d
¬«      ¬«      }t        d¬«      j	                  |¬	«      }t        |j                  «      t        |j                  «       «      k(  sJ ‚t        |j                  «      t        |j                  «       «      k7  sJ ‚|j                  |j                  «       usJ ‚y )NÚnestedrJ   r^   Tr]   r[   rÇ   rÃ   )rA  Únested_weightsrf   )r   r5   ri   r   rm   rW  Ú_self_requestr
   rË   rS   r   r¦   )r=  rR   rô   s      r1   Ú$test_metadatarouter_add_self_requestrl  I  s‡  € ô  HÔ-€GØ‡K�K×Ñ '°ÐÔ6Ü &Ô)×:Ñ:¸7ÓC€FÜˆv×#Ñ#Ó$¬¨G«Ò4Ð4Ð4à×Ñ wÑ.Ð.Ð.ô Ó
×
.Ñ
.¸\Ð
.Ó
J€CÜ &Ô)×:Ñ:¸sÐ:ÓC€FÜˆv×#Ñ#Ó$¬¨C×,DÑ,DÓ,FÓ(GÒGÐGÐGØ×Ñ s×'?Ñ'?Ó'AÑAÐAÐAô  Ü$Ó&×6Ñ6ÐEUÐ6ÓVô€Cô  &Ô)×:Ñ:¸sÐ:ÓC€Fäˆv×#Ñ#Ó$¬¨C×,EÑ,EÓ,GÓ(HÒHÐHÐHô ˆv×#Ñ#Ó$¬¨C×,DÑ,DÓ,FÓ(GÒGÐGÐGà×Ñ s×'@Ñ'@Ó'BÑBÐBÑBr3   c                  ó|  — t        d¬«      j                  t        «       j                  d¬«      t	        «       j                  dd¬«      ¬«      } t        | «      dk(  sJ ‚t        d¬«      j                  t	        «       j                  dd	¬«      t        «       j                  d
¬«      ¬«      } t        | «      dk(  sJ ‚y )Nr[   rJ   ÚweightsrÃ   r5   rM   ©rô   rL   a!  {'est': {'mapping': [{'caller': 'fit', 'callee': 'fit'}], 'router': {'fit': {'sample_weight': 'weights', 'metadata': None}, 'partial_fit': {'sample_weight': None, 'metadata': None}, 'predict': {'sample_weight': None, 'metadata': None}, 'score': {'sample_weight': None, 'metadata': None}}}}re   T)rL   rô   a  {'est': {'mapping': [{'caller': 'fit', 'callee': 'score'}], 'router': {'fit': {'sample_weight': None, 'metadata': None}, 'partial_fit': {'sample_weight': None, 'metadata': None}, 'predict': {'sample_weight': None, 'metadata': None}, 'score': {'sample_weight': True, 'metadata': None}}}})r   rQ   r
   rË   r    rW  rò   ©rR   s    r1   Útest_metadata_routing_addrq  g  sÆ   € ô  &Ô)×-Ñ-ÜÓ ×0Ñ0¸yÐ0ÓIÜ$“×*Ñ*°%ÀÐ*ÓFð .ó €Fô
 	ˆF‹ðò	ðð	ô  &Ô)×-Ñ-Ü$“×*Ñ*°%ÀÐ*ÓHÜÓ ×2Ñ2ÀÐ2ÓFð .ó €Fô
 	ˆF‹ðò	ðñ	r3   c                  ó  — t        d¬«      j                  t        t        «       ¬«      j	                  d¬«      «      j                  t        «       j	                  d¬«      t        «       j                  dd¬«      ¬	«      } t        | «      d
k(  sJ ‚| j                  ddd¬«      h d£k(  sJ ‚| j                  ddd¬«      h d£k(  sJ ‚| j                  ddd¬«      ddhk(  sJ ‚| j                  ddd¬«      | j                  ddd¬«      k(  sJ ‚y )Nr[   rJ   rf   Úself_weightsrÃ   Útransform_weightsr5   rM   )rã   rL   a^  {'$self_request': {'fit': {'sample_weight': 'self_weights'}, 'score': {'sample_weight': None}}, 'trs': {'mapping': [{'caller': 'fit', 'callee': 'fit'}], 'router': {'fit': {'sample_weight': 'transform_weights', 'metadata': None}, 'transform': {'sample_weight': None, 'metadata': None}, 'inverse_transform': {'sample_weight': None, 'metadata': None}}}}TF)r¶   r,  Úignore_self_request>   rŠ   rs  rt  >   rŠ   rƒ   rt  rŠ   )
r   rm   r   r
   rË   rQ   r   r    rW  r-  rp  s    r1   Ú%test_metadata_routing_get_param_namesrv  †  sr  € ô 	˜VÔ$ß	Ñ	Ü!Ô,>Ó,@ÔA×QÑQØ,ð Ró ó

÷
 
‰Ü$Ó&×6Ñ6Ø1ð 7ó ô )›?×.Ñ.°eÀEÐ.ÓJð	 
ó 

ð ô  	ˆF‹ðMò	Mðð	Mð ×"Ñ"Ø 4¸Uð #ó â	:ò;ð ;ð ;ð ×"Ñ"Ø 5¸eð #ó â	;ò<ð <ð <ð ×"Ñ"Ø 5¸dð #ó à
Ð)Ð	*ò+ð +ð +ð ×"Ñ"Ø 4¸Tð #ó à	×	 Ñ	 Ø 5¸dð 
!ó 
òð ñ r3   c                  ó  —  G d„ dt         «      } t        D ]  }t         | «       d|› d�«      sŒJ ‚  G d„ dt         «      } t        D ]  }t         | «       d|› d�«      sŒJ ‚ t        D ]  }t         | «       d|› d�«      rŒJ ‚ y )Nc                   óV   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zdd„Zd„ Zd„ Zy
)ú/test_method_generation.<locals>.SimpleEstimatorc                  ó   — y r.   rP   r…   s      r1   r5   z3test_method_generation.<locals>.SimpleEstimator.fit»  r—   r3   c                  ó   — y r.   rP   r…   s      r1   Úfit_transformz=test_method_generation.<locals>.SimpleEstimator.fit_transform¾  r—   r3   c                  ó   — y r.   rP   r…   s      r1   Úfit_predictz;test_method_generation.<locals>.SimpleEstimator.fit_predictÁ  r—   r3   c                  ó   — y r.   rP   r…   s      r1   Úpartial_fitz;test_method_generation.<locals>.SimpleEstimator.partial_fitÄ  r—   r3   c                  ó   — y r.   rP   rí   s     r1   rG   z7test_method_generation.<locals>.SimpleEstimator.predictÇ  r—   r3   c                  ó   — y r.   rP   rí   s     r1   Úpredict_probaz=test_method_generation.<locals>.SimpleEstimator.predict_probaÊ  r—   r3   c                  ó   — y r.   rP   rí   s     r1   Úpredict_log_probazAtest_method_generation.<locals>.SimpleEstimator.predict_log_probaÍ  r—   r3   c                  ó   — y r.   rP   rí   s     r1   Údecision_functionzAtest_method_generation.<locals>.SimpleEstimator.decision_functionÐ  r—   r3   c                  ó   — y r.   rP   r…   s      r1   re   z5test_method_generation.<locals>.SimpleEstimator.scoreÓ  r—   r3   Nc                  ó   — y r.   rP   r…   s      r1   r–   z5test_method_generation.<locals>.SimpleEstimator.splitÖ  r—   r3   c                  ó   — y r.   rP   rí   s     r1   r<   z9test_method_generation.<locals>.SimpleEstimator.transformÙ  r—   r3   c                  ó   — y r.   rP   rí   s     r1   Úinverse_transformzAtest_method_generation.<locals>.SimpleEstimator.inverse_transformÜ  r—   r3   r.   ©rT   rU   rV   r5   r|  r~  r€  rG   rƒ  r…  r‡  re   r–   r<   rŒ  rP   r3   r1   ÚSimpleEstimatorry  ¹  s>   „ ò	ò	ò	ò	ò	ò	ò	ò	ò	ó	ò	ó	r3   rŽ  Úset_Ú_requestc                   ól   — e 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dd„Zdd„Zy)ry  Nc                  ó   — y r.   rP   ©r0   r>   r?   rƒ   s       r1   r5   z3test_method_generation.<locals>.SimpleEstimator.fitä  r—   r3   c                  ó   — y r.   rP   r“  s       r1   r|  z=test_method_generation.<locals>.SimpleEstimator.fit_transformç  r—   r3   c                  ó   — y r.   rP   r“  s       r1   r~  z;test_method_generation.<locals>.SimpleEstimator.fit_predictê  r—   r3   c                  ó   — y r.   rP   r“  s       r1   r€  z;test_method_generation.<locals>.SimpleEstimator.partial_fití  r—   r3   c                  ó   — y r.   rP   ©r0   r>   rƒ   s      r1   rG   z7test_method_generation.<locals>.SimpleEstimator.predictð  r—   r3   c                  ó   — y r.   rP   r˜  s      r1   rƒ  z=test_method_generation.<locals>.SimpleEstimator.predict_probaó  r—   r3   c                  ó   — y r.   rP   r˜  s      r1   r…  zAtest_method_generation.<locals>.SimpleEstimator.predict_log_probaö  r—   r3   c                  ó   — y r.   rP   r˜  s      r1   r‡  zAtest_method_generation.<locals>.SimpleEstimator.decision_functionù  r—   r3   c                  ó   — y r.   rP   r“  s       r1   re   z5test_method_generation.<locals>.SimpleEstimator.scoreü  r—   r3   c                  ó   — y r.   rP   r“  s       r1   r–   z5test_method_generation.<locals>.SimpleEstimator.splitÿ  r—   r3   c                  ó   — y r.   rP   r˜  s      r1   r<   z9test_method_generation.<locals>.SimpleEstimator.transform  r—   r3   c                  ó   — y r.   rP   r˜  s      r1   rŒ  zAtest_method_generation.<locals>.SimpleEstimator.inverse_transform  r—   r3   r.   r   r�  rP   r3   r1   rŽ  z/test_method_generation.<locals>.SimpleEstimatorâ  s>   „ ó	ó	ó	ó	ó	ó	ó	ó	ó	ó	ó	ô	r3   )r   r   Úhasattrr   r   )rŽ  r¶   s     r1   Útest_method_generationr¡  ³  s©   € ô$œ-ô $ôL ò GˆÜ™?Ó,°°V°H¸HÐ.EÕFÐFÐFðGô$œ-ô $ôN $ò GˆÜ™?Ó,°°V°H¸HÐ.EÕFÐFÐFðGô !ò CˆÜ‘Ó(¨D°°¸Ð*AÕBÐBÐBñCr3   c                  ó,  —  G d„ dt         «      }  | «       }|j                  «       j                  j                  d d d dœk(  sJ ‚|j                  «       j                  j                  d d dœk(  sJ ‚|j                  dd¬«       t        j                  t        d¬	«      5  |j                  «       j                   d d d «       |j                  d¬
«       t        j                  t        d¬	«      5  |j                  «       j                   d d d «       |j                  dd¬«       |j                  «       j                   |j                  d¬«       |j                  «       j                  j                  ddddœk(  sJ ‚y # 1 sw Y   ŒÆxY w# 1 sw Y   Œ‚xY w)Nc                   ó$   — e Zd Zdd„Zdd„Zdd„Zy)ú/test_composite_methods.<locals>.SimpleEstimatorNc                  ó   — y r.   rP   )r0   r>   r?   r\   r`   s        r1   r5   z3test_composite_methods.<locals>.SimpleEstimator.fit  r—   r3   c                  ó   — y r.   rP   )r0   r>   r\   r`   s       r1   rG   z7test_composite_methods.<locals>.SimpleEstimator.predict  r—   r3   c                  ó   — y r.   rP   )r0   r>   râ   s      r1   r<   z9test_composite_methods.<locals>.SimpleEstimator.transform  r—   r3   r   r.   )rT   rU   rV   r5   rG   r<   rP   r3   r1   rŽ  r¤    s   „ ó	ó	ô	r3   rŽ  )r`   r\   râ   )r`   r\   Tr[   )r\   r`   z!Conflicting metadata requests forr©   )r`   rá   )r   rS   r|  rn   r~  rË   rj   rk   rÈ   r×   rÖ   )rŽ  rô   s     r1   Útest_composite_methodsr¨    s  € ô	œ-ô 	ñ Ó
€Cð ×#Ñ#Ó%×3Ñ3×<Ñ<ØØØñAò ð ð ð
 ×#Ñ#Ó%×1Ñ1×:Ñ:ÀdÐSWÑ>XÒXÐXÐXð ×Ñ˜D fÐÔ-Ü	�‰”zÐ)LÔ	Mñ /Ø× Ñ Ó"×.Ò.÷/ð
 ×Ñ ÐÔ%Ü	�‰”zÐ)LÔ	Mñ /Ø× Ñ Ó"×.Ò.÷/ð
 ×Ñ ¨&ÐÔ1Ø×ÑÓ×*Ò*ð ×Ñ¨$ÐÔ/Ø×#Ñ#Ó%×3Ñ3×<Ñ<ØØØñAò ð ñ ÷#/ð /ú÷/ð /ús   ÂE>Ã.F
Å>FÆ
Fc                  óÚ   — t        d¬«      5  t        j                  t        d¬«      5  t	        «       j                  d¬«       ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w)zCTest that when feature flag disabled, set_{method}_requests raises.FrX   zThis method is only availabler©   TrÃ   N)r   rj   rk   ÚRuntimeErrorr	   rË   rP   r3   r1   Ú!test_no_feature_flag_raises_errorr«  F  sg   € ô 
°Ô	6ñ FÜ�]‰]œ<Ð/NÔOñ 	FÜÓ!×1Ñ1ÀÐ1ÔE÷	F÷Fð F÷	Fð 	Fú÷Fð Fús"   �A!©AÁA!ÁA	ÁA!Á!A*c                  ó`   — t        t        «       ¬«      j                  t        t        d¬«       y)zCTest that passing None as metadata when not requested doesn't raiserf   NrÃ   )r   r
   r5   r>   r?   rP   r3   r1   Útest_none_metadata_passedr­  N  s"   € ô Ô.Ó0Ô1×5Ñ5´a¼È$Ð5ÕOr3   c                  ó<  —  G d„ dt         t        «      } t         | «       ¬«      j                  t        t
        «       t        j                  t        d¬«      5  t         | «       ¬«      j                  t        t
        t        ¬«       ddd«       y# 1 sw Y   yxY w)zÐTest 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
    c                   ó   — e Zd Zdd„Zy)ú0test_no_metadata_always_works.<locals>.EstimatorNc                 ó   — | S r.   rP   )r0   r>   r?   rŠ   s       r1   r5   z4test_no_metadata_always_works.<locals>.Estimator.fit]  r†   r3   r.   r  rP   r3   r1   Ú	Estimatorr°  \  r"  r3   r²  rf   z3Estimator has not implemented metadata routing yet.r©   ©rŠ   N)
r!   r   r   r5   r>   r?   rj   rk   ÚNotImplementedErrorr®   )r²  s    r1   Útest_no_metadata_always_worksrµ  T  ss   € ôÔ-¬}ô ô
 ™I›KÔ(×,Ñ,¬Q´Ô2ä	�‰ÜÐ#Xô
ñ Kô 	¡	£Ô,×0Ñ0´´AÄ	Ð0ÔJ÷K÷ Kñ Kús   Á0BÂBc                  ó  — t        t        «       ¬«      } t        | g«      }t        j                  d«      }t        j                  t        |¬«      5  |j                  t        t        d¬«       ddd«       y# 1 sw Y   yxY w)z}Test that UnsetMetadataPassedError raises the correct error message when
    set_{method}_request is not set in nested cases.rf   a  [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.r©   Úblahr³  N)r   r	   r,   rÉ   rÊ   rj   rk   r   r5   r>   r?   )Úweighted_metaÚpipeÚmsgs      r1   Ú%test_unsetmetadatapassederror_correctr»  i  si   € ô +Ô5HÓ5JÔK€MÜ˜=˜/Ó*€DÜ
�)‰)ð	0ó€Cô 
�‰Ô/°sÔ	;ñ (Ø�‰””A ˆÔ'÷(÷ (ñ (ús   ÁA7Á7B c                  óö   — t        «       } t        d| fg«      }t        j                  d«      }t	        j
                  t        |¬«      5  |j                  t        t        d¬«       ddd«       y# 1 sw Y   yxY w)zŒTest 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.r©   r·  r³  N)
r   r   rÉ   rÊ   rj   rk   r   r|  r>   r?   )r½  r¹  rº  s      r1   Ú;test_unsetmetadatapassederror_correct_for_composite_methodsr¾  z  so   € ô 1Ó2ÐÜÐ-Ð/DÐEÐFÓG€Dä
�)‰)ð	9ó€Cô 
�‰Ô/°sÔ	;ñ 2Ø×Ñœ1œa¨&ÐÔ1÷2÷ 2ñ 2ús   Á	A/Á/A8c                  ó´  —  G d„ dt         «      } t        j                  d«      }t        j                  t
        |¬«      5   | «       j                  d«       ddd«       | j                  | _         | «       j                  d¬«       t        j                  t
        |¬«      5   | «       j                  d«       ddd«       y# 1 sw Y   ŒlxY w# 1 sw Y   yxY w)a  Tests 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
    c                   ó   — e Zd Zdd„Zy)ú(test_unbound_set_methods_work.<locals>.ANc                 ó   — | S r.   rP   r“  s       r1   r5   z,test_unbound_set_methods_work.<locals>.A.fit˜  r†   r3   r.   r  rP   r3   r1   ÚArÁ  —  r"  r3   rÃ  z>set_fit_request() takes 0 positional argument but 1 were givenr©   TNrÃ   )r   rÉ   rÊ   rj   rk   r­   rË   )rÃ  Úerror_messages     r1   Útest_unbound_set_methods_workrÅ  �  sµ   € ôŒMô ô —I‘IØHó€Mô
 
�‰”y¨Ô	6ñ "Ù	‹×Ñ˜DÔ!÷"ð ×)Ñ)€AÔñ ƒC×Ñ dÐÔ+ô 
�‰”y¨Ô	6ñ "Ù	‹×Ñ˜DÔ!÷"ð "÷"ð "ú÷"ð "ús   Á CÂ"CÃCÃCc                   ó   — e Zd ZdZd„ Zy)Ú_UncopyableOwnera0  An owner-like object that fails on deepcopy.

    Used to verify that cloning routing objects does not walk into the
    estimator state. This mirrors the real-world skorch case where the
    estimator holds attributes (e.g. locally-defined torch modules) that are
    not picklable / deep-copyable.
    c                 ó   — t        d«      ‚)Nzowner must not be deep-copied©rl   ©r0   Úmemos     r1   Ú__deepcopy__z_UncopyableOwner.__deepcopy__¹  s   € ÜÐ<Ó=Ð=r3   N)rT   rU   rV   rW   rÌ  rP   r3   r1   rÇ  rÇ  °  s   „ ñó>r3   rÇ  c                  ó.  — t        «       } t        | d¬«      }|j                  dd¬«       t        |«      }|j                  | u sJ ‚|j
                  ddik(  sJ ‚|j                  |j                  usJ ‚|j                  dd¬«       d|j
                  vsJ ‚y )Nr5   r+  rƒ   Tr]   r”   )rÇ  r   ri   r   rK   rn   Ú	_requests)rK   ÚreqÚnews      r1   Ú6test_method_metadata_request_clone_does_not_copy_ownerrÑ  ½  s’   € ÜÓ€EÜ
 e°EÔ
:€CØ‡O�O˜/°€OÔ6ä
�‹*€Cð �9‰9˜ÑÐÐà�<‰<˜O¨TÐ2Ò2Ð2Ð2Ø�=‰= §¡Ñ-Ð-Ð-à‡O�O˜(¨$€OÔ/Ø˜3Ÿ<™<Ñ'Ð'Ñ'r3   c                  óÆ  — t        «       } t        | ¬«      }|j                  j                  dd¬«       t	        |«      }|j
                  | u sJ ‚t        D ]  }t        ||«      j
                  | u rŒJ ‚ |j                  j                  ddik(  sJ ‚|j                  |j                  usJ ‚|j                  j                  dd¬«       d|j                  j                  vsJ ‚y )NrJ   rƒ   Tr]   r”   )	rÇ  r   r5   ri   r   rK   r   r\  rn   )rK   rÏ  rÐ  r¶   s       r1   Ú/test_metadata_request_clone_does_not_copy_ownerrÓ  Î  sÒ   € ÜÓ€EÜ
 Ô
&€CØ‡G�G×Ñ˜o°TÐÔ:ä
�‹*€Cà�9‰9˜ÑÐÐÜ ò 3ˆÜ�s˜FÓ#×)Ñ)¨UÒ2Ð2Ð2ð3à�7‰7×Ñ °Ð6Ò6Ð6Ð6Ø�7‰7˜#Ÿ'™'Ñ!Ð!Ð!Ø‡G�G×Ñ˜h¨dÐÔ3Ø˜3Ÿ7™7×+Ñ+Ñ+Ð+Ñ+r3   c                  ó
  — t        «       } t        «       }t        |¬«      }|j                  j                  dd¬«       t	        | ¬«      j                  |t        «       j                  dd¬«      ¬«      }t        |«      }|j                  | u sJ ‚|j                  d   j                  j                  |u sJ ‚|j                  |j                  usJ ‚|j                  d   j                  j                  j                  ddik(  sJ ‚y )	NrJ   rƒ   Tr]   r5   rM   ro  rô   )rÇ  r   r5   ri   r   rQ   r    r   rK   Ú_route_mappingsrR   rn   )rK   Ú	sub_ownerÚsub_reqrR   rÐ  s        r1   Ú.test_metadata_router_clone_does_not_copy_ownerrØ  Þ  sñ   € ÜÓ€EÜ Ó"€IÜ IÔ.€GØ‡K�K×Ñ /¸ÐÔ>ä %Ô(×,Ñ,ØÜ$“×*Ñ*°%ÀÐ*ÓFð -ó €Fô
 �‹-€Cà�9‰9˜ÑÐÐØ×Ñ˜uÑ%×,Ñ,×2Ñ2°iÑ?Ð?Ð?à×Ñ f×&<Ñ&<Ñ<Ð<Ð<Ø×Ñ˜uÑ%×,Ñ,×0Ñ0×9Ñ9¸oÈtÐ=TÒTÐTÑTr3   c                  ó†   —  G d„ dt         «      }  | «       j                  d¬«      }t        |«      }|j                  |u sJ ‚y )Nc                   ó   — e Zd Zdd„Zd„ Zy)úDtest_get_routing_for_object_does_not_deepcopy_estimator.<locals>.EstNc                 ó   — | S r.   rP   r“  s       r1   r5   zHtest_get_routing_for_object_does_not_deepcopy_estimator.<locals>.Est.fit÷  r†   r3   c                 ó   — t        d«      ‚©Nz!estimator must not be deep-copiedrÉ  rÊ  s     r1   rÌ  zQtest_get_routing_for_object_does_not_deepcopy_estimator.<locals>.Est.__deepcopy__ú  ó   € Ü Ø3óð r3   r.   ©rT   rU   rV   r5   rÌ  rP   r3   r1   ÚEstrÛ  ö  ó   „ ó	ó	r3   rá  TrÃ   )r   rË   r"   rK   )rá  rô   Úroutings      r1   Ú7test_get_routing_for_object_does_not_deepcopy_estimatorrä  ò  sA   € ôŒmô ñ ‹%×
Ñ
¨dÐ
Ó
3€CÜ$ SÓ)€GØ�=‰=˜CÑÐÑr3   c                  óº   —  G d„ dt         «      }  | «       j                  d¬«      }t        |¬«      j                  |«      }|j                  j
                  |u sJ ‚y )Nc                   ó   — e Zd Zdd„Zd„ Zy)ú>test_add_self_request_does_not_deepcopy_estimator.<locals>.EstNc                 ó   — | S r.   rP   r“  s       r1   r5   zBtest_add_self_request_does_not_deepcopy_estimator.<locals>.Est.fit  r†   r3   c                 ó   — t        d«      ‚rÞ  rÉ  rÊ  s     r1   rÌ  zKtest_add_self_request_does_not_deepcopy_estimator.<locals>.Est.__deepcopy__
  rß  r3   r.   rà  rP   r3   r1   rá  rç    râ  r3   rá  TrÃ   rJ   )r   rË   r   rm   rk  rK   )rá  rô   rR   s      r1   Ú1test_add_self_request_does_not_deepcopy_estimatorrê    sV   € ôŒmô ñ ‹%×
Ñ
¨dÐ
Ó
3€Cô  #Ô&×7Ñ7¸Ó<€FØ×Ñ×%Ñ%¨Ñ,Ð,Ñ,r3   c                  ó  —  G d„ dt         «      } t        t        «       d«      sJ ‚t        j                  t        t        j                  d«      ¬«      5   | «       j                  d¬«       ddd«       y# 1 sw Y   yxY w)	zHTest that removing a metadata with UNUSED marker affects child's method.c                   ó>   — e Zd Zej                  ej                  dœZy)ú=test_removing_metadata_in_subclass_correctly_works.<locals>.Ar‰   N)rT   rU   rV   r   r  Ú_A__metadata_request__scorerP   r3   r1   rÃ  rí    s   „ à-×4Ñ4Ø(×/Ñ/ñ%
Ñ!r3   rÃ  rò   zJUnexpected args: {'sample_weight'} in score. Accepted arguments are: set()r©   TrÃ   N)r	   r   rj   rk   r­   rÉ   rÊ   rò   )rÃ  s    r1   Ú2test_removing_metadata_in_subclass_correctly_worksrï    sp   € ô
Ôô 
ô Ô&Ó(Ð*=Ô>Ð>Ð>ô 
�‰ÜÜ�i‰iØXó
ô
ñ 2ñ 	
‹×Ñ¨DÐÔ1÷2÷ 2ñ 2ús   ÁA5Á5A>c                  óf   —  G d„ dt         «      }  G d„ d| «      } |«       j                  d¬«       y)zDTest that explicitly defined set_{method}_request is not overridden.c                   ó   — e Zd Zdd„Zy)úFtest_explicitly_defined_set_method_request_is_not_overriden.<locals>.ANc                 ó   — | S r.   rP   )r0   rƒ   rŠ   s      r1   rò   zXtest_explicitly_defined_set_method_request_is_not_overriden.<locals>.A.set_score_request2  r†   r3   r   )rT   rU   rV   rò   rP   r3   r1   rÃ  rò  1  r"  r3   rÃ  c                   ó   — e Zd Zdd„Zy)úFtest_explicitly_defined_set_method_request_is_not_overriden.<locals>.BNc                  ó   — y r.   rP   r…   s      r1   re   zLtest_explicitly_defined_set_method_request_is_not_overriden.<locals>.B.score6  r—   r3   r.   )rT   rU   rV   re   rP   r3   r1   ÚBrõ  5  s   „ ô	r3   r÷  TrÃ   N)r   rò   )rÃ  r÷  s     r1   Ú;test_explicitly_defined_set_method_request_is_not_overridenrø  -  s/   € ôŒMô ôˆAô ñ
 ƒC×Ñ¨ÐÕ-r3   )qrW   rÉ   ÚnumpyÚnprj   Úsklearnr   Úsklearn.baser   r   Úsklearn.exceptionsr   Úsklearn.linear_modelr   Úsklearn.pipeliner   Ú%sklearn.tests.metadata_routing_commonr	   r
   r   r   r   r   r   r   r   r   r   r   Úsklearn.utilsr   Ú sklearn.utils._metadata_requestsr   r   r   r   r   r   r   r   Úsklearn.utils.metadata_routingr   r   r    r!   r"   r#   Úsklearn.utils.validationr$   ÚrandomÚRandomStateÚrngÚNÚMÚrandr>   Úrandintr?   r®   rÇ   Úmy_other_weightsr,   ro   ÚmarkÚparametrizerr   r{   r   r�   r§   r¯   rµ   rÁ   rÏ   rÝ   rß   rä   rõ   r  r  r)  r/  r9  r>  rD  rO  rU  ri   rQ   rY  rÈ   r­   r`  rg  rl  rq  rv  r¡  r¨  r«  r­  rµ  r»  r¾  rÅ  rÇ  rÑ  rÓ  rØ  rä  rê  rï  rø  rP   r3   r1   ú<module>r     s0  ðñó 
ã Û å "÷õ 8Ý 1Ý %÷÷ ÷ ó õ +÷	÷ 	ó 	÷÷ õ 5à‡i�i×Ñ˜BÓ€Ø�€€1Ø‡H�HˆQ�ƒN€Ø‡K�K��1˜1€KÓ€Ø�K‰K˜˜2 AˆKÓ&€	Ø�X‰X�a‹[€
Ø—8‘8˜A“;Ð ô7�]ô 7ñt ¨Ô-ñ ó .ð ðF ‡�×ÑØá¡Y£[Ô1Ù¡I£KÔ0Ù¡i£kÔ2ÙÑ)<Ó)>ÉËÔUÙÑ(:Ó(<ÁyÃ{ÔSðó	ñ ¨Ô-ñ+ó .ó	ð+ð ‡�×ÑØòóñ ¨Ô-ñ(ó .óð(ð
 ‡�×ÑØòóñ ¨Ô-ñ(ó .óð(ñ
 ¨Ô-ñ)ó .ð)ñB ¨Ô-ñó .ðñ@ ¨Ô-ñSó .ðSñ
 ¨Ô-ñBó .ðBð ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜ T¨9°bÐ$9Ó:Ù¨Ô-ñ:ó .ó ;ó ,ð:ñ ¨Ô-ñ5ó .ð5ñp ¨Ô-ñ-ó .ð-ñ` ¨Ô-ñSó .ðSñ: ¨Ô-ñ=ó .ð=ñ, ¨Ô-ñ@?ó .ð@?ñF ¨Ô-ñ+ ó .ð+ ñ\ ¨Ô-ñ7ó .ð7òKñB ¨Ô-ñ>ó .ð>ñ( ¨Ô-ñ-ó .ð-ñ* ¨Ô-ñLó .ðLñ ¨Ô-ñYó .ðYñ6 ¨Ô-ñ	.ó .ð	.ñ ¨Ô-ñ	
ó .ð	
ñ ¨Ô-Ø‡�×ÑØñ "¨°uÔ=×IÑIØ 5ð Jó ð ð		
ñ  &Ô)Øð	
ñ
  Ô(×,Ñ,Ù,Ó.Ù,›×2Ñ2¸)ÈIÐ2ÓVð -ó ð
@ð	
ðóñ8 ¨Ô-ñó .ó9ó .ð<ð ‡�×ÑØ+ñ ‹OØØ¨	Ñ2ØØð	
ñ ‹OØØ ¨EÑ2ØØð	
ñ  Ô(ØØ‘N¨Ô0Ð1ØØNð	
ñ  Ó!ØØ˜ÐØØð	
ð-ó ñB ¨Ô-ñ'ó .óC ðD'ñ
 ¨Ô-ñBó .ðBñ* ¨Ô-ñCó .ðCñ: ¨Ô-ñó .ðñ< ¨Ô-ñ)ó .ð)ñX ¨Ô-ñZCó .ðZCñz ¨Ô-ñ1ó .ð1ñh ¨Ô-ñFó .ðFñ ¨Ô-ñPó .ðPñ
 ¨Ô-ñKó .ðKñ( ¨Ô-ñ(ó .ð(ñ  ¨Ô-ñ2ó .ð2ñ$ ¨Ô-ñ"ó .ð"÷D
>ñ 
>ò(ò",ò Uñ( ¨Ô-ñ ó .ð ñ" ¨Ô-ñ-ó .ð-ñ" ¨Ô-ñ2ó .ð2ñ, ¨Ô-ñ.ó .ñ.r3   