U
    (¼|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   úV/var/www/website-v5/atlas_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                     s   t jˆtd� ˆ | |ŽS ©N)Úcategory©ÚwarningsÚwarnÚFutureWarning©ÚargsÚkwargs©ÚinitÚmsgr   r   ÚwrappedB   s    z+deprecated._decorate_class.<locals>.wrappedr   )Ú__name__r   r   Údeprecated_original)r   Úclsr   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� ˆ | |ŽS 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   c