U
    9%e                     @   s0   d dl Z d dlZdgZG dd dZdd ZdS )    N
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:

    >>> 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   X/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sklearn/utils/deprecation.py__init__!   s    zdeprecated.__init__c                 C   s6   t |tr| |S t |tr(| |S | |S dS )zPCall method

        Parameters
        ----------
        obj : object
        N)
isinstancetype_decorate_classproperty_decorate_property_decorate_fun)r   objr   r   r   __call__$   s
    



zdeprecated.__call__c                    sH   d|j   | jr d| j 7  |j fdd}||_d|_ |_|S )NzClass %s is deprecated; %sc                    s2   t j td tjkr"t| S | f||S N)category)warningswarnFutureWarningobject__new__)clsargskwargsmsgnewr   r   wrapped@   s    

z+deprecated._decorate_class.<locals>.wrappedr   )__name__r   r   Zdeprecated_original)r   r   r   r   r   r   r   9   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  | |S r   )r   r   r   r   r   funr   r   r   r   T   s    z)deprecated._decorate_fun.<locals>.wrapped)r    r   	functoolswraps__wrapped__)r   r#   r   r   r"   r   r   M   s    
zdeprecated._decorate_func                    s&   | j  tt fdd}|S )Nc                     s   t j td j| |S r   )r   r   r   fgetr!   r   propr   r   r   b   s    z.deprecated._decorate_property.<locals>.wrapped)r   r   r$   r%   )r   r)   r   r   r(   r   r   _   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krg }dddd |D k}|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>q   s      z"_is_deprecated.<locals>.<listcomp>)getattrjoin)funcZclosuresZis_deprecatedr   r   r   _is_deprecatedk   s    r6   )r$   r   __all__r   r6   r   r   r   r   <module>   s   d