U
    «ÃT_ö  ã                   @   s�   d Z ddlmZ ddlZddlZddlmZ ddlmZ	 ddl
mZ erXddlmZmZ dZG d	d
„ d
eƒZdaddd„Zdd„ Zddd„ZdS )zN
A module that implements tooling to enable easy warnings about deprecations.
é    )Úabsolute_importN)Úparse)Ú__version__)ÚMYPY_CHECK_RUNNING)ÚAnyÚOptionalzDEPRECATION: c                   @   s   e Zd ZdS )ÚPipDeprecationWarningN)Ú__name__Ú
__module__Ú__qualname__© r   r   úC/tmp/pip-unpacked-wheel-8u7dkzi1/pip/_internal/utils/deprecation.pyr      s   r   c                 C   sZ   |d k	r$t d k	rVt | |||||ƒ n2t|tƒrDt d¡}| | ¡ nt | |||||ƒ d S )Nzpip._internal.deprecations)Ú_original_showwarningÚ
issubclassr   ÚloggingÚ	getLoggerÚwarning)ÚmessageÚcategoryÚfilenameÚlinenoÚfileÚlineÚloggerr   r   r   Ú_showwarning!   s*         ÿ

     ÿr   c                   C   s(   t jdtdd� td kr$t jatt _d S )NÚdefaultT)Úappend)ÚwarningsÚsimplefilterr   r   Úshowwarningr   r   r   r   r   Úinstall_warning_logger2   s    r    c                 C   sh   | t d f|df|df|dfg}d dd„ |D ƒ¡}|dk	rTttƒt|ƒkrTt|ƒ‚tj|td	d
� dS )aÅ  Helper to deprecate existing functionality.

    reason:
        Textual reason shown to the user about why this functionality has
        been deprecated.
    replacement:
        Textual suggestion shown to the user about what alternative
        functionality they can use.
    gone_in:
        The version of pip does this functionality should get removed in.
        Raises errors if pip's current version is greater than or equal to
        this.
    issue:
        Issue number on the tracker that would serve as a useful place for
        users to find related discussion and provide feedback.

    Always pass replacement, gone_in and issue as keyword arguments for clarity
    at the call site.
    z{}z2pip {} will remove support for this functionality.zA possible replacement is {}.zPYou can find discussion regarding this at https://github.com/pypa/pip/issues/{}.ú c                 s   s$   | ]\}}|d k	r|  |¡V  qd S )N)Úformat)Ú.0ÚvalÚtemplater   r   r   Ú	<genexpr>`   s     zdeprecated.<locals>.<genexpr>Né   )r   Ú
stacklevel)ÚDEPRECATION_MSG_PREFIXÚjoinr   Úcurrent_versionr   r   Úwarn)ÚreasonÚreplacementÚgone_inÚissueÚ	sentencesr   r   r   r   Ú
deprecated>   s    
ÿü	
ÿr2   )NN)N)Ú__doc__Ú
__future__r   r   r   Zpip._vendor.packaging.versionr   Úpipr   r+   Úpip._internal.utils.typingr   Útypingr   r   r)   ÚWarningr   r   r   r    r2   r   r   r   r   Ú<module>   s   
