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: