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 2024-02-24 07:45 -0600
« prev ^ index » next coverage.py v7.3.2, created at 2024-02-24 07:45 -0600
1"""Utilities for user interface."""
3import logging
5import click
6from click import UsageError, secho
7from rich.logging import RichHandler
9from bumpversion.indented_logger import IndentedLoggerAdapter
11logger = logging.getLogger("bumpversion")
13VERBOSITY = {
14 0: logging.WARNING,
15 1: logging.INFO,
16 2: logging.DEBUG,
17}
20def get_indented_logger(name: str) -> "IndentedLoggerAdapter":
21 """Get a logger with indentation."""
22 return IndentedLoggerAdapter(logging.getLogger(name))
25def setup_logging(verbose: int = 0) -> None:
26 """Configure the logging."""
27 logging.basicConfig(
28 level=VERBOSITY.get(verbose, logging.DEBUG),
29 format="%(message)s",
30 datefmt="[%X]",
31 handlers=[
32 RichHandler(
33 rich_tracebacks=True, show_level=False, show_path=False, show_time=False, tracebacks_suppress=[click]
34 )
35 ],
36 )
37 root_logger = get_indented_logger("")
38 root_logger.setLevel(VERBOSITY.get(verbose, logging.DEBUG))
41def print_info(msg: str) -> None:
42 """Echo a message to the console."""
43 secho(msg)
46def print_error(msg: str) -> None:
47 """Raise an error and exit."""
48 raise UsageError(msg)
51def print_warning(msg: str) -> None:
52 """Echo a warning to the console."""
53 secho(f"\nWARNING:\n\n{msg}\n", fg="yellow")