§
    é phO  ã                   óJ  — 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 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 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.        e/¦  «        Z0e	d         Z1 e
ed¦  «        Z2de)dee1         fd„Z3dede#de#fd„Z4dede#de#fd„Z5dede#de#fd„Z6 G d„ de)¦  «        Z7 G d„ de7¦  «        Z8 G d „ d!e7¦  «        Z9 G d"„ d#e)¦  «        Z: G d$„ d%e)¦  «        Z; G d&„ d'e)¦  «        Z<dS )(é    N)ÚTYPE_CHECKINGÚAnyÚ	FrozenSetÚIterableÚOptionalÚTupleÚUnionÚcast)ÚInvalidRequirement)ÚNormalizedNameÚcanonicalize_name)ÚVersion)Ú	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>Ú	candidateÚreturnc                 ó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:\Users\Daniel\PycharmProjects\Portfolio_Website\.venv\Lib\site-packages\pip\_internal\resolution\resolvelib\candidates.pyÚas_base_candidater+   ,   s5   € õ 	"ÝÝðÐõ
 �)Ð3Ñ4Ô4ð ØÐØˆ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   r1   r2   r3   r4   r5   r6   r7   r8   Úoriginal_linkr-   Úextras)r-   r.   ÚlineÚireqs       r*   Úmake_install_req_from_linkrA   8   s§   € ð Ô Ð8Ð8Ð"8Ñ8Ô8Ð8Ø„|ð Ý�8”<Ñ Ô ˆˆàŒxˆÝ ØØÔ,ØÔ&ØÔ&ØÔ"ØÔ&ØÔ.ØÔ*Ø Ô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)	r1   r2   r3   r4   r5   Úpermit_editable_wheelsr6   r7   r8   )r9   r   r<   r1   r2   r3   r4   r5   rC   r6   r7   r8   r>   )r-   r.   r@   s      r*   Úmake_install_req_from_editablerD   Q   s{   € ð ÔÐ5Ð5Ð5Ñ5Ô5Ð5Ý$ØŒØÔ,ØÔ&ØÔ&ØÔ"ØÔ&Ø'Ô>ØÔ.ØÔ*Ø Ô0ðñ ô €Dð ”/€D„KØ€Kr,   Údistc                 ó*  — |j         rt          |j         ¦  «        }n/|j        r| j        › d|j        j        › �}n| j        › d| j        › �}t          ||j        |j        |j	        |j
        |j        |j        |j        |j        ¬¦	  «	        }| |_        |S )Nz @ z==r0   )r:   r;   r-   Úcanonical_namer<   Úversionr   r1   r2   r3   r4   r5   r6   r7   r8   Úsatisfied_by)rE   r.   r?   r@   s       r*   Ú_make_install_req_from_distrJ   e   s´   € ð „|ð 8Ý�8”<Ñ Ô ˆˆØ	Œð 8ØÔ%Ð=Ð=¨(¬-Ô*;Ð=Ð=ˆˆàÔ%Ð7Ð7¨¬Ð7Ð7ˆÝ ØØÔ,ØÔ&ØÔ&ØÔ"ØÔ&ØÔ.ØÔ*Ø Ô0ð
ñ 
ô 
€Dð €DÔØ€Kr,   c                   óˆ  — 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!dS )Ú"_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).
    rE   FNr-   Úsource_linkr@   Úfactoryr!   ÚnamerH   r&   c                 óš   — || _         || _        || _        || _        || _        || _        |                      ¦   «         | _        d | _        d S ©N)	Ú_linkÚ_source_linkÚ_factoryÚ_ireqÚ_nameÚ_versionÚ_preparerE   Ú_hash)Úselfr-   rM   r@   rN   rO   rH   s          r*   Ú__init__z+_InstallRequirementBackedCandidate.__init__�   sI   € ð ˆŒ
Ø'ˆÔØˆŒØˆŒ
ØˆŒ
ØˆŒØ—M’M‘O”OˆŒ	Ø$(ˆŒ
ˆ
ˆ
r,   c                 ó$   — | j         › d| j        › �S )Nú ©rO   rH   ©rZ   s    r*   Ú__str__z*_InstallRequirementBackedCandidate.__str__¢   s   € Ø”)Ð,Ð,˜dœlÐ,Ð,Ð,r,   c                 óJ   — | j         j        › dt          | j        ¦  «        ›d�S ©Nú(ú))Ú	__class__Ú__name__r;   rR   r_   s    r*   Ú__repr__z+_InstallRequirementBackedCandidate.__repr__¥   s&   € Ø”.Ô)Ð@Ð@­C°´
©O¬OÐ@Ð@Ð@Ð@r,   c                 ól   — | j         �| j         S t          | j        | j        f¦  «        | _         | j         S rQ   )rY   Úhashre   rR   r_   s    r*   Ú__hash__z+_InstallRequirementBackedCandidate.__hash__¨   s4   € ØŒ:ð 	Ø”:Ðå˜4œ>¨4¬:Ð6Ñ7Ô7ˆŒ
ØŒzÐr,   Úotherc                 ód   — t          || j        ¦  «        rt          | j        |j        ¦  «        S dS ©NF)r(   re   r   rR   ©rZ   rk   s     r*   Ú__eq__z)_InstallRequirementBackedCandidate.__eq__¯   s/   € Ý�e˜Tœ^Ñ,Ô,ð 	=Ý# D¤J°´Ñ<Ô<Ð<Øˆur,   c                 ó   — | j         S rQ   )rS   r_   s    r*   rM   z._InstallRequirementBackedCandidate.source_link´   ó   € àÔ Ð r,   c                 ó@   — | j         €| j        j        | _         | j         S ©z:The normalised name of the project the candidate refers to)rV   rE   rG   r_   s    r*   Úproject_namez/_InstallRequirementBackedCandidate.project_name¸   s"   € ð Œ:ð 	2ØœÔ1ˆDŒJØŒzÐr,   c                 ó   — | j         S rQ   ©rt   r_   s    r*   rO   z'_InstallRequirementBackedCandidate.name¿   rq   r,   c                 ó@   — | j         €| j        j        | _         | j         S rQ   ©rW   rE   rH   r_   s    r*   rH   z*_InstallRequirementBackedCandidate.versionÃ   ó    € àŒ=ð 	.Ø œIÔ-ˆDŒMØŒ}Ðr,   c                 óf   — | j         › d| j        › d| j        j        r| j        j        n| j        › d�S )Nr]   z (from rd   )rO   rH   rR   Úis_fileÚ	file_pathr_   s    r*   Úformat_for_errorz3_InstallRequirementBackedCandidate.format_for_errorÉ   sS   € àŒyð Sð S˜4œ<ð Sð SØ-1¬ZÔ-?ÐO�T”ZÔ)Ð)ÀTÄZðSð Sð Sð	
r,   c                 ó    — t          d¦  «        ‚)NzOverride in subclass)ÚNotImplementedErrorr_   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.NrO   rH   )rV   rG   r   rU   rW   rH   r;   ÚlistÚiter_dependenciesÚiter_provided_extrasr   r   )rZ   rE   Úes      r*   Ú_check_metadata_consistencyz>_InstallRequirementBackedCandidate._check_metadata_consistencyÒ   s  € àŒ:ð 	 d¤j°DÔ4GÒ&Gð 	Ý&Ø”
ØØ”
ØÔ#ñ	ô ð ð Œ=ð 	¨¬¸$¼,Ò)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                 óÄ   — 	 |                       ¦   «         }n4# t          $ r}| j        |_        ‚ d }~wt          $ r}d|_        ‚ d }~ww xY w|                      |¦  «         |S )NzSee above for output.)r€   r   rU   r:   r   Úcontextr†   )rZ   rE   r…   Úexcs       r*   rX   z+_InstallRequirementBackedCandidate._prepareê   s‚   € ð	Ø×-Ò-Ñ/Ô/ˆDˆDøÝð 	ð 	ð 	ð ”JˆAŒEØøøøøÝ*ð 	ð 	ð 	à1ˆCŒKØøøøøð	øøøð
 	×(Ò(¨Ñ.Ô.Ð.Øˆs   ‚ —
A¡.®A»AÁAÚwith_requiresc              #   ó   K  — | j                              | j        j        ¦  «        V — |r| j                             ¦   «         nd}|D ]5}| j                              t          |¦  «        | j        ¦  «        E d {V —† Œ6d S ©N© )rT   Ú make_requires_python_requirementrE   Úrequires_pythonrƒ   Úmake_requirements_from_specr;   rU   )rZ   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,   c                 ó   — | j         S rQ   )rU   r_   s    r*   Úget_install_requirementz:_InstallRequirementBackedCandidate.get_install_requirement  s
   € ØŒzÐr,   ©NN)"rf   Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__Úis_installedr   r   r   r   r   r[   r;   r`   rg   Úintrj   r   Úboolro   ÚpropertyrM   rt   rO   rH   r}   r€   r†   rX   r   r   rƒ   r”   r�   r,   r*   rL   rL   }   sƒ  € € € € € € ðð ð ÐÐÑØ€Lð *.Ø%)ð)ð )àð)ð ð)ð !ð	)ð
 ð)ð �~Ô&ð)ð ˜'Ô"ð)ð 
ð)ð )ð )ð )ð$-˜ð -ð -ð -ð -ðA˜#ð Að Að Að Að˜#ð ð ð ð ð˜Cð  Dð ð ð ð ð
 ð!˜X dœ^ð !ð !ð !ñ „Xð!ð ð˜nð ð ð ñ „Xðð ð!�cð !ð !ð !ñ „Xð!ð ð˜ð ð ð ñ „Xðð

 #ð 
ð 
ð 
ð 
ð:Ð'7ð :ð :ð :ð :ð6Ð0@ð 6ÀTð 6ð 6ð 6ð 6ð0Ð*ð ð ð ð ð"U¨tð U¸ÀÈ+ÔAVÔ8Wð Uð Uð Uð Uð¨Ð2DÔ)Eð ð ð ð ð ð r,   rL   c                   óf   ‡ — 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.   rN   r!   rO   rH   r&   c                 óö  •— |}|                      ||¦  «        }|�'t                               d|j        ¦  «         |j        }t	          ||¦  «        }|j        |k    sJ ‚|j        j        r}|j        j        sqt          |j        j        ¦  «        }	t          |	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: %sz != z
 for wheelz for wheel )Úlink_is_in_wheel_cache©r-   rM   r@   rN   rO   rH   )Úget_wheel_cache_entryÚloggerÚdebugr-   rA   Úis_wheelr{   r   Úfilenamer   rO   r   rH   Ú
persistentr=   Úcached_wheel_source_linkÚoriginÚdownload_infor   Úsuperr[   )rZ   r-   r.   rN   rO   rH   rM   Úcache_entryr@   ÚwheelÚ
wheel_nameÚwheel_versionre   s               €r*   r[   zLinkCandidate.__init__
  sï  ø€ ð ˆØ×3Ò3°KÀÑFÔFˆØð 	$Ý�LŠLÐ6¸Ô8HÑIÔIÐIØÔ#ˆDÝ)¨$°Ñ9Ô9ˆØŒy˜DÒ Ð Ð Ð ØŒ9Ôð 		H d¤iÔ&7ð 		HÝ˜$œ)Ô,Ñ-Ô-ˆEÝ*¨5¬:Ñ6Ô6ˆJØ˜:Ò%ÐNÐN¨$Ð'NÐ'N°jÐ'NÐ'NÐ'NÑNÔNÐNàð HÝ '¨¬Ñ 6Ô 6�à˜}Ò,ðHð HàÐGÐG ]ÐGÐGÀÐGÐGñHô Hð Hð ð 	Ø”9Ô%Ð%Ð%Ð%Ø”9Ô$Ð$Ð$Ð$ØÔ%ð <¨(¬-¸8Ô;QÐ*Qð <Ø0;�Ô-ØÔ!ð Ø%0Ô%7�Ô"Ð"õ &:Ø¸Ô8Nð&ñ &ô &�Ô"õ 	‰Œ×ÒØØ#ØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r,   c                 óR   — | j         j        }|                     | j        d¬¦  «        S )NT)Úparallel_builds)rT   ÚpreparerÚprepare_linked_requirementrU   )rZ   r²   s     r*   r€   z#LinkCandidate._prepare_distribution;  s'   € Ø”=Ô)ˆØ×2Ò2°4´:ÈtÐ2ÑTÔTÐTr,   r•   ©rf   r–   r—   Úis_editabler   r   r   r   r   r[   r   r€   Ú__classcell__©re   s   @r*   r$   r$     s¹   ø€ € € € € Ø€Kð *.Ø%)ð/
ð /
àð/
ð %ð/
ð ð	/
ð
 �~Ô&ð/
ð ˜'Ô"ð/
ð 
ð/
ð /
ð /
ð /
ð /
ð /
ðbUÐ'7ð Uð Uð Uð Uð Uð Uð Uð Ur,   r$   c                   óf   ‡ — 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.   rN   r!   rO   rH   r&   c                 ór   •— t          ¦   «                              ||t          ||¦  «        |||¬¦  «         d S )Nr¡   )r«   r[   rD   )rZ   r-   r.   rN   rO   rH   re   s         €r*   r[   zEditableCandidate.__init__C  sL   ø€ õ 	‰Œ×ÒØØÝ/°°hÑ?Ô?ØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r,   c                 óJ   — | j         j                             | j        ¦  «        S rQ   )rT   r²   Úprepare_editable_requirementrU   r_   s    r*   r€   z'EditableCandidate._prepare_distributionT  s   € ØŒ}Ô%×BÒBÀ4Ä:ÑNÔNÐNr,   r•   r´   r·   s   @r*   r#   r#   @  s¸   ø€ € € € € Ø€Kð *.Ø%)ð
ð 
àð
ð %ð
ð ð	
ð
 �~Ô&ð
ð ˜'Ô"ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð"OÐ'7ð Oð Oð Oð Oð Oð Oð Oð 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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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dS )r"   TNrE   r.   rN   r!   r&   c                 óž   — || _         t          ||¦  «        | _        || _        d | _        d}|j                             | j        |¦  «         d S )Nzalready satisfied)rE   rJ   rU   rT   rW   r²   Úprepare_installed_requirement)rZ   rE   r.   rN   Úskip_reasons        r*   r[   z"AlreadyInstalledCandidate.__init__\  sR   € ð ˆŒ	Ý0°°xÑ@Ô@ˆŒ
ØˆŒØˆŒð *ˆØÔ×6Ò6°t´zÀ;ÑOÔOÐOÐOÐOr,   c                 ó*   — t          | j        ¦  «        S rQ   )r;   rE   r_   s    r*   r`   z!AlreadyInstalledCandidate.__str__n  s   € Ý�4”9‰~Œ~Ðr,   c                 ó0   — | j         j        › d| j        ›d�S rb   )re   rf   rE   r_   s    r*   rg   z"AlreadyInstalledCandidate.__repr__q  s    € Ø”.Ô)Ð:Ð:¨D¬IÐ:Ð:Ð:Ð:r,   rk   c                 óz   — t          |t          ¦  «        st          S | j        |j        k    o| j        |j        k    S rQ   )r(   r"   ÚNotImplementedrO   rH   rn   s     r*   ro   z AlreadyInstalledCandidate.__eq__t  s8   € Ý˜%Õ!:Ñ;Ô;ð 	"Ý!Ð!ØŒy˜EœJÒ&ÐH¨4¬<¸5¼=Ò+HÐHr,   c                 ó8   — t          | j        | j        f¦  «        S rQ   )ri   rO   rH   r_   s    r*   rj   z"AlreadyInstalledCandidate.__hash__y  s   € Ý�T”Y ¤Ð-Ñ.Ô.Ð.r,   c                 ó   — | j         j        S rQ   )rE   rG   r_   s    r*   rt   z&AlreadyInstalledCandidate.project_name|  s   € àŒyÔ'Ð'r,   c                 ó   — | j         S rQ   rv   r_   s    r*   rO   zAlreadyInstalledCandidate.name€  rq   r,   c                 ó@   — | j         €| j        j        | _         | j         S rQ   rx   r_   s    r*   rH   z!AlreadyInstalledCandidate.version„  ry   r,   c                 ó   — | j         j        S rQ   )rE   r9   r_   s    r*   rµ   z%AlreadyInstalledCandidate.is_editableŠ  s   € àŒyÔ!Ð!r,   c                 ó&   — | j         › d| j        › d�S )Nr]   z (Installed)r^   r_   s    r*   r}   z*AlreadyInstalledCandidate.format_for_errorŽ  s   € Ø”)Ð8Ð8˜dœlÐ8Ð8Ð8Ð8r,   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)rE   Úinvalid_exc)rE   rƒ   rT   r�   r;   rU   r   r   )rZ   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?c                 ó   — d S rQ   r�   r_   s    r*   r”   z1AlreadyInstalledCandidate.get_install_requirement›  ó   € Øˆtr,   )rf   r–   r—   rš   rM   r   r   r[   r;   r`   rg   Úobjectrœ   ro   r›   rj   r�   r   rt   rO   r   rH   rµ   r}   r   r   r   rƒ   r”   r�   r,   r*   r"   r"   X  sã  € € € € € Ø€LØ€KðPàðPð %ðPð ð	Pð
 
ðPð Pð Pð Pð$˜ð ð ð ð ð;˜#ð ;ð ;ð ;ð ;ðI˜Fð I tð Ið Ið Ið Ið
/˜#ð /ð /ð /ð /ð ð(˜nð (ð (ð (ñ „Xð(ð ð!�cð !ð !ð !ñ „Xð!ð ð˜ð ð ð ñ „Xðð
 ð"˜Tð "ð "ð "ñ „Xð"ð9 #ð 9ð 9ð 9ð 9ðU¨tð U¸ÀÈ+ÔAVÔ8Wð Uð Uð Uð Uð¨Ð2DÔ)Eð ð ð ð ð ð r,   r"   c            	       ó|  — 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deee                  fd„Zdee         f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)r2   Úbaser>   r2   r&   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 rQ   )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>   rU   Ú_comes_from)rZ   rÑ   r>   r2   s       r*   r[   zExtrasCandidate.__init__¸  sD   € ð ˆŒ	ÝÐEÐE¸fÐEÑEÔEÑEÔEˆŒØ)3ÐT˜:˜:ÀTÄYÄ_ˆÔÐÐr,   c                 ó¶   — t          | j        ¦  «                             dd¦  «        \  }}d                     |d                     | j        ¦  «        |¦  «        S )Nr]   r   z	{}[{}] {}ú,)r;   rÑ   ÚsplitÚformatÚjoinr>   )rZ   rO   Úrests      r*   r`   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=rd   )re   rf   rÑ   r>   r_   s    r*   rg   zExtrasCandidate.__repr__Ï  s*   € Ø”.Ô)ÐWÐW°´ÐWÐWÀtÄ{ÐWÐWÐWÐWr,   c                 ó8   — t          | j        | j        f¦  «        S rQ   )ri   rÑ   r>   r_   s    r*   rj   zExtrasCandidate.__hash__Ò  s   € Ý�T”Y ¤Ð,Ñ-Ô-Ð-r,   rk   c                 óp   — t          || j        ¦  «        r | j        |j        k    o| j        |j        k    S dS rm   )r(   re   rÑ   r>   rn   s     r*   ro   zExtrasCandidate.__eq__Õ  s9   € Ý�e˜Tœ^Ñ,Ô,ð 	KØ”9 ¤
Ò*ÐJ¨t¬{¸e¼lÒ/JÐJØˆur,   c                 ó   — | j         j        S rQ   )rÑ   rt   r_   s    r*   rt   zExtrasCandidate.project_nameÚ  ó   € àŒyÔ%Ð%r,   c                 ó@   — t          | j        j        | j        ¦  «        S rs   )r    rÑ   rt   r>   r_   s    r*   rO   zExtrasCandidate.nameÞ  s   € õ ˜4œ9Ô1°4´;Ñ?Ô?Ð?r,   c                 ó   — | j         j        S rQ   )rÑ   rH   r_   s    r*   rH   zExtrasCandidate.versionã  s   € àŒyÔ Ð r,   c                 ó¦   — d                      | j                             ¦   «         d                     t	          | j        ¦  «        ¦  «        ¦  «        S )Nz{} [{}]z, )rÛ   rÑ   r}   rÜ   Úsortedr>   r_   s    r*   r}   z ExtrasCandidate.format_for_errorç  sC   € Ø×ÒØŒI×&Ò&Ñ(Ô(¨$¯)ª)µF¸4¼;Ñ4GÔ4GÑ*HÔ*Hñ
ô 
ð 	
r,   c                 ó   — | j         j        S rQ   )rÑ   rš   r_   s    r*   rš   zExtrasCandidate.is_installedì  râ   r,   c                 ó   — | j         j        S rQ   )rÑ   rµ   r_   s    r*   rµ   zExtrasCandidate.is_editableð  ó   € àŒyÔ$Ð$r,   c                 ó   — | j         j        S rQ   )rÑ   rM   r_   s    r*   rM   zExtrasCandidate.source_linkô  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Ñ   rT   Úmake_requirement_from_candidater>   ÚintersectionrE   r„   Ú
differenceræ   r£   ÚwarningrO   rH   rƒ   r�   r;   r×   )rZ   rŠ   rN   Ú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 rQ   r�   r_   s    r*   r”   z'ExtrasCandidate.get_install_requirement  s	   € ð ˆtr,   ) rf   r–   r—   r˜   ÚBaseCandidater   r;   r   r   r[   r`   rg   r›   rj   r   rœ   ro   r�   r   rt   rO   r   rH   r}   rš   rµ   r   rM   r   r   rƒ   r”   r�   r,   r*   rÐ   rÐ   Ÿ  sS  € € € € € ðð ð: 48ðUð Uð UàðUð ˜#”ðUð
 Ð/Ô0ðUð 
ðUð Uð Uð Uð&E˜ð Eð Eð Eð EðX˜#ð Xð Xð Xð Xð.˜#ð .ð .ð .ð .ð˜Cð  Dð ð ð ð ð
 ð&˜nð &ð &ð &ñ „Xð&ð ð@�cð @ð @ð @ñ „Xð@ð ð!˜ð !ð !ð !ñ „Xð!ð
 #ð 
ð 
ð 
ð 
ð
 ð&˜dð &ð &ð &ñ „Xð&ð ð%˜Tð %ð %ð %ñ „Xð%ð ð%˜X dœ^ð %ð %ð %ñ „Xð%ð¨tð ¸ÀÈ+ÔAVÔ8Wð ð ð ð ð8¨Ð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
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dS )ÚRequiresPythonCandidateFNÚpy_version_info.r&   c                 ó´   — |�t          |¦  «        }nt          j        d d…         }t          d                     d„ |D ¦   «         ¦  «        ¦  «        | _        d S )Né   ú.c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rQ   )r;   )rÔ   Úcs     r*   rÕ   z3RequiresPythonCandidate.__init__.<locals>.<genexpr>$  s(   è è € Ð(FÐ(F°A­¨Q©¬Ð(FÐ(FÐ(FÐ(FÐ(FÐ(Fr,   )r   ÚsysÚversion_infor   rÜ   rW   )rZ   r÷   rþ   s      r*   r[   z RequiresPythonCandidate.__init__  sX   € Øð 	0Ý1°/ÑBÔBˆLˆLåÔ+¨B¨Q¨BÔ/ˆLÝ §¢Ð(FÐ(F¸Ð(FÑ(FÔ(FÑ FÔ FÑGÔGˆŒˆˆr,   c                 ó   — d| j         › �S ©NzPython ©rW   r_   s    r*   r`   zRequiresPythonCandidate.__str__*  s   € Ø(˜œÐ(Ð(Ð(r,   c                 ó0   — | j         j        › d| j        ›d�S rb   )re   rf   rW   r_   s    r*   rg   z RequiresPythonCandidate.__repr__-  s    € Ø”.Ô)Ð>Ð>¨D¬MÐ>Ð>Ð>Ð>r,   c                 ó   — t           S rQ   ©ÚREQUIRES_PYTHON_IDENTIFIERr_   s    r*   rt   z$RequiresPythonCandidate.project_name0  ó   € å)Ð)r,   c                 ó   — t           S rQ   r  r_   s    r*   rO   zRequiresPythonCandidate.name4  r  r,   c                 ó   — | j         S rQ   r  r_   s    r*   rH   zRequiresPythonCandidate.version8  s
   € àŒ}Ðr,   c                 ó   — d| j         › �S r   )rH   r_   s    r*   r}   z(RequiresPythonCandidate.format_for_error<  s   € Ø'˜œÐ'Ð'Ð'r,   rŠ   c                 ó   — dS rŒ   r�   )rZ   rŠ   s     r*   rƒ   z)RequiresPythonCandidate.iter_dependencies?  s   € Øˆrr,   c                 ó   — d S rQ   r�   r_   s    r*   r”   z/RequiresPythonCandidate.get_install_requirementB  rÍ   r,   )rf   r–   r—   rš   rM   r   r   r›   r[   r;   r`   rg   r�   r   rt   rO   r   rH   r}   rœ   r   r   rƒ   r   r”   r�   r,   r*   rö   rö     sf  € € € € € Ø€LØ€KðH¨°°s¸C°x´Ô(Að HÀdð Hð Hð Hð Hð)˜ð )ð )ð )ð )ð?˜#ð ?ð ?ð ?ð ?ð ð*˜nð *ð *ð *ñ „Xð*ð ð*�cð *ð *ð *ñ „Xð*ð ð˜ð ð ð ñ „Xðð( #ð (ð (ð (ð (ð¨tð ¸ÀÈ+ÔAVÔ8Wð ð ð ð ð¨Ð2DÔ)Eð ð ð ð ð ð r,   rö   )=Úloggingrý   Útypingr   r   r   r   r   r   r	   r
   Ú"pip._vendor.packaging.requirementsr   Úpip._vendor.packaging.utilsr   r   Úpip._vendor.packaging.versionr   Úpip._internal.exceptionsr   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    rN   r!   Ú	getLoggerrf   r£   rô   r  r+   rA   rD   rJ   rL   r$   r#   r"   rÐ   rö   r�   r,   r*   ú<module>r     sÀ  ðØ €€€Ø 
€
€
€
Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ Xà 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Ð ð	 ð 	¨x¸Ô/Fð 	ð 	ð 	ð 	ðØ
ðØ,ðàðð ð ð ð2Ø
ðØ,ðàðð ð ð ð(Ø
ðØ&8ðàðð ð ð ð0Gð Gð Gð Gð G¨ñ Gô Gð GðT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,   