Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/workflows/check_core_versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should rename this file

6 changes: 5 additions & 1 deletion libs/partners/anthropic/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,17 @@ 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'
Expand Down
2 changes: 2 additions & 0 deletions libs/partners/anthropic/langchain_anthropic/__init__.py
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -9,5 +10,6 @@
__all__ = [
"AnthropicLLM",
"ChatAnthropic",
"__version__",
"convert_to_anthropic_tool",
]
3 changes: 3 additions & 0 deletions libs/partners/anthropic/langchain_anthropic/_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
"""Version information for langchain-anthropic."""

__version__ = "1.3.3" # x-release-please-version
65 changes: 65 additions & 0 deletions libs/partners/anthropic/scripts/check_version.py
Original file line number Diff line number Diff line change
@@ -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())
1 change: 1 addition & 0 deletions libs/partners/anthropic/tests/unit_tests/test_imports.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from langchain_anthropic import __all__

EXPECTED_ALL = [
"__version__",
"ChatAnthropic",
"convert_to_anthropic_tool",
"AnthropicLLM",
Expand Down
Loading