Ë
    ÷Q(hy  ã                   óh   — d dl mZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ d„ Z G d	„ d
e«      Zy)é    )Údeepcopyé   )ÚBaseEstimator)ÚNotFittedError)Úget_tags)Úavailable_if)Úcheck_is_fittedc                 ó   ‡ — ˆ fd„}|S )zSCheck that final_estimator has `attr`.

    Used together with `available_if`.
    c                 ó2   •— t        | j                  ‰«       y©NT)ÚgetattrÚ	estimator)ÚselfÚattrs    €úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/frozen/_frozen.pyÚcheckz_estimator_has.<locals>.check   s   ø€ ä�—‘ Ô%Øó    © )r   r   s   ` r   Ú_estimator_hasr      s   ø€ ôð
 €Lr   c                   ój   — e Zd ZdZd„ Z e ed«      «      d„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zdd
„Zd„ Zy)ÚFrozenEstimatoraö  Estimator that wraps a fitted estimator to prevent re-fitting.

    This meta-estimator takes an estimator and freezes it, in the sense that calling
    `fit` on it has no effect. `fit_predict` and `fit_transform` are also disabled.
    All other methods are delegated to the original estimator and original estimator's
    attributes are accessible as well.

    This is particularly useful when you have a fitted or a pre-trained model as a
    transformer in a pipeline, and you'd like `pipeline.fit` to have no effect on this
    step.

    Parameters
    ----------
    estimator : estimator
        The estimator which is to be kept frozen.

    See Also
    --------
    None: No similar entry in the scikit-learn documentation.

    Examples
    --------
    >>> from sklearn.datasets import make_classification
    >>> from sklearn.frozen import FrozenEstimator
    >>> from sklearn.linear_model import LogisticRegression
    >>> X, y = make_classification(random_state=0)
    >>> clf = LogisticRegression(random_state=0).fit(X, y)
    >>> frozen_clf = FrozenEstimator(clf)
    >>> frozen_clf.fit(X, y)  # No-op
    FrozenEstimator(estimator=LogisticRegression(random_state=0))
    >>> frozen_clf.predict(X)  # Predictions from `clf.predict`
    array(...)
    c                 ó   — || _         y ©N©r   )r   r   s     r   Ú__init__zFrozenEstimator.__init__>   s	   € Ø"ˆ�r   Ú__getitem__c                 ó:   —  | j                   j                  |i |¤ŽS )zƒ__getitem__ is defined in :class:`~sklearn.pipeline.Pipeline` and             :class:`~sklearn.compose.ColumnTransformer`.
        )r   r   )r   ÚargsÚkwargss      r   r   zFrozenEstimator.__getitem__A   s    € ð
 *ˆt�~‰~×)Ñ)¨4Ð:°6Ñ:Ð:r   c                 óR   — |dv rt        |› d�«      ‚t        | j                  |«      S )N)Úfit_predictÚfit_transformz( is not available for frozen estimators.)ÚAttributeErrorr   r   )r   Únames     r   Ú__getattr__zFrozenEstimator.__getattr__H   s1   € ð Ð3Ñ3Ü  D 6Ð)QÐ!RÓSÐSÜ�t—~‘~ tÓ,Ð,r   c                 ó   — | S r   r   ©r   s    r   Ú__sklearn_clone__z!FrozenEstimator.__sklearn_clone__O   s   € Øˆr   c                 óN   — 	 t        | j                  «       y# t        $ r Y yw xY w)NTF)r	   r   r   r'   s    r   Ú__sklearn_is_fitted__z%FrozenEstimator.__sklearn_is_fitted__R   s(   € ð	Ü˜DŸN™NÔ+ØøÜò 	Ùð	ús   ‚ ˜	$£$c                 ó0   — t        | j                  «       | S )aG  No-op.

        As a frozen estimator, calling `fit` has no effect.

        Parameters
        ----------
        X : object
            Ignored.

        y : object
            Ignored.

        *args : tuple
            Additional positional arguments. Ignored, but present for API compatibility
            with `self.estimator`.

        **kwargs : dict
            Additional keyword arguments. Ignored, but present for API compatibility
            with `self.estimator`.

        Returns
        -------
        self : object
            Returns the instance itself.
        )r	   r   )r   ÚXÚyr   r   s        r   ÚfitzFrozenEstimator.fitY   s   € ô4 	˜Ÿ™Ô'Øˆr   c                 óT   — |j                  dd«      }|�|| _        |rt        d«      ‚y)aZ  Set the parameters of this estimator.

        The only valid key here is `estimator`. You cannot set the parameters of the
        inner estimator.

        Parameters
        ----------
        **kwargs : dict
            Estimator parameters.

        Returns
        -------
        self : FrozenEstimator
            This estimator.
        r   NzÆYou cannot set parameters of the inner estimator in a frozen estimator since calling `fit` has no effect. You can use `frozenestimator.estimator.set_params` to set parameters of the inner estimator.)Úpopr   Ú
ValueError)r   r   r   s      r   Ú
set_paramszFrozenEstimator.set_paramsv   s;   € ð  —J‘J˜{¨DÓ1ˆ	ØÐ Ø&ˆDŒNÙÜðóð ð r   c                 ó   — d| j                   iS )ah  Get parameters for this estimator.

        Returns a `{"estimator": estimator}` dict. The parameters of the inner
        estimator are not included.

        Parameters
        ----------
        deep : bool, default=True
            Ignored.

        Returns
        -------
        params : dict
            Parameter names mapped to their values.
        r   r   )r   Údeeps     r   Ú
get_paramszFrozenEstimator.get_params‘   s   € ð  ˜TŸ^™^Ð,Ð,r   c                 óP   — t        t        | j                  «      «      }d|_        |S r   )r   r   r   Ú
_skip_test)r   Útagss     r   Ú__sklearn_tags__z FrozenEstimator.__sklearn_tags__£   s!   € Üœ §¡Ó0Ó1ˆØˆŒØˆr   N)T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r%   r(   r*   r.   r2   r5   r9   r   r   r   r   r      sN   „ ñ òD#ñ ‘. Ó/Ó0ñ;ó 1ð;ò-òòòò:ó6-ó$r   r   N)Úcopyr   Úbaser   Ú
exceptionsr   Úutilsr   Úutils.metaestimatorsr   Úutils.validationr	   r   r   r   r   r   ú<module>rD      s,   ðõ å  Ý 'Ý Ý /Ý .òôK�mõ Kr   