Skip to content

Commit 7379db3

Browse files
committed
Added cdp parser.
1 parent 72a0151 commit 7379db3

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

cdp/cdp_parser.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import argparse
2+
import abc
3+
4+
5+
class CDPParser(argparse.ArgumentParser):
6+
__metaclass__ = abc.ABCMeta
7+
8+
def __init__(self, parameter_cls, *args, **kwargs):
9+
# conflict_handler='resolve' lets new args override older ones
10+
super(CDPParser, self).__init__(conflict_handler='resolve',
11+
*args, **kwargs)
12+
self.load_default_args()
13+
self.parameter = parameter_cls()
14+
self.args_namespace = None
15+
16+
def get_parameter(self):
17+
""" Returns the parameter created by
18+
the command line inputs """
19+
20+
if self.args_namespace is None:
21+
self.args_namespace = self.parse_args()
22+
print self.args_namespace
23+
24+
if self.args_namespace.parameter is not None:
25+
self.parameter.load_parameter_from_py(self.args_namespace.parameter)
26+
27+
# Overwrite the values of the parameter with the user's args
28+
for arg_name, arg_value in vars(self.args_namespace).iteritems():
29+
if arg_value is not None:
30+
# Add it to the parameter
31+
setattr(self.parameter, arg_name, arg_value)
32+
33+
self.parameter.check_values()
34+
return self.parameter
35+
36+
def load_default_args(self):
37+
""" Load the default arguments for
38+
the parser. """
39+
self.add_argument(
40+
'-p', '--parameters',
41+
type=str,
42+
dest='parameter',
43+
help='Path to the user-defined parameter file',
44+
required=False)
45+
46+
def add_args_and_values(self, arg_list):
47+
""" Used for testing. Can test args input as if they
48+
were inputted from the command line. """
49+
self.args_namespace = self.parse_args(arg_list)

0 commit comments

Comments
 (0)