ó
    T=ŒjJ  ã                  óh  • S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSK	J
r
  SSKJrJr  SSKJrJrJrJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJrJrJr  SSK J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-  SSK.J/r/J0r0J1r1J2r2J3r3  SSK4J5r5J6r6  SSK7J8r8  SSK9J:r:  SSK;J<r<  SSK=J>r>  SSK?J@r@  SSKAJBrBJCrC  SSKDJErEJFrFJGrG  \R�                  " \I5      rJS&S jrK\GR˜                  \GRš                  \GRœ                  /rO\" S S!S"9rP    S'S# jrQ          S(S$ jrR " S% S!\5      rSg))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   • [         R                  R                  S5      S:H  $ )aO  
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© ó    Úa/Users/stevendouglas/BidBrain/.venv/lib/python3.13/site-packages/pip/_internal/cli/req_command.pyÚ!should_ignore_regular_constraintsr6   B   s   € ô �:‰:�>‰>Ð<Ó=ÀÑDÐDr4   Ú	_CommandTÚRequirementCommand)Úboundc                ó&   ^ ^• SS jmSUU 4S jjnU$ )zFDecorator for common logic related to managing temporary
directories.
c                óB   • [          H  nU R                  US5        M     g ©NF)ÚKEEPABLE_TEMPDIR_TYPESÚ
set_delete)ÚregistryÚts     r5   Úconfigure_tempdir_registryÚ0with_cleanup.<locals>.configure_tempdir_registry`   s   € ß'ˆAØ×Ñ  5Ö)ò (r4   c                ó¾   >• U R                   c   eUR                  (       a  T" U R                   5         T" XU5      $ ! [         a    T" U R                   5        e f = f©N)Útempdir_registryÚno_cleanr   )ÚselfÚoptionsÚargsrA   Úfuncs      €€r5   ÚwrapperÚwith_cleanup.<locals>.wrapperd   s`   ø€ Ø×$Ñ$Ñ0Ð0Ð0Ø××Ù& t×'<Ñ'<Ô=ð	Ù˜ tÓ,Ð,øÜ$ó 	ñ ' t×'<Ñ'<Ô=Øð	ús	   µ> ¾A)r?   r+   ÚreturnÚNone)rG   r7   rH   r   rI   ú	list[str]rM   Úintr3   )rJ   rK   rA   s   ` @r5   Úwith_cleanuprQ   Y   s   ù€ ô*÷ð ð €Nr4   c           	     ó�   • / nU  H=  n[        USUUUS9 H)  n[        UUR                  SS9nUR                  U5        M+     M?     U$ )NT)Ú
constraintÚfinderrH   ÚsessionF©ÚisolatedÚuser_supplied)r$   r   Úisolated_modeÚappend)Úconstraint_filesrT   rH   rU   ÚrequirementsÚfilenameÚ
parsed_reqÚ
req_to_adds           r5   Úparse_constraint_filesr`   u   sd   € ð €LÛ$ˆÜ,ØØØØØô
ˆJô =ØØ ×.Ñ.Ø#ñˆJð
 ×Ñ 
Ö+ó
ñ %ð Ðr4   c                  ó*  ^ • \ rS rSrSU 4S jjr\SS j5       r\SSS.                   SS jj5       r\       S                     SS jj5       r	          SS	 jr
\SS
 j5       r  S         SS jjrSrU =r$ )r8   éŽ   c                óÞ   >• [         TU ]  " U0 UD6  U R                  R                  [        R
                  " 5       5        U R                  R                  [        R                  " 5       5        g rD   )ÚsuperÚ__init__Úcmd_optsÚ
add_optionr   Údependency_groupsrF   )rG   rI   ÚkwÚ	__class__s      €r5   re   ÚRequirementCommand.__init__�   sK   ø€ Ü‰Ò˜$Ð% "Ò%à�‰× Ñ ¤×!=Ò!=Ó!?Ô@Ø�‰× Ñ ¤×!4Ò!4Ó!6Õ7r4   c                ó&   • SU R                   ;   a  gg)zEDetermines which resolver should be used, based on the given options.zlegacy-resolverÚlegacyÚ
resolvelib)Údeprecated_features_enabled©rH   s    r5   Údetermine_resolver_variantÚ-RequirementCommand.determine_resolver_variant•   s   € ð  × CÑ CÓCØàr4   Nr   )Údownload_dirÚ	verbosityc          	     ó  • UR                   n
U
c   eSnU R                  U5      nUS:X  a,  SUR                  ;   nU(       a  [        R	                  S5        O)SnSnSUR                  ;   a  [        R	                  S5        [        US/ 5      nSUR                  ;   a-  [        XåX$5      n[        UUUU	[        UR                  5      S	9nO
[        UUS
9nUR                  (       d  SnO:SUR                  ;   a(  SnSUR                  ;   a  [        R	                  S5        OSn[        S 0 SU
_SUR                  _SU_SU_SU_SUR                  _SU_SU_SUR                  _SU_SUR                   _SU_SU_SU	_SU_SU_6$ )!zA
Create a RequirementPreparer instance for the given parameters.
Frn   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)rT   Úbuild_trackerrv   rt   Úwheel_cache)rv   Ú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_dirrs   Úbuild_isolationÚbuild_isolation_installerÚcheck_build_depsrw   rU   Úprogress_barrT   Úrequire_hashesÚuse_user_siteÚ
lazy_wheelrt   Úlegacy_resolverÚallow_editablesr3   )Úpathrq   Úfeatures_enabledÚloggerÚwarningÚgetattrr`   r   r   Ú	cache_dirr   r~   r   r}   r€   r�   r‚   )ÚclsÚtemp_build_dirrH   rw   rU   rT   r†   rƒ   rs   rt   Útemp_build_dir_pathr…   Úresolver_variantr„   rv   Úbuild_constraint_reqsÚenv_installerr~   s                     r5   Úmake_requirement_preparerÚ,RequirementCommand.make_requirement_preparer�   sü  € ð" -×1Ñ1ÐØ"Ñ.Ð.Ð.Øˆà×9Ñ9¸'ÓBÐØ˜|Ó+Ø$¨×(@Ñ(@Ñ@ˆJÞÜ—‘ð"ôøð #ˆOØˆJØ˜g×6Ñ6Ó6Ü—‘ØQôô
 $ GÐ-@À"ÓEÐð " W×%=Ñ%=Ó=Ü$:Ø!¨7ó%Ð!ô ?ØØ+Ø"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                óÈ  • [        [        UR                  S9nU R                  U5      nUS:X  aZ  SSKnUR
                  R                  R                  R                  R                  UUUUUUR                  UR                  UUUU	U
S9$ SSKnUR
                  R                  R                  R                  R                  UUUUUUR                  UR                  UUUU	U
S9$ )z6
Create a Resolver instance for the given parameters.
)rW   rn   r   N)ÚpreparerrT   rx   Úmake_install_reqrƒ   Úignore_dependenciesÚonly_dependenciesÚignore_installedÚignore_requires_pythonÚforce_reinstallÚupgrade_strategyÚpy_version_info)r   r    rY   rq   Ú,pip._internal.resolution.resolvelib.resolverÚ	_internalÚ
resolutionrn   ÚresolverÚResolverr˜   r™   Ú(pip._internal.resolution.legacy.resolverrm   )r�   r–   rT   rH   rx   rƒ   rš   r›   rœ   r�   rž   r—   r�   Úpips                 r5   Úmake_resolverÚ RequirementCommand.make_resolverú   sþ   € ô" #Ü'Ø×*Ñ*ñ
Ðð ×9Ñ9¸'ÓBÐð ˜|Ó+Û?à—=‘=×+Ñ+×6Ñ6×?Ñ?×HÑHØ!ØØ'Ø!1Ø+Ø$+×$?Ñ$?Ø")×";Ñ";Ø!1Ø'=Ø /Ø!1Ø /ð Ið ð ó 	8à�}‰}×'Ñ'×.Ñ.×7Ñ7×@Ñ@ØØØ#Ø-Ø'Ø '× ;Ñ ;Ø%×7Ñ7Ø-Ø#9Ø+Ø-Ø+ð Að 
ð 	
r4   c                óÖ  • / n[        5       (       a  [        US/ 5      nOUR                  n[        XcX$5      nUR	                  U5        U HM  nUR                  5       (       d  M  [        USUR                  S[        USS5      S9n	UR                  U	5        MO     UR                  (       aB  [        UR                  5       H)  n[        UUR                  SS9n	UR                  U	5        M+     UR                   H5  n[        USUR                  [        USS5      S9n	UR                  U	5        M7     UR                   Hä  n
[        U
5      (       am  [         R#                  S5        [%        X¤S	9 HI  u  p¼['        UUU
SS
9u  p�UR                  U	5        U(       d  M-  UR)                  UR*                  U5        MK     M€  [-        X£X$S9 HV  n[/        UUR                  SUR0                  (       a  UR0                  R3                  S5      OSS9n	UR                  U	5        MX     Mæ     UR4                  (       aì  [7        UR4                  5      S:”  a  [9        S5      eUR4                  S   n [;        U5      nUR3                  SS5      nU(       aU  UR@                  (       dD  [C        U5      n[E        UURF                  S9(       d   [I        SU< SURJ                   SU< 35      eUR3                  S/ 5       H)  n[        UUR                  SS9n	UR                  U	5        M+     URL                  (       a  URN                  (       a  [9        S5      eURN                  (       d  [Q        S U 5       5      (       a  SUl&        U(       dº  UR                  (       d©  UR                  (       d˜  UR                  (       d‡  UR4                  (       dv  SU R*                  0nURR                  (       a<  [9        SRT                  " S0 [W        USRY                  URR                  5      S9D65      e[9        SRT                  " S0 UD65      eU$ ! [<         a  n[9        UR>                  5      eSnAff = f)zC
Parse command-line arguments into the corresponding requirements.
rv   NTÚconfig_settings)Ú
comes_fromrW   rX   r©   rV   )rX   rW   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.)rU   )rX   )rT   rH   rU   )rW   rX   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  ó8   #   • U  H  oR                   v •  M     g 7frD   )Úhas_hash_options)Ú.0Úreqs     r5   Ú	<genexpr>Ú6RequirementCommand.get_requirements.<locals>.<genexpr>¶  s   é € ð 1
Ú,8 S× Ö ªLù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   rY   rZ   rh   r#   r    Ú	editablesr   r\   r(   r‰   rŠ   r)   r   Úadd_locked_linkr¶   r$   r   rH   r2   Úrequirements_from_scriptsÚlenr   r"   r!   Úmsgr›   r   r'   rž   r   Ú
py_versionr‚   Úno_require_hashesÚanyÚ
find_linksÚformatÚdictÚjoin)rG   rI   rH   rT   rU   r\   r[   r¹   r³   r_   r]   ÚpackageÚpackage_distÚlocked_linkr^   ÚscriptÚscript_metadataÚexcÚscript_requires_pythonÚtarget_pythonÚoptss                        r5   Úget_requirementsÚ#RequirementCommand.get_requirements5  sG  € ð 24ˆä,×.Ñ.ô  ' wÐ0CÀRÓHÑà&×2Ñ2Ðä,Ð-=ÀwÓXˆØ×Ñ˜KÔ(ãˆCØ—9‘9—;‘;ÙÜ.ØØØ ×.Ñ.Ø"Ü '¨Ð1BÀDÓ IñˆJð ×Ñ 
Ö+ñ ð ×$×$Ü.¨w×/HÑ/HÖI�Ü8ØØ$×2Ñ2Ø"&ñ�
ð
 ×#Ñ# JÖ/ñ Jð ×$Ô$ˆCÜ2ØØ"Ø ×.Ñ.Ü '¨Ð1BÀDÓ Iñ	ˆJð ×Ñ 
Ö+ñ %ð  ×,Ô,ˆHÜ'¨×1Ñ1Ü—‘ð-ôô .LØô.Ñ)�Gô /NØØ$Ø Ø&*ñ	/Ñ+�Jð !×'Ñ'¨
Ô3ß"�{Ø×.Ñ.¨w¯|©|¸[ÖIñ.ñ Ü0Ø°ô�
ô AØØ$×2Ñ2Ø"&ð &×-×-ð #×*Ñ*×.Ñ.Ð/@ÔAà!ñ	�
ð ×#Ñ# JÖ/óñ+ -ð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Ö>�Ü8ØØ$×2Ñ2Ø"&ñ�
ð
 ×#Ñ# JÖ/ñ ?ð ×!×! g×&?×&?ÜØQóð ð ×(×(¬Sñ 1
Ù,8ó1
÷ .
ñ .
ð &*ˆGÔ"ö Ø× × Ø×#×#Ø×(×(Ø×0×0à˜DŸI™IÐ&ˆDØ×!×!Ü"ð>ß>D¹fðEñ ä˜t¨3¯8©8°G×4FÑ4FÓ+GÑHñóð ô #ð.ß.4©fð5ñ =Ø7;ñ=óð ð
 Ðøôw #ó ,Ü" 3§7¡7Ó+Ð+ûð,ús   É-Q Ñ
Q(ÑQ#Ñ#Q(c                óv   • U R                   nUR                  5       nU(       a  [        R                  U5        gg)z5
Trace basic information about the provided objects.
N)Úsearch_scopeÚget_formatted_locationsr‰   Úinfo)rT   rÔ   Ú	locationss      r5   Útrace_basic_infoÚ#RequirementCommand.trace_basic_infoÒ  s1   € ð ×*Ñ*ˆØ ×8Ñ8Ó:ˆ	ÞÜ�K‰K˜	Õ"ð r4   c                óÂ   • [         R                  " X!S9n[        SUR                  UR                  UR
                  US9n[        R                  " UUUUR                  S9$ )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.
rp   T)Úallow_yankedÚformat_controlÚrelease_controlÚprefer_binaryr›   )Úlink_collectorÚselection_prefsrÏ   Úuploaded_prior_to)r   Úcreater   rÜ   rÝ   rÞ   r   rá   )rG   rH   rU   rÏ   r›   rß   rà   s          r5   Ú_build_package_finderÚ(RequirementCommand._build_package_finderÝ  sf   € ô '×-Ò-¨gÑGˆÜ.ØØ"×1Ñ1Ø#×3Ñ3Ø!×/Ñ/Ø#9ñ
ˆô ×#Ò#Ø)Ø+Ø'Ø%×7Ñ7ñ	
ð 	
r4   r3   )rI   r   ri   r   rM   rN   )rH   r   rM   Ústr)rŽ   r*   rH   r   rw   r   rU   r   rT   r   r†   Úboolrƒ   ræ   rs   z
str | Nonert   rP   rM   r   )NFTFFzto-satisfy-onlyN)r–   r   rT   r   rH   r   rx   zWheelCache | Nonerƒ   ræ   rš   ræ   r›   ræ   rœ   ræ   r�   rå   rž   ztuple[int, ...] | NonerM   r&   )
rI   rO   rH   r   rT   r   rU   r   rM   úlist[InstallRequirement])rT   r   rM   rN   r<   )
rH   r   rU   r   rÏ   zTargetPython | Noner›   ræ   rM   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__re   Ústaticmethodrq   Úclassmethodr“   r¦   rÑ   rØ   rã   Ú__static_attributes__Ú__classcell__)rj   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   )rM   ræ   )rJ   ú-Callable[[_CommandT, Values, list[str]], int]rM   rð   )
r[   rO   rT   r   rH   r   rU   r   rM   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   rQ   r`   r8   r3   r4   r5   Ú<module>r     s.  ðñõ #ã Û 	Ý $Ý Ý ß ÷ó õ +Ý (Ý ;Ý =Ý V÷ñ õ
 8Ý <Ý EÝ ;Ý 4Ý EÝ @÷õ ÷ FÝ JÝ 9Ý <Ý 6Ý ?÷÷ñ ð 
×	Ò	˜8Ó	$€ô
Eð ×ÑØ×#Ñ#Ø×ÑðÐ ñ �KÐ';Ñ<€	ðØ
7ðà2ôð8Øðàðð ðð ð	ð
 ôô2j
Ð*õ j
r4   