gh-116850: Fix argparse for namespaces with not directly writable dict (GH-124667)

It now always uses setattr() instead of setting the dict item to modify
the namespace. This allows to use a class as a namespace.
This commit is contained in:
Serhiy Storchaka 2024-09-29 11:01:10 +03:00 committed by GitHub
parent f1a2417b9e
commit 95e92ef6c7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 16 additions and 1 deletions

View file

@ -1224,7 +1224,8 @@ class _SubParsersAction(Action):
setattr(namespace, key, value)
if arg_strings:
vars(namespace).setdefault(_UNRECOGNIZED_ARGS_ATTR, [])
if not hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR):
setattr(namespace, _UNRECOGNIZED_ARGS_ATTR, [])
getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).extend(arg_strings)
class _ExtendAction(_AppendAction):