Skip to content

Commit 3c324a3

Browse files
committed
[FIX] Update checker: LooseVersion doesn't handle str parts
E.g., '3.4.1' vs '3.4.dev' crashes on 'dev' with TypeError and unorderable types.
1 parent 9ba1d91 commit 3c324a3

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

Orange/canvas/__main__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ def check_for_updates():
124124
settings.setValue('startup/last-update-check-time', int(time.time()))
125125

126126
from urllib.request import urlopen
127-
from distutils.version import LooseVersion
128127
from Orange.version import version as current
129128

130129
class GetLatestVersion(QThread):
@@ -133,12 +132,13 @@ class GetLatestVersion(QThread):
133132
def run(self):
134133
try:
135134
self.resultReady.emit(
136-
urlopen('https://orange.biolab.si/version', timeout=10).read().decode())
135+
urlopen('https://orange.biolab.si/version/', timeout=10).read().decode())
137136
except OSError:
138137
log.exception('Failed to check for updates')
139138

140139
def compare_versions(latest):
141-
if LooseVersion(latest) <= LooseVersion(current):
140+
version = pkg_resources.parse_version
141+
if version(latest) <= version(current):
142142
return
143143
question = QMessageBox(
144144
QMessageBox.Information,

Orange/tests/test_third_party.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from unittest import TestCase
2+
3+
from pkg_resources import parse_version
4+
5+
6+
class TestPkgResources(TestCase):
7+
def test_parse_version(self):
8+
self.assertGreater(parse_version('3.4.1'), parse_version('3.4.0'))
9+
self.assertGreater(parse_version('3.4.1'), parse_version('3.4.dev'))
10+
self.assertGreater(parse_version('3.4.0'), parse_version('3.4~1'))

0 commit comments

Comments
 (0)