-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlog.py
More file actions
99 lines (72 loc) · 2.54 KB
/
log.py
File metadata and controls
99 lines (72 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
"""Log utilities for displaying messages."""
from __future__ import annotations
import sys
from typing import TextIO
from rich.console import Console
from .symbols import S_BAR, S_ERROR, S_INFO, S_STEP_ACTIVE, S_SUCCESS, S_WARN
class Log:
"""Log utilities for displaying formatted messages.
Provides methods for different log levels with appropriate
colors and symbols.
Example:
>>> from python_clack import log
>>> log.info("Processing...")
>>> log.success("Done!")
>>> log.warn("Deprecation warning")
>>> log.error("Something failed")
"""
def __init__(self, output: TextIO | None = None) -> None:
"""Initialize the logger.
Args:
output: Output stream (defaults to stdout).
"""
self._output = output or sys.stdout
self._console = Console(file=self._output, highlight=False)
def _log(self, symbol: str, color: str, message: str) -> None:
"""Internal log method."""
self._console.print(f"[bright_black]{S_BAR}[/bright_black]")
self._console.print(f"[{color}]{symbol}[/{color}] {message}")
def message(self, message: str) -> None:
"""Display a plain message.
Args:
message: The message to display.
"""
self._console.print(f"[bright_black]{S_BAR}[/bright_black] {message}")
def info(self, message: str) -> None:
"""Display an info message.
Args:
message: The message to display.
"""
self._log(S_INFO, "blue", message)
def success(self, message: str) -> None:
"""Display a success message.
Args:
message: The message to display.
"""
self._log(S_SUCCESS, "green", message)
def warn(self, message: str) -> None:
"""Display a warning message.
Args:
message: The message to display.
"""
self._log(S_WARN, "yellow", message)
def warning(self, message: str) -> None:
"""Display a warning message (alias for warn).
Args:
message: The message to display.
"""
self.warn(message)
def error(self, message: str) -> None:
"""Display an error message.
Args:
message: The message to display.
"""
self._log(S_ERROR, "red", message)
def step(self, message: str) -> None:
"""Display a step message.
Args:
message: The message to display.
"""
self._log(S_STEP_ACTIVE, "cyan", message)
# Default log instance
log = Log()