Skip to content
Merged
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
18 changes: 12 additions & 6 deletions .actions/assistant.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import os
import re
import shutil
from distutils.version import LooseVersion, StrictVersion
from distutils.version import LooseVersion
from importlib.util import module_from_spec, spec_from_file_location
from itertools import chain
from pathlib import Path
Expand All @@ -16,6 +16,7 @@

import fire
import pkg_resources
from packaging.version import parse as version_parse

REQUIREMENT_FILES = {
"pytorch": (
Expand All @@ -30,15 +31,20 @@
PACKAGE_MAPPING = {"app": "lightning-app", "pytorch": "pytorch-lightning"}


def pypi_versions(package_name: str) -> List[str]:
"""Return a list of released versions of a provided pypi name."""
def pypi_versions(package_name: str, drop_pre: bool = True) -> List[str]:
"""Return a list of released versions of a provided pypi name.

>>> _ = pypi_versions("lightning_app", drop_pre=False)
"""
# https://stackoverflow.com/a/27239645/4521646
url = f"https://pypi.org/pypi/{package_name}/json"
data = json.load(urlopen(Request(url)))
versions = list(data["releases"].keys())
# todo: drop this line after cleaning Pypi history from invalid versions
versions = list(filter(lambda v: v.count(".") == 2 and "rc" not in v, versions))
versions.sort(key=StrictVersion)
versions = list(filter(lambda v: v.count(".") == 2, versions))
if drop_pre:
versions = list(filter(lambda v: all(c not in v for c in ["rc", "dev"]), versions))
versions.sort(key=version_parse)
return versions


Expand Down Expand Up @@ -122,7 +128,7 @@ def download_package(package: str, folder: str = ".", version: Optional[str] = N
url = f"https://pypi.org/pypi/{PACKAGE_MAPPING[package]}/json"
data = json.load(urlopen(Request(url)))
if not version:
pypi_vers = pypi_versions(PACKAGE_MAPPING[package])
pypi_vers = pypi_versions(PACKAGE_MAPPING[package], drop_pre=False)
version = pypi_vers[-1]
releases = list(filter(lambda r: r["packagetype"] == "sdist", data["releases"][version]))
assert releases, f"Missing 'sdist' for this package/version aka {package}/{version}"
Expand Down