Coverage for src / lexigram / contracts / multimedia / exceptions.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-08-19 05:41 +0800

1"""Domain errors for the multimedia generation subsystem.""" 

2 

3from __future__ import annotations 

4 

5from typing import Any 

6 

7from lexigram.contracts.exceptions.domain import DomainError 

8 

9 

10class MultimediaError(DomainError): 

11 """Base exception for all multimedia-generation errors. 

12 

13 Mirrors ``AIError(DomainError)`` — recoverable, expected failures that 

14 callers should handle gracefully via ``Result``. 

15 """ 

16 

17 _code = "LEX_ERR_MM_001" 

18 

19 def __init__( 

20 self, message: str = "Multimedia generation error", **kwargs: Any 

21 ) -> None: 

22 super().__init__(message, **kwargs) 

23 

24 

25class BeatAnalysisError(MultimediaError): 

26 """Base for tempo/beat-detection errors.""" 

27 

28 _code = "LEX_ERR_MM_008" 

29 

30 

31class TTSError(MultimediaError): 

32 """Base for text-to-speech generation errors.""" 

33 

34 _code = "LEX_ERR_MM_002" 

35 

36 

37class MusicGenerationError(MultimediaError): 

38 """Base for music/sound generation errors.""" 

39 

40 _code = "LEX_ERR_MM_003" 

41 

42 

43class VideoGenerationError(MultimediaError): 

44 """Base for video generation errors.""" 

45 

46 _code = "LEX_ERR_MM_004" 

47 

48 

49class ImageGenerationError(MultimediaError): 

50 """Base for still-image generation errors.""" 

51 

52 _code = "LEX_ERR_MM_005" 

53 

54 

55class ProviderNotInstalledError(MultimediaError): 

56 """Raised eagerly at DI-resolution time when a configured provider's 

57 optional extra is not installed. Carries an actionable install hint 

58 rather than surfacing a bare ImportError later. 

59 """ 

60 

61 _code = "LEX_ERR_MM_006" 

62 

63 

64class UpscaleError(MultimediaError): 

65 """Base for image/video super-resolution errors.""" 

66 

67 _code = "LEX_ERR_MM_007" 

68 

69 

70__all__ = [ 

71 "BeatAnalysisError", 

72 "ImageGenerationError", 

73 "MultimediaError", 

74 "MusicGenerationError", 

75 "ProviderNotInstalledError", 

76 "TTSError", 

77 "UpscaleError", 

78 "VideoGenerationError", 

79]