§
    ØjV  ã                   ó  — d dl Z d dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
mZmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d d	lmZmZ d d
lmZmZmZ d dlm Z  d6d„Z! e"¦   «         dfd„Z# ee!d¬¦  «        Z$d7d„Z%d„ Z& G d„ de'¦  «        Z( G d„ dee
¦  «        Z) G d„ de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
¦  «        Z0 G d%„ d&e
¦  «        Z1d8d'„Z2 G d(„ d)e¦  «        Z3 G d*„ d+ee¦  «        Z4 G d,„ d-e4e¦  «        Z5 G d.„ d/eee
¦  «        Z6 G d0„ d1eee
¦  «        Z7 G d2„ d3eee
¦  «        Z8 G d4„ d5eee
¦  «        Z9dS )9é    N)Údefaultdict)Úpartial)Úassert_array_equal)ÚBaseEstimatorÚClassifierMixinÚMetaEstimatorMixinÚRegressorMixinÚTransformerMixinÚclone)Ú_ScorerÚmean_squared_error)ÚBaseCrossValidator)Ú
GroupKFoldÚGroupsConsumerMixin)ÚMETHODSÚSIMPLE_METHODS)ÚMetadataRouterÚMethodMappingÚprocess_routing)Ú_check_partial_fit_first_callTc                 óþ  — g d¢}t          j        ¦   «         }dx}}t          |¦  «        D ] \  }}|j        t          dgz   v r	|j        } nŒ!||dz   d…         D ]}|j        t          |z   v r|j        }Œ|p|d         j        }|p|d         j        }t          | d¦  «        st          d„ ¦  «        | _        |sd„ |                     ¦   «         D ¦   «         }| j        |         |          	                    |¦  «         dS )	zòUtility function to store passed metadata to a method of obj.

    If record_default is False, kwargs whose values are "default" are skipped.
    This is so that checks on keyword arguments whose default was not changed
    are skipped.

    )Úcross_validateÚcross_val_scoreÚcross_val_predictÚlearning_curveÚpermutation_test_scoreÚvalidation_curveNÚconsuming_metricé   é   Ú_recordsc                  ó*   — t          t          ¦  «        S ©N)r   Úlist© ó    úš/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/sklearn/tests/metadata_routing_common.pyú<lambda>z!record_metadata.<locals>.<lambda>@   s   € ­;µtÑ+<Ô+<€ r&   c                 óP   — i | ]#\  }}t          |t          ¦  «        r|d k    ¯ ||“Œ$S )Údefault©Ú
isinstanceÚstr)Ú.0ÚkeyÚvals      r'   ú
<dictcomp>z#record_metadata.<locals>.<dictcomp>B   sG   € ð 
ð 
ð 
á��SÝ˜c¥3Ñ'Ô'ð
ð -0°9Ò,<Ð,<ð �à,<Ð,<Ð,<r&   )
ÚinspectÚstackÚ	enumerateÚfunctionr   Úhasattrr   r!   ÚitemsÚappend)	ÚobjÚrecord_defaultÚkwargsÚvalidation_functionsr3   ÚcalleeÚcallerÚiÚframes	            r'   Úrecord_metadatarA      sD  € ðð ð Ðõ ŒM‰OŒO€Eð
 Ð€FˆVÝ˜eÑ$Ô$ð ð ‰ˆˆ5ØŒ>�WÐ(:Ð';Ñ;Ð;Ð;Ø”^ˆFØˆEð <ð �q˜1‘u�w�w”ð $ð $ˆØŒ>�WÐ';Ñ;Ð;Ð;Ø”^ˆFøØÐ(�u˜Q”xÔ(€FØÐ(�u˜Q”xÔ(€Få�3˜
Ñ#Ô#ð >Ý"Ð#<Ð#<Ñ=Ô=ˆŒØð 
ð
ð 
à"ŸLšL™NœNð
ñ 
ô 
ˆð
 „L�Ô˜Ô ×'Ò'¨Ñ/Ô/Ð/Ð/Ð/r&   c                 ót  — t          | dt          ¦   «         ¦  «                             |t          ¦   «         ¦  «                             |t          ¦   «         ¦  «        }|sBJ d| j        j        › d|› d|› dd„ | j                             ¦   «         D ¦   «         › d�	¦   «         ‚|D �]}t          | 	                    ¦   «         ¦  «        t          | 	                    ¦   «         ¦  «        k    s4J d| 	                    ¦   «         › d	| 	                    ¦   «         › �¦   «         ‚|sŒ~|                     ¦   «         D ]\  }}	||         }
||v r,|
�*t          j        |
|	¦  «                             ¦   «         sJ ‚Œ=t          |
t          j        ¦  «        rt          |
|	¦  «         Œh|
|	u sJ d|
› d|	› d|› �¦   «         ‚Œ€�Œd
S )a®  Check whether the expected metadata is passed to the object's method.

    Parameters
    ----------
    obj : estimator object
        sub-estimator to check routed params for
    method : str
        sub-estimator's method where metadata is routed to, or otherwise in
        the context of metadata routing referred to as 'callee'
    parent : str
        the parent method which should have called `method`, or otherwise in
        the context of metadata routing referred to as 'caller'
    split_params : tuple, default=empty
        specifies any parameters which are to be checked as being a subset
        of the original values
    **kwargs : dict
        passed metadata
    r!   z1No overlapping records. Checked routing for obj `z` with callee: `z`, caller: `z*`; records exist for callee-caller pairs: c                 ó&   — g | ]\  }}|D ]}||f‘ŒŒS r%   r%   )r.   Úk1ÚdÚk2s       r'   ú
<listcomp>z+check_recorded_metadata.<locals>.<listcomp>c   s-   € ÐJÐJÐJ¡  AÈÐJÐJÀ"�B˜�8ÐJÐJÐJÐJr&   ú.z	Expected z, got Nz vs z
. Method: )ÚgetattrÚdictÚgetr$   Ú	__class__Ú__name__r!   r7   ÚsetÚkeysÚnpÚisinÚallr,   Úndarrayr   )r9   ÚmethodÚparentÚsplit_paramsÚpreserves_metadatar;   ÚrecordsÚrecordr/   ÚvalueÚrecorded_values              r'   Úcheck_recorded_metadatar\   J   s  € õ* �c˜:¥t¡v¤vÑ.Ô.×2Ò2°6½4¹6¼6ÑBÔB×FÒFÀvÍtÉvÌvÑVÔV€GØð ð ð	N¸C¼MÔ<Rð 	Nð 	NØð	Nð 	NØ-3ð	Nð 	NàJÐJ¨¬×);Ò);Ñ)=Ô)=ÐJÑJÔJð	Nð 	Nð 	Nñô ˆ7ð
 ð ñ ˆõ �6—;’;‘=”=Ñ!Ô!¥S¨¯ª©¬Ñ%7Ô%7Ò7Ð7Ð7Ø<˜Ÿš™œÐ<Ð<¨V¯[ª[©]¬]Ð<Ð<ñ 8Ô7Ð7ð "ð 	ØØ Ÿ,š,™.œ.ð 	ð 	‰JˆC�Ø# Cœ[ˆNð �lÐ"Ð" ~Ð'AÝ”w˜~¨uÑ5Ô5×9Ò9Ñ;Ô;Ð;Ð;Ð;Ð;å˜n­b¬jÑ9Ô9ð Ý& ~°uÑ=Ô=Ð=Ð=à)¨UÐ2Ð2Ð2ØQ NÐQÐQ¸ÐQÐQÈÐQÐQñ 3Ô2Ð2Ð2ñ	ðð r&   F)r:   c                 ó*  — t          | t          ¦  «        r1| D ],\  }}|�||v r	||         }nd}t          |j        |¬¦  «         Œ-dS |€g n|}t          D ]>}||v rŒt          | |¦  «        }d„ |j                             ¦   «         D ¦   «         }|rJ ‚Œ?dS )a  Check if a metadata request dict is empty.

    One can exclude a method or a list of methods from the check using the
    ``exclude`` parameter. If metadata_request is a MetadataRouter, then
    ``exclude`` can be of the form ``{"object" : [method, ...]}``.
    N)Úexcludec                 óF   — g | ]\  }}t          |t          ¦  «        s|®|‘ŒS r#   r+   )r.   ÚpropÚaliass      r'   rG   z+assert_request_is_empty.<locals>.<listcomp>”   s@   € ð 
ð 
ð 
á��eÝ˜%¥Ñ%Ô%ð
ð */Ð):ð à):Ð):Ð):r&   )r,   r   Úassert_request_is_emptyÚrouterr   rI   Úrequestsr7   )Úmetadata_requestr^   ÚnameÚroute_mappingÚ_excluderT   ÚmmrÚpropss           r'   rb   rb      sé   € õ Ð"¥NÑ3Ô3ð Ø#3ð 	Lð 	LÑˆD�-ØÐ" t¨w  Ø" 4œ=��à�Ý# MÔ$8À(ÐKÑKÔKÐKÐKØˆà�Oˆbˆb¨€GÝ ð 	ð 	ˆØ�WÐÐØÝÐ&¨Ñ/Ô/ˆð
ð 
à"œ|×1Ò1Ñ3Ô3ð
ñ 
ô 
ˆð
 ÐÐˆyÐð	ð 	r&   c                 óî   ‡— ‰                      ¦   «         D ]"\  }}t          | |¦  «        }|j        |k    sJ ‚Œ#ˆfd„t          D ¦   «         }|D ]&}t	          t          | |¦  «        j        ¦  «        rJ ‚Œ'd S )Nc                 ó   •— g | ]}|‰v¯|‘Œ	S r%   r%   )r.   rT   Ú
dictionarys     €r'   rG   z(assert_request_equal.<locals>.<listcomp>¡   s#   ø€ ÐUÐUÐU ¸FÈ*Ð<TÐ<T�VÐ<TÐ<TÐ<Tr&   )r7   rI   rd   r   Úlen)Úrequestrm   rT   rd   ri   Úempty_methodss    `    r'   Úassert_request_equalrq   œ   sž   ø€ Ø&×,Ò,Ñ.Ô.ð (ð (Ñˆ�Ý�g˜vÑ&Ô&ˆØŒ|˜xÒ'Ð'Ð'Ð'Ð'àUÐUÐUÐU­.ÐUÑUÔU€MØð :ð :ˆÝ•w˜w¨Ñ/Ô/Ô8Ñ9Ô9Ð9Ð9Ð9Ð9ð:ð :r&   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú	_Registryc                 ó   — | S r#   r%   )ÚselfÚmemos     r'   Ú__deepcopy__z_Registry.__deepcopy__¬   ó   € Øˆr&   c                 ó   — | S r#   r%   ©ru   s    r'   Ú__copy__z_Registry.__copy__¯   rx   r&   c                 óB   — dt          | ¦  «        › dd„ | D ¦   «         › d�S )Nz_Registry(n=z, estimators=c                 ó&   — g | ]}|j         j        ‘ŒS r%   )rL   rM   )r.   Úxs     r'   rG   z&_Registry.__repr__.<locals>.<listcomp>µ   s   € Ð>Ð>Ð>°A˜1œ;Ô/Ð>Ð>Ð>r&   z).)rn   rz   s    r'   Ú__repr__z_Registry.__repr__²   sD   € ðC�3˜t™9œ9ð Cð CØ>Ð>¸Ð>Ñ>Ô>ðCð Cð Cð	
r&   N)rM   Ú
__module__Ú__qualname__rw   r{   r   r%   r&   r'   rs   rs   ¦   sA   € € € € € ðð ð ðð ð ð
ð 
ð 
ð 
ð 
r&   rs   c                   ó:   — e Zd ZdZd	d„Zd
d„Zd
d„Zdd„Zd
d„ZdS )ÚConsumingRegressorac  A regressor consuming metadata.

    Parameters
    ----------
    registry : list, default=None
        If a list, the estimator will append itself to the list in order to have
        a reference to the estimator later on. Since that reference is not
        required in all tests, registration can be skipped by leaving this value
        as None.
    Nc                 ó   — || _         d S r#   ©Úregistry©ru   r†   s     r'   Ú__init__zConsumingRegressor.__init__Å   ó   € Ø ˆŒˆˆr&   r*   c                 ól   — | j         �| j                              | ¦  «         t          | ||¬¦  «         | S ©N©Úsample_weightÚmetadata©r†   r8   Úrecord_metadata_not_default©ru   ÚXÚyr�   rŽ   s        r'   Úpartial_fitzConsumingRegressor.partial_fitÈ   óE   € ØŒ=Ð$ØŒM× Ò  Ñ&Ô&Ð&å#Ø ¸ð	
ñ 	
ô 	
ð 	
ð ˆr&   c                 ól   — | j         �| j                              | ¦  «         t          | ||¬¦  «         | S r‹   r�   r‘   s        r'   ÚfitzConsumingRegressor.fitÑ   r•   r&   c                 ól   — t          | ||¬¦  «         t          j        t          |¦  «        f¬¦  «        S )NrŒ   ©Úshape)r�   rP   Úzerosrn   r‘   s        r'   ÚpredictzConsumingRegressor.predictÚ   s=   € Ý#Ø ¸ð	
ñ 	
ô 	
ð 	
õ Œx�s 1™vœv˜iÐ(Ñ(Ô(Ð(r&   c                 ó*   — t          | ||¬¦  «         dS ©NrŒ   r   ©r�   r‘   s        r'   ÚscorezConsumingRegressor.scoreà   ó'   € Ý#Ø ¸ð	
ñ 	
ô 	
ð 	
ð ˆqr&   r#   ©r*   r*   ©Nr*   r*   )	rM   r€   r�   Ú__doc__rˆ   r”   r—   rœ   r    r%   r&   r'   rƒ   rƒ   ¹   s‚   € € € € € ð	ð 	ð!ð !ð !ð !ðð ð ð ðð ð ð ð)ð )ð )ð )ðð ð ð ð ð r&   rƒ   c                   ó@   — e Zd ZdZdd„Zd„ Zdd„Zd„ Zd„ Zd	„ Z	d
„ Z
dS )ÚNonConsumingClassifierú5A classifier which accepts no metadata on any method.ç        c                 ó   — || _         d S r#   )Úalpha)ru   rª   s     r'   rˆ   zNonConsumingClassifier.__init__ê   s   € ØˆŒ
ˆ
ˆ
r&   c                 ój   — t          j        |¦  «        | _        t          j        |¦  «        | _        | S r#   )rP   ÚuniqueÚclasses_Ú	ones_likeÚcoef_©ru   r’   r“   s      r'   r—   zNonConsumingClassifier.fití   s%   € Ýœ	 !™œˆŒÝ”\ !‘_”_ˆŒ
Øˆr&   Nc                 ó   — | S r#   r%   )ru   r’   r“   Úclassess       r'   r”   z"NonConsumingClassifier.partial_fitò   rx   r&   c                 ó,   — |                       |¦  «        S r#   )rœ   ©ru   r’   s     r'   Údecision_functionz(NonConsumingClassifier.decision_functionõ   s   € Ø�|Š|˜A‰ŒÐr&   c                 ó¨   — t          j        t          |¦  «        f¬¦  «        }d|d t          |¦  «        dz  …<   d|t          |¦  «        dz  d …<   |S )Nr™   r   r    r   )rP   Úemptyrn   )ru   r’   Úy_preds      r'   rœ   zNonConsumingClassifier.predictø   sQ   € Ý”¥ Q¡¤ 	Ð*Ñ*Ô*ˆØ !ˆˆ}•�Q‘”˜1‘ˆ}ÑØ !ˆ�s�1‰vŒv˜‰{ˆ}ˆ}ÑØˆr&   c                 ó6  — t          j        t          |¦  «        t          | j        ¦  «        ft           j        ¬¦  «        }t           j                             t          j        t          | j        ¦  «        ¦  «        t          |¦  «        ¬¦  «        |d d …<   |S )N©rš   Údtype©rª   Úsize)rP   r·   rn   r­   Úfloat32ÚrandomÚ	dirichletÚones)ru   r’   Úy_probas      r'   Úpredict_probaz$NonConsumingClassifier.predict_probaþ   sr   € å”(¥# a¡&¤&­#¨d¬mÑ*<Ô*<Ð!=ÅRÄZÐPÑPÔPˆå”Y×(Ò(­r¬wµs¸4¼=Ñ7IÔ7IÑ/JÔ/JÕQTÐUVÑQWÔQWÐ(ÑXÔXˆ���‰
Øˆr&   c                 ó,   — |                       |¦  «        S r#   )rÃ   r´   s     r'   Úpredict_log_probaz(NonConsumingClassifier.predict_log_proba  s   € à×!Ò! !Ñ$Ô$Ð$r&   )r¨   r#   )rM   r€   r�   r¤   rˆ   r—   r”   rµ   rœ   rÃ   rÅ   r%   r&   r'   r¦   r¦   ç   s�   € € € € € Ø?Ð?ðð ð ð ðð ð ð
ð ð ð ðð ð ðð ð ðð ð ð%ð %ð %ð %ð %r&   r¦   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚNonConsumingRegressorr§   c                 ó   — | S r#   r%   r°   s      r'   r—   zNonConsumingRegressor.fit  rx   r&   c                 ó   — | S r#   r%   r°   s      r'   r”   z!NonConsumingRegressor.partial_fit  rx   r&   c                 óD   — t          j        t          |¦  «        ¦  «        S r#   )rP   rÁ   rn   r´   s     r'   rœ   zNonConsumingRegressor.predict  s   € ÝŒw•s˜1‘v”v‰ŒÐr&   N)rM   r€   r�   r¤   r—   r”   rœ   r%   r&   r'   rÇ   rÇ   
  sG   € € € € € Ø?Ð?ðð ð ðð ð ðð ð ð ð r&   rÇ   c                   óT   — e Zd ZdZdd„Z	 dd„Zdd„Zdd„Zdd	„Zdd
„Z	dd„Z
dd„ZdS )ÚConsumingClassifieraê  A classifier consuming metadata.

    Parameters
    ----------
    registry : list, default=None
        If a list, the estimator will append itself to the list in order to have
        a reference to the estimator later on. Since that reference is not
        required in all tests, registration can be skipped by leaving this value
        as None.

    alpha : float, default=0
        This parameter is only used to test the ``*SearchCV`` objects, and
        doesn't do anything.
    Nr¨   c                 ó"   — || _         || _        d S r#   )rª   r†   )ru   r†   rª   s      r'   rˆ   zConsumingClassifier.__init__'  s   € ØˆŒ
Ø ˆŒˆˆr&   r*   c                 óŒ   — | j         �| j                              | ¦  «         t          | ||¬¦  «         t          | |¦  «         | S r‹   )r†   r8   r�   r   )ru   r’   r“   r²   r�   rŽ   s         r'   r”   zConsumingClassifier.partial_fit+  sW   € ð Œ=Ð$ØŒM× Ò  Ñ&Ô&Ð&å#Ø ¸ð	
ñ 	
ô 	
ð 	
õ 	& d¨GÑ4Ô4Ð4Øˆr&   c                 óÐ   — | j         �| j                              | ¦  «         t          | ||¬¦  «         t          j        |¦  «        | _        t          j        |¦  «        | _        | S r‹   )r†   r8   r�   rP   r¬   r­   r®   r¯   r‘   s        r'   r—   zConsumingClassifier.fit7  sc   € ØŒ=Ð$ØŒM× Ò  Ñ&Ô&Ð&å#Ø ¸ð	
ñ 	
ô 	
ð 	
õ œ	 !™œˆŒÝ”\ !‘_”_ˆŒ
Øˆr&   c                 óÎ   — t          | ||¬¦  «         t          j        t          |¦  «        fd¬¦  «        }d|t          |¦  «        dz  d …<   d|d t          |¦  «        dz  …<   |S )NrŒ   Úint8rº   r   r    r   ©r�   rP   r·   rn   )ru   r’   r�   rŽ   r¸   s        r'   rœ   zConsumingClassifier.predictC  ss   € Ý#Ø ¸ð	
ñ 	
ô 	
ð 	
õ ”¥ Q¡¤ 	°Ð8Ñ8Ô8ˆØ !ˆ�s�1‰vŒv˜‰{ˆ}ˆ}ÑØ !ˆˆ}•�Q‘”˜1‘ˆ}ÑØˆr&   c                 óZ  — t          | ||¬¦  «         t          j        t          |¦  «        t          | j        ¦  «        ft          j        ¬¦  «        }t          j                             t          j        t          | j        ¦  «        ¦  «        t          |¦  «        ¬¦  «        |d d …<   |S )NrŒ   rº   r¼   )	r�   rP   r·   rn   r­   r¾   r¿   rÀ   rÁ   )ru   r’   r�   rŽ   rÂ   s        r'   rÃ   z!ConsumingClassifier.predict_probaL  s’   € Ý#Ø ¸ð	
ñ 	
ô 	
ð 	
õ ”(¥# a¡&¤&­#¨d¬mÑ*<Ô*<Ð!=ÅRÄZÐPÑPÔPˆå”Y×(Ò(­r¬wµs¸4¼=Ñ7IÔ7IÑ/JÔ/JÕQTÐUVÑQWÔQWÐ(ÑXÔXˆ���‰
Øˆr&   c                 óP   — t          | ||¬¦  «         |                      |¦  «        S r‹   )r�   rÃ   ©ru   r’   r�   rŽ   s       r'   rÅ   z%ConsumingClassifier.predict_log_probaU  s6   € Ý#Ø ¸ð	
ñ 	
ô 	
ð 	
ð ×!Ò! !Ñ$Ô$Ð$r&   c                 óÌ   — t          | ||¬¦  «         t          j        t          |¦  «        f¬¦  «        }d|t          |¦  «        dz  d …<   d|d t          |¦  «        dz  …<   |S )NrŒ   r™   r   r    r   rÒ   )ru   r’   r�   rŽ   Úy_scores        r'   rµ   z%ConsumingClassifier.decision_function[  sq   € Ý#Ø ¸ð	
ñ 	
ô 	
ð 	
õ ”(¥# a¡&¤& Ð+Ñ+Ô+ˆØ!"ˆ•�A‘”˜!‘��ÑØ!"ˆ�•#�a‘&”&˜A‘+�ÑØˆr&   c                 ó*   — t          | ||¬¦  «         dS rž   rŸ   r‘   s        r'   r    zConsumingClassifier.scored  r¡   r&   )Nr¨   r£   r¢   )rM   r€   r�   r¤   rˆ   r”   r—   rœ   rÃ   rÅ   rµ   r    r%   r&   r'   rÌ   rÌ     sÅ   € € € € € ðð ð!ð !ð !ð !ð
 ENð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðð ð ð ðð ð ð ð%ð %ð %ð %ðð ð ð ðð ð ð ð ð r&   rÌ   c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )Ú&ConsumingClassifierWithoutPredictProbaz×ConsumingClassifier without a predict_proba method, but with predict_log_proba.

    Used to mimic dynamic method selection such as in the `_parallel_predict_proba()`
    function called by `BaggingClassifier`.
    c                 ó    — t          d¦  «        ‚©Nz-This estimator does not support predict_proba©ÚAttributeErrorrz   s    r'   rÃ   z4ConsumingClassifierWithoutPredictProba.predict_probar  ó   € åÐLÑMÔMÐMr&   N)rM   r€   r�   r¤   ÚpropertyrÃ   r%   r&   r'   rÚ   rÚ   k  s>   € € € € € ðð ð ðNð Nñ „XðNð Nð Nr&   rÚ   c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )Ú)ConsumingClassifierWithoutPredictLogProbaz¸ConsumingClassifier without a predict_log_proba method, but with predict_proba.

    Used to mimic dynamic method selection such as in
    `BaggingClassifier.predict_log_proba()`.
    c                 ó    — t          d¦  «        ‚©Nz1This estimator does not support predict_log_probarÝ   rz   s    r'   rÅ   z;ConsumingClassifierWithoutPredictLogProba.predict_log_proba~  ó   € åÐPÑQÔQÐQr&   N)rM   r€   r�   r¤   rà   rÅ   r%   r&   r'   râ   râ   w  s>   € € € € € ðð ð ðRð Rñ „XðRð Rð Rr&   râ   c                   ó>   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         ZdS )Ú"ConsumingClassifierWithOnlyPredictz˜ConsumingClassifier with only a predict method.

    Used to mimic dynamic method selection such as in
    `BaggingClassifier.predict_log_proba()`.
    c                 ó    — t          d¦  «        ‚rÜ   rÝ   rz   s    r'   rÃ   z0ConsumingClassifierWithOnlyPredict.predict_probaŠ  rß   r&   c                 ó    — t          d¦  «        ‚rä   rÝ   rz   s    r'   rÅ   z4ConsumingClassifierWithOnlyPredict.predict_log_probaŽ  rå   r&   N)rM   r€   r�   r¤   rà   rÃ   rÅ   r%   r&   r'   rç   rç   ƒ  s\   € € € € € ðð ð ðNð Nñ „XðNð ðRð Rñ „XðRð Rð Rr&   rç   c                   ó:   — e Zd ZdZd	d„Zd
d„Zdd„Zdd„Zdd„ZdS )ÚConsumingTransformera~  A transformer which accepts metadata on fit and transform.

    Parameters
    ----------
    registry : list, default=None
        If a list, the estimator will append itself to the list in order to have
        a reference to the estimator later on. Since that reference is not
        required in all tests, registration can be skipped by leaving this value
        as None.
    Nc                 ó   — || _         d S r#   r…   r‡   s     r'   rˆ   zConsumingTransformer.__init__Ÿ  r‰   r&   r*   c                 óz   — | j         �| j                              | ¦  «         t          | ||¬¦  «         d| _        | S )NrŒ   T)r†   r8   r�   Úfitted_r‘   s        r'   r—   zConsumingTransformer.fit¢  sL   € ØŒ=Ð$ØŒM× Ò  Ñ&Ô&Ð&å#Ø ¸ð	
ñ 	
ô 	
ð 	
ð ˆŒØˆr&   c                 ó0   — t          | ||¬¦  «         |dz   S rž   rŸ   rÕ   s       r'   Ú	transformzConsumingTransformer.transform¬  ó+   € Ý#Ø ¸ð	
ñ 	
ô 	
ð 	
ð �1‰uˆr&   c                 ó„   — t          | ||¬¦  «         |                      ||||¬¦  «                             |||¬¦  «        S r‹   )r�   r—   rð   r‘   s        r'   Úfit_transformz"ConsumingTransformer.fit_transform²  s]   € õ
 	$Ø ¸ð	
ñ 	
ô 	
ð 	
ð �xŠx˜˜1¨MÀHˆxÑMÔM×WÒWØ˜]°Xð Xñ 
ô 
ð 	
r&   c                 ó0   — t          | ||¬¦  «         |dz
  S rž   rŸ   rÕ   s       r'   Úinverse_transformz&ConsumingTransformer.inverse_transform¾  rñ   r&   r#   r£   r¢   ©NN)	rM   r€   r�   r¤   rˆ   r—   rð   ró   rõ   r%   r&   r'   rë   rë   “  s‚   € € € € € ð	ð 	ð!ð !ð !ð !ðð ð ð ðð ð ð ð

ð 

ð 

ð 

ðð ð ð ð ð r&   rë   c                   ó*   — e Zd ZdZdd„Zdd„Zdd„ZdS )	Ú"ConsumingNoFitTransformTransformerzÔA metadata consuming transformer that doesn't inherit from
    TransformerMixin, and thus doesn't implement `fit_transform`. Note that
    TransformerMixin's `fit_transform` doesn't route metadata to `transform`.Nc                 ó   — || _         d S r#   r…   r‡   s     r'   rˆ   z+ConsumingNoFitTransformTransformer.__init__Ê  r‰   r&   c                 ól   — | j         �| j                              | ¦  «         t          | ||¬¦  «         | S r‹   )r†   r8   rA   r‘   s        r'   r—   z&ConsumingNoFitTransformTransformer.fitÍ  s:   € ØŒ=Ð$ØŒM× Ò  Ñ&Ô&Ð&å˜¨MÀHÐMÑMÔMÐMàˆr&   c                 ó*   — t          | ||¬¦  «         |S r‹   )rA   rÕ   s       r'   rð   z,ConsumingNoFitTransformTransformer.transformÕ  s   € Ý˜¨MÀHÐMÑMÔMÐMØˆr&   r#   ©NNNrö   )rM   r€   r�   r¤   rˆ   r—   rð   r%   r&   r'   rø   rø   Å  s\   € € € € € ðQð Qð!ð !ð !ð !ðð ð ð ðð ð ð ð ð r&   rø   c                 ó°   — |�|nt           }|�|                     |¦  «         t          |fi |¤Ž |                     dd ¦  «        }t	          | ||¬¦  «        S )Nr�   ©r�   )r   r8   r�   rK   r   )r¸   Úy_truer†   Úscorerr;   Úholderr�   s          r'   r   r   Ú  si   € ð Ð)ˆVˆVÕ/?€FØÐØ�Š˜ÑÔÐÝ Ð1Ð1¨&Ð1Ð1Ð1Ø—J’J˜°Ñ5Ô5€MÝ˜f f¸MÐJÑJÔJÐJr&   c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )ÚConsumingScorerNc                 óŽ   •— || _         t          t          || ¬¦  «        }t          ¦   «                              |di d¬¦  «         d S )N)r†   r   r   rœ   )Ú
score_funcÚsignr;   Úresponse_method)r†   r   r   Úsuperrˆ   )ru   r†   r  rL   s      €r'   rˆ   zConsumingScorer.__init__ç  sS   ø€ Ø ˆŒÝÕ-¸ÈÐNÑNÔNˆ
Ý‰Œ×ÒØ!¨°"Àið 	ñ 	
ô 	
ð 	
ð 	
ð 	
r&   r#   )rM   r€   r�   rˆ   Ú__classcell__)rL   s   @r'   r  r  æ  s=   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r&   r  c                   ó.   — e Zd Zdd„Zdd„Zd	d„Zd
d„ZdS )ÚConsumingSplitterNc                 ó   — || _         d S r#   r…   r‡   s     r'   rˆ   zConsumingSplitter.__init__ð  r‰   r&   r*   c              #   ó:  K  — | j         �| j                              | ¦  «         t          | ||¬¦  «         t          |¦  «        dz  }t	          t          d|¦  «        ¦  «        }t	          t          |t          |¦  «        ¦  «        ¦  «        }||fV — ||fV — d S )N)ÚgroupsrŽ   r    r   )r†   r8   r�   rn   r$   Úrange)ru   r’   r“   r  rŽ   Úsplit_indexÚtrain_indicesÚtest_indicess           r'   ÚsplitzConsumingSplitter.splitó  s¤   è è € ØŒ=Ð$ØŒM× Ò  Ñ&Ô&Ð&å# D°À(ÐKÑKÔKÐKå˜!‘f”f ‘kˆÝ�U 1 kÑ2Ô2Ñ3Ô3ˆÝ�E +­s°1©v¬vÑ6Ô6Ñ7Ô7ˆØ˜MÐ)Ð)Ð)Ð)Ø˜\Ð)Ð)Ð)Ð)Ð)Ð)r&   c                 ó   — dS )Nr    r%   )ru   r’   r“   r  rŽ   s        r'   Úget_n_splitszConsumingSplitter.get_n_splitsÿ  s   € Øˆqr&   c              #   óÌ   K  — t          |¦  «        dz  }t          t          d|¦  «        ¦  «        }t          t          |t          |¦  «        ¦  «        ¦  «        }|V — |V — d S )Nr    r   )rn   r$   r  )ru   r’   r“   r  r  r  r  s          r'   Ú_iter_test_indicesz$ConsumingSplitter._iter_test_indices  sg   è è € Ý˜!‘f”f ‘kˆÝ�U 1 kÑ2Ô2Ñ3Ô3ˆÝ�E +­s°1©v¬vÑ6Ô6Ñ7Ô7ˆØÐÐÐØÐÐÐÐÐr&   r#   r£   )NNNNrü   )rM   r€   r�   rˆ   r  r  r  r%   r&   r'   r  r  ï  sd   € € € € € ð!ð !ð !ð !ð
*ð 
*ð 
*ð 
*ðð ð ð ðð ð ð ð ð r&   r  c                   ó   — e Zd ZdZdS )Ú)ConsumingSplitterInheritingFromGroupKFoldz\Helper class that can be used to test TargetEncoder, that only takes specific
    splitters.N)rM   r€   r�   r¤   r%   r&   r'   r  r  
  s   € € € € € ðð ð ð r&   r  c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚMetaRegressorz(A meta-regressor which is only a router.c                 ó   — || _         d S r#   )Ú	estimator)ru   r  s     r'   rˆ   zMetaRegressor.__init__  s   € Ø"ˆŒˆˆr&   c                 ó‚   — t          | dfi |¤Ž} t          | j        ¦  «        j        ||fi |j        j        ¤Ž| _        d S ©Nr—   )r   r   r  r—   Ú
estimator_©ru   r’   r“   Ú
fit_paramsÚparamss        r'   r—   zMetaRegressor.fit  sK   € Ý   uÐ;Ð;°
Ð;Ð;ˆØ3�% ¤Ñ/Ô/Ô3°A°qÐQÐQ¸FÔ<LÔ<PÐQÐQˆŒˆˆr&   c                 óœ   — t          | ¬¦  «                             | j        t          ¦   «                              dd¬¦  «        ¬¦  «        }|S ©N©Úownerr—   ©r>   r=   ©r  Úmethod_mapping)r   Úaddr  r   ©ru   rc   s     r'   Úget_metadata_routingz"MetaRegressor.get_metadata_routing  sM   € Ý dÐ+Ñ+Ô+×/Ò/Ø”nÝ(™?œ?×.Ò.°eÀEÐ.ÑJÔJð 0ñ 
ô 
ˆð ˆr&   N©rM   r€   r�   r¤   rˆ   r—   r-  r%   r&   r'   r  r    sJ   € € € € € Ø2Ð2ð#ð #ð #ðRð Rð Rðð ð ð ð r&   r  c                   ó.   — e Zd ZdZdd„Zdd„Zd„ Zd„ ZdS )ÚWeightedMetaRegressorz*A meta-regressor which is also a consumer.Nc                 ó"   — || _         || _        d S r#   ©r  r†   ©ru   r  r†   s      r'   rˆ   zWeightedMetaRegressor.__init__$  ó   € Ø"ˆŒØ ˆŒˆˆr&   c                 óê   — | j         �| j                              | ¦  «         t          | |¬¦  «         t          | dfd|i|¤Ž} t	          | j        ¦  «        j        ||fi |j        j        ¤Ž| _        | S ©Nrþ   r—   r�   ©r†   r8   rA   r   r   r  r—   r   )ru   r’   r“   r�   r"  r#  s         r'   r—   zWeightedMetaRegressor.fit(  s‚   € ØŒ=Ð$ØŒM× Ò  Ñ&Ô&Ð&å˜¨MÐ:Ñ:Ô:Ð:Ý   uÐXÐX¸MÐXÈZÐXÐXˆØ3�% ¤Ñ/Ô/Ô3°A°qÐQÐQ¸FÔ<LÔ<PÐQÐQˆŒØˆr&   c                 óX   — t          | dfi |¤Ž} | j        j        |fi |j        j        ¤ŽS )Nrœ   )r   r   rœ   r  )ru   r’   Úpredict_paramsr#  s       r'   rœ   zWeightedMetaRegressor.predict1  s<   € Ý   yÐCÐC°NÐCÐCˆØ&ˆtŒÔ& qÐEÐE¨FÔ,<Ô,DÐEÐEÐEr&   c                 óì   — t          | ¬¦  «                             | ¦  «                             | j        t	          ¦   «                              dd¬¦  «                             dd¬¦  «        ¬¦  «        }|S )Nr&  r—   r(  rœ   r)  ©r   Úadd_self_requestr+  r  r   r,  s     r'   r-  z*WeightedMetaRegressor.get_metadata_routing5  sl   € å Ð&Ñ&Ô&ßÒ˜dÑ#Ô#ßŠSØœ.Ý,™œß’˜E¨%�Ñ0Ô0ß’˜I¨i�Ñ8Ô8ð	 ñ ô ð 	ð ˆr&   r#   )rM   r€   r�   r¤   rˆ   r—   rœ   r-  r%   r&   r'   r0  r0  !  sc   € € € € € Ø4Ð4ð!ð !ð !ð !ðð ð ð ðFð Fð Fðð ð ð ð r&   r0  c                   ó(   — e Zd ZdZdd„Zdd„Zd„ ZdS )ÚWeightedMetaClassifierzEA meta-estimator which also consumes sample_weight itself in ``fit``.Nc                 ó"   — || _         || _        d S r#   r2  r3  s      r'   rˆ   zWeightedMetaClassifier.__init__F  r4  r&   c                 óê   — | j         �| j                              | ¦  «         t          | |¬¦  «         t          | dfd|i|¤Ž} t	          | j        ¦  «        j        ||fi |j        j        ¤Ž| _        | S r6  r7  )ru   r’   r“   r�   r;   r#  s         r'   r—   zWeightedMetaClassifier.fitJ  s‚   € ØŒ=Ð$ØŒM× Ò  Ñ&Ô&Ð&å˜¨MÐ:Ñ:Ô:Ð:Ý   uÐTÐT¸MÐTÈVÐTÐTˆØ3�% ¤Ñ/Ô/Ô3°A°qÐQÐQ¸FÔ<LÔ<PÐQÐQˆŒØˆr&   c                 óÂ   — t          | ¬¦  «                             | ¦  «                             | j        t	          ¦   «                              dd¬¦  «        ¬¦  «        }|S r%  r;  r,  s     r'   r-  z+WeightedMetaClassifier.get_metadata_routingS  s]   € å Ð&Ñ&Ô&ßÒ˜dÑ#Ô#ßŠSØœ.Ý,™œ×2Ò2¸%ÈÐ2ÑNÔNð ñ ô ð 	ð ˆr&   r#   r.  r%   r&   r'   r>  r>  C  sQ   € € € € € ØOÐOð!ð !ð !ð !ðð ð ð ð	ð 	ð 	ð 	ð 	r&   r>  c                   ó.   — e Zd ZdZd„ Zdd„Zdd„Zd„ ZdS )ÚMetaTransformerzA simple meta-transformer.c                 ó   — || _         d S r#   )Útransformer)ru   rE  s     r'   rˆ   zMetaTransformer.__init__b  s   € Ø&ˆÔÐÐr&   Nc                 ó‚   — t          | dfi |¤Ž} t          | j        ¦  «        j        ||fi |j        j        ¤Ž| _        | S r  )r   r   rE  r—   Útransformer_r!  s        r'   r—   zMetaTransformer.fite  sN   € Ý   uÐ;Ð;°
Ð;Ð;ˆØ7�E $Ô"2Ñ3Ô3Ô7¸¸1ÐWÐWÀÔ@RÔ@VÐWÐWˆÔØˆr&   c                 óX   — t          | dfi |¤Ž} | j        j        |fi |j        j        ¤ŽS )Nrð   )r   rG  rð   rE  )ru   r’   r“   Útransform_paramsr#  s        r'   rð   zMetaTransformer.transformj  s>   € Ý   {ÐGÐGÐ6FÐGÐGˆØ*ˆtÔ Ô*¨1ÐMÐM°Ô0BÔ0LÐMÐMÐMr&   c                 óÂ   — t          | ¬¦  «                             | j        t          ¦   «                              dd¬¦  «                             dd¬¦  «        ¬¦  «        S )Nr&  r—   r(  rð   )rE  r*  )r   r+  rE  r   rz   s    r'   r-  z$MetaTransformer.get_metadata_routingn  sY   € Ý DÐ)Ñ)Ô)×-Ò-ØÔ(Ý(™?œ?ßŠS˜ eˆSÑ,Ô,ßŠS˜¨KˆSÑ8Ô8ð	 .ñ 
ô 
ð 	
r&   r#   )rM   r€   r�   r¤   rˆ   r—   rð   r-  r%   r&   r'   rC  rC  _  sd   € € € € € Ø$Ð$ð'ð 'ð 'ðð ð ð ð
Nð Nð Nð Nð
ð 
ð 
ð 
ð 
r&   rC  )Tr#   rö   ):r2   Úcollectionsr   Ú	functoolsr   ÚnumpyrP   Únumpy.testingr   Úsklearn.baser   r   r   r	   r
   r   Úsklearn.metrics._scorerr   r   Úsklearn.model_selectionr   Úsklearn.model_selection._splitr   r   Ú sklearn.utils._metadata_requestsr   r   Úsklearn.utils.metadata_routingr   r   r   Úsklearn.utils.multiclassr   rA   Útupler\   r�   rb   rq   r$   rs   rƒ   r¦   rÇ   rÌ   rÚ   râ   rç   rë   rø   r   r  r  r  r  r0  r>  rC  r%   r&   r'   ú<module>rW     s   ðØ €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð @Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ Jðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 CÐ BÐ BÐ BÐ BÐ Bð(0ð (0ð (0ð (0ðX ', e¡g¤gÀ$ð/ð /ð /ð /ðd &˜g oÀeÐLÑLÔLÐ ðð ð ð ð::ð :ð :ð
ð 
ð 
ð 
ð 
�ñ 
ô 
ð 
ð&+ð +ð +ð +ð +˜¨ñ +ô +ð +ð\ %ð  %ð  %ð  %ð  %˜_¨mñ  %ô  %ð  %ðF
ð 
ð 
ð 
ð 
˜N¨Mñ 
ô 
ð 
ðQð Qð Qð Qð Q˜/¨=ñ Qô Qð Qðh	Nð 	Nð 	Nð 	Nð 	NÐ-@ñ 	Nô 	Nð 	Nð	Rð 	Rð 	Rð 	Rð 	RÐ0Cñ 	Rô 	Rð 	RðRð Rð Rð Rð RÐ)<ñ Rô Rð Rð /ð /ð /ð /ð /Ð+¨]ñ /ô /ð /ðdð ð ð ð ¨ñ ô ð ð*	Kð 	Kð 	Kð 	Kð
ð 
ð 
ð 
ð 
�gñ 
ô 
ð 
ðð ð ð ð Ð+Ð-?ñ ô ð ð6ð ð ð ð Ð0AÀ:ñ ô ð ð
ð ð ð ð Ð&¨¸ñ ô ð ð$ð ð ð ð Ð.°Àñ ô ð ðDð ð ð ð Ð/°À-ñ ô ð ð8
ð 
ð 
ð 
ð 
Ð(Ð*:¸Mñ 
ô 
ð 
ð 
ð 
r&   