Blob Blame History Raw
import pathlib
import sys

try:
    SOURCES = pathlib.Path(sys.argv[1])
except IndexError:
    sys.exit(
        "Requires directory with prepped sources as argument, e.g. setuptools-47.1.1"
    )
VENDOR_FILE = SOURCES / "pkg_resources/_vendor/vendored.txt"


def convert_version(version):
    for pre in "a", "b", "rc", "dev":
        if pre in version:
            version, rel, relnum = version.partition(pre)
            break
    else:
        rel = relnum = ""

    while version.endswith(".0"):
        version = version[:-2]

    if rel == "dev":
        return f"{version}~~{rel}{relnum}"
    if rel:
        return f"{version}~{rel}{relnum}"
    return version


provides = set()

for line in VENDOR_FILE.read_text().splitlines():
    line, *_ = line.partition("#")
    line = line.strip()
    if line:
        name, _, version = line.partition("==")
        version = convert_version(version)
        provides.add(f"Provides: bundled(python3dist({name})) = {version}")

# When used standalone, we print, when with argument, we assert
if len(sys.argv) == 2:
    for provide in sorted(provides):
        print(provide)
else:
    expected = set(sys.argv[2].splitlines())
    expected.discard("")
    if provides != expected:
        sys.exit(f"{provides} != {expected}")