Ë
    äØjjÁG  ã                   ó8  — d 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	m
Z
mZmZ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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$ ddl%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7 ddl8m9Z9 e	rddl:m;Z;  ejx                  e=«      Z>ded   fd„Z? G d„ de«      Z@ G d„ d ee@«      ZAe7j„                  e7j†                  e7jˆ                  gZEd&d!„ZFd"e
de
fd#„ZG G d$„ d%eA«      ZHy)'a  Contains the Command base classes that depend on PipSession.

The classes in this module are in a separate module so the commands not
needing download / PackageFinder capability don't unnecessarily import the
PackageFinder machinery and all its vendored dependencies, etc.
é    N)Úpartial)ÚValues)ÚTYPE_CHECKINGÚAnyÚListÚOptionalÚTuple)Ú
WheelCache)Ú
cmdoptions)ÚCommand)ÚCommandContextMixIn)ÚCommandErrorÚPreviousBuildDirError)ÚLinkCollector)ÚPackageFinder)ÚSelectionPreferences)ÚTargetPython)Ú
PipSession)ÚBuildTracker)ÚRequirementPreparer)Úinstall_req_from_editableÚinstall_req_from_lineÚ#install_req_from_parsed_requirementÚinstall_req_from_req_string)Úparse_requirements)ÚInstallRequirement)ÚBaseResolver)Úpip_self_version_check)ÚTempDirectoryÚTempDirectoryTypeRegistryÚtempdir_kinds)Úrunning_under_virtualenv)Ú
SSLContextÚreturnr#   c                  ó  — t         j                  dk  rt        d«      ‚	 dd l} 	 ddlm} |j                  | j                  «      S # t        $ r t
        j                  d«       Y y w xY w# t        $ r}t        d|› �«      ‚d }~ww xY w)N)é   é
   z9The truststore feature is only available for Python 3.10+r   z1Disabling truststore since ssl support is missing)Ú
truststorez'The truststore feature is unavailable: )ÚsysÚversion_infor   ÚsslÚImportErrorÚloggerÚwarningÚpip._vendorr(   r#   ÚPROTOCOL_TLS_CLIENT)r+   r(   Úes      ú_/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.pyÚ_create_truststore_ssl_contextr3   2   s�   € Ü
×Ñ˜'Ò!ÜÐVÓWÐWðÛð
JÝ*ð × Ñ  ×!8Ñ!8Ó9Ð9øô ò Ü�‰ÐJÔKÙðûô ò JÜÐDÀQÀCÐHÓIÐIûðJús(    A ¥A* ÁA'Á&A'Á*	BÁ3BÂBc                   óŠ   ‡ — e Zd ZdZdˆ fd„Zededeee	      fd„«       Z
dedefd„Z	 	 	 ddedee   dee   d	edef
d
„Zˆ xZS )ÚSessionCommandMixinzE
    A class mixin for command classes needing _build_session().
    r$   c                 ó0   •— t         ‰| �  «        d | _        y ©N)ÚsuperÚ__init__Ú_session)ÚselfÚ	__class__s    €r2   r9   zSessionCommandMixin.__init__J   s   ø€ Ü‰ÑÔØ.2ˆ�ó    Úoptionsc                 ó¬   — 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)Úclsr>   Ú
index_urlsÚurlÚurlss        r2   Ú_get_index_urlsz#SessionCommandMixin._get_index_urlsN   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     r2   Úget_default_sessionz'SessionCommandMixin.get_default_session\   sE   € à�=‰=Ð Ø ×.Ñ.¨t×/BÑ/BÀ7Ó/KÓLˆDŒMð —=‘=Ð,Ð,Ð,Ø�}‰}Ðr=   ÚretriesÚtimeoutÚfallback_to_certific                 óô  — |j                   }|r!t        j                  j                  |«      sJ ‚d|j                  v r	 t        «       }nd }t        |r t        j                  j                  |d«      nd |�|n|j                  |j                  | j                  |«      |¬«      }|j                  r|j                  |_        |j                  r|j                  |_        |j                  s|r|�|n|j                  |_        |j                   r|j                   |j                   dœ|_        |j$                   |j&                  _        |j*                  |j&                  _        |S # t        $ r	 |s‚ d }Y �Œ*w xY w)Nr(   zhttp-v2)ÚcacherO   Útrusted_hostsrG   Ússl_context)ÚhttpÚhttps)Ú	cache_dirÚosÚpathÚisabsÚfeatures_enabledr3   Ú	Exceptionr   ÚjoinrO   rT   rJ   ÚcertÚverifyÚclient_certrP   ÚproxyÚproxiesÚno_inputÚauthÚ	promptingÚkeyring_provider)r;   r>   rO   rP   rQ   rX   rU   Úsessions           r2   rM   z"SessionCommandMixin._build_sessionf   sE  € ð ×%Ñ%ˆ	Ù¤§¡§¡¨iÔ 8Ð8Ð8à˜7×3Ñ3Ñ3ð#Ü<Ó>‘ð ˆKäÙ8A”"—'‘'—,‘,˜y¨)Ô4ÀtØ&Ð2‘G¸¿¹Ø!×/Ñ/Ø×+Ñ+¨GÓ4Ø#ô
ˆð �<Š<Ø$Ÿ\™\ˆGŒNð ×ÒØ"×.Ñ.ˆGŒLð �?Š?™gØ)0Ð)<™gÀ'Ç/Á/ˆGŒOð �=Š=àŸ™Ø Ÿ™ñˆGŒOð &-×%5Ñ%5Ð!5ˆ�‰ÔØ(/×(@Ñ(@ˆ�‰Ô%àˆøôM ò #Ù*ØØ"“ð#ús   ¿
E% Å%E7Å6E7©r$   N)NNF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r9   Úclassmethodr   r   r   ÚstrrJ   r   rN   ÚintÚboolrM   Ú__classcell__©r<   s   @r2   r5   r5   D   s“   ø„ ñõ3ð ð" fð "°¸$¸s¹)Ñ1Dò "ó ð"ð¨6ð °jó ð "&Ø!%Ø$)ñ3àð3ð ˜#‘ð3ð ˜#‘ð	3ð
 "ð3ð 
÷3r=   r5   c                   ó    — e Zd ZdZdeddf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.
    r>   r$   Nc                 óê   — t        |d«      sJ ‚|j                  s|j                  ry| j                  |dt	        d|j
                  «      d¬«      }|5  t        ||«       ddd«       y# 1 sw Y   yxY w)z€
        Do the pip version check if not disabled.

        This overrides the default behavior of not doing the check.
        r@   Nr   é   T)rO   rP   rQ   )ÚhasattrÚdisable_pip_version_checkr@   rM   ÚminrP   r   )r;   r>   rh   s      r2   Úhandle_pip_version_checkz*IndexGroupCommand.handle_pip_version_check¤   s|   € ô �w 
Ô+Ð+Ð+à×,Ò,°×0@Ò0@Øð ×%Ñ%ØØÜ˜˜7Ÿ?™?Ó+ð
 !%ð &ó 	
ˆð ñ 	5Ü" 7¨GÔ4÷	5÷ 	5ñ 	5ús   ÁA)Á)A2)rj   rk   rl   rm   r   r{   © r=   r2   ru   ru   œ   s   „ ñð5°ð 5¸4ô 5r=   ru   c                  óä   — t        «       ryt        t        d«      syt        j                  dk(  st        j                  dk(  ryt        j
                  «       dk7  ryt        j                  d«       y)züOutput a warning for sudo users on Unix.

    In a virtual environment, sudo pip still writes to virtualenv.
    On Windows, users may run pip as Administrator without issues.
    This warning only applies to Unix root users outside of virtualenv.
    NÚgetuidÚwin32Úcygwinr   zÔRunning pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv)r"   rx   rY   r)   Úplatformr~   r-   r.   r|   r=   r2   Úwarn_if_run_as_rootr‚   Æ   sX   € ô  Ô!ØÜ”2�xÔ Øô ‡|�|�wÒ¤#§,¡,°(Ò":Øä	‡y�yƒ{�aÒØä
‡N�Nð	,õr=   Úfuncc           	      ó|   ‡ ‡— dt         ddfd„Šdt        dt        dt        t           dt
        t           fˆˆ fd„}|S )	zNDecorator for common logic related to managing temporary
    directories.
    Úregistryr$   Nc                 ó>   — t         D ]  }| j                  |d«       Œ y )NF)ÚKEEPABLE_TEMPDIR_TYPESÚ
set_delete)r…   Úts     r2   Úconfigure_tempdir_registryz0with_cleanup.<locals>.configure_tempdir_registryé   s!   € Ü'ò 	*ˆAØ×Ñ  5Õ)ñ	*r=   r;   r>   Úargsc                 ó²   •— | j                   €J ‚|j                  r ‰| j                   «       	  ‰| ||«      S # t        $ r  ‰| j                   «       ‚ w xY wr7   )Útempdir_registryÚno_cleanr   )r;   r>   r‹   rŠ   rƒ   s      €€r2   Úwrapperzwith_cleanup.<locals>.wrapperí   sd   ø€ ð ×$Ñ$Ð0Ð0Ð0Ø×ÒÙ& t×'<Ñ'<Ô=ð	Ù˜˜g tÓ,Ð,øÜ$ò 	ñ ' t×'<Ñ'<Ô=Øð	ús	   ¯	9 ¹A)r    ÚRequirementCommandr   r   r   r   rp   )rƒ   r�   rŠ   s   ` @r2   Úwith_cleanupr‘   ä   sK   ù€ ð
*Ô-Fð *È4ó *ðÜ ðÜ+1ðÜ9=¼c¹ðä	”#‰öð  €Nr=   c                   óh  ‡ — e Zd Zdededdfˆ fd„Zededefd„«       Ze		 	 dde
ded	ed
edededee   dedefd„«       Ze		 	 	 	 	 	 	 	 ddedededee   dedededededee   deeedf      defd„«       Zdee   deded
edee   f
d„Zededdfd„«       Z	 	 d ded
edee   dee   def
d„Zˆ xZS )!r�   r‹   Úkwr$   Nc                 ó~   •— t        ‰| �  |i |¤Ž | j                  j                  t	        j
                  «       «       y r7   )r8   r9   Úcmd_optsÚ
add_optionr   rŽ   )r;   r‹   r“   r<   s      €r2   r9   zRequirementCommand.__init__  s0   ø€ Ü‰Ñ˜$Ð% "Ò%à�‰× Ñ ¤×!4Ñ!4Ó!6Õ7r=   r>   c                 ó"   — d| j                   v ryy)zEDetermines which resolver should be used, based on the given options.zlegacy-resolverÚlegacyÚ
resolvelib)Údeprecated_features_enabled©r>   s    r2   Údetermine_resolver_variantz-RequirementCommand.determine_resolver_variant  s   € ð  × CÑ CÑCØàr=   Útemp_build_dirÚbuild_trackerrh   ÚfinderÚuse_user_siteÚdownload_dirÚ	verbosityc	                 ó‚  — |j                   }	|	€J ‚d}
| j                  |«      }|dk(  r&d|j                  v }|r=t        j	                  d«       n'd}
d}d|j                  v rt        j	                  d«       t        |	|j                  ||j                  |j                  |||j                  ||j                  ||||
¬«      S )zQ
        Create a RequirementPreparer instance for the given parameters.
        Fr™   z	fast-depszÊpip is using lazily downloaded wheels using HTTP range requests to obtain dependency information. This experimental feature is enabled through --use-feature=fast-deps and it is not ready for production.Tz;fast-deps has no effect when used with the legacy resolver.)Ú	build_dirÚsrc_dirr¡   Úbuild_isolationÚcheck_build_depsrž   rh   Úprogress_barrŸ   Úrequire_hashesr    Ú
lazy_wheelr¢   Úlegacy_resolver)rZ   rœ   r\   r-   r.   r   r¥   r¦   r§   r¨   r©   )rF   r�   r>   rž   rh   rŸ   r    r¡   r¢   Útemp_build_dir_pathr«   Úresolver_variantrª   s                r2   Úmake_requirement_preparerz,RequirementCommand.make_requirement_preparer  sÜ   € ð -×1Ñ1ÐØ"Ð.Ð.Ð.Øˆà×9Ñ9¸'ÓBÐØ˜|Ò+Ø$¨×(@Ñ(@Ð@ˆJÙÜ—‘ð"õð #ˆOØˆJØ˜g×6Ñ6Ñ6Ü—‘ØQôô #Ø)Ø—O‘OØ%Ø#×3Ñ3Ø$×5Ñ5Ø'ØØ ×-Ñ-ØØ"×1Ñ1Ø'Ø!ØØ+ô
ð 	
r=   ÚpreparerÚwheel_cacheÚignore_installedÚignore_requires_pythonÚforce_reinstallÚupgrade_strategyÚ
use_pep517Úpy_version_info.c                 ó®  — t        t        |j                  |
¬«      }| j                  |«      }|dk(  rRddl}|j
                  j                  j                  j                  j                  ||||||j                  ||||	|¬«      S ddl}|j
                  j                  j                  j                  j                  ||||||j                  ||||	|¬«      S )zF
        Create a Resolver instance for the given parameters.
        )Úisolatedrµ   r™   r   N)r¯   rŸ   r°   Úmake_install_reqr    Úignore_dependenciesr±   r²   r³   r´   r¶   )r   r   Úisolated_moderœ   Ú,pip._internal.resolution.resolvelib.resolverÚ	_internalÚ
resolutionr™   ÚresolverÚResolverrº   Ú(pip._internal.resolution.legacy.resolverr˜   )rF   r¯   rŸ   r>   r°   r    r±   r²   r³   r´   rµ   r¶   r¹   r­   Úpips                  r2   Úmake_resolverz RequirementCommand.make_resolverE  sï   € ô$ #Ü'Ø×*Ñ*Ø!ô
Ðð
 ×9Ñ9¸'ÓBÐð ˜|Ò+Û?à—=‘=×+Ñ+×6Ñ6×?Ñ?×HÑHØ!ØØ'Ø!1Ø+Ø$+×$?Ñ$?Ø!1Ø'=Ø /Ø!1Ø /ð Ió ð ó 	8à�}‰}×'Ñ'×.Ñ.×7Ñ7×@Ñ@ØØØ#Ø-Ø'Ø '× ;Ñ ;Ø-Ø#9Ø+Ø-Ø+ð Aó 
ð 	
r=   c                 ó*  — g }|j                   D ]@  }t        |d|||¬«      D ]+  }t        ||j                  d¬«      }|j	                  |«       Œ- ŒB |D ]C  }	t        |	d|j                  |j                  dt        |dd«      ¬«      }|j	                  |«       ŒE |j                  D ]B  }	t        |	d|j                  |j                  t        |dd«      ¬«      }|j	                  |«       ŒD |j                  D ]r  }t        ||||¬	«      D ]^  }t        ||j                  |j                  d|j                  r|j                  j                  d«      nd¬
«      }|j	                  |«       Œ` Œt t        d„ |D «       «      rd|_        |sŒ|j                  s€|j                  std| j                  i}
|j                   r?t#         dj$                  di t'        |
dj)                  |j                   «      ¬«      ¤Ž«      ‚t#         dj$                  di |
¤Ž«      ‚|S )zS
        Parse command-line arguments into the corresponding requirements.
        T)Ú
constraintrŸ   r>   rh   F)r¸   Úuser_suppliedNÚconfig_settings)Ú
comes_fromr¸   rµ   rÆ   rÇ   )rÆ   r¸   rµ   rÇ   )rŸ   r>   rh   )r¸   rµ   rÆ   rÇ   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr7   )Úhas_hash_options)Ú.0Úreqs     r2   ú	<genexpr>z6RequirementCommand.get_requirements.<locals>.<genexpr>À  s   è ø€ Ò<¨ˆs×#Õ#Ñ<ùs   ‚ÚnamezXYou must give at least one requirement to {name} (maybe you meant "pip {name} {links}"?)ú )ÚlinkszHYou must give at least one requirement to {name} (see "pip help {name}")r|   )Úconstraintsr   r   r»   rD   r   rµ   rC   Ú	editablesr   Úrequirementsr>   ÚgetÚanyr©   rÎ   Ú
find_linksr   ÚformatÚdictr^   )r;   r‹   r>   rŸ   rh   rÓ   ÚfilenameÚ
parsed_reqÚ
req_to_addrÌ   Úoptss              r2   Úget_requirementsz#RequirementCommand.get_requirements€  sW  € ð 24ˆØ×+Ñ+ò 	0ˆHÜ0ØØØØØôò 0�
ô AØØ$×2Ñ2Ø"'ô�
ð
 ×#Ñ# JÕ/ñ0ð	0ð ò 		,ˆCÜ.ØØØ ×.Ñ.Ø"×-Ñ-Ø"Ü '¨Ð1BÀDÓ IôˆJð ×Ñ 
Õ+ð		,ð ×$Ñ$ò 	,ˆCÜ2ØØ"Ø ×.Ñ.Ø"×-Ñ-Ü '¨Ð1BÀDÓ IôˆJð ×Ñ 
Õ+ð	,ð  ×,Ñ,ò 	0ˆHÜ0Ø °À'ôò 0�
ô AØØ$×2Ñ2Ø&×1Ñ1Ø"&à!×)Ò)ð %/×$6Ñ$6×$:Ñ$:Ð;LÔ$Màô�
ð ×#Ñ# JÕ/ñ0ð	0ô  Ñ<¨|Ô<Ô<Ø%)ˆGÔ"á˜×)Ò)¨W×-AÒ-AØ˜DŸI™IÐ&ˆDØ×!Ò!Ü"ðEð >ß>D¹fñä˜t¨3¯8©8°G×4FÑ4FÓ+GÔHñóð ô #ð5ð .ß.4©fñ=Ø7;ñ=óð ð
 Ðr=   c                 ól   — | j                   }|j                  «       }|rt        j                  |«       yy)zE
        Trace basic information about the provided objects.
        N)Úsearch_scopeÚget_formatted_locationsr-   Úinfo)rŸ   rß   Ú	locationss      r2   Útrace_basic_infoz#RequirementCommand.trace_basic_infoÔ  s1   € ð ×*Ñ*ˆØ ×8Ñ8Ó:ˆ	ÙÜ�K‰K˜	Õ"ð r=   Útarget_pythonc                 ó¼   — t        j                  ||¬«      }t        d|j                  |j                  |j
                  |¬«      }t        j                  |||¬«      S )zÛ
        Create a package finder appropriate to this requirement command.

        :param ignore_requires_python: Whether to ignore incompatible
            "Requires-Python" values in links. Defaults to False.
        r›   T)Úallow_yankedÚformat_controlÚallow_all_prereleasesÚprefer_binaryr²   )Úlink_collectorÚselection_prefsrä   )r   Úcreater   rç   Úpreré   r   )r;   r>   rh   rä   r²   rê   rë   s          r2   Ú_build_package_finderz(RequirementCommand._build_package_finderß  s]   € ô '×-Ñ-¨g¸wÔGˆÜ.ØØ"×1Ñ1Ø")§+¡+Ø!×/Ñ/Ø#9ô
ˆô ×#Ñ#Ø)Ø+Ø'ô
ð 	
r=   )Nr   )NFTFFzto-satisfy-onlyNN)NN)rj   rk   rl   r   r9   Ústaticmethodr   ro   rœ   rn   r   r   r   r   rq   r   rp   r   r®   r
   r	   r   rÃ   r   r   rÝ   rã   r   rî   rr   rs   s   @r2   r�   r�      s!  ø„ ð8˜cð 8¨ð 8°õ 8ð
 ð¨Fð °sò ó ðð ð '+Øñ4
à%ð4
ð ð4
ð $ð	4
ð
 ð4
ð ð4
ð ð4
ð ˜s‘mð4
ð ð4
ð 
ò4
ó ð4
ðl ð -1Ø#Ø!%Ø',Ø %Ø 1Ø%)Ø59ñ8
à%ð8
ð ð8
ð ð	8
ð
 ˜jÑ)ð8
ð ð8
ð ð8
ð !%ð8
ð ð8
ð ð8
ð ˜T‘Nð8
ð " %¨¨S¨¡/Ñ2ð8
ð 
ò8
ó ð8
ðtRà�3‰iðRð ðRð ð	Rð
 ðRð 
Ð Ñ	!óRðh ð# ð #°4ò #ó ð#ð 15Ø15ñ
àð
ð ð
ð   Ñ-ð	
ð
 !)¨¡ð
ð 
÷
r=   r�   ri   )Irm   ÚloggingrY   r)   Ú	functoolsr   Úoptparser   Útypingr   r   r   r   r	   Úpip._internal.cacher
   Úpip._internal.clir   Úpip._internal.cli.base_commandr   Ú!pip._internal.cli.command_contextr   Úpip._internal.exceptionsr   r   Úpip._internal.index.collectorr   Ú"pip._internal.index.package_finderr   Ú$pip._internal.models.selection_prefsr   Ú"pip._internal.models.target_pythonr   Úpip._internal.network.sessionr   Ú,pip._internal.operations.build.build_trackerr   Ú pip._internal.operations.preparer   Úpip._internal.req.constructorsr   r   r   r   Úpip._internal.req.req_filer   Úpip._internal.req.req_installr   Úpip._internal.resolution.baser   Ú!pip._internal.self_outdated_checkr   Úpip._internal.utils.temp_dirr   r    r!   Úpip._internal.utils.virtualenvr"   r+   r#   Ú	getLoggerrj   r-   r3   r5   ru   Ú	BUILD_ENVÚEPHEM_WHEEL_CACHEÚ	REQ_BUILDr‡   r‚   r‘   r�   r|   r=   r2   ú<module>r     s  ðñó Û 	Û 
Ý Ý ß <Õ <å *Ý (Ý 2Ý Aß HÝ 7Ý <Ý EÝ ;Ý 4Ý EÝ @÷ó õ :Ý <Ý 6Ý D÷ñ õ
 DáÝà	ˆ×	Ñ	˜8Ó	$€ð:¨°Ñ(>ó :ô$UÐ-ô Uôp 5˜Ð!4ô  5ðH ×ÑØ×#Ñ#Ø×ÑðÐ óð<�sð ˜só ô8y
Ð*õ y
r=   