Ë
    ”U.j°Q  ã                  ó  — 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     úpC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\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           
     ó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/   r0   r1   Úpermit_editable_wheelsr2   r3   )r4   r6   r8   r   r.   r/   r0   r1   rC   r2   r3   r;   )r:   r<   Ú
req_stringr?   s       r(   Úmake_install_req_from_editablerE   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_distrJ   p   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   rI   FNc                ó�   — || _         || _        || _        || _        || _        || _        | j                  «       | _        d | _        y ©N)	Ú_linkÚ_source_linkÚ_factoryÚ_ireqÚ_nameÚ_versionÚ_preparerI   Ú_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=   ©rW   s    r(   Ú__str__z*_InstallRequirementBackedCandidate.__str__«   s   € Ø—)‘)�˜A˜dŸl™l˜^Ð,Ð,r*   c                ó`   — | j                   j                  › dt        | j                  «      ›d�S ©NÚ(Ú))Ú	__class__Ú__name__r7   rO   r^   s    r(   Ú__repr__z+_InstallRequirementBackedCandidate.__repr__®   s)   € Ø—.‘.×)Ñ)Ð*¨!¬C°·
±
«OÐ+>¸aÐ@Ð@r*   c                ó–   — | j                   �| j                   S t        | j                  | j                  f«      | _         | j                   S rN   )rV   Úhashrd   rO   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%   rd   r   rO   ©rW   Úothers     r(   Ú__eq__z)_InstallRequirementBackedCandidate.__eq__¸   s(   € Ü�e˜TŸ^™^Ô,Ü# D§J¡J°·±Ó<Ð<Ør*   c                ó   — | j                   S rN   )rP   r^   s    r(   rX   z._InstallRequirementBackedCandidate.source_link½   ó   € à× Ñ Ð r*   c                óh   — | j                   €| j                  j                  | _         | j                   S ©z:The normalised name of the project the candidate refers to)rS   rI   rG   r^   s    r(   Úproject_namez/_InstallRequirementBackedCandidate.project_nameÁ   s)   € ð �:‰:ÐØŸ™×1Ñ1ˆDŒJØ�z‰zÐr*   c                ó   — | j                   S rN   ©rs   r^   s    r(   r6   z'_InstallRequirementBackedCandidate.nameÈ   rp   r*   c                óh   — | j                   €| j                  j                  | _         | j                   S rN   ©rT   rI   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 Ú rc   )r6   r=   Úis_editablerO   Ú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=   )rS   rG   r   rR   rT   r=   r7   ÚlistÚiter_dependenciesÚiter_provided_extrasr	   r   )rW   rI   Ú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   rR   r5   r   r%   r/   r   Ú	from_pathr   r6   r7   rO   Úcommand_descriptionr‡   )rW   rI   r†   ÚexcÚrequest_chains        r(   rU   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© )rQ   Ú make_requires_python_requirementrI   Úrequires_pythonr„   Úmake_requirements_from_specr7   rR   )rW   Úwith_requiresÚrequiresÚrs       r(   r„   z4_InstallRequirementBackedCandidate.iter_dependencies  sl   è ø€ ð �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                ó   — | j                   S rN   )rR   r^   s    r(   Úget_install_requirementz:_InstallRequirementBackedCandidate.get_install_requirement  s   € Ø�z‰zÐr*   ©NN)r:   r   rX   r   r?   r   rY   r    r6   úNormalizedName | Noner=   úVersion | NoneÚreturnÚNone©rž   r7   ©rž   Úint©rm   r   rž   Úbool©rž   zLink | None©rž   r
   ©rž   r   ©rž   r   )rI   r   rž   rŸ   ©r–   r¤   rž   zIterable[Requirement | None]©rž   úInstallRequirement | None)re   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__Úis_installedrZ   r_   rf   ri   rn   ÚpropertyrX   rs   r6   r=   r~   r�   r‡   rU   r„   rš   r’   r*   r(   rL   rL   †   sé   … ñð ÓØ€Lð '+Ø"&ð&àð&ð ð&ð !ð	&ð
 ð&ð $ð&ð  ð&ð 
ó&ó$-óAóóð
 ò!ó ð!ð òó ðð ò!ó ð!ð òó ðó

ó:ó6ó0ó6Uôr*   rL   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:   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_versionrd   s               €r(   rZ   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)rQ   ÚpreparerÚprepare_linked_requirementrR   )rW   rÇ   s     r(   r�   z#LinkCandidate._prepare_distributionO  s+   € Ø—=‘=×)Ñ)ˆØ×2Ñ2°4·:±:ÈtÐ2ÓTÐTr*   r›   ©r:   r   r<   r   rY   r    r6   rœ   r=   r�   rž   rŸ   r¨   ©re   r¬   r­   r{   rZ   r�   Ú__classcell__©rd   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À   rZ   rE   )rW   r:   r<   rY   r6   r=   rd   s         €r(   rZ   zEditableCandidate.__init__W  s0   ø€ ô 	‰ÑØØÜ/°°hÓ?ØØØð 	õ 	
r*   c                ó`   — | j                   j                  j                  | j                  «      S rN   )rQ   rÇ   Úprepare_editable_requirementrR   r^   s    r(   r�   z'EditableCandidate._prepare_distributionh  s!   € Ø�}‰}×%Ñ%×BÑBÀ4Ç:Á:ÓNÐNr*   r›   rÉ   r¨   rÊ   rÌ   s   @r(   r"   r"   T  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)rI   rJ   rR   rQ   rT   rÇ   Úprepare_installed_requirement)rW   rI   r<   rY   Úskip_reasons        r(   rZ   z"AlreadyInstalledCandidate.__init__p  sH   € ð ˆŒ	Ü0°°xÓ@ˆŒ
ØˆŒØˆŒð *ˆØ×Ñ×6Ñ6°t·z±zÀ;ÕOr*   c                ó,   — t        | j                  «      S rN   )r7   rI   r^   s    r(   r_   z!AlreadyInstalledCandidate.__str__‚  s   € Ü�4—9‘9‹~Ðr*   c                óN   — | j                   j                  › d| j                  ›d�S ra   )rd   re   rI   r^   s    r(   rf   z"AlreadyInstalledCandidate.__repr__…  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯I©I¨=¸Ð:Ð:r*   c                ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S rN   )r%   r!   ÚNotImplementedr6   r=   rl   s     r(   rn   z AlreadyInstalledCandidate.__eq__ˆ  s8   € Ü˜%Ô!:Ô;Ü!Ð!Ø�y‰y˜EŸJ™JÑ&ÒH¨4¯<©<¸5¿=¹=Ñ+HÐHr*   c                óD   — t        | j                  | j                  f«      S rN   )rh   r6   r=   r^   s    r(   ri   z"AlreadyInstalledCandidate.__hash__�  s   € Ü�T—Y‘Y §¡Ð-Ó.Ð.r*   c                ó.   — | j                   j                  S rN   )rI   rG   r^   s    r(   rs   z&AlreadyInstalledCandidate.project_name�  s   € à�y‰y×'Ñ'Ð'r*   c                ó   — | j                   S rN   ru   r^   s    r(   r6   zAlreadyInstalledCandidate.name”  rp   r*   c                óh   — | j                   €| j                  j                  | _         | j                   S rN   rw   r^   s    r(   r=   z!AlreadyInstalledCandidate.version˜  rx   r*   c                ó.   — | j                   j                  S rN   )rI   r4   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)rI   Úinvalid_exc)rI   r„   rQ   r•   r7   rR   r	   r   )rW   r–   r˜   rŽ   s       r(   r„   z+AlreadyInstalledCandidate.iter_dependencies¥  ss   è ø€ ÙØð	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Á)BÂBÂB	c                 ó   — y rN   r’   r^   s    r(   rš   z1AlreadyInstalledCandidate.get_install_requirement¯  ó   € Ør*   )rI   r   r<   r   rY   r    rž   rŸ   r    )rm   Úobjectrž   r¤   r¡   r¦   r§   ©rž   r¤   r©   rª   )re   r¬   r­   r°   rX   rZ   r_   rf   rn   ri   r±   rs   r6   r=   r{   r~   r„   rš   r’   r*   r(   r!   r!   l  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rN   )r   )Ú.0r†   s     r(   Ú	<genexpr>z+ExtrasCandidate.__init__.<locals>.<genexpr>Ü  s   è ø€ ÐE¹f¸Ô 1°!× 4¹fùó   ‚N)ÚbaseÚ	frozensetr;   rR   Ú_comes_from)rW   rì   r;   r/   s       r(   rZ   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;   )rW   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=rc   )rd   re   rì   r;   r^   s    r(   rf   zExtrasCandidate.__repr__ã  s/   € Ø—.‘.×)Ñ)Ð*¨&°·±°¸YÀtÇ{Á{ÀoÐUVÐWÐWr*   c                óD   — t        | j                  | j                  f«      S rN   )rh   rì   r;   r^   s    r(   ri   zExtrasCandidate.__hash__æ  s   € Ü�T—Y‘Y §¡Ð,Ó-Ð-r*   c                ó˜   — t        || j                  «      r4| j                  |j                  k(  xr | j                  |j                  k(  S yrk   )r%   rd   rì   r;   rl   s     r(   rn   zExtrasCandidate.__eq__é  s8   € Ü�e˜TŸ^™^Ô,Ø—9‘9 §
¡
Ñ*ÒJ¨t¯{©{¸e¿l¹lÑ/JÐJØr*   c                ó.   — | j                   j                  S rN   )rì   rs   r^   s    r(   rs   zExtrasCandidate.project_nameî  ó   € à�y‰y×%Ñ%Ð%r*   c                óV   — t        | j                  j                  | j                  «      S rr   )r   rì   rs   r;   r^   s    r(   r6   zExtrasCandidate.nameò  s   € ô ˜4Ÿ9™9×1Ñ1°4·;±;Ó?Ð?r*   c                ó.   — | j                   j                  S rN   )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 rN   )rì   r°   r^   s    r(   r°   zExtrasCandidate.is_installed   rù   r*   c                ó.   — | j                   j                  S rN   )rì   r{   r^   s    r(   r{   zExtrasCandidate.is_editable  ó   € à�y‰y×$Ñ$Ð$r*   c                ó.   — | j                   j                  S rN   )rì   rX   r^   s    r(   rX   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ì   rQ   Úmake_requirement_from_candidater;   ÚintersectionrI   r…   Ú
differencerý   r¸   Úwarningr6   r=   r„   r•   r7   rî   )rW   r–   rY   Ú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 rN   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ª   )re   r¬   r­   r®   rZ   r_   rf   ri   rn   r±   rs   r6   r=   r~   r°   r{   rX   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rN   )r7   )ré   Úcs     r(   rê   z3RequiresPythonCandidate.__init__.<locals>.<genexpr>8  s   è ø€ Ð(F¹°A¬¨Q¯¹ùrë   )r   ÚsysÚversion_infor   ró   rT   )rW   Úpy_version_infor  s      r(   rZ   z RequiresPythonCandidate.__init__3  s?   € ØÐ&Ü1°/ÓB‰Lä×+Ñ+¨B¨QÐ/ˆLÜ §¡Ñ(F¹Ó(FÓ FÓGˆ�r*   c                ó    — d| j                   › �S ©NzPython ©rT   r^   s    r(   r_   zRequiresPythonCandidate.__str__>  s   € Ø˜Ÿ™˜Ð(Ð(r*   c                óN   — | j                   j                  › d| j                  ›d�S ra   )rd   re   rT   r^   s    r(   rf   z RequiresPythonCandidate.__repr__A  s%   € Ø—.‘.×)Ñ)Ð*¨!¨D¯M©MÐ+<¸AÐ>Ð>r*   c                ó   — t         S rN   ©ÚREQUIRES_PYTHON_IDENTIFIERr^   s    r(   rs   z$RequiresPythonCandidate.project_nameD  ó   € ä)Ð)r*   c                ó   — t         S rN   r  r^   s    r(   r6   zRequiresPythonCandidate.nameH  r  r*   c                ó   — | j                   S rN   r  r^   s    r(   r=   zRequiresPythonCandidate.versionL  s   € à�}‰}Ðr*   c                ó    — d| j                   › �S r  r´   r^   s    r(   r~   z(RequiresPythonCandidate.format_for_errorP  s   € Ø˜Ÿ™˜Ð'Ð'r*   c                 ó   — yr‘   r’   )rW   r–   s     r(   r„   z)RequiresPythonCandidate.iter_dependenciesS  s   € Ør*   c                 ó   — y rN   r’   r^   s    r(   rš   z/RequiresPythonCandidate.get_install_requirementV  râ   r*   )r  ztuple[int, ...] | Nonerž   rŸ   r    r¦   r§   r©   rª   )re   r¬   r­   r°   rX   rZ   r_   rf   r±   rs   r6   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   )rI   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   rY   r    Ú	getLoggerre   r¸   r  r  r)   r@   rE   rJ   rL   r#   r"   r!   ræ   r  r’   r*   r(   Ú<module>r3     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*   