From 90ce00ee5834297b341ec5aa7e67c955b3c29b6d Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Tue, 1 Oct 2024 15:02:18 +1000 Subject: [PATCH 1/2] mavproxy.py: use importlib for version if available --- MAVProxy/mavproxy.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/MAVProxy/mavproxy.py b/MAVProxy/mavproxy.py index 4b8d8e3a69..e1c31410ac 100644 --- a/MAVProxy/mavproxy.py +++ b/MAVProxy/mavproxy.py @@ -1360,10 +1360,21 @@ def run_startup_scripts(): #version information if opts.version: #pkg_resources doesn't work in the windows exe build, so read the version file + version = None try: - import pkg_resources - version = pkg_resources.require("mavproxy")[0].version - except: + import importlib.metadata + version = importlib.metadata.version("mavproxy") + except ImportError: + pass + + if version is None: + try: + import pkg_resources + version = pkg_resources.require("mavproxy")[0].version + except: + pass + + if version is None: start_script = mp_util.dot_mavproxy("version.txt") f = open(start_script, 'r') version = f.readline() From 7a481107221f4feac2af337b337ef5931d35917d Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Tue, 1 Oct 2024 15:13:37 +1000 Subject: [PATCH 2/2] MAVExplorer.py: use importlib for graph definitions and version removes warnings under 3.12 --- MAVProxy/tools/MAVExplorer.py | 41 ++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/MAVProxy/tools/MAVExplorer.py b/MAVProxy/tools/MAVExplorer.py index ace647faf1..40b8a3c020 100755 --- a/MAVProxy/tools/MAVExplorer.py +++ b/MAVProxy/tools/MAVExplorer.py @@ -35,7 +35,11 @@ from MAVProxy.modules.lib import wxsettings from MAVProxy.modules.lib.graphdefinition import GraphDefinition from lxml import objectify -import pkg_resources +try: + import importlib + import importlib.resources +except ImportError: + pass from builtins import input import datetime import matplotlib @@ -353,8 +357,28 @@ def load_graphs(): if graphs: mestate.graphs.extend(graphs) mestate.console.writeln("Loaded %s" % file) + # also load the built in graphs + load_built_in_graphs() + + mestate.graphs = sorted(mestate.graphs, key=lambda g: g.name) + +def load_built_in_graphs(): + '''load graph definitions from packaged resources''' try: + dlist = importlib.resources.files("MAVProxy.tools.graphs") + for f in dlist.iterdir(): + raw = importlib.resources.files("MAVProxy.tools.graphs").joinpath(f).open('r').read() + graphs = load_graph_xml(raw, None) + if graphs: + mestate.graphs.extend(graphs) + mestate.console.writeln("Loaded %s" % f) + return + except Exception: + pass + + try: + import pkg_resources dlist = pkg_resources.resource_listdir("MAVProxy", "tools/graphs") for f in dlist: raw = pkg_resources.resource_stream("MAVProxy", "tools/graphs/%s" % f).read() @@ -371,7 +395,6 @@ def load_graphs(): if graphs: mestate.graphs.extend(graphs) mestate.console.writeln("Loaded %s" % f) - mestate.graphs = sorted(mestate.graphs, key=lambda g: g.name) def flightmode_colours(): '''return mapping of flight mode to colours''' @@ -1554,9 +1577,21 @@ def progress_bar(pct): if args.version: #pkg_resources doesn't work in the windows exe build, so read the version file + version = None try: - version = pkg_resources.require("mavproxy")[0].version + import importlib.metadata + version = importlib.metadata.version("mavproxy") except Exception as e: + pass + + if version is None: + try: + import pkg_resources + version = pkg_resources.require("mavproxy")[0].version + except Exception: + pass + + if version is None: start_script = mp_util.dot_mavproxy("version.txt") f = open(start_script, 'r') version = f.readline()