Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions pip_upgrader/packages_status_detector.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,16 +229,36 @@ def _parse_pypi_json_package_info(self, package_name, current_version, response)
'upload_time': upload_time
}, 'success'

def _parse_simple_html_package_info(self, package_name, current_version, response):
def _get_simple_html_package_info_versions(self, package_name, response):
"""
:type package_name: str
:type current_version: version.Version
:type response: requests.models.Response
"""
pattern = r'<a.*>.*{name}-([A-z0-9\.-]*)(?:-py|\.tar).*<\/a>'.format(name=re.escape(package_name))
versions_match = re.findall(pattern, response.content.decode('utf-8'), flags=re.IGNORECASE)

all_versions = [version.parse(vers) for vers in versions_match]
return all_versions

def _parse_simple_html_package_info(self, package_name, current_version, response):
"""
:type package_name: str
:type current_version: version.Version
:type response: requests.models.Response
"""
all_versions = self._get_simple_html_package_info_versions(
package_name, response)
if not all_versions:
# print("{}: NO VERSIONS AVAILLABLE".format( package_name))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be removed

fixed_name = package_name
# if we find a dash, presume earlier name used an underscore
if '-' in package_name:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to add a test to cover this part of code

fixed_name = package_name.replace('-', '_')
all_versions = self._get_simple_html_package_info_versions(
fixed_name, response)
if not all_versions:
raise RuntimeError("Unable to retrieve versions for {}".format(package_name))

filtered_versions = [vers for vers in all_versions if not vers.is_prerelease and not vers.is_postrelease]

if not filtered_versions: # pragma: nocover
Expand Down