Ë
    äØjj<R  ã                   ó  — d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZ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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'm(Z( erddl)m*Z*  e jV                  e,«      Z-e	d   Z. e
ed«      Z/de%dee.   fd„Z0dededefd„Z1dededefd„Z2dededefd„Z3 G d„ de%«      Z4 G d„ de4«      Z5 G d„ d e4«      Z6 G d!„ d"e%«      Z7 G d#„ d$e%«      Z8 G d%„ d&e%«      Z9y)'é    N)ÚTYPE_CHECKINGÚAnyÚ	FrozenSetÚIterableÚOptionalÚTupleÚUnionÚcast)ÚNormalizedNameÚcanonicalize_name)ÚVersion)Ú	HashErrorÚInstallationSubprocessErrorÚMetadataInconsistent)ÚBaseDistribution)ÚLinkÚlinks_equivalent)ÚWheel)Úinstall_req_from_editableÚinstall_req_from_line)ÚInstallRequirement)Údirect_url_from_link)Únormalize_version_infoé   )Ú	CandidateÚCandidateVersionÚRequirementÚformat_name)ÚFactory)ÚAlreadyInstalledCandidateÚEditableCandidateÚLinkCandidatez<Python from Requires-Python>Ú	candidateÚreturnc                 óB   — t         t        t        f}t        | |«      r| S y)z%The runtime version of BaseCandidate.N)r    r!   r"   Ú
isinstance)r#   Úbase_candidate_classess     úp/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.pyÚas_base_candidater)   )   s+   € ô 	"ÜÜðÐô
 �)Ð3Ô4ØÐØó    ÚlinkÚtemplatec                 ó¢  — |j                   rJ d«       ‚|j                  rt        |j                  «      }n| j                  }t	        ||j
                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  ¬«	      }|j                  |_        | |_        |j                  |_        |S )Nztemplate is editable©Úuser_suppliedÚ
comes_fromÚ
use_pep517ÚisolatedÚ
constraintÚglobal_optionsÚhash_optionsÚconfig_settings)ÚeditableÚreqÚstrÚurlr   r/   r0   r1   r2   r3   r4   r5   r6   Úoriginal_linkr+   Úextras)r+   r,   ÚlineÚireqs       r(   Úmake_install_req_from_linkr?   5   s³   € ð × Ò Ð8Ð"8Ó8Ð Ø‡|‚|Ü�8—<‘<Ó ‰à�x‰xˆÜ ØØ×,Ñ,Ø×&Ñ&Ø×&Ñ&Ø×"Ñ"Ø×&Ñ&Ø×.Ñ.Ø×*Ñ*Ø ×0Ñ0ô
€Dð "×/Ñ/€DÔØ€D„IØ—/‘/€D„KØ€Kr*   c                 ó@  — |j                   sJ d«       ‚t        | j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  ¬«
      }|j                  |_        |S )Nztemplate not editable)	r/   r0   r1   r2   r3   Úpermit_editable_wheelsr4   r5   r6   )r7   r   r:   r/   r0   r1   r2   r3   rA   r4   r5   r6   r<   )r+   r,   r>   s      r(   Úmake_install_req_from_editablerB   N   s�   € ð ×ÒÐ5Ð5Ó5ÐÜ$Ø�‰Ø×,Ñ,Ø×&Ñ&Ø×&Ñ&Ø×"Ñ"Ø×&Ñ&Ø'×>Ñ>Ø×.Ñ.Ø×*Ñ*Ø ×0Ñ0ô€Dð —/‘/€D„KØ€Kr*   Údistc                 óº  — |j                   rt        |j                   «      }nM|j                  r&| j                  › d|j                  j                  › �}n| j                  › d| j
                  › �}t        ||j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  ¬«	      }| |_        |S )Nz @ z==r.   )r8   r9   r+   Úcanonical_namer:   Úversionr   r/   r0   r1   r2   r3   r4   r5   r6   Úsatisfied_by)rC   r,   r=   r>   s       r(   Ú_make_install_req_from_distrH   b   sÁ   € ð ‡|‚|Ü�8—<‘<Ó ‰Ø	�ŠØ×%Ñ%Ð& c¨(¯-©-×*;Ñ*;Ð)<Ð=‰à×%Ñ%Ð& b¨¯©¨Ð7ˆÜ ØØ×,Ñ,Ø×&Ñ&Ø×&Ñ&Ø×"Ñ"Ø×&Ñ&Ø×.Ñ.Ø×*Ñ*Ø ×0Ñ0ô
€Dð €DÔØ€Kr*   c                   óJ  — e Zd ZU dZeed<   dZ	 	 ddedededd	d
e	e
   de	e   ddfd„Zdefd„Zdefd„Zdefd„Zdedefd„Zede	e   fd„«       Zede
fd„«       Zedefd„«       Zedefd„«       Zdefd„Zdefd„Zdeddfd„Zdefd„Zdedee	e      fd„Z de	e   f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).
    rC   FNr+   Úsource_linkr>   Úfactoryr   ÚnamerF   r$   c                 ó‚   — || _         || _        || _        || _        || _        || _        | j                  «       | _        y ©N)Ú_linkÚ_source_linkÚ_factoryÚ_ireqÚ_nameÚ_versionÚ_preparerC   )Úselfr+   rK   r>   rL   rM   rF   s          r(   Ú__init__z+_InstallRequirementBackedCandidate.__init__�   s<   € ð ˆŒ
Ø'ˆÔØˆŒØˆŒ
ØˆŒ
ØˆŒØ—M‘M“Oˆ�	r*   c                 ó8   — | j                   › d| j                  › �S )Nú ©rM   rF   ©rW   s    r(   Ú__str__z*_InstallRequirementBackedCandidate.__str__ž   s   € Ø—)‘)�˜A˜dŸl™l˜^Ð,Ð,r*   c                 ó`   — | j                   j                  › dt        | j                  «      ›d�S ©Nú(ú))Ú	__class__Ú__name__r9   rP   r\   s    r(   Ú__repr__z+_InstallRequirementBackedCandidate.__repr__¡   s)   € Ø—.‘.×)Ñ)Ð*¨!¬C°·
±
«OÐ+>¸aÐ@Ð@r*   c                 óD   — t        | j                  | j                  f«      S rO   )Úhashrb   rP   r\   s    r(   Ú__hash__z+_InstallRequirementBackedCandidate.__hash__¤   s   € Ü�T—^‘^ T§Z¡ZÐ0Ó1Ð1r*   Úotherc                 óp   — t        || j                  «      r t        | j                  |j                  «      S y©NF)r&   rb   r   rP   ©rW   rh   s     r(   Ú__eq__z)_InstallRequirementBackedCandidate.__eq__§   s(   € Ü�e˜TŸ^™^Ô,Ü# D§J¡J°·±Ó<Ð<Ør*   c                 ó   — | j                   S rO   )rQ   r\   s    r(   rK   z._InstallRequirementBackedCandidate.source_link¬   ó   € à× Ñ Ð r*   c                 óh   — | j                   €| j                  j                  | _         | j                   S ©z:The normalised name of the project the candidate refers to)rT   rC   rE   r\   s    r(   Úproject_namez/_InstallRequirementBackedCandidate.project_name°   s)   € ð �:‰:ÐØŸ™×1Ñ1ˆDŒJØ�z‰zÐr*   c                 ó   — | j                   S rO   ©rq   r\   s    r(   rM   z'_InstallRequirementBackedCandidate.name·   rn   r*   c                 óh   — | j                   €| j                  j                  | _         | j                   S rO   ©rU   rC   rF   r\   s    r(   rF   z*_InstallRequirementBackedCandidate.version»   ó'   € à�=‰=Ð Ø ŸI™I×-Ñ-ˆDŒMØ�}‰}Ðr*   c                 óÄ   — dj                  | j                  | j                  | j                  j                  r| j                  j
                  «      S | j                  «      S )Nz{} {} (from {}))ÚformatrM   rF   rP   Úis_fileÚ	file_pathr\   s    r(   Úformat_for_errorz3_InstallRequirementBackedCandidate.format_for_errorÁ   sP   € Ø ×'Ñ'Ø�I‰IØ�L‰LØ$(§J¡J×$6Ò$6ˆD�J‰J× Ñ ó
ð 	
ð =A¿J¹Jó
ð 	
r*   c                 ó   — t        d«      ‚)NzOverride in subclass)ÚNotImplementedErrorr\   s    r(   Ú_prepare_distributionz8_InstallRequirementBackedCandidate._prepare_distributionÈ   s   € Ü!Ð"8Ó9Ð9r*   c                 ón  — | j                   �E| j                   |j                  k7  r,t        | j                  d| j                   |j                  «      ‚| j                  �X| j                  |j
                  k7  r>t        | j                  dt        | j                  «      t        |j
                  «      «      ‚yy)z:Check for consistency of project name and version of dist.NrM   rF   )rT   rE   r   rS   rU   rF   r9   )rW   rC   s     r(   Ú_check_metadata_consistencyz>_InstallRequirementBackedCandidate._check_metadata_consistencyË   s—   € à�:‰:Ð! d§j¡j°D×4GÑ4GÒ&GÜ&Ø—
‘
ØØ—
‘
Ø×#Ñ#ó	ð ð �=‰=Ð$¨¯©¸$¿,¹,Ò)FÜ&Ø—
‘
ØÜ�D—M‘MÓ"Ü�D—L‘LÓ!ó	ð ð *GÐ$r*   c                 ó¸   — 	 | j                  «       }| j                  |«       |S # t        $ r}| j                  |_        ‚ d }~wt        $ r}d|_        ‚ d }~ww xY w)NzSee above for output.)r~   r   rS   r8   r   Úcontextr€   )rW   rC   ÚeÚexcs       r(   rV   z+_InstallRequirementBackedCandidate._prepareÜ   s_   € ð	Ø×-Ñ-Ó/ˆDð 	×(Ñ(¨Ô.Øˆøô ò 	ð —J‘JˆAŒEØûÜ*ò 	à1ˆCŒKØûð	ús    ‚% ¥	A®A Á AÁAÁAÚwith_requiresc              #   ó*  K  — |r| j                   j                  «       nd}|D ]9  }| j                  j                  t	        |«      | j
                  «      E d {  –—†  Œ; | j                  j                  | j                   j                  «      –— y 7 Œ8­w©N© )rC   Úiter_dependenciesrR   Úmake_requirements_from_specr9   rS   Ú make_requires_python_requirementÚrequires_python)rW   r…   ÚrequiresÚrs       r(   r‰   z4_InstallRequirementBackedCandidate.iter_dependenciesí   st   è ø€ Ù4A�4—9‘9×.Ñ.Ô0ÀrˆØò 	UˆAØ—}‘}×@Ñ@ÄÀQÃÈÏÉÓT×TÑTð	Uà�m‰m×<Ñ<¸T¿Y¹Y×=VÑ=VÓWÓWð Uús   ‚ABÁBÁ9Bc                 ó   — | j                   S rO   )rS   r\   s    r(   Úget_install_requirementz:_InstallRequirementBackedCandidate.get_install_requirementó   s   € Ø�z‰zÐr*   ©NN)"rc   Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__Úis_installedr   r   r   r   r   rX   r9   r]   rd   Úintrg   r   Úboolrl   ÚpropertyrK   rq   rM   rF   r{   r~   r€   rV   r   r   r‰   r�   rˆ   r*   r(   rJ   rJ   z   s†  … ñð ÓØ€Lð *.Ø.2ñ$àð$ð ð$ð !ð	$ð
 ð$ð �~Ñ&ð$ð Ð*Ñ+ð$ð 
ó$ð"-˜ó -ðA˜#ó Að2˜#ó 2ð˜Cð  Dó ð
 ð!˜X d™^ò !ó ð!ð ð˜nò ó ðð ð!�cò !ó ð!ð ðÐ)ò ó ðð

 #ó 
ð:Ð'7ó :ðÐ0@ð ÀTó ð"Ð*ó ð"X¨tð X¸ÀÈ+ÑAVÑ8Wó Xð¨Ð2DÑ)Eô r*   rJ   c                   óZ   ‡ — e Zd ZdZ	 	 ddededddee   dee   d	dfˆ fd
„Z	d	e
fd„Zˆ xZS )r"   FNr+   r,   rL   r   rM   rF   r$   c                 óh  •— |}|j                  ||«      }|�,t        j                  d|j                  «       |j                  }t	        ||«      }|j                  |k(  sJ ‚|j                  j
                  r�|j                  j                  szt        |j                  j                  «      }	t        |	j                  «      }
||
k(  sJ |›d|
›d�«       ‚|�2t        |	j                  «      }||k(  sJ dj                  |||«      «       ‚|�•|j                  j
                  sJ ‚|j                  j                  sJ ‚|j                  r|j                  |j                  u r||_        |j"                  �|j"                  |_        nt'        ||j                  ¬«      |_        t(        ‰| �U  ||||||¬«       y )NzUsing cached wheel link: %sz != z
 for wheelz{!r} != {!r} for wheel {})Úlink_is_in_wheel_cache©r+   rK   r>   rL   rM   rF   )Úget_wheel_cache_entryÚloggerÚdebugr+   r?   Úis_wheelry   r   Úfilenamer   rM   r   rF   rx   Ú
persistentr;   Úcached_wheel_source_linkÚoriginÚdownload_infor   ÚsuperrX   )rW   r+   r,   rL   rM   rF   rK   Úcache_entryr>   ÚwheelÚ
wheel_nameÚwheel_versionrb   s               €r(   rX   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Ü*¨5¯:©:Ó6ˆJØ˜:Ò%ÐN¨$¨°°j°^À:Ð'NÓNÐ%àÐ"Ü '¨¯©Ó 6�Ø -Ò/ð Ð1L×1SÑ1SØ˜]¨Dó2ó Ð/ð Ð"Ø—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)rR   ÚpreparerÚprepare_linked_requirementrS   )rW   r®   s     r(   r~   z#LinkCandidate._prepare_distribution+  s+   € Ø—=‘=×)Ñ)ˆØ×2Ñ2°4·:±:ÈtÐ2ÓTÐTr*   r‘   ©rc   r’   r“   Úis_editabler   r   r   r   r   rX   r   r~   Ú__classcell__©rb   s   @r(   r"   r"   ÷   sj   ø„ Ø€Kð *.Ø.2ñ/
àð/
ð %ð/
ð ð	/
ð
 �~Ñ&ð/
ð Ð*Ñ+ð/
ð 
õ/
ðbUÐ'7÷ Ur*   r"   c                   óZ   ‡ — e Zd ZdZ	 	 ddededddee   dee   d	dfˆ fd
„Z	d	e
fd„Zˆ xZS )r!   TNr+   r,   rL   r   rM   rF   r$   c                 óD   •— t         ‰| �  ||t        ||«      |||¬«       y )Nr�   )r§   rX   rB   )rW   r+   r,   rL   rM   rF   rb   s         €r(   rX   zEditableCandidate.__init__3  s0   ø€ ô 	‰ÑØØÜ/°°hÓ?ØØØð 	õ 	
r*   c                 ó`   — | j                   j                  j                  | j                  «      S rO   )rR   r®   Úprepare_editable_requirementrS   r\   s    r(   r~   z'EditableCandidate._prepare_distributionD  s!   € Ø�}‰}×%Ñ%×BÑBÀ4Ç:Á:ÓNÐNr*   r‘   r°   r³   s   @r(   r!   r!   0  si   ø„ Ø€Kð *.Ø.2ñ
àð
ð %ð
ð ð	
ð
 �~Ñ&ð
ð Ð*Ñ+ð
ð 
õ
ð"OÐ'7÷ Or*   r!   c                   óò   — e Zd ZdZdZdededdddfd„Zdefd	„Z	defd
„Z
defd„Zdedefd„Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zdefd„Zdedeee      fd„Zdee   fd„Zy)r    TNrC   r,   rL   r   r$   c                 ó    — || _         t        ||«      | _        || _        d | _        d}|j
                  j                  | j                  |«       y )Nzalready satisfied)rC   rH   rS   rR   rU   r®   Úprepare_installed_requirement)rW   rC   r,   rL   Úskip_reasons        r(   rX   z"AlreadyInstalledCandidate.__init__L  sH   € ð ˆŒ	Ü0°°xÓ@ˆŒ
ØˆŒØˆŒð *ˆØ×Ñ×6Ñ6°t·z±zÀ;ÕOr*   c                 ó,   — t        | j                  «      S rO   )r9   rC   r\   s    r(   r]   z!AlreadyInstalledCandidate.__str__^  s   € Ü�4—9‘9‹~Ðr*   c                 óN   — | j                   j                  › d| j                  ›d�S r_   )rb   rc   rC   r\   s    r(   rd   z"AlreadyInstalledCandidate.__repr__a  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯I©I¨=¸Ð:Ð:r*   c                 óZ   — t        | j                  | j                  | j                  f«      S rO   )rf   rb   rM   rF   r\   s    r(   rg   z"AlreadyInstalledCandidate.__hash__d  s    € Ü�T—^‘^ T§Y¡Y°·±Ð=Ó>Ð>r*   rh   c                 ó˜   — t        || j                  «      r4| j                  |j                  k(  xr | j                  |j                  k(  S yrj   )r&   rb   rM   rF   rk   s     r(   rl   z AlreadyInstalledCandidate.__eq__g  s8   € Ü�e˜TŸ^™^Ô,Ø—9‘9 §
¡
Ñ*ÒL¨t¯|©|¸u¿}¹}Ñ/LÐLØr*   c                 ó.   — | j                   j                  S rO   )rC   rE   r\   s    r(   rq   z&AlreadyInstalledCandidate.project_namel  s   € à�y‰y×'Ñ'Ð'r*   c                 ó   — | j                   S rO   rs   r\   s    r(   rM   zAlreadyInstalledCandidate.namep  rn   r*   c                 óh   — | j                   €| j                  j                  | _         | j                   S rO   ru   r\   s    r(   rF   z!AlreadyInstalledCandidate.versiont  rv   r*   c                 ó.   — | j                   j                  S rO   )rC   r7   r\   s    r(   r±   z%AlreadyInstalledCandidate.is_editablez  s   € à�y‰y×!Ñ!Ð!r*   c                 ó:   — | j                   › d| j                  › d�S )NrZ   z (Installed)r[   r\   s    r(   r{   z*AlreadyInstalledCandidate.format_for_error~  s   € Ø—)‘)�˜A˜dŸl™l˜^¨<Ð8Ð8r*   r…   c              #   óÂ   K  — |sy | j                   j                  «       D ]9  }| j                  j                  t	        |«      | j
                  «      E d {  –—†  Œ; y 7 Œ­wrO   )rC   r‰   rR   rŠ   r9   rS   )rW   r…   rŽ   s      r(   r‰   z+AlreadyInstalledCandidate.iter_dependencies�  sO   è ø€ ÙØØ—‘×,Ñ,Ó.ò 	UˆAØ—}‘}×@Ñ@ÄÀQÃÈÏÉÓT×TÑTñ	UØTús   ‚AAÁAÁAc                  ó   — y rO   rˆ   r\   s    r(   r�   z1AlreadyInstalledCandidate.get_install_requirement‡  ó   € Ør*   )rc   r’   r“   r–   rK   r   r   rX   r9   r]   rd   r—   rg   r   r˜   rl   r™   r   rq   rM   r   rF   r±   r{   r   r   r   r‰   r�   rˆ   r*   r(   r    r    H  s  „ Ø€LØ€KðPàðPð %ðPð ð	Pð
 
óPð$˜ó ð;˜#ó ;ð?˜#ó ?ð˜Cð  Dó ð
 ð(˜nò (ó ð(ð ð!�cò !ó ð!ð ðÐ)ò ó ðð
 ð"˜Tò "ó ð"ð9 #ó 9ðU¨tð U¸ÀÈ+ÑAVÑ8Wó Uð¨Ð2DÑ)Eô r*   r    c            	       ód  — e Zd ZdZddœdedee   dee   ddfd„Z	defd	„Z
defd
„Zdefd„Zdedefd„Zedefd„«       Zedefd„«       Zedefd„«       Zdefd„Zedefd„«       Zedefd„«       Zedee   fd„«       Zdee   dee   ddfd„Zdee   fd„Zdedeee      fd„Z dee   f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)r0   Úbaser<   r0   r$   c                óÊ   — || _         t        d„ |D «       «      | _        |j                  | j                  «      | _        |�|| _        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rO   )r   )Ú.0rƒ   s     r(   ú	<genexpr>z+ExtrasCandidate.__init__.<locals>.<genexpr>´  s   è ø€ ÒE¸Ô 1°!× 4ÑEùó   ‚N)rÊ   Ú	frozensetr<   Ú
differenceÚ_unnormalized_extrasrS   Ú_comes_from)rW   rÊ   r<   r0   s       r(   rX   zExtrasCandidate.__init__¤  sR   € ð ˆŒ	ÜÑE¸fÔEÓEˆŒð %+×$5Ñ$5°d·k±kÓ$BˆÔ!Ø)3Ð)?˜:ˆÕÀTÇYÁYÇ_Á_ˆÕr*   c                 óª   — t        | j                  «      j                  dd«      \  }}dj                  |dj	                  | j
                  «      |«      S )NrZ   r   z	{}[{}] {}ú,)r9   rÊ   Úsplitrx   Újoinr<   )rW   rM   Ú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=ra   )rb   rc   rÊ   r<   r\   s    r(   rd   zExtrasCandidate.__repr__Ã  s/   € Ø—.‘.×)Ñ)Ð*¨&°·±°¸YÀtÇ{Á{ÀoÐUVÐWÐWr*   c                 óD   — t        | j                  | j                  f«      S rO   )rf   rÊ   r<   r\   s    r(   rg   zExtrasCandidate.__hash__Æ  s   € Ü�T—Y‘Y §¡Ð,Ó-Ð-r*   rh   c                 ó˜   — t        || j                  «      r4| j                  |j                  k(  xr | j                  |j                  k(  S yrj   )r&   rb   rÊ   r<   rk   s     r(   rl   zExtrasCandidate.__eq__É  s8   € Ü�e˜TŸ^™^Ô,Ø—9‘9 §
¡
Ñ*ÒJ¨t¯{©{¸e¿l¹lÑ/JÐJØr*   c                 ó.   — | j                   j                  S rO   )rÊ   rq   r\   s    r(   rq   zExtrasCandidate.project_nameÎ  ó   € à�y‰y×%Ñ%Ð%r*   c                 óV   — t        | j                  j                  | j                  «      S rp   )r   rÊ   rq   r<   r\   s    r(   rM   zExtrasCandidate.nameÒ  s   € ô ˜4Ÿ9™9×1Ñ1°4·;±;Ó?Ð?r*   c                 ó.   — | j                   j                  S rO   )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, )rx   rÊ   r{   r×   Úsortedr<   r\   s    r(   r{   z ExtrasCandidate.format_for_errorÛ  s9   € Ø×ÑØ�I‰I×&Ñ&Ó(¨$¯)©)´F¸4¿;¹;Ó4GÓ*Hó
ð 	
r*   c                 ó.   — | j                   j                  S rO   )rÊ   r–   r\   s    r(   r–   zExtrasCandidate.is_installedà  rÝ   r*   c                 ó.   — | j                   j                  S rO   )rÊ   r±   r\   s    r(   r±   zExtrasCandidate.is_editableä  ó   € à�y‰y×$Ñ$Ð$r*   c                 ó.   — | j                   j                  S rO   )rÊ   rK   r\   s    r(   rK   zExtrasCandidate.source_linkè  rä   r*   Ú	requestedÚvalidc                 óÄ   ‡ ‡— t        ˆ ˆfd„|D «       «      }|syt        |«      D ]8  }t        j                  d‰ j                  j
                  ‰ j                  |«       Œ: y)z±Emit warnings for invalid extras being requested.

        This emits a warning for each requested extra that is not in the
        candidate's ``Provides-Extra`` list.
        c              3   óF   •K  — | ]  }|‰vr|‰j                   v r|–— Œ y ­wrO   )r<   )rÍ   ÚextrarW   rç   s     €€r(   rÎ   z7ExtrasCandidate._warn_invalid_extras.<locals>.<genexpr>ö  s/   øè ø€ ò +
àØ˜EÑ!ð ˜Ÿ™Ñ$ô ñ+
ùs   ƒ!Nz%%s %s does not provide the extra '%s')rÐ   rá   rŸ   ÚwarningrÊ   rM   rF   )rW   ræ   rç   Úinvalid_extras_to_warnrê   s   ` `  r(   Ú_warn_invalid_extrasz$ExtrasCandidate._warn_invalid_extrasì  s^   ù€ ô "+ô +
à"ô+
ó "
Ðñ &ØÜÐ2Ó3ò 	ˆEÜ�N‰NØ7Ø—	‘	—‘Ø—‘Øõ	ñ	r*   c                 óž   ‡ — ‰ j                   j                  ‰ j                  «      }t        ˆ fd„|D «       «      }‰ j	                  ||«       |S )a  Get a list of valid extras requested by this candidate.

        The user (or upstream dependant) may have specified extras that the
        candidate doesn't support. Any unsupported extras are dropped, and each
        cause a warning to be logged here.
        c              3   ól   •K  — | ]+  }‰j                   j                  j                  |«      r|–— Œ- y ­wrO   )rÊ   rC   Úis_extra_provided)rÍ   rê   rW   s     €r(   rÎ   zDExtrasCandidate._calculate_valid_requested_extras.<locals>.<genexpr>  s/   øè ø€ ò !
àØ�y‰y�~‰~×/Ñ/°Ô6ô ñ!
ùs   ƒ14)r<   ÚunionrÒ   rÐ   rí   )rW   Úrequested_extrasÚvalid_extrass   `  r(   Ú!_calculate_valid_requested_extrasz1ExtrasCandidate._calculate_valid_requested_extras  sP   ø€ ð  Ÿ;™;×,Ñ,¨T×-FÑ-FÓGÐÜ ó !
à)ô!
ó 
ˆð
 	×!Ñ!Ð"2°LÔAØÐr*   r…   c              #   óL  K  — | j                   j                  }|j                  | j                   «      –— |sy | j                  «       }| j                   j                  j                  |«      D ]0  }|j                  t        |«      | j                  |«      E d {  –—†  Œ2 y 7 Œ­wrO   )	rÊ   rR   Úmake_requirement_from_candidaterô   rC   r‰   rŠ   r9   rÓ   )rW   r…   rL   ró   rŽ   s        r(   r‰   z!ExtrasCandidate.iter_dependencies  s’   è ø€ Ø—)‘)×$Ñ$ˆð ×5Ñ5°d·i±iÓ@Ò@ÙØà×=Ñ=Ó?ˆØ—‘—‘×1Ñ1°,Ó?ò 	ˆAØ×:Ñ:Ü�A“Ø× Ñ Øó÷ ñ ñ	ðús   ‚BB$ÂB"ÂB$c                  ó   — y rO   rˆ   r\   s    r(   r�   z'ExtrasCandidate.get_install_requirement)  s   € ð r*   )"rc   r’   r“   r”   ÚBaseCandidater   r9   r   r   rX   r]   rd   r—   rg   r   r˜   rl   r™   r   rq   rM   r   rF   r{   r–   r±   r   rK   rí   rô   r   r   r‰   r�   rˆ   r*   r(   rÉ   rÉ   ‹  sŸ  „ ñð: 48òUàðUð ˜#‘ðUð
 Ð/Ñ0ðUð 
óUð6E˜ó EðX˜#ó Xð.˜#ó .ð˜Cð  Dó ð
 ð&˜nò &ó ð&ð ð@�cò @ó ð@ð ð!Ð)ò !ó ð!ð
 #ó 
ð
 ð&˜dò &ó ð&ð ð%˜Tò %ó ð%ð ð%˜X d™^ò %ó ð%ðà˜S‘>ðð ˜‰~ðð 
ó	ð8°9¸S±>ó ð ¨tð ¸ÀÈ+ÑAVÑ8Wó ð"¨Ð2DÑ)Eô r*   rÉ   c                   ó¼   — e Zd ZdZdZdeeedf      ddfd„Zde	fd„Z
edefd„«       Zede	fd	„«       Zedefd
„«       Zde	fd„Zdedeee      fd„Zdee   fd„Zy)ÚRequiresPythonCandidateFNÚpy_version_info.r$   c                 ó’   — |�t        |«      }nt        j                  d d }t        dj	                  d„ |D «       «      «      | _        y )Né   ú.c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrO   )r9   )rÍ   Úcs     r(   rÎ   z3RequiresPythonCandidate.__init__.<locals>.<genexpr>9  s   è ø€ Ò(F°A¬¨Q¯Ñ(FùrÏ   )r   ÚsysÚversion_infor   r×   rU   )rW   rû   r  s      r(   rX   z RequiresPythonCandidate.__init__4  s?   € ØÐ&Ü1°/ÓB‰Lä×+Ñ+¨B¨QÐ/ˆLÜ §¡Ñ(F¸Ô(FÓ FÓGˆ�r*   c                 ó    — d| j                   › �S ©NzPython ©rU   r\   s    r(   r]   zRequiresPythonCandidate.__str__?  s   € Ø˜Ÿ™˜Ð(Ð(r*   c                 ó   — t         S rO   ©ÚREQUIRES_PYTHON_IDENTIFIERr\   s    r(   rq   z$RequiresPythonCandidate.project_nameB  ó   € ä)Ð)r*   c                 ó   — t         S rO   r  r\   s    r(   rM   zRequiresPythonCandidate.nameF  r	  r*   c                 ó   — | j                   S rO   r  r\   s    r(   rF   zRequiresPythonCandidate.versionJ  s   € à�}‰}Ðr*   c                 ó    — d| j                   › �S r  )rF   r\   s    r(   r{   z(RequiresPythonCandidate.format_for_errorN  s   € Ø˜Ÿ™˜Ð'Ð'r*   r…   c                  ó   — yr‡   rˆ   )rW   r…   s     r(   r‰   z)RequiresPythonCandidate.iter_dependenciesQ  s   € Ør*   c                  ó   — y rO   rˆ   r\   s    r(   r�   z/RequiresPythonCandidate.get_install_requirementT  rÇ   r*   )rc   r’   r“   r–   rK   r   r   r—   rX   r9   r]   r™   r   rq   rM   r   rF   r{   r˜   r   r   r‰   r   r�   rˆ   r*   r(   rú   rú   0  sÈ   „ Ø€LØ€KðH¨°°s¸C°x±Ñ(Að HÀdó Hð)˜ó )ð ð*˜nò *ó ð*ð ð*�cò *ó ð*ð ðÐ)ò ó ðð( #ó (ð¨tð ¸ÀÈ+ÑAVÑ8Wó ð¨Ð2DÑ)Eô r*   rú   ):Úloggingr  Útypingr   r   r   r   r   r   r	   r
   Úpip._vendor.packaging.utilsr   r   Úpip._vendor.packaging.versionr   Úpip._internal.exceptionsr   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   r   rL   r   Ú	getLoggerrc   rŸ   rø   r  r)   r?   rB   rH   rJ   r"   r!   r    rÉ   rú   rˆ   r*   r(   ú<module>r     sC  ðÛ Û 
ß X× XÓ Xç IÝ 1÷ñ õ
 4ß <Ý ,÷õ =Ý GÝ ;ç GÓ GáÝ à	ˆ×	Ñ	˜8Ó	$€àðñ€ñ " .Ð2QÓRÐ ð	 ð 	¨x¸Ñ/Fó 	ðØ
ðØ,ðàóð2Ø
ðØ,ðàóð(Ø
ðØ&8ðàóô0z¨ô zôz6UÐ6ô 6UôrOÐ:ô Oô0@ 	ô @ôFb�iô bôJ%˜iõ %r*   