a
    shp                  	   @  s   U d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	 ddl
mZ dZG dd	 d	eZdad
ed< dddddddddddZddddZddddddddddddZdS )zN
A module that implements tooling to enable easy warnings about deprecations.
    )annotationsN)AnyTextIO)parse)__version__zDEPRECATION: c                   @  s   e Zd ZdS )PipDeprecationWarningN)__name__
__module____qualname__ r   r   [/var/www/html/assistant/venv/lib/python3.9/site-packages/pip/_internal/utils/deprecation.pyr      s   r   r   _original_showwarningzWarning | strztype[Warning]strintzTextIO | Nonez
str | NoneNone)messagecategoryfilenamelinenofilelinereturnc                 C  sZ   |d ur$t d urVt | ||||| n2t|trDtd}||  nt | ||||| d S )Nzpip._internal.deprecations)r   
issubclassr   logging	getLoggerwarning)r   r   r   r   r   r   loggerr   r   r   _showwarning   s    

r   )r   c                   C  s(   t jdtdd td u r$t jatt _d S )NdefaultT)append)warningssimplefilterr   r   showwarningr   r   r   r   r   install_warning_logger.   s    r#   )feature_flagissuez
int | None)reasonreplacementgone_inr$   r%   r   c                 C  s   |duot tt |k}| t df||s.dndf|df||sBdndf|dfg}dd	d
 |D }|rpt|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. Should be a complete sentence.
    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 an error if pip's current version is greater than or equal to
        this.
    feature_flag:
        Command-line flag of the form --use-feature={feature_flag} for testing
        upcoming functionality.
    issue:
        Issue number on the tracker that would serve as a useful place for
        users to find related discussion and provide feedback.
    Nz{}z*pip {} will enforce this behaviour change.z*Since pip {}, this is no longer supported.zA possible replacement is {}.zEYou can use the flag --use-feature={} to test the upcoming behaviour.z@Discussion can be found at https://github.com/pypa/pip/issues/{} c                 s  s,   | ]$\}}|d ur|d ur| |V  qd S )N)format).0valueZ
format_strr   r   r   	<genexpr>t   s   zdeprecated.<locals>.<genexpr>   )r   
stacklevel)r   current_versionDEPRECATION_MSG_PREFIXjoinr   r    warn)r&   r'   r(   r$   r%   Zis_goneZmessage_partsr   r   r   r   
deprecated9   s2    		
r4   )NN)__doc__
__future__r   r   r    typingr   r   Zpip._vendor.packaging.versionr   pipr   r0   r1   Warningr   r   __annotations__r   r#   r4   r   r   r   r   <module>   s    	  