✨ feat(endpoints.py): add new endpoint to load custom components from a specified path
📦 feat(load_custom_component_from_path.py): add new module to load custom components from a directory path
🔧 chore(types.py): add function to build and validate custom components from a directory path
🐛 fix(chat.py): improve error logging by including the specific error message
🐛 fix(manager.py): improve error logging by including the specific error message
🐛 fix(base.py): improve error logging by including the specific error message
🐛 fix(processing/base.py): improve error logging by including the specific error message
🔨 refactor(custom_component.py): update load_flow method to use the process_flow function from the api endpoints module for improved modularity and separation of concerns
✨ feat(load_custom_component_from_file.py): add functionality to compress and decompress code, validate code syntax, validate build function presence, read file content, get list of .py files in a directory, find menu by name in response, process file by validating content and returning result and content/error message, and build component menu list from .py files in a directory
✨ feat(util.py): add sync_to_async decorator to convert sync functions to async functions for better performance and compatibility
🐛 fix(util.py): fix formatting of dictionary by removing certain keys and modifying the values of other keys to improve consistency and clarity
🐛 fix(util.py): fix update_verbose function to recursively update the value of the 'verbose' key in a dictionary
🐛 fix(util.py): fix update_verbose function to correctly handle nested dictionaries
🐛 fix(util.py): fix update_verbose function to correctly handle non-dictionary values
🐛 fix(util.py): fix format_dict function to correctly handle the 'type' value when it is a type object
🐛 fix(util.py): fix format_dict function to correctly handle the 'type' value when it is a list type
🐛 fix(util.py): fix format_dict function to correctly handle the 'type' value when it is a Mapping type
🐛 fix(util.py): fix format_dict function to correctly handle the 'type' value when it is a dict type
🐛 fix(util.py): fix format_dict function to correctly handle the 'type' value when it is a Tool type
🐛 fix(util.py): fix format_dict function to correctly handle the 'type' value when it is an int type
🐛 fix(util.py): fix format_dict function to correctly handle the 'show' value based on field requirements and naming conventions
🐛 fix(util.py): fix format_dict function to correctly handle the 'password' value based on field naming conventions
🐛 fix(util.py): fix format_dict function to correctly handle the 'multiline' value based on field naming conventions
🐛 fix(util.py): fix format_dict function to correctly handle the 'type' value when it is a dict type for the 'dict_' key
🐛 fix(util.py): fix format_dict function to correctly handle the 'value' field when it is a default value
🐛 fix(util.py): fix format_dict function to correctly handle the 'value' field for the 'headers' key
🐛 fix(util.py): fix format_dict function to correctly handle the 'options' field for specific class and key combinations
🔧 fix(index.tsx): remove unused imports to clean up code
🔧 fix(utils.ts): add space before opening parenthesis to improve code style
🔧 fix(test_custom_component.py): add line breaks to improve readability of test cases
- Refactor code parsing in `code_parser.py` to handle imports, function definitions, and class attributes more robustly and cleanly.
- Add new methods in `component.py` to parse Assign and AnnAssign statements, and FunctionDef statements.
- Refactor `custom_component.py` to improve the handling of custom components, including better extraction of main class name and template configuration.
- Update `types.py` to better handle the building of custom component templates, including handling of field configurations and error handling.
- Minor formatting fix in `conftest.py` test fixture.
These changes improve the robustness and readability of the code, and provide better handling and validation of custom components.
🔨 refactor(constants.py): make YourComponent inherit from CustomComponent for better code reuse and structure
🔨 refactor(conftest.py): restructure custom_chain fixture for better readability and maintainability
🔥 remove(langflow): delete custom.py as it's replaced by custom_component.py
📦 feat(langflow): add code_parser.py to parse Python source code
🐛 fix(langflow): update import paths due to file renaming
🎨 style(langflow): improve code formatting for readability
🐛 fix(langflow): correct handling of function arguments and return types in custom components
🔧 chore(langflow): update function calls due to changes in custom components
✨ feat(components.py): add support for `create_at` and `update_at` fields in Component model to track creation and update timestamps
🔥 refactor(components.py): remove unused imports and variables in components.py
🔥 refactor(component.py): remove unused imports and variables in component.py
🔥 refactor(component.py): remove commented out code in component.py
✨ feat(components.py): refactor create_component endpoint to use the Component model directly instead of ComponentCreate model
✨ feat(components.py): refactor read_component endpoint to return a Component model instead of ComponentRead model
✨ feat(components.py): refactor read_components endpoint to return a list of Component models instead of a list of ComponentRead models
✨ feat(components.py): refactor update_component endpoint to use the Component model directly instead of ComponentUpdate model
✨ feat(components.py): refactor delete_component endpoint to use the Component model directly instead of ComponentUpdate model
🔧 fix(component.py): remove unused imports and commented out code
✨ feat(component.py): add missing import for orjson
✨ feat(component.py): add missing import for FastAPI, HTTPException, and Depends
✨ feat(component.py): add missing import for List and Optional
✨ feat(component.py): add missing import for datetime
✨ feat(component.py): add missing import for uuid
✨ feat(component.py): add missing import for StaticPool
✨ feat(component.py): add missing import for create_engine
✨ feat(component.py): add missing import for select
✨ feat(component.py): add missing import for orjson
✨ feat(component.py): add missing import for SQLModel
✨ feat(component.py): add missing import for Session
✨ feat(component.py): add missing import for orjson
✨ feat(component.py): add missing import for orjson_dumps function
✨ feat(component.py): add missing import for Component model
✨ feat(component.py): add missing import for Field
✨ feat(component.py): add missing import for SQLModel
✨ feat(component.py): add missing import for Session
✨ feat(component.py): add missing import for create_engine
✨ feat(component.py): add missing import for select
✨ feat(component.py): add missing import for Optional
✨ feat(component.py): add missing import for List
✨ feat(component.py): add missing import for datetime
✨ feat(component.py): add missing import for uuid
✨ feat(component.py): add missing import for StaticPool
✨ feat(component.py): add missing import for orjson
✨ feat(component.py): add missing import for orjson_dumps function
✨ feat(component.py): add missing import for Component model
✨ feat(component
📦 chore(__init__.py): add component_router to __all__ list to expose component routes
📦 feat(components.py): add routes for creating, reading, updating, and deleting components
📦 chore(endpoints.py): import Component model from database.models.component
📦 chore(schemas.py): add ComponentListCreate and ComponentListRead schemas
📦 feat(models/component.py): add Component model with fields for name, description, and data
📦 feat(models/component.py): add ComponentCreate, ComponentRead, and ComponentUpdate models for CRUD operations on components
🐛 fix(loading.py): add handle_parsing_errors=True to instantiate_agent and load_agent_executor functions to handle parsing errors during agent instantiation and loading
✨ feat(process.py): refactor processing logic for VectorStore objects to use the search method instead of generating a result message
🐛 fix(parameterComponent/index.tsx): remove duplicate import of MAX_LENGTH_TO_SCROLL_TOOLTIP
🔧 chore(utils.ts): import HuggingFaceIcon from the correct file path
ℹ️ The DocArrayInMemorySearch vectorstore integration is currently not supported due to compatibility issues with the required version of docarray. Commenting it out to prevent potential errors.
🐛 fix(base.py): catch and log exceptions when fixing memory inputs to prevent crashes
🐛 fix(process.py): check if memory_key attribute exists before accessing it to prevent AttributeError
🐛 fix(memories.py): hide memory_key field for ConversationEntityMemory to improve user experience
🐛 fix(custom.py): fix indentation of class_template dictionary to improve readability
🐛 fix(custom.py): fix indentation of class dictionary to improve readability
🐛 fix(custom.py): fix indentation of _handle_function method to improve readability
🐛 fix(custom.py): fix indentation of transform_list method to improve readability
🐛 fix(custom.py): fix indentation of extract_class_info method to improve readability
🐛 fix(custom.py): fix indentation of _class_template_validation method to improve readability
🐛 fix(custom.py): fix indentation of build_langchain_template_custom_component method to improve readability
🐛 fix(custom.py): fix indentation of add_new_custom_field method to improve readability
🐛 fix(custom.py): fix indentation of add_code_field method to improve readability
🐛 fix(custom.py): fix indentation of extract_type_from_optional method to improve readability
🐛 fix(custom.py): fix indentation of build_langchain_template_custom_component method to improve readability
🔥 chore(custom.py): remove unused imports and variables
✨ feat(custom.py): add support for splitting a string by ':' or '=' and padding with None until length is 3 in _split_string method
✨ feat(custom.py): add support for transforming a list of strings by splitting each string and padding with None in transform_list method
✨ feat(custom.py): add support for extracting the type from a string formatted as "Optional[<type>]" in extract_type_from_optional method
✨ feat(custom.py): add support for passing field_value and field_required parameters to add_new_custom_field method
✨ feat(custom.py): add support for passing field_value and field_required parameters to build_langchain_template_custom_component method
✨ feat(custom.py): add support for passing field_value and field_required parameters to add_new_custom_field method
✨ feat(custom.py): add support for passing field_value and field_required parameters to build_langchain_template_custom_component method
✨ feat(custom.py): add support for passing field_value and field_required parameters to add_new_custom_field method
✨ feat(custom.py): add support for passing field_value and field_required parameters to build_langchain_template_custom_component method
✨ feat(custom.py): add support for passing field_value and field_required parameters to add_new_custom_field method
✨ feat(custom.py): add support for
✨ feat(custom.py): add NotImplementedError to the build method to indicate that it needs to be implemented in subclasses
🚧 chore(test_custom_component.py): add test cases for various methods in the CustomComponent class to improve test coverage and ensure code correctness
🐛 fix(base.py): fix a bug where the built object is not updated correctly in the Vertex class
✨ feat(base.py): add validation to check if the built object is None in the Vertex class