mirror of
https://github.com/langflow-ai/langflow.git
synced 2026-07-24 17:37:02 +08:00
docs-wxo-python-version
62 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
| 13a937c5b7 |
feat(ci): nightly → stable bundles via canonical pre-releases + decision record [gated] (#13528)
* docs: record nightly→stable bundle cutover plan (gated on lfx 1.10.0) Add src/bundles/NIGHTLY.md documenting why langflow-nightly currently renames the bundles (lfx and lfx-nightly ship the same lfx/ import, so a stable bundle would co-install both and collide) and the deferred cutover (Approach A: canonical pre-releases; B: lfx as a bundle extra), gated on stable lfx 1.10.0 being published to PyPI. Also expand two docstrings in scripts/ci/update_lfx_version.py to state the deeper install-conflict reason, not just the resolve failure. No behavior change. * feat(ci): nightly Approach A — canonical pre-releases, drop nightly bundles [DRAFT/gated] (#13529) feat(ci): nightly Approach A — canonical pre-releases, drop nightly bundles DRAFT reference implementation of the nightly→stable-bundle cutover documented in src/bundles/NIGHTLY.md. Publishes the nightly under CANONICAL package names as .devN pre-releases instead of separate *-nightly distributions, so the stable lfx-* bundles resolve against a single canonical lfx (no dual-lfx install collision) and no nightly bundle packages are produced. - tag scripts (pypi/lfx/sdk_nightly_tag.py): count .devN against the canonical PyPI histories instead of the *-nightly projects - update scripts: stop renaming to *-nightly; set .devN versions; re-pin inter-package deps to exact canonical dev versions; delete the bundle rename/repin (update_lfx_dep_in_bundles, rename_bundles_for_nightly) - release_nightly.yml: publish canonical pre-releases; remove bundle build, dist-nightly-bundles artifact, publish-nightly-bundles job + its gate; verify canonical names; main wheel glob dist/langflow-*.whl - nightly_build.yml: drop the bundle git-add in the tag commit - NIGHTLY.md: Approach A marked implemented + activation gate + A1/A2 follow-ups Held as DRAFT: do not activate until stable lfx 1.10.0 is published AND the nightly base is the next minor (release-1.11.0). A 1.10.0.devN core sorts below 1.10.0 and would fail the bundles' >=1.10.0 floor. Stacked on #13528. (.secrets.baseline: incidental line-number shifts for the two workflows + prune of pre-existing stale Pokédex Agent.json entries.) * docs(ci): drop internal 'Approach A' label from nightly cutover comments Comment- and docstring-only change across scripts/ci/* and the two nightly workflows; no logic change. The two workflow edits stay single-line so .secrets.baseline line numbers are unaffected. src/bundles/NIGHTLY.md keeps its A/B decision-record framing intentionally. * feat(ci): make nightly consumers work with canonical pre-releases Follow-ups from the nightly cutover that are part of its blast radius (the nightly now publishes canonical `.devN` pre-releases, not `*-nightly` distributions): - version.py: derive the "Nightly" label from the `.dev` version marker, since the canonical `langflow`/`langflow-base` distribution matches first in the lookup. Keeps the startup banner and telemetry `package` field identifying nightlies. Adds a canonical-dev test; updates the base-dev assertion. - ci.yml check-nightly-status: query the canonical `langflow` project and pick the latest `.devN` release date instead of `langflow-nightly`'s `.info.version`. - db-migration-validation.yml: install the nightly as `langflow[postgresql]==<dev>` (pre-release) instead of `langflow-nightly[...]`; verify via version("langflow"). - src/lfx/README.md: nightly install is `uv pip install --pre lfx`. - NIGHTLY.md: rewrite the follow-ups section (these are addressed; Docker image, A2 meta-package, and website docs remain deferred by design). The `langflowai/langflow-nightly` Docker image name is intentionally unchanged. * fix(ci): correct nightly verify uv tree parsing + stale base-dep regex Addresses review of #13528: - release_nightly.yml LFX verify: `uv tree | grep lfx | head -n1` matches the bundle `lfx-ibm` first → 'Name lfx-ibm does not match lfx'. Root the tree with `uv tree --package lfx` so the first line is the lfx package itself. - release_nightly.yml base verify: under canonical naming `langflow-base` prints as a top-level `langflow-base v<ver>` line, so the old $2/$3 field parse read name="v0.10.0" and version="". Use `uv tree --package langflow-base` and $1/$2. - update_lf_base_dependency.py update_base_dep: regex only accepted ~=/==, so its CLI entry point couldn't match the current root dep `langflow-base[complete]>=0.10.0`. Add >= (parity with update_uv_dependency.py). The active nightly path uses update_uv_dependency.py and was unaffected. * docs(nightly): point NIGHTLY.md status at the activation gate, not draft state Per review of #13528: this file ships inside #13528 (#13529 was folded in), so the 'stacked on prep #13528' + 'held as a draft' framing is stale and misleading. Reword the status block to state the real guard is the activation gate (stable lfx 1.10.0 published AND next-minor base), not merge/draft state. Also reword the follow-ups heading 'decide before un-drafting' -> 'decide before activating'. |
|||
| 0d9f9112ef |
perf(telemetry): batched off-pool writer for transactions + vertex_builds (#13126)
* perf(telemetry): batched off-pool writer for transactions + vertex_builds
Adds TelemetryWriterService that buffers transaction and vertex_build rows
in memory and drains them in batched INSERTs via a dedicated AsyncEngine
(pool_size=1 for SQLite, 2 for Postgres, max_overflow=0). Retention is
amortized in a 60s sweeper instead of running on every insert.
Producers (log_transaction, log_vertex_build) enqueue instead of opening
a DB session, so telemetry traffic no longer competes with the
request-handling pool. Falls back to the legacy direct-write path via
LANGFLOW_TELEMETRY_WRITER_ENABLED=false.
Durability: in-flight rows spill to a diskcache.Deque per PID on shutdown
and are restored on next startup; orphan PID directories left by crashed
workers are adopted.
* perf(telemetry): tighten error handling and add coverage
Review feedback from pr-review-toolkit + silent-failure-hunter:
- Retention sweep snapshots the dirty-flow sets before commit and only
clears them after it lands; a crashed sweep no longer drops the flows on
the floor, so per-flow caps cannot drift unboundedly.
- Producer fall-through is no longer silent. transaction_service and
log_vertex_build each log a one-shot WARNING when telemetry_writer_enabled
is True but the writer is not running.
- Lifespan startup failure now logs ERROR instead of WARNING — if the user
opted into the writer and it didn't come up, that's an error.
- Shutdown drain timeout no longer suppressed silently: logs a WARNING with
pending row count + a hint to raise telemetry_writer_shutdown_drain_s.
- Writer's flush loop catches asyncio.CancelledError separately and
re-prepends the in-flight batch to the buffer so teardown's disk spill
catches it.
- After 6 consecutive batch failures the writer emits a loud ERROR with
buffer depths so operators see sustained data-loss risk.
Added tests:
- test_sanitization_survives_writer_round_trip
- test_retention_failure_preserves_dirty_flows
- test_in_flight_batch_returned_on_cancel
* perf(telemetry): address copilot review
- _restore_from_disk + _adopt_orphan_outboxes now route through _enqueue so a
large disk-spilled or orphan outbox can't bypass telemetry_writer_max_queue
and OOM the process. Oldest rows are dropped and counted via the existing
dropped_transactions / dropped_vertex_builds counters.
- chmod 0o700 the outbox root + per-PID directory so sanitized-but-still-
sensitive payloads aren't exposed cross-user on multi-tenant hosts.
Suppressed on platforms where chmod is a no-op (Windows).
- Added test_adopt_orphan_outboxes_honors_max_queue.
The remaining two copilot notes (private API access to DatabaseService and
diskcache.Cache.close) were also flagged by the in-tree review; tracking
separately. The "diskcache not declared" note is a false positive — the
dependency is at src/backend/base/pyproject.toml:76.
* perf(telemetry): address coderabbit review
- Sweeper hands off dirty sets via capture-and-clear so concurrent
flushes during a retention pass aren't wiped by the post-commit
subtract; failure path restores the snapshot.
- Stress README uses a concrete Postgres DSN matching the docker
example instead of an unset env var.
- Test PID-probe loops bounded via a shared helper with pytest.fail
fallback.
* perf(telemetry): swap diskcache outbox for stdlib sqlite (CVE-2025-69872)
Replaces the diskcache.Deque-backed spill outbox with a stdlib sqlite3
outbox (WAL mode, JSON payloads in TEXT). diskcache 5.6.3 has
CVE-2025-69872 (pickle deserialization RCE for an attacker with write
access to the cache dir), no fixed version released, and was never
declared as a dependency — import failed on Python 3.10.
The replacement is encapsulated in a small _Outbox helper that owns the
connection, schema, JSON codec, and lifecycle. The codec uses tagged
wrappers for datetime and UUID so SQLAlchemy's typed columns accept
restored payloads on the way back out.
Hardening informed by a survey of OTel collector, Fluent Bit, Vector,
Prometheus remote_write, Datadog agent, Logstash, and Filebeat:
- Per-PID outbox dirs now stamp an owner.json (hostname + Linux boot_id
or time()-monotonic() proxy). Adoption only proceeds when host+boot
match; cross-host or pre-owner-file dirs are logged and skipped so a
recycled PID after a container restart cannot pull in a stranger's
spill data.
- PRAGMA synchronous=FULL on the spill connection so the shutdown
commit hits the platter (NORMAL only fsyncs on WAL checkpoint, which
may never run if the process exits immediately after commit).
- Spill honors telemetry_writer_max_queue with drop-oldest, matching
the producer-side overflow policy so a backlogged buffer at shutdown
can neither stall teardown nor fill disk.
- append_all encodes payloads up front and only clears the deque after
the transaction commits — no more partial-drain on mid-flight SQLite
failure. drain collapses to a single DELETE FROM outbox after the
SELECT.
- Exception handlers at the spill/restore/adopt boundaries narrowed to
(sqlite3.Error, OSError) so genuinely unexpected exceptions
propagate rather than being silently logged.
Tests cover: cross-host orphan skipped, missing-owner orphan skipped,
spill cap drops oldest, and a realistic UUID+datetime payload
surviving spill → restore → SQLAlchemy INSERT.
* [autofix.ci] apply automated fixes
* fix(telemetry): name wait_for inner tasks so pyleak can filter
Integration tests using @pyleak_marker were flagging an inner asyncio
task created by the telemetry writer's `wait_for(Event.wait(), ...)`
loops. The wrapper task is auto-named (Task-N) and lands mid-await
across the test boundary, so pyleak counts it as leaked. The writer
itself shuts down cleanly via teardown; the "leak" is a pattern
mismatch with pyleak's per-test snapshot model, not a real lifecycle
bug.
Wrap Event.wait() in an explicitly named task (`telemetry-writer-tick`,
`telemetry-writer-backoff`, `telemetry-sweeper-tick`) via a small
_wait_or_shutdown helper, and extend pyleak_marker with a task_name_filter
that excludes `telemetry-*` from leak detection. CI was green on earlier
commits in this branch only because the diskcache import error
prevented the writer from starting at all — fixing the import surfaced
this latent pyleak collision.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* test(telemetry): disable writer in tests so reads see writes synchronously
* perf(telemetry): age out cross-host orphan outboxes on shared volumes
A pod on a shared PV (NFS/RWX) cannot adopt rows from a dead pod on a
different host because the dead pod's hostname doesn't match. Without a
janitor those directories accumulate forever. Add an owner-file mtime
heartbeat from the sweeper plus a prune pass that deletes cross-host
outboxes whose owner file hasn't been touched within
telemetry_writer_orphan_max_age_s (default 1h). Same-host orphans still
flow through the existing adoption path.
* perf(telemetry): add byte-aware flush + drop strategy
Today the writer bounds memory by row count only, so a worker logging fat
vertex_build artifacts can hold tens of MB per row and silently dwarf the
configured max_queue. Add a size_strategy switch ('count' | 'bytes' |
'either', default 'count' for parity) with two byte thresholds:
- batch_size_bytes (256KB) caps per-flush INSERT size when bytes apply
- max_queue_bytes (200MB) drops oldest by bytes when bytes apply
Parallel sizes deques mirror the payload buffers so accounting stays
consistent across drain, spill, restore, and the cancel/retry rollback.
Single rows above the byte budget are still emitted (no row is refused);
operators get dropped_*_bytes counters alongside dropped_*.
* test(telemetry): tighten byte-strategy assertions and cover end-to-end paths
Address gaps in the byte-aware strategy tests:
- pin exact dropped counts and remaining buffer state for the drop-by-bytes
case (was 'greater than zero')
- compute exact drain count from encoded size (was a 1-4 range)
- round-trip bytes through spill+restore to verify size deque is rebuilt
- round-trip bytes through orphan adoption for the same reason
- exercise the sweeper loop end-to-end to confirm heartbeat + prune are
wired in (previously only unit-tested in isolation)
Clarify in the settings docs that the byte caps measure encoded JSON size,
not Python in-memory footprint.
* ref: updates to telemetry writer PR (#13294)
* fix(telemetry-writer): harden error handling and add missing test coverage
Critical:
- teardown() now re-raises CancelledError after awaiting the writer task so the
asyncio cancellation chain propagates correctly on lifespan task kill
- suppress(OSError) on owner file write replaced with explicit error log so
operators know when disk-spilled rows will not be recoverable on restart
High / important:
- Escalation threshold check changed from == to >= so the error log fires on
every failure past the threshold, not just the 6th
- Dead `except OSError` on time.time() - time.monotonic() changed to
`except Exception` since time functions cannot raise OSError
- Removed redundant `from uuid import UUID` inside _run_retention_pass (already
imported at module top)
- Orphan directory cleanup: replaced blanket suppress(OSError) with per-child
suppress so ENOTEMPTY on an individual rmdir doesn't abort the whole loop and
leave the parent directory leaking silently; outer failure now logs at debug
Tests (3 new):
- test_retention_sweep_caps_vertex_builds_per_vertex: inserts 8 builds for a
single vertex with max_per_vertex=3 so the per-vertex DELETE subquery
actually executes (previous test used 8 distinct vertex IDs, bypassing it)
- test_either_strategy_trips_on_bytes_first: verifies bytes can be the first
trigger under 'either' strategy (previous test only covered the count-first path)
- test_writer_retries_on_batch_failure: injects 2 flush failures then success;
confirms failed_batches increments, rows are preserved in the buffer, and
flushed_rows reflects the final successful write
* ci: add stress-tests job to nightly build pipeline
Wires the stress-tests workflow into nightly so telemetry write stress
tests run automatically. Also gates release-nightly-build and
slack-notification on stress-tests result so a stress regression blocks
the nightly release and surfaces in Slack.
* ci: run stress tests in nightly without blocking release
Stress tests are informational for now — a failure is visible in the
workflow run and Slack but does not gate the nightly release or build.
* fix(telemetry-writer): address PR review on cancelled teardown and nightly stress tests
- Add the stress-tests.yml reusable workflow (was untracked, so the
nightly stress-tests job could never resolve)
- Notify Slack on stress-tests failure (add to slack-notification gate
and FAILED_JOB detection as non-blocking)
- Run sweeper cancel, disk spill, and engine dispose in a finally so a
cancelled teardown() still persists the in-memory buffer
- Add tests for the cancelled-teardown spill path and the >= escalation
threshold; drop the misleading wait-loop in the retry test
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com>
|
|||
| 3e57126b91 |
fix: remove duplicate uv.lock from workspace member (#13326)
* fix: remove src/backend/base/uv.lock and Dockerfile references - Deleted src/backend/base/uv.lock (monorepo should have only one uv.lock at root) - Removed COPY ./src/backend/base/uv.lock lines from all Dockerfiles: - docker/build_and_push.Dockerfile - docker/build_and_push_base.Dockerfile - docker/build_and_push_ep.Dockerfile - docker/build_and_push_with_extras.Dockerfile - docker/dev.Dockerfile Fixes LE-1093 * fix: remove stale base uv.lock regeneration paths |
|||
| dbe482c800 |
fix(ci): lockstep langflow-nightly and langflow-base-nightly versions (#13413)
* fix(ci): lockstep langflow-nightly and langflow-base-nightly versions
The nightly pipeline computed each package's .devN number independently
(pypi_nightly_tag.py queried each package's own PyPI history and
incremented separately), while langflow-nightly pins an exact
langflow-base-nightly[complete]==X.Y.Z.devN dependency. Because
langflow-nightly publishes on more nights than langflow-base-nightly,
the two counters drift (live: dev54 vs dev48). Each time base lags a
publish while main succeeds, the newest langflow-nightly pins a base
dev that does not exist yet, so 'uv pip install langflow-nightly'
becomes unsatisfiable and silently falls back to a weeks-old version.
Fix: version the two packages in lockstep. pypi_nightly_tag.py now
derives a single shared dev number from max(dev across BOTH packages'
PyPI histories) + 1 (restricted to the root base_version), so main and
base always get the identical tag and main's exact pin always
references a base version built and published in the same run. The tag
is computed in a single invocation ('both' mode) so the release and
base tags cannot drift across separate calls.
Also hardens tag computation: 404 / network / malformed responses for
either package now contribute nothing instead of crashing, a
base-version bump resets the dev counter cleanly, and non-dev/final
releases never advance it.
Adds scripts/ci/test_pypi_nightly_tag.py (unit tests) and a
ci-scripts-test.yml workflow to run scripts/ci tests on PRs.
* fix(ci): fail closed on non-404 PyPI errors in nightly tag computation
_all_dev_numbers() previously returned [] for ANY failure (network error,
non-404 HTTP status, malformed 200), which is unsafe: _shared_nightly_version()
takes max(dev)+1 across both packages, so a transient lookup failure on the
higher-versioned package silently LOWERS the next tag. E.g. if the langflow-nightly
lookup fails while langflow-base-nightly reports dev48, the script would emit
v1.10.0.dev49 even though langflow-nightly already published through dev54 — the
workflow then force-recreates an old git tag and fails publishing an already-existing
PyPI version.
Fail closed: only a true 404 (package has no releases) contributes []; network
errors, 5xx/non-404 statuses, and malformed 200s now raise so the nightly job aborts
before mutating tags. Adds tests for malformed/5xx/network failures and a direct
regression test for the higher-package-lookup-failure scenario.
* Update scripts/ci/test_pypi_nightly_tag.py
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update test_pypi_nightly_tag.py
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
|
|||
| fb4dfd49fd |
ci: sync workflow fixes from main into release-1.10.0 (fix broken nightly) (#13400)
ci: sync workflow fixes from main into release-1.10.0 Brings the latest CI/workflow fixes from main into release-1.10.0 so the nightly build is unblocked and the two branches share the same hardening. Most important fix: release_nightly.yml's "Verify Nightly Name and Version" step now uses the anchored grep '^langflow(-nightly)?[[:space:]]' instead of 'grep langflow | grep -v langflow-base | grep -v langflow-sdk'. The old filter started matching two packages once the langflow-stepflow workspace package was added, so the name became multi-line and the check failed (this is what broke the nightly build). Also carries main's fixes for cross-platform install (--prerelease=if-necessary-or-explicit), docker build workflows, db-migration-validation, and the backend test timeout bump (30 -> 40). 3-way merged from the common ancestor, so release-only changes are preserved; no release-only feature workflows are modified. |
|||
| cb7b838d45 |
feat: Add DB migration validation workflow for nightly builds (#13249)
* feat: Add DB migration validation workflow for nightly builds (LE-1259) - Implements automated DB migration testing for nightly builds - Tests two scenarios: pip/venv and Docker Compose migrations - Validates migration from stable to nightly versions - Verifies data persistence (witness flows) across migrations - Integrated into nightly_build.yml workflow - Includes Slack notifications for migration test results This addresses the critical blocker identified by QA team for ensuring safe database migrations in production deployments. * docs: Add DB migration validation documentation - Comprehensive guide for LE-1259 implementation - Detailed test scenarios and execution details - Environment configuration and success criteria - Monitoring and troubleshooting guidelines - Placed in docs/docs/Deployment/ for easy access * fix: address PR review comments for DB migration validation - Use actual nightly tag from create-nightly-tag output instead of hardcoded :latest - Wire POSTGRES_VERSION env var into postgres service image tag - Remove unnecessary checkout steps from both migration jobs - Update step name from 'Create witness flow and credentials' to 'Create witness flow' - Add -f flag to curl commands for fail-fast behavior - Add flow creation verification with error handling - Fix version extraction logic to properly test nightly build instead of PyPI latest - Remove deprecated docker-compose version field - Remove duplicate Slack notification job (consolidated in nightly_build.yml) Addresses all 9 issues identified by @ogabrielluiz in PR review * docs: remove implementation summary from user-facing docs Per @ogabrielluiz review feedback, this file reads as an implementation summary (Jira ticket, branch name, 'Next Steps', 'Files Changed: 2') rather than user-facing documentation. The Deployment section is for end-user docs, and this content is better suited for the PR description. Also not added to sidebars.js, so would be an orphan page. * fix(workflows): address 6 issues from Gabriel's second review of DB migration validation Fixes all remaining issues identified in PR #13249 review: 1. Remove schedule trigger - only works on default branch, would cause duplicate runs 2. Fix postgres service image - hardcode to postgres:16 (env context not available in services) 3. Add curl fail-fast flags - use -fsSL for immediate failure on errors 4. Add flow ID verification - check witness data creation succeeded before proceeding 5. Remove orphaned Slack JSON - cleanup leftover from removed notify-results job 6. Fix version extraction - strip 'v' prefix for pip install (${VERSION#v}) 7. Fix Docker image reference in nightly_build.yml - pass full image path with tag 8. Fix success notification - check migration validation didn't fail All changes validated locally: - YAML syntax validation passed - Docker Compose config validated - Tag manipulation logic tested (v prefix handling) - Curl command structure verified - Test credentials marked with pragma allowlist secret comments Related: LE-1259, PR #13249 Depends on: PR #13212 (Docker volume permissions fix) * fix(ci): address all PR review blockers for DB migration validation workflow - Add auto_login token auth to all 4 API call sites (Create/Verify witness in both jobs) - Add credential witness (POST /api/v1/variables/ with type: Credential) to prove encrypted-column migrations ran correctly - Verify witness variable persists after upgrade in both jobs - Strip 'v' prefix from nightly Docker tag before docker-compose sed replacement - Fix langflow.__version__ crash - use importlib.metadata instead - Remove deprecated 'version: 3.8' from inline docker-compose YAML - Remove bogus LANGFLOW_SUPERUSER/LANGFLOW_SUPERUSER_PASSWORD env vars - Remove LANGFLOW_SKIP_AUTH_AUTO_LOGIN (only works on nightly, not stable images) - Fix shellcheck SC2016/SC2102 issues flagged by actionlint - Mark test credential values with pragma allowlist secret (false positives) - Update .secrets.baseline with known false positives in new workflow file * fix(ci): remove duplicate db-migration-validation job after merge * fix(ci): include default_fields in witness variable payloads * fix(ci): handle compressed API responses in witness verification * fix(ci): uninstall stable langflow before installing nightly in pip-venv job langflow and langflow-nightly both own the same site-packages/langflow/ namespace via a shared langflow-base dependency. Without an explicit uninstall, the stable copy wins at runtime and python -m langflow still boots the old version - meaning no nightly migration is exercised and the test produces a false positive. Explicitly uninstall langflow + langflow-base before the nightly install so the namespace is fully handed over to the nightly package. --------- Co-authored-by: Eric Hare <ericrhare@gmail.com> |
|||
| 6b2ca4bcd8 | fix: restore qdrant deps and migration workflow | |||
| 5a8c17b22d |
ci: backport bundle/nightly CI fixes from main (#13206, #13207, #13208) (#13210)
* ci: stop publishing -nightly bundle variants; release bundles on demand (#13206) Bundles (lfx-arxiv, lfx-duckduckgo) change infrequently enough that a nightly cadence is overkill. Drop the rename-to-`-nightly` and bundle publish lanes from the nightly pipeline and add a dedicated workflow_dispatch-only release_bundles.yml for purposeful releases. - nightly_build.yml: drop update_bundle_versions.py invocation and the src/bundles/*/pyproject.toml git-add guard. - release_nightly.yml: remove build-nightly-bundles and publish-nightly-bundles jobs; untether test-cross-platform and publish-nightly-main from them. - release_bundles.yml (new): build all src/bundles/* wheels, run a cross-OS install smoke test, then publish to PyPI under their stable names. Tolerates already-published versions so re-runs without a version bump are no-ops. release.yml still owns bundle publishing as part of main releases. Manual follow-up (PyPI admin): delete the lfx-arxiv-nightly and lfx-duckduckgo-nightly projects from PyPI. * ci(release_bundles): build lfx wheel locally for smoke test (#13207) The release_bundles.yml smoke test installs bundle wheels into a fresh venv, which makes uv resolve their `lfx>=X.Y,<Z` pin against PyPI. When bundles are released ahead of a matching lfx (typical case — bundles ship more often than lfx bumps land on PyPI), the resolve fails: Because only lfx<=0.4.3 is available and lfx-arxiv==0.1.0 depends on lfx>=0.5.0,<0.6.0, we can conclude that lfx-arxiv==0.1.0 cannot be used. Build the lfx wheel from the current ref in the build-bundles job and install it alongside the bundle wheels in the smoke test. The lfx wheel ships as a separate `dist-lfx-smoketest` artifact and is NOT included in the publish-bundles step — only the `dist-bundles` artifact gets pushed to PyPI. * ci(nightly): re-pin bundle lfx deps to lfx-nightly during nightly build (#13208) The nightly pipeline renames the workspace `lfx` package to `lfx-nightly` in `src/lfx/pyproject.toml` and the root workspace dep, but leaves each `src/bundles/*/pyproject.toml`'s `"lfx>=X.Y,<Z"` pin unchanged. With the workspace `lfx` gone and PyPI still on lfx 0.4.3, the create-nightly-tag job's `uv lock` fails: × No solution found when resolving dependencies for split [...] ╰─▶ Because only lfx<=0.4.3 is available and lfx-arxiv depends on lfx>=0.5.0,<0.6.0, we can conclude that lfx-arxiv's requirements are unsatisfiable. `update_lfx_version.py` now also rewrites the `lfx` (or already-rewritten `lfx-nightly`) specifier in every `src/bundles/*/pyproject.toml` to `lfx-nightly==<dev version>`, mirroring how `update_lf_base_dependency` re-pins the lfx dep inside `langflow-base`. The lookahead in the regex prevents matching sibling packages like `lfx-arxiv` / `lfx-duckduckgo`. No-op when no bundle pyprojects exist (e.g. on main today), so this is safe to merge ahead of the bundle extraction landing on main. Restored the guarded `git add src/bundles/*/pyproject.toml` step so the modified bundle pyprojects ride the same commit/tag as the rest of the nightly version bumps. Cherry-pick to release-1.10.0 to unblock nightlies cut from that branch. |
|||
| c901602bc2 |
fix(ci): rename bundles to -nightly during nightly build (#13193)
fix: rename bundles for nightly build |
|||
| 1955f8fae5 |
chore: support Python 3.14 (#13085)
* feat: upgrade Docker images to Python 3.14 (experimental) ## Changes - Update pyproject.toml: requires-python from <3.14 to <3.15 - Update all 5 Dockerfiles to use Python 3.14: - Builder stage: python3.12-trixie-slim → python3.14-trixie-slim - Runtime stage: python:3.12-slim-trixie → python:3.14-slim-trixie ## Files Updated - src/backend/base/pyproject.toml - docker/build_and_push_base.Dockerfile - docker/build_and_push.Dockerfile - docker/build_and_push_backend.Dockerfile - docker/build_and_push_with_extras.Dockerfile - docker/build_and_push_ep.Dockerfile ## Rationale Python 3.14.5 was released on May 10, 2026. Upgrading to the latest Python version should help reduce CVE vulnerabilities in Docker images. ## Testing Strategy This is an experimental change to test Python 3.14 compatibility: - Docker images will use Python 3.14 - CI/CD workflows still test on Python 3.10-3.13 - Nightly build will validate if dependencies work with 3.14 - Can be reverted quickly if issues are found ## Next Steps - Monitor nightly build for failures - If successful, update CI/CD workflows to add Python 3.14 to test matrix - If failures occur, revert and investigate compatibility issues * chore: support Python 3.14 Bump requires-python upper bound to <3.15 across langflow, langflow-base, lfx, and langflow-sdk, and add 3.14 to CI test matrices so PRs are gated on 3.14 compatibility. Conditional pins for transitive deps without 3.14 wheels at the existing caps: - onnxruntime: >=1.26 on 3.14 (existing <1.24 cap retained for 3.10) - faiss-cpu: >=1.13.2 on 3.14 (existing ==1.9.0.post1 retained for <3.14) * chore: marker-gate IBM watsonx packages for Python 3.14 ibm-watsonx-ai 1.3.x cannot import on Python 3.14: its StrEnum subclasses override __init__ in a way that conflicts with 3.14's reworked enum __set_name__ path (TypeError on KnowledgeBaseFieldRole class creation). Cap ibm-watsonx-ai, langchain-ibm, and the ibm-watsonx-orchestrate-* extras at python_version<'3.14' until upstream adapts. Watsonx component imports are already lazy, so this surfaces only at component-access time on 3.14, where the existing ImportError handler in lfx.components.ibm.__init__ degrades it gracefully. test_model_utils.py imports ChatWatsonx at module top to verify get_model_name resolves model_id; guard that import so the test module skips on 3.14 instead of breaking collection. * [autofix.ci] apply automated fixes * chore: upgrade remaining Docker images to Python 3.14 build_and_push*.Dockerfile already moved to 3.14 in the merge from feat/upgrade-python-3.14-docker-images. Apply the same bump to the dev, devcontainer, and lfx Docker images so all in-repo Dockerfiles share one Python version. * [autofix.ci] apply automated fixes * chore: gate 3.14-broken extras to python_version<'3.14' cuga (and its transitive fastembed -> py-rust-stemmers source build), altk/agent-lifecycle-toolkit (re-pulls ibm-watsonx-ai which was already gated), langchain-pinecone, langwatch, ragstack-ai-knowledge-store, and OpenDsStar all pin themselves below 3.14 upstream. Without a marker guard, the workspace lock still tries to install them and a Docker `uv sync` then attempts source builds that require Rust (CI Docker test failure with py-rust-stemmers 0.1.5). Add python_version<'3.14' (or <'3.13' for ragstack) to each pin so those packages are simply omitted from the 3.14 install set until upstream catches up. uv pip check is now clean on 3.14.2. * test: skip test_altk_agent on Python 3.14 altk (agent-lifecycle-toolkit) is gated to python_version<'3.14' upstream and now via the langflow-base [altk] extra marker. The test imports altk at module top to exercise ALTKAgentComponent; guard the import so collection skips on 3.14 instead of failing. * test: skip remaining altk tests on Python 3.14 Three more test modules import lfx.base.agents.altk_* at module top, which transitively imports altk. Add the same module-level skip guard as test_altk_agent.py: - test_altk_agent_logic.py - test_altk_agent_tool_conversion.py - test_conversation_context_ordering.py * fix(calculator): replace removed ast.Num with ast.Constant for Python 3.14 ast.Num was deprecated in Python 3.8 in favor of ast.Constant and removed entirely in 3.14. The calculator tool and its core walker crashed on 3.14 with 'module ast has no attribute Num'. Switch the isinstance checks to ast.Constant + isinstance(node.value, (int, float)), and drop the now-dead ast.Num backwards-compat branch in calculator_core.py (the ast.Constant branch already handles every input it would have matched). Update the parser unit-test fixtures to construct ast.Constant nodes. * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * test: skip LangWatch HTTP instrumentation tests on Python 3.14 langwatch is gated to python_version<'3.14' upstream. The TestLangWatchHttpInstrumentation class patches langwatch.setup and langwatch.trace inside a fixture, which requires langwatch to be importable; on 3.14 the test errors with ModuleNotFoundError. Guard the class with a skipif on langwatch availability. * test: allow IBM and altk components to be missing on Python 3.14 test_all_modules_importable enforces that every component in __all__ imports cleanly. On 3.14 the ibm-watsonx-ai, langchain-ibm, and altk packages are gated upstream and intentionally not installed, so the WatsonxAI, WatsonxEmbeddings, and ALTKAgent components fail to import as designed. - test_all_components_in_categories_importable: accept a known-gated deny-list on 3.14 instead of failing. - test_all_lfx_component_modules_directly_importable: extend the existing 'missing optional dependency' allowlist with altk, langchain_ibm, and ibm_watsonx_ai. * fix(lfx): pass ensure_exists to user_cache_dir for Python 3.14 Python 3.14 tightened PurePath.__init__ to reject unknown keyword arguments. The KeyedWorkerLockManager constructor was passing ensure_exists=True to Path() instead of user_cache_dir(), which silently worked on 3.10-3.13 but raises TypeError on 3.14 and also meant the cache directory was never actually being created. Move the kwarg to user_cache_dir() where it belongs and update the two unit tests that asserted the buggy call shape. * [autofix.ci] apply automated fixes * test: accept either ZIP or JSON error path on Python 3.14 Python 3.14's zipfile.is_zipfile() now validates the central-directory signature in addition to EOCD, so the garbage+EOCD payload no longer passes the is_zipfile() dispatch in the /flows/upload/ route. The endpoint still returns 400 with a descriptive detail (now from the JSON branch); only the message wording differs, which the test was asserting verbatim. * fix(lfx): normalize cors_origins ['*'] back to '*' on Python 3.14 Pydantic-settings on Python 3.14 parses the env var '*' into ['*'] before the cors_origins field validator runs (the list[str] | str union resolves differently than on 3.10-3.13). Collapse that back to the bare-string wildcard so downstream consumers — including warn_about_future_cors_changes and the test suite — see the same shape on every supported Python version. --------- Co-authored-by: vijay kumar katuri <vijay.katuri@ibm.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> |
|||
| a3723911e6 | fix: Restore resolved release-branch ref in nightly build (#13064) | |||
| 6e4475c139 | fix: Unblock nightly install on macOS x86_64 due OpenDsStar (#13061) | |||
| e555e470d9 |
fix: Cherry-pick nightly SDK build fixes to main (#12491)
* fix: Build and install the langflow-sdk for lfx (fixes nightly) (#12481) * fix: Build and install the langflow-sdk for lfx * Publish sdk as a nightly * Update ci.yml * Update python_test.yml * Update ci.yml * fix: Properly grep for the langflow version (#12486) * fix: Properly grep for the langflow version * Mount the sdk where needed * Skip the sdk * [autofix.ci] apply automated fixes * Update setup.py * fix(docker): Remove broken npm self-upgrade from Docker images (#12309) * fix: replace grep -oP with sed for Node.js version extraction in Docker builds (#12331) The grep -oP (PCRE regex) command fails in the python:3.12.12-slim-trixie Docker base image because PCRE support is not available in the slim variant. This replaces grep -oP with portable sed -nE in all 5 Dockerfiles and adds an empty version guard to fail fast with a clear error message instead of producing a broken download URL. --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com> Co-authored-by: vjgit96 <vijay.katuri@ibm.com> |
|||
| 5aabc74f94 |
feat: Add Windows Playwright tests to nightly builds (#12264)
* feat: Add Windows Playwright tests to nightly builds
- Add windows-latest to typescript_test.yml runner options
- Add shell: bash to all script steps for cross-platform compatibility
- Split Playwright installation into OS-aware steps (Linux uses --with-deps, Windows/macOS/self-hosted don't)
- Fix artifact naming with OS prefix to prevent conflicts: blob-report-${{ runner.os }}-${{ matrix.shardIndex }}
- Split frontend-tests into separate Linux and Windows jobs in nightly_build.yml
- Add ref parameter to all test jobs to checkout code from release branch
- Add resolve-release-branch to needs dependencies
- Update Slack notifications to handle both Linux and Windows test results
- Windows tests are non-blocking (not checked in release-nightly-build condition)
- Update .secrets.baseline with new line number (263 -> 347) for LANGFLOW_ENG_SLACK_WEBHOOK_URL
Fixes LE-566
* fix: Use contains() for self-hosted runner detection
- Replace exact string equality (==, !=) with contains() for substring matching
- Fixes issue when inputs.runs-on is array format: '["self-hosted", "linux", "ARM64", ...]'
- Ensures self-hosted Linux runners correctly skip --with-deps flag
Addresses CodeRabbit feedback on PR #12264
|
|||
| 8665ae1b33 |
fix: nightly now properly gets 1.9.0 branch (#12215)
before it was attempting to pull release-notes as letters are alphanumerically after numbers when we sort -V then grab tail now we only look at branch names that follow the pattern '^release-[0-9]+\.[0-9]+\.[0-9]+$' |
|||
| 8dbcbb0928 |
chore: release nightlies from of release branch (#12181)
* chore: release nightlies from of release branch in preperation for the new release cycle strategy we will move the nightly to be run off the latest release branch. One caveat worth documenting: When we create the release branch we need to bump the verions for base and main immediately or else the ngihtly will run off the branch but will use a preveious release tag I also do not know how to deal with `merge-hash-history-to-main` in this case * chore: address valid code rabbit comments add clear error when branch does not exist make sure valid inputs is respected in the rest of the jobs/steps release_nightly.yml now uses nightly_tag_release instead of the old nightly_tag_main |
|||
| 67d56947e8 |
chore: remove hash history (#12183)
* Remove hash history Custom component checks will be done directly through the component index. Removing hash history as it no longer fits into any planned functionality. * [autofix.ci] apply automated fixes * baseline format fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> |
|||
| 1db3ae043e |
chore: use self hosted ephemeral runner (#11253)
* chore: use self hosted ephemeral runner
In November and periodically since we have ran into issue with runners hanging and not properly cleaning themselves up causing our CI/CD pipeline to fail due to timeout or self canceling.
* chore: add actionlint for selfhosted runners
* fix: skip nightly test when skip flags are set
* fix: json string format
* chore: change to use run_on string directly
${{ inputs['runs_on'] || github.event.inputs['runs_on'] || 'ubuntu-latest' }}
* chore: use self hosted ephemeral runner
* chore: use self hosted ephemeral runner
* chore: use self hosted ephemeral runner
* chore: revert ephemeral runner testing changes, restore main-only guards
---------
Co-authored-by: vijay kumar katuri <vijay.katuri@ibm.com>
|
|||
| 41caeb9c01 |
ci: use correct labeling for nightly hash update workflow step (#11492)
* Fix merging of nightly hash update to main * Add testing flag for just merge pr * fix' * try conditional logic to skip jobs * fix conditional * checkout new branch only pull in night hash * add hash history back * Remove test flag * fix conditionals |
|||
| a097b685fd |
ci: add hash history script to nightly workflow (#11409)
* Add nightly hash history script to nightly workflow * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * Add lfx-nightly to script * Handle first run * Try fixing version on nightly hash history * remove lfx lockfile since it does not exist * Get full version in build, handle the [extras] in pyprojects * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * language update * Handle extras in langflow-base dependency in all workflows * [autofix.ci] apply automated fixes * Fix import in lfx status response * [autofix.ci] apply automated fixes * Use built artifact for jobs, remove wait period * use [complete] when building test cli job * skip slack message added to success * Update merge hash histry job to only run when ref is main * Updates pyproject naming to add nightly suffix * [autofix.ci] apply automated fixes * Fix ordering of lfx imports' * [autofix.ci] apply automated fixes * Ah, ignore auto-import fixes by ruff * [autofix.ci] apply automated fixes * update test to look at _all_ exported instead * [autofix.ci] apply automated fixes * perf: Limit enum options in tool schemas to reduce token usage (#11370) * fix current date tokens usage * Update src/lfx/src/lfx/io/schema.py * remove comment --------- Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com> * update date test to reflect changes to lfx * ruff * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com> Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com> |
|||
| fe124ed253 |
fix: nightly temporalio dep (#11251)
* fix: temporalio dep missing for macos-amd64 temporalio dep missing for macos-amd64 * chore: pin pydantic-ai version dependent on system * chore: add ci solution again * chore: use macos-15-intel runner explicitly * chore: revert back to working state * chire: code rabbit refinements * fix: properly skip test when skip flags are set * chore: code rabbit refinements stable |
|||
| 5211855941 |
chore: merge 1.7.1 back into main (#11129)
* docs: update component links to individual pages (#10706) * Revert "Revert "docs: update component documentation links to individual pages"" This reverts commit |
|||
| 12d17dc0db |
fix(ci): Allow prerelease packages and fix runtime type imports (#10945)
Co-authored-by: Adam Aghili <Adam.Aghili@ibm.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> |
|||
| 79d02f201b | ci: bump actions/checkout to v6 (#10697) | |||
| bfbaeab63b |
fix: Remove remote docling VLM component (#10547)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Adam Aghili <Adam.Aghili@ibm.com> |
|||
| f4ba646f21 |
build: upgrade to 1.7.0 (#10418)
* Update version to 1.6.7 * bump lfx too * choosed current versino in openapi.json of 1.6.5 vs 1.6.7 * choosed current versino in openapi.json of 1.6.5 vs 1.6.7 * more version bumps * missed this one * change pypi_nightly_tag.py version to read it from pyproject.toml directly * get_latest_version was missing arg build_type * naming error * using lfx logic to explore for MAIN_PAGE * using lfx logic to explore for MAIN_PAGE * allow --prerelease * change script in nightly_build * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes (attempt 2/3) * [autofix.ci] apply automated fixes (attempt 3/3) --------- Co-authored-by: Olfa Maslah <olfamaslah@Olfas-MacBook-Pro.local> Co-authored-by: Olfa Maslah <olfamaslah@macbookpro.war.can.ibm.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> |
|||
| fa21c4e5f1 | ci: Improve Slack notifications for nightly build status (#10244) | |||
| b3eb218f2e |
ci: ensure nightly docker builds are published when running via cron job (#10292)
Ensure nightly docker builds are published when running via cron job |
|||
| 3fe1fa7d01 |
ci: add nightly_build failure notification (#10158)
* ci: add nightly_build failure notification add nightly_build failure notification that should be sent to #langflow-eng * chore: address jordan and coderabbit comments --------- Co-authored-by: Adam Aghili <Adam.Aghili@ibm.com> |
|||
| 6ce943e0b3 |
ci: allow releasing from branch (#9988)
* Try skipping gha cache * simplify docker builds * remove workflow dispatch options from workflows that shouldn't be run manually * Update nightly docker build and add option to skip testing for nightly releases * simplify version fetching for both release workflows * revert docker-build v1 to original * remove removed input * Add push to registry flag for full workflow and add warning in old docker build workflow * Add uv setup * Add uv setup again * Try esbuild js native build * require a valid tag for release * Echo inputs * Reference inputs correctly * Try updating conditional * removes lfx temporarily for the 1.6 release * Fix boolean comparison * Add flag to allow creation of github release after pypi already exists * Add always to make it run * Use correct tag and remove commit since it's the tag for release * allow updates * Revert the lfx removals and flags to allow building without releasing * standardize conditional inputs * clean version check * temporary skip of jobs in release; revert me * Add arm64 to options * Try rustflags env var * echo the should_run_ci as well |
|||
| 7792b7aeaf |
build(deps):(deps): bump actions/checkout from 4 to 5 (#9646)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org> |
|||
| be18541415 | chore: Update CI workflows to use bigger runner (#9915) | |||
| 928e549260 |
ci: change default to ubuntu-latest (#9843)
|
|||
| b42c5f0245 | ci: Add configurable runner options for CI workflows (#9842) | |||
| 52856ff964 | ci: Add LFX release workflow and update nightly build script (#9663) | |||
| aaaaed1e59 |
feat: introduce lfx package (#9133)
* docs: add README for lfx CLI tool - Created a comprehensive README for the lfx command-line tool, detailing installation instructions, command usage, and examples for both `serve` and `execute` commands. - Included sections on input sources and development setup to enhance user understanding and facilitate contributions. * fix: update import paths and test assertions in queryInputComponent.spec.ts - Modified import statements to reflect the new module structure, changing `langflow` to `lfx` for consistency. - Adjusted test assertions to ensure proper syntax and functionality, enhancing the reliability of the test suite. * fix: streamline test assertions and update import paths in tabComponent.spec.ts - Refactored test assertions for tab visibility to improve readability and maintainability. - Updated import paths from `langflow` to `lfx` for consistency with the new module structure. - Ensured proper syntax in test cases to enhance the reliability of the test suite. * fix: skip table input component test due to UI event conflicts - Marked the test for user interaction with the table input component as skipped due to conflicts between double-click and single-click events. - Added a comment to indicate the need for further investigation into event handling issues affecting this branch. * fix: update CLI test cases to include 'serve' command - Modified test cases in `test_serve_simple.py` to include the 'serve' command in the CLI invocation, ensuring accurate testing of command behavior. - Adjusted assertions to maintain consistency and reliability in test outcomes when handling various scenarios, such as missing API keys and invalid JSON inputs. * feat: implement LFX nightly release workflow in GitHub Actions - Added a new job for releasing LFX nightly builds, including steps for checking out code, setting up the environment, installing dependencies, verifying versioning, building the package, testing the CLI, publishing to PyPI, and uploading artifacts. - Introduced a wait step for PyPI propagation to ensure successful package availability post-release. - Refactored existing release job structure to accommodate the new LFX workflow while maintaining the Langflow nightly base release process. * refactor: Simplify flow execution validation by removing unnecessary asyncio.wait_for calls Updated the validate_flow_execution function to directly use the client.post and client.get methods with a timeout parameter, improving code readability and maintainability. This change eliminates redundant timeout handling while ensuring consistent timeout values across API calls. * refactor: Enhance template tests for improved structure and validation Refactored the template tests in `test_starter_projects.py` to utilize parameterization for better readability and maintainability. Introduced helper functions to retrieve template files and disabled tracing for all tests. Updated individual test methods to validate JSON structure, flow execution, and endpoint validation, ensuring comprehensive coverage of template functionality. This change streamlines the testing process and enhances the robustness of the test suite. * refactor: Update project metadata and import paths in starter project JSON files Modified the metadata section in multiple starter project JSON files to reflect updated code hashes and module paths, transitioning from 'lfx' to 'langflow' components. This change enhances consistency across the codebase and ensures that the correct modules are referenced for improved maintainability and clarity. * chore: Update template test commands to utilize parallel execution Modified the commands in the Makefile and CI workflows to include the `-n auto` option for pytest, enabling parallel test execution for the starter project template tests. This change enhances test performance and efficiency across the codebase. * chore: Remove news-aggregated.json file Deleted the news-aggregated.json file * chore: Update .gitignore to include new files Added entries for *.mcp.json, news-aggregated.json, and CLAUDE.md to the .gitignore file to prevent these files from being tracked in the repository. * refactor: Update module paths and code hashes in starter project JSON files Modified the metadata section in multiple starter project JSON files to transition module paths from 'langflow' to 'lfx' components and updated code hashes accordingly. This change enhances consistency and maintainability across the codebase, ensuring that the correct modules are referenced. * refactor: Remove debug logging from module processing function Eliminated the debug log statement in the _process_single_module function to streamline logging output. This change enhances code clarity and reduces unnecessary log clutter during module processing. * refactor: Update import paths and clean up component exports Modified import statements to transition from 'langflow' to 'lfx' in the field_typing module and adjusted component exports in various modules by removing unused components. This change enhances code organization and maintainability across the codebase. * fix: Add timeout header to flow execution validation test Updated the headers in the flow execution validation test to include a timeout value. This change ensures that the test accurately reflects the expected behavior of the validate_flow_execution function when handling timeouts, enhancing the robustness of the test suite. * fix: Add timeout to mock client delete assertion in flow execution validation test Updated the mock client delete assertion in the flow execution validation test to include a timeout value. This change ensures that the test accurately reflects the expected behavior when handling timeouts, contributing to the robustness of the test suite. * refactor: Update Dockerfile to use Alpine-based Python image and install build dependencies Changed the base image in the Dockerfile to an Alpine-based Python image for a smaller footprint. Added installation of necessary build dependencies for Python packages on Alpine. Updated user creation to follow best practices for non-root users. This change enhances the efficiency and security of the Docker build process. * refactor: move development mode toggle functions in settings to lfx Introduced `_set_dev` and `set_dev` functions in `settings.py` to manage the development mode flag. Updated import path in `base.py` to reflect the new function location. This change enhances the configurability of the development environment. * feat: Register SettingsServiceFactory in service manager Added registration of the SettingsServiceFactory in the service manager if it is not already present. This change ensures that the settings service is available for retrieval, enhancing the functionality of the service management system. * feat: Add global variable validation option to serve and execute commands Introduced a new option to the serve and execute commands to check global variables for environment compatibility. This enhancement allows users to validate their configurations before execution, improving robustness and error handling in the application. Validation errors are reported clearly, and users can choose to skip this check if desired. * refactor: Remove unused development mode functions from settings Eliminated the `_set_dev` and `set_dev` functions from `settings.py` and their associated validator in `base.py`. This change simplifies the code by removing unnecessary functions, enhancing maintainability and clarity in the settings management. * fix: Update load_graph_from_path to include verbose parameter in JSON handling Modified the `load_graph_from_path` function to accept the file suffix as an argument when loading JSON graphs. Updated related tests to ensure correct behavior with the new parameter, including assertions for verbose logging. This change enhances error handling and logging clarity during graph loading operations. * [autofix.ci] apply automated fixes * refactor: Update import paths for version utilities in settings Changed the import statements in `base.py` to source version utility functions from `lfx.utils.version` instead of `langflow.utils.version`. Additionally, added the `is_pre_release` function to `version.py` to check for pre-release indicators in version strings. This refactor improves code organization and aligns with the updated module structure. * feat: Add BuildStatus schema for API compatibility Introduced a new BuildStatus class in the schema module to define the structure for build status responses. This addition enhances API compatibility by providing a standardized way to convey build status, including optional message and progress fields. Updated import paths in the cache utility to reflect the new schema location. * refactor: Update import path for EventManager in component_tool.py Changed the import statement for EventManager to reflect its new location in the lfx.events module. This update improves code organization and maintains consistency with the updated module structure. * refactor: Improve file upload handling in SaveToFileComponent Updated the _upload_file method to dynamically import necessary functions for file upload, enhancing error handling for missing Langflow functionality. Refactored session management to use async context with session_scope, improving code clarity and maintainability. * refactor: Enhance import handling in MCPToolsComponent for Langflow dependencies Updated the MCPToolsComponent to dynamically import Langflow-related functions within a try-except block, improving error handling for missing functionality. This change ensures that users receive a clear message when the Langflow MCP server features are unavailable, enhancing robustness and maintainability of the code. * refactor: Update JSON handling in JSONDocumentBuilder to use orjson directly Replaced the use of orjson_dumps with orjson.dumps for serializing documents in the JSONDocumentBuilder class. This change improves performance and simplifies the code by directly utilizing orjson for JSON serialization, enhancing overall code clarity and maintainability. * refactor: Improve error handling for Langflow Flow model import in get_flow_snake_case Updated the get_flow_snake_case function to dynamically import the Flow model within a try-except block. This change enhances error handling by providing a clear message when the Langflow installation is missing, improving the robustness and maintainability of the code. * chore: Add orjson as a dependency in project configuration Included orjson in both the uv.lock and pyproject.toml files to ensure proper JSON handling and serialization capabilities. This addition enhances the project's performance and maintains consistency in dependency management. * [autofix.ci] apply automated fixes * refactor: Convert execute function to async and update JSON flow loading Refactored the execute function to be asynchronous using syncify, allowing for non-blocking execution. Updated the JSON flow loading to utilize aload_flow_from_json for improved performance. Adjusted the results handling to support asynchronous graph execution, enhancing overall code efficiency and maintainability. * refactor: Enhance import handling for Langchain dependencies in validate.py and constants.py Updated the validate.py file to suppress LangChainDeprecationWarning during dynamic imports. In constants.py, renamed DEFAULT_IMPORT_STRING for clarity and added a conditional import string based on the presence of the Langchain module. These changes improve error handling and maintainability of the code. * refactor: Improve error handling and output formatting in execute function Enhanced the execute function by introducing a dedicated output_error function for consistent error messaging in both JSON and verbose formats. Updated error handling throughout the function to utilize this new method, improving clarity and maintainability. Adjusted the handling of input sources and validation errors to provide more informative feedback to users. * feat: Add simple chat flow example with JSON and Python integration Introduced a new simple chat flow example demonstrating the use of ChatInput and ChatOutput components. This includes a JSON configuration file and a Python script that sets up a basic conversational flow, enhancing the documentation and usability of Langflow for users. Additionally, integration tests have been added to validate the execution of the flow, ensuring robust functionality. * refactor: Update message extraction to use json.dumps for improved serialization Modified the extract_message_from_result function to utilize json.dumps with ensure_ascii=False for better JSON serialization of message content. This change enhances the output formatting and maintains consistency in handling message data. * feat: Add initial graph module with core components Introduced a new graph module in Langflow, including essential classes such as Edge, Graph, Vertex, and specific vertex types (CustomComponentVertex, InterfaceVertex, StateVertex). This addition enhances the modularity and functionality of the codebase, laying the groundwork for future graph-related features. * feat: Add pytest collection modification for automatic test markers Implemented a new function to automatically add markers to test items based on their file location. This enhancement categorizes tests into unit, integration, and slow tests, improving test organization and clarity in both the backend and lfx test suites. * chore: Update test configuration for improved organization and clarity Modified the test paths and markers in both the main and lfx pyproject.toml files. Added new markers for unit, integration, and slow tests, enhancing test categorization. Removed the redundant pytest.ini file to streamline configuration management. * chore: Update project description in pyproject.toml Revised the project description to provide a clearer overview of LFX (Langflow Executor) as a lightweight CLI tool for executing and serving Langflow AI flows. This change enhances the documentation and helps users better understand the project's purpose. * [autofix.ci] apply automated fixes * chore: Remove redundant per-file ignores from pyproject.toml Eliminated unnecessary linting ignores for scripts and backend tests in the pyproject.toml file. This streamlines the configuration and improves clarity in the project's linting setup. * chore: Update Dockerfile project description for clarity Revised the project description in the Dockerfile to reflect the correct name of the CLI tool as "LFX - Langflow Executor CLI Tool." This change improves clarity and aligns with the project's branding. * feat: Introduce 'run' command for executing Langflow workflows Renamed the 'execute' command to 'run' in the lfx CLI for consistency and clarity. Updated the README documentation to reflect this change, including command usage examples. Added a new run.py module that implements the run command functionality, allowing users to execute Langflow workflows from Python scripts or JSON files. Comprehensive unit and integration tests have been added to ensure robust functionality and error handling for the new command. * fix: Update test command in Makefile to include all tests Modified the test command in the Makefile to run all tests located in the 'tests' directory instead of just the 'unit' tests. This change ensures comprehensive test coverage during the testing process. * chore: Clean up pyproject.toml formatting and linting ignores Adjusted the formatting of the members list in the [tool.uv.workspace] section for improved readability. Removed a redundant linting ignore from the ignore list, streamlining the configuration and enhancing clarity in the project's linting setup. * docs: Update README.md with environment variable requirement and command examples Added a note about the necessity of setting the `LANGFLOW_API_KEY` environment variable before running the server. Updated command examples to reflect the correct flow ID display and included additional options for the `uv run lfx` commands, enhancing clarity and usability for users. * feat: Add LFX release workflow and release script Introduced a comprehensive GitHub Actions workflow for managing LFX releases, including version validation, testing across multiple Python versions, building and publishing to PyPI, and creating Docker images. Additionally, added a Bash script for local release preparation, which updates versioning in relevant files, runs tests, and facilitates the release process with dry-run capabilities. This enhancement streamlines the release workflow and ensures robust version management. * feat: Add hypothesis to development dependencies Included the 'hypothesis' library in both the uv.lock and pyproject.toml files to enhance testing capabilities with property-based testing. This addition supports more robust test coverage and improves the overall quality of the codebase. * feat: Enhance Makefile with release operations and version bumping Added new targets to the Makefile for checking the current version, preparing for releases, and bumping the version. The `prepare_release` target outlines next steps for the release process, while `bump_version` allows for version updates directly from the Makefile, improving the release workflow and version management. * Temporarily modify nightly build to publish release lfx * fix version * fix versions * skip tests * Revert changes to run release lfx * refactor: Change logger warning to trace for environment variable loading Updated the logging level from warning to trace in the `update_params_with_load_from_db_fields` function to provide more granular logging when loading variables from environment variables due to the unavailability of the database. This change enhances the debugging capabilities without altering the functionality. * chore: Update project description in pyproject.toml Modified the project description in the pyproject.toml file for clarity, removing the acronym "LFX" to enhance understanding of the Langflow Executor's purpose as a CLI tool for executing and serving Langflow AI flows. * docs: Update README for inline JSON format clarification Revised the README to reflect changes in the inline JSON format for commands, ensuring consistency in the structure by including "data" as a key for nodes and edges. This update enhances clarity for users on how to properly format their JSON input when using the CLI. * fix: Update message extraction logic in script_loader.py Refactored the `extract_message_from_result` and `extract_text_from_result` functions to improve message handling. The changes include parsing JSON directly from the message's model dump and adding type checks to handle both dictionary and Message object types. This enhances robustness and ensures proper extraction of text content. * feat: Add complex chat flow example and enhance test coverage Introduced a new script `complex_chat_flow.py` demonstrating a multi-component chat flow, showcasing the integration of `ChatInput`, `TextInput`, `TextOutput`, and `ChatOutput`. Enhanced unit tests in `test_script_loader.py` to validate loading and execution of real scripts, ensuring proper graph structure and result extraction. This improves the robustness of the testing framework and provides a practical example for users. * refactor: Enhance unit tests for FastAPI serve app with real graph data Updated unit tests in `test_serve_app.py` to utilize real graph data from JSON files, improving test accuracy and coverage. Replaced mock graph instances with real graphs created from payloads, ensuring better alignment with actual application behavior. This change enhances the robustness of the testing framework and prepares for future feature expansions. * refactor: Update unit tests to utilize real graph data and improve structure Refactored unit tests in `test_serve_components.py` to replace mock graph instances with real graphs created from JSON data. This change enhances the accuracy and robustness of the tests, ensuring better alignment with actual application behavior. Additionally, removed the `create_mock_graph` function in favor of a new `create_real_graph` function, streamlining the test setup process. * test: Increase timeout for selector in Prompt Chaining tests Updated the timeout for the selector waiting for "built successfully" in the Prompt Chaining integration tests from 30 seconds to 60 seconds. This change aims to enhance test reliability by allowing more time for the expected output to appear, particularly in environments with variable performance. * feat: Add nightly build and publish workflow for LFX Implemented a new GitHub Actions workflow for building and publishing the LFX package nightly. This includes steps for checking out the code, setting up the environment, installing dependencies, verifying the package name and version, building the distribution, testing the CLI, and publishing to PyPI. The workflow is designed to run conditionally based on input parameters, enhancing the CI/CD process for LFX. * refactor: Remove redundant re-export comments across multiple modules * fix: Update __all__ to include Component in custom_component module * Move all of message_original to lfx * refactor: Update component module to improve imports and maintain backward compatibility * refactor: Clean up imports and remove unnecessary TYPE_CHECKING block * refactor: Remove enhanced Data class and update imports for backward compatibility * refactor: Enhance pytest configuration to check for langflow installation and update error handling * Refactor import statements in component modules to use new import structure - Updated import paths in various component files to reflect the new structure under . - Ensured all components are correctly importing their respective modules. - Added unit tests for dynamic imports and import utilities to validate the new import system. * [autofix.ci] apply automated fixes * fix: update import paths to use the new lfx structure across multiple components * style: run pre-commit on all files * fix: move dotdict import inside TYPE_CHECKING block for better performance * feat: add MCP session management settings and update knowledge bases directory * fix: update module paths and code hashes in Knowledge Ingestion and Retrieval JSON files * fix: reorder imports for better organization and readability * fix: update KBRetrievalComponent module path and code hash - Changed module path from `langflow.components.data.kb_retrieval.KBRetrievalComponent` to `lfx.components.data.kb_retrieval.KBRetrievalComponent`. - Updated code hash to reflect recent changes in the KBRetrievalComponent implementation. - Refactored import statements and adjusted the logic for handling knowledge bases and embeddings. * fix: move parse_api_endpoint import inside try block for better error handling * refactor: clean up base.py by removing unused imports and code * fix: update version and revision in pyproject.toml and uv.lock files * refactor: remove unused validation functions and imports from validate.py * fix: handle langflow import conditionally and adjust code references * fix: update version to 0.1.3 in pyproject.toml and uv.lock files * refactor: update code handling in utils.py for custom components - Refactored the _generate_code_hash function to remove the class_name parameter, simplifying its signature and improving clarity. - Introduced a new function, get_module_name_from_display_name, to convert display names into valid module names. - Updated references to custom_component.code to custom_component._code for consistency across the codebase. - Enhanced error handling during code hash generation to log exceptions, improving debugging capabilities. - Adjusted metadata handling in build_custom_component_template functions to derive module names when not provided, ensuring accurate metadata generation. * [autofix.ci] apply automated fixes * refactor: update type hinting for Graph in load.py * refactor: implement lazy initialization for storage service in ParameterHandler * feat: add timing option to run function for performance measurement * refactor: implement lazy initialization for tracing service in Graph class * feat: add lazy initialization for tracing service in CustomComponent * refactor: implement lazy initialization for storage service in Vertex and loading functions * bump: update version to 0.1.4 in pyproject.toml and uv.lock * feat: add UUID generation for session_id in LCAgentComponent * fix: import sqlmodel conditionally in get_flow_snake_case to avoid ImportError * feat: conditionally import model components to enhance modularity and avoid ImportError * feat: implement lazy loading for agent and data components to enhance modularity * fix: conditionally filter OpenAI inputs and handle empty case in AgentComponent * refactor: enhance verbose logging and error handling in run function * fix: update USER_AGENT assignment to use importlib for better compatibility * fix: change async methods to synchronous in Component class for toolkit conversion * feat: add complete agent example with setup instructions and dependencies in README * [autofix.ci] apply automated fixes * fix: update import paths from langflow to lfx for consistency across test files * fix: bump version to 0.1.5 in pyproject.toml and uv.lock * fix: enhance _get_tools method to handle both sync and async calls * fix: bump version to 0.1.6 in pyproject.toml and uv.lock * fix: streamline _get_tools method to handle sync and async calls more efficiently * feat: implement lazy loading for searchapi components * feat: add dynamic imports and lazy loading for component modules * feat: implement lazy loading for NotDiamondComponent * fix: add type check for source_code in _generate_code_hash function * test: add error handling for missing langchain-openai dependency in class import * fix: update error handling for None source in _generate_code_hash function and correct import paths * fix: improve error handling for dynamic imports and update import paths in tests * fix: enhance error handling for dynamic imports and ensure proper caching behavior * fix: improve error handling for missing modules in import_mod function * fix: enhance dynamic imports with on-demand discovery and improved error handling * fix: update error handling in tests to raise ModuleNotFoundError for missing dependencies * fix: update version to 0.1.7 in pyproject.toml and uv.lock * fix: update version to 0.1.8 in pyproject.toml and uv.lock; enhance README with flattened component access examples * [autofix.ci] apply automated fixes * fix: update import path for Graph in composio_base.py * merge the createl-lfx changes into the Component * update code in templates * feat: Add simple agent flow example in test data * feat: Add LFX commands as a sub-application in the main app * feat: Add tests for simple agent workflow execution via lfx run * fix: update import for KeyedMemoryLockManager to maintain consistency * refactor: remove unused imports from various modules for cleaner code * refactor: remove unused import of aget_messages for cleaner code * update manager in lfx * update logger to use lfx * rename lfx_logging to logs * refactor: remove loguru dependency and add structlog * chore: update starter project files for consistency * refactor: update logger calls to use exc_info for better error reporting * refactor: update import paths to use lfx module instead of langflow * move vector store components for various databases - Implement PGVector store component for PostgreSQL with search capabilities. - Implement Pinecone store component with support for various distance strategies. - Implement Qdrant store component with customizable server settings. - Implement Supabase store component for vector storage and retrieval. - Implement Upstash store component with metadata filtering options. - Implement Vectara store component with RAG capabilities and document management. - Implement Weaviate store component with support for API key authentication and capitalized index names. - Add dynamic imports for all new components to facilitate lazy loading. * refactor: reorder import statements for better organization * refactor: improve dynamic import handling for Chroma components * refactor: update test for ChromaVectorStoreComponent to check for import errors * refactor: update __init__.py to import all components from lfx and improve attribute forwarding * refactor: add forwarding for langflow components to lfx counterparts * refactor: simplify mock setup in component_setup method * refactor: update module references from langflow.logging to lfx.logs in test_logger.py * refactor: enhance test structure for simple agent workflow in lfx run * Refactor logging imports and update code snippets in JSON configuration files - Changed logger import from `lfx.lfx_logging.logger` to `lfx.logs.logger` in multiple components. - Updated code snippets in Travel Planning Agents, ChatInputTest, LoopTest, and TwoOutputsTest JSON files to reflect the new logger import. - Ensured consistency in code formatting and structure across the affected files. * docs: update README to clarify installation and usage instructions * refactor: update import paths from langflow to lfx in multiple component __init__.py files * refactor: improve test structure and organization in test_run_command.py * refactor: clean up unused imports and improve code organization in kb_ingest.py * refactor: update test data structure in ChatInputTest.json, LoopTest.json, and TwoOutputsTest.json * refactor: update dynamic imports and __all__ exports in vectorstores __init__.py * refactor: clean up and organize test files for MCP and KB components * refactor: update import paths in test_kb_ingest.py and test_kb_retrieval.py to use lfx namespace * refactor: update structure and organization of Knowledge Ingestion JSON file * [autofix.ci] apply automated fixes * rename lfx.logs to lfx.log to avoid gitignore * refactor: alias run command in LFX app to lfx_run for clarity * refactor: update import path for validate_code to improve clarity * [autofix.ci] apply automated fixes * revert docs changes for now * [autofix.ci] apply automated fixes * fix: mark DataFrame as unhashable due to mutability * refactor: update function signatures to use keyword-only arguments for clarity * fix: update import paths from langflow to lfx for consistency * refactor: reorganize imports and ensure create_input_schema_from_json_schema is consistently defined * fix: update import statement for Action to use the correct path * refactor: remove TYPE_CHECKING import for DataFrame to streamline code * refactor: clean up import statements for improved readability * refactor: remove unused imports and enhance code clarity * refactor: improve test structure and organization in test_import_utils.py * fix: update logger configuration to use environment variable for log level * fix: remove default log level configuration and set logger initialization * fix: enhance logger configuration to prevent redundant setup and improve cache handling * fix: improve cache handling in logger configuration to prevent unintended defaults * fix: enhance logger configuration to prevent redundant setup and improve early-exit logic * fix: remove defensive comment in logger configuration for clarity * fix: update project templates for consistency and clarity * fix: refactor field handling in set_multiple_field_advanced and set_current_fields for improved clarity and consistency * fix: update error message in import_mod test for clarity and specificity * fix: change _get_tools method from async to synchronous for consistency * fix: update error handling in test_module_not_found_error_handling for clarity * fix: update import statements in test_custom_component for consistency * fix: update import statements in test_custom_component_endpoint for consistency * fix: remove SupabaseComposioComponent from dynamic imports and __all__ for consistency * fix: mock log method in component_setup to avoid tracing service context issues * fix: adjust uniqueness threshold for code hashes to account for legitimate sharing * fix: update test for structured output to support NVIDIA models and handle errors appropriately * fix: update logger patches and modify pandas inclusion test in validate.py * fix: update import path for langflow module in get_default_imports function * fix: replace hard assertions with informative prints in performance tests to avoid CI failures * fix: ensure all component modules are importable after dynamic import refactor * fix: enhance composio compatibility checks and improve import handling for Action enum * fix: remove compatibility check for composio components and always expose all components * fix: update Slack component documentation link to ensure accuracy * fix: remove 'Agent' from skipped components list in constants * fix: remove await from CurrentDateComponent instantiation in AgentComponent * fix: Filter out None values from headers in URLComponent * update starter projects hat use url compoennt * feat: add processing components and converter utilities * fix: add OpenAI constants forward import * chore: update Knowledge Ingestion starter project structure * fix: correct parameter usage in set_multiple_field_display function * fix: update set_field_display function signature to remove unnecessary keyword argument * feat: implement backwards compatibility layer and add OpenAI response schemas * fix: update version to 0.1.9 in pyproject.toml and uv.lock * feat: add compatibility for langflow.components and related helper modules * fix: update version to 0.1.10 in pyproject.toml and uv.lock * fix: remove unnecessary import and update message type check in convert_message_to_data method * fix: enhance attribute access in LangflowCompatibilityModule with caching * fix: update import paths in Data class to use lfx module * fix: add comment to clarify import and re-export purpose in message.py * fix: remove unused code and improve flow data checks in openai_responses.py * fix: update LoopTest.json structure for improved data representation * fix: update test_api_schemas.py for improved hypothesis testing configurations * fix: update hypothesis strategies for improved test coverage in test_api_schemas.py * fix: remove unused code and improve structure in __init__.py * refactor: add knowledge base components for ingestion and retrieval in lfx - Implemented KnowledgeIngestionComponent for creating and updating knowledge bases from DataFrames. - Added KnowledgeRetrievalComponent for searching and retrieving data from knowledge bases. - Introduced dynamic imports for knowledge base components in the main module. - Created utility functions for managing knowledge base metadata and embeddings. - Enhanced error handling and logging for better debugging and user feedback. * fix: enhance convert_to_dataframe function to handle pandas DataFrame and improve type conversion * refactor: remove knowledge base components and related imports for cleanup * fix: update TypeConverterComponent to include pandas as a dependency and enhance convert_to_dataframe function for better DataFrame handling * fix: update imports for knowledge_bases module and enhance compatibility in langflow.base * refactor: remove unused imports and simplify backwards compatibility module in langflow.base.data * refactor: streamline inputs module by removing unused code and maintaining compatibility layer * refactor: remove unused classes and streamline input handling in inputs.py * Update language model components across multiple starter projects to include new dependencies and model options - Standardized description format for language model components. - Added metadata for dependencies including langchain packages and lfx. - Updated model options to include new versions such as gpt-5 and its variants. - Ensured consistency in the structure of JSON files for various starter projects including Market Research, Meeting Summary, Memory Chatbot, Portfolio Website Code Generator, Research Agent, and others. * fix: update import path for custom component - Changed the import path for the `Component` class from `lfx.custom.custom_component.component` to `langflow.custom.custom_component.component` in the `Youtube Analysis.json` file. * refactor: update component IDs and streamline connections in Custom Component Generator * refactor: standardize formatting of source and target handles in Custom Component Generator * refactor: update component IDs and streamline connections in Custom Component Generator * [autofix.ci] apply automated fixes * fix: revert name change in Custom Component Generator --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Jordan Frazier <jordan.frazier@datastax.com> |
|||
| 09de4d1532 | chore: add required API key secrets for CI workflows (#8877) | |||
| e2b3c607f2 |
ci: change nightly to run in UTC time to fix nightly-status check (#8629)
Change nightly to run in UTC time |
|||
| b378eb81d0 |
chore(ci): replace local uv setup action with astral-sh/setup-uv@v6 (#8491)
* chore: remove setup-uv action configuration file as it is no longer needed * chore: update setup-uv action to use the official action across all workflows * chore: disable cache pruning in all workflows to improve build stability * chore: update Python version to 3.13 and add pre-release description in workflows |
|||
| 7ff6b1ae34 |
chore: fix small typo in grep command (#7353)
* fix: ensure consistent version extraction for langflow-base in workflows Updated version extraction commands in multiple workflow files to consistently use 'head -n 1' for retrieving the first occurrence of the langflow-base version. This change improves reliability in version detection across docker-build, nightly_build, python_test, release_nightly, and release workflows. * fix: correct version extraction command in nightly build workflow Removed an extraneous quote from the version extraction command in the nightly_build.yml workflow file to ensure proper execution and reliability in retrieving the langflow-base version. |
|||
| 62aef0b8ed |
chore: Ensure consistent version extraction for langflow-base in workflows (#7352)
fix: ensure consistent version extraction for langflow-base in workflows Updated version extraction commands in multiple workflow files to consistently use 'head -n 1' for retrieving the first occurrence of the langflow-base version. This change improves reliability in version detection across docker-build, nightly_build, python_test, release_nightly, and release workflows. |
|||
| 0886bdad16 |
feat: Use pyproject standardized dependency-groups (#6689)
* Use pyproject standardized dependency-groups * fix: update Python version requirement to support up to 3.14 --------- Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org> |
|||
| 41edba73c9 | feat: Add support for Python 3.13 (#6685) | |||
| 8a4fc2c338 | ci: Update nightly build workflow to delete existing main tags before generating new ones (#5694) | |||
| 03d64d21b4 |
ci: Update Python version matrix in CI workflows to exclude 3.13 (#5305)
ci: Update Python versions in GitHub Actions workflows to remove 3.13 - Modified the Python version matrix in both `nightly_build.yml` and `python_test.yml` to exclude Python 3.13, ensuring compatibility and streamlining the testing process. - This change enhances the clarity of the supported Python versions in the CI configuration. |
|||
| f6d4c204da |
ci: Update GitHub Actions workflow to include Python 3.13 (#5240)
* chore: add Python 3.13 to GitHub Actions workflow matrix * chore: update GitHub Actions workflow to include Python 3.13 in the testing matrix * Add Python 3.13 to nightly build test matrix |
|||
| e4cf3e2b9b |
test: Enhance frontend testability with data attributes and integration tests (#4948)
* ✨ (ChatCodeTabComponent.tsx): add data-testid attribute to ChatCodeTabComponent for testing purposes 🔧 (TemplateCardComponent/index.tsx): add data-testid attribute with dynamic value for testing 🔧 (sidebarDraggableComponent/index.tsx): import convertTestName function and add data-testid attribute with dynamic value for testing 🔧 (Custom Component Generator.spec.ts): add test for Custom Component Generator with Playwright 🔧 (Image Sentiment Analysis.spec.ts): add test for Image Sentiment Analysis with Playwright ✅ (Instagram Copywriter.spec.ts, Market Research.spec.ts): Add integration tests for Instagram Copywriter and Market Research functionalities. ✨ (Prompt Chaining.spec.ts): Add integration test for Prompt Chaining feature ✨ (SEO Keyword Generator.spec.ts): Add integration test for SEO Keyword Generator feature ✨ (SaaS Pricing.spec.ts): Add integration test for SaaS Pricing feature ✨ (Twitter Thread Generator.spec.ts): Add integration test for Twitter Thread Generator feature * ✨ (Custom Component Generator.spec.ts): Update environment variable name from OPENAI_API_KEY to ANTHROPIC_API_KEY for consistency and clarity 📝 (Custom Component Generator.spec.ts): Update test descriptions to reflect the correct environment variable names and requirements 📝 (Instagram Copywriter.spec.ts): Add support for TAVILY_API_KEY environment variable in tests and update test descriptions to reflect the change * 📝 Add test utilities for updating components, adding new API keys, adjusting screen view, awaiting bootstrap test, and getting all response messages. * 📝 (Custom Component Generator.spec.ts): Add waitForOpenModalWithChatInput utility function for better code organization and readability 📝 (Image Sentiment Analysis.spec.ts): Add buildDataTransfer utility function for better code organization and readability 📝 (Instagram Copywriter.spec.ts): Add waitForOpenModalWithChatInput utility function for better code organization and readability 📝 (Market Research.spec.ts): Add waitForOpenModalWithChatInput utility function for better code organization and readability 📝 (Prompt Chaining.spec.ts): Add waitForOpenModalWithChatInput utility function for better code organization and readability 📝 (SEO Keyword Generator.spec.ts): Add waitForOpenModalWithoutChatInput utility function for better code organization and readability 📝 (SaaS Pricing.spec.ts): Add waitForOpenModalWithoutChatInput utility function for better code organization and readability 📝 (Twitter Thread Generator.spec.ts): Add waitForOpenModalWithoutChatInput utility function for better code organization and readability 📝 (build-data-transfer.ts): Add buildDataTransfer utility function for better code organization and readability 📝 (wait-for-open-modal.ts): Add waitForOpenModalWithChatInput and waitForOpenModalWithoutChatInput utility functions for better code organization and readability * 🔧 (ci.yml): add ANTHROPIC_API_KEY and TAVILY_API_KEY secrets for CI workflows 🔧 (nightly_build.yml): add ANTHROPIC_API_KEY and TAVILY_API_KEY secrets for nightly build jobs 🔧 (typescript_test.yml): add ANTHROPIC_API_KEY and TAVILY_API_KEY secrets for TypeScript test workflows * feat: Add initialGPTsetup utility function for setting up GPT environment This commit adds the initialGPTsetup utility function to the test/utils directory. The function is responsible for setting up the GPT environment by performing tasks such as adjusting the screen view, updating old components, removing old API keys, adding new API keys, and selecting the GPT model. The function accepts optional parameters to skip specific tasks if needed. * change to utility function * change to utility function * change to utility function * change to utility function * change to utility function * change to utility function * change to utility function * change to utility function --------- Co-authored-by: anovazzi1 <otavio2204@gmail.com> |
|||
| ad52046f20 |
ci: Enable release flag for TypeScript tests in nightly build workflow (#4848)
ci: Enable release flag in nightly build workflow for TypeScript tests |
|||
| c1097d2dde |
chore: update dockerfiles and docker-build workflows to fix releases (#4317)
* bash -x * bash verbose * combine bash calls in uv run * combined python script * relative dir * pass args correctly * pass args correctly * function name * fix arg order * merge base and main * remove nightly -ep docker image for now * set up uv in the get-version job in docker-build.yml * v prefix for version in build job * use inputs.nightly_tag_main for checkout actions * mount root project metadata for base build * fix comment * continued dockerfile fixes for workspaces setup * fix path * ruff check fix |
|||
| 4a574da0c0 | ci: fix release workflows for uv (#4053) |