§
    �’jÆS  ã                  ó"  — 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¦  «        Z3d1d„Z4	 d2d3d „Z5d4d!„Z6d5d$„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/„ d0e*¦  «        Z=dS )6é    )Ú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>Ú	candidater   ÚreturnúBaseCandidate | Nonec                óR   — t           t          t          f}t          | |¦  «        r| S dS )z%The runtime version of BaseCandidate.N)r!   r"   r#   Ú
isinstance)r$   Úbase_candidate_classess     ú\C:\Projects\DSCons\.venv\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.pyÚas_base_candidater+   0   s5   € õ 	"ÝÝðÐõ
 �)Ð3Ñ4Ô4ð ØÐØˆ4ó    Úlinkr   Útemplater   ÚversionúVersion | Nonec           	     óX  — |j         r
J d¦   «         ‚|� |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Úreqr8   ÚnameÚstrÚurlr   r4   r5   r6   r7   r9   Úoriginal_linkr-   Úextras)r-   r.   r/   ÚlineÚireqs        r*   Úmake_install_req_from_linkrC   <   sÌ   € ð
 Ô Ð8Ð8Ð"8Ñ8Ô8Ð ØÐ˜xœ|Ð°Ô0EÐð ”,Ô#Ð0Ð0 wÐ0Ð0ˆˆØ	Œð Ý�8”<Ñ Ô ˆˆàŒxˆÝ ØØÔ,ØÔ&ØÔ"ØÔ&ØÔ*Ø Ô0ðñ ô €Dð "Ô/€DÔØ€D„IØ”/€D„KØ€Kr,   c           	     óè   — |j         s
J d¦   «         ‚|j        r|j        › d| j        › �}n| j        }t          ||j        |j        |j        |j        |j        |j	        ¬¦  «        }|j
        |_
        |S )Nztemplate not editableú @ r3   )r:   r<   r>   r   r4   r5   r6   r7   r8   r9   r@   )r-   r.   Ú
req_stringrB   s       r*   Úmake_install_req_from_editablerG   Z   s‘   € ð ÔÐ5Ð5Ð5Ñ5Ô5ÐØ„}ð Ø œÐ4Ð4¨$¬(Ð4Ð4ˆ
ˆ
à”Xˆ
Ý$ØØÔ,ØÔ&ØÔ"ØÔ&ØÔ*Ø Ô0ðñ ô €Dð ”/€D„KØ€Kr,   Údistr   c           	     ó  — |j         rt          |j         ¦  «        }n/|j        r| j        › d|j        j        › �}n| j        › d| j        › �}t          ||j        |j        |j	        |j
        |j        |j        ¬¦  «        }| |_        |S )NrE   r2   r3   )r;   r=   r-   Úcanonical_namer>   r/   r   r4   r5   r6   r7   r8   r9   Úsatisfied_by)rH   r.   rA   rB   s       r*   Ú_make_install_req_from_distrL   o   s¨   € ð „|ð 8Ý�8”<Ñ Ô ˆˆØ	Œð 8ØÔ%Ð=Ð=¨(¬-Ô*;Ð=Ð=ˆˆàÔ%Ð7Ð7¨¬Ð7Ð7ˆÝ ØØÔ,ØÔ&ØÔ"ØÔ&ØÔ*Ø Ô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d0d„Z	d1d„Z
ed2d„¦   «         Zed3d „¦   «         Zed/d!„¦   «         Zed4d#„¦   «         Zd/d$„Zd5d%„Zd6d&„Zd5d'„Zd7d*„Zd8d,„ZdS )9Ú"_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   FNr-   r   Úsource_linkrB   r   Úfactoryr    r<   úNormalizedName | Noner/   r0   r%   ÚNonec                óš   — || _         || _        || _        || _        || _        || _        |                      ¦   «         | _        d | _        d S ©N)	Ú_linkÚ_source_linkÚ_factoryÚ_ireqÚ_nameÚ_versionÚ_preparerH   Ú_hash)Úselfr-   rO   rB   rP   r<   r/   s          r*   Ú__init__z+_InstallRequirementBackedCandidate.__init__˜   sI   € ð ˆŒ
Ø'ˆÔØˆŒØˆŒ
ØˆŒ
ØˆŒØ—M’M‘O”OˆŒ	Ø!%ˆŒ
ˆ
ˆ
r,   r=   c                ó$   — | j         › d| j        › �S )Nú ©r<   r/   ©r]   s    r*   Ú__str__z*_InstallRequirementBackedCandidate.__str__ª   s   € Ø”)Ð,Ð,˜dœlÐ,Ð,Ð,r,   c                óJ   — | j         j        › dt          | j        ¦  «        ›d�S ©Nú(ú))Ú	__class__Ú__name__r=   rU   rb   s    r*   Ú__repr__z+_InstallRequirementBackedCandidate.__repr__­   s&   € Ø”.Ô)Ð@Ð@­C°´
©O¬OÐ@Ð@Ð@Ð@r,   Úintc                ól   — | j         �| j         S t          | j        | j        f¦  «        | _         | j         S rT   )r\   Úhashrh   rU   rb   s    r*   Ú__hash__z+_InstallRequirementBackedCandidate.__hash__°   s2   € ØŒ:Ð!Ø”:Ðå˜4œ>¨4¬:Ð6Ñ7Ô7ˆŒ
ØŒzÐr,   Úotherr   Úboolc                ód   — t          || j        ¦  «        rt          | j        |j        ¦  «        S dS ©NF)r(   rh   r   rU   ©r]   ro   s     r*   Ú__eq__z)_InstallRequirementBackedCandidate.__eq__·   s/   € Ý�e˜Tœ^Ñ,Ô,ð 	=Ý# D¤J°´Ñ<Ô<Ð<Øˆur,   úLink | Nonec                ó   — | j         S rT   )rV   rb   s    r*   rO   z._InstallRequirementBackedCandidate.source_link¼   ó   € àÔ Ð r,   r
   c                ó@   — | j         €| j        j        | _         | j         S ©z:The normalised name of the project the candidate refers to)rY   rH   rJ   rb   s    r*   Úproject_namez/_InstallRequirementBackedCandidate.project_nameÀ   s    € ð Œ:ÐØœÔ1ˆDŒJØŒzÐr,   c                ó   — | j         S rT   ©rz   rb   s    r*   r<   z'_InstallRequirementBackedCandidate.nameÇ   rw   r,   r   c                ó@   — | j         €| j        j        | _         | j         S rT   ©rZ   rH   r/   rb   s    r*   r/   z*_InstallRequirementBackedCandidate.versionË   ó   € àŒ=Ð Ø œIÔ-ˆDŒMØŒ}Ðr,   c                ó|   — | j         › d| j        › d| j        rdnd› | j        j        r| j        j        n| j        › d�S )Nr`   z (from z	editable Ú rg   )r<   r/   Úis_editablerU   Úis_fileÚ	file_pathrb   s    r*   Úformat_for_errorz3_InstallRequirementBackedCandidate.format_for_errorÑ   sh   € àŒyð Mð M˜4œ<ð Mð MØ$(Ô$4Ð<�[�[¸"ðMà'+¤zÔ'9ÐIˆtŒzÔ#Ð#¸t¼zðMð Mð Mð	
r,   c                ó    — t          d¦  «        ‚)NzOverride in subclass)ÚNotImplementedErrorrb   s    r*   Ú_prepare_distributionz8_InstallRequirementBackedCandidate._prepare_distributionØ   s   € Ý!Ð"8Ñ9Ô9Ð9r,   c                ó  — | j         �1| j         |j        k    r!t          | j        d| j         |j        ¦  «        ‚| j        �K| j        |j        k    r;t          | j        dt          | j        ¦  «        t          |j        ¦  «        ¦  «        ‚	 t          |                     t          | 	                    ¦   «         ¦  «        ¦  «        ¦  «         dS # t          $ r'}t          | j        t          |¦  «        ¦  «        ‚d}~ww xY w)z:Check for consistency of project name and version of dist.Nr<   r/   )rY   rJ   r   rX   rZ   r/   r=   ÚlistÚiter_dependenciesÚiter_provided_extrasr	   r   )r]   rH   Úes      r*   Ú_check_metadata_consistencyz>_InstallRequirementBackedCandidate._check_metadata_consistencyÛ   sü   € àŒ:Ð! d¤j°DÔ4GÒ&GÐ&GÝ&Ø”
ØØ”
ØÔ#ñ	ô ð ð Œ=Ð$¨¬¸$¼,Ò)FÐ)FÝ&Ø”
ØÝ�D”MÑ"Ô"Ý�D”LÑ!Ô!ñ	ô ð ð	6Ý�×'Ò'­¨T×-FÒ-FÑ-HÔ-HÑ(IÔ(IÑJÔJÑKÔKÐKÐKÐKøÝ!ð 	6ð 	6ð 	6Ý! $¤*­c°!©f¬fÑ5Ô5Ð5øøøøð	6øøøs   ÂAC Ã
D Ã"C;Ã;D c                óº  — 	 |                       ¦   «         }n¯# t          $ r}| j        |_        ‚ d }~wt          $ rˆ}t          | j        j        t          ¦  «        r| j        j                             ¦   «         }n| j        j        }|€d}t          | j        j
        pt          | j        ¦  «        ||j        ¬¦  «        ‚d }~ww xY w|                      |¦  «         |S )Nzdirectly requested)Úpackage_nameÚrequirement_chainÚfailed_step)rˆ   r   rX   r;   r   r(   r5   r   Ú	from_pathr   r<   r=   rU   Úcommand_descriptionrŽ   )r]   rH   r�   ÚexcÚrequest_chains        r*   r[   z+_InstallRequirementBackedCandidate._prepareó   sñ   € ð	Ø×-Ò-Ñ/Ô/ˆDˆDøÝð 	ð 	ð 	ð ”JˆAŒEØøøøøÝ*ð 	ð 	ð 	Ý˜$œ*Ô/Õ1CÑDÔDð 6Ø $¤
Ô 5× ?Ò ?Ñ AÔ A��à $¤
Ô 5�àÐ$Ø 4�å*Ø!œZœ_Ð?µ°D´J±´Ø"/ØÔ3ðñ ô ð øøøøð	øøøð 	×(Ò(¨Ñ.Ô.Ð.Øˆs   ‚ —
C¡.®C»BB>Â>CÚwith_requiresúIterable[Requirement | None]c              #  ó   K  — | j                              | j        j        ¦  «        V — |r| j                             ¦   «         nd}|D ]5}| j                              t          |¦  «        | j        ¦  «        E d {V —† Œ6d S ©N© )rW   Ú make_requires_python_requirementrH   Úrequires_pythonr‹   Úmake_requirements_from_specr=   rX   )r]   r—   ÚrequiresÚrs       r*   r‹   z4_InstallRequirementBackedCandidate.iter_dependencies  s˜   è è € ð Œm×<Ò<¸T¼YÔ=VÑWÔWÐWÐWÐWØ4AÐI�4”9×.Ò.Ñ0Ô0Ð0ÀrˆØð 	Uð 	UˆAØ”}×@Ò@ÅÀQÁÄÈÌÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTð	Uð 	Ur,   úInstallRequirement | Nonec                ó   — | j         S rT   )rX   rb   s    r*   Úget_install_requirementz:_InstallRequirementBackedCandidate.get_install_requirement  s
   € ØŒzÐr,   ©NN)r-   r   rO   r   rB   r   rP   r    r<   rQ   r/   r0   r%   rR   ©r%   r=   ©r%   rk   ©ro   r   r%   rp   ©r%   ru   ©r%   r
   ©r%   r   ©r%   r   )rH   r   r%   rR   ©r—   rp   r%   r˜   ©r%   r¡   )ri   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__Úis_installedr^   rc   rj   rn   rt   ÚpropertyrO   rz   r<   r/   r…   rˆ   rŽ   r[   r‹   r£   r›   r,   r*   rN   rN   …   s¤  € € € € € € ðð ð ÐÐÑØ€Lð '+Ø"&ð&ð &ð &ð &ð &ð$-ð -ð -ð -ðAð Að Að Aðð ð ð ðð ð ð ð
 ð!ð !ð !ñ „Xð!ð ðð ð ñ „Xðð ð!ð !ð !ñ „Xð!ð ðð ð ñ „Xðð

ð 
ð 
ð 
ð:ð :ð :ð :ð6ð 6ð 6ð 6ð0ð ð ð ð6Uð Uð Uð Uðð ð ð ð ð r,   rN   c                  ó2   ‡ — e Zd ZdZ	 	 ddˆ fd„Zdd„Zˆ xZS )r#   FNr-   r   r.   r   rP   r    r<   rQ   r/   r0   r%   rR   c                óà  •— |}|                      ||¦  «        }|�'t                               d|j        ¦  «         |j        }t	          |||¬¦  «        }|j        |k    sJ ‚|j        j        rp|j        j        sdt          |j        j        ¦  «        }	|	j	        }
||
k    sJ |›d|
›d�¦   «         ‚|�,t          |	j        ¦  «        }||k    sJ |›d|›d|› �¦   «         ‚|�g|j        j        sJ ‚|j        j        sJ ‚|j        r|j        |j        u r||_        |j        �|j        |_        nt#          ||j        ¬¦  «        |_        t%          ¦   «                              ||||||¬¦  «         d S )NzUsing cached wheel link: %s©r/   z != z
 for wheelz for wheel )Úlink_is_in_wheel_cache©r-   rO   rB   rP   r<   r/   )Úget_wheel_cache_entryÚloggerÚdebugr-   rC   Úis_wheelrƒ   r   Úfilenamer<   r   r/   Ú
persistentr?   Úcached_wheel_source_linkÚoriginÚdownload_infor   Úsuperr^   )r]   r-   r.   rP   r<   r/   rO   Úcache_entryrB   ÚwheelÚ
wheel_nameÚwheel_versionrh   s               €r*   r^   zLinkCandidate.__init__  sÔ  ø€ ð ˆØ×3Ò3°KÀÑFÔFˆØÐ"Ý�LŠLÐ6¸Ô8HÑIÔIÐIØÔ#ˆDÝ)¨$°À'ÐJÑJÔJˆØŒy˜DÒ Ð Ð Ð ØŒ9Ôð 		H d¤iÔ&7ð 		HÝ˜$œ)Ô,Ñ-Ô-ˆEØœˆJØ˜:Ò%Ð%Ð%¨$Ð'NÐ'N°jÐ'NÐ'NÐ'NÑ%Ô%Ð%àÐ"Ý '¨¬Ñ 6Ô 6�à˜}Ò,Ð,Ð,ØÐGÐG ]ÐGÐGÀÐGÐGñ -Ô,Ð,ð Ð"Ø”9Ô%Ð%Ð%Ð%Ø”9Ô$Ð$Ð$Ð$ØÔ%ð <¨(¬-¸8Ô;QÐ*QÐ*QØ0;�Ô-ØÔ!Ð-Ø%0Ô%7�Ô"Ð"õ &:Ø¸Ô8Nð&ñ &ô &�Ô"õ 	‰Œ×ÒØØ#ØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r,   r   c                óR   — | j         j        }|                     | j        d¬¦  «        S )NT)Úparallel_builds)rW   ÚpreparerÚprepare_linked_requirementrX   )r]   rÉ   s     r*   rˆ   z#LinkCandidate._prepare_distributionN  s'   € Ø”=Ô)ˆØ×2Ò2°4´:ÈtÐ2ÑTÔTÐTr,   r¤   ©r-   r   r.   r   rP   r    r<   rQ   r/   r0   r%   rR   r«   ©ri   r®   r¯   r‚   r^   rˆ   Ú__classcell__©rh   s   @r*   r#   r#     sl   ø€ € € € € Ø€Kð '+Ø"&ð/
ð /
ð /
ð /
ð /
ð /
ð /
ðbUð Uð Uð Uð Uð Uð Uð Ur,   r#   c                  ó2   ‡ — e Zd ZdZ	 	 ddˆ fd„Zdd„Zˆ xZS )r"   TNr-   r   r.   r   rP   r    r<   rQ   r/   r0   r%   rR   c                ór   •— t          ¦   «                              ||t          ||¦  «        |||¬¦  «         d S )Nr¸   )rÂ   r^   rG   )r]   r-   r.   rP   r<   r/   rh   s         €r*   r^   zEditableCandidate.__init__V  sL   ø€ õ 	‰Œ×ÒØØÝ/°°hÑ?Ô?ØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r,   r   c                óJ   — | j         j                             | j        ¦  «        S rT   )rW   rÉ   Úprepare_editable_requirementrX   rb   s    r*   rˆ   z'EditableCandidate._prepare_distributiong  s   € ØŒ}Ô%×BÒBÀ4Ä:ÑNÔNÐNr,   r¤   rË   r«   rÌ   rÎ   s   @r*   r"   r"   S  sk   ø€ € € € € Ø€Kð '+Ø"&ð
ð 
ð 
ð 
ð 
ð 
ð 
ð"Oð Oð Oð Oð Oð Oð Oð 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dS )*r!   TNrH   r   r.   r   rP   r    r%   rR   c                óž   — || _         t          ||¦  «        | _        || _        d | _        d}|j                             | j        |¦  «         d S )Nzalready satisfied)rH   rL   rX   rW   rZ   rÉ   Úprepare_installed_requirement)r]   rH   r.   rP   Úskip_reasons        r*   r^   z"AlreadyInstalledCandidate.__init__o  sR   € ð ˆŒ	Ý0°°xÑ@Ô@ˆŒ
ØˆŒØˆŒð *ˆØÔ×6Ò6°t´zÀ;ÑOÔOÐOÐOÐOr,   r=   c                ó*   — t          | j        ¦  «        S rT   )r=   rH   rb   s    r*   rc   z!AlreadyInstalledCandidate.__str__�  s   € Ý�4”9‰~Œ~Ðr,   c                ó0   — | j         j        › d| j        ›d�S re   )rh   ri   rH   rb   s    r*   rj   z"AlreadyInstalledCandidate.__repr__„  s    € Ø”.Ô)Ð:Ð:¨D¬IÐ:Ð:Ð:Ð:r,   ro   Úobjectrp   c                óz   — t          |t          ¦  «        st          S | j        |j        k    o| j        |j        k    S rT   )r(   r!   ÚNotImplementedr<   r/   rs   s     r*   rt   z AlreadyInstalledCandidate.__eq__‡  s8   € Ý˜%Õ!:Ñ;Ô;ð 	"Ý!Ð!ØŒy˜EœJÒ&ÐH¨4¬<¸5¼=Ò+HÐHr,   rk   c                ó8   — t          | j        | j        f¦  «        S rT   )rm   r<   r/   rb   s    r*   rn   z"AlreadyInstalledCandidate.__hash__Œ  s   € Ý�T”Y ¤Ð-Ñ.Ô.Ð.r,   r
   c                ó   — | j         j        S rT   )rH   rJ   rb   s    r*   rz   z&AlreadyInstalledCandidate.project_name�  s   € àŒyÔ'Ð'r,   c                ó   — | j         S rT   r|   rb   s    r*   r<   zAlreadyInstalledCandidate.name“  rw   r,   r   c                ó@   — | j         €| j        j        | _         | j         S rT   r~   rb   s    r*   r/   z!AlreadyInstalledCandidate.version—  r   r,   c                ó   — | j         j        S rT   )rH   r:   rb   s    r*   r‚   z%AlreadyInstalledCandidate.is_editable�  s   € àŒyÔ!Ð!r,   c                ó&   — | j         › d| j        › d�S )Nr`   z (Installed)ra   rb   s    r*   r…   z*AlreadyInstalledCandidate.format_for_error¡  s   € Ø”)Ð8Ð8˜dœlÐ8Ð8Ð8Ð8r,   r—   r˜   c              #  ó  K  — |sd S 	 | j                              ¦   «         D ]5}| j                             t	          |¦  «        | j        ¦  «        E d {V —† Œ6d S # t          $ r}t          | j         |¬¦  «        d ‚d }~ww xY w)N)rH   Úinvalid_exc)rH   r‹   rW   rž   r=   rX   r	   r   )r]   r—   r    r•   s       r*   r‹   z+AlreadyInstalledCandidate.iter_dependencies¤  s´   è è € Øð 	ØˆFð	UØ”Y×0Ò0Ñ2Ô2ð Yð Y�Øœ=×DÒDÅSÈÁVÄVÈTÌZÑXÔXÐXÐXÐXÐXÐXÐXÐXÐXðYð Yøå!ð 	Uð 	Uð 	UÝ)¨t¬yÀcÐJÑJÔJÐPTÐTøøøøð	Uøøøs   ˆAA Á
A?Á#A:Á:A?r¡   c                ó   — d S rT   r›   rb   s    r*   r£   z1AlreadyInstalledCandidate.get_install_requirement®  ó   € Øˆtr,   )rH   r   r.   r   rP   r    r%   rR   r¥   )ro   rÙ   r%   rp   r¦   r©   rª   ©r%   rp   r¬   r­   )ri   r®   r¯   r²   rO   r^   rc   rj   rt   rn   r³   rz   r<   r/   r‚   r…   r‹   r£   r›   r,   r*   r!   r!   k  sJ  € € € € € Ø€LØ€KðPð Pð Pð Pð$ð ð ð ð;ð ;ð ;ð ;ðIð Ið Ið Ið
/ð /ð /ð /ð ð(ð (ð (ñ „Xð(ð ð!ð !ð !ñ „Xð!ð ðð ð ñ „Xðð
 ð"ð "ð "ñ „Xð"ð9ð 9ð 9ð 9ðUð Uð Uð 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dS ).Ú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)r5   ÚbaseÚBaseCandidater@   úfrozenset[str]r5   r¡   r%   rR   c               óz   — || _         t          d„ |D ¦   «         ¦  «        | _        |�|n| j         j        | _        dS )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  ó4   K  — | ]}t          |¦  «        V — Œd S rT   )r   )Ú.0r�   s     r*   ú	<genexpr>z+ExtrasCandidate.__init__.<locals>.<genexpr>Û  s+   è è € ÐEÐE¸Õ 1°!Ñ 4Ô 4ÐEÐEÐEÐEÐEÐEr,   N)ré   Ú	frozensetr@   rX   Ú_comes_from)r]   ré   r@   r5   s       r*   r^   zExtrasCandidate.__init__Ë  sD   € ð ˆŒ	ÝÐEÐE¸fÐEÑEÔEÑEÔEˆŒØ)3Ð)?˜:˜:ÀTÄYÄ_ˆÔÐÐr,   r=   c                ó¶   — t          | j        ¦  «                             dd¦  «        \  }}d                     |d                     | j        ¦  «        |¦  «        S )Nr`   r   z	{}[{}] {}ú,)r=   ré   ÚsplitÚformatÚjoinr@   )r]   r<   Úrests      r*   rc   zExtrasCandidate.__str__Þ  sI   € Ý˜œ‘^”^×)Ò)¨#¨qÑ1Ô1‰
ˆˆdØ×!Ò! $¨¯ª°´Ñ(=Ô(=¸tÑDÔDÐDr,   c                ó@   — | j         j        › d| j        ›d| j        ›d�S )Nz(base=z	, extras=rg   )rh   ri   ré   r@   rb   s    r*   rj   zExtrasCandidate.__repr__â  s*   € Ø”.Ô)ÐWÐW°´ÐWÐWÀtÄ{ÐWÐWÐWÐWr,   rk   c                ó8   — t          | j        | j        f¦  «        S rT   )rm   ré   r@   rb   s    r*   rn   zExtrasCandidate.__hash__å  s   € Ý�T”Y ¤Ð,Ñ-Ô-Ð-r,   ro   r   rp   c                óp   — t          || j        ¦  «        r | j        |j        k    o| j        |j        k    S dS rr   )r(   rh   ré   r@   rs   s     r*   rt   zExtrasCandidate.__eq__è  s9   € Ý�e˜Tœ^Ñ,Ô,ð 	KØ”9 ¤
Ò*ÐJ¨t¬{¸e¼lÒ/JÐJØˆur,   r
   c                ó   — | j         j        S rT   )ré   rz   rb   s    r*   rz   zExtrasCandidate.project_nameí  ó   € àŒyÔ%Ð%r,   c                ó@   — t          | j        j        | j        ¦  «        S ry   )r   ré   rz   r@   rb   s    r*   r<   zExtrasCandidate.nameñ  s   € õ ˜4œ9Ô1°4´;Ñ?Ô?Ð?r,   r   c                ó   — | j         j        S rT   )ré   r/   rb   s    r*   r/   zExtrasCandidate.versionö  s   € àŒyÔ Ð r,   c                ó¦   — d                      | j                             ¦   «         d                     t	          | j        ¦  «        ¦  «        ¦  «        S )Nz{} [{}]z, )rõ   ré   r…   rö   Úsortedr@   rb   s    r*   r…   z ExtrasCandidate.format_for_errorú  sC   € Ø×ÒØŒI×&Ò&Ñ(Ô(¨$¯)ª)µF¸4¼;Ñ4GÔ4GÑ*HÔ*Hñ
ô 
ð 	
r,   c                ó   — | j         j        S rT   )ré   r²   rb   s    r*   r²   zExtrasCandidate.is_installedÿ  rü   r,   c                ó   — | j         j        S rT   )ré   r‚   rb   s    r*   r‚   zExtrasCandidate.is_editable  ó   € àŒyÔ$Ð$r,   ru   c                ó   — | j         j        S rT   )ré   rO   rb   s    r*   rO   zExtrasCandidate.source_link  r  r,   r—   r˜   c              #  óX  K  — | j         j        }|                     | j         ¦  «        V — |sd S | j                             | j         j                             ¦   «         ¦  «        }| j                             | j         j                             ¦   «         ¦  «        }t          |¦  «        D ].}t           
                    d| j         j        | j        |¦  «         Œ/| j         j                             |¦  «        D ]1}|                     t          |¦  «        | j        |¦  «        E d {V —† Œ2d S )Nz%%s %s does not provide the extra '%s')ré   rW   Úmake_requirement_from_candidater@   ÚintersectionrH   rŒ   Ú
differencer   rº   Úwarningr<   r/   r‹   rž   r=   rñ   )r]   r—   rP   Úvalid_extrasÚinvalid_extrasÚextrar    s          r*   r‹   z!ExtrasCandidate.iter_dependencies  sE  è è € Ø”)Ô$ˆð ×5Ò5°d´iÑ@Ô@Ð@Ð@Ð@Øð 	ØˆFð ”{×/Ò/°´	´×0SÒ0SÑ0UÔ0UÑVÔVˆØœ×/Ò/°´	´×0SÒ0SÑ0UÔ0UÑVÔVˆÝ˜NÑ+Ô+ð 	ð 	ˆEÝ�NŠNØ7Ø”	”Ø”Øñ	ô ð ð ð ””×1Ò1°,Ñ?Ô?ð 	ð 	ˆAØ×:Ò:Ý�A‘”ØÔ Øñô ð ð ð ð ð ð ð ð ð	ð 	r,   c                ó   — d S rT   r›   rb   s    r*   r£   z'ExtrasCandidate.get_install_requirement'  s	   € ð ˆtr,   )ré   rê   r@   rë   r5   r¡   r%   rR   r¥   r¦   r§   r©   rª   ræ   r¨   r¬   r­   )ri   r®   r¯   r°   r^   rc   rj   rn   rt   r³   rz   r<   r/   r…   r²   r‚   rO   r‹   r£   r›   r,   r*   rè   rè   ²  sŸ  € € € € € ðð ð: 15ðUð Uð Uð Uð Uð Uð&Eð Eð Eð EðXð Xð Xð Xð.ð .ð .ð .ðð ð ð ð
 ð&ð &ð &ñ „Xð&ð ð@ð @ð @ñ „Xð@ð ð!ð !ð !ñ „Xð!ð
ð 
ð 
ð 
ð
 ð&ð &ð &ñ „Xð&ð ð%ð %ð %ñ „Xð%ð ð%ð %ð %ñ „Xð%ðð ð ð ð8ð ð ð ð ð r,   rè   c                  óŽ   — 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dS )ÚRequiresPythonCandidateFNÚpy_version_infoútuple[int, ...] | Noner%   rR   c                ó´   — |�t          |¦  «        }nt          j        d d…         }t          d                     d„ |D ¦   «         ¦  «        ¦  «        | _        d S )Né   ú.c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rT   )r=   )rî   Úcs     r*   rï   z3RequiresPythonCandidate.__init__.<locals>.<genexpr>7  s(   è è € Ð(FÐ(F°A­¨Q©¬Ð(FÐ(FÐ(FÐ(FÐ(FÐ(Fr,   )r   ÚsysÚversion_infor   rö   rZ   )r]   r  r  s      r*   r^   z RequiresPythonCandidate.__init__2  sV   € ØÐ&Ý1°/ÑBÔBˆLˆLåÔ+¨B¨Q¨BÔ/ˆLÝ §¢Ð(FÐ(F¸Ð(FÑ(FÔ(FÑ FÔ FÑGÔGˆŒˆˆr,   r=   c                ó   — d| j         › �S ©NzPython ©rZ   rb   s    r*   rc   zRequiresPythonCandidate.__str__=  s   € Ø(˜œÐ(Ð(Ð(r,   c                ó0   — | j         j        › d| j        ›d�S re   )rh   ri   rZ   rb   s    r*   rj   z RequiresPythonCandidate.__repr__@  s    € Ø”.Ô)Ð>Ð>¨D¬MÐ>Ð>Ð>Ð>r,   r
   c                ó   — t           S rT   ©ÚREQUIRES_PYTHON_IDENTIFIERrb   s    r*   rz   z$RequiresPythonCandidate.project_nameC  ó   € å)Ð)r,   c                ó   — t           S rT   r  rb   s    r*   r<   zRequiresPythonCandidate.nameG  r   r,   r   c                ó   — | j         S rT   r  rb   s    r*   r/   zRequiresPythonCandidate.versionK  s
   € àŒ}Ðr,   c                ó   — d| j         › �S r  r¶   rb   s    r*   r…   z(RequiresPythonCandidate.format_for_errorO  s   € Ø'˜œÐ'Ð'Ð'r,   r—   rp   r˜   c                ó   — dS rš   r›   )r]   r—   s     r*   r‹   z)RequiresPythonCandidate.iter_dependenciesR  s   € Øˆrr,   r¡   c                ó   — d S rT   r›   rb   s    r*   r£   z/RequiresPythonCandidate.get_install_requirementU  rå   r,   )r  r  r%   rR   r¥   r©   rª   r¬   r­   )ri   r®   r¯   r²   rO   r^   rc   rj   r³   rz   r<   r/   r…   r‹   r£   r›   r,   r*   r  r  .  sú   € € € € € Ø€LØ€KðHð Hð Hð Hð)ð )ð )ð )ð?ð ?ð ?ð ?ð ð*ð *ð *ñ „Xð*ð ð*ð *ð *ñ „Xð*ð ðð ð ñ „Xðð(ð (ð (ð (ðð ð ð ðð ð ð ð ð r,   r  )r$   r   r%   r&   rT   )r-   r   r.   r   r/   r0   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   rP   r    Ú	getLoggerri   rº   rê   r  r+   rC   rG   rL   rN   r#   r"   r!   rè   r  r›   r,   r*   ú<module>r6     s…  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à AÐ AÐ AÐ AÐ AÐ AØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð =Ð <Ð <Ð <Ð <Ð <Ø GÐ GÐ GÐ GÐ GÐ GØ ;Ð ;Ð ;Ð ;Ð ;Ð ;à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5àð !Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€àðô€ð "˜T .Ð2QÑRÔRÐ ð	ð 	ð 	ð 	ð #ðð ð ð ð ð<ð ð ð ð*ð ð ð ð,Rð Rð Rð Rð R¨ñ Rô Rð Rðj6Uð 6Uð 6Uð 6Uð 6UÐ6ñ 6Uô 6Uð 6UðrOð Oð Oð Oð OÐ:ñ Oô Oð Oð0Dð Dð Dð Dð D 	ñ Dô Dð DðNyð yð yð yð y�iñ yô yð yðx(ð (ð (ð (ð (˜iñ (ô (ð (ð (ð (r,   