Ë
    ÊmxiæO  ã                  ó  — d dl mZ d dlZd dl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mZ d dlmZ d dlmZmZmZmZmZmZ d d	lmZ d d
lmZ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*m+Z+m,Z, erddl-m.Z.  ej^                  e0«      Z1e	d   Z2 e
ed«      Z3d%d„Z4	 	 	 	 	 	 d&d„Z5	 	 	 	 	 	 d&d„Z6	 	 	 	 	 	 d'd„Z7 G d„ de*«      Z8 G d„ de8«      Z9 G d„ de8«      Z: G d„ d e*«      Z; G d!„ d"e*«      Z< G d#„ d$e*«      Z=y)(é    )Ú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                óB   — t         t        t        f}t        | |«      r| S y)z%The runtime version of BaseCandidate.N)r!   r"   r#   Ú
isinstance)Ú	candidateÚbase_candidate_classess     úe/home/htdocs/ttos/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.pyÚas_base_candidater)   0   s+   € ô 	"ÜÜðÐô
 �)Ð3Ô4ØÐØó    c           	     óv  — |j                   rJ d«       ‚|j                  rt        |j                  «      }n| j                  }t	        ||j
                  |j                  |j                  |j                  |j                  |j                  ¬«      }|j                  |_        | |_        |j                  |_        |S )Nztemplate is editable©Úuser_suppliedÚ
comes_fromÚisolatedÚ
constraintÚhash_optionsÚconfig_settings)ÚeditableÚreqÚstrÚurlr   r-   r.   r/   r0   r1   r2   Úoriginal_linkÚlinkÚextras)r8   ÚtemplateÚlineÚireqs       r(   Úmake_install_req_from_linkr=   <   s¡   € ð × Ò Ð8Ð"8Ó8Ð Ø‡|‚|Ü�8—<‘<Ó ‰à�x‰xˆÜ ØØ×,Ñ,Ø×&Ñ&Ø×"Ñ"Ø×&Ñ&Ø×*Ñ*Ø ×0Ñ0ô€Dð "×/Ñ/€DÔØ€D„IØ—/‘/€D„KØ€Kr*   c           
     óh  — |j                   sJ d«       ‚|j                  r|j                  › d| j                  › �}n| j                  }t        ||j                  |j
                  |j                  |j                  |j                  |j                  |j                  ¬«      }|j                  |_        |S )Nztemplate not editableú @ )r-   r.   r/   r0   Úpermit_editable_wheelsr1   r2   )r3   Únamer6   r   r-   r.   r/   r0   r@   r1   r2   r9   )r8   r:   Ú
req_stringr<   s       r(   Úmake_install_req_from_editablerC   S   sŸ   € ð ×ÒÐ5Ð5Ó5ÐØ‡}‚}Ø Ÿ™� c¨$¯(©(¨Ð4‰
à—X‘Xˆ
Ü$ØØ×,Ñ,Ø×&Ñ&Ø×"Ñ"Ø×&Ñ&Ø'×>Ñ>Ø×*Ñ*Ø ×0Ñ0ô	€Dð —/‘/€D„KØ€Kr*   c           	     óŽ  — |j                   rt        |j                   «      }nM|j                  r&| j                  › d|j                  j                  › �}n| j                  › d| j
                  › �}t        ||j                  |j                  |j                  |j                  |j                  |j                  ¬«      }| |_        |S )Nr?   z==r,   )r4   r5   r8   Úcanonical_namer6   Úversionr   r-   r.   r/   r0   r1   r2   Úsatisfied_by)Údistr:   r;   r<   s       r(   Ú_make_install_req_from_distrI   i   s¯   € ð ‡|‚|Ü�8—<‘<Ó ‰Ø	�ŠØ×%Ñ%Ð& c¨(¯-©-×*;Ñ*;Ð)<Ð=‰à×%Ñ%Ð& b¨¯©¨Ð7ˆÜ ØØ×,Ñ,Ø×&Ñ&Ø×"Ñ"Ø×&Ñ&Ø×*Ñ*Ø ×0Ñ0ô€Dð €DÔØ€Kr*   c                  óà   — e Zd ZU dZded<   dZ	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd	„Z	dd
„Z
edd„«       Zedd„«       Zedd„«       Zedd„«       Zdd„Zdd„Zdd„Zdd„Zdd„Zd d„Zy)!Ú"_InstallRequirementBackedCandidatea÷  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                ó�   — || _         || _        || _        || _        || _        || _        | j                  «       | _        d | _        y ©N)	Ú_linkÚ_source_linkÚ_factoryÚ_ireqÚ_nameÚ_versionÚ_preparerH   Ú_hash)Úselfr8   Úsource_linkr<   ÚfactoryrA   rF   s          r(   Ú__init__z+_InstallRequirementBackedCandidate.__init__’   sC   € ð ˆŒ
Ø'ˆÔØˆŒØˆŒ
ØˆŒ
ØˆŒØ—M‘M“OˆŒ	Ø!%ˆ�
r*   c                ó8   — | j                   › d| j                  › �S )Nú ©rA   rF   ©rV   s    r(   Ú__str__z*_InstallRequirementBackedCandidate.__str__¤   s   € Ø—)‘)�˜A˜dŸl™l˜^Ð,Ð,r*   c                ó`   — | j                   j                  › dt        | j                  «      ›d�S ©Nú(ú))Ú	__class__Ú__name__r5   rN   r]   s    r(   Ú__repr__z+_InstallRequirementBackedCandidate.__repr__§   s)   € Ø—.‘.×)Ñ)Ð*¨!¬C°·
±
«OÐ+>¸aÐ@Ð@r*   c                ó–   — | j                   �| j                   S t        | j                  | j                  f«      | _         | j                   S rM   )rU   Úhashrc   rN   r]   s    r(   Ú__hash__z+_InstallRequirementBackedCandidate.__hash__ª   s9   € Ø�:‰:Ð!Ø—:‘:Ðä˜4Ÿ>™>¨4¯:©:Ð6Ó7ˆŒ
Ø�z‰zÐr*   c                óp   — t        || j                  «      r t        | j                  |j                  «      S y©NF)r%   rc   r   rN   ©rV   Úothers     r(   Ú__eq__z)_InstallRequirementBackedCandidate.__eq__±   s(   € Ü�e˜TŸ^™^Ô,Ü# D§J¡J°·±Ó<Ð<Ør*   c                ó   — | j                   S rM   )rO   r]   s    r(   rW   z._InstallRequirementBackedCandidate.source_link¶   ó   € à× Ñ Ð r*   c                óh   — | j                   €| j                  j                  | _         | j                   S ©z:The normalised name of the project the candidate refers to)rR   rH   rE   r]   s    r(   Úproject_namez/_InstallRequirementBackedCandidate.project_nameº   s)   € ð �:‰:ÐØŸ™×1Ñ1ˆDŒJØ�z‰zÐr*   c                ó   — | j                   S rM   ©rr   r]   s    r(   rA   z'_InstallRequirementBackedCandidate.nameÁ   ro   r*   c                óh   — | j                   €| j                  j                  | _         | j                   S rM   ©rS   rH   rF   r]   s    r(   rF   z*_InstallRequirementBackedCandidate.versionÅ   ó'   € à�=‰=Ð Ø ŸI™I×-Ñ-ˆDŒMØ�}‰}Ðr*   c                ó²   — | j                   › d| j                  › d| j                  j                  r| j                  j                  › d�S | j                  › d�S )Nr[   z (from rb   )rA   rF   rN   Úis_fileÚ	file_pathr]   s    r(   Úformat_for_errorz3_InstallRequirementBackedCandidate.format_for_errorË   s\   € à�y‰yˆk˜˜4Ÿ<™<˜.ð )Ø-1¯Z©Z×-?Ò-?�T—Z‘Z×)Ñ)ÐPÐPQðSð	
àEIÇZÁZÐPÐPQðSð	
r*   c                ó   — t        d«      ‚)NzOverride in subclass)ÚNotImplementedErrorr]   s    r(   Ú_prepare_distributionz8_InstallRequirementBackedCandidate._prepare_distributionÑ   s   € Ü!Ð"8Ó9Ð9r*   c                ó0  — | j                   �E| j                   |j                  k7  r,t        | j                  d| j                   |j                  «      ‚| j                  �W| j                  |j
                  k7  r>t        | j                  dt        | j                  «      t        |j
                  «      «      ‚	 t        |j                  t        |j                  «       «      «      «       y# t        $ r$}t        | j                  t        |«      «      ‚d}~ww xY w)z:Check for consistency of project name and version of dist.NrA   rF   )rR   rE   r   rQ   rS   rF   r5   ÚlistÚiter_dependenciesÚiter_provided_extrasr	   r   )rV   rH   Úes      r(   Ú_check_metadata_consistencyz>_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   Â61C( Ã(	DÃ1DÄDc                óô  — 	 | j                  «       }| j                  |«       |S # t        $ r}| j                  |_        ‚ d }~wt        $ r«}t        | j                  j                  t        «      r%| j                  j                  j                  «       }n| j                  j                  }|€d}t        | j                  j                  xs t        | j                  «      ||j                  ¬«      ‚d }~ww xY w)Nzdirectly requested)Úpackage_nameÚrequirement_chainÚfailed_step)r~   r   rQ   r4   r   r%   r.   r   Ú	from_pathr   rA   r5   rN   Úcommand_descriptionr„   )rV   rH   rƒ   ÚexcÚrequest_chains        r(   rT   z+_InstallRequirementBackedCandidate._prepareì   sÍ   € ð	Ø×-Ñ-Ó/ˆDð, 	×(Ñ(¨Ô.Øˆøô- ò 	ð —J‘JˆAŒEØûÜ*ò 	Ü˜$Ÿ*™*×/Ñ/Ô1CÔDØ $§
¡
× 5Ñ 5× ?Ñ ?Ó A‘à $§
¡
× 5Ñ 5�àÐ$Ø 4�ä*Ø!ŸZ™ZŸ_™_Ò?´°D·J±J³Ø"/Ø×3Ñ3ôð ûð	ús!   ‚% ¥	C7®A Á C7ÁB&C2Ã2C7c              #  ó*  K  — | j                   j                  | j                  j                  «      –— |r| j                  j	                  «       nd}|D ]9  }| j                   j                  t        |«      | j                  «      E d {  –—†  Œ; y 7 Œ­w©N© )rP   Ú make_requires_python_requirementrH   Úrequires_pythonr�   Úmake_requirements_from_specr5   rQ   )rV   Úwith_requiresÚrequiresÚrs       r(   r�   z4_InstallRequirementBackedCandidate.iter_dependencies  ss   è ø€ ð �m‰m×<Ñ<¸T¿Y¹Y×=VÑ=VÓWÒWÙ4A�4—9‘9×.Ñ.Ô0ÀrˆØò 	UˆAØ—}‘}×@Ñ@ÄÀQÃÈÏÉÓT×TÑTñ	UØTús   ‚BBÂ	BÂ
Bc                ó   — | j                   S rM   )rQ   r]   s    r(   Úget_install_requirementz:_InstallRequirementBackedCandidate.get_install_requirement  s   € Ø�z‰zÐr*   ©NN)r8   r   rW   r   r<   r   rX   r    rA   úNormalizedName | NonerF   úVersion | NoneÚreturnÚNone©r›   r5   ©r›   Úint©rl   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)rd   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__Úis_installedrY   r^   re   rh   rm   ÚpropertyrW   rr   rA   rF   r{   r~   r„   rT   r�   r—   r�   r*   r(   rK   rK      sé   … ñð ÓØ€Lð '+Ø"&ð&àð&ð ð&ð !ð	&ð
 ð&ð $ð&ð  ð&ð 
ó&ó$-óAóóð
 ò!ó ð!ð òó ðð ò!ó ð!ð òó ðó

ó:ó6ó0ó6Uôr*   rK   c                  óH   ‡ — e Zd ZdZ	 	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )r#   Fc                óD  •— |}|j                  ||«      }|�,t        j                  d|j                  «       |j                  }t	        ||«      }|j                  |k(  sJ ‚|j                  j
                  r~|j                  j                  sht        |j                  j                  «      }	|	j                  }
||
k(  sJ |›d|
›d�«       ‚|�)t        |	j                  «      }||k(  sJ |›d|›d|› �«       ‚|�•|j                  j
                  sJ ‚|j                  j                  sJ ‚|j                  r|j                  |j                  u r||_        |j                  �|j                  |_        nt#        ||j                  ¬«      |_        t$        ‰| �M  ||||||¬«       y )NzUsing cached wheel link: %sz != z
 for wheelz for wheel )Úlink_is_in_wheel_cache©r8   rW   r<   rX   rA   rF   )Úget_wheel_cache_entryÚloggerÚdebugr8   r=   Úis_wheelry   r   ÚfilenamerA   r   rF   Ú
persistentr7   Úcached_wheel_source_linkÚoriginÚdownload_infor   ÚsuperrY   )rV   r8   r:   rX   rA   rF   rW   Úcache_entryr<   ÚwheelÚ
wheel_nameÚwheel_versionrc   s               €r(   rY   zLinkCandidate.__init__  s   ø€ ð ˆØ×3Ñ3°KÀÓFˆØÐ"Ü�L‰LÐ6¸×8HÑ8HÔIØ×#Ñ#ˆDÜ)¨$°Ó9ˆØ�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                óh   — | j                   j                  }|j                  | j                  d¬«      S )NT)Úparallel_builds)rP   ÚpreparerÚprepare_linked_requirementrQ   )rV   rÃ   s     r(   r~   z#LinkCandidate._prepare_distributionG  s+   € Ø—=‘=×)Ñ)ˆØ×2Ñ2°4·:±:ÈtÐ2ÓTÐTr*   r˜   ©r8   r   r:   r   rX   r    rA   r™   rF   rš   r›   rœ   r¥   ©rd   r©   rª   Úis_editablerY   r~   Ú__classcell__©rc   s   @r(   r#   r#     sV   ø„ Ø€Kð '+Ø"&ð/
àð/
ð %ð/
ð ð	/
ð
 $ð/
ð  ð/
ð 
õ/
÷bUr*   r#   c                  óH   ‡ — e Zd ZdZ	 	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )r"   Tc                óD   •— t         ‰| �  ||t        ||«      |||¬«       y )Nr²   )r¼   rY   rC   )rV   r8   r:   rX   rA   rF   rc   s         €r(   rY   zEditableCandidate.__init__O  s0   ø€ ô 	‰ÑØØÜ/°°hÓ?ØØØð 	õ 	
r*   c                ó`   — | j                   j                  j                  | j                  «      S rM   )rP   rÃ   Úprepare_editable_requirementrQ   r]   s    r(   r~   z'EditableCandidate._prepare_distribution`  s!   € Ø�}‰}×%Ñ%×BÑBÀ4Ç:Á:ÓNÐNr*   r˜   rÅ   r¥   rÆ   rÉ   s   @r(   r"   r"   L  sU   ø„ Ø€Kð '+Ø"&ð
àð
ð %ð
ð ð	
ð
 $ð
ð  ð
ð 
õ
÷"Or*   r"   c                  ó¬   — e Zd ZdZdZ	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Zdd„Z	e
dd„«       Ze
dd	„«       Ze
dd
„«       Ze
dd„«       Zdd„Zdd„Zdd„Zy)r!   TNc                ó    — || _         t        ||«      | _        || _        d | _        d}|j
                  j                  | j                  |«       y )Nzalready satisfied)rH   rI   rQ   rP   rS   rÃ   Úprepare_installed_requirement)rV   rH   r:   rX   Úskip_reasons        r(   rY   z"AlreadyInstalledCandidate.__init__h  sH   € ð ˆŒ	Ü0°°xÓ@ˆŒ
ØˆŒØˆŒð *ˆØ×Ñ×6Ñ6°t·z±zÀ;ÕOr*   c                ó,   — t        | j                  «      S rM   )r5   rH   r]   s    r(   r^   z!AlreadyInstalledCandidate.__str__z  s   € Ü�4—9‘9‹~Ðr*   c                óN   — | j                   j                  › d| j                  ›d�S r`   )rc   rd   rH   r]   s    r(   re   z"AlreadyInstalledCandidate.__repr__}  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯I©I¨=¸Ð:Ð:r*   c                ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S rM   )r%   r!   ÚNotImplementedrA   rF   rk   s     r(   rm   z AlreadyInstalledCandidate.__eq__€  s8   € Ü˜%Ô!:Ô;Ü!Ð!Ø�y‰y˜EŸJ™JÑ&ÒH¨4¯<©<¸5¿=¹=Ñ+HÐHr*   c                óD   — t        | j                  | j                  f«      S rM   )rg   rA   rF   r]   s    r(   rh   z"AlreadyInstalledCandidate.__hash__…  s   € Ü�T—Y‘Y §¡Ð-Ó.Ð.r*   c                ó.   — | j                   j                  S rM   )rH   rE   r]   s    r(   rr   z&AlreadyInstalledCandidate.project_nameˆ  s   € à�y‰y×'Ñ'Ð'r*   c                ó   — | j                   S rM   rt   r]   s    r(   rA   zAlreadyInstalledCandidate.nameŒ  ro   r*   c                óh   — | j                   €| j                  j                  | _         | j                   S rM   rv   r]   s    r(   rF   z!AlreadyInstalledCandidate.version�  rw   r*   c                ó.   — | j                   j                  S rM   )rH   r3   r]   s    r(   rÇ   z%AlreadyInstalledCandidate.is_editable–  s   € à�y‰y×!Ñ!Ð!r*   c                ó:   — | j                   › d| j                  › d�S )Nr[   z (Installed)r\   r]   s    r(   r{   z*AlreadyInstalledCandidate.format_for_errorš  s   € Ø—)‘)�˜A˜dŸl™l˜^¨<Ð8Ð8r*   c              #  ó  K  — |sy 	 | j                   j                  «       D ]9  }| j                  j                  t	        |«      | j
                  «      E d {  –—†  Œ; y 7 Œ# t        $ r}t        | j                   |¬«      d ‚d }~ww xY w­w)N)rH   Úinvalid_exc)rH   r�   rP   r’   r5   rQ   r	   r   )rV   r“   r•   r‹   s       r(   r�   z+AlreadyInstalledCandidate.iter_dependencies�  sz   è ø€ ÙØð	UØ—Y‘Y×0Ñ0Ó2ò Y�ØŸ=™=×DÑDÄSÈÃVÈTÏZÉZÓX×XÑXñYØXùÜ!ò 	UÜ)¨t¯y©yÀcÔJÐPTÐTûð	Uüs;   ‚B	‡AA  ÁAÁA  ÁB	ÁA  Á 	BÁ)BÂBÂB	c                 ó   — y rM   r�   r]   s    r(   r—   z1AlreadyInstalledCandidate.get_install_requirement§  ó   € Ør*   )rH   r   r:   r   rX   r    r›   rœ   r�   )rl   Úobjectr›   r¡   rž   r£   r¤   ©r›   r¡   r¦   r§   )rd   r©   rª   r­   rW   rY   r^   re   rm   rh   r®   rr   rA   rF   rÇ   r{   r�   r—   r�   r*   r(   r!   r!   d  s±   „ Ø€LØ€KðPàðPð %ðPð ð	Pð
 
óPó$ó;óIó
/ð ò(ó ð(ð ò!ó ð!ð òó ðð
 ò"ó ð"ó9óUôr*   r!   c                  óÐ   — e Zd ZdZddœ	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Zdd„Ze	dd	„«       Z
e	dd
„«       Ze	dd„«       Zdd„Ze	dd„«       Ze	dd„«       Ze	dd„«       Zdd„Zdd„Zy)ÚExtrasCandidateaí  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               óŠ   — || _         t        d„ |D «       «      | _        |�|| _        y| j                   j                  | _        y)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  ó2   K  — | ]  }t        |«      –— Œ y ­wrM   )r   )Ú.0rƒ   s     r(   ú	<genexpr>z+ExtrasCandidate.__init__.<locals>.<genexpr>Ô  s   è ø€ ÒE¸Ô 1°!× 4ÑEùó   ‚N)ÚbaseÚ	frozensetr9   rQ   Ú_comes_from)rV   ré   r9   r.   s       r(   rY   zExtrasCandidate.__init__Ä  s9   € ð ˆŒ	ÜÑE¸fÔEÓEˆŒØ)3Ð)?˜:ˆÕÀTÇYÁYÇ_Á_ˆÕr*   c                óª   — t        | j                  «      j                  dd«      \  }}dj                  |dj	                  | j
                  «      |«      S )Nr[   r   z	{}[{}] {}ú,)r5   ré   ÚsplitÚformatÚjoinr9   )rV   rA   Úrests      r(   r^   zExtrasCandidate.__str__×  sB   € Ü˜Ÿ™“^×)Ñ)¨#¨qÓ1‰
ˆˆdØ×!Ñ! $¨¯©°·±Ó(=¸tÓDÐDr*   c                óh   — | j                   j                  › d| j                  ›d| j                  ›d�S )Nz(base=z	, extras=rb   )rc   rd   ré   r9   r]   s    r(   re   zExtrasCandidate.__repr__Û  s/   € Ø—.‘.×)Ñ)Ð*¨&°·±°¸YÀtÇ{Á{ÀoÐUVÐWÐWr*   c                óD   — t        | j                  | j                  f«      S rM   )rg   ré   r9   r]   s    r(   rh   zExtrasCandidate.__hash__Þ  s   € Ü�T—Y‘Y §¡Ð,Ó-Ð-r*   c                ó˜   — t        || j                  «      r4| j                  |j                  k(  xr | j                  |j                  k(  S yrj   )r%   rc   ré   r9   rk   s     r(   rm   zExtrasCandidate.__eq__á  s8   € Ü�e˜TŸ^™^Ô,Ø—9‘9 §
¡
Ñ*ÒJ¨t¯{©{¸e¿l¹lÑ/JÐJØr*   c                ó.   — | j                   j                  S rM   )ré   rr   r]   s    r(   rr   zExtrasCandidate.project_nameæ  ó   € à�y‰y×%Ñ%Ð%r*   c                óV   — t        | j                  j                  | j                  «      S rq   )r   ré   rr   r9   r]   s    r(   rA   zExtrasCandidate.nameê  s   € ô ˜4Ÿ9™9×1Ñ1°4·;±;Ó?Ð?r*   c                ó.   — | j                   j                  S rM   )ré   rF   r]   s    r(   rF   zExtrasCandidate.versionï  s   € à�y‰y× Ñ Ð r*   c                óš   — dj                  | j                  j                  «       dj                  t	        | j
                  «      «      «      S )Nz{} [{}]z, )rï   ré   r{   rð   Úsortedr9   r]   s    r(   r{   z ExtrasCandidate.format_for_erroró  s9   € Ø×ÑØ�I‰I×&Ñ&Ó(¨$¯)©)´F¸4¿;¹;Ó4GÓ*Hó
ð 	
r*   c                ó.   — | j                   j                  S rM   )ré   r­   r]   s    r(   r­   zExtrasCandidate.is_installedø  rö   r*   c                ó.   — | j                   j                  S rM   )ré   rÇ   r]   s    r(   rÇ   zExtrasCandidate.is_editableü  ó   € à�y‰y×$Ñ$Ð$r*   c                ó.   — | j                   j                  S rM   )ré   rW   r]   s    r(   rW   zExtrasCandidate.source_link   rý   r*   c              #  ó¬  K  — | j                   j                  }|j                  | j                   «      –— |sy | j                  j	                  | j                   j
                  j                  «       «      }| j                  j                  | j                   j
                  j                  «       «      }t        |«      D ]8  }t        j                  d| j                   j                  | j                  |«       Œ: | j                   j
                  j                  |«      D ]0  }|j                  t        |«      | j                   |«      E d {  –—†  Œ2 y 7 Œ­w)Nz%%s %s does not provide the extra '%s')ré   rP   Úmake_requirement_from_candidater9   ÚintersectionrH   r‚   Ú
differencerú   r´   ÚwarningrA   rF   r�   r’   r5   rë   )rV   r“   rX   Úvalid_extrasÚinvalid_extrasÚextrar•   s          r(   r�   z!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                 ó   — y rM   r�   r]   s    r(   r—   z'ExtrasCandidate.get_install_requirement   s   € ð r*   )ré   ÚBaseCandidater9   zfrozenset[str]r.   r¨   r›   rœ   r�   rž   r    r£   r¤   rá   r¢   r¦   r§   )rd   r©   rª   r«   rY   r^   re   rh   rm   r®   rr   rA   rF   r{   r­   rÇ   rW   r�   r—   r�   r*   r(   rã   rã   «  sÛ   „ ñð: 15ñUàðUð ðUð
 .ðUð 
óUó&EóXó.óð
 ò&ó ð&ð ò@ó ð@ð ò!ó ð!ó
ð
 ò&ó ð&ð ò%ó ð%ð ò%ó ð%óô8r*   rã   c                  óz   — e Zd ZdZdZdd„Zdd„Zdd„Zedd„«       Z	edd„«       Z
edd„«       Zdd	„Zdd
„Zdd„Zy)ÚRequiresPythonCandidateFNc                ó’   — |�t        |«      }nt        j                  d d }t        dj	                  d„ |D «       «      «      | _        y )Né   ú.c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrM   )r5   )ræ   Úcs     r(   rç   z3RequiresPythonCandidate.__init__.<locals>.<genexpr>0  s   è ø€ Ò(F°A¬¨Q¯Ñ(Fùrè   )r   ÚsysÚversion_infor   rð   rS   )rV   Úpy_version_infor  s      r(   rY   z RequiresPythonCandidate.__init__+  s?   € ØÐ&Ü1°/ÓB‰Lä×+Ñ+¨B¨QÐ/ˆLÜ §¡Ñ(F¸Ô(FÓ FÓGˆ�r*   c                ó    — d| j                   › �S ©NzPython ©rS   r]   s    r(   r^   zRequiresPythonCandidate.__str__6  s   € Ø˜Ÿ™˜Ð(Ð(r*   c                óN   — | j                   j                  › d| j                  ›d�S r`   )rc   rd   rS   r]   s    r(   re   z RequiresPythonCandidate.__repr__9  s%   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©MÐ+<¸AÐ>Ð>r*   c                ó   — t         S rM   ©ÚREQUIRES_PYTHON_IDENTIFIERr]   s    r(   rr   z$RequiresPythonCandidate.project_name<  ó   € ä)Ð)r*   c                ó   — t         S rM   r  r]   s    r(   rA   zRequiresPythonCandidate.name@  r  r*   c                ó   — | j                   S rM   r  r]   s    r(   rF   zRequiresPythonCandidate.versionD  s   € à�}‰}Ðr*   c                ó    — d| j                   › �S r  )rF   r]   s    r(   r{   z(RequiresPythonCandidate.format_for_errorH  s   € Ø˜Ÿ™˜Ð'Ð'r*   c                 ó   — yrŽ   r�   )rV   r“   s     r(   r�   z)RequiresPythonCandidate.iter_dependenciesK  s   € Ør*   c                 ó   — y rM   r�   r]   s    r(   r—   z/RequiresPythonCandidate.get_install_requirementN  rß   r*   )r  ztuple[int, ...] | Noner›   rœ   r�   r£   r¤   r¦   r§   )rd   r©   rª   r­   rW   rY   r^   re   r®   rr   rA   rF   r{   r�   r—   r�   r*   r(   r
  r
  '  sg   „ Ø€LØ€KóHó)ó?ð ò*ó ð*ð ò*ó ð*ð òó ðó(óôr*   r
  )r&   r   r›   zBaseCandidate | None)r8   r   r:   r   r›   r   )rH   r   r:   r   r›   r   )>Ú
__future__r   Úloggingr  Ú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   rX   r    Ú	getLoggerrd   r´   r  r  r)   r=   rC   rI   rK   r#   r"   r!   rã   r
  r�   r*   r(   ú<module>r0     s6  ðÝ "ã Û 
Ý $ß 2Ó 2å Aß IÝ 1÷÷ õ 4ß <Ý ,÷õ =Ý GÝ ;ç 5Ñ 5áÝ à	ˆ×	Ñ	˜8Ó	$€àðñ€ñ " .Ð2QÓRÐ ó	ðØ
ðØ,ðàóð.Ø
ðØ,ðàóð,Ø
ðØ&8ðàóô,Q¨ô Qôh6UÐ6ô 6UôrOÐ:ô Oô0D 	ô DôNy�iô yôx(˜iõ (r*   