Spaces:
Running on Zero
Running on Zero
| # ===================================================== | |
| # Apckeyl Framework | |
| # Version 1.0 | |
| # module_registry.py | |
| # ===================================================== | |
| """ | |
| Apckeyl Module Registry. | |
| Version 1.0 | |
| Реестр Compute Modules Apckeyl Framework. | |
| Этот файл пока НЕ выполняет сетевые запросы. | |
| Он только хранит информацию о доступных модулях | |
| и предоставляет безопасные операции регистрации | |
| и поиска. | |
| """ | |
| # ===================================================== | |
| # Module Registry | |
| # ===================================================== | |
| class ModuleRegistry: | |
| def __init__(self): | |
| self._modules = {} | |
| # ================================================= | |
| # Register Module | |
| # ================================================= | |
| def register( | |
| self, | |
| module_id, | |
| module_name, | |
| module_type, | |
| endpoint=None, | |
| capabilities=None, | |
| version="1.0", | |
| ): | |
| if not module_id: | |
| raise ValueError( | |
| "module_id is required" | |
| ) | |
| if not module_name: | |
| raise ValueError( | |
| "module_name is required" | |
| ) | |
| if not module_type: | |
| raise ValueError( | |
| "module_type is required" | |
| ) | |
| if capabilities is None: | |
| capabilities = [] | |
| self._modules[module_id] = { | |
| "module_id": module_id, | |
| "module_name": module_name, | |
| "module_type": module_type, | |
| "endpoint": endpoint, | |
| "status": "unknown", | |
| "capabilities": list(capabilities), | |
| "version": version, | |
| } | |
| # ================================================= | |
| # Remove Module | |
| # ================================================= | |
| def unregister(self, module_id): | |
| if module_id in self._modules: | |
| del self._modules[module_id] | |
| # ================================================= | |
| # Get Module | |
| # ================================================= | |
| def get(self, module_id): | |
| return self._modules.get( | |
| module_id | |
| ) | |
| # ================================================= | |
| # Get All Modules | |
| # ================================================= | |
| def get_all(self): | |
| return dict( | |
| self._modules | |
| ) | |
| # ================================================= | |
| # Find By Type | |
| # ================================================= | |
| def find_by_type(self, module_type): | |
| return [ | |
| module | |
| for module | |
| in self._modules.values() | |
| if module["module_type"] == module_type | |
| ] | |
| # ================================================= | |
| # Update Status | |
| # ================================================= | |
| def update_status( | |
| self, | |
| module_id, | |
| status, | |
| ): | |
| module = self.get( | |
| module_id | |
| ) | |
| if module is None: | |
| raise KeyError( | |
| f"Unknown module: {module_id}" | |
| ) | |
| module["status"] = status | |
| # ================================================= | |
| # Check Module | |
| # ================================================= | |
| def exists(self, module_id): | |
| return module_id in self._modules | |
| # ===================================================== | |
| # Default Registry | |
| # ===================================================== | |
| registry = ModuleRegistry() | |
| # ===================================================== | |
| # First Production Module | |
| # ===================================================== | |
| registry.register( | |
| module_id="realesrgan", | |
| module_name="Apckeyl_RealESRGAN", | |
| module_type="image_upscaler", | |
| endpoint=None, | |
| capabilities=[ | |
| "image_upscale", | |
| ], | |
| version="1.0", | |
| ) | |
| # ===================================================== | |
| # Initial Status | |
| # ===================================================== | |
| registry.update_status( | |
| module_id="realesrgan", | |
| status="available", | |
| ) |