diff --git a/src/backend/langflow/api/v1/endpoints.py b/src/backend/langflow/api/v1/endpoints.py index 24af55588..de8c69338 100644 --- a/src/backend/langflow/api/v1/endpoints.py +++ b/src/backend/langflow/api/v1/endpoints.py @@ -42,10 +42,18 @@ def get_all(): custom_components_from_file = {} if settings.COMPONENTS_PATH: logger.info(f"Building custom components from {settings.COMPONENTS_PATH}") - custom_component_dicts = [ - build_langchain_custom_component_list_from_path(str(path)) - for path in settings.COMPONENTS_PATH - ] + + custom_component_dicts = [] + processed_paths = [] + for path in settings.COMPONENTS_PATH: + if path in processed_paths: + continue + custom_component_dict = build_langchain_custom_component_list_from_path( + str(path) + ) + custom_component_dicts.append(custom_component_dict) + processed_paths.append(str(path)) + logger.info(f"Loading {len(custom_component_dicts)} category(ies)") for custom_component_dict in custom_component_dicts: # custom_component_dict is a dict of dicts diff --git a/src/backend/langflow/settings.py b/src/backend/langflow/settings.py index 439b3a1e4..5bbc02f51 100644 --- a/src/backend/langflow/settings.py +++ b/src/backend/langflow/settings.py @@ -129,6 +129,8 @@ class Settings(BaseSettings): value = json.loads(str(value)) if isinstance(value, list): for item in value: + if isinstance(item, Path): + item = str(item) if item not in getattr(self, key): getattr(self, key).append(item) logger.debug(f"Extended {key}")