diff --git a/acestep/ui/gradio/__init__.py b/acestep/ui/gradio/__init__.py index 76c558ef..cbb47f0e 100644 --- a/acestep/ui/gradio/__init__.py +++ b/acestep/ui/gradio/__init__.py @@ -1,2 +1,16 @@ """Gradio package: web UI composition for ACE-Step controls and outputs.""" -from acestep.ui.gradio.interfaces import create_gradio_interface # noqa: F401 + +from __future__ import annotations + +from typing import Any + + +def create_gradio_interface(*args: Any, **kwargs: Any) -> Any: + """Create the Gradio interface using a lazy import. + + This keeps package imports lightweight for environments that run unit tests + without Gradio installed, while preserving the existing public facade. + """ + from acestep.ui.gradio.interfaces import create_gradio_interface as _create_gradio_interface + + return _create_gradio_interface(*args, **kwargs) diff --git a/acestep/ui/gradio/events/wiring/__init__.py b/acestep/ui/gradio/events/wiring/__init__.py index 1953fe67..8e5e0909 100644 --- a/acestep/ui/gradio/events/wiring/__init__.py +++ b/acestep/ui/gradio/events/wiring/__init__.py @@ -4,6 +4,10 @@ event wiring facade in ``acestep.ui.gradio.events``. """ +from __future__ import annotations + +from typing import Any + from .context import ( GenerationWiringContext, TrainingWiringContext, @@ -11,23 +15,98 @@ build_auto_checkbox_outputs, build_mode_ui_outputs, ) -from .generation_metadata_wiring import register_generation_metadata_handlers -from .generation_metadata_file_wiring import register_generation_metadata_file_handlers -from .generation_batch_navigation_wiring import register_generation_batch_navigation_handlers -from .generation_mode_wiring import register_generation_mode_handlers -from .generation_run_wiring import register_generation_run_handlers -from .results_aux_wiring import register_results_aux_handlers -from .results_display_wiring import ( - register_results_restore_and_lrc_handlers, - register_results_save_button_handlers, -) -from .generation_service_wiring import register_generation_service_handlers -from .training_dataset_builder_wiring import register_training_dataset_builder_handlers -from .training_dataset_preprocess_wiring import ( - register_training_dataset_load_handler, - register_training_preprocess_handler, -) -from .training_run_wiring import register_training_run_handlers + + +def register_generation_metadata_handlers(*args: Any, **kwargs: Any) -> Any: + """Register metadata-related generation handlers via lazy import.""" + from .generation_metadata_wiring import register_generation_metadata_handlers as _register + + return _register(*args, **kwargs) + + +def register_generation_metadata_file_handlers(*args: Any, **kwargs: Any) -> Any: + """Register generation metadata file handlers via lazy import.""" + from .generation_metadata_file_wiring import register_generation_metadata_file_handlers as _register + + return _register(*args, **kwargs) + + +def register_generation_batch_navigation_handlers(*args: Any, **kwargs: Any) -> Any: + """Register generation batch-navigation handlers via lazy import.""" + from .generation_batch_navigation_wiring import register_generation_batch_navigation_handlers as _register + + return _register(*args, **kwargs) + + +def register_generation_mode_handlers(*args: Any, **kwargs: Any) -> Any: + """Register generation mode handlers via lazy import.""" + from .generation_mode_wiring import register_generation_mode_handlers as _register + + return _register(*args, **kwargs) + + +def register_generation_run_handlers(*args: Any, **kwargs: Any) -> Any: + """Register generation run handlers via lazy import.""" + from .generation_run_wiring import register_generation_run_handlers as _register + + return _register(*args, **kwargs) + + +def register_results_aux_handlers(*args: Any, **kwargs: Any) -> Any: + """Register results auxiliary handlers via lazy import.""" + from .results_aux_wiring import register_results_aux_handlers as _register + + return _register(*args, **kwargs) + + +def register_results_restore_and_lrc_handlers(*args: Any, **kwargs: Any) -> Any: + """Register results restore/LRC handlers via lazy import.""" + from .results_display_wiring import register_results_restore_and_lrc_handlers as _register + + return _register(*args, **kwargs) + + +def register_results_save_button_handlers(*args: Any, **kwargs: Any) -> Any: + """Register results save-button handlers via lazy import.""" + from .results_display_wiring import register_results_save_button_handlers as _register + + return _register(*args, **kwargs) + + +def register_generation_service_handlers(*args: Any, **kwargs: Any) -> Any: + """Register generation service handlers via lazy import.""" + from .generation_service_wiring import register_generation_service_handlers as _register + + return _register(*args, **kwargs) + + +def register_training_dataset_builder_handlers(*args: Any, **kwargs: Any) -> Any: + """Register training dataset builder handlers via lazy import.""" + from .training_dataset_builder_wiring import register_training_dataset_builder_handlers as _register + + return _register(*args, **kwargs) + + +def register_training_dataset_load_handler(*args: Any, **kwargs: Any) -> Any: + """Register training dataset load handlers via lazy import.""" + from .training_dataset_preprocess_wiring import register_training_dataset_load_handler as _register + + return _register(*args, **kwargs) + + +def register_training_preprocess_handler(*args: Any, **kwargs: Any) -> Any: + """Register training preprocess handlers via lazy import.""" + from .training_dataset_preprocess_wiring import register_training_preprocess_handler as _register + + return _register(*args, **kwargs) + + +def register_training_run_handlers(*args: Any, **kwargs: Any) -> Any: + """Register training run handlers via lazy import.""" + from .training_run_wiring import register_training_run_handlers as _register + + return _register(*args, **kwargs) + __all__ = [ "GenerationWiringContext", diff --git a/acestep/ui/gradio/gradio_package_init_test.py b/acestep/ui/gradio/gradio_package_init_test.py new file mode 100644 index 00000000..1631f981 --- /dev/null +++ b/acestep/ui/gradio/gradio_package_init_test.py @@ -0,0 +1,17 @@ +"""Tests for lazy-import behavior in the Gradio package facade.""" + +import importlib +import unittest + + +class GradioPackageInitTests(unittest.TestCase): + """Verify `acestep.ui.gradio` imports without requiring Gradio at import time.""" + + def test_package_import_exposes_interface_factory_without_gradio_dependency(self): + """Importing package should succeed and expose the create facade callable.""" + module = importlib.import_module("acestep.ui.gradio") + self.assertTrue(callable(module.create_gradio_interface)) + + +if __name__ == "__main__": + unittest.main()