From a81b83fa8b2e105e6b6e80a1c12e883398402db9 Mon Sep 17 00:00:00 2001 From: Noah Gorny Date: Sat, 16 Jan 2021 01:00:27 +0200 Subject: [PATCH] cmdoptions: Check if format_control exists before accessing it Fixes a case when per-setup.py options are specified in a requirement file, and we are trying to invoke uninstall --- news/9444.bugfix.rst | 1 + src/pip/_internal/cli/cmdoptions.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 news/9444.bugfix.rst diff --git a/news/9444.bugfix.rst b/news/9444.bugfix.rst new file mode 100644 index 00000000000..4cba93e42ff --- /dev/null +++ b/news/9444.bugfix.rst @@ -0,0 +1 @@ +Permit ``pip uninstall -r`` to accept requirements files containing ``--install-option`` or ``--global-option``. diff --git a/src/pip/_internal/cli/cmdoptions.py b/src/pip/_internal/cli/cmdoptions.py index 24dc9d14107..46cb229f83a 100644 --- a/src/pip/_internal/cli/cmdoptions.py +++ b/src/pip/_internal/cli/cmdoptions.py @@ -75,8 +75,9 @@ def getname(n): return getattr(check_options, n, None) names = ["build_options", "global_options", "install_options"] - if any(map(getname, names)): - control = options.format_control + + control = getattr(options, "format_control", None) + if control and any(map(getname, names)): control.disallow_binaries() warnings.warn( "Disabling all use of wheels due to the use of --build-option "