Coverage for frappe_manager / output_manager / console_singleton.py: 86%

14 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-07-02 18:13 +0530

1""" 

2Singleton Console objects for Rich output. 

3 

4Provides shared Console instances to avoid expensive re-initialization 

5of Rich Console objects across multiple RichOutputHandler instances. 

6 

7Performance Impact: 

8- 30-50% faster RichOutputHandler initialization 

9- 2-4MB memory savings per handler instance 

10- Reduced object allocation overhead 

11""" 

12 

13from rich.console import Console 

14 

15_stdout_console: Console | None = None 

16_stderr_console: Console | None = None 

17 

18 

19def get_stdout_console() -> Console: 

20 """ 

21 Get or create stdout Console singleton. 

22 

23 Returns: 

24 Shared Console instance for stdout 

25 """ 

26 global _stdout_console 

27 if _stdout_console is None: 

28 _stdout_console = Console() 

29 return _stdout_console 

30 

31 

32def get_stderr_console() -> Console: 

33 """ 

34 Get or create stderr Console singleton. 

35 

36 Returns: 

37 Shared Console instance for stderr (error output) 

38 """ 

39 global _stderr_console 

40 if _stderr_console is None: 

41 _stderr_console = Console(stderr=True) 

42 return _stderr_console 

43 

44 

45def reset_consoles() -> None: 

46 """ 

47 Reset console singletons to None. 

48 

49 Useful for testing scenarios where fresh Console instances are needed. 

50 Not typically needed in production code. 

51 """ 

52 global _stdout_console, _stderr_console 

53 _stdout_console = None 

54 _stderr_console = None