
    VPiT                       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r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 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)	lru_cache)Values)TYPE_CHECKING)certifi)Command)CommandContextMixIn)
SSLContext)NormalizedName
PipSessionreturnSSLContext | Nonec                    t           j        dk     rt                              d           d S 	 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 )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   ctxs      s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pip/_internal/cli/index_command.py_create_truststore_ssl_contextr!   !   s    
'!!NOOOt



   JKKKtt*******   NOOOtt 

 7
8
8Cgmoo...Js!   3 $AAA& &$BB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_urlsA   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_sessionO   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_hostsr6   ssl_context)httphttpsF)pip._internal.network.sessionr   	cache_dirospathisabsdeprecated_features_enabledr!   joinr>   rC   rD   r9   certverifyclient_certr@   proxyproxies	trust_env	pip_proxyno_inputauth	promptingkeyring_provider)r)   r,   r>   r@   r   rI   rE   sessions           r    r<   z"SessionCommandMixin._build_sessionY   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'   classmethodr9   r=   r<   __classcell__)r*   s   @r    r#   r#   8   s         0 0 0 0 0 0 " " " ["    #"	2 2 2 2 2 2 2 2 2r+   r#   rZ   r   r,   r   r$   c                *    ddl m}  || |           d S )Nr   )pip_self_version_check)!pip._internal.self_outdated_checkrb   )rZ   r,   checks      r    _pip_self_version_checkre      s,    QQQQQQ	E'7r+   c                  "    e Zd ZdZddZ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,   rh   allow_prereleasess       r    should_exclude_prereleasez+IndexGroupCommand.should_exclude_prerelease   sM     " 	 ' 7 J J< X X D((u"e++t tr+   r$   c                   t          |d          sJ |j        s|j        rdS 	 |                     |dt	          d|j                            }|5  t          ||           ddd           dS # 1 swxY w Y   dS # t          $ r: t          	                    d           t          
                    dd	           Y dS 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/   r<   minr@   re   	Exceptionr   r   r   )r)   r,   rZ   s      r    handle_pip_version_checkz*IndexGroupCommand.handle_pip_version_check   s2    w
+++++, 	0@ 	F	?))Aw// *  G
  : :'999: : : : : : : : : : : : : : : : : : 	? 	? 	?NNSTTTLL.L>>>>>>	?s6   -A< A/"A< /A33A< 6A37A< <A C ?C N)r,   r   rh   r   r   ri   )r,   r   r   r$   )r[   r\   r]   r^   rn   rv    r+   r    rg   rg      sF            "? ? ? ? ? ?r+   rg   )r   r   )rZ   r   r,   r   r   r$   )r^   
__future__r   loggingrJ   r   	functoolsr   optparser   typingr   r   r   pip._internal.cli.base_commandr   !pip._internal.cli.command_contextr	   r   r
   pip._vendor.packaging.utilsr   rH   r   	getLoggerr[   r   r!   r#   re   rg   rw   r+   r    <module>r      s    # " " " " "  				 



                               2 2 2 2 2 2 A A A A A A 9::::::888888		8	$	$    ,S S S S S- S S Sl   /? /? /? /? /?!4 /? /? /? /? /?r+   