Skip to content

Commit b8b12f5

Browse files
authored
chore: bump release versions to 1.12.0 (#14196)
* chore: bump release versions to 1.12.0 * fix: address version bump review feedback * test: cover sdk dependency pin variants
1 parent 6fb9e27 commit b8b12f5

49 files changed

Lines changed: 201 additions & 105 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ alembic-stamp: ## stamp the database with a specific revision
583583
# VERSION MANAGEMENT
584584
######################
585585

586-
patch: ## Update version across all projects. Usage: make patch v=1.5.0
586+
patch: ## Update version across all projects. Usage: make patch v=1.5.0 [sdk_v=0.1.0]
587587
@if [ -z "$(v)" ]; then \
588588
echo "$(RED)Error: Version argument required.$(NC)"; \
589589
echo "Usage: make patch v=1.5.0"; \
@@ -595,12 +595,15 @@ patch: ## Update version across all projects. Usage: make patch v=1.5.0
595595
LANGFLOW_BASE_VERSION=$$(echo "$$LANGFLOW_VERSION" | sed -E 's/^[0-9]+\.(.*)$$/0.\1/'); \
596596
LANGFLOW_COMPAT_VERSION=$$(echo "$$LANGFLOW_VERSION" | sed -E 's/^([0-9]+\.[0-9]+)\..*$$/\1.0/'); \
597597
LANGFLOW_BASE_COMPAT_VERSION=$$(echo "$$LANGFLOW_BASE_VERSION" | sed -E 's/^([0-9]+\.[0-9]+)\..*$$/\1.0/'); \
598+
SDK_VERSION="$(sdk_v)"; \
599+
if [ -z "$$SDK_VERSION" ]; then SDK_VERSION=$$(grep "^version" src/sdk/pyproject.toml | sed 's/.*"\(.*\)"$$/\1/'); fi; \
598600
\
599601
echo "$(GREEN)Langflow version: $$LANGFLOW_VERSION$(NC)"; \
600602
echo "$(GREEN)Langflow-core version: $$LANGFLOW_VERSION$(NC)"; \
601603
echo "$(GREEN)Langflow-base version: $$LANGFLOW_BASE_VERSION$(NC)"; \
602604
echo "$(GREEN)Compatibility floors: core $$LANGFLOW_COMPAT_VERSION, base $$LANGFLOW_BASE_COMPAT_VERSION$(NC)"; \
603605
echo "$(GREEN)LFX (synced): $$LANGFLOW_VERSION$(NC)"; \
606+
echo "$(GREEN)Langflow SDK version: $$SDK_VERSION$(NC)"; \
604607
\
605608
echo "$(GREEN)Updating main pyproject.toml...$(NC)"; \
606609
python -c "import re; fname='pyproject.toml'; txt=open(fname).read(); txt=re.sub(r'^version = \".*\"', 'version = \"$$LANGFLOW_VERSION\"', txt, flags=re.MULTILINE); txt=re.sub(r'\"langflow-core(\[[^\]]*\])?(?:==|>=|~=)[^\"]*\"', lambda m: '\"langflow-core' + (m.group(1) or '') + '~=$$LANGFLOW_COMPAT_VERSION\"', txt); open(fname, 'w').write(txt)"; \
@@ -609,10 +612,15 @@ patch: ## Update version across all projects. Usage: make patch v=1.5.0
609612
python -c "import re; fname='src/langflow-core/pyproject.toml'; txt=open(fname).read(); txt=re.sub(r'^version = \".*\"', 'version = \"$$LANGFLOW_VERSION\"', txt, flags=re.MULTILINE); txt=re.sub(r'\"langflow-base(\[[^\]]*\])?(?:==|>=|~=)[^\"]*\"', r'\"langflow-base\1~=$$LANGFLOW_BASE_COMPAT_VERSION\"', txt); open(fname, 'w').write(txt)"; \
610613
\
611614
echo "$(GREEN)Updating langflow-base pyproject.toml...$(NC)"; \
612-
python -c "import re; fname='src/backend/base/pyproject.toml'; txt=open(fname).read(); txt=re.sub(r'^version = \".*\"', 'version = \"$$LANGFLOW_BASE_VERSION\"', txt, flags=re.MULTILINE); txt=re.sub(r'\"lfx(?:~=|>=)[^\"]*\"', '\"lfx~=$$LANGFLOW_VERSION\"', txt); open(fname, 'w').write(txt)"; \
615+
python -c "import re; fname='src/backend/base/pyproject.toml'; txt=open(fname).read(); txt=re.sub(r'^version = \".*\"', 'version = \"$$LANGFLOW_BASE_VERSION\"', txt, flags=re.MULTILINE); txt=re.sub(r'\"lfx(?P<extra>\[[^\]]+\])?(?:~=|>=)[^\"]*\"', lambda m: f'\"lfx{m.group(\"extra\") or \"\"}~=$$LANGFLOW_VERSION\"', txt); open(fname, 'w').write(txt)"; \
613616
\
614617
echo "$(GREEN)Updating lfx pyproject.toml...$(NC)"; \
615618
python -c "import re; fname='src/lfx/pyproject.toml'; txt=open(fname).read(); txt=re.sub(r'^version = \".*\"', 'version = \"$$LANGFLOW_VERSION\"', txt, flags=re.MULTILINE); open(fname, 'w').write(txt)"; \
619+
uv run --no-sync python scripts/ci/update_component_index_version.py src/lfx/src/lfx/_assets/component_index.json "$$LANGFLOW_VERSION"; \
620+
\
621+
echo "$(GREEN)Updating langflow-sdk pyproject.toml and LFX dependency...$(NC)"; \
622+
python -c "import re; fname='src/sdk/pyproject.toml'; txt=open(fname).read(); txt=re.sub(r'^version = \".*\"', 'version = \"$$SDK_VERSION\"', txt, flags=re.MULTILINE); open(fname, 'w').write(txt)"; \
623+
python -c "import re; fname='src/lfx/pyproject.toml'; txt=open(fname).read(); txt=re.sub(r'\"langflow-sdk(?:==|>=|~=)[^\"]*\"', '\"langflow-sdk>=$$SDK_VERSION\"', txt); open(fname, 'w').write(txt)"; \
616624
\
617625
echo "$(GREEN)Syncing bundle lfx pins (src/bundles/*) -> $$LANGFLOW_VERSION...$(NC)"; \
618626
python scripts/ci/sync_bundle_lfx_pin.py "$$LANGFLOW_VERSION"; \
@@ -632,6 +640,9 @@ patch: ## Update version across all projects. Usage: make patch v=1.5.0
632640
if ! grep -q "^version = \"$$LANGFLOW_BASE_VERSION\"" src/backend/base/pyproject.toml; then echo "$(RED)✗ Langflow-base pyproject.toml version validation failed$(NC)"; exit 1; fi; \
633641
if ! grep -q "\"lfx~=$$LANGFLOW_VERSION\"" src/backend/base/pyproject.toml; then echo "$(RED)✗ Langflow-base pyproject.toml lfx pin validation failed$(NC)"; exit 1; fi; \
634642
if ! grep -q "^version = \"$$LANGFLOW_VERSION\"" src/lfx/pyproject.toml; then echo "$(RED)✗ LFX pyproject.toml version validation failed$(NC)"; exit 1; fi; \
643+
if ! grep -q "^version = \"$$SDK_VERSION\"" src/sdk/pyproject.toml; then echo "$(RED)✗ SDK pyproject.toml version validation failed$(NC)"; exit 1; fi; \
644+
if ! grep -q "\"langflow-sdk>=$$SDK_VERSION\"" src/lfx/pyproject.toml; then echo "$(RED)✗ LFX SDK dependency validation failed$(NC)"; exit 1; fi; \
645+
if ! python -c 'import json, sys; index = json.load(open(sys.argv[1], encoding="utf-8")); raise SystemExit(index.get("version") != sys.argv[2])' src/lfx/src/lfx/_assets/component_index.json "$$LANGFLOW_VERSION"; then echo "$(RED)✗ Component index version validation failed$(NC)"; exit 1; fi; \
635646
if ! grep -q "\"version\": \"$$LANGFLOW_VERSION\"" src/frontend/package.json; then echo "$(RED)✗ Frontend package.json version validation failed$(NC)"; exit 1; fi; \
636647
echo "$(GREEN)✓ All versions updated successfully$(NC)"; \
637648
\
@@ -648,7 +659,8 @@ patch: ## Update version across all projects. Usage: make patch v=1.5.0
648659
git status --porcelain; \
649660
exit 1; \
650661
fi; \
651-
EXPECTED_FILES="pyproject.toml uv.lock src/langflow-core/pyproject.toml src/backend/base/pyproject.toml src/lfx/pyproject.toml src/frontend/package.json src/frontend/package-lock.json"; \
662+
EXPECTED_FILES="pyproject.toml uv.lock src/langflow-core/pyproject.toml src/backend/base/pyproject.toml src/lfx/pyproject.toml src/lfx/src/lfx/_assets/component_index.json src/frontend/package.json src/frontend/package-lock.json"; \
663+
if [ -n "$(sdk_v)" ]; then EXPECTED_FILES="$$EXPECTED_FILES src/sdk/pyproject.toml"; fi; \
652664
for file in $$EXPECTED_FILES; do \
653665
if ! git status --porcelain | grep -q "$$file"; then \
654666
echo "$(RED)✗ Expected file $$file was not modified$(NC)"; \
@@ -663,6 +675,8 @@ patch: ## Update version across all projects. Usage: make patch v=1.5.0
663675
echo " - src/langflow-core/pyproject.toml: $$LANGFLOW_VERSION (langflow-base floor → $$LANGFLOW_BASE_COMPAT_VERSION)"; \
664676
echo " - src/backend/base/pyproject.toml: $$LANGFLOW_BASE_VERSION (lfx pin → $$LANGFLOW_VERSION)"; \
665677
echo " - src/lfx/pyproject.toml: $$LANGFLOW_VERSION"; \
678+
echo " - src/lfx/src/lfx/_assets/component_index.json: $$LANGFLOW_VERSION"; \
679+
echo " - src/sdk/pyproject.toml: $$SDK_VERSION"; \
666680
echo " - src/frontend/package.json: $$LANGFLOW_VERSION"; \
667681
echo " - uv.lock: dependency lock updated"; \
668682
echo " - src/frontend/package-lock.json: dependency lock updated"; \

pyproject.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "langflow"
3-
version = "1.11.0"
3+
version = "1.12.0"
44
description = "A Python package with a built-in web application"
55
requires-python = ">=3.10,<3.15"
66
license = "MIT"
@@ -17,7 +17,7 @@ maintainers = [
1717
]
1818
# Define your main dependencies here
1919
dependencies = [
20-
"langflow-core~=1.11.0",
20+
"langflow-core~=1.12.0",
2121
# langflow-extensions:bundle-deps-start
2222
# Release coordination: langflow declares BOUNDED ranges (>=A,<B) for every
2323
# curated lfx-* package, never exact pins -- exact pins in reusable library
@@ -179,7 +179,7 @@ docling-image-description = [
179179
]
180180

181181
audio = [
182-
"langflow-core[audio]~=1.11.0",
182+
"langflow-core[audio]~=1.12.0",
183183
]
184184

185185

@@ -203,7 +203,7 @@ nv-ingest = [
203203
]
204204

205205
postgresql = [
206-
"langflow-core[postgresql]~=1.11.0",
206+
"langflow-core[postgresql]~=1.12.0",
207207
]
208208

209209
[tool.uv]

src/backend/base/pyproject.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "langflow-base"
3-
version = "0.11.0"
3+
version = "0.12.0"
44
description = "A Python package with a built-in web application"
55
requires-python = ">=3.10,<3.15"
66
license = "MIT"
@@ -17,7 +17,7 @@ maintainers = [
1717
]
1818

1919
dependencies = [
20-
"lfx~=1.11.0",
20+
"lfx~=1.12.0",
2121
"fastapi>=0.139.0,<1.0.0",
2222
"slowapi>=0.1.9,<1.0.0",
2323
"httpx[http2]>=0.27,<1.0.0",
@@ -192,7 +192,7 @@ local = [
192192

193193
# Individual database providers
194194
couchbase = ["couchbase>=4.2.1"]
195-
cassandra = ["lfx[cassandra]~=1.11.0"] # cassio relocated to lfx (lfx-core Cassandra components)
195+
cassandra = ["lfx[cassandra]~=1.12.0"] # cassio relocated to lfx (lfx-core Cassandra components)
196196
clickhouse = ["clickhouse-connect==0.7.19"]
197197

198198

@@ -263,7 +263,7 @@ opendsstar = [
263263
]
264264

265265
# Individual tools
266-
beautifulsoup = ["lfx~=1.11.0"] # beautifulsoup4 is now a hard lfx dependency
266+
beautifulsoup = ["lfx~=1.12.0"] # beautifulsoup4 is now a hard lfx dependency
267267
serpapi = ["google-search-results>=2.4.1,<3.0.0"]
268268
google-api = ["google-api-python-client~=2.161"]
269269
wikipedia = ["wikipedia==1.4.0"]
@@ -341,7 +341,7 @@ spider = ["spider-client>=0.0.27,<1.0.0"]
341341
altk = ["agent-lifecycle-toolkit>=0.10.1,<1.0; sys_platform != 'darwin' or platform_machine != 'x86_64'"]
342342

343343
# Toolguard Integration
344-
toolguard = ["lfx[toolguard]~=1.11.0"] # toolguard relocated to lfx
344+
toolguard = ["lfx[toolguard]~=1.12.0"] # toolguard relocated to lfx
345345

346346
# Additional LangChain integrations
347347
# Excluded on macOS x86_64: transitive torch dependency (via sentence-transformers) has no Intel Mac wheels

src/backend/tests/unit/test_bundle_lfx_pin.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@
1010
from __future__ import annotations
1111

1212
import importlib.util
13+
import json
1314
import sys
1415
from pathlib import Path
1516

1617
import pytest
1718

19+
try:
20+
import tomllib
21+
except ModuleNotFoundError: # Python 3.10: tomllib is stdlib only on 3.11+
22+
import tomli as tomllib
23+
1824
REPO_ROOT = Path(__file__).resolve().parents[4]
1925
_SCRIPT = REPO_ROOT / "scripts" / "ci" / "sync_bundle_lfx_pin.py"
2026

@@ -137,3 +143,18 @@ def test_sync_idempotent(self, tmp_path):
137143
mod.sync_bundles("1.10.0", bundles)
138144
second = dict(mod.sync_bundles("1.10.0", bundles))
139145
assert second == {"arxiv": False}
146+
147+
148+
def test_bundle_manifests_match_distribution_versions():
149+
"""Keep published extension identity aligned with wheel metadata."""
150+
for pyproject in sorted((REPO_ROOT / "src" / "bundles").glob("*/pyproject.toml")):
151+
project_version = tomllib.loads(pyproject.read_text(encoding="utf-8"))["project"]["version"]
152+
manifests = sorted(pyproject.parent.glob("src/*/extension.json"))
153+
if pyproject.parent.name != "lfx-bundles":
154+
assert manifests, f"{pyproject.relative_to(REPO_ROOT)} is missing extension.json"
155+
for manifest in manifests:
156+
manifest_version = json.loads(manifest.read_text(encoding="utf-8"))["version"]
157+
assert manifest_version == project_version, (
158+
f"{manifest.relative_to(REPO_ROOT)} has version {manifest_version}, "
159+
f"but {pyproject.relative_to(REPO_ROOT)} has {project_version}"
160+
)

src/bundles/amazon/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "lfx-amazon"
3-
version = "0.1.1"
3+
version = "0.1.2"
44
description = "Amazon component(s) as a standalone Langflow Extension Bundle."
55
readme = "README.md"
66
requires-python = ">=3.10,<3.15"
@@ -19,7 +19,7 @@ keywords = ["langflow", "lfx", "extension", "bundle", "amazon"]
1919
# scripts/ci/sync_bundle_lfx_pin.py. Fine-grained BUNDLE_API compatibility
2020
# is enforced via extension.json's lfx.compat list against BUNDLE_API_VERSION.
2121
dependencies = [
22-
"lfx>=1.11.0.dev0,<2.0.0",
22+
"lfx>=1.12.0.dev0,<2.0.0",
2323
"boto3>=1.34.162,<2.0.0",
2424
"langchain-aws>=1.4.1,<2.0.0",
2525
]

src/bundles/amazon/src/lfx_amazon/extension.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schemas.langflow.org/extension/v1.json",
33
"id": "lfx-amazon",
4-
"version": "0.1.0",
4+
"version": "0.1.2",
55
"name": "Amazon",
66
"description": "Amazon component(s) as a standalone Langflow Extension Bundle.",
77
"lfx": {

src/bundles/anthropic/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "lfx-anthropic"
3-
version = "0.1.2"
3+
version = "0.1.3"
44
description = "Anthropic component(s) as a standalone Langflow Extension Bundle."
55
readme = "README.md"
66
requires-python = ">=3.10,<3.15"
@@ -19,7 +19,7 @@ keywords = ["langflow", "lfx", "extension", "bundle", "anthropic"]
1919
# scripts/ci/sync_bundle_lfx_pin.py. Fine-grained BUNDLE_API compatibility
2020
# is enforced via extension.json's lfx.compat list against BUNDLE_API_VERSION.
2121
dependencies = [
22-
"lfx>=1.11.0.dev0,<2.0.0",
22+
"lfx>=1.12.0.dev0,<2.0.0",
2323
"langchain-anthropic~=1.4.6",
2424
"requests>=2.32.0",
2525
]

src/bundles/anthropic/src/lfx_anthropic/extension.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schemas.langflow.org/extension/v1.json",
33
"id": "lfx-anthropic",
4-
"version": "0.1.2",
4+
"version": "0.1.3",
55
"name": "Anthropic",
66
"description": "Anthropic component(s) as a standalone Langflow Extension Bundle.",
77
"lfx": {

src/bundles/arxiv/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "lfx-arxiv"
3-
version = "0.1.2"
3+
version = "0.1.3"
44
description = "arXiv search component as a standalone Langflow Extension Bundle."
55
readme = "README.md"
66
requires-python = ">=3.10,<3.15"
@@ -15,7 +15,7 @@ keywords = ["langflow", "lfx", "extension", "bundle", "arxiv", "search"]
1515
# but we list it here as a direct runtime dep so the bundle keeps building
1616
# even if lfx drops it later.
1717
dependencies = [
18-
"lfx>=1.11.0.dev0,<2.0.0",
18+
"lfx>=1.12.0.dev0,<2.0.0",
1919
"defusedxml>=0.7.1,<1.0.0",
2020
]
2121

src/bundles/arxiv/src/lfx_arxiv/extension.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schemas.langflow.org/extension/v1.json",
33
"id": "lfx-arxiv",
4-
"version": "0.1.2",
4+
"version": "0.1.3",
55
"name": "arXiv Search",
66
"description": "arXiv search component as a standalone Langflow Extension Bundle.",
77
"lfx": {

0 commit comments

Comments
 (0)