Source code for rwskit.cli

from __future__ import annotations

# Python Modules
import logging

from typing import List, Union

# 3rd Party Modules

# Project Modules


[docs] class LogLevel(int): """A class for converting logging level string names to their integer counterparts.""" def __new__(cls, level: Union[str, int]): if isinstance(level, int): try: # noinspection PyUnresolvedReferences,PyProtectedMember return super().__new__(cls, level) if logging._levelToName[level] else None except KeyError: raise TypeError(f"Invalid logging level: {level}") # Otherwise we've got a string level = level.upper() try: # noinspection PyUnresolvedReferences,PyProtectedMember return super().__new__(cls, logging._nameToLevel[level]) except KeyError: raise TypeError(f"invalid logging level: {level}")
[docs] def __repr__(self): # noinspection PyUnresolvedReferences,PyProtectedMember return logging._levelToName[self]
[docs] def __str__(self): return self.__repr__()
@classmethod
[docs] def valid_levels(cls) -> List[LogLevel]: """ Returns the list of valid log levels. Returns ------- list[LogLevel] The list of valid log levels. """ return [LogLevel(name) for name in log_level_choices()] # noqa