ytdl-sub/src/ytdl_sub/script/functions/print_functions.py
Ross Patterson 895e6ea972
[DOCS] Clarify debugging, support, reporting (#1305)
Reconcile the various debugging hints throughout the documentation and integrate into a
central debugging page. Includes clarification of the roles of ytdl-sub, yt-dlp, and
external services. Also adds cross references to the relevant bits across the docs.
2025-08-27 09:10:01 -07:00

69 lines
2.2 KiB
Python

from typing import Optional
from ytdl_sub.script.types.resolvable import AnyArgument
from ytdl_sub.script.types.resolvable import Integer
from ytdl_sub.script.types.resolvable import ReturnableArgument
from ytdl_sub.utils.logger import Logger
logger = Logger.get(name="preset")
def _log(message: AnyArgument, level: Optional[Integer]) -> None:
if not str(message):
return
if level is None:
logger.info(str(message))
return
level_value: int = level.native
if level_value < 0:
logger.debug(str(message))
elif level_value == 0:
logger.info(str(message))
elif level_value == 1:
logger.warning(str(message))
else: # > 1
logger.error(str(message))
class PrintFunctions:
@staticmethod
def print(
message: AnyArgument, passthrough: ReturnableArgument, level: Optional[Integer] = None
) -> ReturnableArgument:
"""
:description:
Log the ``message`` and return ``passthrough``. Optionally can pass level,
where < 0 is debug, 0 is info, 1 is warning, > 1 is error. (default ``0``)
"""
_log(message=message, level=level)
return passthrough
@staticmethod
def print_if_true(
message: AnyArgument, passthrough: ReturnableArgument, level: Optional[Integer] = None
) -> ReturnableArgument:
"""
:description:
Log the ``message`` if ``passthrough`` evaluates to ``true``. Return
``passthrough``. Optionally can pass level, where < 0 is debug, 0 is info, 1
is warning, > 1 is error. (default ``0``)
"""
if passthrough.value:
_log(message=message, level=level)
return passthrough
@staticmethod
def print_if_false(
message: AnyArgument, passthrough: ReturnableArgument, level: Optional[Integer] = None
) -> ReturnableArgument:
"""
:description:
Log the ``message`` if ``passthrough`` evaluates to ``false``. Return
``passthrough``. Optionally can pass level, where < 0 is debug, 0 is info, 1
is warning, > 1 is error. (default ``0``)
"""
if not passthrough.value:
_log(message=message, level=level)
return passthrough