ArgsContainer.specified_args: Add property

ArgsContainer.specified_args is a list of arguments that were
explicitly specified, i.e. not defaults, in the order they were
specified in.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2025-07-06 07:12:52 +02:00
commit 862a5dbc95

View file

@ -11,6 +11,7 @@ class ArgsContainer: # export
__args = OrderedDict() __args = OrderedDict()
__kwargs = OrderedDict() __kwargs = OrderedDict()
__values = {} __values = {}
__specified_args = list()
def __getattr__(self, name): def __getattr__(self, name):
values = self.__values values = self.__values
@ -27,6 +28,7 @@ class ArgsContainer: # export
if not name in self.__kwargs.keys(): if not name in self.__kwargs.keys():
raise Exception(f'No argument "{name}" defined') raise Exception(f'No argument "{name}" defined')
self.__values[name] = value self.__values[name] = value
self.__specified_args.append(name)
def add_argument(self, *args, **kwargs): def add_argument(self, *args, **kwargs):
for arg in args: for arg in args:
@ -63,6 +65,10 @@ class ArgsContainer: # export
pass pass
slog(prio, f'{name}: {val}', caller=caller) slog(prio, f'{name}: {val}', caller=caller)
@property
def specified_args(self):
return self.__specified_args
def add_argument(p: argparse.ArgumentParser|ArgsContainer, name: str, *args, **kwargs): # export def add_argument(p: argparse.ArgumentParser|ArgsContainer, name: str, *args, **kwargs): # export
key = name.strip('--').replace('-', '_') key = name.strip('--').replace('-', '_')