Coverage for /Users/OORDCOR/Documents/code/bump-my-version/bumpversion/ui.py: 68%
19 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-15 09:15 -0600
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-15 09:15 -0600
1"""Utilities for user interface."""
2import logging
4import click
5from click import UsageError, secho
6from rich.logging import RichHandler
8from bumpversion.indented_logger import IndentedLoggerAdapter
10logger = logging.getLogger("bumpversion")
12VERBOSITY = {
13 0: logging.WARNING,
14 1: logging.INFO,
15 2: logging.DEBUG,
16}
19def get_indented_logger(name: str) -> "IndentedLoggerAdapter":
20 """Get a logger with indentation."""
21 return IndentedLoggerAdapter(logging.getLogger(name))
24def setup_logging(verbose: int = 0) -> None:
25 """Configure the logging."""
26 logging.basicConfig(
27 level=VERBOSITY.get(verbose, logging.DEBUG),
28 format="%(message)s",
29 datefmt="[%X]",
30 handlers=[
31 RichHandler(
32 rich_tracebacks=True, show_level=False, show_path=False, show_time=False, tracebacks_suppress=[click]
33 )
34 ],
35 )
36 root_logger = get_indented_logger("")
37 root_logger.setLevel(VERBOSITY.get(verbose, logging.DEBUG))
40def print_info(msg: str) -> None:
41 """Echo a message to the console."""
42 secho(msg)
45def print_error(msg: str) -> None:
46 """Raise an error and exit."""
47 raise UsageError(msg)
50def print_warning(msg: str) -> None:
51 """Echo a warning to the console."""
52 secho(f"\nWARNING:\n\n{msg}\n", fg="yellow")