mirror of
https://github.com/microsoft/graphrag.git
synced 2026-01-14 09:07:20 +08:00
59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
# Copyright (c) 2025 Microsoft Corporation.
|
|
# Licensed under the MIT License
|
|
|
|
"""Update workspace dependency versions."""
|
|
|
|
import os
|
|
import re
|
|
import subprocess # noqa: S404
|
|
from pathlib import Path
|
|
|
|
|
|
def _get_version() -> str:
|
|
command = ["uv", "run", "semversioner", "current-version"]
|
|
completion = subprocess.run(command, env=os.environ, capture_output=True, text=True) # noqa: S603
|
|
if completion.returncode != 0:
|
|
msg = f"Failed to get current version with return code: {completion.returncode}"
|
|
raise RuntimeError(msg)
|
|
return completion.stdout.strip()
|
|
|
|
|
|
def _get_package_paths() -> list[Path]:
|
|
root_dir = Path(__file__).parent.parent
|
|
return [p.resolve() for p in root_dir.glob("packages/*") if p.is_dir()]
|
|
|
|
|
|
def update_workspace_dependency_versions():
|
|
"""Update dependency versions across workspace packages.
|
|
|
|
Iterate through all the workspace packages and update cross-package
|
|
dependency versions to match the current version of the workspace.
|
|
"""
|
|
version = _get_version()
|
|
package_paths = _get_package_paths()
|
|
for package_path in package_paths:
|
|
current_package_name = package_path.name
|
|
toml_path = package_path / "pyproject.toml"
|
|
if not toml_path.exists() or not toml_path.is_file():
|
|
continue
|
|
toml_contents = toml_path.read_text(encoding="utf-8")
|
|
|
|
for other_package_path in package_paths:
|
|
other_package_name = other_package_path.name
|
|
if other_package_name == current_package_name:
|
|
continue
|
|
dep_pattern = rf"{other_package_name}\s*==\s*\d+\.\d+\.\d+"
|
|
|
|
if re.search(dep_pattern, toml_contents):
|
|
toml_contents = re.sub(
|
|
dep_pattern,
|
|
f"{other_package_name}=={version}",
|
|
toml_contents,
|
|
)
|
|
|
|
toml_path.write_text(toml_contents, encoding="utf-8", newline="\n")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
update_workspace_dependency_versions()
|