Source code for pymeasurement.util.typecheck
[docs]def typecheck(check, *args):
"""Check if the type of check is in args.
:param check: The object to check the type of.
:type check: object
:param args: The types to check against.
:type args: Iterable<type>
:raises TypeError: If the type of check is not in args.
"""
if not (any([isinstance(check, a) for a in args if a is not None]) or (None in args and check is None)):
raise TypeError(f'Check type "{type(check)}" did not match type "{args}."')
[docs]def typecheckArray(checkArray, *args, dimension = 1):
"""Check if the type of each object in checkArray is in args.
:param checkArray: The array of objects to check the type of.
:type checkArray: Iterable<object>
:param args: The types to check against.
:type args: Iterable<type>
:param dimension: The dimension of the array to check.
:type dimension: int
:raises TypeError: If the type of any object in checkArray is not in args.
"""
for check in checkArray:
if dimension == 1:
typecheck(check, args)
else:
typecheckArray(check, args, dimension = dimension - 1)