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}")