ba-thesis/app/core/utils.py

28 lines
934 B
Python
Raw Normal View History

2023-08-17 17:19:46 +01:00
"""Miscellaneous utility functions."""
import re
def parse_string_as_bool(value: str) -> bool:
"""Parses the given string into a boolean based on its content.
This is used to parse environment variables as boolean values.
The following strings are parsed as `True`: "yes", "Yes", "YES", "true", "True", "TRUE", "1"
The following strings are parsed as `False`: "no", "No", "NO", "false", "False", "FALSE", "0"
In any other case, a `ValueError` is raised.
"""
if not isinstance(value, str):
raise TypeError("Expected a string argument.")
regex_true = re.compile(r"^(YES)|(Yes)|(yes)|(TRUE)|(True)|(true)|(1)$")
regex_false = re.compile(r"^(NO)|(No)|(no)|(FALSE)|(False)|(false)|(0)$")
if regex_true.fullmatch(value):
return True
if regex_false.fullmatch(value):
return False
raise ValueError(f"Failed to parse the supplied value as a boolean: {value!r}")