Ë
    ¨Õ°jP  ã                  ó4  — 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j8                  e«      Ze	dd„«       Z G d„ de«      Z 	 	 	 	 	 	 dd„Z!dd„Z" G d„ dee «      Z#y)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)ÚUpgradePromptc                 ó*  — 	 dd l } 	 ddlm} |j                  | j                  «      }|j                  t        j                  «       «       |S # t        $ r t        j                  d«       Y y w xY w# t        $ r t        j                  d«       Y y w xY w)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      úU/var/www/mission/venv/lib/python3.12/site-packages/pip/_internal/cli/index_command.pyÚ_create_truststore_ssl_contextr   #   s„   € ðÛð
Ý*ð
 ×
Ñ
 × 7Ñ 7Ó
8€CØ×ÑœgŸm™m›oÔ.Ø€Jøô ò Ü�‰ÐJÔKÙðûô ò Ü�‰ÐNÔOÙðús"   ‚A ‡A1 ÁA.Á-A.Á1BÂBc                  óZ   ‡ — 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().
    c                ó0   •— t         ‰| �  «        d | _        y )N)ÚsuperÚ__init__Ú_session)ÚselfÚ	__class__s    €r   r!   zSessionCommandMixin.__init__;   s   ø€ Ü‰ÑÔØ+/ˆ�ó    c                ó¬   — g }t        |dd«      s t        |dd«      }|r|j                  |«       t        |dd«      }|r|j                  |«       |xs dS )z7Return a list of index urls from user-provided options.Úno_indexFÚ	index_urlNÚextra_index_urls)ÚgetattrÚappendÚextend)ÚclsÚoptionsÚ
index_urlsÚurlÚurlss        r   Ú_get_index_urlsz#SessionCommandMixin._get_index_urls?   s_   € ð ˆ
Ü�w 
¨EÔ2Ü˜' ;°Ó5ˆCÙØ×!Ñ! #Ô&Ü�wÐ 2°DÓ9ˆÙØ×Ñ˜dÔ#àÒ!˜TÐ!r%   c                ó˜   — | j                   €3| j                  | j                  |«      «      | _         | 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Ñ/BÀ7Ó/KÓLˆDŒMð —=‘=Ð,Ð,Ð,Ø�}‰}Ðr%   c                óŽ  — ddl m} |j                  }|r!t        j                  j                  |«      sJ ‚d|j                  vrt        «       }nd } ||r t        j                  j                  |d«      nd |�|n|j                  |j                  |j                  | j                  |«      |t        |dt        «       «      ¬«      }|j                  r|j                  |_        |j"                  r|j"                  |_        |j$                  s|r|�|n|j$                  |_        |j&                  €|j(                  rS|j&                  r|j&                  |j&                  dœ|_        d|_        |j&                  |_        |j(                  |_        |j2                   |j4                  _        |j8                  |j4                  _        |S )	Nr   r   zlegacy-certszhttp-v2Úrefresh_package)ÚcacheÚretriesÚresume_retriesÚtrusted_hostsr/   Ússl_contextr8   )ÚhttpÚhttpsF)Úpip._internal.network.sessionr   Ú	cache_dirÚosÚpathÚisabsÚdeprecated_features_enabledr   Újoinr:   r;   r<   r2   r*   ÚsetÚcertÚverifyÚclient_certÚtimeoutÚproxyÚno_proxy_envÚproxiesÚ	trust_envÚ	pip_proxyÚpip_no_proxy_envÚno_inputÚauthÚ	promptingÚkeyring_provider)r#   r.   r:   rK   r   rA   r=   Úsessions           r   r5   z"SessionCommandMixin._build_sessionW   sr  € õ 	=à×%Ñ%ˆ	Ù¤§¡§¡¨iÔ 8Ð8Ð8à ×!DÑ!DÑDÜ8Ó:‰KàˆKáÙ8A”"—'‘'—,‘,˜y¨)Ô4ÀtØ&Ð2‘G¸¿¹Ø"×1Ñ1Ø!×/Ñ/Ø×+Ñ+¨GÓ4Ø#Ü# GÐ->ÄÃÓFô
ˆð �<Š<Ø$Ÿ\™\ˆGŒNð ×ÒØ"×.Ñ.ˆGŒLð �?Š?™gØ)0Ð)<™gÀ'Ç/Á/ˆGŒOð �=‰=Ð$¨×(<Ò(<Ø�}Š}à#ŸM™MØ$Ÿ]™]ñ#�”ð !&ˆGÔà '§¡ˆGÔØ'.×';Ñ';ˆGÔ$ð &-×%5Ñ%5Ð!5ˆ�‰ÔØ(/×(@Ñ(@ˆ�‰Ô%àˆr%   )ÚreturnÚNone)r.   r   rW   zlist[str] | None)r.   r   rW   r   )NN)r.   r   r:   ú
int | NonerK   rY   rW   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   Úclassmethodr2   r6   r5   Ú__classcell__)r$   s   @r   r   r   6   sY   ø„ ñõ0ð ò"ó ð"óð #Ø"ð	7àð7ð ð7ð ð	7ð
 
÷7r%   r   c                ó    — ddl m}  || |«      S )Nr   )Úpip_self_version_check_fetch)Ú!pip._internal.self_outdated_checkra   )rV   r.   ra   s      r   Ú_pip_self_version_check_fetchrc   ‘   s   € õ Oá'¨°Ó9Ð9r%   c                ó    — ddl m}  || «       y )Nr   )Úpip_self_version_check_emit)rb   re   )Úupgrade_promptre   s     r   Ú_pip_self_version_check_emitrg   ™   s   € ÝMá Õ/r%   c                  óJ   — e Zd ZdZ	 	 	 	 	 	 dd„Zej                  dd„«       Zy)ÚIndexGroupCommandz–
    Abstract base class for commands with the index_group options.

    This also corresponds to the commands that permit the pip version check.
    c                óf   — |j                   r%|j                   j                  |«      }|du ry|du ryy)zM
        Determine if pre-releases should be excluded for a package.
        TF)Úrelease_controlÚallows_prereleases)r#   r.   Úpackage_nameÚallow_prereleasess       r   Úshould_exclude_prereleasez+IndexGroupCommand.should_exclude_prerelease¦   s?   € ð ×"Ò"Ø '× 7Ñ 7× JÑ JÈ<Ó XÐØ  DÑ(ØØ" eÑ+Øð r%   c              #  ó¤  K  — t        |d«      sJ ‚|j                  s|j                  rd–— yd}	 | j                  |dt	        d|j
                  «      ¬«      }|5  t        ||«      }ddd«       	 d–— 	 t        |«       y# 1 sw Y   ŒxY w# t        $ r/ t        j                  d«       t        j                  dd¬	«       Y ŒUw xY w# t        $ r/ t        j                  d«       t        j                  dd¬	«       Y yw xY w# 	 t        |«       w # t        $ r/ t        j                  d«       t        j                  dd¬	«       Y w w xY wxY w­w)
z€
        Do the pip version check if not disabled.

        This overrides the default behavior of not doing the check.
        r'   Nr   é   )r:   rK   z6There was an error checking the latest version of pip.zSee below for errorT)Úexc_info)ÚhasattrÚdisable_pip_version_checkr'   r5   ÚminrK   rc   Ú	Exceptionr   r   Údebugrg   )r#   r.   Úargsrf   rV   s        r   Úpip_version_checkz#IndexGroupCommand.pip_version_check·   s;  è ø€ ô �w 
Ô+Ð+Ð+à×,Ò,°×0@Ò0@ÛØà/3ˆð
	?Ø×)Ñ)ØØÜ˜A˜wŸ™Ó/ð *ó ˆGð
 ñ QÜ!>¸wÈÓ!P�÷Qð	CÛðCÜ,¨^Õ<÷Qð Qûäò 	?Ü�N‰NÐSÔTÜ�L‰LÐ.¸ˆLÖ>ð	?ûô ò CÜ—‘ÐWÔXÜ—‘Ð2¸T�ÖBðCûðCÜ,¨^Õ<øÜò CÜ—‘ÐWÔXÜ—‘Ð2¸T�ÖBðCÿs”   ‚.E±*B ÁBÁ(B Á1D Á6C	 ÂEÂBÂB Â5CÃEÃCÃEÃ	5DÃ>EÄ DÄEÄEÄDÄEÄ5E
ÅEÅ	E
Å
EÅEN)r.   r   rm   r   rW   Úbool)r.   r   rx   z	list[str]rW   zIterator[None])rZ   r[   r\   r]   ro   Ú
contextlibÚcontextmanagerry   © r%   r   ri   ri   Ÿ   s@   „ ñðØðØ-;ðà	óð" ×Ñò!Có ñ!Cr%   ri   )rW   zSSLContext | None)rV   r   r.   r   rW   úUpgradePrompt | None)rf   r~   rW   rX   )$r]   Ú
__future__r   r{   ÚloggingrB   Úcollections.abcr   Ú	functoolsr   Úoptparser   Útypingr   r   r   Úpip._internal.cli.base_commandr	   Ú!pip._internal.cli.command_contextr
   r   r   Úpip._vendor.packaging.utilsr   r@   r   rb   r   Ú	getLoggerrZ   r   r   r   rc   rg   ri   r}   r%   r   ú<module>r‰      s¥   ðñõ #ã Û Û 	Ý $Ý Ý Ý  å å 2Ý AáÝå:å8Ý?à	ˆ×	Ñ	˜8Ó	$€ð òó ðô$XÐ-ô Xðv:Øð:Ø"(ð:àó:ó0ô:C˜Ð!4õ :Cr%   