From 1b9bfc6d04adb20924159be1850ec50cbb0fb9dd Mon Sep 17 00:00:00 2001 From: donovan6000 Date: Mon, 7 Nov 2016 01:50:14 -0800 Subject: [PATCH] Inapplicable pip arguments can be blacklisted when installing or uninstalling a package --- src/octoprint/plugins/pluginmanager/__init__.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/octoprint/plugins/pluginmanager/__init__.py b/src/octoprint/plugins/pluginmanager/__init__.py index 97dfc456..7e6b96f5 100644 --- a/src/octoprint/plugins/pluginmanager/__init__.py +++ b/src/octoprint/plugins/pluginmanager/__init__.py @@ -34,6 +34,8 @@ class PluginManagerPlugin(octoprint.plugin.SimpleApiPlugin, ARCHIVE_EXTENSIONS = (".zip", ".tar.gz", ".tgz", ".tar") + pip_inapplicable_arguments = dict(uninstall=["--user"]) + def __init__(self): self._pending_enable = set() self._pending_disable = set() @@ -487,8 +489,15 @@ class PluginManagerPlugin(octoprint.plugin.SimpleApiPlugin, self._log_message(u"Installation needs to process external dependencies, that might make it take a bit longer than usual depending on the pip version") additional_args = self._settings.get(["pip_args"]) - if additional_args: - args.append(additional_args) + + if additional_args is not None: + + inapplicable_arguments = self.__class__.pip_inapplicable_arguments.get(args[0], list()) + for inapplicable_argument in inapplicable_arguments: + additional_args = re.sub("(^|\s)" + re.escape(inapplicable_argument) + "\\b", "", additional_args) + + if additional_args: + args.append(additional_args) return self._pip_caller.execute(*args)