aider/scripts/yank-old-versions.py

46 lines
1.6 KiB
Python

import requests
from packaging import version
from packaging.specifiers import SpecifierSet
def get_versions_supporting_python38(package_name):
# Fetch package information from PyPI
url = f"https://pypi.org/pypi/{package_name}/json"
response = requests.get(url)
if response.status_code != 200:
print(f"Failed to fetch data for {package_name}")
return []
data = response.json()
compatible_versions = []
for release, release_data in data['releases'].items():
if not release_data: # Skip empty releases
continue
# Check the 'requires_python' field
requires_python = release_data[0].get('requires_python')
if requires_python is None:
# If 'requires_python' is not specified, assume it's compatible
compatible_versions.append(release)
else:
# Parse the requires_python specifier
try:
spec = SpecifierSet(requires_python)
if version.parse("3.8") in spec:
compatible_versions.append(release)
except ValueError:
print(f"Invalid requires_python specifier for version {release}: {requires_python}")
return compatible_versions
def main():
package_name = "aider-chat" # Replace with your package name
compatible_versions = get_versions_supporting_python38(package_name)
print(f"Versions of {package_name} compatible with Python 3.8 or lower:")
for v in compatible_versions:
print(v)
if __name__ == "__main__":
main()