Files
microsoft--graphrag/scripts/update_workspace_dependency_versions.py
wehub-resource-sync 6b7e6b44f1
gh-pages / build (push) Waiting to run
Python Publish (pypi) / Upload release to PyPI (push) Waiting to run
Spellcheck / spellcheck (push) Waiting to run
Python Build and Type Check / python-ci (ubuntu-latest, 3.11) (push) Has been cancelled
Python Build and Type Check / python-ci (ubuntu-latest, 3.13) (push) Has been cancelled
Python Build and Type Check / python-ci (windows-latest, 3.11) (push) Has been cancelled
Python Build and Type Check / python-ci (windows-latest, 3.13) (push) Has been cancelled
Python Integration Tests / python-ci (ubuntu-latest, 3.13) (push) Has been cancelled
Python Integration Tests / python-ci (windows-latest, 3.13) (push) Has been cancelled
Python Notebook Tests / python-ci (ubuntu-latest, 3.13) (push) Has been cancelled
Python Notebook Tests / python-ci (windows-latest, 3.13) (push) Has been cancelled
Python Smoke Tests / python-ci (ubuntu-latest, 3.13) (push) Has been cancelled
Python Smoke Tests / python-ci (windows-latest, 3.13) (push) Has been cancelled
Python Unit Tests / python-ci (ubuntu-latest, 3.13) (push) Has been cancelled
Python Unit Tests / python-ci (windows-latest, 3.13) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:37:31 +08:00

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()