Skip to content

Commit

Permalink
Remove show_stdout from run_command args
Browse files Browse the repository at this point in the history
  • Loading branch information
deveshks committed May 23, 2020
1 parent 8adbc21 commit 94882fd
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 59 deletions.
7 changes: 3 additions & 4 deletions src/pip/_internal/vcs/bazaar.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,7 @@ def export(self, location, url):

url, rev_options = self.get_url_rev_options(url)
self.run_command(
make_command('export', location, url, rev_options.to_args()),
show_stdout=False,
make_command('export', location, url, rev_options.to_args())
)

def fetch_new(self, dest, url, rev_options):
Expand Down Expand Up @@ -92,7 +91,7 @@ def get_url_rev_and_auth(cls, url):

@classmethod
def get_remote_url(cls, location):
urls = cls.run_command(['info'], show_stdout=False, cwd=location)
urls = cls.run_command(['info'], cwd=location)
for line in urls.splitlines():
line = line.strip()
for x in ('checkout of branch: ',
Expand All @@ -107,7 +106,7 @@ def get_remote_url(cls, location):
@classmethod
def get_revision(cls, location):
revision = cls.run_command(
['revno'], show_stdout=False, cwd=location,
['revno'], cwd=location,
)
return revision.splitlines()[-1]

Expand Down
19 changes: 9 additions & 10 deletions src/pip/_internal/vcs/git.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from pip._vendor.six.moves.urllib import parse as urllib_parse
from pip._vendor.six.moves.urllib import request as urllib_request

from pip._internal.exceptions import BadCommand, InstallationError
from pip._internal.exceptions import BadCommand, SubProcessError
from pip._internal.utils.misc import display_path, hide_url
from pip._internal.utils.subprocess import make_command
from pip._internal.utils.temp_dir import TempDirectory
Expand Down Expand Up @@ -78,7 +78,7 @@ def is_immutable_rev_checkout(self, url, dest):

def get_git_version(self):
VERSION_PFX = 'git version '
version = self.run_command(['version'], show_stdout=False)
version = self.run_command(['version'])
if version.startswith(VERSION_PFX):
version = version[len(VERSION_PFX):].split()[0]
else:
Expand All @@ -101,7 +101,7 @@ def get_current_branch(cls, location):
# and to suppress the message to stderr.
args = ['symbolic-ref', '-q', 'HEAD']
output = cls.run_command(
args, extra_ok_returncodes=(1, ), show_stdout=False, cwd=location,
args, extra_ok_returncodes=(1, ), cwd=location,
)
ref = output.strip()

Expand All @@ -120,7 +120,7 @@ def export(self, location, url):
self.unpack(temp_dir.path, url=url)
self.run_command(
['checkout-index', '-a', '-f', '--prefix', location],
show_stdout=False, cwd=temp_dir.path
cwd=temp_dir.path
)

@classmethod
Expand All @@ -135,7 +135,7 @@ def get_revision_sha(cls, dest, rev):
"""
# Pass rev to pre-filter the list.
output = cls.run_command(['show-ref', rev], cwd=dest,
show_stdout=False, on_returncode='ignore')
on_returncode='ignore')
refs = {}
for line in output.strip().splitlines():
try:
Expand Down Expand Up @@ -286,7 +286,7 @@ def get_remote_url(cls, location):
# exits with return code 1 if there are no matching lines.
stdout = cls.run_command(
['config', '--get-regexp', r'remote\..*\.url'],
extra_ok_returncodes=(1, ), show_stdout=False, cwd=location,
extra_ok_returncodes=(1, ), cwd=location,
)
remotes = stdout.splitlines()
try:
Expand All @@ -306,7 +306,7 @@ def get_revision(cls, location, rev=None):
if rev is None:
rev = 'HEAD'
current_rev = cls.run_command(
['rev-parse', rev], show_stdout=False, cwd=location,
['rev-parse', rev], cwd=location,
)
return current_rev.strip()

Expand All @@ -319,7 +319,7 @@ def get_subdirectory(cls, location):
# find the repo root
git_dir = cls.run_command(
['rev-parse', '--git-dir'],
show_stdout=False, cwd=location).strip()
cwd=location).strip()
if not os.path.isabs(git_dir):
git_dir = os.path.join(location, git_dir)
repo_root = os.path.abspath(os.path.join(git_dir, '..'))
Expand Down Expand Up @@ -378,15 +378,14 @@ def get_repository_root(cls, location):
r = cls.run_command(
['rev-parse', '--show-toplevel'],
cwd=location,
show_stdout=False,
on_returncode='raise',
log_failed_cmd=False,
)
except BadCommand:
logger.debug("could not determine if %s is under git control "
"because git is not available", location)
return None
except InstallationError:
except SubProcessError:
return None
return os.path.normpath(r.rstrip('\r\n'))

Expand Down
16 changes: 7 additions & 9 deletions src/pip/_internal/vcs/mercurial.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

from pip._vendor.six.moves import configparser

from pip._internal.exceptions import BadCommand, InstallationError
from pip._internal.exceptions import BadCommand, SubProcessError
from pip._internal.utils.misc import display_path
from pip._internal.utils.subprocess import make_command
from pip._internal.utils.temp_dir import TempDirectory
Expand Down Expand Up @@ -47,7 +47,7 @@ def export(self, location, url):
self.unpack(temp_dir.path, url=url)

self.run_command(
['archive', location], show_stdout=False, cwd=temp_dir.path
['archive', location], cwd=temp_dir.path
)

def fetch_new(self, dest, url, rev_options):
Expand Down Expand Up @@ -92,7 +92,7 @@ def update(self, dest, url, rev_options):
def get_remote_url(cls, location):
url = cls.run_command(
['showconfig', 'paths.default'],
show_stdout=False, cwd=location).strip()
cwd=location).strip()
if cls._is_local_repository(url):
url = path_to_url(url)
return url.strip()
Expand All @@ -103,8 +103,7 @@ def get_revision(cls, location):
Return the repository-local changeset revision number, as an integer.
"""
current_revision = cls.run_command(
['parents', '--template={rev}'],
show_stdout=False, cwd=location).strip()
['parents', '--template={rev}'], cwd=location).strip()
return current_revision

@classmethod
Expand All @@ -115,7 +114,7 @@ def get_requirement_revision(cls, location):
"""
current_rev_hash = cls.run_command(
['parents', '--template={node}'],
show_stdout=False, cwd=location).strip()
cwd=location).strip()
return current_rev_hash

@classmethod
Expand All @@ -131,7 +130,7 @@ def get_subdirectory(cls, location):
"""
# find the repo root
repo_root = cls.run_command(
['root'], show_stdout=False, cwd=location).strip()
['root'], cwd=location).strip()
if not os.path.isabs(repo_root):
repo_root = os.path.abspath(os.path.join(location, repo_root))
return find_path_to_setup_from_repo_root(location, repo_root)
Expand All @@ -145,15 +144,14 @@ def get_repository_root(cls, location):
r = cls.run_command(
['root'],
cwd=location,
show_stdout=False,
on_returncode='raise',
log_failed_cmd=False,
)
except BadCommand:
logger.debug("could not determine if %s is under hg control "
"because hg is not available", location)
return None
except InstallationError:
except SubProcessError:
return None
return os.path.normpath(r.rstrip('\r\n'))

Expand Down
9 changes: 4 additions & 5 deletions src/pip/_internal/vcs/subversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def get_remote_url(cls, location):

@classmethod
def _get_svn_url_rev(cls, location):
from pip._internal.exceptions import InstallationError
from pip._internal.exceptions import SubProcessError

entries_path = os.path.join(location, cls.dirname, 'entries')
if os.path.exists(entries_path):
Expand Down Expand Up @@ -165,13 +165,12 @@ def _get_svn_url_rev(cls, location):
# are only potentially needed for remote server requests.
xml = cls.run_command(
['info', '--xml', location],
show_stdout=False,
)
url = _svn_info_xml_url_re.search(xml).group(1)
revs = [
int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml)
]
except InstallationError:
except SubProcessError:
url, revs = None, []

if revs:
Expand Down Expand Up @@ -215,7 +214,7 @@ def call_vcs_version(self):
# svn, version 1.7.14 (r1542130)
# compiled Mar 28 2018, 08:49:13 on x86_64-pc-linux-gnu
version_prefix = 'svn, version '
version = self.run_command(['--version'], show_stdout=True)
version = self.run_command(['--version'])

if not version.startswith(version_prefix):
return ()
Expand Down Expand Up @@ -298,7 +297,7 @@ def export(self, location, url):
'export', self.get_remote_call_options(),
rev_options.to_args(), url, location,
)
self.run_command(cmd_args, show_stdout=False)
self.run_command(cmd_args)

def fetch_new(self, dest, url, rev_options):
# type: (str, HiddenText, RevOptions) -> None
Expand Down
44 changes: 13 additions & 31 deletions src/pip/_internal/vcs/versioncontrol.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
if MYPY_CHECK_RUNNING:
from typing import (
Dict, Iterable, Iterator, List, Optional, Text, Tuple,
Type, Union
Type, Union, Mapping, Any
)
from pip._internal.utils.misc import HiddenText
from pip._internal.utils.subprocess import CommandArgs
Expand Down Expand Up @@ -83,51 +83,32 @@ def make_vcs_requirement_url(repo_url, rev, project_name, subdir=None):

def call_subprocess(
cmd, # type: Union[List[str], CommandArgs]
show_stdout=False, # type: bool
cwd=None, # type: Optional[str]
on_returncode='raise', # type: str
extra_environ=None, # type: Optional[Mapping[str, Any]]
extra_ok_returncodes=None, # type: Optional[Iterable[int]]
log_failed_cmd=True # type: Optional[bool]
):
# type: (...) -> Text
"""
Args:
show_stdout: if true, use INFO to log the subprocess's stderr and
stdout streams. Otherwise, use DEBUG. Defaults to False.
extra_ok_returncodes: an iterable of integer return codes that are
acceptable, in addition to 0. Defaults to None, which means [].
log_failed_cmd: if false, failed commands are not logged,
only raised.
"""
if extra_ok_returncodes is None:
extra_ok_returncodes = []
# Most places in pip use show_stdout=False.
# What this means is--
#
# - We log this output of stdout and stderr at DEBUG level
# as it is received.
# - If DEBUG logging isn't enabled (e.g. if --verbose logging wasn't
# requested), then we show a spinner so the user can still see the
# subprocess is in progress.
# - If the subprocess exits with an error, we log the output to stderr
# at ERROR level if it hasn't already been displayed to the console
# (e.g. if --verbose logging wasn't enabled). This way we don't log
# the output to the console twice.
#
# If show_stdout=True, then the above is still done, but with DEBUG
# replaced by INFO.
if show_stdout:
# Then log the subprocess output at INFO level.
log_subprocess = subprocess_logger.info
used_level = logging.INFO
else:
# Then log the subprocess output using DEBUG. This also ensures
# it will be logged to the log file (aka user_log), if enabled.
log_subprocess = subprocess_logger.debug
used_level = logging.DEBUG

# log the subprocess output at DEBUG level.
log_subprocess = subprocess_logger.debug

env = os.environ.copy()
if extra_environ:
env.update(extra_environ)

# Whether the subprocess will be visible in the console.
showing_subprocess = subprocess_logger.getEffectiveLevel() <= used_level
showing_subprocess = True

command_desc = format_command_args(cmd)
try:
Expand Down Expand Up @@ -786,9 +767,9 @@ def get_revision(cls, location):
def run_command(
cls,
cmd, # type: Union[List[str], CommandArgs]
show_stdout=True, # type: bool
cwd=None, # type: Optional[str]
on_returncode='raise', # type: str
extra_environ=None, # type: Optional[Mapping[str, Any]]
extra_ok_returncodes=None, # type: Optional[Iterable[int]]
log_failed_cmd=True # type: bool
):
Expand All @@ -800,8 +781,9 @@ def run_command(
"""
cmd = make_command(cls.name, *cmd)
try:
return call_subprocess(cmd, show_stdout, cwd,
return call_subprocess(cmd, cwd,
on_returncode=on_returncode,
extra_environ=extra_environ,
extra_ok_returncodes=extra_ok_returncodes,
log_failed_cmd=log_failed_cmd)
except OSError as e:
Expand Down

0 comments on commit 94882fd

Please sign in to comment.