Skip to content

Commit 0a1e5cd

Browse files
committed
mavproxy_help: fix for xmlrpc no longer being available
1 parent 66ae605 commit 0a1e5cd

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

Diff for: MAVProxy/modules/mavproxy_help.py

+34-30
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
"""
66
import platform
77
import re
8-
import socket
9-
import sys
8+
import requests
109

1110
from MAVProxy.modules.lib import mp_util
1211
from MAVProxy.modules.lib import mp_module
@@ -17,12 +16,6 @@
1716
from MAVProxy.modules.lib.mp_menu import MPMenuOpenWeblink
1817
from MAVProxy.modules.lib.mp_menu import MPMenuChildMessageDialog
1918

20-
if sys.version_info.major < 3:
21-
import xmlrpclib
22-
else:
23-
basestring = str
24-
import xmlrpc.client as xmlrpclib
25-
2619

2720
class HelpModule(mp_module.MPModule):
2821
def __init__(self, mpstate):
@@ -48,27 +41,7 @@ def __init__(self, mpstate):
4841
self.wxVersion = ''
4942

5043
# check for updates, if able
51-
pypi = xmlrpclib.ServerProxy('https://pypi.python.org/pypi')
52-
available = None
53-
try:
54-
available = pypi.package_releases('MAVProxy')
55-
except socket.gaierror:
56-
pass
57-
58-
if available:
59-
self.newversion = available[0]
60-
else:
61-
self.newversion = 'Error finding update'
62-
63-
# and format the update string
64-
if not isinstance(self.newversion, basestring):
65-
self.newversion = "Error finding update"
66-
elif re.search('[a-zA-Z]', self.newversion):
67-
self.newversion = "Error finding update: " + self.newversion
68-
elif self.newversion.strip() == self.version.strip():
69-
self.newversion = "Running latest version"
70-
else:
71-
self.newversion = "New version " + self.newversion + " available (currently running " + self.version + ")"
44+
self.check_for_updates()
7245

7346
if mp_util.has_wxpython:
7447
self.menu_added_console = False
@@ -100,8 +73,39 @@ def __init__(self, mpstate):
10073
))
10174
])
10275

76+
def check_for_updates(self):
77+
url = "https://pypi.org/pypi/MAVProxy/json"
78+
try:
79+
response = requests.get(url)
80+
except requests.exceptions.RequestException as e:
81+
self.newversion = f"Error finding update: {e}"
82+
return
83+
84+
if response.status_code != 200:
85+
self.newversion = f"HTTP error getting update ({response.status_code})"
86+
return
87+
88+
self.newversion = response.json()['info']['version']
89+
90+
# and format the update string
91+
if not isinstance(self.newversion, str):
92+
self.newversion = "Error finding update"
93+
elif re.search('[a-zA-Z]', self.newversion):
94+
self.newversion = "Error finding update: " + self.newversion
95+
elif self.newversion.strip() == self.version.strip():
96+
self.newversion = "Running latest version"
97+
else:
98+
self.newversion = "New version " + self.newversion + " available (currently running " + self.version + ")"
99+
103100
def about_string(self):
104-
return "MAVProxy Version " + self.version + "\nOS: " + self.host + "\nPython " + self.pythonversion + "\nWXPython " + self.wxVersion # noqa
101+
bits = {
102+
"MAVProxy Version": self.version,
103+
"OS": self.host,
104+
"Python": self.pythonversion,
105+
"WXPython": self.wxVersion,
106+
"LatestVersion": self.newversion,
107+
}
108+
return "".join([f"{x[0]}: {x[1]}\n" for x in bits.items()])
105109

106110
def idle_task(self):
107111
'''called on idle'''

0 commit comments

Comments
 (0)