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

1"""Utilities for user interface.""" 

2import logging 

3 

4import click 

5from click import UsageError, secho 

6from rich.logging import RichHandler 

7 

8from bumpversion.indented_logger import IndentedLoggerAdapter 

9 

10logger = logging.getLogger("bumpversion") 

11 

12VERBOSITY = { 

13 0: logging.WARNING, 

14 1: logging.INFO, 

15 2: logging.DEBUG, 

16} 

17 

18 

19def get_indented_logger(name: str) -> "IndentedLoggerAdapter": 

20 """Get a logger with indentation.""" 

21 return IndentedLoggerAdapter(logging.getLogger(name)) 

22 

23 

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)) 

38 

39 

40def print_info(msg: str) -> None: 

41 """Echo a message to the console.""" 

42 secho(msg) 

43 

44 

45def print_error(msg: str) -> None: 

46 """Raise an error and exit.""" 

47 raise UsageError(msg) 

48 

49 

50def print_warning(msg: str) -> None: 

51 """Echo a warning to the console.""" 

52 secho(f"\nWARNING:\n\n{msg}\n", fg="yellow")