§
    u”jÈJ  ã                  ó®  — 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	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 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)Ú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    úd/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pip/_internal/vcs/git.pyÚlooks_like_hashr   :   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_argsN   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,   r/   Ú	__class__s       €r   r7   zGit.run_commandR   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_checkout[   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(   é   é   )r7   ÚGIT_VERSION_REGEXr   ÚloggerÚwarningÚintÚgroup)r@   rG   r   s      r   Úget_git_versionzGit.get_git_versioni   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$   ©rK   FT©Úextra_ok_returncodesrI   rJ   Úcwdzrefs/heads/N)r7   ÚstripÚ
startswithÚlen)r8   rS   r+   ÚoutputÚrefs        r   Úget_current_branchzGit.get_current_branchv   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)rZ   rI   rJ   Úon_returncodeú
úú rL   )Úmaxsplitzunexpected show-ref line: zrefs/remotes/origin/z
refs/tags/)r7   r[   ÚsplitÚrstripÚ
ValueErrorr5   )r8   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)r8   r;   r%   s      r   Ú_should_fetchzGit._should_fetch½   sR   € ð �>Š>˜'Ñ"Ô"ð 	à�4å˜sÑ#Ô#ð 	à�5à�>Š>˜$ Ñ$Ô$ð 	à�5àˆtr   r   rB   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.ÚfetchrV   ©rZ   Ú
FETCH_HEADr)   )Úarg_revr?   Úmake_newr   r   rN   Úinfort   r7   r   Úto_argsÚget_revision)r8   r;   r:   rB   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~   )r8   r;   r�   s      r   r>   zGit.is_commit_id_equal  s*   € ð ð 	à�5à×Ò Ñ%Ô%¨Ò-Ð-r   Ú	verbosityrP   ÚNonec                óò  — |                      ¦   «         }t                               d||t          |¦  «        ¦  «         |dk    rd}n|dk    rd}nd}|                      ¦   «         dk    r&|                      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--quietrK   r(   )z	--verbosez
--progress)rL   é   r!   z--filter=blob:nonerv   zRev options %s, branch_name %sÚcheckoutrV   rx   zorigin/z-bz--trackzResolved %s to commit %s©rƒ   )Ú
to_displayrN   r|   r	   rR   r7   r   r%   r€   ÚgetattrÚdebugr>   r}   r`   r~   r{   Úupdate_submodules)r@   r;   r:   rB   rƒ   Úrev_displayÚflagsrv   Ú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Ò,Ð,ð ×ÒÝØØ(ðð ðð ð	ð
 ðð ð ñô ð ð ð ×Ò�\¨'Ð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.urlrx   r   rV   r‡   rˆ   )r7   r   Úappendr}   rŒ   ©r@   r;   r:   rB   rƒ   Úextra_flagsr�   s          r   Úswitchz
Git.switchP  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   rV   )rK   é	   rw   z--tagsrx   Úresetz--hardrˆ   )r”   rR   r7   r€   r   r}   rŒ   r•   s          r   Úupdatez
Git.updatef  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\..*\.urlrW   FTrX   r   zremote.origin.url rg   rK   )r7   Ú
splitlinesÚ
IndexErrorr   r\   ri   Ú_git_remote_to_pip_urlr[   )r8   rS   Ú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   r3   ÚpathÚexistsÚpathlibÚPurePathÚas_uriÚ	SCP_REGEXÚexpandr   )r:   Ú	scp_matchs     r   rŸ   zGit._git_remote_to_pip_url¢  sŽ   € õ" Œ8�I˜sÑ#Ô#ð 	àˆJÝŒ7�>Š>˜#ÑÔð 	2õ Ô# CÑ(Ô(×/Ò/Ñ1Ô1Ð1Ý—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-parserV   z--verifyzsha^F)rZ   Úlog_failed_cmdT)r7   r   )r8   rS   r%   s      r   rs   zGit.has_commitÁ  sc   € ð
		Ø�OŠOØ˜d J°¸±Ð=ØØ$ð ñ ô ð ð �4øõ !ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚# £
1°1Nc                óh   — |€d}|                       d|gdd|¬¦  «        }|                     ¦   «         S )Nr$   r°   FT©rI   rJ   rZ   )r7   r[   )r8   rS   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..)r7   r[   r3   r§   ÚisabsÚjoinÚabspathr   )r8   rS   Ú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                óÊ  •— t          |¦  «        \  }}}}}|                     d¦  «        r³|dt          |                     d¦  «        ¦  «         …         }|t          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.
        ÚfileNú/ú\ú+rK   z://zfile:zgit+z
git+ssh://zssh://Ú )ÚurlsplitÚendswithr]   ÚlstripÚurllibÚrequestÚurl2pathnamer   ÚfindÚ
urlunsplitr6   Úget_url_rev_and_auth)r8   r:   ÚschemeÚnetlocr§   ÚqueryÚfragmentÚinitial_slashesÚnewpathÚ
after_plusr%   Ú	user_passr9   s               €r   rË   zGit.get_url_rev_and_authï  so  ø€ õ 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   rV   z.gitmodulesrx   )r”   r3   r§   r¨   r·   r7   )r8   rS   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)rZ   rI   rJ   rd   r±   zKcould not determine if %s is under git control because git is not availablez
)r6   Úget_repository_rootr7   r   rN   r‹   r   r3   r§   Únormpathrj   )r8   rS   ÚlocÚrr9   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_prefix5  s	   € ð ˆtr   )r%   r   r   r&   )r+   r   r,   r   r   r   )r:   r   r;   r   r   r   )r   rE   )rS   r   r   rT   )r;   r   r%   r   r   ra   )r;   r   r%   r   r   r   )r;   r   r:   r   rB   r   r   r   )r;   r   r�   rT   r   r   )
r;   r   r:   r   rB   r   rƒ   rP   r   r„   )r   )rS   r   r   r   )r:   r   r   r   )rS   r   r%   r   r   r   r   )rS   r   r%   rT   r   r   )r:   r   r   r¼   )rS   r   rƒ   rP   r   r„   )rÝ   r   r   r   )!Ú__name__Ú
__module__Ú__qualname__r�   ÚdirnameÚ	repo_nameÚschemesÚunset_environÚdefault_arg_revÚstaticmethodr*   Úclassmethodr7   rD   rR   r`   r?   rt   r€   r>   r‘   r—   r›   r¤   rŸ   rs   r~   r»   rË   rŒ   rÙ   rß   Ú__classcell__)r9   s   @r   r   r   >   sæ  ø€ € € € € Ø€DØ€GØ€Ið€Gð 1€MØ€Oàðð ð ñ „\ðð ð4ð 4ð 4ð 4ð 4ñ „[ð4ð$ð $ð $ð $ð:ð :ð :ð :ð ðð ð ñ „[ðð0 ð+ð +ð +ñ „[ð+ðZ ðð ð ñ „[ðð, ð+ð +ð +ñ „[ð+ðZ ð.ð .ð .ñ „[ð.ð=:ð =:ð =:ð =:ðH ð:ð :ð :ð :ð :ð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.pathr3   r©   r¦   Úurllib.parserÆ   Úurllib.requestÚdataclassesr   Útypingr   Úpip._internal.exceptionsr   r   Úpip._internal.utils.miscr   r	   r
   Úpip._internal.utils.subprocessr   Ú pip._internal.vcs.versioncontrolr   r   r   r   r   r   r   ÚparserÃ   rÊ   Ú	getLoggerrà   rN   ÚcompilerM   r   ÚVERBOSEr¬   r   r   Úregisterr(   r   r   ú<module>rû      sô  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Œ<Ô €ØŒ\Ô$€
ð 
ˆÔ	˜8Ñ	$Ô	$€ð �B”Jðñô Ð ð ˆRŒZÐ+Ñ,Ô,€
ð ˆBŒJð		ð „Jñô €	ð'ð 'ð 'ð 'ðzð zð zð zð zˆ.ñ zô zð zðz €„ˆSÑ Ô Ð Ð Ð r   