
0c@_ö  ã               @   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 rz d d l m Z m Z d Z Gd	 d
 „  d
 e ƒ Z d a d 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   ú>/tmp/pip-build-jynh7p1z/pip/pip/_internal/utils/deprecation.pyr      s   r   c             C   s   | d  k	 r4 t  d  k	 r{ t  |  | | | | | ƒ nG t | t ƒ rb t j d ƒ } | j |  ƒ 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   s8   t  j d t d d ƒt d  k r4 t  j a t t  _ d  S)NÚdefaultÚappendT)ÚwarningsÚsimplefilterr   r   Úshowwarningr   r   r   r   r   Úinstall_warning_logger2   s    	r    c             C   s—   |  t  d f | d f | d f | d f g } d j d d „  | Dƒ ƒ } | d k	 rz t t ƒ t | ƒ k rz t | ƒ ‚ t j | d	 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   s0   |  ]& \ } } | d  k	 r | j  | ƒ Vq d  S)N)Úformat)Ú.0ÚvalÚtemplater   r   r   ú	<genexpr>a   s    zdeprecated.<locals>.<genexpr>Nr   Ú
stacklevelé   )ÚDEPRECATION_MSG_PREFIXÚjoinr   Úcurrent_versionr   r   Úwarn)ÚreasonÚreplacementZgone_inZissueZ	sentencesr   r   r   r   Ú
deprecated>   s    		$r/   )Ú__doc__Ú
__future__r   r   r   Zpip._vendor.packaging.versionr   Úpipr   r+   Zpip._internal.utils.typingr   Ztypingr   r   r)   ÚWarningr   r   r   r    r/   r   r   r   r   Ú<module>   s   