@@ -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" ; \
0 commit comments