Skip to content

Commit f1806b1

Browse files
committed
Add override flag to ExtendMatch
Certain flags (e.g., nvcc's -gencode) have behavior that cannot currently be emulated by straightforward usage of argparse. Specifically, issues occur when: - A default value is the only entry in a list when a flag is not specified; and - The default value is removed from the list when a flag is specified. Since argparse stores the default value in the list, extending the list does not remove the default value. As a workaround for our custom actions, this commit introduces a custom "override" property that can be used alongside the "default" property. Signed-off-by: John Pennycook <john.pennycook@intel.com>
1 parent 2d96bc0 commit f1806b1

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

codebasin/config.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ def __init__(
126126
):
127127
self.pattern = kwargs.pop("pattern", None)
128128
self.format = kwargs.pop("format", None)
129+
self.override = kwargs.pop("override", False)
129130
self.flag_name = option_strings[0]
130131
super().__init__(option_strings, dest, nargs=nargs, **kwargs)
131132

@@ -146,10 +147,17 @@ def __call__(
146147
passes = getattr(namespace, self.dest)
147148
if self.flag_name not in passes:
148149
passes[self.flag_name] = []
149-
passes[self.flag_name].extend(matches)
150+
if self.override:
151+
passes[self.flag_name] = matches
152+
self.override = False
153+
else:
154+
passes[self.flag_name].extend(matches)
150155
else:
151-
dest = getattr(namespace, self.dest)
152-
dest.extend(matches)
156+
if self.override:
157+
setattr(namespace, self.dest, matches)
158+
else:
159+
dest = getattr(namespace, self.dest)
160+
dest.extend(matches)
153161

154162

155163
@dataclass

0 commit comments

Comments
 (0)