重构pipeline的UI架构,支持后续pipeline的动态拓展
This commit is contained in:
57
web/pipelines/base.py
Normal file
57
web/pipelines/base.py
Normal file
@@ -0,0 +1,57 @@
|
||||
# Copyright (C) 2025 AIDC-AI
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""
|
||||
Pipeline UI Base & Registry
|
||||
|
||||
Defines the PipelineUI protocol and the registration mechanism.
|
||||
"""
|
||||
|
||||
from typing import Dict, Any, List, Type
|
||||
|
||||
class PipelineUI:
|
||||
"""
|
||||
Base class for Pipeline UI plugins.
|
||||
|
||||
Each pipeline should implement a subclass to define its own full-page UI.
|
||||
"""
|
||||
name: str = "base"
|
||||
display_name: str = "Base Pipeline"
|
||||
icon: str = "🔌"
|
||||
description: str = ""
|
||||
|
||||
def render(self, pixelle_video: Any):
|
||||
"""
|
||||
Render the full page content for this pipeline (below settings).
|
||||
|
||||
Args:
|
||||
pixelle_video: The initialized PixelleVideoCore instance.
|
||||
"""
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
# ==================== Registry ====================
|
||||
|
||||
_pipeline_uis: Dict[str, PipelineUI] = {}
|
||||
|
||||
def register_pipeline_ui(ui_class: Type[PipelineUI]):
|
||||
"""Register a pipeline UI class"""
|
||||
instance = ui_class()
|
||||
_pipeline_uis[instance.name] = instance
|
||||
|
||||
def get_pipeline_ui(name: str) -> PipelineUI:
|
||||
"""Get a pipeline UI instance by name"""
|
||||
return _pipeline_uis.get(name)
|
||||
|
||||
def get_all_pipeline_uis() -> List[PipelineUI]:
|
||||
"""Get all registered pipeline UI instances"""
|
||||
return list(_pipeline_uis.values())
|
||||
Reference in New Issue
Block a user