From def75dc6917ed26606b0a6be0f1bdac1ce6a7fd8 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 6 Mar 2020 12:53:54 -0500 Subject: [PATCH] Fix issue where format_map isn't available on Python 2 --- src/pip/_internal/cli/progress_bars.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/pip/_internal/cli/progress_bars.py b/src/pip/_internal/cli/progress_bars.py index 4647f8726..b45d176df 100644 --- a/src/pip/_internal/cli/progress_bars.py +++ b/src/pip/_internal/cli/progress_bars.py @@ -14,7 +14,7 @@ from pip._internal.utils.misc import format_size from pip._internal.utils.typing import MYPY_CHECK_RUNNING if MYPY_CHECK_RUNNING: - from typing import Any, Dict, List + from typing import Any, Dict, Iterator, List, Tuple try: from pip._vendor import colorama @@ -247,18 +247,22 @@ class DownloadProgressSpinner(WindowsMixin, InterruptibleMixin, def update(self): # type: () -> None - vals = dict( - downloaded=self.downloaded, - download_speed=self.download_speed, - pretty_eta=self.pretty_eta, - percent=self.percent, - ) + vals = dict(self._load_vals( + 'downloaded', 'download_speed', 'pretty_eta', 'percent')) message = self.message.format(**vals) phase = self.next_phase() suffix = self.suffix.format(**vals) line = " ".join(filter(None, (message, phase, suffix))) self.writeln(line) + def _load_vals(self, *names): + # type: (*str) -> Iterator[Tuple[str, Any]] + for name in names: + try: + yield name, getattr(self, name) + except Exception: + pass + BAR_TYPES = { "off": (DownloadSilentBar, DownloadSilentBar),