From ceb98af542d53d7125a0a6a68cbf5722c8d2ef3c Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 25 Jun 2025 15:17:58 -0300 Subject: [PATCH] fix(components): exclude base path from component loading and refine caching (#8735) * feat: filter out base components path in custom component loading * revert changes to allow testing the function --------- Co-authored-by: Edwin Jose --- .../base/langflow/interface/components.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/backend/base/langflow/interface/components.py b/src/backend/base/langflow/interface/components.py index 9c52c8fb7..0b5cda0cc 100644 --- a/src/backend/base/langflow/interface/components.py +++ b/src/backend/base/langflow/interface/components.py @@ -10,6 +10,7 @@ from typing import TYPE_CHECKING, Any from loguru import logger from langflow.custom.utils import abuild_custom_components, create_component_template +from langflow.services.settings.base import BASE_COMPONENTS_PATH if TYPE_CHECKING: from langflow.services.settings.service import SettingsService @@ -162,22 +163,29 @@ async def get_and_cache_all_types_dict( logger.debug("Building components cache") langflow_components = await import_langflow_components() - + component_cache.all_types_dict = {} if settings_service.settings.lazy_load_components: # Partial loading mode - just load component metadata logger.debug("Using partial component loading") component_cache.all_types_dict = await aget_component_metadata(settings_service.settings.components_path) - else: + elif ( + settings_service.settings.components_path + and BASE_COMPONENTS_PATH not in settings_service.settings.components_path + ): # Traditional full loading component_cache.all_types_dict = await aget_all_types_dict(settings_service.settings.components_path) # Log custom component loading stats - component_count = sum(len(comps) for comps in component_cache.all_types_dict.get("components", {}).values()) + components_dict = component_cache.all_types_dict or {} + component_count = sum(len(comps) for comps in components_dict.get("components", {}).values()) if component_count > 0 and settings_service.settings.components_path: logger.debug(f"Built {component_count} custom components from {settings_service.settings.components_path}") # merge the dicts - component_cache.all_types_dict = {**langflow_components["components"], **component_cache.all_types_dict} + component_cache.all_types_dict = { + **langflow_components["components"], + **components_dict, + } component_count = sum(len(comps) for comps in component_cache.all_types_dict.values()) logger.debug(f"Loaded {component_count} components") return component_cache.all_types_dict