ó
    T=ŒjpQ  ã                  ó.  • S SK Jr  S SKrS SKrS SKJr  S SKJrJrJ	r	J
r
  S SKJr  S SKJrJr  S SKJr  S SKJrJrJrJrJrJr  S S	KJr  S S
KJrJr  S SKJr  S SK J!r!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,  \(       a  SSK-J.r.  \R^                  " \05      r1\	S   r2\
" \S5      r3S%S jr4 S&       S'S jjr5      S(S jr6      S)S jr7 " S S\*5      r8 " S S\85      r9 " S S\85      r: " S S \*5      r; " S! S"\*5      r< " S# S$\*5      r=g)*é    )ÚannotationsN)ÚIterable)ÚTYPE_CHECKINGÚAnyÚUnionÚcast)ÚInvalidRequirement)ÚNormalizedNameÚcanonicalize_name)ÚVersion)ÚFailedToPrepareCandidateÚ	HashErrorÚInstallationSubprocessErrorÚInvalidInstalledPackageÚMetadataInconsistentÚMetadataInvalid)ÚBaseDistribution)ÚLinkÚlinks_equivalent)ÚWheel)Úinstall_req_from_editableÚinstall_req_from_line)ÚInstallRequirement)Údirect_url_from_link)Únormalize_version_infoé   )Ú	CandidateÚRequirementÚformat_name)ÚFactory)ÚAlreadyInstalledCandidateÚEditableCandidateÚLinkCandidatez<Python from Requires-Python>c                óJ   • [         [        [        4n[        X5      (       a  U $ g)z%The runtime version of BaseCandidate.N)r!   r"   r#   Ú
isinstance)Ú	candidateÚbase_candidate_classess     Úr/Users/stevendouglas/BidBrain/.venv/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/candidates.pyÚas_base_candidater)   0   s+   € ô 	"ÜÜðÐô
 �)×4Ñ4ØÐØó    c           
     ó  • UR                   (       a   S5       eUb>  UR                  (       a-  UR                  (       a  UR                  R                   SU 3nO3UR                  (       a  [	        UR                  5      nOU R
                  n[        UUR                  UR                  UR                  UR                  UR                  UR                  S9nUR                  Ul        Xl        UR                  Ul        U$ )Nztemplate is editableú==©Úuser_suppliedÚ
comes_fromÚisolatedÚ
constraintÚhash_optionsÚconfig_settings)ÚeditableÚreqr2   ÚnameÚstrÚurlr   r.   r/   r0   r1   r3   Úoriginal_linkÚlinkÚextras)r:   ÚtemplateÚversionÚlineÚireqs        r(   Úmake_install_req_from_linkr@   <   sÐ   € ð
 × × Ð8Ð"8Ó8Ð ØÑ˜xŸ|Ÿ|°×0E×0Eð —,‘,×#Ñ#Ð$ B w iÐ0‰Ø	��Ü�8—<‘<Ó ‰à�x‰xˆÜ ØØ×,Ñ,Ø×&Ñ&Ø×"Ñ"Ø×&Ñ&Ø×*Ñ*Ø ×0Ñ0ñ€Dð "×/Ñ/€DÔØ„IØ—/‘/€D„KØ€Kr*   c           
     ó`  • UR                   (       d   S5       eUR                  (       a  UR                   SU R                   3nOU R                  n[        UUR                  UR
                  UR                  UR                  UR                  UR                  S9nUR                  Ul
        U$ )Nztemplate not editableú @ r-   )r4   r6   r8   r   r.   r/   r0   r1   r2   r3   r;   )r:   r<   Ú
req_stringr?   s       r(   Úmake_install_req_from_editablerD   Z   s–   € ð ××Ð5Ð5Ó5ÐØ‡}‡}Ø Ÿ™� c¨$¯(©(¨Ð4‰
à—X‘Xˆ
Ü$ØØ×,Ñ,Ø×&Ñ&Ø×"Ñ"Ø×&Ñ&Ø×*Ñ*Ø ×0Ñ0ñ€Dð —/‘/€D„KØ€Kr*   c           
     óš  • UR                   (       a  [        UR                   5      nORUR                  (       a&  U R                   SUR                  R                   3nOU R                   SU R
                   3n[        UUR                  UR                  UR                  UR                  UR                  UR                  S9nXl        U$ )NrB   r,   r-   )r5   r7   r:   Úcanonical_namer8   r=   r   r.   r/   r0   r1   r2   r3   Úsatisfied_by)Údistr<   r>   r?   s       r(   Ú_make_install_req_from_distrI   o   s­   € ð ‡|‡|Ü�8—<‘<Ó ‰Ø	��Ø×%Ñ%Ð& c¨(¯-©-×*;Ñ*;Ð)<Ð=‰à×%Ñ%Ð& b¨¯©¨Ð7ˆÜ ØØ×,Ñ,Ø×&Ñ&Ø×"Ñ"Ø×&Ñ&Ø×*Ñ*Ø ×0Ñ0ñ€Dð ÔØ€Kr*   c                  ó  • \ rS rSr% SrS\S'   Sr  S             SS jjrSS jrSS	 jr	SS
 jr
SS jr\SS j5       r\SS j5       r\SS j5       r\SS j5       rSS jrSS jrS S jrSS jrS!S jrS"S jrSrg)#Ú"_InstallRequirementBackedCandidateé…   aË  A candidate backed by an ``InstallRequirement``.

This represents a package request with the target not being already
in the environment, and needs to be fetched and installed. The backing
``InstallRequirement`` is responsible for most of the leg work; this
class exposes appropriate information to the resolver.

:param link: The link passed to the ``InstallRequirement``. The backing
    ``InstallRequirement`` will use this link to fetch the distribution.
:param source_link: The link this candidate "originates" from. This is
    different from ``link`` when the link is found in the wheel cache.
    ``link`` would point to the wheel cache, while this points to the
    found remote link (e.g. from pypi.org).
r   rH   FNc                ó„   • Xl         X l        X@l        X0l        XPl        X`l        U R                  5       U l        S U l        g ©N)	Ú_linkÚ_source_linkÚ_factoryÚ_ireqÚ_nameÚ_versionÚ_preparerH   Ú_hash)Úselfr:   Úsource_linkr?   Úfactoryr6   r=   s          r(   Ú__init__Ú+_InstallRequirementBackedCandidate.__init__˜   s7   € ð Œ
Ø'ÔØŒØŒ
ØŒ
ØŒØ—M‘M“OˆŒ	Ø!%ˆ�
r*   c                ó8   • U R                    SU R                   3$ )NÚ ©r6   r=   ©rW   s    r(   Ú__str__Ú*_InstallRequirementBackedCandidate.__str__ª   s   € Ø—)‘)�˜A˜dŸl™l˜^Ð,Ð,r*   c                ób   • U R                   R                   S[        U R                  5      < S3$ ©NÚ(Ú))Ú	__class__Ú__name__r7   rO   r_   s    r(   Ú__repr__Ú+_InstallRequirementBackedCandidate.__repr__­   s)   € Ø—.‘.×)Ñ)Ð*¨!¬C°·
±
«OÑ+>¸aÐ@Ð@r*   c                ó˜   • U R                   b  U R                   $ [        U R                  U R                  45      U l         U R                   $ rN   )rV   Úhashrf   rO   r_   s    r(   Ú__hash__Ú+_InstallRequirementBackedCandidate.__hash__°   s9   € Ø�:‰:Ñ!Ø—:‘:Ðä˜4Ÿ>™>¨4¯:©:Ð6Ó7ˆŒ
Ø�z‰zÐr*   c                óx   • [        XR                  5      (       a   [        U R                  UR                  5      $ g©NF)r%   rf   r   rO   ©rW   Úothers     r(   Ú__eq__Ú)_InstallRequirementBackedCandidate.__eq__·   s)   € Ü�eŸ^™^×,Ñ,Ü# D§J¡J°·±Ó<Ð<Ør*   c                ó   • U R                   $ rN   )rP   r_   s    r(   rX   Ú._InstallRequirementBackedCandidate.source_link¼   ó   € à× Ñ Ð r*   c                ój   • U R                   c  U R                  R                  U l         U R                   $ ©z:The normalised name of the project the candidate refers to)rS   rH   rF   r_   s    r(   Úproject_nameÚ/_InstallRequirementBackedCandidate.project_nameÀ   s)   € ð �:‰:ÑØŸ™×1Ñ1ˆDŒJØ�z‰zÐr*   c                ó   • U R                   $ rN   ©ry   r_   s    r(   r6   Ú'_InstallRequirementBackedCandidate.nameÇ   rv   r*   c                ój   • U R                   c  U R                  R                  U l         U R                   $ rN   ©rT   rH   r=   r_   s    r(   r=   Ú*_InstallRequirementBackedCandidate.versionË   ó'   € à�=‰=Ñ Ø ŸI™I×-Ñ-ˆDŒMØ�}‰}Ðr*   c                óà   • U R                    SU R                   SU R                  (       a  SOS U R                  R                  (       a  U R                  R
                  OU R                   S3$ )Nr]   z (from z	editable Ú re   )r6   r=   Úis_editablerO   Úis_fileÚ	file_pathr_   s    r(   Úformat_for_errorÚ3_InstallRequirementBackedCandidate.format_for_errorÑ   sY   € à�y‰yˆk˜˜4Ÿ<™<˜.ð )Ø$(×$4×$4‘[¸"Ð=Ø'+§z¡z×'9×'9ˆt�z‰z×#Ò#¸t¿z¹zÐJÈ!ðMð	
r*   c                ó   • [        S5      e)NzOverride in subclass)ÚNotImplementedErrorr_   s    r(   Ú_prepare_distributionÚ8_InstallRequirementBackedCandidate._prepare_distributionØ   s   € Ü!Ð"8Ó9Ð9r*   c                ó:  • U R                   bF  U R                   UR                  :w  a,  [        U R                  SU R                   UR                  5      eU R                  bX  U R                  UR
                  :w  a>  [        U R                  S[        U R                  5      [        UR
                  5      5      e [        UR                  [        UR                  5       5      5      5        g! [         a$  n[        U R                  [        U5      5      eSnAff = f)z:Check for consistency of project name and version of dist.Nr6   r=   )rS   rF   r   rR   rT   r=   r7   ÚlistÚiter_dependenciesÚiter_provided_extrasr	   r   )rW   rH   Úes      r(   Ú_check_metadata_consistencyÚ>_InstallRequirementBackedCandidate._check_metadata_consistencyÛ   sÙ   € à�:‰:Ñ! d§j¡j°D×4GÑ4GÓ&GÜ&Ø—
‘
ØØ—
‘
Ø×#Ñ#ó	ð ð �=‰=Ñ$¨¯©¸$¿,¹,Ó)FÜ&Ø—
‘
ØÜ�D—M‘MÓ"Ü�D—L‘LÓ!ó	ð ð	6Ü�×'Ñ'¬¨T×-FÑ-FÓ-HÓ(IÓJÕKøÜ!ó 	6Ü! $§*¡*¬c°!«fÓ5Ð5ûð	6ús   Â:1C, Ã,
DÃ6DÄDc                ó  •  U R                  5       nU R                  U5        U$ ! [         a  nU R                  Ul        e S nAf[         a³  n[        U R                  R                  [        5      (       a%  U R                  R                  R                  5       nOU R                  R                  nUc  Sn[        U R                  R                  =(       d    [        U R                  5      UUR                  S9eS nAff = f)Nzdirectly requested)Úpackage_nameÚrequirement_chainÚfailed_step)r‹   r   rR   r5   r   r%   r/   r   Ú	from_pathr   r6   r7   rO   Úcommand_descriptionr’   )rW   rH   r‘   ÚexcÚrequest_chains        r(   rU   Ú+_InstallRequirementBackedCandidate._prepareó   sÐ   € ð	Ø×-Ñ-Ó/ˆDð, 	×(Ñ(¨Ô.Øˆøô- ó 	ð —J‘JˆAŒEØûÜ*ó 	Ü˜$Ÿ*™*×/Ñ/Ô1C×DÑDØ $§
¡
× 5Ñ 5× ?Ñ ?Ó A‘à $§
¡
× 5Ñ 5�àÑ$Ø 4�ä*Ø!ŸZ™ZŸ_™_×?´°D·J±J³Ø"/Ø×3Ñ3ñð ûð	ús!   ‚% ¥
D¯AÁDÁB.C<Ã<Dc              #  ó8  #   • U R                   R                  U R                  R                  5      v •  U(       a  U R                  R	                  5       OSnU H:  nU R                   R                  [        U5      U R                  5       S h  v•N   M<     g  N	7f©N© )rQ   Ú make_requires_python_requirementrH   Úrequires_pythonr�   Úmake_requirements_from_specr7   rR   )rW   Úwith_requiresÚrequiresÚrs       r(   r�   Ú4_InstallRequirementBackedCandidate.iter_dependencies  sk   é € ð �m‰m×<Ñ<¸T¿Y¹Y×=VÑ=VÓWÒWÞ4A�4—9‘9×.Ñ.Ô0ÀrˆÛˆAØ—}‘}×@Ñ@ÄÀQÃÈÏÉÓT×TÒTò ÙTùs   ‚BBÂBÂ
Bc                ó   • U R                   $ rN   )rR   r_   s    r(   Úget_install_requirementÚ:_InstallRequirementBackedCandidate.get_install_requirement  s   € Ø�z‰zÐr*   )rQ   rV   rR   rO   rS   rP   rT   rH   ©NN)r:   r   rX   r   r?   r   rY   r    r6   úNormalizedName | Noner=   úVersion | NoneÚreturnÚNone©r­   r7   ©r­   Úint©rq   r   r­   Úbool©r­   zLink | None©r­   r
   ©r­   r   ©r­   r   )rH   r   r­   r®   ©r£   r³   r­   zIterable[Requirement | None]©r­   úInstallRequirement | None)rg   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Úis_installedrZ   r`   rh   rl   rr   ÚpropertyrX   ry   r6   r=   r‡   r‹   r’   rU   r�   r¨   Ú__static_attributes__rŸ   r*   r(   rK   rK   …   sé   ‡ ñð ÓØ€Lð '+Ø"&ð&àð&ð ð&ð !ð	&ð
 ð&ð $ð&ð  ð&ð 
õ&ô$-ôAôôð
 ó!ó ð!ð óó ðð ó!ó ð!ð óó ðô

ô:ô6ô0ô6U÷r*   rK   c                  óX   ^ • \ rS rSrSr  S           SU 4S jjjrSS jrSrU =r$ )	r#   i  Fc           	     ót  >• UnUR                  Xd5      nUb,  [        R                  SUR                  5        UR                  n[	        XUS9nUR                  U:X  d   eUR                  R
                  (       aˆ  UR                  R                  (       dm  [        UR                  R                  5      n	U	R                  n
XJ:X  d   U< SU
< S35       eUb+  [        U	R                  5      nX[:X  d   U< SU< SU 35       eUb¡  UR                  R
                  (       d   eUR                  R                  (       d   eUR                  (       a  UR                  UR                  L a  Xhl        UR                  b  UR                  Ul        O[#        XgR                  S9Ul        [$        TU ]M  UUUUUUS9  g )NzUsing cached wheel link: %s©r=   z != z
 for wheelz for wheel )Úlink_is_in_wheel_cache©r:   rX   r?   rY   r6   r=   )Úget_wheel_cache_entryÚloggerÚdebugr:   r@   Úis_wheelr…   r   Úfilenamer6   r   r=   Ú
persistentr9   Úcached_wheel_source_linkÚoriginÚdownload_infor   ÚsuperrZ   )rW   r:   r<   rY   r6   r=   rX   Úcache_entryr?   ÚwheelÚ
wheel_nameÚwheel_versionrf   s               €r(   rZ   ÚLinkCandidate.__init__  s–  ø€ ð ˆØ×3Ñ3°KÓFˆØÑ"Ü�L‰LÐ6¸×8HÑ8HÔIØ×#Ñ#ˆDÜ)¨$À'ÑJˆØ�y‰y˜DÓ Ð Ð Ø�9‰9×× d§i¡i×&7×&7Ü˜$Ÿ)™)×,Ñ,Ó-ˆEØŸ™ˆJØÓ%ÐN¨$©°°j±^À:Ð'NÓNÐ%àÑ"Ü '¨¯©Ó 6�àÓ,ðHà‘[  ]Ñ$5°[ÀÀÐGóHØ,ð Ñ"Ø—9‘9×%×%Ð%Ð%Ø—9‘9×$×$Ð$Ð$Ø×%×%¨(¯-©-¸8×;QÑ;QÒ*QØ0;Ô-Ø×!Ñ!Ñ-Ø%0×%7Ñ%7�Õ"ô &:Ø×8NÑ8Nñ&�Ô"ô 	‰ÑØØ#ØØØØð 	ò 	
r*   c                ób   • U R                   R                  nUR                  U R                  SS9$ )NT)Úparallel_builds)rQ   ÚpreparerÚprepare_linked_requirementrR   )rW   rÙ   s     r(   r‹   Ú#LinkCandidate._prepare_distributionN  s+   € Ø—=‘=×)Ñ)ˆØ×2Ñ2°4·:±:ÈtÐ2ÐTÐTr*   rŸ   rª   ©r:   r   r<   r   rY   r    r6   r«   r=   r¬   r­   r®   r·   ©	rg   r»   r¼   r½   r„   rZ   r‹   rÂ   Ú__classcell__©rf   s   @r(   r#   r#     sa   ø† Ø€Kð '+Ø"&ð/
àð/
ð %ð/
ð ð	/
ð
 $ð/
ð  ð/
ð 
÷/
ð /
÷bUò Ur*   r#   c                  óX   ^ • \ rS rSrSr  S           SU 4S jjjrSS jrSrU =r$ )	r"   iS  Tc           	     ó<   >• [         TU ]  UU[        X5      UUUS9  g )NrÇ   )rÑ   rZ   rD   )rW   r:   r<   rY   r6   r=   rf   s         €r(   rZ   ÚEditableCandidate.__init__V  s.   ø€ ô 	‰ÑØØÜ/°Ó?ØØØð 	ò 	
r*   c                ó`   • U R                   R                  R                  U R                  5      $ rN   )rQ   rÙ   Úprepare_editable_requirementrR   r_   s    r(   r‹   Ú'EditableCandidate._prepare_distributiong  s!   € Ø�}‰}×%Ñ%×BÑBÀ4Ç:Á:ÓNÐNr*   rŸ   rª   rÜ   r·   rÝ   rß   s   @r(   r"   r"   S  s`   ø† Ø€Kð '+Ø"&ð
àð
ð %ð
ð ð	
ð
 $ð
ð  ð
ð 
÷
ð 
÷"Oò Or*   r"   c                  óÌ   • \ rS rSrSrSr        SS jrSS jrSS jrSS jr	SS jr
\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       rSS jrSS jrSS jrSrg)r!   ik  TNc                óš   • Xl         [        X5      U l        X0l        S U l        SnUR
                  R                  U R                  U5        g )Nzalready satisfied)rH   rI   rR   rQ   rT   rÙ   Úprepare_installed_requirement)rW   rH   r<   rY   Úskip_reasons        r(   rZ   Ú"AlreadyInstalledCandidate.__init__o  sB   € ð Œ	Ü0°Ó@ˆŒ
ØŒØˆŒð *ˆØ×Ñ×6Ñ6°t·z±zÀ;ÕOr*   c                ó,   • [        U R                  5      $ rN   )r7   rH   r_   s    r(   r`   Ú!AlreadyInstalledCandidate.__str__�  s   € Ü�4—9‘9‹~Ðr*   c                óP   • U R                   R                   SU R                  < S3$ rc   )rf   rg   rH   r_   s    r(   rh   Ú"AlreadyInstalledCandidate.__repr__„  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯I©I©=¸Ð:Ð:r*   c                óª   • [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ rN   )r%   r!   ÚNotImplementedr6   r=   rp   s     r(   rr   Ú AlreadyInstalledCandidate.__eq__‡  s;   € Ü˜%Ô!:×;Ñ;Ü!Ð!Ø�y‰y˜EŸJ™JÑ&×H¨4¯<©<¸5¿=¹=Ñ+HÐHr*   c                óD   • [        U R                  U R                  45      $ rN   )rk   r6   r=   r_   s    r(   rl   Ú"AlreadyInstalledCandidate.__hash__Œ  s   € Ü�T—Y‘Y §¡Ð-Ó.Ð.r*   c                ó.   • U R                   R                  $ rN   )rH   rF   r_   s    r(   ry   Ú&AlreadyInstalledCandidate.project_name�  s   € à�y‰y×'Ñ'Ð'r*   c                ó   • U R                   $ rN   r|   r_   s    r(   r6   ÚAlreadyInstalledCandidate.name“  rv   r*   c                ój   • U R                   c  U R                  R                  U l         U R                   $ rN   r   r_   s    r(   r=   Ú!AlreadyInstalledCandidate.version—  r�   r*   c                ó.   • U R                   R                  $ rN   )rH   r4   r_   s    r(   r„   Ú%AlreadyInstalledCandidate.is_editable�  s   € à�y‰y×!Ñ!Ð!r*   c                ó:   • U R                    SU R                   S3$ )Nr]   z (Installed)r^   r_   s    r(   r‡   Ú*AlreadyInstalledCandidate.format_for_error¡  s   € Ø—)‘)�˜A˜dŸl™l˜^¨<Ð8Ð8r*   c              #  ó   #   • U(       d  g  U R                   R                  5        H:  nU R                  R                  [	        U5      U R
                  5       S h  v•N   M<     g  N	! [         a  n[        U R                   US9S eS nAff = f7f)N)rH   Úinvalid_exc)rH   r�   rQ   r¢   r7   rR   r	   r   )rW   r£   r¥   rš   s       r(   r�   Ú+AlreadyInstalledCandidate.iter_dependencies¤  sr   é € ÞØð	UØ—Y‘Y×0Ñ0Ö2�ØŸ=™=×DÑDÄSÈÃVÈTÏZÉZÓX×XÒXò 3ÙXøÜ!ó 	UÜ)¨t¯y©yÀcÑJÐPTÐTûð	Uüs;   ‚	BŒAA' ÁA%ÁA' Á$BÁ%A' Á'
BÁ1BÂBÂBc                ó   • g rN   rŸ   r_   s    r(   r¨   Ú1AlreadyInstalledCandidate.get_install_requirement®  ó   € Ør*   )rQ   rR   rT   rH   )rH   r   r<   r   rY   r    r­   r®   r¯   )rq   Úobjectr­   r³   r°   rµ   r¶   ©r­   r³   r¸   r¹   )rg   r»   r¼   r½   rÀ   rX   rZ   r`   rh   rr   rl   rÁ   ry   r6   r=   r„   r‡   r�   r¨   rÂ   rŸ   r*   r(   r!   r!   k  s±   † Ø€LØ€KðPàðPð %ðPð ð	Pð
 
ôPô$ô;ôIô
/ð ó(ó ð(ð ó!ó ð!ð óó ðð
 ó"ó ð"ô9ôU÷r*   r!   c                  óö   • \ rS rSrSrSS.       SS jjrSS jrSS jrSS jrSS	 jr	\
SS
 j5       r\
SS j5       r\
SS j5       rSS jr\
SS j5       r\
SS j5       r\
SS j5       rSS jrSS jrSrg)ÚExtrasCandidatei²  a¥  A candidate that has 'extras', indicating additional dependencies.

Requirements can be for a project with dependencies, something like
foo[extra].  The extras don't affect the project/version being installed
directly, but indicate that we need additional dependencies. We model that
by having an artificial ExtrasCandidate that wraps the "base" candidate.

The ExtrasCandidate differs from the base in the following ways:

1. It has a unique name, of the form foo[extra]. This causes the resolver
   to treat it as a separate node in the dependency graph.
2. When we're getting the candidate's dependencies,
   a) We specify that we want the extra dependencies as well.
   b) We add a dependency on the base candidate.
      See below for why this is needed.
3. We return None for the underlying InstallRequirement, as the base
   candidate will provide it, and we don't want to end up with duplicates.

The dependency on the base candidate is needed so that the resolver can't
decide that it should recommend foo[extra1] version 1.0 and foo[extra2]
version 2.0. Having those candidates depend on foo=1.0 and foo=2.0
respectively forces the resolver to recognise that this is a conflict.
N)r/   c               óˆ   • Xl         [        S U 5       5      U l        Ub  X0l        gU R                   R                  U l        g)a‡  
:param comes_from: the InstallRequirement that led to this candidate if it
    differs from the base's InstallRequirement. This will often be the
    case in the sense that this candidate's requirement has the extras
    while the base's does not. Unlike the InstallRequirement backed
    candidates, this requirement is used solely for reporting purposes,
    it does not do any leg work.
c              3  ó8   #   • U  H  n[        U5      v •  M     g 7frN   )r   )Ú.0r‘   s     r(   Ú	<genexpr>Ú+ExtrasCandidate.__init__.<locals>.<genexpr>Û  s   é € ÐEºf¸Ô 1°!× 4Ð 4ºfùó   ‚N)ÚbaseÚ	frozensetr;   rR   Ú_comes_from)rW   r  r;   r/   s       r(   rZ   ÚExtrasCandidate.__init__Ë  s5   € ð Œ	ÜÑE¹fÓEÓEˆŒØ)3Ñ)?˜:ÕÀTÇYÁYÇ_Á_ˆÕr*   c                ó¨   • [        U R                  5      R                  SS5      u  pSR                  USR	                  U R
                  5      U5      $ )Nr]   r   z	{}[{}] {}Ú,)r7   r  ÚsplitÚformatÚjoinr;   )rW   r6   Úrests      r(   r`   ÚExtrasCandidate.__str__Þ  s@   € Ü˜Ÿ™“^×)Ñ)¨#¨qÓ1‰
ˆØ×!Ñ! $¨¯©°·±Ó(=¸tÓDÐDr*   c                ól   • U R                   R                   SU R                  < SU R                  < S3$ )Nz(base=z	, extras=re   )rf   rg   r  r;   r_   s    r(   rh   ÚExtrasCandidate.__repr__â  s/   € Ø—.‘.×)Ñ)Ð*¨&°·±±¸YÀtÇ{Á{ÁoÐUVÐWÐWr*   c                óD   • [        U R                  U R                  45      $ rN   )rk   r  r;   r_   s    r(   rl   ÚExtrasCandidate.__hash__å  s   € Ü�T—Y‘Y §¡Ð,Ó-Ð-r*   c                óª   • [        XR                  5      (       a9  U R                  UR                  :H  =(       a    U R                  UR                  :H  $ gro   )r%   rf   r  r;   rp   s     r(   rr   ÚExtrasCandidate.__eq__è  s9   € Ü�eŸ^™^×,Ñ,Ø—9‘9 §
¡
Ñ*×J¨t¯{©{¸e¿l¹lÑ/JÐJØr*   c                ó.   • U R                   R                  $ rN   )r  ry   r_   s    r(   ry   ÚExtrasCandidate.project_nameí  ó   € à�y‰y×%Ñ%Ð%r*   c                óV   • [        U R                  R                  U R                  5      $ rx   )r   r  ry   r;   r_   s    r(   r6   ÚExtrasCandidate.nameñ  s   € ô ˜4Ÿ9™9×1Ñ1°4·;±;Ó?Ð?r*   c                ó.   • U R                   R                  $ rN   )r  r=   r_   s    r(   r=   ÚExtrasCandidate.versionö  s   € à�y‰y× Ñ Ð r*   c                óš   • SR                  U R                  R                  5       SR                  [	        U R
                  5      5      5      $ )Nz{} [{}]z, )r  r  r‡   r  Úsortedr;   r_   s    r(   r‡   Ú ExtrasCandidate.format_for_errorú  s9   € Ø×ÑØ�I‰I×&Ñ&Ó(¨$¯)©)´F¸4¿;¹;Ó4GÓ*Hó
ð 	
r*   c                ó.   • U R                   R                  $ rN   )r  rÀ   r_   s    r(   rÀ   ÚExtrasCandidate.is_installedÿ  r!  r*   c                ó.   • U R                   R                  $ rN   )r  r„   r_   s    r(   r„   ÚExtrasCandidate.is_editable  ó   € à�y‰y×$Ñ$Ð$r*   c                ó.   • U R                   R                  $ rN   )r  rX   r_   s    r(   rX   ÚExtrasCandidate.source_link  r-  r*   c              #  ó¾  #   • U R                   R                  nUR                  U R                   5      v •  U(       d  g U R                  R	                  U R                   R
                  R                  5       5      nU R                  R                  U R                   R
                  R                  5       5      n[        U5       H9  n[        R                  SU R                   R                  U R                  U5        M;     U R                   R
                  R                  U5       H1  nUR                  [        U5      U R                   U5       S h  v•N   M3     g  N	7f)Nz%%s %s does not provide the extra '%s')r  rQ   Úmake_requirement_from_candidater;   ÚintersectionrH   r�   Ú
differencer'  rÉ   Úwarningr6   r=   r�   r¢   r7   r  )rW   r£   rY   Úvalid_extrasÚinvalid_extrasÚextrar¥   s          r(   r�   Ú!ExtrasCandidate.iter_dependencies  s   é € Ø—)‘)×$Ñ$ˆð ×5Ñ5°d·i±iÓ@Ò@ÞØð —{‘{×/Ñ/°·	±	·±×0SÑ0SÓ0UÓVˆØŸ™×/Ñ/°·	±	·±×0SÑ0SÓ0UÓVˆÜ˜NÖ+ˆEÜ�N‰NØ7Ø—	‘	—‘Ø—‘Øö	ñ ,ð —‘—‘×1Ñ1°,Ö?ˆAØ×:Ñ:Ü�A“Ø× Ñ Øó÷ ò ò @ñùs   ‚EEÅEÅ
Ec                ó   • g rN   rŸ   r_   s    r(   r¨   Ú'ExtrasCandidate.get_install_requirement'  s   € ð r*   )r  r  r;   )r  ÚBaseCandidater;   zfrozenset[str]r/   rº   r­   r®   r¯   r°   r²   rµ   r¶   r  r´   r¸   r¹   )rg   r»   r¼   r½   r¾   rZ   r`   rh   rl   rr   rÁ   ry   r6   r=   r‡   rÀ   r„   rX   r�   r¨   rÂ   rŸ   r*   r(   r  r  ²  sÛ   † ñð: 15ñUàðUð ðUð
 .ðUð 
õUô&EôXô.ôð
 ó&ó ð&ð ó@ó ð@ð ó!ó ð!ô
ð
 ó&ó ð&ð ó%ó ð%ð ó%ó ð%ô÷8r*   r  c                  ó”   • \ rS rSrSrSrSS jrSS jrSS jr\	SS j5       r
\	SS j5       r\	SS	 j5       rSS
 jrSS jrSS jrSrg)ÚRequiresPythonCandidatei.  FNc                ó”   • Ub  [        U5      nO[        R                  S S n[        SR	                  S U 5       5      5      U l        g )Né   Ú.c              3  ó8   #   • U  H  n[        U5      v •  M     g 7frN   )r7   )r
  Úcs     r(   r  Ú3RequiresPythonCandidate.__init__.<locals>.<genexpr>7  s   é € Ð(Fº°A¬¨Q¯¨ºùr  )r   ÚsysÚversion_infor   r  rT   )rW   Úpy_version_inforE  s      r(   rZ   Ú RequiresPythonCandidate.__init__2  s?   € ØÑ&Ü1°/ÓB‰Lä×+Ñ+¨B¨QÐ/ˆLÜ §¡Ñ(F¹Ó(FÓ FÓGˆ�r*   c                ó    • SU R                    3$ ©NzPython ©rT   r_   s    r(   r`   ÚRequiresPythonCandidate.__str__=  s   € Ø˜Ÿ™˜Ð(Ð(r*   c                óP   • U R                   R                   SU R                  < S3$ rc   )rf   rg   rT   r_   s    r(   rh   Ú RequiresPythonCandidate.__repr__@  s%   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©MÑ+<¸AÐ>Ð>r*   c                ó   • [         $ rN   ©ÚREQUIRES_PYTHON_IDENTIFIERr_   s    r(   ry   Ú$RequiresPythonCandidate.project_nameC  ó   € ä)Ð)r*   c                ó   • [         $ rN   rO  r_   s    r(   r6   ÚRequiresPythonCandidate.nameG  rR  r*   c                ó   • U R                   $ rN   rJ  r_   s    r(   r=   ÚRequiresPythonCandidate.versionK  s   € à�}‰}Ðr*   c                ó    • SU R                    3$ rI  rÅ   r_   s    r(   r‡   Ú(RequiresPythonCandidate.format_for_errorO  s   € Ø˜Ÿ™˜Ð'Ð'r*   c                ó   • grž   rŸ   )rW   r£   s     r(   r�   Ú)RequiresPythonCandidate.iter_dependenciesR  s   € Ør*   c                ó   • g rN   rŸ   r_   s    r(   r¨   Ú/RequiresPythonCandidate.get_install_requirementU  r  r*   rJ  )rF  ztuple[int, ...] | Noner­   r®   r¯   rµ   r¶   r¸   r¹   )rg   r»   r¼   r½   rÀ   rX   rZ   r`   rh   rÁ   ry   r6   r=   r‡   r�   r¨   rÂ   rŸ   r*   r(   r=  r=  .  sg   † Ø€LØ€KôHô)ô?ð ó*ó ð*ð ó*ó ð*ð óó ðô(ô÷r*   r=  )r&   r   r­   zBaseCandidate | NonerN   )r:   r   r<   r   r=   r¬   r­   r   )r:   r   r<   r   r­   r   )rH   r   r<   r   r­   r   )>Ú
__future__r   ÚloggingrD  Úcollections.abcr   Útypingr   r   r   r   Ú"pip._vendor.packaging.requirementsr	   Úpip._vendor.packaging.utilsr
   r   Úpip._vendor.packaging.versionr   Úpip._internal.exceptionsr   r   r   r   r   r   Úpip._internal.metadatar   Úpip._internal.models.linkr   r   Úpip._internal.models.wheelr   Úpip._internal.req.constructorsr   r   Úpip._internal.req.req_installr   Ú&pip._internal.utils.direct_url_helpersr   Úpip._internal.utils.miscr   r  r   r   r   rY   r    Ú	getLoggerrg   rÉ   r;  rP  r)   r@   rD   rI   rK   r#   r"   r!   r  r=  rŸ   r*   r(   Ú<module>rm     sE  ðÝ "ã Û 
Ý $ß 2Ó 2å Aß IÝ 1÷÷ õ 4ß <Ý ,÷õ =Ý GÝ ;ç 5Ñ 5æÝ à	×	Ò	˜8Ó	$€àðñ€ñ " .Ð2QÓRÐ ô	ð #ðØ
ðà ðð ðð õ	ð<Ø
ðØ,ðàôð*Ø
ðØ&8ðàôô,R¨ô Rôj6UÐ6ô 6UôrOÐ:ô Oô0D 	ô DôNy�iô yôx(˜iõ (r*   