diff --git a/make.py b/make.py index d66a5213..f4706dc2 100644 --- a/make.py +++ b/make.py @@ -12,9 +12,7 @@ import subprocess import sys from pathlib import Path -from winpython import wppm, utils -# Local import -import diff +from winpython import wppm, utils, diff # Define constant paths for clarity CHANGELOGS_DIRECTORY = Path(__file__).parent / "changelogs" @@ -265,7 +263,7 @@ def build(self, rebuild: bool = True, requirements_files_list=None, winpy_dirnam self._print_action("Writing changelog") shutil.copyfile(output_markdown_filename, str(Path(CHANGELOGS_DIRECTORY) / Path(output_markdown_filename).name)) - diff.write_changelog(self.winpyver2, None, self.base_directory, self.flavor, self.distribution.architecture) + diff.write_changelog(self.winpyver2, None, CHANGELOGS_DIRECTORY, self.flavor, self.distribution.architecture, basedir=self.winpython_directory.parent) def rebuild_winpython_package(source_directory: Path, target_directory: Path, architecture: int = 64, verbose: bool = False): """Rebuilds the winpython package from source using flit.""" diff --git a/diff.py b/winpython/diff.py similarity index 71% rename from diff.py rename to winpython/diff.py index 02317cd0..594cbe36 100644 --- a/diff.py +++ b/winpython/diff.py @@ -11,9 +11,9 @@ import re import shutil from packaging import version -from winpython import utils +from . import utils -CHANGELOGS_DIR = Path(__file__).parent / "changelogs" +CHANGELOGS_DIR = Path(__file__).parent.parent / "changelogs" assert CHANGELOGS_DIR.is_dir() class Package: @@ -45,16 +45,16 @@ class PackageIndex: HEADERS = {"tools": "### Tools", "python": "### Python packages", "wheelhouse": "### WheelHouse packages"} BLANKS = ["Name | Version | Description", "-----|---------|------------", "", "
", "
"] - def __init__(self, version, basedir=None, flavor="", architecture=64): + def __init__(self, version, searchdir=None, flavor="", architecture=64): self.version = version self.flavor = flavor - self.basedir = basedir + self.searchdir = searchdir self.architecture = architecture self.packages = {"tools": {}, "python": {}, "wheelhouse": {}} self._load_index() def _load_index(self): - filename = CHANGELOGS_DIR / f"WinPython{self.flavor}-{self.architecture}bit-{self.version}.md" + filename = self.searchdir / f"WinPython{self.flavor}-{self.architecture}bit-{self.version}.md" if not filename.exists(): raise FileNotFoundError(f"Changelog not found: {filename}") @@ -93,20 +93,20 @@ def normalize(d): return {k.replace("-", "_").lower(): v for k, v in d.items()} output += "Removed packages:\r\n\r\n" + "".join(removed) + "\r\n" return output -def find_previous_version(target_version, basedir=None, flavor="", architecture=64): +def find_previous_version(target_version, searchdir=None, flavor="", architecture=64): """Find version which is the closest to `version`""" - build_dir = Path(basedir) / f"bu{flavor}" + search_dir = Path(searchdir) if searchdir else CHANGELOGS_DIR pattern = re.compile(rf"WinPython{flavor}-{architecture}bit-([0-9\.]+)\.(txt|md)") - versions = [pattern.match(f).group(1) for f in os.listdir(build_dir) if pattern.match(f)] + versions = [pattern.match(f).group(1) for f in os.listdir(search_dir) if pattern.match(f)] versions = [v for v in versions if version.parse(v) < version.parse(target_version)] return max(versions, key=version.parse, default=target_version) -def compare_package_indexes(version2, version1=None, basedir=None, flavor="", flavor1=None, architecture=64): - version1 = version1 or find_previous_version(version2, basedir, flavor, architecture) +def compare_package_indexes(version2, version1=None, searchdir=None, flavor="", flavor1=None, architecture=64): + version1 = version1 or find_previous_version(version2, searchdir, flavor, architecture) flavor1 = flavor1 or flavor - pi1 = PackageIndex(version1, basedir, flavor1, architecture) - pi2 = PackageIndex(version2, basedir, flavor, architecture) + pi1 = PackageIndex(version1, searchdir, flavor1, architecture) + pi2 = PackageIndex(version2, searchdir, flavor, architecture) text = ( f"## History of changes for WinPython-{architecture}bit {version2 + flavor}\r\n\r\n" @@ -121,25 +121,27 @@ def compare_package_indexes(version2, version1=None, basedir=None, flavor="", fl return text + "\r\n\r\n* * *\r\n" -def copy_changelogs(version, basedir, flavor="", architecture=64): +def copy_changelogs(version, searchdir, flavor="", architecture=64, basedir=None): basever = ".".join(version.split(".")[:2]) pattern = re.compile(rf"WinPython{flavor}-{architecture}bit-{basever}[0-9\.]*\.(txt|md)") - dest = Path(basedir) / f"bu{flavor}" - for fname in os.listdir(CHANGELOGS_DIR): + dest = Path(basedir) + for fname in os.listdir(searchdir): if pattern.match(fname): - shutil.copyfile(CHANGELOGS_DIR / fname, dest / fname) + shutil.copyfile(searchdir / fname, dest / fname) -def write_changelog(version2, version1=None, basedir=None, flavor="", architecture=64): +def write_changelog(version2, version1=None, searchdir=None, flavor="", architecture=64, basedir=None): """Write changelog between version1 and version2 of WinPython""" - copy_changelogs(version2, basedir, flavor, architecture) - print("comparing_package_indexes", version2, basedir, flavor, architecture) - changelog = compare_package_indexes(version2, version1, basedir, flavor, architecture=architecture) - output_file = Path(basedir) / f"bu{flavor}" / f"WinPython{flavor}-{architecture}bit-{version2}_History.md" + if basedir: + copy_changelogs(version2, searchdir, flavor, architecture, basedir) + print("comparing_package_indexes", version2, searchdir, flavor, architecture) + changelog = compare_package_indexes(version2, version1, searchdir, flavor, architecture=architecture) + output_file = searchdir / f"WinPython{flavor}-{architecture}bit-{version2}_History.md" with open(output_file, "w", encoding="utf-8") as f: f.write(changelog) - # Copy to winpython/changelogs - shutil.copyfile(output_file, CHANGELOGS_DIR / output_file.name) + # Copy to winpython/changelogs back to basedir + if basedir: + shutil.copyfile(output_file, basedir / output_file.name) if __name__ == "__main__": - print(compare_package_indexes("3.7.4.0", "3.7.2.0", r"C:\WinP\bd37", "Zero", architecture=32)) - write_changelog("3.7.4.0", "3.7.2.0", r"C:\WinP\bd37", "Ps2", architecture=64) + print(compare_package_indexes("3.7.4.0", "3.7.2.0", r"C:\WinP\bd37\budot", "Zero", architecture=32)) + write_changelog("3.7.4.0", "3.7.2.0", r"C:\WinP\bd37\budot", "Ps2", architecture=64)