Ë
    ¨Õ°jJ  ã                  óh  — 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
 ddlmZ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 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+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZBmCZC ddlDmEZEmFZFmGZG  ej�                  eI«      ZJd&d„ZKeGj˜                  eGjš                  eGjœ                  gZO ed d!¬"«      ZP	 	 	 	 d'd#„ZQ	 	 	 	 	 	 	 	 	 	 d(d$„ZR G d%„ d!e«      ZSy))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)ÚCallable)Úpartial)ÚValues)ÚAnyÚTypeVar)ÚBuildEnvironmentInstallerÚBuildIsolationModeÚ"InprocessBuildEnvironmentInstallerÚ#SubprocessBuildEnvironmentInstaller)Ú
WheelCache)Ú
cmdoptions)Úmake_target_python)ÚIndexGroupCommand)ÚSessionCommandMixin)ÚCommandErrorÚPreviousBuildDirErrorÚUnsupportedPythonVersion)ÚLinkCollector)ÚPackageFinder)ÚSelectionPreferences)ÚTargetPython)Ú
PipSession)ÚBuildTracker)ÚRequirementPreparer)Úinstall_req_from_editableÚinstall_req_from_lineÚ#install_req_from_parsed_requirementÚinstall_req_from_pylock_packageÚinstall_req_from_req_string)ÚPEP723ExceptionÚpep723_metadata)Úparse_dependency_groups)Úparse_requirements)ÚInstallRequirement)ÚBaseResolver)Úcheck_requires_python)Úis_valid_pylock_filenameÚselect_from_pylock_path_or_url)ÚTempDirectoryÚTempDirectoryTypeRegistryÚtempdir_kindsc                 óF   — t         j                  j                  d«      dk(  S )ag  
    Whether this process should ignore the regular constraints it inherits.

    The parent pip sets ``_PIP_IN_BUILD_IGNORE_CONSTRAINTS`` whenever it starts
    an isolated build in a subprocess, so that regular constraints the build
    inherits (such as via ``PIP_CONSTRAINT`` or config files) do not affect it.
    Only build constraints apply there.
    Ú _PIP_IN_BUILD_IGNORE_CONSTRAINTSÚ1)ÚosÚenvironÚget© ó    úS/var/www/mission/venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.pyÚ!should_ignore_regular_constraintsr6   B   s   € ô �:‰:�>‰>Ð<Ó=ÀÑDÐDr4   Ú	_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     r5   Úconfigure_tempdir_registryz0with_cleanup.<locals>.configure_tempdir_registry`   s!   € Ü'ò 	*ˆAØ×Ñ  5Õ)ñ	*r4   c                ó²   •— | j                   €J ‚|j                  r ‰| j                   «       	  ‰| ||«      S # t        $ r  ‰| j                   «       ‚ w xY w©N)Útempdir_registryÚno_cleanr   )ÚselfÚoptionsÚargsrA   Úfuncs      €€r5   Úwrapperzwith_cleanup.<locals>.wrapperd   sb   ø€ Ø×$Ñ$Ð0Ð0Ð0Ø×ÒÙ& t×'<Ñ'<Ô=ð	Ù˜˜g tÓ,Ð,øÜ$ò 	ñ ' t×'<Ñ'<Ô=Øð	ús	   ¯	9 ¹A)r?   r+   ÚreturnÚNone)rF   r7   rG   r   rH   ú	list[str]rK   Úintr3   )rI   rJ   rA   s   ` @r5   Úwith_cleanuprO   Y   s   ù€ ó*öð €Nr4   c                ó”   — g }| D ]@  }t        |d|||¬«      D ]+  }t        ||j                  d¬«      }|j                  |«       Œ- ŒB |S )NT)Ú
constraintÚfinderrG   ÚsessionF©ÚisolatedÚuser_supplied)r$   r   Úisolated_modeÚappend)Úconstraint_filesrR   rG   rS   ÚrequirementsÚfilenameÚ
parsed_reqÚ
req_to_adds           r5   Úparse_constraint_filesr^   u   sn   € ð €LØ$ò ,ˆÜ,ØØØØØô
ò 	,ˆJô =ØØ ×.Ñ.Ø#ôˆJð
 ×Ñ 
Õ+ñ	,ð,ð Ðr4   c                  ó  ‡ — e Zd Zdˆ fd„Zedd„«       Zedddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Ze	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Z	 	 	 	 	 	 	 	 	 	 dd„Z	edd	„«       Z
	 	 d	 	 	 	 	 	 	 	 	 dd
„Zˆ xZS )r8   c                óØ   •— t        ‰| �  |i |¤Ž | j                  j                  t	        j
                  «       «       | j                  j                  t	        j                  «       «       y rC   )ÚsuperÚ__init__Úcmd_optsÚ
add_optionr   Údependency_groupsrE   )rF   rH   ÚkwÚ	__class__s      €r5   rb   zRequirementCommand.__init__�   sK   ø€ Ü‰Ñ˜$Ð% "Ò%à�‰× Ñ ¤×!=Ñ!=Ó!?Ô@Ø�‰× Ñ ¤×!4Ñ!4Ó!6Õ7r4   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©rG   s    r5   Údetermine_resolver_variantz-RequirementCommand.determine_resolver_variant•   s   € ð  × CÑ CÑCØàr4   Nr   )Ú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        |dg «      }d|j                  v r2t        ||||«      }t        ||||	t        |j                  «      ¬	«      }nt        ||¬
«      }|j                  sd}n6d|j                  v r&d}d|j                  v rt        j	                  d«       nd}t        d i d|
“d|j                  “d|“d|“d|“d|j                  “d|“d|“d|j                  “d|“d|j                   “d|“d|“d|	“d|“d|“ŽS )!zQ
        Create a RequirementPreparer instance for the given parameters.
        Frj   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inprocess-build-deps)rR   Úbuild_trackerrq   ro   Úwheel_cache)rq   Úoffzvenv-isolationÚvenvz£Using --use-feature 'inprocess-build-deps' and 'venv-isolation' together is currently partially supported. If you encounter broken behaviour, use only one feature.ÚvirtualÚ	build_dirÚsrc_dirrn   Úbuild_isolationÚbuild_isolation_installerÚcheck_build_depsrr   rS   Úprogress_barrR   Úrequire_hashesÚuse_user_siteÚ
lazy_wheelro   Úlegacy_resolverÚallow_editablesr3   )Úpathrm   Úfeatures_enabledÚloggerÚwarningÚgetattrr^   r   r   Ú	cache_dirr   ry   r   rx   r{   r|   r}   )ÚclsÚtemp_build_dirrG   rr   rS   rR   r�   r~   rn   ro   Útemp_build_dir_pathr€   Úresolver_variantr   rq   Úbuild_constraint_reqsÚenv_installerry   s                     r5   Úmake_requirement_preparerz,RequirementCommand.make_requirement_preparer�   sþ  € ð" -×1Ñ1ÐØ"Ð.Ð.Ð.Øˆà×9Ñ9¸'ÓBÐØ˜|Ò+Ø$¨×(@Ñ(@Ð@ˆJÙÜ—‘ð"õð #ˆOØˆJØ˜g×6Ñ6Ñ6Ü—‘ØQôô
 $ GÐ-@À"ÓEÐð " W×%=Ñ%=Ñ=Ü$:Ø! 6¨7°Gó%Ð!ô ?ØØ+Ø"7Ø#Ü& w×'8Ñ'8Ó9ô‰Mô @ØØ"3ôˆMð
 ×&Ò&Ø27‰OØ ×!9Ñ!9Ñ9Ø$ˆOØ%¨×)AÑ)AÑAÜ—‘ð?õð (ˆOä"ò 
Ù)ð
à—O’Oð
ñ &ð
ñ ,ð	
ñ
 '4ð
ð %×5Ò5ð
ñ (ð
ñ ð
ð !×-Ò-ð
ñ ð
ð #×1Ò1ð
ñ (ð
ñ "ð
ñ  ð
ñ ,ð
ñ  ,ð!
ð 	
r4   c                óØ  — t        t        |j                  ¬«      }| j                  |«      }|dk(  r]ddl}|j
                  j                  j                  j                  j                  ||||||j                  |j                  ||||	|
¬«      S ddl}|j
                  j                  j                  j                  j                  ||||||j                  |j                  ||||	|
¬«      S )zF
        Create a Resolver instance for the given parameters.
        )rU   rj   r   N)ÚpreparerrR   rs   Úmake_install_reqr~   Úignore_dependenciesÚonly_dependenciesÚignore_installedÚignore_requires_pythonÚforce_reinstallÚupgrade_strategyÚpy_version_info)r   r    rW   rm   Ú,pip._internal.resolution.resolvelib.resolverÚ	_internalÚ
resolutionrj   ÚresolverÚResolverr’   r“   Ú(pip._internal.resolution.legacy.resolverri   )rˆ   r�   rR   rG   rs   r~   r”   r•   r–   r—   r˜   r‘   r‹   Úpips                 r5   Úmake_resolverz RequirementCommand.make_resolverú   sþ   € ô" #Ü'Ø×*Ñ*ô
Ðð ×9Ñ9¸'ÓBÐð ˜|Ò+Û?à—=‘=×+Ñ+×6Ñ6×?Ñ?×HÑHØ!ØØ'Ø!1Ø+Ø$+×$?Ñ$?Ø")×";Ñ";Ø!1Ø'=Ø /Ø!1Ø /ð Ió ð ó 	8à�}‰}×'Ñ'×.Ñ.×7Ñ7×@Ñ@ØØØ#Ø-Ø'Ø '× ;Ñ ;Ø%×7Ñ7Ø-Ø#9Ø+Ø-Ø+ð Aó 
ð 	
r4   c                ó.  — g }t        «       rt        |dg «      }n|j                  }t        ||||«      }|j	                  |«       |D ]I  }|j                  «       sŒt        |d|j                  dt        |dd«      ¬«      }	|j                  |	«       ŒK |j                  rCt        |j                  «      D ]+  }t        ||j                  d¬«      }	|j                  |	«       Œ- |j                  D ]7  }t        |d|j                  t        |dd«      ¬«      }	|j                  |	«       Œ9 |j                  D ]ß  }
t        |
«      rmt         j#                  d«       t%        |
|¬	«      D ]G  \  }}t'        |||
d¬
«      \  }	}|j                  |	«       |sŒ,|j)                  |j*                  |«       ŒI Œ{t-        |
|||¬«      D ]S  }t/        ||j                  d|j0                  r|j0                  j3                  d«      nd¬«      }	|j                  |	«       ŒU Œá |j4                  rÞt7        |j4                  «      dkD  rt9        d«      ‚|j4                  d   }	 t;        |«      }|j3                  dd«      }|rL|j@                  s@tC        |«      }tE        ||jF                  ¬«      stI        d|›d|jJ                  › d|›�«      ‚|j3                  dg «      D ]+  }t        ||j                  d¬«      }	|j                  |	«       Œ- |jL                  r|jN                  rt9        d«      ‚|jN                  stQ        d„ |D «       «      rd|_&        |s¤|j                  s˜|j                  sŒ|j                  s€|j4                  std| j*                  i}|jR                  r?t9         djT                  di tW        |djY                  |jR                  «      ¬«      ¤Ž«      ‚t9         djT                  di |¤Ž«      ‚|S # t<        $ r}t9        |j>                  «      ‚d}~ww xY w)zS
        Parse command-line arguments into the corresponding requirements.
        rq   NTÚconfig_settings)Ú
comes_fromrU   rV   r¢   rT   )rV   rU   r¢   z‹Using pylock.toml as a requirements source is an experimental feature. It may be removed/changed in a future release without prior warning.)rS   )rV   )rR   rG   rS   )rU   rV   r¢   é   z1--requirements-from-script can only be given oncer   zrequires-pythonÚ )Úrequires_pythonÚversion_infozScript z requires a different Python: z not in Údependenciesz?--require-hashes and --no-require-hashes are mutually exclusivec              3  ó4   K  — | ]  }|j                   –— Œ y ­wrC   )Úhas_hash_options)Ú.0Úreqs     r5   ú	<genexpr>z6RequirementCommand.get_requirements.<locals>.<genexpr>¶  s   è ø€ ò 1
Ø%(ˆC× Õ ñ1
ù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}")r3   )-r6   r†   Úconstraintsr^   ÚextendÚstripr   rW   rX   re   r#   r    Ú	editablesr   rZ   r(   r„   r…   r)   r   Úadd_locked_linkr®   r$   r   rG   r2   Úrequirements_from_scriptsÚlenr   r"   r!   Úmsgr•   r   r'   r˜   r   Ú
py_versionr}   Úno_require_hashesÚanyÚ
find_linksÚformatÚdictÚjoin)rF   rH   rG   rR   rS   rZ   rY   r±   r¬   r]   r[   ÚpackageÚpackage_distÚlocked_linkr\   ÚscriptÚscript_metadataÚexcÚscript_requires_pythonÚtarget_pythonÚoptss                        r5   Úget_requirementsz#RequirementCommand.get_requirements5  sk  € ð 24ˆä,Ô.ô  ' wÐ0CÀRÓHÑà&×2Ñ2Ðä,Ð-=¸vÀwÐPWÓXˆØ×Ñ˜KÔ(àò 
	,ˆCØ—9‘9”;ØÜ.ØØØ ×.Ñ.Ø"Ü '¨Ð1BÀDÓ IôˆJð ×Ñ 
Õ+ð
	,ð ×$Ò$Ü.¨w×/HÑ/HÓIò 0�Ü8ØØ$×2Ñ2Ø"&ô�
ð
 ×#Ñ# JÕ/ð0ð ×$Ñ$ò 	,ˆCÜ2ØØ"Ø ×.Ñ.Ü '¨Ð1BÀDÓ Iô	ˆJð ×Ñ 
Õ+ð	,ð  ×,Ñ,ò "	0ˆHÜ'¨Ô1Ü—‘ð-ôô .LØ gô.ò JÑ)�G˜\ô /NØØ$Ø Ø&*ô	/Ñ+�J ð !×'Ñ'¨
Ô3Ú"Ø×.Ñ.¨w¯|©|¸[ÕIðJð Ü0Ø °À'ôò 0�
ô AØØ$×2Ñ2Ø"&ð &×-Ò-ð #×*Ñ*×.Ñ.Ð/@ÔAà!ô	�
ð ×#Ñ# JÕ/ñ0ð+"	0ðH ×,Ò,Ü�7×4Ñ4Ó5¸Ò9Ü"Ð#VÓWÐWà×6Ñ6°qÑ9ˆFð,Ü"1°&Ó"9�ð &5×%8Ñ%8Ð9JÈBÓ%OÐ"á%¨g×.LÒ.LÜ 2°7Ó ;�ä,Ø$:Ø!.×!>Ñ!>õô 3Ø! & Ð+IØ(×3Ñ3Ð4°HÐ=SÐ<VðXóð ð
 '×*Ñ*¨>¸2Ó>ò 0�Ü8ØØ$×2Ñ2Ø"&ô�
ð
 ×#Ñ# JÕ/ð0ð ×!Ò! g×&?Ò&?ÜØQóð ð ×(Ò(¬Sñ 1
Ø,8ô1
ô .
ð &*ˆGÔ"ñ Ø× Ò Ø×#Ò#Ø×(Ò(Ø×0Ò0à˜DŸI™IÐ&ˆDØ×!Ò!Ü"ðEð >ß>D¹fñä˜t¨3¯8©8°G×4FÑ4FÓ+GÔHñóð ô #ð5ð .ß.4©fñ=Ø7;ñ=óð ð
 Ðøôw #ò ,Ü" 3§7¡7Ó+Ð+ûð,ús   ÉO1 Ï1	PÏ:PÐPc                ól   — | j                   }|j                  «       }|rt        j                  |«       yy)zE
        Trace basic information about the provided objects.
        N)Úsearch_scopeÚget_formatted_locationsr„   Úinfo)rR   rË   Ú	locationss      r5   Útrace_basic_infoz#RequirementCommand.trace_basic_infoÒ  s1   € ð ×*Ñ*ˆØ ×8Ñ8Ó:ˆ	ÙÜ�K‰K˜	Õ"ð r4   c                óÒ   — t        j                  ||¬«      }t        d|j                  |j                  |j
                  |¬«      }t        j                  ||||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.
        rl   T)Úallow_yankedÚformat_controlÚrelease_controlÚprefer_binaryr•   )Úlink_collectorÚselection_prefsrÇ   Úuploaded_prior_to)r   Úcreater   rÒ   rÓ   rÔ   r   r×   )rF   rG   rS   rÇ   r•   rÕ   rÖ   s          r5   Ú_build_package_finderz(RequirementCommand._build_package_finderÝ  sh   € ô '×-Ñ-¨g¸wÔGˆÜ.ØØ"×1Ñ1Ø#×3Ñ3Ø!×/Ñ/Ø#9ô
ˆô ×#Ñ#Ø)Ø+Ø'Ø%×7Ñ7ô	
ð 	
r4   )rH   r   rf   r   rK   rL   )rG   r   rK   Ústr)r‰   r*   rG   r   rr   r   rS   r   rR   r   r�   Úboolr~   rÛ   rn   z
str | Nonero   rN   rK   r   )NFTFFzto-satisfy-onlyN)r�   r   rR   r   rG   r   rs   zWheelCache | Noner~   rÛ   r”   rÛ   r•   rÛ   r–   rÛ   r—   rÚ   r˜   ztuple[int, ...] | NonerK   r&   )
rH   rM   rG   r   rR   r   rS   r   rK   úlist[InstallRequirement])rR   r   rK   rL   r<   )
rG   r   rS   r   rÇ   zTargetPython | Noner•   rÛ   rK   r   )Ú__name__Ú
__module__Ú__qualname__rb   Ústaticmethodrm   ÚclassmethodrŽ   r    rÉ   rÏ   rÙ   Ú__classcell__)rg   s   @r5   r8   r8   Ž   sÌ  ø„ õ8ð òó ðð ð $(ØñZ
à%ðZ
ð ðZ
ð $ð	Z
ð
 ðZ
ð ðZ
ð ðZ
ð ðZ
ð !ðZ
ð ðZ
ð 
òZ
ó ðZ
ðx ð *.Ø#Ø!%Ø',Ø %Ø 1Ø26ð8
à%ð8
ð ð8
ð ð	8
ð
 'ð8
ð ð8
ð ð8
ð !%ð8
ð ð8
ð ð8
ð 0ð8
ð 
ò8
ó ð8
ðt[àð[ð ð[ð ð	[ð
 ð[ð 
"ó[ðz ò#ó ð#ð .2Ø',ð
àð
ð ð
ð +ð	
ð
 !%ð
ð 
÷
r4   )rK   rÛ   )rI   ú-Callable[[_CommandT, Values, list[str]], int]rK   rã   )
rY   rM   rR   r   rG   r   rS   r   rK   rÜ   )TÚ__doc__Ú
__future__r   Úloggingr0   Úcollections.abcr   Ú	functoolsr   Úoptparser   Útypingr   r   Úpip._internal.build_envr	   r
   r   r   Úpip._internal.cacher   Úpip._internal.clir   Úpip._internal.cli.cmdoptionsr   Úpip._internal.cli.index_commandr   r   Úpip._internal.exceptionsr   r   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   r    Úpip._internal.req.pep723r!   r"   Ú&pip._internal.req.req_dependency_groupr#   Úpip._internal.req.req_filer$   Úpip._internal.req.req_installr%   Úpip._internal.resolution.baser&   Úpip._internal.utils.packagingr'   Úpip._internal.utils.pylockr(   r)   Úpip._internal.utils.temp_dirr*   r+   r,   Ú	getLoggerrÝ   r„   r6   Ú	BUILD_ENVÚEPHEM_WHEEL_CACHEÚ	REQ_BUILDr=   r7   rO   r^   r8   r3   r4   r5   ú<module>r     s0  ðñõ #ã Û 	Ý $Ý Ý ß ÷ó õ +Ý (Ý ;Ý =Ý V÷ñ õ
 8Ý <Ý EÝ ;Ý 4Ý EÝ @÷õ ÷ FÝ JÝ 9Ý <Ý 6Ý ?÷÷ñ ð 
ˆ×	Ñ	˜8Ó	$€ó
Eð ×ÑØ×#Ñ#Ø×ÑðÐ ñ �KÐ';Ô<€	ðØ
7ðà2óð8Øðàðð ðð ð	ð
 óô2j
Ð*õ j
r4   