lms.util.parse

 1import typing
 2
 3def required_int(raw_value: typing.Any, name: str) -> int:
 4    """ Parse and clean an int value. """
 5
 6    if (raw_value is None):
 7        raise ValueError(f"Value '{name}' is None, when it should be an int.")
 8
 9    return int(raw_value)
10
11def required_string(raw_value: typing.Any, name: str, **kwargs: typing.Any) -> str:
12    """ Parse and clean a string value. """
13
14    value = optional_string(raw_value, **kwargs)
15    if (value is None):
16        raise ValueError(f"Value '{name}' is None, when it should be a string.")
17
18    return value
19
20def optional_string(raw_value: typing.Any,
21        strip: bool = True,
22        allow_empty: bool = False,
23        **kwargs: typing.Any) -> typing.Union[str, None]:
24    """ Parse and clean an optional string value. """
25
26    if (raw_value is None):
27        return None
28
29    value = str(raw_value)
30    if (strip):
31        value = value.strip()
32
33    if ((not allow_empty) and (len(value) == 0)):
34        return None
35
36    return value
37
38def optional_float(raw_value: typing.Any, label: str = 'field',
39        **kwargs: typing.Any) -> typing.Union[float, None]:
40    """ Parse and clean an optional float value. """
41
42    if (raw_value is None):
43        return None
44
45    if (isinstance(raw_value, (int, float))):
46        return float(raw_value)
47
48    str_value = str(raw_value).strip()
49
50    try:
51        return float(str_value)
52    except ValueError as ex:
53        raise ValueError(f"Unable to parse {label} '{raw_value}' ({type(raw_value)}) as a float.") from ex
def required_int(raw_value: Any, name: str) -> int:
 4def required_int(raw_value: typing.Any, name: str) -> int:
 5    """ Parse and clean an int value. """
 6
 7    if (raw_value is None):
 8        raise ValueError(f"Value '{name}' is None, when it should be an int.")
 9
10    return int(raw_value)

Parse and clean an int value.

def required_string(raw_value: Any, name: str, **kwargs: Any) -> str:
12def required_string(raw_value: typing.Any, name: str, **kwargs: typing.Any) -> str:
13    """ Parse and clean a string value. """
14
15    value = optional_string(raw_value, **kwargs)
16    if (value is None):
17        raise ValueError(f"Value '{name}' is None, when it should be a string.")
18
19    return value

Parse and clean a string value.

def optional_string( raw_value: Any, strip: bool = True, allow_empty: bool = False, **kwargs: Any) -> Optional[str]:
21def optional_string(raw_value: typing.Any,
22        strip: bool = True,
23        allow_empty: bool = False,
24        **kwargs: typing.Any) -> typing.Union[str, None]:
25    """ Parse and clean an optional string value. """
26
27    if (raw_value is None):
28        return None
29
30    value = str(raw_value)
31    if (strip):
32        value = value.strip()
33
34    if ((not allow_empty) and (len(value) == 0)):
35        return None
36
37    return value

Parse and clean an optional string value.

def optional_float(raw_value: Any, label: str = 'field', **kwargs: Any) -> Optional[float]:
39def optional_float(raw_value: typing.Any, label: str = 'field',
40        **kwargs: typing.Any) -> typing.Union[float, None]:
41    """ Parse and clean an optional float value. """
42
43    if (raw_value is None):
44        return None
45
46    if (isinstance(raw_value, (int, float))):
47        return float(raw_value)
48
49    str_value = str(raw_value).strip()
50
51    try:
52        return float(str_value)
53    except ValueError as ex:
54        raise ValueError(f"Unable to parse {label} '{raw_value}' ({type(raw_value)}) as a float.") from ex

Parse and clean an optional float value.