Ë
    ŒjÚ/  ã                   ó´  — d 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
 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l,m-Z- ddl.m/Z/m0Z0m1Z1  ejd                  e3«      Z4e1jj                  e1jl                  e1jn                  gZ8dedefd„Z9 G d„ de«      Z:y)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.
é    N)Úpartial)ÚValues)ÚAnyÚListÚOptionalÚTuple)Ú
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_requirements)ÚInstallRequirement)ÚBaseResolver)ÚTempDirectoryÚTempDirectoryTypeRegistryÚtempdir_kindsÚfuncÚreturnc           	      ó|   ‡ ‡— 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     úg/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.pyÚconfigure_tempdir_registryz0with_cleanup.<locals>.configure_tempdir_registry7   s   € ß'ˆAØ×Ñ  5Õ)ñ (ó    ÚselfÚoptionsÚargsc                 ó²   •— | j                   €J ‚|j                  r ‰| j                   «       	  ‰| ||«      S # t        $ r  ‰| j                   «       ‚ w xY w©N)Útempdir_registryÚno_cleanr   )r+   r,   r-   r)   r    s      €€r(   Úwrapperzwith_cleanup.<locals>.wrapper;   sd   ø€ ð ×$Ñ$Ð0Ð0Ð0Ø×ÒÙ& t×'<Ñ'<Ô=ð	Ù˜˜g tÓ,Ð,øÜ$ò 	ñ ' t×'<Ñ'<Ô=Øð	ús	   ¯	9 ¹A)r   ÚRequirementCommandr   r   r   r   Úint)r    r2   r)   s   ` @r(   Úwith_cleanupr5   2   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 )!r3   r-   Úkwr!   Nc                 ó~   •— t        ‰| �  |i |¤Ž | j                  j                  t	        j
                  «       «       y r/   )ÚsuperÚ__init__Úcmd_optsÚ
add_optionr
   r1   )r+   r-   r7   Ú	__class__s      €r(   r:   zRequirementCommand.__init__O   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    r(   Údetermine_resolver_variantz-RequirementCommand.determine_resolver_variantT   s   € ð  × CÑ CÑCØàr*   Útemp_build_dirÚbuild_trackerÚsessionÚ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_dirrI   Úbuild_isolationÚcheck_build_depsrE   rF   Úprogress_barrG   Úrequire_hashesrH   Ú
lazy_wheelrJ   Úlegacy_resolver)ÚpathrC   Úfeatures_enabledÚloggerÚwarningr   rM   rN   rO   rP   rQ   )ÚclsrD   r,   rE   rF   rG   rH   rI   rJ   Útemp_build_dir_pathrS   Úresolver_variantrR   s                r(   Ú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.
        )Úisolatedrb   r@   r   N)r\   rG   r]   Úmake_install_reqrH   Úignore_dependenciesr^   r_   r`   ra   rc   )r   r   Úisolated_moderC   Ú,pip._internal.resolution.resolvelib.resolverÚ	_internalÚ
resolutionr@   ÚresolverÚResolverrg   Ú(pip._internal.resolution.legacy.resolverr?   )rX   r\   rG   r,   r]   rH   r^   r_   r`   ra   rb   rc   rf   rZ   Ú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 }|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)Ú
constraintrG   r,   rF   F)re   Úuser_suppliedNÚconfig_settings)Ú
comes_fromre   rb   rs   rt   )rs   re   rb   rt   )rG   r,   rF   )re   rb   rs   rt   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr/   )Úhas_hash_options)Ú.0Úreqs     r(   Ú	<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}")© )Úconstraintsr   r   rh   Úappendr   rb   ÚgetattrÚ	editablesr   Úrequirementsr,   ÚgetÚanyrQ   r{   Ú
find_linksr   ÚformatÚdictÚjoin)r+   r-   r,   rG   rF   rƒ   ÚfilenameÚ
parsed_reqÚ
req_to_addry   Úoptss              r(   Úget_requirementsz#RequirementCommand.get_requirementsÎ   s;  € ð 24ˆØ×+Ô+ˆHÜ0ØØØØØ÷�
ô AØØ$×2Ñ2Ø"'ô�
ð
 ×#Ñ# JÕ/ñð ,ó ˆCÜ.ØØØ ×.Ñ.Ø"×-Ñ-Ø"Ü '¨Ð1BÀDÓ IôˆJð ×Ñ 
Õ+ð ð ×$Ô$ˆCÜ2ØØ"Ø ×.Ñ.Ø"×-Ñ-Ü '¨Ð1BÀDÓ IôˆJð ×Ñ 
Õ+ð %ð  ×,Ô,ˆHÜ0Ø °À'÷�
ô AØØ$×2Ñ2Ø&×1Ñ1Ø"&ð &×-Ò-ð #×*Ñ*×.Ñ.Ð/@ÔAà!ô
�
ð ×#Ñ# JÕ/ñð -ô$ Ñ<©|Ó<Ô<Ø%)ˆ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_locationsrV   Úinfo)rG   r�   Ú	locationss      r(   Ú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.
        rB   T)Úallow_yankedÚformat_controlÚallow_all_prereleasesÚprefer_binaryr_   )Úlink_collectorÚselection_prefsr•   )r   Úcreater   r˜   Úprerš   r   )r+   r,   rF   r•   r_   r›   rœ   s          r(   Ú_build_package_finderz(RequirementCommand._build_package_finder/  s]   € ô '×-Ñ-¨g¸wÔGˆÜ.ØØ"×1Ñ1Ø")§+¡+Ø!×/Ñ/Ø#9ô
ˆô ×#Ñ#Ø)Ø+Ø'ô
ð 	
r*   )Nr   )NFTFFzto-satisfy-onlyNN)NN)Ú__name__Ú
__module__Ú__qualname__r   r:   Ústaticmethodr   ÚstrrC   Úclassmethodr   r   r   r   Úboolr   r4   r   r[   r	   r   r   rp   r   r   rŽ   r”   r   rŸ   Ú__classcell__)r=   s   @r(   r3   r3   N   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Tà�3‰iðTð ðTð ð	Tð
 ðTð 
Ð Ñ	!óTðl ð# ð #°4ò #ó ð#ð 15Ø15ñ
àð
ð ð
ð   Ñ-ð	
ð
 !)¨¡ð
ð 
÷
r*   r3   );Ú__doc__ÚloggingÚ	functoolsr   Úoptparser   Útypingr   r   r   r   Ú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_filer   Úpip._internal.req.req_installr   Úpip._internal.resolution.baser   Úpip._internal.utils.temp_dirr   r   r   Ú	getLoggerr    rV   Ú	BUILD_ENVÚEPHEM_WHEEL_CACHEÚ	REQ_BUILDr%   r5   r3   r~   r*   r(   Ú<module>rÁ      s¹   ðñó Ý Ý ß -Ó -å *Ý (Ý =Ý Vß HÝ 7Ý <Ý EÝ ;Ý 4Ý EÝ @÷ó õ :Ý <Ý 6÷ñ ð 
ˆ×	Ñ	˜8Ó	$€ð ×ÑØ×#Ñ#Ø×ÑðÐ ð�sð ˜só ô8{
Ð*õ {
r*   