From 78330522d2ae2d2042ad9014bf3feb8dd7adfdfc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 1 Jul 2024 17:17:05 +1000 Subject: [PATCH] Fix #123877: exception showing an add-on with an invalid manifest Extensions with a manifest that can't be parsed caused can exception in the add-ons UI. Account for errors loading the manifest, falling back to dummy values & show a warning that the exceptions manifest could not be parsed. --- scripts/addons_core/bl_pkg/bl_extension_ui.py | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/scripts/addons_core/bl_pkg/bl_extension_ui.py b/scripts/addons_core/bl_pkg/bl_extension_ui.py index 47571c1a532..274a8e03ebb 100644 --- a/scripts/addons_core/bl_pkg/bl_extension_ui.py +++ b/scripts/addons_core/bl_pkg/bl_extension_ui.py @@ -435,19 +435,28 @@ def addons_panel_draw_items( if is_extension: del bl_info - item_local = addon_extension_manifest_map.get(module_name) - item_name = item_local.name - item_description = item_local.tagline - item_tags = item_local.tags - item_warning_legacy = "" - if show_expanded: - item_maintainer = item_local.maintainer - item_version = item_local.version - item_doc_url = item_local.website - item_tracker_url = "" + if (item_local := addon_extension_manifest_map.get(module_name)) is not None: + item_name = item_local.name + item_description = item_local.tagline + item_tags = item_local.tags + item_warning_legacy = "" + if show_expanded: + item_maintainer = item_local.maintainer + item_version = item_local.version + item_doc_url = item_local.website + item_tracker_url = "" - if USE_ADDON_IGNORE_EXTENSION_MANIFEST_HACK: - item_doc_url = addon_ignore_manifest_website_hack_remote_or_default(module_name, item_doc_url) + if USE_ADDON_IGNORE_EXTENSION_MANIFEST_HACK: + item_doc_url = addon_ignore_manifest_website_hack_remote_or_default(module_name, item_doc_url) + else: + item_name = module_name + item_description = "" + item_tags = () + item_warning_legacy = "Unable to parse the manifest" + item_maintainer = "" + item_version = "0.0.0" + item_doc_url = "" + item_tracker_url = "" del item_local else: