Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
keewenaw
GitHub Repository: keewenaw/ethereum-wallet-cracker
Path: blob/main/test/lib/python3.9/site-packages/pip/_internal/vcs/bazaar.py
4804 views
1
import logging
2
from typing import List, Optional, Tuple
3
4
from pip._internal.utils.misc import HiddenText, display_path
5
from pip._internal.utils.subprocess import make_command
6
from pip._internal.utils.urls import path_to_url
7
from pip._internal.vcs.versioncontrol import (
8
AuthInfo,
9
RemoteNotFoundError,
10
RevOptions,
11
VersionControl,
12
vcs,
13
)
14
15
logger = logging.getLogger(__name__)
16
17
18
class Bazaar(VersionControl):
19
name = "bzr"
20
dirname = ".bzr"
21
repo_name = "branch"
22
schemes = (
23
"bzr+http",
24
"bzr+https",
25
"bzr+ssh",
26
"bzr+sftp",
27
"bzr+ftp",
28
"bzr+lp",
29
"bzr+file",
30
)
31
32
@staticmethod
33
def get_base_rev_args(rev: str) -> List[str]:
34
return ["-r", rev]
35
36
def fetch_new(
37
self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int
38
) -> None:
39
rev_display = rev_options.to_display()
40
logger.info(
41
"Checking out %s%s to %s",
42
url,
43
rev_display,
44
display_path(dest),
45
)
46
if verbosity <= 0:
47
flag = "--quiet"
48
elif verbosity == 1:
49
flag = ""
50
else:
51
flag = f"-{'v'*verbosity}"
52
cmd_args = make_command("branch", flag, rev_options.to_args(), url, dest)
53
self.run_command(cmd_args)
54
55
def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None:
56
self.run_command(make_command("switch", url), cwd=dest)
57
58
def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None:
59
cmd_args = make_command("pull", "-q", rev_options.to_args())
60
self.run_command(cmd_args, cwd=dest)
61
62
@classmethod
63
def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]:
64
# hotfix the URL scheme after removing bzr+ from bzr+ssh:// readd it
65
url, rev, user_pass = super().get_url_rev_and_auth(url)
66
if url.startswith("ssh://"):
67
url = "bzr+" + url
68
return url, rev, user_pass
69
70
@classmethod
71
def get_remote_url(cls, location: str) -> str:
72
urls = cls.run_command(
73
["info"], show_stdout=False, stdout_only=True, cwd=location
74
)
75
for line in urls.splitlines():
76
line = line.strip()
77
for x in ("checkout of branch: ", "parent branch: "):
78
if line.startswith(x):
79
repo = line.split(x)[1]
80
if cls._is_local_repository(repo):
81
return path_to_url(repo)
82
return repo
83
raise RemoteNotFoundError
84
85
@classmethod
86
def get_revision(cls, location: str) -> str:
87
revision = cls.run_command(
88
["revno"],
89
show_stdout=False,
90
stdout_only=True,
91
cwd=location,
92
)
93
return revision.splitlines()[-1]
94
95
@classmethod
96
def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool:
97
"""Always assume the versions don't match"""
98
return False
99
100
101
vcs.register(Bazaar)
102
103