| ... |
... |
@@ -24,17 +24,21 @@ def get_package_type(module: ruamel.yaml.comments.CommentedMap) -> str: |
|
24
|
24
|
return 'sdist'
|
|
25
|
25
|
|
|
26
|
26
|
def get_current_version(module: ruamel.yaml.comments.CommentedMap
|
|
27
|
|
- ) -> Optional[str]:
|
|
|
27
|
+ ) -> tuple[Optional[str], Optional[str]]:
|
|
28
|
28
|
name = module['name'].replace('python3-','')
|
|
29
|
29
|
url = module['sources'][0]['url']
|
|
30
|
30
|
if url.endswith('.git'):
|
|
31
|
|
- return None
|
|
|
31
|
+ return None, None
|
|
32
|
32
|
file_name = url.split('/')[-1]
|
|
33
|
33
|
file_name = file_name.replace(name, '')
|
|
34
|
|
- return file_name.split('-')[1].replace('.tar.gz', '')
|
|
|
34
|
+ parts = file_name.split('-')
|
|
|
35
|
+ pkg_version = parts[1].replace('.tar.gz', '')
|
|
|
36
|
+ py_version = parts[2] if '.tar.gz' not in parts[1] else None
|
|
|
37
|
+ return pkg_version, py_version
|
|
35
|
38
|
|
|
36
|
39
|
def get_latest_version(package_name: str,
|
|
37
|
|
- package_type: str
|
|
|
40
|
+ package_type: str,
|
|
|
41
|
+ py_version: Optional[str]
|
|
38
|
42
|
) -> tuple[str, Optional[str]]:
|
|
39
|
43
|
with urlopen(f'{PYPI_INDEX}/{package_name}/json') as f:
|
|
40
|
44
|
data = f.read()
|
| ... |
... |
@@ -42,10 +46,13 @@ def get_latest_version(package_name: str, |
|
42
|
46
|
version = d['info']['version']
|
|
43
|
47
|
sha = None
|
|
44
|
48
|
for entry in d['releases'][version]:
|
|
45
|
|
- if entry['packagetype'] == package_type:
|
|
46
|
|
- if sha is not None:
|
|
47
|
|
- return version, None
|
|
48
|
|
- sha = entry['digests']['sha256']
|
|
|
49
|
+ if entry['packagetype'] != package_type:
|
|
|
50
|
+ continue
|
|
|
51
|
+ if py_version is not None and entry['python_version'] != py_version:
|
|
|
52
|
+ continue
|
|
|
53
|
+ if sha is not None:
|
|
|
54
|
+ return version, None
|
|
|
55
|
+ sha = entry['digests']['sha256']
|
|
49
|
56
|
return version, sha
|
|
50
|
57
|
|
|
51
|
58
|
def update_module(module: ruamel.yaml.comments.CommentedMap) -> None:
|
| ... |
... |
@@ -54,12 +61,12 @@ def update_module(module: ruamel.yaml.comments.CommentedMap) -> None: |
|
54
|
61
|
return
|
|
55
|
62
|
|
|
56
|
63
|
package_type = get_package_type(module)
|
|
57
|
|
- current_version = get_current_version(module)
|
|
|
64
|
+ current_version, py_version = get_current_version(module)
|
|
58
|
65
|
if current_version is None:
|
|
59
|
66
|
return
|
|
60
|
67
|
|
|
61
|
68
|
name = module['name'].replace('python3-','')
|
|
62
|
|
- latest_version, sha = get_latest_version(name, package_type)
|
|
|
69
|
+ latest_version, sha = get_latest_version(name, package_type, py_version)
|
|
63
|
70
|
|
|
64
|
71
|
if current_version == latest_version:
|
|
65
|
72
|
return
|