§
    �’j‡M  ã                  óª  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZ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mZmZmZmZmZ ej        j         Z ej        j!        Z! ej"        e#¦  «        Z$ ej%        d	¦  «        Z& ej%        d
¦  «        Z' ej%        dej(        ¦  «        Z)dd„Z* G d„ de¦  «        Z+ ej,        e+¦  «         dS )é    )ÚannotationsN)Úreplace)ÚAny)Ú
BadCommandÚInstallationError)Ú
HiddenTextÚdisplay_pathÚhide_urlÚ	strtobool)Úmake_command)ÚAuthInfoÚRemoteNotFoundErrorÚRemoteNotValidErrorÚ
RevOptionsÚVersionControlÚ(find_path_to_project_root_from_repo_rootÚvcsz(^git version (\d+)\.(\d+)(?:\.(\d+))?.*$z^[a-fA-F0-9]{40}$a/  ^
    # Optional user, e.g. 'git@'
    (\w+@)?
    # Server, e.g. 'github.com'.
    ([^/:]+):
    # The server-side path. e.g. 'user/project.git'. Must start with an
    # alphanumeric character so as not to be confusable with a Windows paths
    # like 'C:/foo/bar' or 'C:\foo\bar'.
    (\w[^:]*)
    $ÚshaÚstrÚreturnÚboolc                óP   — t          t                               | ¦  «        ¦  «        S ©N)r   Ú
HASH_REGEXÚmatch)r   s    úCC:\Projects\DSCons\.venv\Lib\site-packages\pip\_internal\vcs\git.pyÚlooks_like_hashr   9   s   € Ý•
× Ò  Ñ%Ô%Ñ&Ô&Ð&ó    c                  óì  ‡ — e Zd ZdZdZdZdZdZdZe	d5d„¦   «         Z
ed6ˆ fd„¦   «         Zd7d„Zd8d„Zed9d„¦   «         Zed:d„¦   «         Zed;d„¦   «         Zed<d„¦   «         Zed=d!„¦   «         Zd>d%„Z	 d?d>d'„Z	 d?d>d(„Zed@d)„¦   «         Ze	dAd*„¦   «         ZedBd+„¦   «         ZedCdDd-„¦   «         Zed9d.„¦   «         ZedEˆ fd0„¦   «         Zed?dFd1„¦   «         Zed9ˆ fd2„¦   «         Ze	dGd4„¦   «         Zˆ xZ S )HÚGitÚgitz.gitÚclone)zgit+httpz	git+httpszgit+sshzgit+gitzgit+file)ÚGIT_DIRÚGIT_WORK_TREEÚHEADÚrevr   r   ú	list[str]c                ó   — | gS r   © ©r&   s    r   Úget_base_rev_argszGit.get_base_rev_argsM   s	   € àˆuˆr   Úargsr   Úkwargsc                ó¾   •— t           j                             d¦  «        r%|                     di ¦  «        }d|d<   d|d<   ||d<    t          ¦   «         j        |i |¤ŽS )NÚPIP_NO_INPUTÚextra_environÚ0ÚGIT_TERMINAL_PROMPTzssh -oBatchMode=yesÚGIT_SSH_COMMAND)ÚosÚenvironÚgetÚsuperÚrun_command)Úclsr,   r-   r0   Ú	__class__s       €r   r8   zGit.run_commandQ   sh   ø€ åŒ:�>Š>˜.Ñ)Ô)ð 	4Ø"ŸJšJ ¸Ñ;Ô;ˆMØ36ˆMÐ/Ñ0Ø/DˆMÐ+Ñ,Ø&3ˆF�?Ñ#Ø"�u‰wŒwÔ" DÐ3¨FÐ3Ð3Ð3r   ÚurlÚdestr   c                óú   — |                       t          |¦  «        ¦  «        \  }}|j        sdS |                      ||j        ¦  «        sdS t	          |                      ||j        ¦  «        d         ¦  «        }| S )NFr   )Úget_url_rev_optionsr
   r&   Úis_commit_id_equalr   Úget_revision_sha)Úselfr;   r<   Ú_Úrev_optionsÚis_tag_or_branchs         r   Úis_immutable_rev_checkoutzGit.is_immutable_rev_checkoutZ   s   € Ø×1Ò1µ(¸3±-´-Ñ@Ô@‰ˆˆ;ØŒð 	Ø�5Ø×&Ò& t¨[¬_Ñ=Ô=ð 	ð �5õ   × 5Ò 5°d¸K¼OÑ LÔ LÈQÔ OÑPÔPÐØ#Ð#Ð#r   útuple[int, ...]c                ó0  — |                       dgddd¬¦  «        }t                               |¦  «        }|st                               d|¦  «         dS t          |                     d¦  «        ¦  «        t          |                     d	¦  «        ¦  «        fS )
NÚversionzgit versionFT)Úcommand_descÚshow_stdoutÚstdout_onlyzCan't parse git version: %sr)   é   é   )r8   ÚGIT_VERSION_REGEXr   ÚloggerÚwarningÚintÚgroup)rA   rH   r   s      r   Úget_git_versionzGit.get_git_versionh   s�   € Ø×"Ò"ØˆKØ&ØØð	 #ñ 
ô 
ˆõ "×'Ò'¨Ñ0Ô0ˆØð 	Ý�NŠNÐ8¸'ÑBÔBÐBØ�2Ý�E—K’K ‘N”NÑ#Ô#¥S¨¯ª°Q©¬Ñ%8Ô%8Ð9Ð9r   Úlocationú
str | Nonec                óÂ   — g d¢}|                       |ddd|¬¦  «        }|                     ¦   «         }|                     d¦  «        r|t          d¦  «        d…         S dS )zl
        Return the current branch, or None if HEAD isn't at a branch
        (e.g. detached HEAD).
        )zsymbolic-refú-qr%   ©rL   FT©Úextra_ok_returncodesrJ   rK   Úcwdzrefs/heads/N)r8   ÚstripÚ
startswithÚlen)r9   rT   r,   ÚoutputÚrefs        r   Úget_current_branchzGit.get_current_branchu   sw   € ð .Ð-Ð-ˆØ—’ØØ!%ØØØð !ñ 
ô 
ˆð �lŠl‰nŒnˆà�>Š>˜-Ñ(Ô(ð 	-Ø•s˜=Ñ)Ô)Ð+Ð+Ô,Ð,àˆtr   útuple[str | None, bool]c                óÀ  — |                       d|g|ddd¬¦  «        }i }|                     ¦   «                              d¦  «        D ][}|                     d¦  «        }|sŒ	 |                     dd	¬
¦  «        \  }}n # t          $ r t	          d|›�¦  «        ‚w xY w|||<   Œ\d|› �}d|› �}	|                     |¦  «        }
|
�|
dfS |                     |	¦  «        }
|
dfS )zö
        Return (sha_or_none, is_branch), where sha_or_none is a commit hash
        if the revision names a remote branch or tag, otherwise None.

        Args:
          dest: the repository directory.
          rev: the revision name.
        zshow-refFTÚignore)r[   rJ   rK   Úon_returncodeú
úú rM   )Úmaxsplitzunexpected show-ref line: zrefs/remotes/origin/z
refs/tags/)r8   r\   ÚsplitÚrstripÚ
ValueErrorr6   )r9   r<   r&   r_   ÚrefsÚlineÚref_shaÚref_nameÚ
branch_refÚtag_refr   s              r   r@   zGit.get_revision_shaŽ   s6  € ð —’Ø˜ÐØØØØ"ð !ñ 
ô 
ˆð ˆð —L’L‘N”N×(Ò(¨Ñ.Ô.ð 	%ð 	%ˆDØ—;’;˜tÑ$Ô$ˆDØð ØðHØ$(§J¢J¨s¸Q JÑ$?Ô$?Ñ!�˜˜øÝð Hð Hð Hõ !Ð!F¸dÐ!FÐ!FÑGÔGÐGðHøøøð
 %ˆD�‰NˆNà1¨CÐ1Ð1ˆ
Ø$˜sÐ$Ð$ˆà�hŠh�zÑ"Ô"ˆØˆ?Ø˜�;Ðà�hŠh�wÑÔˆà�Uˆ|Ðs   Á!A<Á<Bc                ó†   — |                      d¦  «        rdS t          |¦  «        sdS |                      ||¦  «        rdS dS )a$  
        Return true if rev is a ref or is a commit that we don't have locally.

        Branches and tags are not considered in this method because they are
        assumed to be always available locally (which is a normal outcome of
        ``git clone`` and ``git fetch --tags``).
        zrefs/TF)r]   r   Ú
has_commit)r9   r<   r&   s      r   Ú_should_fetchzGit._should_fetch¼   sR   € ð �>Š>˜'Ñ"Ô"ð 	à�4å˜sÑ#Ô#ð 	à�5à�>Š>˜$ Ñ$Ô$ð 	à�5àˆtr   r   rC   r   c           	     óø  — |j         }|€J ‚|                      ||¦  «        \  }}|�,|                     |¦  «        }t          ||r|nd¬¦  «        }|S t	          |¦  «        st
                               d|¦  «         |                      ||¦  «        s|S |                      t          dd|| 
                    ¦   «         ¦  «        |¬¦  «         |                      |d¬¦  «        }|                     |¦  «        }|S )	zµ
        Resolve a revision to a new RevOptions object with the SHA1 of the
        branch, tag, or ref if found.

        Args:
          rev_options: a RevOptions object.
        N)Úbranch_namez:Did not find branch or tag '%s', assuming revision or ref.ÚfetchrW   ©r[   Ú
FETCH_HEADr*   )Úarg_revr@   Úmake_newr   r   rO   Úinforu   r8   r   Úto_argsÚget_revision)r9   r<   r;   rC   r&   r   Ú	is_branchs          r   Úresolve_revisionzGit.resolve_revisionÓ   s(  € ð Ô!ˆð ˆˆˆà×-Ò-¨d°CÑ8Ô8‰ˆˆYàˆ?Ø%×.Ò.¨sÑ3Ô3ˆKÝ! +À9Ð<V¸C¸CÐRVÐXÑXÔXˆKàÐõ ˜sÑ#Ô#ð 	Ý�KŠKØLØñô ð ð
 × Ò   sÑ+Ô+ð 	ØÐð 	�ŠÝ˜ $¨¨[×-@Ò-@Ñ-BÔ-BÑCÔCØð 	ñ 	
ô 	
ð 	
ð
 ×Ò˜t¨ÐÑ6Ô6ˆØ!×*Ò*¨3Ñ/Ô/ˆàÐr   Únamec                ó<   — |sdS |                       |¦  «        |k    S )z§
        Return whether the current commit hash equals the given name.

        Args:
          dest: the repository directory.
          name: a string name.
        F)r   )r9   r<   r‚   s      r   r?   zGit.is_commit_id_equal  s*   € ð ð 	à�5à×Ò Ñ%Ô%¨Ò-Ð-r   Ú	verbosityrQ   ÚNonec                óL  — |                      ¦   «         }t                               d||t          |¦  «        ¦  «         |dk    rd}n|dk    rd}nd}|                      ¦   «         dk    rSt          t          j                             dd	¦  «        ¦  «        s&|  	                    t          d
dg|¢|‘|‘R Ž ¦  «         n$|  	                    t          d
g|¢|‘|‘R Ž ¦  «         |j        rÙ|                      |||¦  «        }t          |dd ¦  «        }t                               d||¦  «         |€V|                      ||j        ¦  «        s:t          dd|                     ¦   «         ¦  «        }|  	                    ||¬¦  «         ng|                      |¦  «        |k    r#d|› �}	dd|d|	g}|  	                    ||¬¦  «         n*|                      |¦  «        }
|                     |
¦  «        }t                               d||j        ¦  «         |                      ||¬¦  «         d S )NzCloning %s%s to %sr   )z--quietrL   r)   )z	--verbosez
--progress)rM   é   Ú*PIP_NO_PARTIAL_CLONE_FOR_BROKEN_GIT_SERVERÚnor"   z--filter=blob:nonerw   zRev options %s, branch_name %sÚcheckoutrW   ry   zorigin/z-bz--trackzResolved %s to commit %s©r„   )Ú
to_displayrO   r}   r	   rS   r   r4   r5   r6   r8   r   r&   r�   ÚgetattrÚdebugr?   r~   ra   r   r|   Úupdate_submodules)rA   r<   r;   rC   r„   Úrev_displayÚflagsrw   Úcmd_argsÚtrack_branchr   s              r   Ú	fetch_newzGit.fetch_new  s  € ð "×,Ò,Ñ.Ô.ˆÝ�ŠÐ(¨#¨{½LÈÑ<NÔ<NÑOÔOÐOØ˜Š>ˆ>Ø%1ˆEˆEØ˜!Š^ˆ^ØˆEˆEà/ˆEØ×ÒÑ!Ô! WÒ,Ð,µYÝŒJ�NŠNÐGÈÑNÔNñ6
ô 6
Ð,ð ×ÒÝØØ(ðð ðð ð	ð
 ðð ð ñô ð ð ð ×Ò�\¨'ÐE°EÐE¸3ÐEÀÐEÐEÐEÑFÔFÐFàŒ?ð 	4à×/Ò/°°c¸;ÑGÔGˆKÝ! +¨}¸dÑCÔCˆKÝ�LŠLÐ9¸;ÈÑTÔTÐTØÐ"ð ×.Ò.¨t°[´_ÑEÔEð 9Ý+Ø"ØØ#×+Ò+Ñ-Ô-ñ ô  �Hð
 ×$Ò$ X°4Ð$Ñ8Ô8Ð8øØ×(Ò(¨Ñ.Ô.°+Ò=Ð=ð  7¨Ð6Ð6�àØØØØ ð�ð × Ò  ¨tÐ Ñ4Ô4Ð4øà×#Ò# DÑ)Ô)ˆCØ%×.Ò.¨sÑ3Ô3ˆKå�ŠÐ.°°[´_ÑEÔEÐEð 	×Ò˜t¨yÐÑ9Ô9Ð9Ð9Ð9r   r   c                ó*  — |                       t          dd|¦  «        |¬¦  «         g }|dk    r|                     d¦  «         t          dg|¢|                     ¦   «         ‘R Ž }|                       ||¬¦  «         |                      ||¬¦  «         d S )NÚconfigzremote.origin.urlry   r   rW   rŠ   r‹   )r8   r   Úappendr~   r�   ©rA   r<   r;   rC   r„   Úextra_flagsr’   s          r   Úswitchz
Git.switchQ  s¶   € ð 	×ÒÝ˜Ð#6¸Ñ<Ô<Øð 	ñ 	
ô 	
ð 	
ð
 ˆà˜Š>ˆ>Ø×Ò˜tÑ$Ô$Ð$å 
ÐP¨[ÐP¸+×:MÒ:MÑ:OÔ:OÐPÐPÐPˆØ×Ò˜ tÐÑ,Ô,Ð,à×Ò˜t¨yÐÑ9Ô9Ð9Ð9Ð9r   c                óª  — g }|dk    r|                      d¦  «         |                      ¦   «         dk    r|                      ddg|¢|¬¦  «         n|                      dg|¢|¬¦  «         |                      |||¦  «        }t	          ddg|¢|                     ¦   «         ‘R Ž }|                      ||¬¦  «         |                      ||¬	¦  «         d S )
Nr   rW   )rL   é	   rx   z--tagsry   Úresetz--hardr‹   )r—   rS   r8   r�   r   r~   r�   r˜   s          r   Úupdatez
Git.updateg  s  € ð ˆà˜Š>ˆ>Ø×Ò˜tÑ$Ô$Ð$ð ×ÒÑ!Ô! VÒ+Ð+à×Ò˜g xÐ>°+Ð>ÀDÐÑIÔIÐIÐIà×Ò˜gÐ4¨Ð4¸$ÐÑ?Ô?Ð?à×+Ò+¨D°#°{ÑCÔCˆÝØØð
ð ð
ð ×ÒÑ!Ô!ð	
ð 
ð 
ˆð 	×Ò˜ tÐÑ,Ô,Ð,à×Ò˜t¨yÐÑ9Ô9Ð9Ð9Ð9r   c                ó`  — |                       g d¢ddd|¬¦  «        }|                     ¦   «         }	 |d         }n# t          $ r t          ‚w xY w|D ]}|                     d¦  «        r|} nŒ|                     d¦  «        d	         }|                      |                     ¦   «         ¦  «        S )
z¢
        Return URL of the first remote encountered.

        Raises RemoteNotFoundError if the repository does not have a remote
        url configured.
        )r–   z--get-regexpzremote\..*\.urlrX   FTrY   r   zremote.origin.url rh   rL   )r8   Ú
splitlinesÚ
IndexErrorr   r]   rj   Ú_git_remote_to_pip_urlr\   )r9   rT   ÚstdoutÚremotesÚfound_remoteÚremoter;   s          r   Úget_remote_urlzGit.get_remote_url…  sâ   € ð —’Ø:Ð:Ð:Ø!%ØØØð !ñ 
ô 
ˆð ×#Ò#Ñ%Ô%ˆð	&Ø" 1œ:ˆLˆLøÝð 	&ð 	&ð 	&Ý%Ð%ð	&øøøð ð 	ð 	ˆFØ× Ò Ð!5Ñ6Ô6ð Ø%�Ø�ðð × Ò  Ñ%Ô% aÔ(ˆØ×)Ò)¨#¯)ª)©+¬+Ñ6Ô6Ð6s	   ²; »Ac                ó:  — t          j        d| ¦  «        r| S t          j                             | ¦  «        r&t          j        | ¦  «                             ¦   «         S t                               | ¦  «        }|r| 	                    d¦  «        S t          | ¦  «        ‚)a8  
        Convert a remote url from what git uses to what pip accepts.

        There are 3 legal forms **url** may take:

            1. A fully qualified url: ssh://git@example.com/foo/bar.git
            2. A local project.git folder: /path/to/bare/repository.git
            3. SCP shorthand for form 1: git@example.com:foo/bar.git

        Form 1 is output as-is. Form 2 must be converted to URI and form 3 must
        be converted to form 1.

        See the corresponding test test_git_remote_url_to_pip() for examples of
        sample inputs/outputs.
        z\w+://zssh://\1\2/\3)Úrer   r4   ÚpathÚexistsÚpathlibÚPathÚas_uriÚ	SCP_REGEXÚexpandr   )r;   Ú	scp_matchs     r   r¢   zGit._git_remote_to_pip_url£  s�   € õ" Œ8�I˜sÑ#Ô#ð 	àˆJÝŒ7�>Š>˜#ÑÔð 	.õ ”< Ñ$Ô$×+Ò+Ñ-Ô-Ð-Ý—O’O CÑ(Ô(ˆ	Øð 	6à×#Ò#Ð$4Ñ5Ô5Ð5å! #Ñ&Ô&Ð&r   c                óh   — 	 |                       ddd|dz   g|d¬¦  «         dS # t          $ r Y dS w xY w)zU
        Check if rev is a commit that is available in the local repository.
        ú	rev-parserW   z--verifyz	^{commit}F)r[   Úlog_failed_cmdT)r8   r   )r9   rT   r&   s      r   rt   zGit.has_commitÂ  sd   € ð
		Ø�OŠOØ˜d J°°kÑ0AÐBØØ$ð ñ ô ð ð �4øõ !ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚# £
1°1Nc                óh   — |€d}|                       d|gdd|¬¦  «        }|                     ¦   «         S )Nr%   r³   FT©rJ   rK   r[   )r8   r\   )r9   rT   r&   Úcurrent_revs       r   r   zGit.get_revisionÒ  sI   € àˆ;ØˆCØ—o’oØ˜#ÐØØØð	 &ñ 
ô 
ˆð × Ò Ñ"Ô"Ð"r   c                ót  — |                       ddgdd|¬¦  «                             ¦   «         }t          j                             |¦  «        s t          j                             ||¦  «        }t          j                             t          j                             |d¦  «        ¦  «        }t          ||¦  «        S )z‘
        Return the path to Python project root, relative to the repo root.
        Return None if the project root is in the repo root.
        r³   z	--git-dirFTr¶   z..)r8   r\   r4   rª   ÚisabsÚjoinÚabspathr   )r9   rT   Úgit_dirÚ	repo_roots       r   Úget_subdirectoryzGit.get_subdirectoryÞ  s›   € ð —/’/Ø˜+Ð&ØØØð	 "ñ 
ô 
÷
 Š%‰'Œ'ð 	õ Œw�}Š}˜WÑ%Ô%ð 	6Ý”g—l’l 8¨WÑ5Ô5ˆGÝ”G—O’O¥B¤G§L¢L°¸$Ñ$?Ô$?Ñ@Ô@ˆ	Ý7¸À)ÑLÔLÐLr   ú tuple[str, str | None, AuthInfo]c                óÈ  •— ddl }t          |¦  «        \  }}}}}|                     d¦  «        r®|dt          |                     d¦  «        ¦  «         …         }||j                             |¦  «                             dd¦  «                             d¦  «        z   }	|                     d¦  «        dz   }
|d|
…         t          ||
d…         ||	||f¦  «        z   }d|vrXd	|vsJ ‚|                     d
d¦  «        }t          ¦   «                              |¦  «        \  }}}|                     dd¦  «        }n%t          ¦   «                              |¦  «        \  }}}|||fS )a9  
        Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'.
        That's required because although they use SSH they sometimes don't
        work with a ssh:// scheme (e.g. GitHub). But we need a scheme for
        parsing. Hence we remove it again afterwards and return it as a stub.
        r   NÚfileú/ú\ú+rL   z://zfile:zgit+z
git+ssh://zssh://Ú )Úurllib.requestÚurlsplitÚendswithr^   ÚlstripÚrequestÚurl2pathnamer   ÚfindÚ
urlunsplitr7   Úget_url_rev_and_auth)r9   r;   ÚurllibÚschemeÚnetlocrª   ÚqueryÚfragmentÚinitial_slashesÚnewpathÚ
after_plusr&   Ú	user_passr:   s                €r   rÎ   zGit.get_url_rev_and_authð  s}  ø€ ð 	ÐÐÐõ 19¸±´Ñ-ˆ�˜˜e XØ�?Š?˜6Ñ"Ô"ð 	Ø"Ð#;¥c¨$¯+ª+°cÑ*:Ô*:Ñ&;Ô&;Ð%;Ð#;Ô<ˆOØ%¨¬×(CÒ(CÀDÑ(IÔ(I×(QÒ(QØ�cñ)ô )çŠf�S‰kŒkñˆGð  Ÿš SÑ)Ô)¨AÑ-ˆJØ˜˜*˜Ô%­
Ø˜
˜˜Ô$ f¨g°u¸hÐGñ)ô )ñ ˆCð ˜ÐÐØ #Ð%Ð%Ð%Ð%Ø—+’+˜f lÑ3Ô3ˆCÝ"'¡'¤'×">Ò">¸sÑ"CÔ"CÑˆC��iØ—+’+˜h¨Ñ+Ô+ˆCˆCå"'¡'¤'×">Ò">¸sÑ"CÔ"CÑˆC��ià�C˜Ð"Ð"r   c                óð   — g d¢}|dk    r|                      d¦  «         t          j                             t          j                             |d¦  «        ¦  «        sd S |                      ||¬¦  «         d S )N)Ú	submodulerž   z--initz--recursiver   rW   z.gitmodulesry   )r—   r4   rª   r«   rº   r8   )r9   rT   r„   Úargvs       r   r�   zGit.update_submodules  s~   € à?Ð?Ð?ˆà˜Š>ˆ>Ø�KŠK˜ÑÔÐåŒw�~Š~�bœgŸlšl¨8°]ÑCÔCÑDÔDð 	ØˆFØ�ŠØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                ó`  •— t          ¦   «                              |¦  «        }|r|S 	 |                      ddg|dddd¬¦  «        }n8# t          $ r t                               d|¦  «         Y d S t          $ r Y d S w xY wt          j         	                    | 
                    d¦  «        ¦  «        S )	Nr³   z--show-toplevelFTÚraise)r[   rJ   rK   re   r´   zKcould not determine if %s is under git control because git is not availablez
)r7   Úget_repository_rootr8   r   rO   rŽ   r   r4   rª   Únormpathrk   )r9   rT   ÚlocÚrr:   s       €r   rÝ   zGit.get_repository_root  sÝ   ø€ å‰gŒg×)Ò)¨(Ñ3Ô3ˆØð 	ØˆJð	Ø—’ØÐ/Ð0ØØ!Ø Ø%Ø$ð  ñ ô ˆAˆAøõ ð 	ð 	ð 	Ý�LŠLð/àñô ð ð
 �4�4Ý ð 	ð 	ð 	Ø�4�4ð	øøøåŒw×Ò §¢¨Ñ 0Ô 0Ñ1Ô1Ð1s   ¨A Á%A;Á.	A;Á:A;Úrepo_urlc                ó   — dS )zEIn either https or ssh form, requirements must be prefixed with git+.Tr)   )rá   s    r   Úshould_add_vcs_url_prefixzGit.should_add_vcs_url_prefix8  s	   € ð ˆtr   )r&   r   r   r'   )r,   r   r-   r   r   r   )r;   r   r<   r   r   r   )r   rF   )rT   r   r   rU   )r<   r   r&   r   r   rb   )r<   r   r&   r   r   r   )r<   r   r;   r   rC   r   r   r   )r<   r   r‚   rU   r   r   )
r<   r   r;   r   rC   r   r„   rQ   r   r…   )r   )rT   r   r   r   )r;   r   r   r   )rT   r   r&   r   r   r   r   )rT   r   r&   rU   r   r   )r;   r   r   r¿   )rT   r   r„   rQ   r   r…   )rá   r   r   r   )!Ú__name__Ú
__module__Ú__qualname__r‚   ÚdirnameÚ	repo_nameÚschemesÚunset_environÚdefault_arg_revÚstaticmethodr+   Úclassmethodr8   rE   rS   ra   r@   ru   r�   r?   r”   rš   rž   r§   r¢   rt   r   r¾   rÎ   r�   rÝ   rã   Ú__classcell__)r:   s   @r   r    r    =   sç  ø€ € € € € Ø€DØ€GØ€Ið€Gð 1€MØ€Oàðð ð ñ „\ðð ð4ð 4ð 4ð 4ð 4ñ „[ð4ð$ð $ð $ð $ð:ð :ð :ð :ð ðð ð ñ „[ðð0 ð+ð +ð +ñ „[ð+ðZ ðð ð ñ „[ðð, ð+ð +ð +ñ „[ð+ðZ ð.ð .ð .ñ „[ð.ð?:ð ?:ð ?:ð ?:ðL ð:ð :ð :ð :ð :ð6 ð:ð :ð :ð :ð :ð< ð7ð 7ð 7ñ „[ð7ð: ð'ð 'ð 'ñ „\ð'ð< ðð ð ñ „[ðð ð	#ð 	#ð 	#ð 	#ñ „[ð	#ð ðMð Mð Mñ „[ðMð" ð#ð #ð #ð #ð #ñ „[ð#ð@ ð
ð 
ð 
ð 
ñ „[ð
ð ð2ð 2ð 2ð 2ð 2ñ „[ð2ð0 ðð ð ñ „\ðð ð ð ð r   r    )r   r   r   r   )-Ú
__future__r   ÚloggingÚos.pathr4   r¬   r©   Úurllib.parserÏ   Údataclassesr   Útypingr   Úpip._internal.exceptionsr   r   Úpip._internal.utils.miscr   r	   r
   r   Úpip._internal.utils.subprocessr   Ú pip._internal.vcs.versioncontrolr   r   r   r   r   r   r   ÚparserÇ   rÍ   Ú	getLoggerrä   rO   ÚcompilerN   r   ÚVERBOSEr¯   r   r    Úregisterr)   r   r   ú<module>rþ      sî  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Œ<Ô €ØŒ\Ô$€
ð 
ˆÔ	˜8Ñ	$Ô	$€ð �B”Jðñô Ð ð ˆRŒZÐ+Ñ,Ô,€
ð ˆBŒJð		ð „Jñô €	ð'ð 'ð 'ð 'ð~ð ~ð ~ð ~ð ~ˆ.ñ ~ô ~ð ~ðB €„ˆSÑ Ô Ð Ð Ð r   