This commit is contained in:
Chester Curme
2026-02-17 14:39:22 -05:00
parent 6fe7845cd1
commit cf1804932f
5 changed files with 92 additions and 1 deletions

View File

@@ -9,6 +9,8 @@ on:
paths:
- "libs/core/pyproject.toml"
- "libs/core/langchain_core/version.py"
- "libs/partners/anthropic/pyproject.toml"
- "libs/partners/anthropic/langchain_anthropic/_version.py"
permissions:
contents: read
@@ -49,3 +51,17 @@ jobs:
else
echo "Langchain v1 versions match: $LANGCHAIN_PYPROJECT_VERSION"
fi
# Check langchain-anthropic versions
ANTHROPIC_PYPROJECT_VERSION=$(grep -Po '(?<=^version = ")[^"]*' libs/partners/anthropic/pyproject.toml)
ANTHROPIC_VERSION_PY_VERSION=$(grep -Po '(?<=^__version__ = ")[^"]*' libs/partners/anthropic/langchain_anthropic/_version.py)
# Compare langchain-anthropic versions
if [ "$ANTHROPIC_PYPROJECT_VERSION" != "$ANTHROPIC_VERSION_PY_VERSION" ]; then
echo "langchain-anthropic versions in pyproject.toml and _version.py do not match!"
echo "pyproject.toml version: $ANTHROPIC_PYPROJECT_VERSION"
echo "_version.py version: $ANTHROPIC_VERSION_PY_VERSION"
exit 1
else
echo "Langchain-anthropic versions match: $ANTHROPIC_PYPROJECT_VERSION"
fi

View File

@@ -51,16 +51,21 @@ format format_diff:
check_imports: $(shell find langchain_anthropic -name '*.py')
uv run --all-groups python ./scripts/check_imports.py $^
check_version:
uv run python ./scripts/check_version.py
######################
# HELP
######################
help:
@echo '----'
@echo 'check_imports - check imports'
@echo 'check_imports - check imports'
@echo 'check_version - validate version consistency'
@echo 'format - run code formatters'
@echo 'lint - run linters'
@echo 'type - run type checking'
@echo 'test - run unit tests'
@echo 'tests - run unit tests'
@echo 'test TEST_FILE=<test_file> - run all tests in file'
T_FILE=<test_file> - run all tests in file'

View File

@@ -1,5 +1,6 @@
"""Claude (Anthropic) partner package for LangChain."""
from langchain_anthropic._version import __version__
from langchain_anthropic.chat_models import (
ChatAnthropic,
convert_to_anthropic_tool,
@@ -7,6 +8,7 @@ from langchain_anthropic.chat_models import (
from langchain_anthropic.llms import AnthropicLLM
__all__ = [
"__version__",
"AnthropicLLM",
"ChatAnthropic",
"convert_to_anthropic_tool",

View File

@@ -0,0 +1,3 @@
"""Version information for langchain-anthropic."""
__version__ = "1.3.3" # x-release-please-version

View File

@@ -0,0 +1,65 @@
"""Check version consistency between `pyproject.toml` and `_version.py`.
This script validates that the version defined in pyproject.toml matches the `__version__`
variable in `langchain_anthropic/_version.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_version_py_version(version_path: Path) -> str | None:
"""Extract `__version__` from `_version.py`."""
content = version_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"
version_path = package_dir / "langchain_anthropic" / "_version.py"
if not pyproject_path.exists():
print(f"Error: {pyproject_path} not found") # noqa: T201
return 1
if not version_path.exists():
print(f"Error: {version_path} not found") # noqa: T201
return 1
pyproject_version = get_pyproject_version(pyproject_path)
version_py_version = get_version_py_version(version_path)
if pyproject_version is None:
print("Error: Could not find version in pyproject.toml") # noqa: T201
return 1
if version_py_version is None:
print("Error: Could not find __version__ in langchain_anthropic/_version.py") # noqa: T201
return 1
if pyproject_version != version_py_version:
print("Error: Version mismatch detected!") # noqa: T201
print(f" pyproject.toml: {pyproject_version}") # noqa: T201
print(f" langchain_anthropic/_version.py: {version_py_version}") # noqa: T201
return 1
print(f"Version check passed: {pyproject_version}") # noqa: T201
return 0
if __name__ == "__main__":
sys.exit(main())