From 56795c5083cb14b85f6e62c759df5fc8da1aa5f2 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 1 Apr 2022 17:20:20 -0500 Subject: [PATCH] Addon Manager: Move optional dep check logic --- src/Mod/AddonManager/AddonManager.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py index efdd1cbd1b..082eaf9354 100644 --- a/src/Mod/AddonManager/AddonManager.py +++ b/src/Mod/AddonManager/AddonManager.py @@ -958,13 +958,14 @@ class CommandAddonManager: self.wbs = [] for dep in deps.internal_workbenches: if dep.lower() + "workbench" not in wbs: - if dep == "Plot": + if dep.lower() == "plot": # Special case for plot, which is no longer a full workbench: try: __import__("Plot") except ImportError: # Plot might fail for a number of reasons self.wbs.append(dep) + FreeCAD.Console.PrintLog("Failed to import Plot module") else: self.wbs.append(dep) @@ -982,15 +983,7 @@ class CommandAddonManager: try: __import__(py_dep) except ImportError: - allowed = False - for dep in python_required: - if dep in self.allowed_packages: - allowed = True - break - if allowed: - self.python_optional.append(py_dep) - else: - FreeCAD.Console.PrintWarning(translate("AddonsInstaller", "Specified optional package {} is not in the allowed packages list").format(py_dep)) + self.python_optional.append(py_dep) self.wbs.sort() self.external_addons.sort() @@ -1099,6 +1092,14 @@ class CommandAddonManager: missing = CommandAddonManager.MissingDependencies(repo, self.item_model.repos) if self.handle_disallowed_python(missing.python_required): return + + good_packages = [] + for dep in missing.python_optional: + if dep in self.allowed_packages: + good_packages.append(dep) + else: + FreeCAD.Console.PrintWarning(translate("AddonsInstaller", "Optional dependency on {} ignored because it is not in the allow-list\n").format(dep)) + missing.python_optional = good_packages if missing.wbs: # Unrecoverable failure, needs a new version of FreeCAD installation