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

1# /////////////////////////////////////////////////////////////// 

2# RELEASER_FACTORY - Factory for releaser instances 

3# Project: ezcompiler 

4# /////////////////////////////////////////////////////////////// 

5 

6"""Releaser factory - Centralized creation of releaser instances by type.""" 

7 

8from __future__ import annotations 

9 

10# /////////////////////////////////////////////////////////////// 

11# IMPORTS 

12# /////////////////////////////////////////////////////////////// 

13from typing import Any 

14 

15from .._types import ReleaserPort 

16from ..shared.exceptions import ReleaserTypeError 

17from ._tufup_releaser import TufupReleaser 

18 

19# /////////////////////////////////////////////////////////////// 

20# CLASSES 

21# /////////////////////////////////////////////////////////////// 

22 

23 

24class ReleaserFactory: 

25 """Factory class for creating releaser instances.""" 

26 

27 # ------------------------------------------------ 

28 # FACTORY METHODS 

29 # ------------------------------------------------ 

30 

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. 

36 

37 Args: 

38 release_type: Type of releaser ("tufup") 

39 config: Configuration dictionary for the releaser 

40 

41 Returns: 

42 ReleaserPort: Configured releaser instance (satisfies the Port) 

43 

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}") 

51 

52 @staticmethod 

53 def get_supported_types() -> list[str]: 

54 """Return the list of supported release backend names.""" 

55 return ["tufup"]