mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-07-27 23:47:46 +00:00
55959c93ff
* fix replace function of CI tool * fix ruff errors (ignore some parts) * add ruff rule ignore comment
142 lines
5.0 KiB
Python
142 lines
5.0 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, Sequence
|
|
|
|
from loguru import logger
|
|
|
|
if TYPE_CHECKING:
|
|
from loguru import Logger
|
|
|
|
|
|
class LogColors:
|
|
"""
|
|
ANSI color codes for use in console output.
|
|
"""
|
|
|
|
RED = "\033[91m"
|
|
GREEN = "\033[92m"
|
|
YELLOW = "\033[93m"
|
|
BLUE = "\033[94m"
|
|
MAGENTA = "\033[95m"
|
|
CYAN = "\033[96m"
|
|
WHITE = "\033[97m"
|
|
GRAY = "\033[90m"
|
|
BLACK = "\033[30m"
|
|
|
|
BOLD = "\033[1m"
|
|
ITALIC = "\033[3m"
|
|
|
|
END = "\033[0m"
|
|
|
|
@classmethod
|
|
def get_all_colors(cls: type[LogColors]) -> list:
|
|
names = dir(cls)
|
|
names = [name for name in names if not name.startswith("__") and not callable(getattr(cls, name))]
|
|
return [getattr(cls, name) for name in names]
|
|
|
|
def render(self, text: str, color: str = "", style: str = "") -> str:
|
|
"""
|
|
render text by input color and style.
|
|
It's not recommend that input text is already rendered.
|
|
"""
|
|
# This method is called too frequently, which is not good.
|
|
colors = self.get_all_colors()
|
|
# Perhaps color and font should be distinguished here.
|
|
if color and color in colors:
|
|
# Changes to accommodate ruff checks.
|
|
# Original code:
|
|
# raise ValueError(f"color should be in: {colors} but now is: {color}")
|
|
# Description of the problem:
|
|
# TRY003 Avoid specifying long messages outside the exception class
|
|
# EM102 Exception must not use an f-string literal, assign to variable first
|
|
# References:
|
|
# https://docs.astral.sh/ruff/rules/raise-vanilla-args/
|
|
# https://docs.astral.sh/ruff/rules/f-string-in-exception/
|
|
error_message = f"color should be in: {colors} but now is: {color}"
|
|
raise ValueError(error_message)
|
|
if style and style in colors:
|
|
# Changes to accommodate ruff checks.
|
|
# Original code:
|
|
# raise ValueError(f"style should be in: {colors} but now is: {style}")
|
|
# Description of the problem:
|
|
# TRY003 Avoid specifying long messages outside the exception class
|
|
# EM102 Exception must not use an f-string literal, assign to variable first
|
|
# References:
|
|
# https://docs.astral.sh/ruff/rules/raise-vanilla-args/
|
|
# https://docs.astral.sh/ruff/rules/f-string-in-exception/
|
|
error_message = f"style should be in: {colors} but now is: {style}"
|
|
raise ValueError(error_message)
|
|
|
|
text = f"{color}{text}{self.END}"
|
|
|
|
return f"{style}{text}{self.END}"
|
|
|
|
|
|
class FinCoLog:
|
|
# logger.add(loguru_handler, level="INFO") # you can add use storage as a loguru handler
|
|
|
|
def __init__(self) -> None:
|
|
self.logger: Logger = logger
|
|
|
|
def info(self, *args: Sequence, plain: bool = False) -> None:
|
|
if plain:
|
|
return self.plain_info(*args)
|
|
for arg in args:
|
|
info = f"{LogColors.WHITE}{arg}{LogColors.END}"
|
|
self.logger.info(info)
|
|
return None
|
|
|
|
def __getstate__(self) -> dict:
|
|
return {}
|
|
|
|
def __setstate__(self, _: str) -> None:
|
|
self.logger = logger
|
|
|
|
def plain_info(self, *args: Sequence) -> None:
|
|
for arg in args:
|
|
# Changes to accommodate ruff checks.
|
|
# Original code:
|
|
# self.logger.info(
|
|
# f"""
|
|
# {LogColors.YELLOW}{LogColors.BOLD}
|
|
# Info:{LogColors.END}{LogColors.WHITE}{arg}{LogColors.END}
|
|
# """,
|
|
# )
|
|
# Description of the problem:
|
|
# G004 Logging statement uses f-string
|
|
# References:
|
|
# https://docs.astral.sh/ruff/rules/logging-f-string/
|
|
info = f"""
|
|
{LogColors.YELLOW}{LogColors.BOLD}
|
|
Info:{LogColors.END}{LogColors.WHITE}{arg}{LogColors.END}
|
|
"""
|
|
self.logger.info(info)
|
|
|
|
def warning(self, *args: Sequence) -> None:
|
|
for arg in args:
|
|
# Changes to accommodate ruff checks.
|
|
# Original code:
|
|
# self.logger.warning(
|
|
# f"{LogColors.BLUE}{LogColors.BOLD}Warning:{LogColors.END}{arg}",
|
|
# )
|
|
# Description of the problem:
|
|
# G004 Logging statement uses f-string
|
|
# References:
|
|
# https://docs.astral.sh/ruff/rules/logging-f-string/
|
|
info = f"{LogColors.BLUE}{LogColors.BOLD}Warning:{LogColors.END}{arg}"
|
|
self.logger.warning(info)
|
|
|
|
def error(self, *args: Sequence) -> None:
|
|
for arg in args:
|
|
# Changes to accommodate ruff checks.
|
|
# Original code:
|
|
# self.logger.error(
|
|
# f"{LogColors.RED}{LogColors.BOLD}Error:{LogColors.END}{arg}",
|
|
# )
|
|
# Description of the problem:
|
|
# G004 Logging statement uses f-string
|
|
# References:
|
|
# https://docs.astral.sh/ruff/rules/logging-f-string/
|
|
info = f"{LogColors.RED}{LogColors.BOLD}Error:{LogColors.END}{arg}"
|
|
self.logger.error(info)
|