From b95852c8a9af96f51a3e4b12df7ba3814b6046da Mon Sep 17 00:00:00 2001 From: M G Berberich Date: Mon, 21 Jun 2021 12:50:31 +0200 Subject: [PATCH] AddonManager: parse addonflags.json with json module Parses addonflags.json with the python json-module instead of using regular expressions. --- src/Mod/AddonManager/addonmanager_workers.py | 24 ++++++++------------ 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/Mod/AddonManager/addonmanager_workers.py b/src/Mod/AddonManager/addonmanager_workers.py index 611299b04f..d1c1575e03 100644 --- a/src/Mod/AddonManager/addonmanager_workers.py +++ b/src/Mod/AddonManager/addonmanager_workers.py @@ -25,6 +25,7 @@ import os import re import shutil import sys +import json from PySide import QtCore, QtGui @@ -107,21 +108,16 @@ class UpdateWorker(QtCore.QThread): u = utils.urlopen("https://raw.githubusercontent.com/FreeCAD/FreeCAD-addons/master/addonflags.json") if u: p = u.read() - if sys.version_info.major >= 3 and isinstance(p, bytes): - p = p.decode("utf-8") u.close() - hit = re.findall(r'"obsolete"[^\{]*?{[^\{]*?"Mod":\[(?P[^\[\]]+?)\]}', - p.replace("\n", "").replace(" ", "")) - if hit: - obsolete = hit[0].replace('"', "").split(",") - hit = re.findall(r'"blacklisted"[^\{]*?{[^\{]*?"Macro":\[(?P[^\[\]]+?)\]}', - p.replace("\n", "").replace(" ", "")) - if hit: - macros_blacklist = hit[0].replace('"', "").split(",") - hit = re.findall(r'"py2only"[^\{]*?{[^\{]*?"Mod":\[(?P[^\[\]]+?)\]}', - p.replace("\n", "").replace(" ", "")) - if hit: - py2only = hit[0].replace('"', "").split(",") + j = json.loads(p) + if "obsolete" in j and "Mod" in j["obsolete"]: + obsolete = j["obsolete"]["Mod"] + + if "blacklisted" in j and "Macro" in j["blacklisted"]: + macros_blacklist = j["blacklisted"]["Macro"] + + if "py2only" in j and "Mod" in j["py2only"]: + py2only = j["py2only"]["Mod"] else: print("Debug: addon_flags.json not found")