From 08cdc15d98bc850680584503be74218333beaa7b Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Sat, 24 Jun 2023 16:31:47 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8D=20refactor(base.py):=20add=20docum?= =?UTF-8?q?entation=20support=20to=20LangChainTypeCreator=20This=20commit?= =?UTF-8?q?=20adds=20a=20new=20property=20to=20the=20LangChainTypeCreator?= =?UTF-8?q?=20class=20called=20docs=5Fmap,=20which=20is=20a=20dictionary?= =?UTF-8?q?=20that=20maps=20the=20name=20of=20the=20component=20to=20its?= =?UTF-8?q?=20documentation=20link.=20The=20docs=5Fmap=20property=20is=20u?= =?UTF-8?q?sed=20to=20set=20the=20documentation=20of=20the=20component=20i?= =?UTF-8?q?n=20the=20signature=20of=20the=20component.=20This=20change=20i?= =?UTF-8?q?mproves=20the=20readability=20and=20maintainability=20of=20the?= =?UTF-8?q?=20code=20by=20making=20it=20easier=20to=20add=20and=20update?= =?UTF-8?q?=20documentation=20for=20components.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/interface/base.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/backend/langflow/interface/base.py b/src/backend/langflow/interface/base.py index df0c2c50c..6e1522dd2 100644 --- a/src/backend/langflow/interface/base.py +++ b/src/backend/langflow/interface/base.py @@ -8,6 +8,7 @@ from langflow.template.field.base import TemplateField from langflow.template.frontend_node.base import FrontendNode from langflow.template.template.base import Template from langflow.utils.logger import logger +from langflow.settings import settings # Assuming necessary imports for Field, Template, and FrontendNode classes @@ -15,12 +16,29 @@ from langflow.utils.logger import logger class LangChainTypeCreator(BaseModel, ABC): type_name: str type_dict: Optional[Dict] = None + name_docs_dict: Optional[Dict[str, str]] = None @property def frontend_node_class(self) -> Type[FrontendNode]: """The class type of the FrontendNode created in frontend_node.""" return FrontendNode + @property + def docs_map(self) -> Dict[str, str]: + """A dict with the name of the component as key and the documentation link as value.""" + if self.name_docs_dict is None: + try: + type_settings = getattr(settings, self.type_name) + self.name_docs_dict = { + name: value_dict["documentation"] + for name, value_dict in type_settings.items() + } + except AttributeError as exc: + logger.error(exc) + + self.name_docs_dict = {} + return self.name_docs_dict + @property @abstractmethod def type_to_loader_dict(self) -> Dict: @@ -83,7 +101,7 @@ class LangChainTypeCreator(BaseModel, ABC): signature.add_extra_fields() signature.add_extra_base_classes() - + signature.set_documentation(self.docs_map.get(name, "")) return signature