feat: Modular dependency installation for langflow-base by ogabrielluiz · Pull Request #6732 · langflow-ai/langflow (original) (raw)
…sting (#10111)
- feat: Introduce service registration decorator and enhance ServiceManager for pluggable service discovery
- Added
register_servicedecorator to allow services to self-register with the ServiceManager. - Enhanced
ServiceManagerto support multiple service discovery mechanisms, including decorator-based registration, config files, and entry points. - Implemented methods for direct service class registration and plugin discovery from various sources, improving flexibility and extensibility of service management.
- feat: Implement VariableService for managing environment variables
- Introduced VariableService class to handle environment variables with in-memory caching.
- Added methods for getting, setting, deleting, and listing variables.
- Included logging for service initialization and variable operations.
- Created an init.py file to expose VariableService in the package namespace.
- feat: Enhance LocalStorageService with Service integration and async teardown
- Updated LocalStorageService to inherit from both StorageService and Service for improved functionality.
- Added a name attribute for service identification.
- Implemented an async teardown method for future extensibility, even though no cleanup is currently needed.
- Refactored the constructor to ensure proper initialization of both parent classes.
- feat: Implement telemetry service with abstract base class and minimal logging functionality
- Added
BaseTelemetryServiceas an abstract base class defining the interface for telemetry services. - Introduced
TelemetryService, a lightweight implementation that logs telemetry events without sending data. - Created
__init__.pyto expose the telemetry service in the package namespace. - Ensured robust async methods for logging various telemetry events and handling exceptions.
- feat: Introduce BaseTracingService and implement minimal TracingService
- Added
BaseTracingServiceas an abstract base class defining the interface for tracing services. - Implemented
TracingService, a lightweight version that logs trace events without external integrations. - Included async methods for starting and ending traces, tracing components, and managing logs and outputs.
- Enhanced documentation for clarity on method usage and parameters.
- feat: Add unit tests for service registration decorators
- Introduced a new test suite for validating the functionality of the @register_service decorator.
- Implemented tests for various service types including LocalStorageService, TelemetryService, and TracingService.
- Verified behavior for service registration with and without overrides, ensuring correct service management.
- Included tests for custom service implementations and preservation of class functionality.
- Enhanced overall test coverage for the service registration mechanism.
- feat: Add comprehensive unit and integration tests for ServiceManager
- Introduced a suite of unit tests covering edge cases for service registration, lifecycle management, and dependency resolution.
- Implemented integration tests to validate service loading from configuration files and environment variables.
- Enhanced test coverage for various service types including LocalStorageService, TelemetryService, and VariableService.
- Verified behavior for service registration with and without overrides, ensuring correct service management.
- Ensured robust handling of error conditions and edge cases in service creation and configuration parsing.
- feat: Add unit and integration tests for minimal service implementations
- Introduced comprehensive unit tests for LocalStorageService, TelemetryService, TracingService, and VariableService.
- Implemented integration tests to validate the interaction between minimal services.
- Ensured robust coverage for file operations, service readiness, and exception handling.
- Enhanced documentation within tests for clarity on functionality and expected behavior.
docs: Add detailed documentation for pluggable services architecture and usage
feat: Add example configuration file for Langflow services
docs: Update PLUGGABLE_SERVICES.md to enhance architecture benefits section
- Revised the documentation to highlight the advantages of the pluggable service system.
- Replaced the migration guide with a detailed overview of features such as automatic discovery, lazy instantiation, dependency injection, and lifecycle management.
- Clarified examples of service registration and improved overall documentation for better understanding.
[autofix.ci] apply automated fixes
[autofix.ci] apply automated fixes (attempt 2/3)
[autofix.ci] apply automated fixes (attempt 3/3)
test(services): improve variable service teardown test with public API assertions
docs(pluggable-service-layer): add docstrings for service manager and implementations
Update component index
[autofix.ci] apply automated fixes
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>