o
    \hB                     @   sL   d dl Z d dlZd dlmZ dgZG dd dZdd Zdd Zd	d
 ZdS )    N)	signature
deprecatedc                   @   s:   e Zd ZdZdddZdd Zdd Zd	d
 Zdd ZdS )r   a  Decorator to mark a function or class as deprecated.

    Issue a warning when the function is called/the class is instantiated and
    adds a warning to the docstring.

    The optional extra argument will be appended to the deprecation message
    and the docstring. Note: to use this with the default value for extra, put
    in an empty of parentheses:

    Examples
    --------
    >>> from sklearn.utils import deprecated
    >>> deprecated()
    <sklearn.utils.deprecation.deprecated object at ...>
    >>> @deprecated()
    ... def some_function(): pass

    Parameters
    ----------
    extra : str, default=''
          To be added to the deprecation messages.
     c                 C   s
   || _ d S )N)extra)selfr    r   \/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/sklearn/utils/deprecation.py__init__&   s   
zdeprecated.__init__c                 C   s2   t |tr
| |S t |tr| |S | |S )zPCall method

        Parameters
        ----------
        obj : object
        )
isinstancetype_decorate_classproperty_decorate_property_decorate_fun)r   objr   r   r   __call__)   s
   




zdeprecated.__call__c                    sV   d|j   | jr d| j 7  |jt|} fdd}||_d|_ |_||_|S )NzClass %s is deprecated; %sc                    s8   t j td tju rt| S | g|R i |S N)category)warningswarnFutureWarningobject__new__)clsargskwargsmsgnewr   r   wrappedF   s   

z+deprecated._decorate_class.<locals>.wrappedr   )__name__r   r   r   deprecated_original__signature__)r   r   sigr    r   r   r   r   >   s   
zdeprecated._decorate_classc                    s@   d j  | jrd| j 7 t  fdd} |_|S )zDecorate function funzFunction %s is deprecatedr   c                     s   t jtd  | i |S r   )r   r   r   r   r   funr   r   r   r    ]   s   z)deprecated._decorate_fun.<locals>.wrapped)r!   r   	functoolswraps__wrapped__)r   r'   r    r   r&   r   r   V   s   
zdeprecated._decorate_func                    s(   | j  ttj fdd}|S )Nc                     s   t j td j| i |S r   )r   r   r   fgetr%   r   propr   r   r    k   s   z.deprecated._decorate_property.<locals>.wrapped)r   r   r(   r)   r+   )r   r-   r    r   r,   r   r   h   s
   
zdeprecated._decorate_propertyN)r   )	r!   
__module____qualname____doc__r	   r   r   r   r   r   r   r   r   r      s    
c                 C   s4   t | dg }|du rg }dddd |D v }|S )z>Helper to check if func is wrapped by our deprecated decorator__closure__Nr   r   c                 S   s   g | ]}t |jtr|jqS r   )r
   cell_contentsstr).0cr   r   r   
<listcomp>z   s    z"_is_deprecated.<locals>.<listcomp>)getattrjoin)funcclosuresis_deprecatedr   r   r   _is_deprecatedt   s   r<   c                 C   sL   | dur|durt d| du r|du rt d|dur$tdt |S | S )zKHelper to deprecate the `Xt` argument in favor of `X` in inverse_transform.Nz%Cannot use both X and Xt. Use X only.z(Missing required positional argument: X.z;Xt was renamed X in version 1.5 and will be removed in 1.7.)	TypeErrorr   r   r   )XXtr   r   r   "_deprecate_Xt_in_inverse_transform   s   r@   c                 C   s8   | dkrt dt |durtd| S |du rdS |S )zCHelper to deprecate force_all_finite in favor of ensure_all_finite.r   zX'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.Nzb'force_all_finite' and 'ensure_all_finite' cannot be used together. Pass `ensure_all_finite` only.T)r   r   r   
ValueError)force_all_finiteensure_all_finiter   r   r   _deprecate_force_all_finite   s   rD   )	r(   r   inspectr   __all__r   r<   r@   rD   r   r   r   r   <module>   s   i