blob: 88ffd8c832dee1954a03ef23bc5cea18ffae516b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
"""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))
|