Spaces:
Runtime error
Runtime error
from rich.console import Console | |
from rich.style import Style | |
from phi.utils.log import logger | |
console = Console() | |
###################################################### | |
## Styles | |
# Standard Colors: https://rich.readthedocs.io/en/stable/appendix/colors.html#appendix-colors | |
###################################################### | |
heading_style = Style( | |
color="green", | |
bold=True, | |
underline=True, | |
) | |
subheading_style = Style( | |
color="chartreuse3", | |
bold=True, | |
) | |
success_style = Style(color="chartreuse3") | |
fail_style = Style(color="red") | |
error_style = Style(color="red") | |
info_style = Style() | |
warn_style = Style(color="magenta") | |
###################################################### | |
## Print functions | |
###################################################### | |
def print_heading(msg: str) -> None: | |
console.print(msg, style=heading_style) | |
def print_subheading(msg: str) -> None: | |
console.print(msg, style=subheading_style) | |
def print_horizontal_line() -> None: | |
console.rule() | |
def print_info(msg: str) -> None: | |
console.print(msg, style=info_style) | |
def log_config_not_available_msg() -> None: | |
logger.error("phi not initialized, please run `phi init`") | |
def log_active_workspace_not_available() -> None: | |
logger.error("No active workspace. You can:") | |
logger.error("- Run `phi ws create` to create a new workspace") | |
logger.error("- OR Run `phi ws setup` from an existing directory to setup the workspace") | |
logger.error("- OR Set an existing workspace as active using `phi set [ws_name]`") | |
def print_available_workspaces(avl_ws_list) -> None: | |
avl_ws_names = [w.ws_root_path.stem for w in avl_ws_list] if avl_ws_list else [] | |
print_info("Available Workspaces:\n - {}".format("\n - ".join(avl_ws_names))) | |
def log_phi_init_failed_msg() -> None: | |
logger.error("phi initialization failed, please try again") | |
def confirm_yes_no(question, default: str = "yes") -> bool: | |
"""Ask a yes/no question via raw_input(). | |
"question" is a string that is presented to the user. | |
"default" is the presumed answer if the user just hits <Enter>. | |
It must be "yes" (the default), "no" or None (meaning | |
an answer is required of the user). | |
The "answer" return value is True for "yes" or False for "no". | |
""" | |
inp_to_result_map = {"yes": True, "y": True, "ye": True, "no": False, "n": False} | |
if default is None: | |
prompt = " [y/n]: " | |
elif default == "yes": | |
prompt = " [Y/n]: " | |
elif default == "no": | |
prompt = " [y/N]: " | |
else: | |
raise ValueError(f"Invalid default answer: {default}") | |
choice = console.input(prompt=(question + prompt)).lower() | |
if default is not None and choice == "": | |
return inp_to_result_map[default] | |
elif choice in inp_to_result_map: | |
return inp_to_result_map[choice] | |
else: | |
logger.error(f"{choice} invalid") | |
return False | |