+
    BV-jÈJ  ã                  óò  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t^ RI
Ht ^ RIHt ^ RIHtHt ^ RIHtHtHt ^ RIHt ^ RIHtHtHtHtHtHtHt ]P>                  P@                  t ]P>                  PB                  t!]PD                  ! ]#4      t$]PJ                  ! R	4      t&]PJ                  ! R
4      t']PJ                  ! R]PP                  4      t)R R lt* ! R R]4      t+]PX                  ! ]+4       R# )é    )Ú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[^:]*)
    $c               ó    € V ^8„  d   QhRRRR/# )é   ÚshaÚstrÚreturnÚbool© )Úformats   "Úf/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/pip/_internal/vcs/git.pyÚ__annotate__r   :   s   € ÷ 'ñ '˜ð ' ñ 'ó    c                ó>   € \        \        P                  V 4      4      # ©N)r   Ú
HASH_REGEXÚmatch)r   s   &r   Úlooks_like_hashr"   :   s   € Ü”
× Ñ  Ó%Ó&Ð&r   c                  óò  a € ] tR t^>tRtRtRtR0tR1tRt	]
R R l4       t]R V 3R ll4       tR	 R
 ltR R lt]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       tR R ltR2R R lltR2R R llt]R R l4       t]
R R  l4       t]R! R" l4       t]R3R# R$ ll4       t]R% R& l4       t]R' V 3R( ll4       t]R2R) R* ll4       t]R+ V 3R, ll4       t]
R- R. l4       t R/t!V ;t"# )4ÚGitÚgitz.gitÚcloneÚHEADc               ó    € V ^8„  d   QhRRRR/# )r   Úrevr   r   z	list[str]r   )r   s   "r   r   ÚGit.__annotate__O   s   € ÷ ñ ˜sð  yñ r   c                	ó   € V .# r   r   ©r)   s   &r   Úget_base_rev_argsÚGit.get_base_rev_argsN   s	   € àˆuˆr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úargsr   Úkwargsr   r   r   )r   s   "r   r   r*   S   s!   € ÷ 4ñ 4 ð 4¨sð 4°sñ 4r   c                	ó®   <€ \         P                  P                  R 4      '       d!   VP                  R/ 4      pRVR&   RVR&   W2R&   \        SV `  ! V/ VB # )ÚPIP_NO_INPUTÚextra_environÚ0ÚGIT_TERMINAL_PROMPTzssh -oBatchMode=yesÚGIT_SSH_COMMAND)ÚosÚenvironÚgetÚsuperÚrun_command)Úclsr0   r1   r4   Ú	__class__s   &*, €r   r<   ÚGit.run_commandR   sY   ø€ ä�:‰:�>‰>˜.×)Ò)Ø"ŸJ™J ¸Ó;ˆMØ36ˆMÐ/Ñ0Ø/DˆMÐ+Ñ,Ø&3�?Ñ#Ü‰wÒ" DÐ3¨FÑ3Ð3r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úurlr   Údestr   r   r   )r   s   "r   r   r*   [   s!   € ÷ $ñ $¨Sð $¸ð $Àñ $r   c                	ó  € V P                  \        V4      4      w  r4VP                  '       g   R # V P                  W$P                  4      '       g   R # \	        V P                  W$P                  4      ^ ,          4      pV'       * # )F)Úget_url_rev_optionsr
   r)   Úis_commit_id_equalr   Úget_revision_sha)ÚselfrA   rB   Ú_Úrev_optionsÚis_tag_or_branchs   &&&   r   Úis_immutable_rev_checkoutÚGit.is_immutable_rev_checkout[   sh   € Ø×1Ñ1´(¸3³-Ó@‰ˆØ��ˆÙØ×&Ñ& t¯_©_×=Ò=ñ ô   × 5Ñ 5°d¿O¹OÓ LÈQÕ OÓPÐØ#Ô#Ð#r   c               ó   € V ^8„  d   QhRR/# )r   r   ztuple[int, ...]r   )r   s   "r   r   r*   i   s   € ÷ :ñ : ñ :r   c                	ó   € V P                  R .RRRR7      p\        P                  V4      pV'       g   \        P	                  RV4       R# \        VP                  ^4      4      \        VP                  ^4      4      3# )Úversionzgit versionFT)Úcommand_descÚshow_stdoutÚstdout_onlyzCan't parse git version: %sr   )r<   ÚGIT_VERSION_REGEXr!   ÚloggerÚwarningÚintÚgroup)rG   rO   r!   s   &  r   Úget_git_versionÚGit.get_git_versioni   ss   € Ø×"Ñ"ØˆKØ&ØØð	 #ó 
ˆô "×'Ñ'¨Ó0ˆßÜ�N‰NÐ8¸'ÔBØˆIÜ�E—K‘K “NÓ#¤S¨¯©°Q«Ó%8Ð9Ð9r   c               ó    € V ^8„  d   QhRRRR/# ©r   Úlocationr   r   ú
str | Noner   )r   s   "r   r   r*   w   s   € ÷ ñ ¨#ð °*ñ r   c                ó¤   € . ROpV P                  VRRRVR7      pVP                  4       pVP                  R4      '       d   V\        R4      R # R# )zT
Return the current branch, or None if HEAD isn't at a branch
(e.g. detached HEAD).
FT©Úextra_ok_returncodesrQ   rR   Úcwdzrefs/heads/N)zsymbolic-refú-qr'   ©é   )r<   ÚstripÚ
startswithÚlen)r=   r\   r0   ÚoutputÚrefs   &&   r   Úget_current_branchÚGit.get_current_branchv   s]   € ò .ˆØ—‘ØØ!%ØØØð !ó 
ˆð �l‰l‹nˆà�>‰>˜-×(Ò(Ø”s˜=Ó)Ð+Ð,Ð,ár   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rB   r   r)   r   ztuple[str | None, bool]r   )r   s   "r   r   r*   �   s"   € ÷ +ñ + Cð +¨cð +Ð6Mñ +r   c                ó˜  € V P                  RV.VRRRR7      p/ pVP                  4       P                  R4       F8  pVP                  R4      pV'       g   K   VP                  R^R	7      w  rgYdT&   K:  	  RV 2pRV 2p	VP                  V4      p
V
e   V
R3# VP                  V	4      p
V
R3#   \         d    \	        R
T: 24      hi ; i)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)ra   rQ   rR   Úon_returncodeÚ
ÚÚ )Úmaxsplitzunexpected show-ref line: zrefs/remotes/origin/z
refs/tags/)r<   re   ÚsplitÚrstripÚ
ValueErrorr:   )r=   rB   r)   rh   ÚrefsÚlineÚref_shaÚref_nameÚ
branch_refÚtag_refr   s   &&&        r   rF   ÚGit.get_revision_sha�   sþ   € ð —‘Ø˜ÐØØØØ"ð !ó 
ˆð ˆð —L‘L“N×(Ñ(¨Ö.ˆDØ—;‘;˜tÓ$ˆDßÙðHØ$(§J¡J¨s¸Q JÓ$?Ñ!�ð %�‹Nñ /ð ,¨C¨5Ð1ˆ
Ø˜s˜eÐ$ˆà�h‰h�zÓ"ˆØŠ?Ø˜�;Ðà�h‰h�wÓˆà�Uˆ|Ðøô! ô Hô !Ð#=¸d¹XÐ!FÓGÐGðHús   ÁB.Â.C	c               ó$   € V ^8„  d   QhRRRRRR/# )r   rB   r   r)   r   r   r   )r   s   "r   r   r*   ¾   s!   € ÷ ñ  ð ¨3ð °4ñ r   c                ó�   € VP                  R4      '       d   R# \        V4      '       g   R# V P                  W4      '       d   R# R# )zü
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)rf   r"   Ú
has_commit)r=   rB   r)   s   &&&r   Ú_should_fetchÚGit._should_fetch½   s9   € ð �>‰>˜'×"Ò"áä˜s×#Ò#áà�>‰>˜$×$Ò$áár   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   rB   r   rA   r   rI   r   r   r   )r   s   "r   r   r*   Õ   s,   € ÷ +ñ +Øð+Ø'ð+Ø6@ð+à	ñ+r   c           	     óÊ  € VP                   pVf   Q hV P                  W4      w  rVVe*   VP                  V4      p\        Y6'       d   TMRR7      pV# \	        V4      '       g   \
        P                  RV4       V P                  W4      '       g   V# V P                  \        RRW#P                  4       4      VR7       V P                  VRR7      pVP                  V4      pV# )	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.Úfetchrb   ©ra   Ú
FETCH_HEADr,   )Úarg_revrF   Úmake_newr   r"   rT   Úinfor�   r<   r   Úto_argsÚget_revision)r=   rB   rA   rI   r)   r   Ú	is_branchs   &&&&   r   Úresolve_revisionÚGit.resolve_revisionÔ   sé   € ð ×!Ñ!ˆð ŠÐˆà×-Ñ-¨dÓ8‰ˆàŠ?Ø%×.Ñ.¨sÓ3ˆKÜ! +Æ9¹CÐRVÔXˆKàÐô ˜s×#Ò#Ü�K‰KØLØôð
 × Ñ  ×+Ò+ØÐð 	�‰Ü˜ $¨×-@Ñ-@Ó-BÓCØð 	ô 	
ð
 ×Ñ˜t¨ÐÓ6ˆØ!×*Ñ*¨3Ó/ˆàÐr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rB   r   Únamer]   r   r   r   )r   s   "r   r   r*     s!   € ÷ .ñ . cð .°ð .Àñ .r   c                ó>   € V'       g   R# V P                  V4      V8H  # )z
Return whether the current commit hash equals the given name.

Args:
  dest: the repository directory.
  name: a string name.
F)r�   )r=   rB   r’   s   &&&r   rE   ÚGit.is_commit_id_equal  s    € ÷ áà×Ñ Ó%¨Ñ-Ð-r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# ©r   rB   r   rA   r   rI   r   Ú	verbosityrV   r   ÚNoner   )r   s   "r   r   r*     s4   € ÷ =:ñ =:Øð=:Ø(ð=:Ø7Að=:ØNQð=:à	ñ=:r   c                	ó†  € VP                  4       p\        P                  R W%\        V4      4       V^ 8:  d   RpMV^8X  d   RpMRpV P	                  4       R8¼  d#   V P                  \        RR.VOVNVN5!  4       M V P                  \        R.VOVNVN5!  4       VP                  '       d¾   V P                  WV4      p\        VRR4      p\        P                  RW74       VfP   V P                  WP                  4      '       g.   \        RRVP                  4       4      pV P                  W�R7       MWV P                  V4      V8w  d   R	V 2p	RR
VRV	.pV P                  W�R7       M"V P                  V4      p
VP                  V
4      p\        P                  RW#P                  4       V P!                  WR7       R# )zCloning %s%s to %sr&   z--filter=blob:noner…   NzRev options %s, branch_name %sÚcheckoutrb   r‡   zorigin/z-bz--trackzResolved %s to commit %s©r—   )z--quietr   )z	--verbosez
--progress)r   é   )Ú
to_displayrT   r‹   r	   rX   r<   r   r)   r�   ÚgetattrÚdebugrE   rŒ   rj   r�   rŠ   Úupdate_submodules)rG   rB   rA   rI   r—   Úrev_displayÚflagsr…   Úcmd_argsÚtrack_branchr   s   &&&&&      r   Ú	fetch_newÚGit.fetch_new  sÌ  € ð "×,Ñ,Ó.ˆÜ�‰Ð(¨#¼LÈÓ<NÔOØ˜Œ>Ø%1‰EØ˜!Œ^Ø‰Eà/ˆEØ×ÑÓ! WÔ,ð ×ÑÜØØ(ðð ðð ð	ð
 óõð ×Ñœ\¨'ÐE°EÐE¸3ÐEÀÓEÔFà�?�?ˆ?à×/Ñ/°¸;ÓGˆKÜ! +¨}¸dÓCˆKÜ�L‰LÐ9¸;ÔTØÒ"ð ×.Ñ.¨t·_±_×EÒEÜ+Ø"ØØ#×+Ñ+Ó-ó �Hð
 ×$Ñ$ XÐ$Ô8øØ×(Ñ(¨Ó.°+Ô=ð ")¨¨Ð6�àØØØØ ð�ð × Ñ  Ð Ô4øà×#Ñ# DÓ)ˆCØ%×.Ñ.¨sÓ3ˆKä�‰Ð.°·_±_ÔEð 	×Ñ˜tÐÖ9r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# r–   r   )r   s   "r   r   r*   P  s<   € ÷ :ñ :àð:ð ð:ð  ð	:ð
 ð:ð 
ñ:r   c                	óø   € V P                  \        R RV4      VR7       . pV^ 8:  d   VP                  R4       \        R.VOVP                  4       N5!  pV P                  WaR7       V P	                  WR7       R# )Úconfigzremote.origin.urlr‡   rb   rš   r›   N)r<   r   ÚappendrŒ   r    ©rG   rB   rA   rI   r—   Úextra_flagsr£   s   &&&&&  r   ÚswitchÚ
Git.switchP  s‚   € ð 	×ÑÜ˜Ð#6¸Ó<Øð 	ô 	
ð
 ˆà˜Œ>Ø×Ñ˜tÔ$ä 
ÐP¨[ÐP¸+×:MÑ:MÓ:OÓPˆØ×Ñ˜ÐÔ,à×Ñ˜tÐÖ9r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# r–   r   )r   s   "r   r   r*   f  s<   € ÷ :ñ :àð:ð ð:ð  ð	:ð
 ð:ð 
ñ:r   c                	óh  € . pV^ 8:  d   VP                  R4       V P                  4       R	8¼  d   V P                  RR.VOVR7       MV P                  R.VOVR7       V P                  WV4      p\	        RR.VOVP                  4       N5!  pV P                  WaR7       V P                  WR7       R# )
r   rb   r†   z--tagsr‡   Úresetz--hardr›   N)rd   é	   )rª   rX   r<   r�   r   rŒ   r    r«   s   &&&&&  r   ÚupdateÚ
Git.updatef  sÌ   € ð ˆà˜Œ>Ø×Ñ˜tÔ$ð ×ÑÓ! VÔ+à×Ñ˜g xÐ>°+Ð>ÀDÐÕIà×Ñ˜gÐ4¨Ð4¸$ÐÔ?à×+Ñ+¨D°{ÓCˆÜØØð
ð ð
ð ×ÑÓ!ó	
ˆð 	×Ñ˜ÐÔ,à×Ñ˜tÐÖ9r   c               ó    € V ^8„  d   QhRRRR/# )r   r\   r   r   r   )r   s   "r   r   r*   …  s   € ÷ 7ñ 7 cð 7¨cñ 7r   c                óF  € V P                  . RORRRVR7      pVP                  4       p V^ ,          pT F  pTP	                  R4      '       g   K  Tp M	  TP                  R4      ^,          pT P                  TP                  4       4      #   \         d    \        hi ; i)z‚
Return URL of the first remote encountered.

Raises RemoteNotFoundError if the repository does not have a remote
url configured.
FTr_   zremote.origin.url rr   )r©   z--get-regexpzremote\..*\.urlrc   )r<   Ú
splitlinesÚ
IndexErrorr   rf   rt   Ú_git_remote_to_pip_urlre   )r=   r\   ÚstdoutÚremotesÚfound_remoteÚremoterA   s   &&     r   Úget_remote_urlÚGit.get_remote_url„  s¯   € ð —‘Ú:Ø!%ØØØð !ó 
ˆð ×#Ñ#Ó%ˆð	&Ø" 1�:ˆLó ˆFØ× Ñ Ð!5×6Ô6Ø%�Ùñ ð × Ñ  Ó% aÕ(ˆØ×)Ñ)¨#¯)©)«+Ó6Ð6øô ô 	&Ü%Ð%ð	&ús   ª	B ÂB c               ó    € V ^8„  d   QhRRRR/# )r   rA   r   r   r   )r   s   "r   r   r*   £  s   € ÷ 'ñ ' Cð '¨Cñ 'r   c                óD  € \         P                  ! RV 4      '       d   V # \        P                  P	                  V 4      '       d%   \
        P                  ! V 4      P                  4       # \        P                  V 4      pV'       d   VP                  R4      # \        V 4      h)aè  
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!   r8   ÚpathÚexistsÚpathlibÚPurePathÚas_uriÚ	SCP_REGEXÚexpandr   )rA   Ú	scp_matchs   & r   r¹   ÚGit._git_remote_to_pip_url¢  sw   € ô" �8Š8�I˜s×#Ò#àˆJÜ�7‰7�>‰>˜#×Òô ×#Ò# CÓ(×/Ñ/Ó1Ð1Ü—O‘O CÓ(ˆ	ßà×#Ñ#Ð$4Ó5Ð5ä! #Ó&Ð&r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r\   r   r)   r   r   r   )r   s   "r   r   r*   Â  s!   € ÷ ñ  #ð ¨Cð °Dñ r   c                ój   €  V P                  RRRRV,           .VRR7       R#   \         d     R# i ; i)zE
Check if rev is a commit that is available in the local repository.
ú	rev-parserb   z--verifyzsha^F)ra   Úlog_failed_cmdT)r<   r   )r=   r\   r)   s   &&&r   r€   ÚGit.has_commitÁ  sG   € ð
		Ø�O‰OØ˜d J°¸µÐ=ØØ$ð ô ñ øô !ô 	Úð	ús   ‚# £2±2c               ó$   € V ^8„  d   QhRRRRRR/# )r   r\   r   r)   r]   r   r   )r   s   "r   r   r*   Ò  s!   € ÷ 	#ñ 	# Cð 	#¨jð 	#ÀCñ 	#r   c                	ó\   € Vf   RpV P                  RV.RRVR7      pVP                  4       # )Nr'   rÎ   FT©rQ   rR   ra   )r<   re   )r=   r\   r)   Úcurrent_revs   &&& r   r�   ÚGit.get_revisionÑ  sA   € àŠ;ØˆCØ—o‘oØ˜#ÐØØØð	 &ó 
ˆð × Ñ Ó"Ð"r   c               ó    € V ^8„  d   QhRRRR/# r[   r   )r   s   "r   r   r*   Þ  s   € ÷ Mñ M¨ð M°
ñ Mr   c                ód  € V P                  RR.RRVR7      P                  4       p\        P                  P	                  V4      '       g    \        P                  P                  W4      p\        P                  P                  \        P                  P                  VR4      4      p\        W4      # )zy
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..)r<   re   r8   rÃ   ÚisabsÚjoinÚabspathr   )r=   r\   Úgit_dirÚ	repo_roots   &&  r   Úget_subdirectoryÚGit.get_subdirectoryÝ  s‡   € ð —/‘/Ø˜+Ð&ØØØð	 "ó 
÷
 ‰%‹'ð 	ô �w‰w�}‰}˜W×%Ò%Ü—g‘g—l‘l 8Ó5ˆGÜ—G‘G—O‘O¤B§G¡G§L¡L°¸$Ó$?Ó@ˆ	Ü7¸ÓLÐLr   c               ó    € V ^8„  d   QhRRRR/# )r   rA   r   r   z tuple[str, str | None, AuthInfo]r   )r   s   "r   r   r*   ð  s   € ÷ #ñ # sð #Ð/Oñ #r   c                ó4  <€ \        V4      w  r#rEpVP                  R4      '       d–   VR\        VP                  R4      4      )  pV\        P
                  P                  V4      P                  RR4      P                  R4      ,           pVP                  R4      ^,           p	VRV	 \        W)R W8WV34      ,           pRV9  dA   RV9  g   Q hVP                  RR	4      p\        SV `-  V4      w  rpVP                  R
R4      pM\        SV `-  V4      w  rpWV3# )a  
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Ú/Ú\Ú+z://zfile:zgit+z
git+ssh://zssh://Ú )ÚurlsplitÚendswithrg   ÚlstripÚurllibÚrequestÚurl2pathnamer   ÚfindÚ
urlunsplitr;   Úget_url_rev_and_auth)r=   rA   ÚschemeÚnetlocrÃ   ÚqueryÚfragmentÚinitial_slashesÚnewpathÚ
after_plusr)   Ú	user_passr>   s   &&          €r   rî   ÚGit.get_url_rev_and_authï  s  ø€ ô 19¸³Ñ-ˆ˜ XØ�?‰?˜6×"Ò"Ø"Ð#;¤c¨$¯+©+°cÓ*:Ó&;Ð%;Ð<ˆOØ%¬¯©×(CÑ(CÀDÓ(I×(QÑ(QØ�có)ç‰f�S‹kõˆGð  Ÿ™ SÓ)¨AÕ-ˆJØ˜˜*Ð%¬
Ø˜Ð$ f°uÐGó)õ ˆCð ˜ÔØ #Ô%Ð%Ð%Ø—+‘+˜f lÓ3ˆCÜ"'¡'Ñ">¸sÓ"CÑˆC�iØ—+‘+˜h¨Ó+‰Cä"'¡'Ñ">¸sÓ"CÑˆC�ià˜Ð"Ð"r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r\   r   r—   rV   r   r˜   r   )r   s   "r   r   r*     s!   € ÷ 
ñ 
¨ð 
¸ð 
ÀTñ 
r   c                	óî   € . ROpV^ 8:  d   VP                  R4       \        P                  P                  \        P                  P	                  VR4      4      '       g   R# V P                  VVR7       R# )Ú	submodulerb   z.gitmodulesNr‡   )rú   r³   z--initz--recursive)rª   r8   rÃ   rÄ   rÙ   r<   )r=   r\   r—   Úargvs   &&& r   r    ÚGit.update_submodules  sV   € â?ˆà˜Œ>Ø�K‰K˜Ôä�w‰w�~‰~œbŸg™gŸl™l¨8°]ÓC×DÒDÙØ�‰ØØð 	ö 	
r   c               ó    € V ^8„  d   QhRRRR/# r[   r   )r   s   "r   r   r*     s   € ÷ 2ñ 2¨3ð 2°:ñ 2r   c           	     	ó0  <€ \         SV `  V4      pV'       d   V#  V P                  R R.VRRRRR7      p\        P                  P                  TP                  R4      4      #   \         d    \        P                  RT4        R# \         d     R# i ; i)	rÎ   z--show-toplevelFTÚraise)ra   rQ   rR   ro   rÏ   zKcould not determine if %s is under git control because git is not availableNz
)r;   Úget_repository_rootr<   r   rT   rŸ   r   r8   rÃ   Únormpathru   )r=   r\   ÚlocÚrr>   s   &&  €r   r   ÚGit.get_repository_root  sŸ   ø€ ä‰gÑ)¨(Ó3ˆßØˆJð	Ø—‘ØÐ/Ð0ØØ!Ø Ø%Ø$ð  ó ˆAô" �w‰w×Ñ §¡¨Ó 0Ó1Ð1øô ô 	Ü�L‰Lð/àôò
 Ü ô 	Úð	ús   œA# Á#!BÂBÂBÂBc               ó    € V ^8„  d   QhRRRR/# )r   Úrepo_urlr   r   r   r   )r   s   "r   r   r*   6  s   € ÷ ñ ¨Cð °Dñ r   c                ó   € R# )zEIn either https or ssh form, requirements must be prefixed with git+.Tr   )r  s   &r   Úshould_add_vcs_url_prefixÚGit.should_add_vcs_url_prefix5  s   € ñ r   r   )zgit+httpz	git+httpszgit+sshzgit+gitzgit+file)ÚGIT_DIRÚGIT_WORK_TREE)r   r   )#Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r’   ÚdirnameÚ	repo_nameÚschemesÚunset_environÚdefault_arg_revÚstaticmethodr-   Úclassmethodr<   rK   rX   rj   rF   r�   r�   rE   r¥   r­   r³   r¾   r¹   r€   r�   rÝ   rî   r    r   r  Ú__static_attributes__Ú__classcell__)r>   s   @r   r$   r$   >   s�  ø† Ø€DØ€GØ€Ið€Gð 1€MØ€Oàôó ðð ÷4ó ð4õ$õ:ð ôó ðð0 ô+ó ð+ðZ ôó ðð, ô+ó ð+ðZ ô.ó ð.õ=:÷~:÷,:ð< ô7ó ð7ð: ô'ó ð'ð< ôó ðð ö	#ó ð	#ð ôMó ðMð" ÷#ó ð#ð< ö
ó ð
ð ÷2ó ð2ð0 ôó ör   r$   )-Ú
__future__r   ÚloggingÚos.pathr8   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  rT   ÚcompilerS   r    ÚVERBOSErÈ   r"   r$   Úregisterr   r   r   Ú<module>r)     sÔ   ðÝ "ã Û Û Û 	Û Û Ý Ý ç Bß GÑ GÝ 7÷÷ ñ ð �<‰<× Ñ €Ø�\‰\×$Ñ$€
ð 
×	Ò	˜8Ó	$€ð —J’JðóÐ ð �ZŠZÐ+Ó,€
ð �JŠJð		ð ‡J�Jó€	õ'ôzˆ.ô zðz ‡‚ˆSÖ r   