Coverage for src/ezcompiler/adapters/releaser_factory.py: 100.00%
15 statements
« prev ^ index » next coverage.py v7.14.3, created at 2026-07-04 11:22 +0000
« prev ^ index » next coverage.py v7.14.3, created at 2026-07-04 11:22 +0000
1# ///////////////////////////////////////////////////////////////
2# RELEASER_FACTORY - Factory for releaser instances
3# Project: ezcompiler
4# ///////////////////////////////////////////////////////////////
6"""Releaser factory - Centralized creation of releaser instances by type."""
8from __future__ import annotations
10# ///////////////////////////////////////////////////////////////
11# IMPORTS
12# ///////////////////////////////////////////////////////////////
13from typing import Any
15from .._types import ReleaserPort
16from ..shared.exceptions import ReleaserTypeError
17from ._tufup_releaser import TufupReleaser
19# ///////////////////////////////////////////////////////////////
20# CLASSES
21# ///////////////////////////////////////////////////////////////
24class ReleaserFactory:
25 """Factory class for creating releaser instances."""
27 # ------------------------------------------------
28 # FACTORY METHODS
29 # ------------------------------------------------
31 @staticmethod
32 def create_releaser(
33 release_type: str, config: dict[str, Any] | None = None
34 ) -> ReleaserPort:
35 """Create a releaser instance for the given type.
37 Args:
38 release_type: Type of releaser ("tufup")
39 config: Configuration dictionary for the releaser
41 Returns:
42 ReleaserPort: Configured releaser instance (satisfies the Port)
44 Raises:
45 ReleaserTypeError: If release type is not supported
46 """
47 normalized = release_type.lower()
48 if normalized == "tufup":
49 return TufupReleaser(config)
50 raise ReleaserTypeError(f"Unsupported release type: {release_type}")
52 @staticmethod
53 def get_supported_types() -> list[str]:
54 """Return the list of supported release backend names."""
55 return ["tufup"]