o
    hU                     @  s   d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ erFdd
lmZ ddlmZ eeZedddZG dd deZdddZG dd deeZdS )a&  
Contains command classes which may interact with an index / the network.

Unlike its sister module, req_command, this module still uses lazy imports
so commands which don't always hit the network (e.g. list w/o --outdated or
--uptodate) don't need waste time importing PipSession and friends.
    )annotationsN)	lru_cache)Values)TYPE_CHECKING)certifi)Command)CommandContextMixIn)
SSLContext
PipSessionreturnSSLContext | Nonec                  C  s   t jdk rtd d S zdd l} W n ty!   td Y d S w zddlm} W n ty9   td Y d S w |	| j
}|t  |S )N)   
   z7Disabling truststore because Python version isn't 3.10+r   z1Disabling truststore since ssl support is missing)
truststorez5Disabling truststore because platform isn't supported)sysversion_infologgerdebugsslImportErrorwarningpip._vendorr   r	   PROTOCOL_TLS_CLIENTload_verify_locationsr   where)r   r   ctx r   R/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/cli/index_command.py_create_truststore_ssl_context   s$   



r   c                      sJ   e Zd ZdZd fddZedd	d
ZdddZ		ddddZ  Z	S )SessionCommandMixinzE
    A class mixin for command classes needing _build_session().
    r   Nonec                   s   t    d | _d S )N)super__init___session)self	__class__r   r   r#   ;   s   

zSessionCommandMixin.__init__optionsr   list[str] | Nonec                 C  sL   g }t |ddst |dd}|r|| t |dd}|r"|| |p%dS )z7Return a list of index urls from user-provided options.no_indexF	index_urlNextra_index_urls)getattrappendextend)clsr(   
index_urlsurlurlsr   r   r   _get_index_urls?   s   

z#SessionCommandMixin._get_index_urlsr   c                 C  s0   | j du r| | || _ | j dusJ | j S )zGet a default-managed session.N)r$   enter_context_build_session)r%   r(   r   r   r   get_default_sessionM   s   
z'SessionCommandMixin.get_default_sessionNretries
int | Nonetimeoutc                 C  s   ddl m} |j}|rtj|sJ d|jvrt }nd }||r(tj|dnd |d ur/|n|j	|j
| ||d}|jrB|j|_|jrI|j|_|jsN|rX|d urT|n|j|_|jrj|j|jd|_d|_|j|_|j |j_|j|j_|S )Nr   r
   zlegacy-certszhttp-v2)cacher8   trusted_hostsr1   ssl_context)httphttpsF)pip._internal.network.sessionr   	cache_dirospathisabsdeprecated_features_enabledr   joinr8   r<   r4   certverifyclient_certr:   proxyproxies	trust_env	pip_proxyno_inputauth	promptingkeyring_provider)r%   r(   r8   r:   r   rA   r=   sessionr   r   r   r6   W   s8   
	

z"SessionCommandMixin._build_session)r   r!   )r(   r   r   r)   )r(   r   r   r   )NN)r(   r   r8   r9   r:   r9   r   r   )
__name__
__module____qualname____doc__r#   classmethodr4   r7   r6   __classcell__r   r   r&   r   r    6   s    
r    rR   r   r(   r   r!   c                 C  s   ddl m} || | d S )Nr   )pip_self_version_check)!pip._internal.self_outdated_checkrY   )rR   r(   checkr   r   r   _pip_self_version_check   s   r\   c                   @  s   e Zd ZdZd	ddZdS )
IndexGroupCommandz
    Abstract base class for commands with the index_group options.

    This also corresponds to the commands that permit the pip version check.
    r(   r   r   r!   c                 C  s   t |dsJ |js|jrdS z(| j|dtd|jd}| t|| W d   W dS 1 s0w   Y  W dS  tyM   t	d tj
ddd	 Y dS w )
z
        Do the pip version check if not disabled.

        This overrides the default behavior of not doing the check.
        r*   Nr      )r8   r:   z6There was an error checking the latest version of pip.zSee below for errorT)exc_info)hasattrdisable_pip_version_checkr*   r6   minr:   r\   	Exceptionr   r   r   )r%   r(   rR   r   r   r   handle_pip_version_check   s    
&
z*IndexGroupCommand.handle_pip_version_checkN)r(   r   r   r!   )rS   rT   rU   rV   rd   r   r   r   r   r]      s    r]   )r   r   )rR   r   r(   r   r   r!   )rV   
__future__r   loggingrB   r   	functoolsr   optparser   typingr   r   r   pip._internal.cli.base_commandr   !pip._internal.cli.command_contextr   r   r	   r@   r   	getLoggerrS   r   r   r    r\   r]   r   r   r   r   <module>   s(    

U