def download_package(clazz, system, full_version, debug=False): 'Download the major.minor.revision full version of python to a temporary file.' if check.is_string(full_version): full_version = python_version(full_version) check.check_python_version(full_version) url = clazz.find_package_url(system, full_version) return clazz._downlod_url(url, debug=False)
def _brew_formula_to_python_version(clazz, brew_version): check.check_string(brew_version) f = re.findall(r'^python\@(\d\.\d)$', brew_version) if not f: return None if len(f) != 1: return None return python_version(f[0])
def possible_package_urls(clazz, system, full_version): 'Return the package url for a specific version of python for system.' if check.is_string(full_version): full_version = python_version(full_version) check.check_python_version(full_version) source = python_source.find_impl(system) filenames = source.possible_python_dot_org_installer_filenames( full_version) return [url_compat.urljoin(clazz._BASE_URL, f) for f in filenames]
def _full_version_for_url(clazz, url): 'Download the major.minor.revision full version of python to a temporary file.' f = re.findall( r'^https://www.python.org/ftp/python/(\d+\.\d+\.\d+)/.*$', url) if not f: return None if len(f) != 1: return None return python_version(f[0])
def test_major_version(self): self.assertEqual(python_version('1'), python_version('1.2.3').major_version) self.assertEqual(python_version('1'), python_version('1.2').major_version) self.assertEqual(python_version('1'), python_version('1').major_version)
def _download_available_index(clazz): 'Download and parse the available python version index.' response = url_util.get('https://www.python.org/ftp/python/') content = response.content.decode('utf-8') lines = text_line_parser.parse_lines(content, strip_comments=False, strip_text=True, remove_empties=True) result = python_version_list() for line in lines: f = re.findall(r'^.*href=\"(\d+\.\d+.*)\/\".*$', line) if len(f) == 1: v = python_version(f[0]) if v.is_full_version(): result.append(v) return result
def test___str__(self): self.assertEqual('1.2.3', str(python_version('1.2.3'))) self.assertEqual('1.2', str(python_version('1.2'))) self.assertEqual('1', str(python_version('1')))
def test_join_parts(self): self.assertEqual('6', python_version('6').join_parts('')) self.assertEqual('67', python_version('6.7').join_parts('')) self.assertEqual('678', python_version('6.7.8').join_parts(''))
def test_major(self): self.assertEqual(6, python_version('6').major) self.assertEqual(6, python_version('6.7').major) self.assertEqual(6, python_version('6.8').major)
def test_is_major_version(self): self.assertTrue(python_version('6').is_major_version()) self.assertFalse(python_version('6.7.8').is_major_version()) self.assertFalse(python_version('6.7').is_major_version())
def test_full_version(self): self.assertEqual(python_version('1.2.3'), python_version('1.2.3').full_version)
def test_parts(self): self.assertEqual((1, 2, 3), python_version('1.2.3').parts) self.assertEqual((1, 2), python_version('1.2').parts) self.assertEqual((1, ), python_version('1').parts)
def test___eq__(self): self.assertTrue(python_version('1.2.3') == python_version('1.2.3')) self.assertFalse(python_version('1.2.3') == python_version('1.2.4'))
def test___len__(self): self.assertEqual(3, len(python_version('1.2.3'))) self.assertEqual(2, len(python_version('1.2'))) self.assertEqual(1, len(python_version('1')))
def _make_filter_by_major_version_list(clazz, s, v): l = clazz._make_list(s) return l.filter_by_major_version(python_version(v))
def _make_list(clazz, s): parts = [p for p in s.split(' ') if p] return python_version_list([python_version(p) for p in parts])