"""Input validation utilities""" from typing import Any def is_empty_string(value: str) -> bool: """Check whether as string is empty""" return (isinstance(value, str) and value.strip() == "") def is_empty_input(value: Any) -> bool: """Check whether user provided an empty value.""" return (value is None or is_empty_string(value)) def is_integer_input(value: Any) -> bool: """ Check whether user provided a value that can be parsed into an integer. """ def __is_int__(val, base): try: int(val, base=base) except ValueError: return False return True return isinstance(value, int) or ( (not is_empty_input(value)) and ( isinstance(value, str) and ( __is_int__(value, 10) or __is_int__(value, 8) or __is_int__(value, 16)))) def is_valid_representative_name(repr_name: str) -> bool: """ Check whether the given representative name is a valid according to our rules. Parameters ---------- repr_name: a string of characters. Checks For ---------- * The name MUST start with an alphabet [a-zA-Z] * The name MUST end with an alphabet [a-zA-Z] or number [0-9] * The name MUST be composed of alphabets [a-zA-Z], numbers [0-9], underscores (_) and/or hyphens (-). Returns ------- Boolean indicating whether or not the name is valid. """ pattern = re.compile(r"^[a-zA-Z]+[a-zA-Z0-9_-]*[a-zA-Z0-9]$") return bool(pattern.match(repr_name))