Skip to content

chore: remove lfx-bundles from default Langflow install#13869

Open
erichare wants to merge 8 commits into
release-1.11.0from
fix/remove-default-lfx-bundles
Open

chore: remove lfx-bundles from default Langflow install#13869
erichare wants to merge 8 commits into
release-1.11.0from
fix/remove-default-lfx-bundles

Conversation

@erichare

@erichare erichare commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Remove lfx-bundles[all] from the root langflow dependencies and lock metadata so it is not installed by default.
  • Keep lfx-bundles in the workspace and available as explicit opt-in via lfx[bundles] / lfx-bundles[all].
  • Update docs and long-tail shim messages so users are told to install lfx-bundles explicitly.

Tests

  • uv lock --frozen
  • uv tree --frozen --no-dev --package langflow --depth 1
  • uv run --frozen pytest src/backend/tests/unit/test_lfx_bundles_extras.py src/backend/tests/unit/api/test_api_utils.py -q
  • cd src/lfx && uv sync && uv run pytest tests/unit/components/test_bundle_shims.py tests/unit/utils/test_exceptions.py -q

Summary by CodeRabbit

  • Documentation

    • Updated installation guidance to clarify that the core app and curated bundles are installed separately from the full long-tail bundle set.
    • Added clearer instructions and references for finding the right bundle information.
  • Bug Fixes

    • Standardized many missing-dependency messages across bundle-backed components.
    • Error prompts now give a cleaner, consistent pip install lfx-bundles instruction without confusing alternate guidance or extra spacing.

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7be76068-ed24-4e7b-b55c-14fb21ea66e9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

Documentation, package metadata, tests, and compatibility shims now describe langflow as the curated default install and lfx-bundles as an explicit opt-in path for long-tail providers. The lfx[all] framing was removed, and missing-bundle messages were standardized around pip install lfx-bundles.

Changes

Bundle guidance normalization

Layer / File(s) Summary
Docs and bundle contract
pyproject.toml, src/bundles/lfx-bundles/pyproject.toml, src/bundles/lfx-bundles/README.md, docs/docs/Deployment/deployment-lfx-compatibility.mdx, docs/docs/Develop/extensions-overview.mdx, src/backend/tests/unit/test_lfx_bundles_extras.py
Documentation and package metadata now describe curated default bundles, explicit lfx-bundles installs, and the generated all extra wording consistently.
Compatibility shim install hints
scripts/migrate/consolidate_bundles.py, src/lfx/src/lfx/components/*/__init__.py
The migration helper and compatibility shims replace alternate install wording with standardized lfx-bundles messages.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

enhancement

Suggested reviewers

  • mendonk
  • ogabrielluiz
🚥 Pre-merge checks | ✅ 8 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (8 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Test Coverage For New Implementations ✅ Passed The PR adds a real unit test for lfx-bundles extras invariants and uses existing contract tests for shim install-message behavior; both are substantive and correctly named.
Test Quality And Coverage ✅ Passed Tests cover extras drift, shim contracts, runtime aliasing, and exception formatting with edge cases; they use pytest patterns and are not smoke tests.
Test File Naming And Structure ✅ Passed PASS: The new test is src/backend/tests/unit/test_lfx_bundles_extras.py, a properly named pytest unit file with descriptive test_* functions and only private helper defs.
Excessive Mock Usage Warning ✅ Passed Changed tests are mostly contract/integration-style; only one targeted patch() in api_utils, while shim tests use real temp files/imports and monkeypatch.
Title check ✅ Passed The title clearly summarizes the main change: removing lfx-bundles from Langflow's default install.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/remove-default-lfx-bundles

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

✅ Test Coverage Advisor

No source changes detected without accompanying tests. Thanks for keeping coverage up! 🎉

Advisory check only — never blocks merge.

@github-actions

This comment has been minimized.

@codecov

codecov Bot commented Jun 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 59.45%. Comparing base (6388c84) to head (2b39bc7).

Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                 @@
##           release-1.11.0   #13869      +/-   ##
==================================================
- Coverage           59.79%   59.45%   -0.34%     
==================================================
  Files                2347     2240     -107     
  Lines              224750   221387    -3363     
  Branches            33483    30522    -2961     
==================================================
- Hits               134389   131634    -2755     
+ Misses              88827    88220     -607     
+ Partials             1534     1533       -1     
Flag Coverage Δ
backend 67.33% <ø> (+0.05%) ⬆️
frontend 58.05% <ø> (-0.56%) ⬇️
lfx 56.62% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 269 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

This comment has been minimized.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (8)
src/lfx/src/lfx/components/vlmrun/__init__.py (1)

16-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fix double space in error message.

Normalize spacing to "Install it with: pip install lfx-bundles." (single space after colon) for consistency with docs and tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/vlmrun/__init__.py` around lines 16 - 19, The
error message in the vlmrun import notice has an extra space after the colon in
the install instruction. Update the message in the __init__ module for the
vlmrun components so the text uses a single space after "Install it with:" and
matches the expected docs/tests wording, keeping the rest of the message
unchanged.
src/lfx/src/lfx/components/wikipedia/__init__.py (1)

16-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fix double space in error message.

Normalize spacing to "Install it with: pip install lfx-bundles." (single space after colon) for consistency with docs and tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/wikipedia/__init__.py` around lines 16 - 19, The
wikipedia import error message in the __init__ module has inconsistent spacing
after the colon; update the msg string so the install instruction uses a single
space before the pip command. Keep the change localized to the wikipedia
components message text so it matches the expected docs and tests.
src/lfx/src/lfx/components/langwatch/__init__.py (1)

16-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fix double space in error message.

Normalize spacing to "Install it with: pip install lfx-bundles." (single space after colon) for consistency with docs and tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/langwatch/__init__.py` around lines 16 - 19, The
error message in the langwatch import path has inconsistent spacing after the
colon in the install instruction. Update the message built in the langwatch
component initializer to use the normalized wording with a single space after
“Install it with:” so it matches docs and tests; locate it via the langwatch
__init__ message string.
src/lfx/src/lfx/components/weaviate/__init__.py (1)

16-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fix double space in error message.

Normalize spacing to "Install it with: pip install lfx-bundles." (single space after colon) for consistency with docs and tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/weaviate/__init__.py` around lines 16 - 19, The
error message in the weaviate components import path has an extra space after
the colon, so update the message built in the __init__.py fallback text to use a
single space in the “Install it with:” phrase. Keep the rest of the message
unchanged and ensure the string emitted by the weaviate module matches the
documented and tested wording exactly.
src/lfx/src/lfx/components/jigsawstack/__init__.py (1)

16-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fix double space in error message.

Normalize spacing to "Install it with: pip install lfx-bundles." (single space after colon) for consistency with docs and tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/jigsawstack/__init__.py` around lines 16 - 19, The
error message in the jigsawstack module has inconsistent spacing after the colon
in the install instruction. Update the message in the __init__ path for the
jigsawstack components so the text reads with a single space after “Install it
with:” and keep the rest of the message unchanged to match docs and tests.
src/lfx/src/lfx/components/huggingface/__init__.py (1)

16-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fix double space in error message.

Same spacing inconsistency as noted in homeassistant/__init__.py: the message has two spaces after the colon. Normalize to "Install it with: pip install lfx-bundles." for consistency with documentation and tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/huggingface/__init__.py` around lines 16 - 19, The
error message in the huggingface components’ module-level `msg` string has an
extra space after the colon in the install instruction. Update the message in
`lfx/components/huggingface/__init__.py` so the text in that string uses the
same normalized spacing as the other component messages, keeping the `msg`
assignment consistent and matching the expected wording.
src/lfx/src/lfx/components/icosacomputing/__init__.py (1)

16-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fix double space in error message.

Normalize spacing to "Install it with: pip install lfx-bundles." (single space after colon) for consistency with docs and tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/icosacomputing/__init__.py` around lines 16 - 19,
The import error message in the icosacomputing package has inconsistent spacing
after the colon in the install hint. Update the message string in the __init__
module for the icosacomputing components so the “Install it with:” text uses a
single space before “pip install lfx-bundles.” to match docs and tests.
src/lfx/src/lfx/components/homeassistant/__init__.py (1)

16-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Fix double space in error message.

The error message contains two spaces after the colon ("Install it with: pip install lfx-bundles."), which is inconsistent with the documented format showing a single space ("Install it with: pip install lfx-bundles.") in docs/docs/Develop/extensions-overview.mdx:77-90 and the test regex pattern in src/lfx/tests/unit/components/test_bundle_shims.py:303-313. Please normalize to a single space for consistency.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/lfx/src/lfx/components/homeassistant/__init__.py` around lines 16 - 19,
The homeassistant shim error message in the module that defines msg has an extra
space after the colon in the install instruction. Update the message text to use
a single space in the “Install it with:” phrase so it matches the documented
format and the bundle shim test expectations, keeping the wording consistent in
the homeassistant component initializer.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/lfx/src/lfx/components/homeassistant/__init__.py`:
- Around line 16-19: The homeassistant shim error message in the module that
defines msg has an extra space after the colon in the install instruction.
Update the message text to use a single space in the “Install it with:” phrase
so it matches the documented format and the bundle shim test expectations,
keeping the wording consistent in the homeassistant component initializer.

In `@src/lfx/src/lfx/components/huggingface/__init__.py`:
- Around line 16-19: The error message in the huggingface components’
module-level `msg` string has an extra space after the colon in the install
instruction. Update the message in `lfx/components/huggingface/__init__.py` so
the text in that string uses the same normalized spacing as the other component
messages, keeping the `msg` assignment consistent and matching the expected
wording.

In `@src/lfx/src/lfx/components/icosacomputing/__init__.py`:
- Around line 16-19: The import error message in the icosacomputing package has
inconsistent spacing after the colon in the install hint. Update the message
string in the __init__ module for the icosacomputing components so the “Install
it with:” text uses a single space before “pip install lfx-bundles.” to match
docs and tests.

In `@src/lfx/src/lfx/components/jigsawstack/__init__.py`:
- Around line 16-19: The error message in the jigsawstack module has
inconsistent spacing after the colon in the install instruction. Update the
message in the __init__ path for the jigsawstack components so the text reads
with a single space after “Install it with:” and keep the rest of the message
unchanged to match docs and tests.

In `@src/lfx/src/lfx/components/langwatch/__init__.py`:
- Around line 16-19: The error message in the langwatch import path has
inconsistent spacing after the colon in the install instruction. Update the
message built in the langwatch component initializer to use the normalized
wording with a single space after “Install it with:” so it matches docs and
tests; locate it via the langwatch __init__ message string.

In `@src/lfx/src/lfx/components/vlmrun/__init__.py`:
- Around line 16-19: The error message in the vlmrun import notice has an extra
space after the colon in the install instruction. Update the message in the
__init__ module for the vlmrun components so the text uses a single space after
"Install it with:" and matches the expected docs/tests wording, keeping the rest
of the message unchanged.

In `@src/lfx/src/lfx/components/weaviate/__init__.py`:
- Around line 16-19: The error message in the weaviate components import path
has an extra space after the colon, so update the message built in the
__init__.py fallback text to use a single space in the “Install it with:”
phrase. Keep the rest of the message unchanged and ensure the string emitted by
the weaviate module matches the documented and tested wording exactly.

In `@src/lfx/src/lfx/components/wikipedia/__init__.py`:
- Around line 16-19: The wikipedia import error message in the __init__ module
has inconsistent spacing after the colon; update the msg string so the install
instruction uses a single space before the pip command. Keep the change
localized to the wikipedia components message text so it matches the expected
docs and tests.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 45e19819-dab0-4b68-81d8-0625f5bcfaaa

📥 Commits

Reviewing files that changed from the base of the PR and between c1c2d59 and 2e23d39.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (81)
  • docs/docs/Deployment/deployment-lfx-compatibility.mdx
  • docs/docs/Develop/extensions-overview.mdx
  • pyproject.toml
  • scripts/migrate/consolidate_bundles.py
  • src/backend/base/langflow/locales/en.json
  • src/backend/tests/unit/test_lfx_bundles_extras.py
  • src/bundles/lfx-bundles/README.md
  • src/bundles/lfx-bundles/pyproject.toml
  • src/lfx/src/lfx/components/FAISS/__init__.py
  • src/lfx/src/lfx/components/Notion/__init__.py
  • src/lfx/src/lfx/components/agentql/__init__.py
  • src/lfx/src/lfx/components/aiml/__init__.py
  • src/lfx/src/lfx/components/altk/__init__.py
  • src/lfx/src/lfx/components/apify/__init__.py
  • src/lfx/src/lfx/components/assemblyai/__init__.py
  • src/lfx/src/lfx/components/azure/__init__.py
  • src/lfx/src/lfx/components/baidu/__init__.py
  • src/lfx/src/lfx/components/bing/__init__.py
  • src/lfx/src/lfx/components/chroma/__init__.py
  • src/lfx/src/lfx/components/cleanlab/__init__.py
  • src/lfx/src/lfx/components/clickhouse/__init__.py
  • src/lfx/src/lfx/components/cloudflare/__init__.py
  • src/lfx/src/lfx/components/codeagents/__init__.py
  • src/lfx/src/lfx/components/cometapi/__init__.py
  • src/lfx/src/lfx/components/composio/__init__.py
  • src/lfx/src/lfx/components/confluence/__init__.py
  • src/lfx/src/lfx/components/couchbase/__init__.py
  • src/lfx/src/lfx/components/cuga/__init__.py
  • src/lfx/src/lfx/components/deepseek/__init__.py
  • src/lfx/src/lfx/components/elastic/__init__.py
  • src/lfx/src/lfx/components/exa/__init__.py
  • src/lfx/src/lfx/components/git/__init__.py
  • src/lfx/src/lfx/components/glean/__init__.py
  • src/lfx/src/lfx/components/google/__init__.py
  • src/lfx/src/lfx/components/groq/__init__.py
  • src/lfx/src/lfx/components/homeassistant/__init__.py
  • src/lfx/src/lfx/components/huggingface/__init__.py
  • src/lfx/src/lfx/components/icosacomputing/__init__.py
  • src/lfx/src/lfx/components/jigsawstack/__init__.py
  • src/lfx/src/lfx/components/langwatch/__init__.py
  • src/lfx/src/lfx/components/litellm/__init__.py
  • src/lfx/src/lfx/components/lmstudio/__init__.py
  • src/lfx/src/lfx/components/maritalk/__init__.py
  • src/lfx/src/lfx/components/mem0/__init__.py
  • src/lfx/src/lfx/components/milvus/__init__.py
  • src/lfx/src/lfx/components/mistral/__init__.py
  • src/lfx/src/lfx/components/mongodb/__init__.py
  • src/lfx/src/lfx/components/needle/__init__.py
  • src/lfx/src/lfx/components/notdiamond/__init__.py
  • src/lfx/src/lfx/components/novita/__init__.py
  • src/lfx/src/lfx/components/nvidia/__init__.py
  • src/lfx/src/lfx/components/olivya/__init__.py
  • src/lfx/src/lfx/components/ollama/__init__.py
  • src/lfx/src/lfx/components/openrouter/__init__.py
  • src/lfx/src/lfx/components/perplexity/__init__.py
  • src/lfx/src/lfx/components/pgvector/__init__.py
  • src/lfx/src/lfx/components/pinecone/__init__.py
  • src/lfx/src/lfx/components/qdrant/__init__.py
  • src/lfx/src/lfx/components/redis/__init__.py
  • src/lfx/src/lfx/components/sambanova/__init__.py
  • src/lfx/src/lfx/components/scrapegraph/__init__.py
  • src/lfx/src/lfx/components/searchapi/__init__.py
  • src/lfx/src/lfx/components/serpapi/__init__.py
  • src/lfx/src/lfx/components/spider/__init__.py
  • src/lfx/src/lfx/components/supabase/__init__.py
  • src/lfx/src/lfx/components/tavily/__init__.py
  • src/lfx/src/lfx/components/twelvelabs/__init__.py
  • src/lfx/src/lfx/components/unstructured/__init__.py
  • src/lfx/src/lfx/components/upstash/__init__.py
  • src/lfx/src/lfx/components/vectara/__init__.py
  • src/lfx/src/lfx/components/vectorstores/__init__.py
  • src/lfx/src/lfx/components/vertexai/__init__.py
  • src/lfx/src/lfx/components/vllm/__init__.py
  • src/lfx/src/lfx/components/vlmrun/__init__.py
  • src/lfx/src/lfx/components/weaviate/__init__.py
  • src/lfx/src/lfx/components/wikipedia/__init__.py
  • src/lfx/src/lfx/components/wolframalpha/__init__.py
  • src/lfx/src/lfx/components/xai/__init__.py
  • src/lfx/src/lfx/components/yahoosearch/__init__.py
  • src/lfx/src/lfx/components/youtube/__init__.py
  • src/lfx/src/lfx/components/zep/__init__.py

@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Frontend Unit Test Coverage Report

Coverage Summary

Lines Statements Branches Functions
Coverage: 44%
44.51% (60130/135075) 69.29% (8175/11797) 42.78% (1356/3169)

Unit Test Results

Tests Skipped Failures Errors Time
5096 0 💤 0 ❌ 0 🔥 16m 18s ⏱️

@github-actions

This comment has been minimized.

@erichare erichare changed the title Remove lfx-bundles from default Langflow install chore: remove lfx-bundles from default Langflow install Jun 26, 2026
@erichare erichare added the DO NOT MERGE Don't Merge this PR label Jun 26, 2026
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Build successful! ✅
Deploying docs draft.
Deploy successful! View draft

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant