Coverage for lintro / utils / display_helpers.py: 100%

68 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

1"""Display helpers for Lintro console output. 

2 

3Contains ASCII art display functions and styling constants. 

4""" 

5 

6from collections.abc import Callable 

7 

8from loguru import logger 

9 

10from lintro.enums.action import Action 

11from lintro.utils.formatting import read_ascii_art 

12 

13# Constants for border lengths 

14BORDER_LENGTH: int = 50 

15INFO_BORDER_LENGTH: int = 40 

16 

17 

18def print_ascii_art( 

19 console_output_func: Callable[..., None], 

20 issue_count: int, 

21) -> None: 

22 """Print ASCII art based on the issue count. 

23 

24 Args: 

25 console_output_func: Function to output text to console 

26 issue_count: The number of issues (remaining, fixed, or total) 

27 """ 

28 try: 

29 if issue_count == 0: 

30 ascii_art = read_ascii_art(filename="success.txt") 

31 else: 

32 ascii_art = read_ascii_art(filename="fail.txt") 

33 

34 if ascii_art: 

35 art_text: str = "\n".join(ascii_art) 

36 console_output_func(text=art_text) 

37 except (OSError, ValueError, TypeError) as e: 

38 logger.debug(f"Could not load ASCII art: {e}") 

39 

40 

41def print_final_status( 

42 console_output_func: Callable[..., None], 

43 action: Action, 

44 total_issues: int, 

45) -> None: 

46 """Print the final status for the run. 

47 

48 Args: 

49 console_output_func: Function to output text to console 

50 action: Action: The Action enum value representing the action being performed. 

51 total_issues: int: The total number of issues found. 

52 """ 

53 try: 

54 import click 

55 

56 if action == Action.FIX: 

57 # Format operations: show success regardless of fixes made 

58 if total_issues == 0: 

59 final_msg: str = "✓ No issues found." 

60 else: 

61 final_msg = f"✓ Fixed {total_issues} issues." 

62 console_output_func(text=click.style(final_msg, fg="green", bold=True)) 

63 else: # check 

64 # Check operations: show failure if issues found 

65 if total_issues == 0: 

66 final_msg = "✓ No issues found." 

67 console_output_func(text=click.style(final_msg, fg="green", bold=True)) 

68 else: 

69 final_msg = f"✗ Found {total_issues} issues." 

70 console_output_func(text=click.style(final_msg, fg="red", bold=True)) 

71 

72 console_output_func(text="") 

73 except ImportError: 

74 # Fallback if click not available 

75 if action == Action.FIX: 

76 if total_issues == 0: 

77 final_msg = "✓ No issues found." 

78 else: 

79 final_msg = f"✓ Fixed {total_issues} issues." 

80 console_output_func(text=f"\033[92m{final_msg}\033[0m") # green 

81 else: # check 

82 if total_issues == 0: 

83 final_msg = "✓ No issues found." 

84 console_output_func(text=f"\033[92m{final_msg}\033[0m") # green 

85 else: 

86 final_msg = f"✗ Found {total_issues} issues." 

87 console_output_func(text=f"\033[91m{final_msg}\033[0m") # red 

88 

89 console_output_func(text="") 

90 

91 

92def print_final_status_format( 

93 console_output_func: Callable[..., None], 

94 total_fixed: int, 

95 total_remaining: int, 

96) -> None: 

97 """Print the final status for format operations. 

98 

99 Args: 

100 console_output_func: Function to output text to console 

101 total_fixed: int: The total number of issues fixed. 

102 total_remaining: int: The total number of remaining issues. 

103 """ 

104 try: 

105 import click 

106 

107 if total_remaining == 0: 

108 if total_fixed == 0: 

109 final_msg: str = "✓ No issues found." 

110 else: 

111 final_msg = f"{total_fixed} fixed" 

112 console_output_func(text=click.style(final_msg, fg="green", bold=True)) 

113 else: 

114 if total_fixed > 0: 

115 fixed_msg: str = f"{total_fixed} fixed" 

116 console_output_func(text=click.style(fixed_msg, fg="green", bold=True)) 

117 remaining_msg: str = f"{total_remaining} remaining" 

118 console_output_func(text=click.style(remaining_msg, fg="red", bold=True)) 

119 

120 console_output_func(text="") 

121 except ImportError: 

122 # Fallback if click not available 

123 if total_remaining == 0: 

124 if total_fixed == 0: 

125 final_msg = "✓ No issues found." 

126 else: 

127 final_msg = f"{total_fixed} fixed" 

128 console_output_func(text=f"\033[92m{final_msg}\033[0m") # green 

129 else: 

130 if total_fixed > 0: 

131 fixed_msg = f"{total_fixed} fixed" 

132 console_output_func(text=f"\033[92m{fixed_msg}\033[0m") # green 

133 remaining_msg = f"{total_remaining} remaining" 

134 console_output_func(text=f"\033[91m{remaining_msg}\033[0m") # red 

135 

136 console_output_func(text="")