Ë
    ¨Õ°jpQ  ã                  ó  — 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'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     úd/var/www/mission/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.pyÚas_base_candidater)   0   s+   € ô 	"ÜÜðÐô
 �)Ð3Ô4ØÐØó    c           	     óâ  — |j                   rJ d«       ‚|�4|j                  r(|j                  r|j                  j                  › d|› �}n.|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Ú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ÔØ€D„IØ—/‘/€D„KØ€Kr*   c           	     óR  — |j                   sJ d«       ‚|j                  r|j                  › d| j                  › �}n| j                  }t        ||j                  |j
                  |j                  |j                  |j                  |j                  ¬«      }|j                  |_
        |S )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           	     óŽ  — |j                   rt        |j                   «      }nM|j                  r&| j                  › d|j                  j                  › �}n| j                  › d| j
                  › �}t        ||j                  |j                  |j                  |j                  |j                  |j                  ¬«      }| |_        |S )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ð €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)Úselfr:   Úsource_linkr?   Úfactoryr6   r=   s          r(   Ú__init__z+_InstallRequirementBackedCandidate.__init__˜   sC   € ð ˆŒ
Ø'ˆÔØˆŒØˆŒ
ØˆŒ
ØˆŒØ—M‘M“OˆŒ	Ø!%ˆ�
r*   c                ó8   — | j                   › d| j                  › �S )Nú ©r6   r=   ©rV   s    r(   Ú__str__z*_InstallRequirementBackedCandidate.__str__ª   s   € Ø—)‘)�˜A˜dŸl™l˜^Ð,Ð,r*   c                ó`   — | j                   j                  › dt        | j                  «      ›d�S ©Nú(ú))Ú	__class__Ú__name__r7   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   rF   r]   s    r(   Úproject_namez/_InstallRequirementBackedCandidate.project_nameÀ   s)   € ð �:‰:ÐØŸ™×1Ñ1ˆDŒJØ�z‰zÐr*   c                ó   — | j                   S rM   ©rr   r]   s    r(   r6   z'_InstallRequirementBackedCandidate.nameÇ   ro   r*   c                óh   — | j                   €| j                  j                  | _         | j                   S rM   ©rS   rH   r=   r]   s    r(   r=   z*_InstallRequirementBackedCandidate.versionË   ó'   € à�=‰=Ð Ø ŸI™I×-Ñ-ˆDŒMØ�}‰}Ðr*   c                óÒ   — | j                   › d| j                  › d| j                  rdnd› | j                  j                  r| j                  j
                  › d�S | j                  › d�S )Nr[   z (from z	editable Ú rb   )r6   r=   Úis_editablerN   Úis_fileÚ	file_pathr]   s    r(   Úformat_for_errorz3_InstallRequirementBackedCandidate.format_for_errorÑ   sn   € à�y‰yˆk˜˜4Ÿ<™<˜.ð )Ø$(×$4Ò$4‘[¸"Ð=Ø'+§z¡z×'9Ò'9ˆt�z‰z×#Ñ#ÐJÈ!ðMð	
ð @D¿z¹zÐJÈ!ðMð	
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.Nr6   r=   )rR   rF   r   rQ   rS   r=   r7   Ú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   r5   r   r%   r/   r   Ú	from_pathr   r6   r7   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_specr7   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)r:   r   rW   r   r?   r   rX   r    r6   úNormalizedName | Noner=   úVersion | NoneÚreturnÚNone©r�   r7   ©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   r6   r=   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                óH  •— |}|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: %s©r=   z != z
 for wheelz for wheel )Úlink_is_in_wheel_cache©r:   rW   r?   rX   r6   r=   )Úget_wheel_cache_entryÚloggerÚdebugr:   r@   Úis_wheelr{   r   Úfilenamer6   r   r=   Ú
persistentr9   Úcached_wheel_source_linkÚoriginÚdownload_infor   ÚsuperrY   )rV   r:   r<   rX   r6   r=   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Ü)¨$°À'Ô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                óh   — | j                   j                  }|j                  | j                  d¬«      S )NT)Úparallel_builds)rP   ÚpreparerÚprepare_linked_requirementrQ   )rV   rÆ   s     r(   r€   z#LinkCandidate._prepare_distributionN  s+   € Ø—=‘=×)Ñ)ˆØ×2Ñ2°4·:±:ÈtÐ2ÓTÐTr*   rš   ©r:   r   r<   r   rX   r    r6   r›   r=   rœ   r�   rž   r§   ©rd   r«   r¬   rz   rY   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   rD   )rV   r:   r<   rX   r6   r=   rc   s         €r(   rY   zEditableCandidate.__init__V  s0   ø€ ô 	‰ÑØØÜ/°°hÓ?ØØØð 	õ 	
r*   c                ó`   — | j                   j                  j                  | j                  «      S rM   )rP   rÆ   Úprepare_editable_requirementrQ   r]   s    r(   r€   z'EditableCandidate._prepare_distributiong  s!   € Ø�}‰}×%Ñ%×BÑBÀ4Ç:Á:ÓNÐNr*   rš   rÈ   r§   rÉ   rË   s   @r(   r"   r"   S  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__o  sH   € ð ˆŒ	Ü0°°xÓ@ˆŒ
ØˆŒØˆŒð *ˆØ×Ñ×6Ñ6°t·z±zÀ;ÕOr*   c                ó,   — t        | j                  «      S rM   )r7   rH   r]   s    r(   r^   z!AlreadyInstalledCandidate.__str__�  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!   ÚNotImplementedr6   r=   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   r6   r=   r]   s    r(   rh   z"AlreadyInstalledCandidate.__hash__Œ  s   € Ü�T—Y‘Y §¡Ð-Ó.Ð.r*   c                ó.   — | j                   j                  S rM   )rH   rF   r]   s    r(   rr   z&AlreadyInstalledCandidate.project_name�  s   € à�y‰y×'Ñ'Ð'r*   c                ó   — | j                   S rM   rt   r]   s    r(   r6   zAlreadyInstalledCandidate.name“  ro   r*   c                óh   — | j                   €| j                  j                  | _         | j                   S rM   rv   r]   s    r(   r=   z!AlreadyInstalledCandidate.version—  rw   r*   c                ó.   — | j                   j                  S rM   )rH   r4   r]   s    r(   rz   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”   r7   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   r6   r=   rz   r}   rƒ   r™   r‘   r*   r(   r!   r!   k  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Ú	frozensetr;   rQ   Ú_comes_from)rV   rë   r;   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	{}[{}] {}ú,)r7   rë   ÚsplitÚformatÚjoinr;   )rV   r6   Ú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ë   r;   r]   s    r(   re   zExtrasCandidate.__repr__â  s/   € Ø—.‘.×)Ñ)Ð*¨&°·±°¸YÀtÇ{Á{ÀoÐUVÐWÐWr*   c                óD   — t        | j                  | j                  f«      S rM   )rg   rë   r;   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ë   r;   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   r;   r]   s    r(   r6   zExtrasCandidate.nameñ  s   € ô ˜4Ÿ9™9×1Ñ1°4·;±;Ó?Ð?r*   c                ó.   — | j                   j                  S rM   )rë   r=   r]   s    r(   r=   zExtrasCandidate.versionö  s   € à�y‰y× Ñ Ð r*   c                óš   — dj                  | j                  j                  «       dj                  t	        | j
                  «      «      «      S )Nz{} [{}]z, )rñ   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 rM   )rë   r¯   r]   s    r(   r¯   zExtrasCandidate.is_installedÿ  rø   r*   c                ó.   — | j                   j                  S rM   )rë   rz   r]   s    r(   rz   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_candidater;   ÚintersectionrH   r„   Ú
differencerü   r·   Úwarningr6   r=   rƒ   r”   r7   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ë   ÚBaseCandidater;   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   r6   r=   r}   r¯   rz   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   )r7   )rè   Úcs     r(   ré   z3RequiresPythonCandidate.__init__.<locals>.<genexpr>7  s   è ø€ Ò(F°A¬¨Q¯Ñ(Fùrê   )r   ÚsysÚversion_infor   rò   rS   )rV   Úpy_version_infor  s      r(   rY   z RequiresPythonCandidate.__init__2  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__=  s   € Ø˜Ÿ™˜Ð(Ð(r*   c                óN   — | j                   j                  › d| j                  ›d�S r`   )rc   rd   rS   r]   s    r(   re   z RequiresPythonCandidate.__repr__@  s%   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©MÐ+<¸AÐ>Ð>r*   c                ó   — t         S rM   ©ÚREQUIRES_PYTHON_IDENTIFIERr]   s    r(   rr   z$RequiresPythonCandidate.project_nameC  ó   € ä)Ð)r*   c                ó   — t         S rM   r  r]   s    r(   r6   zRequiresPythonCandidate.nameG  r  r*   c                ó   — | j                   S rM   r  r]   s    r(   r=   zRequiresPythonCandidate.versionK  s   € à�}‰}Ðr*   c                ó    — d| j                   › �S r  r³   r]   s    r(   r}   z(RequiresPythonCandidate.format_for_errorO  s   € Ø˜Ÿ™˜Ð'Ð'r*   c                 ó   — yr�   r‘   )rV   r•   s     r(   rƒ   z)RequiresPythonCandidate.iter_dependenciesR  s   € Ør*   c                 ó   — y rM   r‘   r]   s    r(   r™   z/RequiresPythonCandidate.get_install_requirementU  rá   r*   )r  ztuple[int, ...] | Noner�   rž   rŸ   r¥   r¦   r¨   r©   )rd   r«   r¬   r¯   rW   rY   r^   re   r°   rr   r6   r=   r}   rƒ   r™   r‘   r*   r(   r  r  .  sg   „ Ø€LØ€KóHó)ó?ð ò*ó ð*ð ò*ó ð*ð òó ðó(óôr*   r  )r&   r   r�   zBaseCandidate | NonerM   )r:   r   r<   r   r=   rœ   r�   r   )r:   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@   rD   rI   rK   r#   r"   r!   rå   r  r‘   r*   r(   ú<module>r2     sG  ðÝ "ã Û 
Ý $ß 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*   