Browse Source

scanpypi: rework download_package error handling

Some packages don't provide source archive but only a wheel file. In
this case download variable is not defined. So define this variable at
the very beginning and check whether it is None after searching for
source archives in the metadata.

Bonus: fix PEP8 issue with wrong indentation.

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Yegor Yefremov 7 years ago
parent
commit
fb775f4c87
1 changed files with 9 additions and 5 deletions
  1. 9 5
      utils/scanpypi

+ 9 - 5
utils/scanpypi

@@ -178,6 +178,7 @@ class BuildrootPackage():
         """
         """
         Download a package using metadata from pypi
         Download a package using metadata from pypi
         """
         """
+        download = None
         try:
         try:
             self.metadata['urls'][0]['filename']
             self.metadata['urls'][0]['filename']
         except IndexError:
         except IndexError:
@@ -201,7 +202,7 @@ class BuildrootPackage():
                 continue
                 continue
             try:
             try:
                 print('Downloading package {pkg} from {url}...'.format(
                 print('Downloading package {pkg} from {url}...'.format(
-                      pkg=self.real_name, url=download_url['url']))
+                    pkg=self.real_name, url=download_url['url']))
                 download = six.moves.urllib.request.urlopen(download_url['url'])
                 download = six.moves.urllib.request.urlopen(download_url['url'])
             except six.moves.urllib.error.HTTPError as http_error:
             except six.moves.urllib.error.HTTPError as http_error:
                 download = http_error
                 download = http_error
@@ -213,11 +214,14 @@ class BuildrootPackage():
                 self.md5_sum = hashlib.md5(self.as_string).hexdigest()
                 self.md5_sum = hashlib.md5(self.as_string).hexdigest()
                 if self.md5_sum == download_url['digests']['md5']:
                 if self.md5_sum == download_url['digests']['md5']:
                     break
                     break
-        else:
-            if download.__class__ == six.moves.urllib.error.HTTPError:
-                raise download
-            raise DownloadFailed('Failed to download package {pkg}'
+
+        if download is None:
+            raise DownloadFailed('Failed to download package {pkg}: '
+                                 'No source archive available'
                                  .format(pkg=self.real_name))
                                  .format(pkg=self.real_name))
+        elif download.__class__ == six.moves.urllib.error.HTTPError:
+            raise download
+
         self.filename = self.used_url['filename']
         self.filename = self.used_url['filename']
         self.url = self.used_url['url']
         self.url = self.used_url['url']