"""Code generation provider protocol for app-specific code emitters."""
from typing import Protocol, Any, Optional
[docs]
class CodegenProvider(Protocol):
"""Protocol for code generators used by the simple code editor."""
[docs]
def generate_complete_orchestrator_code(
self,
plate_paths: list[str],
pipeline_data: dict,
global_config: Optional[Any] = None,
per_plate_configs: Optional[dict] = None,
pipeline_config: Optional[Any] = None,
clean_mode: bool = True,
) -> str:
...
[docs]
def generate_complete_pipeline_steps_code(
self,
pipeline_steps: list[Any],
clean_mode: bool = True,
) -> str:
...
[docs]
def generate_complete_function_pattern_code(
self,
func_obj: Any,
clean_mode: bool = False,
) -> str:
...
[docs]
def generate_config_code(
self,
config_obj: Any,
clean_mode: bool = True,
config_class: Optional[type] = None,
) -> str:
...
[docs]
def generate_step_code(self, step_obj: Any, clean_mode: bool = True) -> str:
...
_codegen_provider: Optional[CodegenProvider] = None
[docs]
def register_codegen_provider(provider: CodegenProvider) -> None:
"""Register a global code generation provider."""
global _codegen_provider
_codegen_provider = provider
[docs]
def get_codegen_provider() -> Optional[CodegenProvider]:
"""Get the registered code generation provider."""
return _codegen_provider