U
    @vg                     @   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-gw11q0wt/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   
