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 <edwin.jose@datastax.com>
This commit is contained in:
Gabriel Luiz Freitas Almeida 2025-06-25 15:17:58 -03:00 committed by GitHub
commit ceb98af542
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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