U ��.e� �@s�dZddlmZddlZddlZddlmZddlmZ ddl m Z e rXddl m Z mZdZGd d �d e�Zdadd d �Zd d�Zddd�ZdS)zN A module that implements tooling to enable easy warnings about deprecations. �)�absolute_importN)�parse)� __version__)�MYPY_CHECK_RUNNING)�Any�Optionalz DEPRECATION: c@s eZdZdS)�PipDeprecationWarningN)�__name__� __module__� __qualname__�r r �C/usr/lib/python3.8/site-packages/pip/_internal/utils/deprecation.pyrsrcCsZ|dk r$tdk rVt||||||�n2t|t�rDt�d�}|�|�nt||||||�dS)Nzpip._internal.deprecations)�_original_showwarning� issubclassr�loggingZ getLoggerZwarning)�message�category�filename�lineno�file�lineZloggerr r r � _showwarning!s*�   �rcCs(tjdtdd�tdkr$tjatt_dS)N�defaultT)�append)�warnings� simplefilterrr� showwarningrr r r r �install_warning_logger2srcCsh|tdf|df|df|dfg}d�dd�|D��}|dk rTtt�t|�krTt|��tj|td d �dS) 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.zA possible replacement is {}.zPYou can find discussion regarding this at https://github.com/pypa/pip/issues/{}.� css$|]\}}|dk r|�|�VqdS)N)�format)�.0�val�templater r r � `szdeprecated..N�)r� stacklevel)�DEPRECATION_MSG_PREFIX�joinr�current_versionrr�warn)�reasonZ replacementZgone_inZissueZ sentencesrr r r � deprecated>s �� �r+)NN)N)�__doc__Z __future__rrrZpip._vendor.packaging.versionrZpiprr(Zpip._internal.utils.typingr�typingrrr&�Warningrrrrr+r r r r �s