Skip to content

Levels

provide.foundation.logger.levels

TODO: Add module docstring.

Functions

get_fallback_level

get_fallback_level() -> str

Get the default fallback level name.

Returns:

Type Description
str

Default fallback level string (uppercase)

Source code in provide/foundation/logger/levels.py
def get_fallback_level() -> str:
    """Get the default fallback level name.

    Returns:
        Default fallback level string (uppercase)
    """
    return DEFAULT_FALLBACK_LEVEL

get_fallback_numeric

get_fallback_numeric() -> int

Get the default fallback level numeric value.

Returns:

Type Description
int

Default fallback level numeric value

Source code in provide/foundation/logger/levels.py
def get_fallback_numeric() -> int:
    """Get the default fallback level numeric value.

    Returns:
        Default fallback level numeric value
    """
    return DEFAULT_FALLBACK_NUMERIC

get_numeric_level

get_numeric_level(
    level: str, fallback: int | None = None
) -> int

Get numeric value for log level with safe fallback.

Parameters:

Name Type Description Default
level str

Log level string in any case

required
fallback int | None

Optional fallback numeric value (defaults to INFO level)

None

Returns:

Type Description
int

Numeric log level value

Examples:

>>> get_numeric_level("info")
20
>>> get_numeric_level("invalid", fallback=999)
999
>>> get_numeric_level("DEBUG")
10
Source code in provide/foundation/logger/levels.py
def get_numeric_level(level: str, fallback: int | None = None) -> int:
    """Get numeric value for log level with safe fallback.

    Args:
        level: Log level string in any case
        fallback: Optional fallback numeric value (defaults to INFO level)

    Returns:
        Numeric log level value

    Examples:
        >>> get_numeric_level("info")
        20
        >>> get_numeric_level("invalid", fallback=999)
        999
        >>> get_numeric_level("DEBUG")
        10
    """
    if fallback is None:
        fallback = DEFAULT_FALLBACK_NUMERIC

    normalized = normalize_level(level)
    # Cast to LogLevelStr for type safety - normalize_level validates valid levels
    return LEVEL_TO_NUMERIC.get(cast(LogLevelStr, normalized), fallback)

is_valid_level

is_valid_level(level: str) -> bool

Check if log level string is valid.

Parameters:

Name Type Description Default
level str

Log level string in any case

required

Returns:

Type Description
bool

True if level is valid, False otherwise

Examples:

>>> is_valid_level("info")
True
>>> is_valid_level("INVALID")
False
>>> is_valid_level("DEBUG")
True
Source code in provide/foundation/logger/levels.py
def is_valid_level(level: str) -> bool:
    """Check if log level string is valid.

    Args:
        level: Log level string in any case

    Returns:
        True if level is valid, False otherwise

    Examples:
        >>> is_valid_level("info")
        True
        >>> is_valid_level("INVALID")
        False
        >>> is_valid_level("DEBUG")
        True
    """
    normalized = normalize_level(level)
    return normalized in VALID_LEVEL_NAMES

normalize_level

normalize_level(level: str) -> str

Normalize log level string to uppercase.

Parameters:

Name Type Description Default
level str

Log level string in any case

required

Returns:

Type Description
str

Normalized uppercase level string

Examples:

>>> normalize_level("info")
"INFO"
>>> normalize_level("DEBUG")
"DEBUG"
>>> normalize_level("  warning  ")
"WARNING"
Source code in provide/foundation/logger/levels.py
def normalize_level(level: str) -> str:
    """Normalize log level string to uppercase.

    Args:
        level: Log level string in any case

    Returns:
        Normalized uppercase level string

    Examples:
        >>> normalize_level("info")
        "INFO"
        >>> normalize_level("DEBUG")
        "DEBUG"
        >>> normalize_level("  warning  ")
        "WARNING"
    """
    return level.upper().strip()