rhiza_tools.console

Console output utilities for rhiza-tools CLI.

Provides clean, user-facing output functions using typer.echo/secho, which is the standard approach for Click/Typer-based CLIs. Loguru is reserved for debug/diagnostic output and is only enabled when the user passes --verbose.

Usage in commands::

from rhiza_tools.console import console

console.info("Current version: 1.0.0")
console.success("Version bumped successfully!")
console.warning("Branch is ahead of remote")
console.error("pyproject.toml not found")
 1"""Console output utilities for rhiza-tools CLI.
 2
 3Provides clean, user-facing output functions using typer.echo/secho,
 4which is the standard approach for Click/Typer-based CLIs. Loguru is
 5reserved for debug/diagnostic output and is only enabled when the user
 6passes --verbose.
 7
 8Usage in commands::
 9
10    from rhiza_tools.console import console
11
12    console.info("Current version: 1.0.0")
13    console.success("Version bumped successfully!")
14    console.warning("Branch is ahead of remote")
15    console.error("pyproject.toml not found")
16"""
17
18import sys
19
20import typer
21from loguru import logger
22
23_verbose: bool = False
24
25
26def configure(*, verbose: bool = False) -> None:
27    """Configure console output and logging verbosity.
28
29    Removes loguru's default stderr handler so that loguru output is
30    suppressed by default. When *verbose* is ``True``, a handler is
31    re-added at DEBUG level.
32
33    This should be called once from the CLI callback before any command
34    runs.
35
36    Args:
37        verbose: If True, enable loguru debug output on stderr.
38    """
39    global _verbose
40    _verbose = verbose
41
42    # Remove all default loguru handlers (the default one logs to stderr at DEBUG)
43    logger.remove()
44
45    if verbose:
46        logger.add(sys.stderr, level="DEBUG")
47
48
49def is_verbose() -> bool:
50    """Return whether verbose mode is currently enabled."""
51    return _verbose
52
53
54def info(message: str) -> None:
55    """Print an informational message to stdout.
56
57    Args:
58        message: The message to display.
59    """
60    typer.echo(message)
61
62
63def success(message: str) -> None:
64    """Print a success message to stdout.
65
66    Args:
67        message: The message to display.
68    """
69    typer.echo(message)
70
71
72def warning(message: str) -> None:
73    """Print a warning message to stderr.
74
75    Args:
76        message: The message to display.
77    """
78    typer.secho(message, fg=typer.colors.YELLOW, err=True)
79
80
81def error(message: str) -> None:
82    """Print an error message to stderr.
83
84    Args:
85        message: The message to display.
86    """
87    typer.secho(message, fg=typer.colors.RED, err=True)
def configure(*, verbose: bool = False) -> None:
27def configure(*, verbose: bool = False) -> None:
28    """Configure console output and logging verbosity.
29
30    Removes loguru's default stderr handler so that loguru output is
31    suppressed by default. When *verbose* is ``True``, a handler is
32    re-added at DEBUG level.
33
34    This should be called once from the CLI callback before any command
35    runs.
36
37    Args:
38        verbose: If True, enable loguru debug output on stderr.
39    """
40    global _verbose
41    _verbose = verbose
42
43    # Remove all default loguru handlers (the default one logs to stderr at DEBUG)
44    logger.remove()
45
46    if verbose:
47        logger.add(sys.stderr, level="DEBUG")

Configure console output and logging verbosity.

Removes loguru's default stderr handler so that loguru output is suppressed by default. When verbose is True, a handler is re-added at DEBUG level.

This should be called once from the CLI callback before any command runs.

Arguments:
  • verbose: If True, enable loguru debug output on stderr.
def is_verbose() -> bool:
50def is_verbose() -> bool:
51    """Return whether verbose mode is currently enabled."""
52    return _verbose

Return whether verbose mode is currently enabled.

def info(message: str) -> None:
55def info(message: str) -> None:
56    """Print an informational message to stdout.
57
58    Args:
59        message: The message to display.
60    """
61    typer.echo(message)

Print an informational message to stdout.

Arguments:
  • message: The message to display.
def success(message: str) -> None:
64def success(message: str) -> None:
65    """Print a success message to stdout.
66
67    Args:
68        message: The message to display.
69    """
70    typer.echo(message)

Print a success message to stdout.

Arguments:
  • message: The message to display.
def warning(message: str) -> None:
73def warning(message: str) -> None:
74    """Print a warning message to stderr.
75
76    Args:
77        message: The message to display.
78    """
79    typer.secho(message, fg=typer.colors.YELLOW, err=True)

Print a warning message to stderr.

Arguments:
  • message: The message to display.
def error(message: str) -> None:
82def error(message: str) -> None:
83    """Print an error message to stderr.
84
85    Args:
86        message: The message to display.
87    """
88    typer.secho(message, fg=typer.colors.RED, err=True)

Print an error message to stderr.

Arguments:
  • message: The message to display.