summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbaserockimport/exts/python.to_lorry26
1 files changed, 14 insertions, 12 deletions
diff --git a/baserockimport/exts/python.to_lorry b/baserockimport/exts/python.to_lorry
index 2c57a9b..ebde27a 100755
--- a/baserockimport/exts/python.to_lorry
+++ b/baserockimport/exts/python.to_lorry
@@ -32,20 +32,11 @@ import yaml
import pkg_resources
+from importer_base import WebServiceClient
from importer_python_common import *
from utils import warn, error
import utils
-def fetch_package_metadata(package_name):
- try:
- result = requests.get('%s/%s/json' % (PYPI_URL, package_name))
-
- # raise exception if status code is not 200 OK
- result.raise_for_status()
- except Exception as e:
- error("Couldn't fetch package metadata:", e)
-
- return result.json()
def find_repo_type(url):
@@ -162,6 +153,13 @@ class PythonLorryExtension(ImportExtension):
def __init__(self):
super(PythonLorryExtension, self).__init__()
+ self.apiclient = WebServiceClient('python_api_cache')
+
+ def fetch_package_metadata(self, package_name):
+ r = self.apiclient.request('%s/%s/json' % (PYPI_URL, package_name))
+ r.raise_for_status()
+
+ return r
def run(self):
if len(sys.argv) not in [2, 3]:
@@ -187,8 +185,12 @@ class PythonLorryExtension(ImportExtension):
logging.debug('Treating %s as %s' % (package_name, new_proj_name))
package_name = new_proj_name
- metadata = fetch_package_metadata(package_name)
- info = metadata['info']
+ try:
+ metadata = self.fetch_package_metadata(package_name)
+ except Exception as e:
+ error("Couldn't fetch package metadata: ", e)
+
+ info = metadata.json()['info']
repo_type = (find_repo_type(info['home_page'])
if 'home_page' in info else None)