On 22/04/2022 19:50, Sean Anderson wrote: > On python 3.8.10, subparsers are not updated with defaults. I suspect > this is related to [1]. Fix this by explicitly updating subparsers with > settings. > > [1] https://github.com/python/cpython/issues/89398 > > Fixes: 3145b63513 ("patman: Update defaults in subparsers") > Signed-off-by: Sean Anderson <sean.ander...@seco.com> > --- > > tools/patman/settings.py | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-)
Also happens on Python 3.10. I can add the following to ~/.patman: [settings] ignore_bad_tags: True dry_run: True and they start taking effect only after this patch. Reviewed-by: Alper Nebi Yasak <alpernebiya...@gmail.com> Tested-by: Alper Nebi Yasak <alpernebiya...@gmail.com> > > diff --git a/tools/patman/settings.py b/tools/patman/settings.py > index 7c2b5c196c..658fe12be5 100644 > --- a/tools/patman/settings.py > +++ b/tools/patman/settings.py > @@ -246,8 +246,10 @@ def _UpdateDefaults(main_parser, config): > > # Collect the defaults from each parser > defaults = {} > + parser_defaults = [] > for parser in parsers: > pdefs = parser.parse_known_args()[0] > + parser_defaults.append(pdefs) > defaults.update(vars(pdefs)) > > # Go through the settings and collect defaults > @@ -264,8 +266,10 @@ def _UpdateDefaults(main_parser, config): > else: > print("WARNING: Unknown setting %s" % name) > > - # Set all the defaults (this propagates through all subparsers) > + # Set all the defaults (this does NOT propagate through all subparsers) Something like 'Set all the defaults and manually propagate ...' would be clearer here. > main_parser.set_defaults(**defaults) > + for parser, pdefs in zip(parsers, parser_defaults): > + parser.set_defaults(**{ k: v for k, v in defaults.items() if k in > pdefs}) I think this would look better if you extract the dict as a variable. > > def _ReadAliasFile(fname): > """Read in the U-Boot git alias file if it exists.