35
35
from MAVProxy .modules .lib import wxsettings
36
36
from MAVProxy .modules .lib .graphdefinition import GraphDefinition
37
37
from lxml import objectify
38
- import pkg_resources
38
+ try :
39
+ import importlib
40
+ import importlib .resources
41
+ except ImportError :
42
+ pass
39
43
from builtins import input
40
44
import datetime
41
45
import matplotlib
@@ -353,8 +357,28 @@ def load_graphs():
353
357
if graphs :
354
358
mestate .graphs .extend (graphs )
355
359
mestate .console .writeln ("Loaded %s" % file )
360
+
356
361
# also load the built in graphs
362
+ load_built_in_graphs ()
363
+
364
+ mestate .graphs = sorted (mestate .graphs , key = lambda g : g .name )
365
+
366
+ def load_built_in_graphs ():
367
+ '''load graph definitions from packaged resources'''
357
368
try :
369
+ dlist = importlib .resources .files ("MAVProxy.tools.graphs" )
370
+ for f in dlist .iterdir ():
371
+ raw = importlib .resources .files ("MAVProxy.tools.graphs" ).joinpath (f ).open ('r' ).read ()
372
+ graphs = load_graph_xml (raw , None )
373
+ if graphs :
374
+ mestate .graphs .extend (graphs )
375
+ mestate .console .writeln ("Loaded %s" % f )
376
+ return
377
+ except Exception :
378
+ pass
379
+
380
+ try :
381
+ import pkg_resources
358
382
dlist = pkg_resources .resource_listdir ("MAVProxy" , "tools/graphs" )
359
383
for f in dlist :
360
384
raw = pkg_resources .resource_stream ("MAVProxy" , "tools/graphs/%s" % f ).read ()
@@ -371,7 +395,6 @@ def load_graphs():
371
395
if graphs :
372
396
mestate .graphs .extend (graphs )
373
397
mestate .console .writeln ("Loaded %s" % f )
374
- mestate .graphs = sorted (mestate .graphs , key = lambda g : g .name )
375
398
376
399
def flightmode_colours ():
377
400
'''return mapping of flight mode to colours'''
@@ -1554,9 +1577,21 @@ def progress_bar(pct):
1554
1577
1555
1578
if args .version :
1556
1579
#pkg_resources doesn't work in the windows exe build, so read the version file
1580
+ version = None
1557
1581
try :
1558
- version = pkg_resources .require ("mavproxy" )[0 ].version
1582
+ import importlib .metadata
1583
+ version = importlib .metadata .version ("mavproxy" )
1559
1584
except Exception as e :
1585
+ pass
1586
+
1587
+ if version is None :
1588
+ try :
1589
+ import pkg_resources
1590
+ version = pkg_resources .require ("mavproxy" )[0 ].version
1591
+ except Exception :
1592
+ pass
1593
+
1594
+ if version is None :
1560
1595
start_script = mp_util .dot_mavproxy ("version.txt" )
1561
1596
f = open (start_script , 'r' )
1562
1597
version = f .readline ()
0 commit comments