Viewing File: /opt/imunify360/venv/lib/python3.11/site-packages/pip/_internal/vcs/__pycache__/git.cpython-311.pyc



]jJddlmZddlZddlZddlZddlZddlZddl	Zddl
mZddlm
Z
ddlmZmZddlmZmZmZddlmZddlmZmZmZmZmZmZmZejj Z ejj!Z!ej"e#Z$ej%d	Z&ej%d
Z'ej%dej(Z)ddZ*GddeZ+ej,e+dS))annotationsN)replace)Any)
BadCommandInstallationError)
HiddenTextdisplay_pathhide_url)make_command)AuthInfoRemoteNotFoundErrorRemoteNotValidError
RevOptionsVersionControl(find_path_to_project_root_from_repo_rootvcsz(^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[^:]*)
    $shastrreturnboolcPtt|SN)r
HASH_REGEXmatch)rs u/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/venv/lib/python3.11/site-packages/pip/_internal/vcs/git.pylooks_like_hashr:s
  %%&&&ceZdZdZdZdZdZdZdZe	d5dZ
ed6fdZd7dZ
d8dZed9dZed:dZed;dZed<dZed=d!Zd>d%Z	d?d>d'Z	d?d>d(Zed@d)Ze	dAd*ZedBd+ZedCdDd-Zed9d.ZedEfd0Zed?dFd1Zed9fd2Ze	dGd4ZxZ S)HGitgitz.gitclone)zgit+httpz	git+httpszgit+sshzgit+gitzgit+file)GIT_DIR
GIT_WORK_TREEHEADrevrr	list[str]c|gSrr%s rget_base_rev_argszGit.get_base_rev_argsNs	urargsrkwargsctjdr%|di}d|d<d|d<||d<tj|i|S)NPIP_NO_INPUT
extra_environ0GIT_TERMINAL_PROMPTzssh -oBatchMode=yesGIT_SSH_COMMAND)osenvirongetsuperrun_command)clsr+r,r/	__class__s    rr7zGit.run_commandRsh
:>>.))	4"JJ;;M36M/0/DM+,&3F?#"uww"D3F333rurldestrc|t|\}}|jsdS|||jsdSt	|||jd}|S)NFr)get_url_rev_optionsr
r%is_commit_id_equalrget_revision_sha)selfr:r;_rev_optionsis_tag_or_branchs      ris_immutable_rev_checkoutzGit.is_immutable_rev_checkout[s11(3--@@;	5&&t[_==	5  5 5dKO L LQ OPP###rtuple[int, ...]c0|dgddd}t|}|std|dSt|dt|d	fS)
Nversionzgit versionFT)command_descshow_stdoutstdout_onlyzCan't parse git version: %sr()r7GIT_VERSION_REGEXrloggerwarningintgroup)r@rGrs   rget_git_versionzGit.get_git_versionis""
K&	#

"''00	NN8'BBB2EKKNN##SQ%8%899rlocation
str | Nonecgd}||ddd|}|}|dr|tddSdS)zl
        Return the current branch, or None if HEAD isn't at a branch
        (e.g. detached HEAD).
        )zsymbolic-ref-qr$rKFTextra_ok_returncodesrIrJcwdzrefs/heads/N)r7strip
startswithlen)r8rSr+outputrefs     rget_current_branchzGit.get_current_branchvsw.--!%!

llnn>>-((	-s=))++,,trtuple[str | None, bool]c|d|g|ddd}i}|dD][}|d}|s	|dd	
\}}n #t$rt	d|wxYw|||<\d|}d
|}	||}
|
|
dfS||	}
|
dfS)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.
        zshow-refFTignore)rZrIrJ
on_returncode

 rL)maxsplitzunexpected show-ref line: zrefs/remotes/origin/z
refs/tags/)r7r[splitrstrip
ValueErrorr5)r8r;r%r^refslineref_sharef_name
branch_reftag_refrs           rr?zGit.get_revision_shas6
"!

LLNN((..	%	%D;;t$$D

H$(JJsQJ$?$?!
H
H
H!!Fd!F!FGGG
H
%DNN1C11
$s$$hhz""?;hhwU|s!A<<Bc|drdSt|sdS|||rdSdS)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``).
        zrefs/TF)r\r
has_commit)r8r;r%s   r
_should_fetchzGit._should_fetchsR>>'""	4s##	5>>$$$	5trrrBrc	|j}|J|||\}}|,||}t||r|nd}|St	|st
d||||s|S|tdd||
|||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.fetchrVrZ
FETCH_HEADr))arg_revr?make_newrrrNinfortr7rto_argsget_revision)r8r;r:rBr%r	is_branchs       rresolve_revisionzGit.resolve_revisions(!--dC88Y?%..s33K!+9<VCCRVXXXKs##	KKL



  s++		$[-@-@-B-BCC		
	
	

t66!**3//rnamec<|sdS|||kS)z
        Return whether the current commit hash equals the given name.

        Args:
          dest: the repository directory.
          name: a string name.
        F)r~)r8r;rs   rr>zGit.is_commit_id_equals*	5%%--r	verbosityrPNonec|}td||t||dkrd}n|dkrd}nd}|dkr&|t
dd	g|||Rn$|t
dg|||R|jr||||}t|d
d}t
d|||V|||js:t
dd
|}|||ng|
||kr#d|}	dd|d|	g}|||n*||}
||
}td||j|||dS)NzCloning %s%s to %sr)z--quietrKr()z	--verbosez
--progress)rLr!z--filter=blob:nonervzRev options %s, branch_name %scheckoutrVrxzorigin/z-bz--trackzResolved %s to commit %sr)
to_displayrNr|r	rRr7rr%rgetattrdebugr>r}r`r~r{update_submodules)r@r;r:rBrrev_displayflagsrvcmd_argstrack_branchrs           r	fetch_newz
Git.fetch_news\",,..(#{L<N<NOOO>>%1EE
!^^EE/E!!W,,
(	





\'EEE3EEEEFFF?	4//c;GGK!+}dCCKLL9;TTT"..t[_EE9+"#++--  H
$$X4$888((..+== 766   t 444##D))C%..s33K.[_EEE	
ty99999rrc*|tdd||g}|dkr|dtdg||R}||||||dS)Nconfigzremote.origin.urlrxrrVrr)r7rappendr}rr@r;r:rBrextra_flagsrs       rswitchz
Git.switchPs	
#6<<		
	
	

>>t$$$
P[P+:M:M:O:OPPPt,,,ty99999rcg}|dkr|d|dkr|ddg||n|dg||||||}t	ddg||R}||||||	dS)
NrrV)rK	rwz--tagsrxresetz--hardr)rrRr7rrr}rrs       rupdatez
Git.updatefs>>t$$$!!V++gx>+>DIIIIg44$???++D#{CC


!!	


	
t,,,ty99999rc`|gdddd|}|}	|d}n#t$rtwxYw|D]}|dr|}n|dd	}||S)
z
        Return URL of the first remote encountered.

        Raises RemoteNotFoundError if the repository does not have a remote
        url configured.
        )rz--get-regexpzremote\..*\.urlrWFTrXrzremote.origin.url rgrK)r7
splitlines
IndexErrorr
r\ri_git_remote_to_pip_urlr[)r8rSstdoutremotesfound_remoteremoter:s       rget_remote_urlzGit.get_remote_urls:::!%!

##%%	&"1:LL	&	&	&%%	&		F  !566
%
  %%a())#))++666s	;A
c:tjd|r|Stj|r&tj|St|}|r|	dSt|)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)rerr3pathexistspathlibPurePathas_uri	SCP_REGEXexpandr)r:	scp_matchs  rrzGit._git_remote_to_pip_urls"8Is##	J
7>>#	2#C((//111OOC((		6##$4555!#&&&rch	|dddd|zg|ddS#t$rYdSwxYw)zU
        Check if rev is a commit that is available in the local repository.
        	rev-parserVz--verifyzsha^F)rZlog_failed_cmdT)r7r)r8rSr%s   rrszGit.has_commitsc
		OOdJ=$



4!			55	s#
11Nch|d}|d|gdd|}|S)Nr$rFTrIrJrZ)r7r[)r8rSr%current_revs    rr~zGit.get_revisionsI;Coo
#	&

  """rct|ddgdd|}tj|s tj||}tjtj|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.
        rz	--git-dirFTrz..)r7r[r3risabsjoinabspathr)r8rSgit_dir	repo_roots    rget_subdirectoryzGit.get_subdirectorys//
+&	"


%''	w}}W%%	6gll8W55GGOOBGLL$$?$?@@	7)LLLr tuple[str, str | None, AuthInfo]ct|\}}}}}|dr|dt|d}|tj|dddz}|ddz}	|d|	t||	d||||fz}d|vrXd|vsJ|d	d
}t|\}}
}|dd}n%t|\}}
}||
|fS)
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/\+rKz://zfile:zgit+z
git+ssh://zssh://)urlsplitendswithr]lstripurllibrequesturl2pathnamerfind
urlunsplitr6get_url_rev_and_auth)
r8r:schemenetlocrqueryfragmentinitial_slashesnewpath
after_plusr%	user_passr9s
            rrzGit.get_url_rev_and_authso19

-eX??6""	"#;c$++c*:*:&;&;%;#;<O%(C(CD(I(I(Q(Qc))fSkkG S))A-J*%

$fguhG))C#%%%%++fl33C"'''">">s"C"CCi++h++CC"'''">">s"C"CCiC""rcgd}|dkr|dtjtj|dsdS|||dS)N)	submodulerz--initz--recursiverrVz.gitmodulesrx)rr3rrrr7)r8rSrargvs    rrzGit.update_submoduless~???>>KKw~~bgll8]CCDD	F		
	
	
	
	
rc`t|}|r|S	|ddg|dddd}n8#t$rtd|YdSt$rYdSwxYwtj	|
dS)	Nrz--show-toplevelFTraise)rZrIrJrdrzKcould not determine if %s is under git control because git is not availablez
)r6get_repository_rootr7rrNrrr3rnormpathrj)r8rSlocrr9s    rrzGit.get_repository_rootsgg))(33	J	/0! %$
 AA			LL/



44 			44	w 0 0111sA%A;.	A;:A;repo_urlcdS)zEIn either https or ssh form, requirements must be prefixed with git+.Tr()rs rshould_add_vcs_url_prefixzGit.should_add_vcs_url_prefix5s	tr)r%rrr&)r+rr,rrr)r:rr;rrr)rrE)rSrrrT)r;rr%rrra)r;rr%rrr)r;rr:rrBrrr)r;rrrTrr)
r;rr:rrBrrrPrr)r)rSrrr)r:rrr)rSrr%rrrr)rSrr%rTrr)r:rrr)rSrrrPrr)rrrr)!__name__
__module____qualname__rdirname	repo_nameschemes
unset_environdefault_arg_revstaticmethodr*classmethodr7rDrRr`r?rtrr>rrrrrrsr~rrrrr
__classcell__)r9s@rrr>sDGIG1MO\44444[4$$$$::::[0+++[+Z[,+++[+Z...[.=:=:=:=:H:::::6:::::<777[7:'''\'<


[
	#	#	#	#[	#MMM[M"#####[#<



[
22222[20\rr)rrrr)-
__future__rloggingos.pathr3rrurllib.parserurllib.requestdataclassesrtypingrpip._internal.exceptionsrrpip._internal.utils.miscrr	r
pip._internal.utils.subprocessr pip._internal.vcs.versioncontrolrr
rrrrrparserr	getLoggerrrNcompilerMrVERBOSErrrregisterr(rr<module>rs""""""				BBBBBBBBGGGGGGGGGG777777< 
\
$

	8	$	$BJRZ+
,
,

BJ		J

	''''zzzzz.zzzz
Sr
Back to Directory File Manager