#!/usr/bin/python3.12 import os import re import sys import subprocess from ruamel.yaml import YAML syspath = sys.path sys.path = [path for path in sys.path if not (path == os.getcwd() or path == ".")] yaml = YAML(typ='safe') mytestdata = yaml.load("""\ test: environment: contents: packages: - busybox pipeline: - uses: py/pip-check """) for f in sys.argv[1:]: yaml2 = YAML() with open(f, "rb") as fp: content = fp.read() y = yaml2.load(content) #if "data" in y: # if "items" in y["data"][0]: # v = y["data"][0]["items"].get(3.1) # if v is not None: # y["data"][0]["items"]["3.10"] = v # del y["data"][0]["items"][3.1] ops = [] pyver = False if "data" in y: n = -1 for i, d in enumerate(y["data"]): if d["name"] == "py-versions": if "313" in d["items"].values(): break pyver = True n = i break if n >= 0: y["data"][n]["items"][3.13] = "313" ops.append("py-versions") if pyver and "subpackages" in y: n = -1 found = False bname = "${{vars.pypi-package}}" for i, sp in enumerate(y["subpackages"]): if sp.get("name").startswith("py3-supported-"): print("got it: %s" % (sp.get("name"))) if "dependencies" not in sp: sp["dependencies"] = {} if "runtime" in sp["dependencies"]: bnmatch = re.match("py3.[0-9]+-(.*)$", sp["dependencies"]["runtime"][0]) if bnmatch: bname = bnmatch.groups()[0] n = i break deps = ["py%s-%s" % (v, bname) for v in ["3.10", "3.11", "3.12", "3.13"]] supsub = { "name": "py3-supported-${{vars.pypi-package}}", "description" : "meta package providing ${{vars.pypi-package}} for supported python versions.", "dependencies": {"runtime": deps} } if n > 0: y["subpackages"][n]["dependencies"]["runtime"] = deps y["subpackages"][n]["dependencies"]["runtime"].sort() ops.append("update-supported") else: y["subpackages"].append(supsub) ops.append("new-supported") print("%s: %s" % (f, ops)) if len(ops): with open(f, "w") as fp: yaml2.dump(y, fp) subprocess.check_output(["yam", f]) subprocess.check_output(["wolfictl", "bump", f])