parselglossy.types module

parselglossy.types.type_fixers = {'List[bool]': <function <lambda>>, 'List[complex]': <function <lambda>>, 'List[float]': <function <lambda>>, 'List[int]': <function <lambda>>, 'List[str]': <function <lambda>>, 'bool': <class 'bool'>, 'complex': <class 'complex'>, 'float': <class 'float'>, 'int': <class 'int'>, 'str': <class 'str'>}

dictionary holding functions for type fixation.

Type

Dict[str, Callable[[Any], Any]]

parselglossy.types.type_matches(value: Union[str, int, float, complex, List[bool], List[str], List[int], List[float], List[complex]], expected_type: str) → Optional[bool][source]

Checks whether a value is of the expected type.

Parameters
  • value (AllowedTypes) – Value whose type needs to be checked

  • expected_type (str) –

Notes

Allowed types T are: str, int, float, complex, bool, as well as List[T].

Returns

Return type

True if value has the type expected_type, otherwise False.

Raises

ValueError – If expected_type is not among the allowed types.

Notes

Complex numbers are a tad more fastidious, as they might be read in as strings. To avoid false negatives, we have a nasty hack, for which RDR will forever burn in hell. For complex and List[complex] we will re-run type checking after type casting if and only if:

  • We expected complex and List[complex].

  • We got a str or List[str].

  • The string are in the right format for the type casting operator.