
    yj                    8   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 dd
lmZ erddlmZ ddlmZ ddlmZ ddlmZ  ej        e          Ze	dd            Z G d de          Z d dZ!d!dZ" G 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)Iterator)	lru_cache)Values)TYPE_CHECKING)certifi)Command)CommandContextMixIn)
SSLContext)NormalizedName
PipSession)UpgradePromptreturnSSLContext | Nonec                 N   	 dd l } n+# t          $ r t                              d           Y d S w xY w	 ddlm} n+# t          $ r t                              d           Y d S w xY w|                    | j                  }|                    t          j
                               |S )Nr   z1Disabling truststore since ssl support is missing)
truststorez5Disabling truststore because platform isn't supported)sslImportErrorloggerwarningpip._vendorr   r   PROTOCOL_TLS_CLIENTload_verify_locationsr   where)r   r   ctxs      `/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/pip/_internal/cli/index_command.py_create_truststore_ssl_contextr   #   s    



   JKKKtt*******   NOOOtt 

 7
8
8Cgmoo...Js    $//: $A"!A"c                  R     e Zd ZdZd fdZedd            Zdd
Z	 	 dddZ xZ	S )SessionCommandMixinzE
    A class mixin for command classes needing _build_session().
    r   Nonec                V    t                                                       d | _        d S )N)super__init___session)self	__class__s    r   r$   zSessionCommandMixin.__init__;   s$    +/    optionsr   list[str] | Nonec                    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urlss        r   _get_index_urlsz#SessionCommandMixin._get_index_urls?   s     
w
E22 	'';55C '!!#&&&w 2D99 	$d###!T!r(   r   c                    | j         6|                     |                     |                    | _         | j         J | j         S )zGet a default-managed session.)r%   enter_context_build_session)r&   r)   s     r   get_default_sessionz'SessionCommandMixin.get_default_sessionM   sE    =  ..t/B/B7/K/KLLDM =,,,}r(   Nretries
int | Nonetimeoutc           	     l   ddl m} |j        }|r!t          j                            |          sJ d|j        vrt                      }nd } ||r t          j                            |d          nd ||n|j	        |j
        |j        |                     |          |          }|j        r|j        |_        |j        r|j        |_        |j        s|r||n|j        |_        |j        r'|j        |j        d|_        d|_        |j        |_        |j         |j        _        |j        |j        _        |S )Nr   r   zlegacy-certszhttp-v2)cacher;   resume_retriestrusted_hostsr3   ssl_context)httphttpsF)pip._internal.network.sessionr   	cache_dirospathisabsdeprecated_features_enabledr   joinr;   r@   rA   r6   certverifyclient_certr=   proxyproxies	trust_env	pip_proxyno_inputauth	promptingkeyring_provider)r&   r)   r;   r=   r   rF   rB   sessions           r   r9   z"SessionCommandMixin._build_sessionW   sm    	=<<<<<%	8i 8 8888!DDD8::KKK*8AK"',,y)444t&2GG"1!/++G44#
 
 
 < 	*$\GN  	/".GL ? 	Rg 	R)0)<gg'/GO = 	.  GO !&G 'G &-%5!5(/(@%r(   )r   r!   )r)   r   r   r*   )r)   r   r   r   )NN)r)   r   r;   r<   r=   r<   r   r   )
__name__
__module____qualname____doc__r$   classmethodr6   r:   r9   __classcell__)r'   s   @r   r    r    6   s         0 0 0 0 0 0 " " " ["    #"	2 2 2 2 2 2 2 2 2r(   r    rW   r   r)   r   UpgradePrompt | Nonec                &    ddl m}  || |          S )Nr   )pip_self_version_check_fetch)!pip._internal.self_outdated_checkr`   )rW   r)   r`   s      r   _pip_self_version_check_fetchrb      s*     ONNNNN''999r(   upgrade_promptr!   c                (    ddl m}  ||            d S )Nr   )pip_self_version_check_emit)ra   re   )rc   re   s     r   _pip_self_version_check_emitrf      s+    MMMMMM/////r(   c                  <    e Zd ZdZddZej        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   package_namer   r   boolc                `    |j         r&|j                             |          }|du rdS |du rdS dS )zM
        Determine if pre-releases should be excluded for a package.
        TF)release_controlallows_prereleases)r&   r)   ri   allow_prereleasess       r   should_exclude_prereleasez+IndexGroupCommand.should_exclude_prerelease   sM     " 	 ' 7 J J< X X D((u"e++t tr(   args	list[str]Iterator[None]c              #    K   t          |d          sJ |j        s|j        rdV  dS d}	 |                     |dt	          d|j                            }|5  t          ||          }ddd           n# 1 swxY w Y   nF# t          $ r9 t          	                    d           t          
                    dd	           Y nw xY w	 dV  	 t          |           dS # t          $ r: t          	                    d           t          
                    dd	           Y dS w xY w# 	 t          |           w # t          $ r9 t          	                    d           t          
                    dd	           Y w w xY wxY w)
z
        Do the pip version check if not disabled.

        This overrides the default behavior of not doing the check.
        r,   Nr      )r;   r=   z6There was an error checking the latest version of pip.zSee below for errorT)exc_info)hasattrdisable_pip_version_checkr,   r9   minr=   rb   	Exceptionr   r   debugrf   )r&   r)   rp   rc   rW   s        r   pip_version_checkz#IndexGroupCommand.pip_version_check   s(      w
+++++, 	0@ 	EEEF/3
	?))Aw// *  G
  Q Q!>w!P!PQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q 	? 	? 	?NNSTTTLL.L>>>>>	?	CEEEC,^<<<<< C C CWXXX2TBBBBBBCC,^<<<< C C CWXXX2TBBBBBCsz   -B A6*B 6A::B =A:>B A CC	D& C A D#"D#&E>(D87E>8A E;8E>:E;;E>N)r)   r   ri   r   r   rj   )r)   r   rp   rq   r   rr   )rX   rY   rZ   r[   ro   
contextlibcontextmanagerr{    r(   r   rh   rh      s\            " !C !C !C !C !C !Cr(   rh   )r   r   )rW   r   r)   r   r   r^   )rc   r^   r   r!   )$r[   
__future__r   r|   loggingrG   collections.abcr   	functoolsr   optparser   typingr   r   r   pip._internal.cli.base_commandr	   !pip._internal.cli.command_contextr
   r   r   pip._vendor.packaging.utilsr   rE   r   ra   r   	getLoggerrX   r   r   r    rb   rf   rh   r~   r(   r   <module>r      s    # " " " " "      				 $ $ $ $ $ $                               2 2 2 2 2 2 A A A A A A @::::::888888??????		8	$	$    $S S S S S- S S Sl: : : :0 0 0 0:C :C :C :C :C!4 :C :C :C :C :Cr(   