Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
5141ec6
feat(sdk): add langflow-sdk Python client package
erichare Mar 30, 2026
a0085aa
feat(lfx): add Flow DevOps CLI toolkit
erichare Mar 30, 2026
0d507e6
feat(api): add flow upsert, export normalization, ZIP upload
erichare Mar 30, 2026
a9453ce
chore: CI coverage merge, Docker fixes, dependency updates
erichare Mar 30, 2026
840e98b
Address CQ5 review / import bug
erichare Mar 30, 2026
467c8f7
Update test_status_command.py
erichare Mar 30, 2026
1bd7461
Update test_status_command.py
erichare Mar 30, 2026
fac2806
Fix more tests
erichare Mar 30, 2026
3f56f06
Review edits
erichare Mar 31, 2026
1ad24c8
Review edits
erichare Mar 31, 2026
9c0b5ff
Merge branch 'release-1.9.0' into feature/flow-devops-toolkit
erichare Mar 31, 2026
4bee22d
Fix tests
erichare Mar 31, 2026
f482b6a
Merge branch 'release-1.9.0' into feature/flow-devops-toolkit
erichare Mar 31, 2026
19d31b4
Follow up review updates
erichare Mar 31, 2026
e1ab873
Refactor common client code
erichare Mar 31, 2026
6162271
Update templates and comp index
erichare Mar 31, 2026
c4f86a3
Merge branch 'release-1.9.0' into feature/flow-devops-toolkit
erichare Mar 31, 2026
b8b72c1
Merge branch 'release-1.9.0' into feature/flow-devops-toolkit
erichare Mar 31, 2026
e0dde8f
[autofix.ci] apply automated fixes
autofix-ci[bot] Mar 31, 2026
9835aad
Update test_database.py
erichare Mar 31, 2026
e8857cb
Merge branch 'release-1.9.0' into feature/flow-devops-toolkit
erichare Mar 31, 2026
096875c
Merge branch 'release-1.9.0' into feature/flow-devops-toolkit
erichare Mar 31, 2026
7675642
Merge branch 'release-1.9.0' into feature/flow-devops-toolkit
erichare Mar 31, 2026
17ef6d4
Merge branch 'release-1.9.0' into feature/flow-devops-toolkit
erichare Apr 1, 2026
1464dc4
Merge branch 'release-1.9.0' into feature/flow-devops-toolkit
erichare Apr 2, 2026
381610c
Updates from review comments
erichare Apr 2, 2026
e28b8f9
Fix push interface to match the rest
erichare Apr 2, 2026
4cbcb99
Update push.py
erichare Apr 2, 2026
59ba983
Update push.py
erichare Apr 2, 2026
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
12 changes: 1 addition & 11 deletions .secrets.baseline
Original file line number Diff line number Diff line change
Expand Up @@ -1643,7 +1643,7 @@
"filename": "src/backend/base/langflow/api/utils/core.py",
"hashed_secret": "e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4",
"is_verified": false,
"line_number": 440,
"line_number": 413,
"is_secret": false
}
],
Expand Down Expand Up @@ -7147,16 +7147,6 @@
"is_secret": false
}
],
"src/lfx/tests/unit/cli/test_serve_simple.py": [
{
"type": "Secret Keyword",
"filename": "src/lfx/tests/unit/cli/test_serve_simple.py",
"hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f",
"is_verified": false,
"line_number": 67,
"is_secret": false
}
],
"src/lfx/tests/unit/components/langchain_utilities/test_csv_agent.py": [
{
"type": "Secret Keyword",
Expand Down
2 changes: 2 additions & 0 deletions docker/build_and_push.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ COPY ./src/backend/base/uv.lock /app/src/backend/base/uv.lock
COPY ./src/backend/base/pyproject.toml /app/src/backend/base/pyproject.toml
COPY ./src/lfx/README.md /app/src/lfx/README.md
COPY ./src/lfx/pyproject.toml /app/src/lfx/pyproject.toml
COPY ./src/sdk/README.md /app/src/sdk/README.md
COPY ./src/sdk/pyproject.toml /app/src/sdk/pyproject.toml

RUN --mount=type=cache,target=/root/.cache/uv \
RUSTFLAGS='--cfg reqwest_unstable' \
Expand Down
3 changes: 2 additions & 1 deletion docker/build_and_push_backend.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ RUN apt-get update \
# Copy only backend source (excludes frontend)
COPY ./src/backend ./src/backend
COPY ./src/lfx ./src/lfx
COPY ./src/sdk ./src/sdk

# Create venv and install langflow-base with dependencies
# Using uv pip instead of uv sync to avoid workspace complexities
Expand All @@ -37,7 +38,7 @@ ENV PATH="/app/.venv/bin:$PATH"
ENV VIRTUAL_ENV="/app/.venv"

RUN --mount=type=cache,target=/root/.cache/uv \
uv pip install ./src/lfx "./src/backend/base[complete,postgresql]"
uv pip install ./src/sdk ./src/lfx "./src/backend/base[complete,postgresql]"

################################
# RUNTIME
Expand Down
42 changes: 42 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ explicit = true
langflow-base = { workspace = true }
langflow = { workspace = true }
lfx = { workspace = true }
langflow-sdk = { workspace = true }
torch = { index = "pytorch-cpu" }
torchvision = { index = "pytorch-cpu" }

Expand All @@ -77,6 +78,7 @@ members = [
"src/backend/base",
".",
"src/lfx",
"src/sdk",
]

[tool.hatch.build.targets.wheel]
Expand Down Expand Up @@ -313,6 +315,46 @@ external = ["RUF027"]
"src/lfx/src/lfx/inputs/input_mixin.py" = [
"S105", # False positive: PASSWORD is a type constant
]
"src/lfx/src/lfx/__main__.py" = [
"B008", # Typer CLI requires function calls in argument defaults
"FBT001", # Bool flags are the standard typer pattern
"FBT003", # Boolean positional values in typer.Option() calls
]
"src/lfx/src/lfx/cli/_setup_commands.py" = [
"B008", # Typer CLI requires function calls in argument defaults
"FBT001", # Bool flags are the standard typer pattern
"FBT003", # Boolean positional values in typer.Option() calls
]
"src/lfx/src/lfx/cli/_authoring_commands.py" = [
"B008", # Typer CLI requires function calls in argument defaults
"FBT001", # Bool flags are the standard typer pattern
"FBT003", # Boolean positional values in typer.Option() calls
]
"src/lfx/src/lfx/cli/_running_commands.py" = [
"B008", # Typer CLI requires function calls in argument defaults
"FBT001", # Bool flags are the standard typer pattern
"FBT003", # Boolean positional values in typer.Option() calls
]
"src/lfx/src/lfx/cli/_remote_commands.py" = [
"B008", # Typer CLI requires function calls in argument defaults
"FBT001", # Bool flags are the standard typer pattern
"FBT003", # Boolean positional values in typer.Option() calls
]
"src/backend/base/langflow/api/utils/*" = [
"TCH", # Imports are used at runtime (FastAPI deps, SQLAlchemy queries, model constructors)
]
"src/sdk/src/langflow_sdk/_http.py" = [
"TCH", # httpx is used at runtime (response object methods)
]
"src/sdk/src/langflow_sdk/environments.py" = [
"TRY003", # Contextual error messages are necessary here
"EM102", # f-string messages assigned before raise where possible
]
"src/sdk/tests/*" = [
"S101", # assert is the standard pytest assertion style
"INP001", # Not a package namespace issue in tests
"TC003", # pytest fixture type hints are evaluated at runtime
]
"src/lfx/src/lfx/schema/table.py" = [
"S105", # False positive: PASSWORD is a formatter type
]
Expand Down
18 changes: 12 additions & 6 deletions src/backend/base/langflow/api/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
allowing for better code organization.
"""

# Re-export everything from core module to maintain backward compatibility
# Re-export everything from core and flow_utils modules to maintain backward compatibility
from langflow.api.utils.core import (
API_WORDS,
MAX_PAGE_SIZE,
Expand All @@ -17,12 +17,7 @@
EventDeliveryType,
ValidatedFileName,
ValidatedFolderName,
build_and_cache_graph_from_data,
build_graph_from_data,
build_graph_from_db,
build_graph_from_db_no_cache,
build_input_keys_response,
cascade_delete_flow,
check_langflow_version,
custom_params,
extract_global_variables_from_headers,
Expand All @@ -34,11 +29,20 @@
get_suggestion_message,
get_top_level_vertices,
has_api_terms,
normalize_code_for_import,
normalize_flow_for_export,
parse_exception,
parse_value,
raise_error_if_astra_cloud_env,
remove_api_keys,
validate_is_component,
)
from langflow.api.utils.flow_utils import (
build_and_cache_graph_from_data,
build_graph_from_data,
build_graph_from_db,
build_graph_from_db_no_cache,
cascade_delete_flow,
verify_public_flow_and_get_user,
)

Expand Down Expand Up @@ -75,6 +79,8 @@
"get_top_level_vertices",
# Functions
"has_api_terms",
"normalize_code_for_import",
"normalize_flow_for_export",
"parse_exception",
"parse_value",
"raise_error_if_astra_cloud_env",
Expand Down
Loading
Loading