mirror of
https://github.com/hwchase17/langchain.git
synced 2026-03-18 11:07:36 +00:00
66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
"""Check version consistency between pyproject.toml and __init__.py.
|
|
|
|
This script validates that the version defined in pyproject.toml matches
|
|
the __version__ variable in langchain/__init__.py. Intended for use as
|
|
a pre-commit hook to prevent version mismatches.
|
|
"""
|
|
|
|
import re
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def get_pyproject_version(pyproject_path: Path) -> str | None:
|
|
"""Extract version from pyproject.toml."""
|
|
content = pyproject_path.read_text(encoding="utf-8")
|
|
match = re.search(r'^version\s*=\s*"([^"]+)"', content, re.MULTILINE)
|
|
return match.group(1) if match else None
|
|
|
|
|
|
def get_init_version(init_path: Path) -> str | None:
|
|
"""Extract __version__ from __init__.py."""
|
|
content = init_path.read_text(encoding="utf-8")
|
|
match = re.search(r'^__version__\s*=\s*"([^"]+)"', content, re.MULTILINE)
|
|
return match.group(1) if match else None
|
|
|
|
|
|
def main() -> int:
|
|
"""Validate version consistency."""
|
|
script_dir = Path(__file__).parent
|
|
package_dir = script_dir.parent
|
|
|
|
pyproject_path = package_dir / "pyproject.toml"
|
|
init_path = package_dir / "langchain" / "__init__.py"
|
|
|
|
if not pyproject_path.exists():
|
|
print(f"Error: {pyproject_path} not found")
|
|
return 1
|
|
|
|
if not init_path.exists():
|
|
print(f"Error: {init_path} not found")
|
|
return 1
|
|
|
|
pyproject_version = get_pyproject_version(pyproject_path)
|
|
init_version = get_init_version(init_path)
|
|
|
|
if pyproject_version is None:
|
|
print("Error: Could not find version in pyproject.toml")
|
|
return 1
|
|
|
|
if init_version is None:
|
|
print("Error: Could not find __version__ in langchain/__init__.py")
|
|
return 1
|
|
|
|
if pyproject_version != init_version:
|
|
print("Error: Version mismatch detected!")
|
|
print(f" pyproject.toml: {pyproject_version}")
|
|
print(f" langchain/__init__.py: {init_version}")
|
|
return 1
|
|
|
|
print(f"Version check passed: {pyproject_version}")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|