Coverage for /home/ubuntu/flatiron/python/flatiron/core/validators.py: 100%
42 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-08 21:55 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-08 21:55 +0000
1import math
2# ------------------------------------------------------------------------------
5'''
6The validators module is function library for validating config attributes.
7'''
10def is_even(number):
11 # type: (int) -> int
12 '''
13 Validates that number is even.
15 Args:
16 number (int): Number.
18 Raises:
19 ValueError: If number is not even.
21 Returns:
22 int: Input number.
23 '''
24 if number % 2 != 0:
25 msg = f'{number} is not an even number.'
26 raise ValueError(msg)
27 return number
30def is_odd(number):
31 # type: (int) -> int
32 '''
33 Validates that number is odd.
35 Args:
36 number (int): Number.
38 Raises:
39 ValueError: If number is not odd.
41 Returns:
42 int: Input number.
43 '''
44 if number % 2 == 0:
45 msg = f'{number} is not an odd number.'
46 raise ValueError(msg)
47 return number
50def is_base_two(number):
51 # type: (int) -> int
52 '''
53 Validates that number is base two.
55 Args:
56 number (int): Number.
58 Raises:
59 ValueError: If number is not base two.
61 Returns:
62 int: Input number.
63 '''
64 exp = math.log2(number)
65 if exp != int(exp):
66 msg = f'{number} is not a base two number.'
67 raise ValueError(msg)
68 return number
71def is_padding(pad_type):
72 # type: (str) -> str
73 '''
74 Validates that pad_type is a legal padding type.
76 Args:
77 pad_type (str): Padding type.
79 Raises:
80 ValueError: If padding type is not legal.
82 Returns:
83 str: Input padding type.
84 '''
85 legal = ['valid', 'same']
86 if pad_type not in legal:
87 msg = f'{pad_type} is not a legal padding type. Legal types: {legal}.'
88 raise ValueError(msg)
89 return pad_type
92def is_callback_mode(mode):
93 # type: (str) -> str
94 '''
95 Validates that mode is a legal calback mode.
97 Args:
98 mode (str): Callback mode.
100 Raises:
101 ValueError: If mode type is not legal.
103 Returns:
104 str: Input callback mode.
105 '''
106 legal = ['auto', 'min', 'max']
107 if mode not in legal:
108 msg = f'{mode} is not a legal callback mode. Legal types: {legal}.'
109 raise ValueError(msg)
110 return mode
113def is_pipeline_method(method):
114 # type: (str) -> str
115 '''
116 Validates that method is a legal pipeline method.
118 Args:
119 mode (str): Pipeline method.
121 Raises:
122 ValueError: If method is not legal.
124 Returns:
125 str: Input pipeline method.
126 '''
127 legal = [
128 'load',
129 'train_test_split',
130 'unload',
131 'build',
132 'compile',
133 'train',
134 ]
135 if method not in legal:
136 msg = f'{method} is not a legal pipeline method. Legal methods: {legal}.'
137 raise ValueError(msg)
138 return method
141def is_engine(engine):
142 # type: (str) -> str
143 '''
144 Validates that engine is a legal deep learning framework.
146 Args:
147 engine (str): Deep learning framework.
149 Raises:
150 ValueError: If engine is not legal.
152 Returns:
153 str: Input engine.
154 '''
155 legal = ['tensorflow', 'torch']
156 if engine not in legal:
157 msg = f'{engine} is not a legal deep learning framework. Legal engines: {legal}.'
158 raise ValueError(msg)
159 return engine