79 lines
1.7 KiB
Python
79 lines
1.7 KiB
Python
"""Functions to communicate to the user via console."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import List, Optional
|
|
|
|
from rich.console import Console
|
|
from rich.prompt import Prompt
|
|
from rich.status import Status
|
|
|
|
# Console for pretty printing.
|
|
_console = Console()
|
|
|
|
|
|
def deprecate(msg: str) -> None:
|
|
"""Print a deprecation warning.
|
|
|
|
Args:
|
|
msg: The deprecation message.
|
|
"""
|
|
_console.print(f"[yellow]DeprecationWarning: {msg}[/yellow]")
|
|
|
|
|
|
def log(msg: str) -> None:
|
|
"""Takes a string and logs it to the console.
|
|
|
|
Args:
|
|
msg (str): The message to log.
|
|
"""
|
|
_console.log(msg)
|
|
|
|
|
|
def print(msg: str) -> None:
|
|
"""Prints the given message to the console.
|
|
|
|
Args:
|
|
msg (str): The message to print to the console.
|
|
"""
|
|
_console.print(msg)
|
|
|
|
|
|
def rule(title: str) -> None:
|
|
"""Prints a horizontal rule with a title.
|
|
|
|
Args:
|
|
title (str): The title of the rule.
|
|
"""
|
|
_console.rule(title)
|
|
|
|
|
|
def ask(
|
|
question: str, choices: Optional[List[str]] = None, default: Optional[str] = None
|
|
) -> str:
|
|
"""Takes a prompt question and optionally a list of choices
|
|
and returns the user input.
|
|
|
|
Args:
|
|
question (str): The question to ask the user.
|
|
choices (Optional[List[str]]): A list of choices to select from.
|
|
default(Optional[str]): The default option selected.
|
|
|
|
Returns:
|
|
A string
|
|
"""
|
|
return Prompt.ask(question, choices=choices, default=default) # type: ignore
|
|
|
|
|
|
def status(msg: str) -> Status:
|
|
"""Returns a status,
|
|
which can be used as a context manager.
|
|
|
|
Args:
|
|
msg (str): The message to be used as status title.
|
|
|
|
Returns:
|
|
The status of the console.
|
|
"""
|
|
return _console.status(msg)
|