From 3602e3ce0da4f02d2a0d2a9754094b2b9c86c111 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sun, 20 Sep 2026 06:23:16 +0200 Subject: [PATCH] lib.{App,Cmd}: Pass parent= by name to Cmd* constructors The framework instantiates command classes in two places: the top-level commands in App and the lazily materialized subcommands in Cmd.add_subcommands(). Both pass the parent parameter positionally. Change that to passing parent by keyword at both call sites. Every command class names its first __init__() parameter parent, so the keyword form binds the same slot for all of them regardless of parameter order, and it allows a command class to declare parent as keyword-only. Signed-off-by: Jan Lindemann --- src/python/jw/pkg/lib/App.py | 2 +- src/python/jw/pkg/lib/Cmd.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/python/jw/pkg/lib/App.py b/src/python/jw/pkg/lib/App.py index b35d7c8e..4b2306c7 100644 --- a/src/python/jw/pkg/lib/App.py +++ b/src/python/jw/pkg/lib/App.py @@ -220,7 +220,7 @@ class App: # export type_name_filter = name_filter, type_filter = [AbstractCmd], ) - self.__cmds = [cmd_class(self) for cmd_class in cmd_classes] + self.__cmds = [cmd_class(parent = self) for cmd_class in cmd_classes] self._build_parser() def _build_parser(self, argv: list[str] | None = None) -> None: diff --git a/src/python/jw/pkg/lib/Cmd.py b/src/python/jw/pkg/lib/Cmd.py index 7f9b87f3..0f85153a 100644 --- a/src/python/jw/pkg/lib/Cmd.py +++ b/src/python/jw/pkg/lib/Cmd.py @@ -126,7 +126,7 @@ class AbstractCmd(abc.ABC): if cmd_class in self.__child_classes: continue self.__child_classes.append(cmd_class) - cmd = cmd_class(self) + cmd = cmd_class(parent = self) self.__children.append(cmd) assert len(self.__children) == len(self.__child_classes) except Exception as e: -- 2.55.0