Skip to content

Commit 367f147

Browse files
authored
Merge pull request #214 from QualiSystems/replace-xmlrpc-with-requests
Replace xmlrpc with requests
2 parents 67b6e35 + 11e8f65 commit 367f147

File tree

4 files changed

+52
-50
lines changed

4 files changed

+52
-50
lines changed

shellfoundry/utilities/__init__.py

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,9 @@
22
# -*- coding: utf-8 -*-
33

44
import json
5-
import ssl
65

76
import pkg_resources
8-
9-
try:
10-
# Python 2.x version
11-
from xmlrpclib import ProtocolError, ServerProxy
12-
except ImportError:
13-
# Python 3.x version
14-
from xmlrpc.client import ProtocolError, ServerProxy
7+
import requests
158

169
try:
1710
from urllib import urlopen
@@ -43,9 +36,6 @@ def __init__(self, url):
4336
self.url = url
4437

4538

46-
PyPI = Index("https://pypi.python.org/pypi/")
47-
48-
4939
def get_installed_version(package_name):
5040
return pkg_resources.get_distribution(package_name).version
5141

@@ -74,20 +64,20 @@ def is_index_version_greater_than_current():
7464

7565
def max_version_from_index():
7666
try:
77-
ctx = ssl.SSLContext(protocol=ssl.PROTOCOL_SSLv23)
78-
proxy = ServerProxy(PyPI.url, context=ctx)
79-
releases = proxy.package_releases(PACKAGE_NAME)
80-
max_version = max(releases)
81-
return max_version
82-
except ProtocolError as err:
83-
raise ShellFoundryVersionException(
84-
"Cannot retrieve latest shellfoundry version, "
85-
"are you offline? Error: {}".format(err)
86-
)
67+
url = "https://pypi.org/pypi/{}/json".format(PACKAGE_NAME)
68+
r = requests.get(url)
69+
if r.status_code != requests.codes.ok:
70+
raise ShellFoundryVersionException(
71+
"Cannot retrieve latest shellfoundry version, " "are you offline?"
72+
)
73+
else:
74+
content = json.loads(r.content)
75+
max_version = content["info"]["version"]
76+
return max_version
8777
except Exception as err:
8878
raise ShellFoundryVersionException(
89-
"Unexpected error during shellfoundry version check. "
90-
"Error: {}.".format(err)
79+
"Cannot retrieve latest shellfoundry version, "
80+
"are you offline? Error: {}".format(err.message)
9181
)
9282

9383

shellfoundry/utilities/template_retriever.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111
import requests
1212
import yaml
1313
from pkg_resources import parse_version
14-
from pkg_resources._vendor.packaging.version import Version
14+
15+
try:
16+
from pkg_resources._vendor.packaging.version import Version
17+
except ImportError:
18+
from packaging.version import Version
1519

1620
from .filters import CompositeFilter
1721

tests/test_utilities/test_versions.py

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/python
22
import unittest
3-
from unittest.mock import MagicMock, patch
3+
from unittest.mock import Mock, patch
44

55
from shellfoundry.utilities import is_index_version_greater_than_current
66

@@ -10,18 +10,18 @@
1010
class TestVersionsHelpers(unittest.TestCase):
1111
def test_current_version_greater_than_index(self):
1212
# Arrange
13-
releases = {
14-
"0.2.7": "data",
15-
"0.2.8": "some other data",
16-
"1.0.0": "amazing data",
17-
}
18-
19-
server_proxy = MagicMock(package_releases=MagicMock(return_value=releases))
13+
return_json = """{
14+
"info":{
15+
"version":"1.0.0"
16+
}}"""
17+
get_response = Mock()
18+
get_response.status_code = 200
19+
get_response.content = return_json
2020

2121
# Act
2222
with patch(
2323
"shellfoundry.utilities.get_installed_version", return_value="1.0.0"
24-
), patch("shellfoundry.utilities.ServerProxy", return_value=server_proxy):
24+
), patch("shellfoundry.utilities.requests.get", return_value=get_response):
2525
(
2626
is_greater_version,
2727
is_major_release,
@@ -33,14 +33,18 @@ def test_current_version_greater_than_index(self):
3333

3434
def test_current_version_lower_than_index_by_a_patch(self):
3535
# Arrange
36-
releases = {"0.2.7": "data", "0.2.8": "some other data"}
37-
38-
server_proxy = MagicMock(package_releases=MagicMock(return_value=releases))
36+
return_json = """{
37+
"info":{
38+
"version":"0.2.8"
39+
}}"""
40+
get_response = Mock()
41+
get_response.status_code = 200
42+
get_response.content = return_json
3943

4044
# Act
4145
with patch(
4246
"shellfoundry.utilities.get_installed_version", return_value="0.2.7"
43-
), patch("shellfoundry.utilities.ServerProxy", return_value=server_proxy):
47+
), patch("shellfoundry.utilities.requests.get", return_value=get_response):
4448
(
4549
is_greater_version,
4650
is_major_release,
@@ -52,18 +56,18 @@ def test_current_version_lower_than_index_by_a_patch(self):
5256

5357
def test_current_version_lower_than_index_by_a_major(self):
5458
# Arrange
55-
releases = {
56-
"0.2.7": "data",
57-
"0.2.8": "some other data",
58-
"1.0.0": "amazing data",
59-
}
60-
61-
server_proxy = MagicMock(package_releases=MagicMock(return_value=releases))
59+
return_json = """{
60+
"info":{
61+
"version":"1.0.0"
62+
}}"""
63+
get_response = Mock()
64+
get_response.status_code = 200
65+
get_response.content = return_json
6266

6367
# Act
6468
with patch(
6569
"shellfoundry.utilities.get_installed_version", return_value="0.2.7"
66-
), patch("shellfoundry.utilities.ServerProxy", return_value=server_proxy):
70+
), patch("shellfoundry.utilities.requests.get", return_value=get_response):
6771
(
6872
is_greater_version,
6973
is_major_release,
@@ -75,14 +79,18 @@ def test_current_version_lower_than_index_by_a_major(self):
7579

7680
def test_current_version_is_equal_to_index_version(self):
7781
# Arrange
78-
releases = {"0.2.7": "data"}
79-
80-
server_proxy = MagicMock(package_releases=MagicMock(return_value=releases))
82+
return_json = """{
83+
"info":{
84+
"version":"0.2.7"
85+
}}"""
86+
get_response = Mock()
87+
get_response.status_code = 200
88+
get_response.content = return_json
8189

8290
# Act
8391
with patch(
8492
"shellfoundry.utilities.get_installed_version", return_value="0.2.7"
85-
), patch("shellfoundry.utilities.ServerProxy", return_value=server_proxy):
93+
), patch("shellfoundry.utilities.requests.get", return_value=get_response):
8694
(
8795
is_greater_version,
8896
is_major_release,

version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.2.25
1+
1.2.26

0 commit comments

Comments
 (0)