-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathargparse_custom_action.py
More file actions
32 lines (26 loc) · 1.09 KB
/
argparse_custom_action.py
File metadata and controls
32 lines (26 loc) · 1.09 KB
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
import argparse
class CustomAction(argparse.Action):
def __init__(self, *args, **kwargs):
argparse.Action.__init__(self, *args, **kwargs)
print("initializing customAction")
for name, value in sorted(locals().items()):
if name == "self" or value is None:
continue
print("\t{} = {!r}".format(name, value))
print()
def __call__(self, parser, namespace, values, option_string=None):
print("Processing customAction for {}".format(self.dest))
print("\tparser = {}".format(id(parser)))
print("\tvalues = {!r}".format(values))
print("\toption_string = {!r}".format(option_string))
if isinstance(values, list):
values = [v.upper() for v in values]
else:
values = values.upper()
setattr(namespace, self.dest, values)
print()
parser = argparse.ArgumentParser()
parser.add_argument("-a", action=CustomAction)
parser.add_argument("-m", nargs="*", action=CustomAction)
results = parser.parse_args(["-a", "value", "-m", "multivalue", "second"])
print(results)