33 lines
882 B
Python
33 lines
882 B
Python
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
from guardrails.logger import logger
|
|
|
|
|
|
def safe_get_with_brackets(
|
|
container: Union[str, List[Any], Any], key: Any, default: Optional[Any] = None
|
|
) -> Any:
|
|
try:
|
|
value = container[key]
|
|
if value is None:
|
|
return default
|
|
return value
|
|
except Exception as e:
|
|
logger.debug(
|
|
f"""
|
|
Failed to get value for key: {key} out of container: {container}.
|
|
Reason: {e}
|
|
Fallbacking to default value...
|
|
"""
|
|
)
|
|
return default
|
|
|
|
|
|
def safe_get(
|
|
container: Union[str, List[Any], Dict[Any, Any], Tuple],
|
|
key: Any,
|
|
default: Optional[Any] = None,
|
|
) -> Any:
|
|
if isinstance(container, dict):
|
|
return container.get(key, default)
|
|
else:
|
|
return safe_get_with_brackets(container, key, default)
|