From 6739f56351a88add7a9e09e4eec25f691f79ec79 Mon Sep 17 00:00:00 2001 From: Paul Moore Date: Wed, 20 Jan 2021 15:42:29 +0000 Subject: [PATCH] Use our own copy of strtobool, rather than the one from distutils --- src/pip/_internal/cli/cmdoptions.py | 2 +- src/pip/_internal/cli/parser.py | 3 +-- src/pip/_internal/utils/misc.py | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/pip/_internal/cli/cmdoptions.py b/src/pip/_internal/cli/cmdoptions.py index e16f42de6..663143950 100644 --- a/src/pip/_internal/cli/cmdoptions.py +++ b/src/pip/_internal/cli/cmdoptions.py @@ -13,7 +13,6 @@ pass on state. To be consistent, all options will follow this design. import os import textwrap import warnings -from distutils.util import strtobool from functools import partial from optparse import SUPPRESS_HELP, Option, OptionGroup from textwrap import dedent @@ -27,6 +26,7 @@ from pip._internal.models.format_control import FormatControl from pip._internal.models.index import PyPI from pip._internal.models.target_python import TargetPython from pip._internal.utils.hashes import STRONG_HASHES +from pip._internal.utils.misc import strtobool from pip._internal.utils.typing import MYPY_CHECK_RUNNING if MYPY_CHECK_RUNNING: diff --git a/src/pip/_internal/cli/parser.py b/src/pip/_internal/cli/parser.py index 3bc86d9a3..60c61f30d 100644 --- a/src/pip/_internal/cli/parser.py +++ b/src/pip/_internal/cli/parser.py @@ -8,13 +8,12 @@ import optparse import shutil import sys import textwrap -from distutils.util import strtobool from pip._vendor.contextlib2 import suppress from pip._internal.cli.status_codes import UNKNOWN_ERROR from pip._internal.configuration import Configuration, ConfigurationError -from pip._internal.utils.misc import redact_auth_from_url +from pip._internal.utils.misc import redact_auth_from_url, strtobool logger = logging.getLogger(__name__) diff --git a/src/pip/_internal/utils/misc.py b/src/pip/_internal/utils/misc.py index a3bd49b91..6dd94e2fa 100644 --- a/src/pip/_internal/utils/misc.py +++ b/src/pip/_internal/utils/misc.py @@ -244,6 +244,23 @@ def ask_password(message): return getpass.getpass(message) +def strtobool(val): + # type: (str) -> int + """Convert a string representation of truth to true (1) or false (0). + + True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values + are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if + 'val' is anything else. + """ + val = val.lower() + if val in ('y', 'yes', 't', 'true', 'on', '1'): + return 1 + elif val in ('n', 'no', 'f', 'false', 'off', '0'): + return 0 + else: + raise ValueError("invalid truth value %r" % (val,)) + + def format_size(bytes): # type: (float) -> str if bytes > 1000 * 1000: