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
« prev ^ index » next coverage.py v7.13.5, created at 2026-07-02 18:13 +0530
1"""
2Singleton Console objects for Rich output.
4Provides shared Console instances to avoid expensive re-initialization
5of Rich Console objects across multiple RichOutputHandler instances.
7Performance Impact:
8- 30-50% faster RichOutputHandler initialization
9- 2-4MB memory savings per handler instance
10- Reduced object allocation overhead
11"""
13from rich.console import Console
15_stdout_console: Console | None = None
16_stderr_console: Console | None = None
19def get_stdout_console() -> Console:
20 """
21 Get or create stdout Console singleton.
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
32def get_stderr_console() -> Console:
33 """
34 Get or create stderr Console singleton.
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
45def reset_consoles() -> None:
46 """
47 Reset console singletons to None.
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