Coverage for src/prints/themes.py: 52.17%

23 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-21 21:20 +0000

1#!/usr/bin/env python3 

2 

3# Modules libraries 

4try: 

5 from prompt_toolkit.styles.style import Style as prompt_toolkit_styles_Style 

6except ModuleNotFoundError: # pragma: no cover 

7 from typing import Any as prompt_toolkit_styles_Style # type: ignore[assignment] 

8 

9# Components 

10from .colors import Colors 

11 

12# Themes class, pylint: disable=too-few-public-methods 

13class Themes: 

14 

15 # Flags 

16 __prepared = False 

17 

18 # Members 

19 __bold: str = '' 

20 __red: str = '' 

21 __selected: str = '' 

22 

23 # Prepare 

24 @staticmethod 

25 def __prepare() -> None: 

26 

27 # Colors enabled 

28 if Colors.enabled(): 

29 Themes.__bold = 'bold' 

30 Themes.__red = '#FF0000 bold' 

31 Themes.__selected = 'bold noreverse' 

32 

33 # Colors disabled 

34 else: 

35 Themes.__bold = 'noinherit bold' 

36 Themes.__red = 'noinherit bold' 

37 Themes.__selected = 'noinherit bold noreverse' 

38 

39 # Raise flag 

40 Themes.__prepared = True 

41 

42 # Confirmation 

43 @staticmethod 

44 def confirmation_style() -> prompt_toolkit_styles_Style: 

45 

46 # Prepare 

47 if not Themes.__prepared: 

48 Themes.__prepare() 

49 

50 # Result 

51 return prompt_toolkit_styles_Style([ 

52 ('answer', Themes.__red), 

53 ('instruction', Themes.__red), 

54 ('highlighted', Themes.__bold), 

55 ('pointer', Themes.__bold), 

56 ('qmark', Themes.__bold), 

57 ('question', Themes.__bold), 

58 ('selected', Themes.__selected), 

59 ('separator', Themes.__bold), 

60 ])