lock.py 1.1 KB

1234567891011121314151617181920212223242526
  1. #!/usr/bin/env python3
  2. """使用 uv 为 Python 3.12 解析跨平台依赖锁,并记录输入摘要。"""
  3. import json
  4. from pathlib import Path
  5. import subprocess
  6. import sys
  7. sys.dont_write_bytecode = True
  8. from common import sha256
  9. ROOT = Path(__file__).resolve().parents[1]
  10. def main():
  11. subprocess.run(["uv", "pip", "compile", "requirements.txt", "--constraints", "release/baseline.constraints",
  12. "--python-version", "3.12", "--universal", "--generate-hashes", "--only-binary", ":all:",
  13. "--no-annotate", "--no-header", "--output-file", "release/requirements.lock"],
  14. cwd=ROOT, stdout=subprocess.DEVNULL, check=True)
  15. meta = {"python": "3.12", "resolver": subprocess.check_output(["uv", "--version"], text=True).strip(),
  16. "sha256": {name: sha256(ROOT / name) for name in
  17. ("requirements.txt", "release/baseline.constraints", "release/requirements.lock")}}
  18. (ROOT / "release/lock.meta.json").write_text(json.dumps(meta, indent=2) + "\n")
  19. print("已更新 release/requirements.lock 和 lock.meta.json")
  20. if __name__ == "__main__":
  21. main()