+
    Žf©jIK  ã                  óî  € ^ RI H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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Ú	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[^:]*)
    $c               ó    € V ^8„  d   QhRRRR/# )é   ÚshaÚstrÚreturnÚbool© )Úformats   "ÚP/var/www/html/bestweb/venv/lib/python3.14/site-packages/pip/_internal/vcs/git.pyÚ__annotate__r   9   s   € ÷ 'ñ '˜ð ' ñ 'ó    c                ó>   € \        \        P                  V 4      4      # ©N)r   Ú
HASH_REGEXÚmatch)r   s   &r   Úlooks_like_hashr#   9   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__N   s   € ÷ ñ ˜sð  yñ r   c                	ó   € V .# r    r   ©r*   s   &r   Úget_base_rev_argsÚGit.get_base_rev_argsM   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+   R   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)Úclsr1   r2   r5   Ú	__class__s   &*, €r   r=   ÚGit.run_commandQ   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+   Z   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)ÚselfrB   rC   Ú_Úrev_optionsÚis_tag_or_branchs   &&&   r   Úis_immutable_rev_checkoutÚGit.is_immutable_rev_checkoutZ   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+   h   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)rH   rP   r"   s   &  r   Úget_git_versionÚGit.get_git_versionh   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+   v   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_returncodesrR   rS   Úcwdzrefs/heads/N)zsymbolic-refú-qr(   ©é   )r=   ÚstripÚ
startswithÚlen)r>   r]   r1   ÚoutputÚrefs   &&   r   Úget_current_branchÚGit.get_current_branchu   s]   € ò .ˆØ—‘ØØ!%ØØØð !ó 
ˆð �l‰l‹nˆà�>‰>˜-×(Ò(Ø”s˜=Ó)Ð+Ð,Ð,ár   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rC   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)rb   rR   rS   Úon_returncodeÚ
ÚÚ )Úmaxsplitzunexpected show-ref line: zrefs/remotes/origin/z
refs/tags/)r=   rf   ÚsplitÚrstripÚ
ValueErrorr;   )r>   rC   r*   ri   ÚrefsÚlineÚref_shaÚref_nameÚ
branch_refÚtag_refr   s   &&&        r   rG   Ú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   rC   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)rg   r#   Ú
has_commit)r>   rC   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   rC   r   rB   r   rJ   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.Úfetchrc   ©rb   Ú
FETCH_HEADr-   )Úarg_revrG   Úmake_newr   r#   rU   Úinfor‚   r=   r   Úto_argsÚget_revision)r>   rC   rB   rJ   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   rC   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>   rC   r“   s   &&&r   rF   ÚGit.is_commit_id_equal  s    € ÷ áà×Ñ Ó%¨Ñ-Ð-r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# ©r   rC   r   rB   r   rJ   r   Ú	verbosityrW   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¼  dR   \        \        P                  P                  RR4      4      '       g#   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 %sÚ*PIP_NO_PARTIAL_CLONE_FOR_BROKEN_GIT_SERVERÚnor'   z--filter=blob:noner†   NzRev options %s, branch_name %sÚcheckoutrc   rˆ   zorigin/z-bz--trackzResolved %s to commit %s©r˜   )z--quietr   )z	--verbosez
--progress)r   é   )Ú
to_displayrU   rŒ   r	   rY   r   r9   r:   r;   r=   r   r*   r�   ÚgetattrÚdebugrF   r�   rk   rŽ   r‹   Úupdate_submodules)rH   rC   rB   rJ   r˜   Úrev_displayÚflagsr†   Úcmd_argsÚtrack_branchr   s   &&&&&      r   Ú	fetch_newÚGit.fetch_new  së  € ð "×,Ñ,Ó.ˆÜ�‰Ð(¨#¼LÈÓ<NÔOØ˜Œ>Ø%1‰EØ˜!Œ^Ø‰Eà/ˆEØ×ÑÓ! WÔ,´YÜ�J‰J�N‰NÐGÈÓN÷6
ò 6
ð ×ÑÜØØ(ðð ðð ð	ð
 óõð ×Ñœ\¨'Ð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+   Q  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ˆ   rc   r�   rž   N)r=   r   Úappendr�   r£   ©rH   rC   rB   rJ   r˜   Úextra_flagsr¦   s   &&&&&  r   ÚswitchÚ
Git.switchQ  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+   g  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   rc   r‡   z--tagsrˆ   Úresetz--hardrž   N)re   é	   )r­   rY   r=   r�   r   r�   r£   r®   s   &&&&&  r   ÚupdateÚ
Git.updateg  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 rs   )r¬   z--get-regexpzremote\..*\.urlrd   )r=   Ú
splitlinesÚ
IndexErrorr   rg   ru   Ú_git_remote_to_pip_urlrf   )r>   r]   ÚstdoutÚremotesÚfound_remoteÚremoterB   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   rB   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"   r9   ÚpathÚexistsÚpathlibÚPathÚas_uriÚ	SCP_REGEXÚexpandr   )rB   Ú	scp_matchs   & r   r¼   ÚGit._git_remote_to_pip_url£  su   € ô" �8Š8�I˜s×#Ò#àˆJÜ�7‰7�>‰>˜#×Òô —<’< Ó$×+Ñ+Ó-Ð-Ü—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VR,           .VRR7       R#   \         d     R# i ; i)zE
Check if rev is a commit that is available in the local repository.
ú	rev-parserc   z--verifyz	^{commit}F)rb   Úlog_failed_cmdT)r=   r   )r>   r]   r*   s   &&&r   r�   ÚGit.has_commitÂ  sH   € ð
		Ø�O‰OØ˜d J°°kÕ0AÐBØØ$ð ô ñ øô !ô 	Úð	ú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©rR   rS   rb   )r=   rf   )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=   rf   r9   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   rB   r   r   z tuple[str, str | None, AuthInfo]r   )r   s   "r   r   r+   ñ  s   € ÷ #ñ # sð #Ð/Oñ #r   c                ó2  <€ ^ RI p\        V4      w  r4rVpVP                  R4      '       d‘   VR\        VP	                  R4      4      )  pW‚P
                  P                  V4      P                  RR4      P	                  R4      ,           p	VP                  R4      ^,           p
VRV
 \        W:R WIWg3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.
NÚfileÚ/Ú\Ú+z://zfile:zgit+z
git+ssh://zssh://Ú )Úurllib.requestÚurlsplitÚendswithrh   ÚlstripÚrequestÚurl2pathnamer   ÚfindÚ
urlunsplitr<   Úget_url_rev_and_auth)r>   rB   ÚurllibÚ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˜   rW   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# )Ú	submodulerc   z.gitmodulesNrˆ   )rþ   r¶   z--initz--recursive)r­   r9   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)rb   rR   rS   rp   rÒ   zKcould not determine if %s is under git control because git is not availableNz
)r<   Úget_repository_rootr=   r   rU   r¢   r   r9   rÆ   Únormpathrv   )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+   9  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_prefix8  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=   rL   rY   rk   rG   r‚   r�   rF   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 ô.ó ð.õ?:÷B:÷,:ð< ô7ó ð7ð: ô'ó ð'ð< ôó ðð ö	#ó ð	#ð ôMó ðMð" ÷#ó ð#ð@ ö
ó ð
ð ÷2ó ð2ð0 ôó ör   r%   )-Ú
__future__r   ÚloggingÚos.pathr9   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  rU   ÚcompilerT   r!   ÚVERBOSErË   r#   r%   Úregisterr   r   r   Ú<module>r,     sÑ   ðÝ "ã Û Û Û 	Û Ý Ý ç Bß RÓ RÝ 7÷÷ ñ ð �<‰<× Ñ €Ø�\‰\×$Ñ$€
ð 
×	Ò	˜8Ó	$€ð —J’JðóÐ ð �ZŠZÐ+Ó,€
ð �JŠJð		ð ‡J�Jó€	õ'ô~ˆ.ô ~ðB ‡‚ˆSÖ r   