§
    €ØjÍ8  ã                   óT  — d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZmZ ej                             ed¬¦  «        Z G d	„ d
¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de	e¦  «        Z G d„ de	e¦  «        Z G d„ de	¦  «        Z G d„ de¦  «        Z  G d„ d e¦  «        Z! G d!„ d"e	e¦  «        Z"d#„ Z# G d$„ d%e	¦  «        Z$ G d&„ d'e	e¦  «        Z%dS )(é    N)ÚBaseEstimatorÚ_fit_contextÚclone)ÚCallbackSupportMixinÚwith_callbacks)Úopen_listenerÚsend)Ú_IS_WASM)ÚParallelÚdelayedz*callback tests are skipped on WASM/Pyodide)Úreasonc                   óT   — e Zd ZdZd„ Zd„ Zd„ Zdddddœd„Zdddddœd„Zd	„ Z	d
„ Z
dS )ÚRecordingCallbacka   A minimal callback used for smoke testing purposes.

    This callback keeps a record of the hooks called for introspection.

    This callback doesn't define `max_propagation_depth` and is therefore not an
    `AutoPropagatedCallback`: it should not be propagated to sub-estimators.
    c                 óT   — g | _         t          | j         j        | ¬¦  «        | _        d S )N)Úowner)Úrecordr   ÚappendÚ_listener_handle©Úselfs    ú’/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/sklearn/callback/tests/_utils.pyÚ__init__zRecordingCallback.__init__   s)   € ØˆŒÝ -¨d¬kÔ.@ÈÐ MÑ MÔ MˆÔÐÐó    c                 ó   — i | j         ¥dg i¥S )Nr   )Ú__dict__r   s    r   Ú__getstate__zRecordingCallback.__getstate__"   s   € ð /�$”-Ð. ¨2Ð.Ð.Ð.r   c                 ó8   — t          | j        d||dœ¦  «         d S )NÚsetup©ÚnameÚ	estimatorÚcontext©r	   r   ©r   r!   r"   s      r   r   zRecordingCallback.setup(   s1   € ÝØÔ!Ø¨9ÀÐIÐIñ	
ô 	
ð 	
ð 	
ð 	
r   N©ÚXÚyÚmetadataÚfitted_estimatorc                óD   — t          | j        d||||||dœdœ¦  «         d S )NÚon_fit_task_beginr%   ©r    r!   r"   Úkwargsr#   ©r   r!   r"   r&   r'   r(   r)   s          r   r+   z#RecordingCallback.on_fit_task_begin.   sO   € õ 	ØÔ!à+Ø&Ø"àØØ (Ø(8ð	ð ð	
ð 
ñ	
ô 	
ð 	
ð 	
ð 	
r   c                óD   — t          | j        d||||||dœdœ¦  «         d S )NÚon_fit_task_endr%   r,   r#   r.   s          r   r0   z!RecordingCallback.on_fit_task_endG   sO   € õ 	ØÔ!à)Ø&Ø"àØØ (Ø(8ð	ð ð	
ð 
ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó8   — t          | j        d||dœ¦  «         d S )NÚteardownr   r#   r$   s      r   r2   zRecordingCallback.teardown`   s1   € ÝØÔ!Ø¨iÀGÐLÐLñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óD   ‡— t          ˆfd„| j        D ¦   «         ¦  «        S )Nc                 ó,   •— g | ]}|d          ‰k    ¯|‘ŒS )r    © )Ú.0ÚrecÚ	hook_names     €r   ú
<listcomp>z1RecordingCallback.count_hooks.<locals>.<listcomp>g   s'   ø€ ÐKÐKÐK˜C°#°f´+ÀÒ2JÐ2J�CÐ2JÐ2JÐ2Jr   )Úlenr   )r   r8   s    `r   Úcount_hookszRecordingCallback.count_hooksf   s(   ø€ ÝÐKÐKÐKÐK 4¤;ÐKÑKÔKÑLÔLÐLr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r+   r0   r2   r;   r5   r   r   r   r      s¿   € € € € € ðð ðNð Nð Nð/ð /ð /ð
ð 
ð 
ð Ø
ØØð
ð 
ð 
ð 
ð 
ð< Ø
ØØð
ð 
ð 
ð 
ð 
ð2
ð 
ð 
ðMð Mð Mð Mð Mr   r   c                   ó   — e Zd ZdZdZdS )ÚRecordingAutoPropagatedCallbackaF  A minimal auto-propagated callback used for smoke testing purposes.

    This callback keeps a record of the hooks called for introspection.

    This callback defines `max_propagation_depth` and is therefore an
    `AutoPropagatedCallback`: it should be set on a top-level estimator and propagated
    to sub-estimators.
    N)r<   r=   r>   r?   Úmax_propagation_depthr5   r   r   rA   rA   j   s"   € € € € € ðð ð !ÐÐÐr   rA   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚNotValidCallbackz>Invalid callback since it's missing methods from the protocol.c                 ó   — d S ©Nr5   r$   s      r   r   zNotValidCallback.setupz   ó   € Øˆr   c                 ó   — d S rF   r5   r$   s      r   r0   z NotValidCallback.on_fit_task_end}   rG   r   N)r<   r=   r>   r?   r   r0   r5   r   r   rD   rD   w   s8   € € € € € ØHÐHðð ð ðð ð ð ð r   rD   c                   ó   — e Zd ZdZddœd„ZdS )ÚNotValidHookCallbackzIInvalid callback since it has invalid parameters in the hooks signatures.N)Únot_valid_kwargc                ó   — d S rF   r5   )r   r!   r"   rK   s       r   r+   z&NotValidHookCallback.on_fit_task_begin„   rG   r   )r<   r=   r>   r?   r+   r5   r   r   rJ   rJ   �   s6   € € € € € ØSÐSàGKð ð ð ð ð ð ð r   rJ   c                   óL   ‡ — e Zd ZdZdˆ fd„	Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ xZ	S )	ÚFailingCallbackz.A callback that raises an error at some point.Nc                 óV   •— t          ¦   «                              ¦   «          || _        d S rF   )Úsuperr   Úfail_at)r   rQ   Ú	__class__s     €r   r   zFailingCallback.__init__‹   s$   ø€ Ý‰Œ×ÒÑÔÐØˆŒˆˆr   c                 ó€   •— t          ¦   «                              ||¦  «         | j        dk    rt          d¦  «        ‚d S )Nr   z Failing callback failed at setup)rP   r   rQ   Ú
ValueError©r   r!   r"   rR   s      €r   r   zFailingCallback.setup�   s?   ø€ Ý‰Œ�Š�i Ñ)Ô)Ð)ØŒ<˜7Ò"Ð"ÝÐ?Ñ@Ô@Ð@ð #Ð"r   c                 ó€   •— t          ¦   «                              ||¦  «         | j        dk    rt          d¦  «        ‚d S )Nr+   z,Failing callback failed at on_fit_task_begin)rP   r+   rQ   rT   rU   s      €r   r+   z!FailingCallback.on_fit_task_begin”   sB   ø€ Ý‰Œ×!Ò! )¨WÑ5Ô5Ð5ØŒ<Ð.Ò.Ð.ÝÐKÑLÔLÐLð /Ð.r   c                 ó€   •— t          ¦   «                              ||¦  «         | j        dk    rt          d¦  «        ‚d S )Nr0   z*Failing callback failed at on_fit_task_end)rP   r0   rQ   rT   rU   s      €r   r0   zFailingCallback.on_fit_task_end™   sB   ø€ Ý‰Œ×Ò 	¨7Ñ3Ô3Ð3ØŒ<Ð,Ò,Ð,ÝÐIÑJÔJÐJð -Ð,r   c                 ó€   •— t          ¦   «                              ||¦  «         | j        dk    rt          d¦  «        ‚d S )Nr2   z#Failing callback failed at teardown)rP   r2   rQ   rT   rU   s      €r   r2   zFailingCallback.teardownž   sA   ø€ Ý‰Œ×Ò˜ GÑ,Ô,Ð,ØŒ<˜:Ò%Ð%ÝÐBÑCÔCÐCð &Ð%r   rF   )
r<   r=   r>   r?   r   r   r+   r0   r2   Ú__classcell__©rR   s   @r   rN   rN   ˆ   s¿   ø€ € € € € Ø8Ð8ðð ð ð ð ð ðAð Að Að Að Að
Mð Mð Mð Mð Mð
Kð Kð Kð Kð Kð
Dð Dð Dð Dð Dð Dð Dð Dð Dr   rN   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚStopFitCallbackz8A callback with a `on_fit_task_end` hook returning True.c                 óL   •— t          ¦   «                              ||¦  «         dS )NT©rP   r0   rU   s      €r   r0   zStopFitCallback.on_fit_task_end§   s"   ø€ Ý‰Œ×Ò 	¨7Ñ3Ô3Ð3Øˆtr   ©r<   r=   r>   r?   r0   rY   rZ   s   @r   r\   r\   ¤   s>   ø€ € € € € ØBÐBðð ð ð ð ð ð ð ð r   r\   c                   ó*   ‡ — e Zd ZdZdddœˆ fd„
Zˆ xZS )ÚNotRequiredKwargsCallbackzFA callback with a `on_fit_task_end` not requiring all possible kwargs.N©r&   r'   c                óR   •— t          ¦   «                              ||||¬¦  «         d S )Nrb   r^   )r   r!   r"   r&   r'   rR   s        €r   r0   z)NotRequiredKwargsCallback.on_fit_task_end¯   s*   ø€ Ý‰Œ×Ò 	¨7°a¸1ÐÑ=Ô=Ð=Ð=Ð=r   r_   rZ   s   @r   ra   ra   ¬   sM   ø€ € € € € ØPÐPà7;¸tð >ð >ð >ð >ð >ð >ð >ð >ð >ð >ð >r   ra   c                   óf   — e Zd ZU dZi Zeed<   dd„Z ed¬¦  «        	 	 ddd	œd
„¦   «         Z	d„ Z
dS )ÚMaxIterEstimatora+  A class that mimics the behavior of an estimator.

    The iterative part uses a loop with a max number of iterations known in advance.

    This estimator computes arbitrary predictions by averaging the feature
    values and multiplying the result by the number of iterations done
    in fit.
    Ú_parameter_constraintsé   çü©ñÒMbP?c                 ó"   — || _         || _        d S rF   ©Úmax_iterÚcomputation_intensity©r   rk   rl   s      r   r   zMaxIterEstimator.__init__¿   ó   € Ø ˆŒØ%:ˆÔ"Ð"Ð"r   F©Úprefer_skip_nested_validationN)Úsample_weightc          	      óÊ  ‡— |                       | j        ¬¦  «        }|�d|ini }|                     | |||¬¦  «         t          | j        ¦  «        D ]lŠ|                     d‰› �¬¦  «        }|                     | |||¬¦  «         t          j        | j        ¦  «         |                     | |||ˆfd„¬¦  «        r nŒm‰dz   | _	        |                     | |||i ¬¦  «         | S )	N©Úmax_subtasksrq   ©r!   r&   r'   r(   z
iteration ©Ú	task_namec                  ó   •— d‰ dz   iS )NÚn_iter_é   r5   )Úis   €r   ú<lambda>z&MaxIterEstimator.fit.<locals>.<lambda>Ü   s   ø€ °9¸aÀ!¹eÐ2D€ r   )r!   r&   r'   r(   Úreconstruction_attributesrz   ©
Ú_init_callback_contextrk   Úcall_on_fit_task_beginÚrangeÚ
subcontextÚtimeÚsleeprl   Úcall_on_fit_task_endry   )r   r&   r'   rq   Úcallback_ctxr(   r‚   r{   s          @r   ÚfitzMaxIterEstimator.fitÃ   sC  ø€ ð ×2Ò2ÀÄÐ2ÑNÔNˆØ7DÐ7P�O ]Ð3Ð3ÐVXˆØ×+Ò+°d¸aÀ1ÈxÐ+ÑXÔXÐXå�t”}Ñ%Ô%ð 	ð 	ˆAØ%×0Ò0Ð;KÈÐ;KÐ;KÐ0ÑLÔLˆJØ×-Ò-Ø ! q°8ð .ñ ô ð õ ŒJ�tÔ1Ñ2Ô2Ð2à×.Ò.ØØØØ!Ø*DÐ*DÐ*DÐ*Dð /ñ ô ð ð �ðð ˜1‘uˆŒà×)Ò)ØØØØØ&(ð 	*ñ 	
ô 	
ð 	
ð ˆr   c                 ó>   — t          j        |d¬¦  «        | j        z  S )Nrz   )Úaxis)ÚnpÚmeanry   ©r   r&   s     r   ÚpredictzMaxIterEstimator.predictì   s   € ÝŒw�q˜qÐ!Ñ!Ô! D¤LÑ0Ð0r   ©rg   rh   ©NN)r<   r=   r>   r?   rf   ÚdictÚ__annotations__r   r   r‡   r�   r5   r   r   re   re   ³   sœ   € € € € € € ðð ð $&Ð˜DÐ%Ð%Ñ%ð;ð ;ð ;ð ;ð €\°Ð6Ñ6Ô6ð Ø
ð&ð
 ð&ð &ð &ð &ñ 7Ô6ð&ðP1ð 1ð 1ð 1ð 1r   re   c                   óV   — e Zd ZU dZi Zeed<   d	d„Z ed¬¦  «        d
d„¦   «         Z	dS )ÚWhileEstimatorz”A class that mimics the behavior of an estimator.

    The iterative part uses a while loop with a number of iterations unknown in
    advance.
    rf   rh   c                 ó   — || _         d S rF   )rl   )r   rl   s     r   r   zWhileEstimator.__init__ù   s   € Ø%:ˆÔ"Ð"Ð"r   Fro   Nc                 ón  — |                       d ¬¦  «        }|                     | ||¬¦  «         d}	 |                     ¦   «         }|                     | ||¬¦  «         t          j        | j        ¦  «         |                     | ||¬¦  «        rn|dk    rn|dz  }Œk|                     | ||¬¦  «         | S )Nrs   ©r!   r&   r'   r   Trg   rz   )r   r€   r‚   rƒ   r„   rl   r…   ©r   r&   r'   r†   r{   r‚   s         r   r‡   zWhileEstimator.fitü   sØ   € à×2Ò2ÀÐ2ÑEÔEˆØ×+Ò+°d¸aÀ1Ð+ÑEÔEÐEàˆð	Ø%×0Ò0Ñ2Ô2ˆJØ×-Ò-¸ÀÀQÐ-ÑGÔGÐGåŒJ�tÔ1Ñ2Ô2Ð2à×.Ò.¸ÀÀaÐ.ÑHÔHð Øà�BŠwˆwØà�‰FˆAð	ð 	×)Ò)°D¸AÀÐ)ÑCÔCÐCàˆr   )rh   r�   ©
r<   r=   r>   r?   rf   r�   r‘   r   r   r‡   r5   r   r   r“   r“   ð   su   € € € € € € ðð ð $&Ð˜DÐ%Ð%Ñ%ð;ð ;ð ;ð ;ð €\°Ð6Ñ6Ô6ðð ð ñ 7Ô6ðð ð r   r“   c                   ó2   — e Zd ZdZdd„Zedd„¦   «         ZdS )	ÚThirdPartyEstimatorzaA class that mimics a third-party estimator with callback support only using
    public API.
    rg   rh   c                 ó"   — || _         || _        d S rF   rj   rm   s      r   r   zThirdPartyEstimator.__init__  rn   r   Nc                 óœ  — |                       | j        ¬¦  «        }|                     | ||¬¦  «         t          | j        ¦  «        D ]a}|                     ¦   «         }|                     | ||¬¦  «         t          j        | j        ¦  «         |                     | ||¬¦  «        r nŒb|                     | ||¬¦  «         |dz   | _	        | S )Nrs   r–   rz   r~   r—   s         r   r‡   zThirdPartyEstimator.fit  sá   € à×2Ò2ÀÄÐ2ÑNÔNˆØ×+Ò+°d¸aÀ1Ð+ÑEÔEÐEå�t”}Ñ%Ô%ð 	ð 	ˆAØ%×0Ò0Ñ2Ô2ˆJØ×-Ò-¸ÀÀQÐ-ÑGÔGÐGåŒJ�tÔ1Ñ2Ô2Ð2à×.Ò.¸ÀÀaÐ.ÑHÔHð Ø�ðð 	×)Ò)°D¸AÀÐ)ÑCÔCÐCà˜1‘uˆŒàˆr   rŽ   r�   ©r<   r=   r>   r?   r   r   r‡   r5   r   r   rš   rš     sR   € € € € € ðð ð;ð ;ð ;ð ;ð ðð ð ñ „^ðð ð r   rš   c                   ód   ‡ — e Zd ZU dZi Zeed<   d
ˆ fd„	Z ed¬¦  «        dˆ fd	„	¦   «         Z	ˆ xZ
S )ÚParentFitEstimatorz=A class that mimics an estimator using its parent fit method.rf   rg   rh   c                 óL   •— t          ¦   «                              ||¦  «         d S rF   )rP   r   )r   rk   rl   rR   s      €r   r   zParentFitEstimator.__init__8  s$   ø€ Ý‰Œ×Ò˜Ð#8Ñ9Ô9Ð9Ð9Ð9r   Fro   Nc                 óH   •— t          ¦   «                              ||¦  «        S rF   )rP   r‡   )r   r&   r'   rR   s      €r   r‡   zParentFitEstimator.fit;  s   ø€ å‰wŒw�{Š{˜1˜aÑ Ô Ð r   rŽ   r�   )r<   r=   r>   r?   rf   r�   r‘   r   r   r‡   rY   rZ   s   @r   rŸ   rŸ   3  sŽ   ø€ € € € € € ØGÐGà#%Ð˜DÐ%Ð%Ñ%ð:ð :ð :ð :ð :ð :ð €\°Ð6Ñ6Ô6ð!ð !ð !ð !ð !ñ 7Ô6ð!ð !ð !ð !ð !r   rŸ   c                   ó(   — e Zd ZdZdd„Zd	d„Zd„ ZdS )
ÚNoCallbackEstimatorz:A class that mimics an estimator without callback support.rg   rh   c                 ó"   — || _         || _        d S rF   rj   rm   s      r   r   zNoCallbackEstimator.__init__C  rn   r   Nc                 óf   — t          | j        ¦  «        D ]}t          j        | j        ¦  «         Œ| S rF   )r�   rk   rƒ   r„   rl   )r   r&   r'   r{   s       r   r‡   zNoCallbackEstimator.fitG  s6   € Ý�t”}Ñ%Ô%ð 	3ð 	3ˆAÝŒJ�tÔ1Ñ2Ô2Ð2Ð2àˆr   c                 ó@   — t          j        |j        d         ¦  «        S )Nr   )rŠ   ÚzerosÚshaperŒ   s     r   r�   zNoCallbackEstimator.predictM  s   € ÝŒx˜œ œ
Ñ#Ô#Ð#r   rŽ   r�   )r<   r=   r>   r?   r   r‡   r�   r5   r   r   r£   r£   @  sQ   € € € € € ØDÐDð;ð ;ð ;ð ;ðð ð ð ð$ð $ð $ð $ð $r   r£   c                   óX   — e Zd ZU dZi Zeed<   	 dd„Z ed¬	¦  «        dd
„¦   «         Z	dS )ÚMetaEstimatora0  A class that mimics the behavior of a meta-estimator.

    It has two levels of iterations. The outer level uses parallelism and the inner
    level is done in a function that is not a method of the class. That function must
    therefore receive the estimator and the callback context as arguments.
    rf   é   é   NÚ	processesc                 óL   — || _         || _        || _        || _        || _        d S rF   )r!   Ún_outerÚn_innerÚn_jobsÚprefer)r   r!   r¯   r°   r±   r²   s         r   r   zMetaEstimator.__init__[  s+   € ð #ˆŒØˆŒØˆŒØˆŒØˆŒˆˆr   Fro   c                 óŒ  ‡ ‡‡‡‡‡— ‰                       ‰ j        d¬¦  «        Š|�d|ini Š‰                     ‰ ‰‰‰¬¦  «         ˆˆ fd„t          ‰ j        ¦  «        D ¦   «         Š t	          ‰ j        ‰ j        ¬¦  «        ˆˆˆˆ ˆfd„t          ‰ j        ¦  «        D ¦   «         ¦  «         ‰                     ‰ ‰‰‰¬¦  «         ‰ S )NF)rt   Úsequential_subtasksrq   ru   c                 óJ   •— g | ]}‰                      d |‰j        ¬¦  «        ‘Œ S )Úouter)rw   Útask_idrt   )r‚   r°   )r6   r{   r†   r   s     €€r   r9   z%MetaEstimator.fit.<locals>.<listcomp>l  sI   ø€ ð #
ð #
ð #
ð ð ×#Ò#Ø!¨1¸4¼<ð $ñ ô ð#
ð #
ð #
r   )r±   r²   c           
   3   ót   •K  — | ]2} t          t          ¦  «        ‰‰j        ‰‰‰‰|         ¬ ¦  «        V — Œ3dS ))r&   r'   r(   Úouter_callback_ctxN)r   Ú_fit_subestimatorr!   )r6   r{   r&   r(   Úouter_callback_contextsr   r'   s     €€€€€r   ú	<genexpr>z$MetaEstimator.fit.<locals>.<genexpr>s  sl   øè è € ð 
9
ð 
9
ð ð '�GÕ%Ñ&Ô&ØØ”ØØØ!Ø#:¸1Ô#=ðñ ô ð
9
ð 
9
ð 
9
ð 
9
ð 
9
ð 
9
r   )r   r¯   r€   r�   r   r±   r²   r…   )r   r&   r'   rq   r†   r(   r»   s   ``` @@@r   r‡   zMetaEstimator.fitd  s)  øøøøøø€ à×2Ò2Øœ¸5ð 3ñ 
ô 
ˆð 8EÐ7P�O ]Ð3Ð3ÐVXˆØ×+Ò+°d¸aÀ1ÈxÐ+ÑXÔXÐXð#
ð #
ð #
ð #
ð #
õ ˜4œ<Ñ(Ô(ð	#
ñ #
ô #
Ðð 	9�˜œ¨D¬KÐ8Ñ8Ô8ð 
9
ð 
9
ð 
9
ð 
9
ð 
9
ð 
9
ð 
9
ð 
9
õ ˜4œ<Ñ(Ô(ð
9
ñ 
9
ô 
9
ñ 
	
ô 
	
ð 
	
ð 	×)Ò)°D¸AÀÈXÐ)ÑVÔVÐVàˆr   )r«   r¬   Nr­   )NNNr˜   r5   r   r   rª   rª   Q  s|   € € € € € € ðð ð $&Ð˜DÐ%Ð%Ñ%ð DOðð ð ð ð €\°Ð6Ñ6Ô6ðð ð ñ 7Ô6ðð ð r   rª   c                óÀ  — |                      | |||¬¦  «         t          | j        ¦  «        D ]–}t          |¦  «        }|                     d¬¦  «        }|                     |¦  «        5  |                      | |||¬¦  «          |j        d||dœ|¤Ž |                     | |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   Œ—|                     | |||¬¦  «         d S )Nru   Úinnerrv   rb   r5   )r€   r�   r°   r   r‚   Úpropagate_callback_contextr‡   r…   )	Úmeta_estimatorÚinner_estimatorr&   r'   r(   r¹   r{   ÚestÚ	inner_ctxs	            r   rº   rº   „  sr  € ð ×-Ò-Ø  A¨°Xð .ñ ô ð õ �>Ô)Ñ*Ô*ð ð ˆÝ�OÑ$Ô$ˆà&×1Ò1¸GÐ1ÑDÔDˆ	Ø×1Ò1°#Ñ6Ô6ð 		ð 		Ø×,Ò,Ø(¨A°¸Xð -ñ ô ð ð ˆCŒGÐ)�a˜1Ð)Ð) Ð)Ð)Ð)à×*Ò*Ø(¨A°¸Xð +ñ ô ð ð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		øð ×+Ò+Ø  A¨°Xð ,ñ ô ð ð ð s   Á*AB9Â9B=	Ã B=	c                   ó0   — e Zd ZdZd„ Zedd„¦   «         ZdS )ÚHeterogeneousMetaEstimatorz9A meta-estimator that fits a list of estimators in order.c                 ó   — || _         d S rF   )Ú
estimators)r   rÇ   s     r   r   z#HeterogeneousMetaEstimator.__init__¢  s   € Ø$ˆŒˆˆr   Nc                 ó¬  — |                       t          | j        ¦  «        ¬¦  «        }|                     | ||¬¦  «         t	          | j        ¦  «        D ]æ\  }}|rd|j        j        › �nd|› �}|                     |¬¦  «        }|�ƒt          |¦  «        }| 	                    |¦  «        5  |                     | ||¬¦  «         | 
                    ||¦  «         |                     | ||¬¦  «         d d d ¦  «         n# 1 swxY w Y   Œ¶|                     | ||¬¦  «         |                     | ||¬¦  «         Œç|                     | ||¬¦  «         | S )Nrs   r–   zfit zskip rv   )r   r:   rÇ   r€   Ú	enumeraterR   r<   r‚   r   r¿   r‡   r…   )r   r&   r'   r†   r{   rÂ   rw   r‚   s           r   r‡   zHeterogeneousMetaEstimator.fit¥  sÂ  € à×2Ò2ÅÀDÄOÑ@TÔ@TÐ2ÑUÔUˆØ×+Ò+°d¸aÀ1Ð+ÑEÔEÐEå ¤Ñ0Ô0ð 	Jð 	J‰FˆAˆsØ;>ÐOÐ7˜sœ}Ô5Ð7Ð7Ð7ÀKÈAÀKÀKˆIØ%×0Ò0¸9Ð0ÑEÔEˆJØˆÝ˜C‘j”j�Ø×:Ò:¸3Ñ?Ô?ð Nð NØ×5Ò5ÀÈÈQÐ5ÑOÔOÐOØ—G’G˜A˜q‘M”M�MØ×3Ò3¸dÀaÈ1Ð3ÑMÔMÐMðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nøð
 ×1Ò1¸DÀAÈÐ1ÑKÔKÐKØ×/Ò/¸$À!ÀqÐ/ÑIÔIÐIÐIà×)Ò)°D¸AÀÐ)ÑCÔCÐCàˆs   Â,AC?Ã?D	ÄD	r�   r�   r5   r   r   rÅ   rÅ   Ÿ  sI   € € € € € ØCÐCð%ð %ð %ð ðð ð ñ „^ðð ð r   rÅ   c                   ó*   — e Zd ZdZedd„¦   «         ZdS )ÚNoSubtaskEstimatorz7A class mimicking an estimator without subtasks in fit.Nc                 óŠ   — |                       ¦   «                              | ||¬¦  «        }|                     | ||¬¦  «         | S )Nr–   )r   r€   r…   )r   r&   r'   r†   s       r   r‡   zNoSubtaskEstimator.fit¿  sR   € à×2Ò2Ñ4Ô4×KÒKØ˜a 1ð Lñ 
ô 
ˆð 	×)Ò)°D¸AÀÐ)ÑCÔCÐCàˆr   r�   )r<   r=   r>   r?   r   r‡   r5   r   r   rË   rË   ¼  s8   € € € € € ØAÐAàð	ð 	ð 	ñ „^ð	ð 	ð 	r   rË   )&rƒ   ÚnumpyrŠ   ÚpytestÚsklearn.baser   r   r   Úsklearn.callbackr   r   Úsklearn.callback._transportr   r	   Úsklearn.utils.fixesr
   Úsklearn.utils.parallelr   r   ÚmarkÚskipifÚskip_callback_test_if_wasmr   rA   rD   rJ   rN   r\   ra   re   r“   rš   rŸ   r£   rª   rº   rÅ   rË   r5   r   r   ú<module>r×      s{  ðð €€€à Ð Ð Ð Ø €€€à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø (Ð (Ð (Ð (Ð (Ð (Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4à#œ[×/Ò/ØØ7ð 0ñ ô Ð ðRMð RMð RMð RMð RMñ RMô RMð RMðj
!ð 
!ð 
!ð 
!ð 
!Ð&7ñ 
!ô 
!ð 
!ðð ð ð ð ñ ô ð ðð ð ð ð Ð,ñ ô ð ðDð Dð Dð Dð DÐ'ñ Dô Dð Dð8ð ð ð ð Ð'ñ ô ð ð>ð >ð >ð >ð >Ð 1ñ >ô >ð >ð:1ð :1ð :1ð :1ð :1Ð+¨]ñ :1ô :1ð :1ðz"ð "ð "ð "ð "Ð)¨=ñ "ô "ð "ðJð ð ð ð Ð.ñ ô ð ð<
!ð 
!ð 
!ð 
!ð 
!Ð)ñ 
!ô 
!ð 
!ð$ð $ð $ð $ð $˜-ñ $ô $ð $ð"0ð 0ð 0ð 0ð 0Ð(¨-ñ 0ô 0ð 0ðfð ð ð6ð ð ð ð Ð!5ñ ô ð ð:ð ð ð ð Ð-¨}ñ ô ð ð ð r   