Ë
    Êmxiç5  ã                  óø  — d Z ddlm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 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 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  ejp                  e9«      Z:d d„Z;e7jx                  e7jz                  e7j|                  gZ? edd¬«      Z@	 	 	 	 d!d„ZA G d„ de«      ZBy)"zðContains the RequirementCommand base class.

This class is in a separate module so the commands that do not always
need PackageFinder capability don't unnecessarily import the
PackageFinder machinery and all its vendored dependencies, etc.
é    )ÚannotationsN)Úpartial)ÚValues)ÚAnyÚCallableÚTypeVar)Ú#SubprocessBuildEnvironmentInstaller)Ú
WheelCache)Ú
cmdoptions)ÚIndexGroupCommand)ÚSessionCommandMixin)Ú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_dependency_groups)Úparse_requirements)ÚInstallRequirement)ÚBaseResolver)ÚTempDirectoryÚTempDirectoryTypeRegistryÚtempdir_kindsc                óF   — t         j                  j                  d«      dk(  S )zº
    Check if regular constraints should be ignored because
    we are in a isolated build process and build constraints
    feature is enabled but no build constraints were passed.
    Ú _PIP_IN_BUILD_IGNORE_CONSTRAINTSÚ1)ÚosÚenvironÚget©Úoptionss    úT/home/htdocs/ttos/venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.pyÚ!should_ignore_regular_constraintsr+   0   s   € ô �:‰:�>‰>Ð<Ó=ÀÑDÐDó    Ú	_CommandTÚRequirementCommand)Úboundc                ó    ‡ ‡— dd„Šdˆˆ fd„}|S )zNDecorator for common logic related to managing temporary
    directories.
    c                ó>   — t         D ]  }| j                  |d«       Œ y )NF)ÚKEEPABLE_TEMPDIR_TYPESÚ
set_delete)ÚregistryÚts     r*   Úconfigure_tempdir_registryz0with_cleanup.<locals>.configure_tempdir_registryK   s!   € Ü'ò 	*ˆAØ×Ñ  5Õ)ñ	*r,   c                ó²   •— | j                   €J ‚|j                  r ‰| j                   «       	  ‰| ||«      S # t        $ r  ‰| j                   «       ‚ w xY w©N)Útempdir_registryÚno_cleanr   )Úselfr)   Úargsr6   Úfuncs      €€r*   Úwrapperzwith_cleanup.<locals>.wrapperO   sb   ø€ Ø×$Ñ$Ð0Ð0Ð0Ø×ÒÙ& t×'<Ñ'<Ô=ð	Ù˜˜g tÓ,Ð,øÜ$ò 	ñ ' t×'<Ñ'<Ô=Øð	ús	   ¯	9 ¹A)r4   r    ÚreturnÚNone)r;   r-   r)   r   r<   ú	list[str]r?   Úint© )r=   r>   r6   s   ` @r*   Úwith_cleanuprD   D   s   ù€ ó*öð €Nr,   c                  ó  ‡ — e Zd Zdˆ fd„Zed	d„«       Ze	 	 d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Ze	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Z	 	 	 	 	 	 	 	 	 	 dd„Z	edd„«       Z
	 	 d	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )r.   c                óØ   •— t        ‰| �  |i |¤Ž | j                  j                  t	        j
                  «       «       | j                  j                  t	        j                  «       «       y r8   )ÚsuperÚ__init__Úcmd_optsÚ
add_optionr   Údependency_groupsr:   )r;   r<   ÚkwÚ	__class__s      €r*   rH   zRequirementCommand.__init__a   sK   ø€ Ü‰Ñ˜$Ð% "Ò%à�‰× Ñ ¤×!=Ñ!=Ó!?Ô@Ø�‰× Ñ ¤×!4Ñ!4Ó!6Õ7r,   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_enabledr(   s    r*   Údetermine_resolver_variantz-RequirementCommand.determine_resolver_variantg   s   € ð  × CÑ CÑCØàr,   c	           
     ó$  — |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        |dg «      }d|j                  v }t        di d	|	“d
|j                  “d|“d|j                  “dt        |||¬«      “d|j                  “d|“d|“d|j                  “d|“d|j                  “d|“d|“d|“d|
“d|j                  “ŽS )zQ
        Create a RequirementPreparer instance for the given parameters.
        FrP   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_constraintszbuild-constraintÚ	build_dirÚsrc_dirÚdownload_dirÚbuild_isolationÚbuild_isolation_installer)rT   Ú build_constraint_feature_enabledÚcheck_build_depsÚbuild_trackerÚsessionÚprogress_barÚfinderÚrequire_hashesÚuse_user_siteÚ
lazy_wheelÚ	verbosityÚlegacy_resolverÚresume_retriesrC   )ÚpathrR   Úfeatures_enabledÚloggerÚwarningÚgetattrr   rV   rX   r	   r[   r^   r`   re   )ÚclsÚtemp_build_dirr)   r\   r]   r_   ra   rW   rc   Útemp_build_dir_pathrd   Úresolver_variantrb   rT   rZ   s                  r*   Úmake_requirement_preparerz,RequirementCommand.make_requirement_preparero   sˆ  € ð -×1Ñ1ÐØ"Ð.Ð.Ð.Øˆà×9Ñ9¸'ÓBÐØ˜|Ò+Ø$¨×(@Ñ(@Ð@ˆJÙÜ—‘ð"õð #ˆOØˆJØ˜g×6Ñ6Ñ6Ü—‘ØQôô
 $ GÐ-@À"ÓEÐà '×":Ñ":Ð:ð 	)ô #ò 
Ù)ð
à—O’Oð
ñ &ð
ð $×3Ò3ð	
ô
 'JØØ"3Ø1Qõ'ð
ð %×5Ò5ð
ñ (ð
ñ ð
ð !×-Ò-ð
ñ ð
ð #×1Ò1ð
ñ  (ð!
ñ" "ð#
ñ$  ð%
ñ& ,ð'
ð( #×1Ò1ð)
ð 	
r,   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.
        )ÚisolatedrP   r   N)Úpreparerr_   Úwheel_cacheÚmake_install_reqra   Úignore_dependenciesÚignore_installedÚignore_requires_pythonÚforce_reinstallÚupgrade_strategyÚpy_version_info)r   r   Úisolated_moderR   Ú,pip._internal.resolution.resolvelib.resolverÚ	_internalÚ
resolutionrP   ÚresolverÚResolverru   Ú(pip._internal.resolution.legacy.resolverrO   )rk   rr   r_   r)   rs   ra   rv   rw   rx   ry   rz   rt   rn   Úpips                 r*   Úmake_resolverz RequirementCommand.make_resolver²   sì   € ô" #Ü'Ø×*Ñ*ô
Ðð ×9Ñ9¸'ÓBÐð ˜|Ò+Û?à—=‘=×+Ñ+×6Ñ6×?Ñ?×HÑHØ!ØØ'Ø!1Ø+Ø$+×$?Ñ$?Ø!1Ø'=Ø /Ø!1Ø /ð Ió ð ó 	8à�}‰}×'Ñ'×.Ñ.×7Ñ7×@Ñ@ØØØ#Ø-Ø'Ø '× ;Ñ ;Ø-Ø#9Ø+Ø-Ø+ð Aó 
ð 	
r,   c                ó´  — g }t        |«      sO|j                  D ]@  }t        |d|||¬«      D ]+  }t        ||j                  d¬«      }|j                  |«       Œ- ŒB |D ]8  }	t        |	d|j                  dt        |dd«      ¬«      }|j                  |«       Œ: |j                  rCt        |j                  «      D ]+  }	t        |	|j                  d¬«      }|j                  |«       Œ- |j                  D ]7  }	t        |	d|j                  t        |dd«      ¬«      }|j                  |«       Œ9 |j                  D ]g  }t        ||||¬	«      D ]S  }t        ||j                  d|j                  r|j                  j                  d«      nd¬
«      }|j                  |«       ŒU Œi t!        d„ |D «       «      rd|_        |s˜|j                  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)   r]   F)rq   Úuser_suppliedNÚconfig_settings)Ú
comes_fromrq   r†   r‡   )r†   rq   r‡   )r_   r)   r]   )rq   r†   r‡   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr8   )Úhas_hash_options)Ú.0Úreqs     r*   ú	<genexpr>z6RequirementCommand.get_requirements.<locals>.<genexpr>5  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}")rC   )r+   Úconstraintsr   r   r{   Úappendr   rj   rK   r   r   Ú	editablesr   Úrequirementsr)   r'   Úanyr`   rŽ   Ú
find_linksr   ÚformatÚdictÚjoin)r;   r<   r)   r_   r]   r”   ÚfilenameÚ
parsed_reqÚ
req_to_addrŒ   Úoptss              r*   Úget_requirementsz#RequirementCommand.get_requirementsë   s¡  € ð 24ˆä0°Ô9Ø#×/Ñ/ò 4�Ü"4ØØ#Ø!Ø#Ø#ô#ò 4�Jô "EØ"Ø!(×!6Ñ!6Ø&+ô"�Jð
 !×'Ñ'¨
Õ3ñ4ð4ð ò 	,ˆCÜ.ØØØ ×.Ñ.Ø"Ü '¨Ð1BÀDÓ IôˆJð ×Ñ 
Õ+ð	,ð ×$Ò$Ü.¨w×/HÑ/HÓIò 0�Ü8ØØ$×2Ñ2Ø"&ô�
ð
 ×#Ñ# JÕ/ð0ð ×$Ñ$ò 	,ˆCÜ2ØØ"Ø ×.Ñ.Ü '¨Ð1BÀDÓ Iô	ˆJð ×Ñ 
Õ+ð	,ð  ×,Ñ,ò 	0ˆHÜ0Ø °À'ôò 0�
ô AØØ$×2Ñ2Ø"&ð &×-Ò-ð #×*Ñ*×.Ñ.Ð/@ÔAà!ô	�
ð ×#Ñ# JÕ/ñ0ð	0ô" Ñ<¨|Ô<Ô<Ø%)ˆGÔ"ñ Ø× Ò Ø×#Ò#Ø×(Ò(à˜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_locationsrh   Úinfo)r_   r    Ú	locationss      r*   Útrace_basic_infoz#RequirementCommand.trace_basic_infoN  s1   € ð ×*Ñ*ˆØ ×8Ñ8Ó:ˆ	ÙÜ�K‰K˜	Õ"ð r,   c                ó¼   — 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_binaryrw   )Úlink_collectorÚselection_prefsÚtarget_python)r   Úcreater   r§   Úprer©   r   )r;   r)   r]   r¬   rw   rª   r«   s          r*   Ú_build_package_finderz(RequirementCommand._build_package_finderY  s]   € ô '×-Ñ-¨g¸wÔGˆÜ.ØØ"×1Ñ1Ø")§+¡+Ø!×/Ñ/Ø#9ô
ˆô ×#Ñ#Ø)Ø+Ø'ô
ð 	
r,   )r<   r   rL   r   r?   r@   )r)   r   r?   Ústr)Nr   )rl   r   r)   r   r\   r   r]   r   r_   r   ra   ÚboolrW   z
str | Nonerc   rB   r?   r   )NFTFFzto-satisfy-onlyN)rr   r   r_   r   r)   r   rs   zWheelCache | Nonera   r±   rv   r±   rw   r±   rx   r±   ry   r°   rz   ztuple[int, ...] | Noner?   r   )
r<   rA   r)   r   r_   r   r]   r   r?   zlist[InstallRequirement])r_   r   r?   r@   )NN)
r)   r   r]   r   r¬   zTargetPython | Nonerw   zbool | Noner?   r   )Ú__name__Ú
__module__Ú__qualname__rH   ÚstaticmethodrR   Úclassmethodro   rƒ   rž   r¤   r¯   Ú__classcell__)rM   s   @r*   r.   r.   `   sÁ  ø„ õ8ð òó ðð ð $(Øð@
à%ð@
ð ð@
ð $ð	@
ð
 ð@
ð ð@
ð ð@
ð !ð@
ð ð@
ð 
ò@
ó ð@
ðD ð *.Ø#Ø!%Ø',Ø %Ø 1Ø26ð6
à%ð6
ð ð6
ð ð	6
ð
 'ð6
ð ð6
ð ð6
ð !%ð6
ð ð6
ð ð6
ð 0ð6
ð 
ò6
ó ð6
ðpaàðað ðað ð	að
 ðað 
"óaðF ò#ó ð#ð .2Ø.2ð
àð
ð ð
ð +ð	
ð
 !,ð
ð 
÷
r,   )r)   r   r?   r±   )r=   ú-Callable[[_CommandT, Values, list[str]], int]r?   r¸   )CÚ__doc__Ú
__future__r   Úloggingr%   Ú	functoolsr   Úoptparser   Útypingr   r   r   Úpip._internal.build_envr	   Úpip._internal.cacher
   Úpip._internal.clir   Úpip._internal.cli.index_commandr   r   Ú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_dependency_groupr   Úpip._internal.req.req_filer   Úpip._internal.req.req_installr   Úpip._internal.resolution.baser   Úpip._internal.utils.temp_dirr   r    r!   Ú	getLoggerr²   rh   r+   Ú	BUILD_ENVÚEPHEM_WHEEL_CACHEÚ	REQ_BUILDr2   r-   rD   r.   rC   r,   r*   ú<module>rÕ      sÝ   ðñõ #ã Û 	Ý Ý ß )Ñ )å GÝ *Ý (Ý =Ý Vß HÝ 7Ý <Ý EÝ ;Ý 4Ý EÝ @÷ó õ KÝ 9Ý <Ý 6÷ñ ð 
ˆ×	Ñ	˜8Ó	$€óEð ×ÑØ×#Ñ#Ø×ÑðÐ ñ �KÐ';Ô<€	ðØ
7ðà2óô8S
Ð*õ S
r,   