Files
devx/src/devx/utils/api.py
T

52 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""Utilities for handling API response values.
Many APIs return boolean values as strings (``"true"``, ``"false"``)
rather than native JSON booleans. The Mattermost ``/api/v4/config/client``
endpoint is a notable example. These helpers handle both string and
boolean responses safely.
Usage::
from devx.utils.api import is_truthy, is_falsy
if not is_truthy(config.get("EnableOpenServer")):
raise ValueError("EnableOpenServer not enabled")
"""
from __future__ import annotations
def is_truthy(value: str | bool | None) -> bool:
"""Check if an API config value is truthy.
The API may return strings (``"true"``/``"false"``) or native
booleans. This helper handles both.
Args:
value: The value to check (string, bool, or None).
Returns:
True if the value represents a truthy boolean.
"""
if isinstance(value, bool):
return value
return str(value).lower() == "true"
def is_falsy(value: str | bool | None) -> bool:
"""Check if an API config value is falsy.
The API may return strings (``"true"``/``"false"``) or native
booleans. This helper handles both.
Args:
value: The value to check (string, bool, or None).
Returns:
True if the value represents a falsy boolean.
"""
if isinstance(value, bool):
return not value
return str(value).lower() == "false"