目的
python処理系をバージョンアップしようかと思った時、使ってる又は使いたいライブラリーが対応できているかが気になる。
その確認のためのスクリプトを作成した。
対象
pypiで、そのライブラリーのjsonデータの"Classifiers" セクションで対応バージョンが記述されているライブラリーのみが以下のスクリプトで調べることができる。
コード
import json
import requests
import re
def get_latest_python_version(package_name):
url = f"https://pypi.org/pypi/{package_name}/json"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
classifiers = data.get('info', {}).get('classifiers', [])
version = set()
for classifier in classifiers:
m = re.search(r"Programming Language :: Python ::\s*(\d\S*)$" , classifier)
if m is not None:
v = m.group(1)
# version |= {v}
version.add(v)
if version:
return version
raise ValueError(f"Could not find classifiers data for {package_name}")
def applicable_python_version(pkg_names):
V = []
for pkg in pkg_names:
V.append(get_latest_python_version(pkg))
S = V[0]
S.intersection_update(*V[1:])
return S
使用例
applicable_python_version(["numpy","scipy","pandas", "xlwings"])
# --> {'3', '3.10', '3.11', '3.9'}