Commit graph

5,629 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
b39ee0ae2d
refactor: update OpenTelemetry initialization to avoid multiple calls (#4306)
* Ensure single initialization of OpenTelemetry and optimize meter provider setup

* Simplify condition by removing redundant class attribute
2024-10-29 15:04:22 +00:00
Gabriel Luiz Freitas Almeida
ccba14bec4
feat: Allow variables to be defined outside a Component (#4316)
* feat: Allow variables to be defined outside a Component

Fixes #4315

Modify `prepare_global_scope` function in `src/backend/base/langflow/utils/validate.py` to evaluate classes, functions, and variables defined outside the Component's class.

* **Function Changes:**
  - Add evaluation of external classes using `ast.ClassDef`.
  - Add evaluation of external functions using `ast.FunctionDef`.
  - Add evaluation of external variables using `ast.Assign`.

* **Unit Tests:**
  - Add tests in `src/backend/tests/unit/test_validate_code.py` to verify the evaluation of external classes, functions, and variables.
  - Include tests for multiple external classes and external variables and functions.

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/langflow-ai/langflow/issues/4315?shareId=XXXX-XXXX-XXXX-XXXX).

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-10-29 06:45:38 -07:00
Devin Bost
fb0084d478
feat: Add alembic log path as env var change (#4272)
* Added alembic log path as env var change

* [autofix.ci] apply automated fixes

* Improved platform independence of path check

* fix: arg-type mypy error

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Ítalo Johnny <italojohnnydosanjos@gmail.com>
2024-10-29 10:28:41 +00:00
Gabriel Luiz Freitas Almeida
924e02f46d
fix: make asyncio cancellation handling compatible with 3.10 (#4303)
Fix asyncio cancellation handling for Python 3.11 compatibility

Co-authored-by: Christophe Bornet <cbornet@hotmail.com>
2024-10-28 21:56:30 +00:00
Gabriel Luiz Freitas Almeida
882f20d64f
fix: make JSON serialization work with Callable objects (#4302)
Enhance JSON serialization with custom encoder for Callable objects
2024-10-28 20:45:29 +00:00
Ítalo Johnny
fadb20115d
test: add unit tests for routes (#4249) 2024-10-28 20:06:05 +00:00
Cristhian Zanforlin Lousa
a88fd9bbb0
feat: add new .env variable "LANGFLOW_FEATURE_MVP_COMPONENTS" to show/hide integration sidebar components (#4270)
*  (authContext.tsx): Add functionality to fetch global variables on authentication
🔧 (api.tsx): Replace universal-cookie import with react-cookie for consistency
🔧 (authStore.ts): Replace universal-cookie import with react-cookie for consistency
🔧 (use-get-global-variables.ts): Add check to only fetch global variables if user is authenticated
 (use-get-mutation-global-variables.ts): Add mutation function to fetch and update global variables
🔧 (authStore.ts): Replace universal-cookie import with react-cookie for consistency

* 📝 (endpoints.py): add feature_flags field to ConfigResponse schema
📝 (endpoints.py): modify get_config function to include feature_flags in the response
📝 (feature_flags.py): add mvp_components field to FeatureFlags settings
📝 (schemas.py): add feature_flags field to ConfigResponse schema

*  (use-get-config.ts): Add feature_flags field to ConfigResponse interface to support feature flags in the application
🔧 (utilityStore.ts): Add featureFlags field and setFeatureFlags function to utilityStore to manage feature flags in the application
💡 (extraSidebarComponent/index.tsx): Use featureFlags from utilityStore to conditionally render components based on feature flags in ExtraSidebar component

* ♻️ (frontend/package-lock.json): remove extraneous flag from is-unicode-supported package to clean up unnecessary information

*  (integration-side-bar.spec.ts): Add integration tests to ensure correct visibility of integrations in the sidebar based on the value of mvp_components.

*  (integration-side-bar.spec.ts): update integration-side-bar tests to use feature_flags object for mvp_components flag for better readability and maintainability.

*  (integration-side-bar.spec.ts): add a 4-second delay before making the API call to improve test reliability

* [autofix.ci] apply automated fixes

* Update src/backend/base/langflow/api/v1/schemas.py

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>

* Update src/backend/base/langflow/api/v1/endpoints.py

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>

* formata

* [autofix.ci] apply automated fixes

*  (extraSidebarComponent/index.tsx): update featureFlags property access to use optional chaining for better error handling
📝 (stop-building.spec.ts): add ua-parser-js import to get user agent information and update control key based on user's operating system for better user experience. Also, refactor code to improve readability and add comments for better understanding.

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-10-28 19:36:52 +00:00
Christophe Bornet
d53107ce11
fix: Make logger file sink non-blocking when used with asyncio (#4301)
The Loguru FileSink is blocking so it is bad to use it in the event loop.
Use instead an AsyncSink wrapping the FileSink to delegate the log writing to the default thread pool.
NB: when the AsyncFileSink is used, logs produced outside of the event loop are not written to the file.
2024-10-28 17:38:40 +01:00
Christophe Bornet
c8bdcf36b0
fix: Fix async usage in app startup (#4285)
Fix async usage in app startup
2024-10-27 15:00:28 +00:00
Christophe Bornet
eccdb3a566
fix: Remove sync Graph.run() (#4287)
Remove sync Graph.run()
2024-10-27 14:44:43 +00:00
Christophe Bornet
d567b8518c
fix: Fix issues with use of async (#4296)
* Fix issues with use of async

* Update src/backend/base/langflow/custom/custom_component/component.py

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>

---------

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-10-27 07:30:33 -07:00
Gabriel Luiz Freitas Almeida
73b5cc0098
refactor: remove unnecessary 'client' fixture and update test durations (#4283)
* Remove unnecessary use of 'client' fixture in test_superuser

* Remove unnecessary use of 'usefixtures' decorator in test files

* Update test fixtures to improve test duration tracking

* Remove unnecessary 'client' fixture from test cases
2024-10-27 14:16:45 +00:00
Christophe Bornet
1ef1fcb515
fix: Fix Astra DB collection indexing params (#4255)
Fix Astra DB collection indexing params
2024-10-27 01:55:30 +00:00
Edwin Jose
a0c42d148d
fix: Add missing inputs for HuggingFace model component and include pytest (#4291)
* fix: Add missing inputs for HuggingFace model component and include pytest

- Added missing inputs to the HuggingFace model component.
- Implemented pytest to ensure the inputs are correctly handled.

* remove print statement
2024-10-26 19:41:32 +00:00
Christophe Bornet
3131c0ce08
fix: Fix async cache (#4265)
Fix async cache
2024-10-26 08:30:51 +00:00
Gabriel Luiz Freitas Almeida
ee101e643c
fix: refine subflow field filtering to include '|' character check (#4277)
* Refine subflow field filtering to include '|' character check

* Add resource cleanup in test_components_path to ensure proper closure

* Remove unnecessary try-finally block in test_cli.py

* Remove unused pytest fixture decorator from test_components_path function

* Update test duration tracking in backend tests
2024-10-25 13:10:41 +00:00
Edwin Jose
78e6ee1a8a
fix: Solves Issues with Set Function in Component Class and Enhance Input Handling (#4258)
* Enhance Component Input Handling and Add Unit Tests

Enhance component input handling and add unit tests for mixed input scenarios.

* [autofix.ci] apply automated fixes

* fix: handle JSON serialization for lists and dicts in _process_connection_or_parameters

- Updated the _process_connection_or_parameters function to handle lists and dictionaries properly.
- Ensured that each element in a list is checked for serializability and converted to a string if necessary.
- Added logic to convert dictionaries to JSON strings, handling non-serializable contents by converting them to strings.
- This change prevents JSON serialization errors when processing component parameters.

* reverting the changes

* [autofix.ci] apply automated fixes

* Update component.py

updates _process_connection_or_parameters to handles situations where the list is not all component.

Also handles any serialisation isseus caused by _process_connection_or_parameters

* [autofix.ci] apply automated fixes

* Update component.py

update make sure it is not a list str | int | float | bool | type(None)

Serialisation removed

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-10-24 13:52:52 -04:00
Gabriel Luiz Freitas Almeida
5be41ae13e
fix: make sure data is json serializable (#4269)
* Refactor `recursive_serialize_or_str` function into a separate module

- Moved the `recursive_serialize_or_str` function from `schema.py` to a new `serialize.py` module for better modularity and reusability.
- Updated imports in `data.py`, `artifact.py`, and `schema.py` to reflect the new location of the `recursive_serialize_or_str` function.
- Enhanced the `recursive_serialize_or_str` function to handle `datetime` objects by converting them to ISO format.

* Enhance data serialization with recursive handling in `to_json` method

---------

Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
2024-10-24 16:47:02 +00:00
Edwin Jose
5811857ca2
refactor: Tool Output Management: Add Component-Specific Variable for Conditional Tool Output (#4259)
Implement conditional tool output handling

- Updated `component.py` to check for `FEATURE_FLAGS.add_toolkit_output` and call `_append_tool_output` if the component has the `add_tool_output` attribute set to True.
- Ensured that the tool output behavior is correctly managed based on feature flags and component attributes in `custom_component.py`.
2024-10-23 22:44:00 +00:00
EDllT
735c7330da
feat: Add LM Studio Model and Embeddings Component (#4021) 2024-10-23 18:46:36 +00:00
Christophe Bornet
1fb72b826f
feat: Add AstraGraphVectorStoreComponent (#4248)
Add AstraGraphVectorStoreComponent
2024-10-23 15:54:56 +00:00
Gabriel Luiz Freitas Almeida
e93397d118
chore: update dependencies and enable HTTP/2 support for AsyncClient in tests (#4173)
* Update dependencies in pyproject.toml: fastapi, httpx, python-multipart

* Enable HTTP/2 support for AsyncClient in test configurations
2024-10-23 13:02:06 +00:00
Cristhian Zanforlin Lousa
9b1c382641
fix: updating components to access secret key with new method get_secret_value() (#4243)
* updating components to access secret key with new method

* [autofix.ci] apply automated fixes

* 📝 (text_embedder.py): Add error messages as constants for better error handling and readability
📝 (text_embedder.py): Improve error handling and validation for embedding model and text content
📝 (text_embedder.py): Ensure proper protocol for the base URL in the embedding model client
📝 (text_embedder.py): Validate the output of embeddings and handle exceptions with logging
📝 (text_embedder.py): Refactor code to encapsulate results in a Data object and update status accordingly
📝 (similarity.spec.ts): Add a delay before clicking the button to run the text output test for better synchronization

* uv fix

* [autofix.ci] apply automated fixes

* 📝 (text_embedder.py): refactor error messages to use inline strings for better readability and maintainability
🐛 (text_embedder.py): fix issue with extracting the first element from embeddings list to ensure correct data handling

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Eric Hare <ericrhare@gmail.com>
2024-10-22 23:21:58 +00:00
Christophe Bornet
f44aca5b41
ref: Fix some ruff rules for private access (SLF) (#4139)
* Add ruff rules for private access (SLF)

* Changes following review

* Rename Vertex._data to Vertex.full_data
2024-10-22 23:04:12 +00:00
Christophe Bornet
8224bce532
ref: Add ruff rules for bandit (S) (#4111)
* Add ruff rules for bandit (S)

* Changes following review
2024-10-22 22:33:37 +00:00
Eric Hare
6180a6daed
FEAT: Upgrade langchain (0.3.x) and associated packages including langchain-astradb (#4229)
* Start on big langchain dep upgrade

* Update pyproject.toml

* add new lock

* Rebase on post1 changes

---------

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-10-22 18:30:21 +00:00
Edwin Jose
21bdad0ffb
fix: Update Azure OpenAI API versions and improve version selection (#4232)
Update Azure OpenAI API versions and improve version selection

This PR updates the `AZURE_OPENAI_API_VERSIONS` list in the `AzureChatOpenAIComponent` class to include the latest GA and preview versions of the Azure OpenAI API. It also improves the default version selection logic.

Changes:
- Updated `AZURE_OPENAI_API_VERSIONS` list:
  - Added the latest GA version: "2024-06-01"
  - Added recent preview versions: "2024-07-01-preview", "2024-08-01-preview", "2024-09-01-preview", "2024-10-01-preview"
  - Removed older versions that are no longer relevant
  - Reordered the list to prioritize newer versions
- Improved the `api_version` DropdownInput:
  - Now sorts options in reverse chronological order
  - Default value now selects the latest non-preview version, falling back to the first version if all are preview

The updated list now reflects the most current API versions as of the latest documentation update, and the improved selection logic ensures users are presented with the most appropriate default version.
2024-10-22 17:24:49 +00:00
Christophe Bornet
b6f74fb275
ref: Move get_settings_service out of Depends() (#4239)
Move get_settings_service out of Depends()
2024-10-22 16:55:40 +00:00
Christophe Bornet
6e39dedaae
ref: Rename component modules to lower case (ruff N999) (#4220)
* Rename component modules to lower case (ruff N999)

* git rename workaround (1/2)

* git rename workaround (2/2)

* Rollback changes on schema __init__

* Fix tests
2024-10-22 16:46:32 +00:00
Ítalo Johnny
51a420f31a
fix: sidebar_categories route (#4237)
chore: add default value to beta attribute
2024-10-22 15:49:12 +00:00
Ítalo Johnny
48148f0df6
fix: logger config and env file loading (#4174)
* fix: logger config and env file loading

* fix: mypy error assignment and arg-type
2024-10-22 14:29:32 +00:00
Christophe Bornet
f0eb7b50a6
ref: Some fixes for ruff rules preview mode (#4197)
* Some fixes for ruff rules preview mode

* Fix mypy error

* More Annotated[] types for fastapi endpoints

* Use type aliases for Depends(get_session) and Depends(get_current_active_user)
2024-10-22 14:04:31 +00:00
Christophe Bornet
507eda997a
ref: Auto-fix some ruff ANN rules (#4210)
* Auto-fix some ruff ANN rules

* Fix mypy errors

* Changes following review

* Fix ServiceFactory
2024-10-22 13:55:48 +02:00
Christophe Bornet
c85cd91e09
ref: Move get services out of API methods (#4216)
* Move get services out of API methods

* Rollback files API to be able to mock the dependency
2024-10-22 11:27:31 +00:00
Christophe Bornet
349a2b49a4
fix: Use an async client for Redis cache (#4231)
Use an async client for Redis cache
2024-10-21 21:16:06 +00:00
Christophe Bornet
99bcaab9d8
ref: Remove useless fastapi Depends (#4217)
Remove useless fastapi Depends
2024-10-21 20:53:17 +00:00
Cristhian Zanforlin Lousa
b969818738
feat: pagination improvements + tests (#4163)
* 📝 (utils.py): Add Query import and custom_params function to handle custom pagination parameters
📝 (flows.py): Update read_flows function to handle get_all flag and add error handling for missing folders
📝 (folders.py): Add custom_params dependency to read_folder endpoint for custom pagination handling
📝 (model.py): Remove PaginatedFlowResponse class as it is no longer used, add FlowHeader class to represent flow headers without data

 (test_database.py): Add pagination support for reading flows with different parameters to improve testing coverage and flexibility.

 (test_database.py): add unit tests for reading folders with different scenarios such as pagination, flows, search, and component filter to ensure proper functionality and data retrieval.

* 📝 (utils.py): Add constants MAX_PAGE_SIZE and MIN_PAGE_SIZE for better readability and maintainability
📝 (flows.py): Update get_all parameter default value to True for backward compatibility with frontend
📝 (flows.py): Update error message formatting for clarity
📝 (model.py): Update comments for folder_id, is_component, endpoint_name, and description fields for clarity

*  (test_database.py): Simplify test functions by removing unnecessary parameters and code duplication to improve readability and maintainability.

* formatter

* [autofix.ci] apply automated fixes

* ruff fix

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-10-20 14:04:26 -03:00
Ítalo Johnny
4d7653c451
feat: concat default variables with env values (#4211)
* feat: concat default variables with env values

* fix: prevent duplicate env variables
2024-10-19 21:10:49 +00:00
Christophe Bornet
bac14d99c2
fix: Fix some tests missing client fixture (#4213)
Fix some tests missing client fixture
2024-10-19 21:00:47 +00:00
Christophe Bornet
f96f2eaf8a
ref: Add ALL ruff rules for tests (#4183)
Add ALL ruff rules for tests
2024-10-19 20:41:37 +00:00
Christophe Bornet
140cf890e3
ref: Use pathlib read/write functions (#4177)
Use pathlib read/write functions
2024-10-19 16:05:18 +00:00
Christophe Bornet
bdb4106ac0
ref: Add ruff rules for naming (N) (#4187)
Add ruff rules for naming (N)
2024-10-19 15:52:04 +00:00
Christophe Bornet
f430f98c5c
fix: Fix add_extra_fields() (#4209)
Fix add_extra_fields()
2024-10-19 15:39:03 +00:00
Ítalo Johnny
c24b0d9ac4
fix: handle unsupported LLM exception message (#4199)
* fix: handle unsupported LLM exception message

* Update src/backend/base/langflow/components/agents/ToolCallingAgent.py

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-10-19 13:47:31 +00:00
Cristhian Zanforlin Lousa
44f390e987
feat: remove beta tag from categories endpoint (#4202)
🔄 (constants.py): refactor sidebar categories list to improve readability and maintainability by removing unnecessary properties and formatting the dictionary entries for consistency.
2024-10-18 11:46:13 -03:00
Gabriel Luiz Freitas Almeida
12476648f8
fix: add memo to deepcopy call to avoid recursion error (#4194)
Fix deepcopy bug by passing memo to deepcopy calls in custom component
2024-10-18 01:53:23 +00:00
Christophe Bornet
e4e1e1bd86
ref: Add missing __init__.py files in tests (#4180)
Add missing __init__.py files in tests
2024-10-17 18:21:56 +00:00
Cristhian Zanforlin Lousa
a6b684f139
feat: add new categories endpoint (#4184)
*  (endpoints.py): Add new endpoint to retrieve sidebar categories for the frontend application.

* 📝 (schemas.py): add SidebarCategory and SidebarCategoriesResponse models to define sidebar categories and response structure for API endpoint.

*  (constants.py): Add sidebar categories with display names, names, icons, and beta status for different components to enhance the user interface and navigation experience.

* 📝 (constants.py): Update icons names to use proper casing for consistency and clarity in the code.
2024-10-17 13:34:05 +00:00
Christophe Bornet
45c8f98692
ref: Auto-fix ruff rules in tests (#4154) 2024-10-16 15:42:36 +00:00
Cristhian Zanforlin Lousa
51b3909d60
feat: add new input type - SliderComponent + tests (#4144) 2024-10-16 14:00:27 +00:00