bpo-45235: Revert an argparse bugfix that caused a regression (GH-29… · python/cpython@587ff7f (original) (raw)

`@@ -1209,8 +1209,7 @@ def call(self, parser, namespace, values, option_string=None):

`

1209

1209

`# namespace for the relevant parts.

`

1210

1210

`subnamespace, arg_strings = parser.parse_known_args(arg_strings, None)

`

1211

1211

`for key, value in vars(subnamespace).items():

`

1212

``

`-

if not hasattr(namespace, key):

`

1213

``

`-

setattr(namespace, key, value)

`

``

1212

`+

setattr(namespace, key, value)

`

1214

1213

``

1215

1214

`if arg_strings:

`

1216

1215

`vars(namespace).setdefault(_UNRECOGNIZED_ARGS_ATTR, [])

`

`@@ -1844,6 +1843,11 @@ def parse_known_args(self, args=None, namespace=None):

`

1844

1843

`if action.default is not SUPPRESS:

`

1845

1844

`setattr(namespace, action.dest, action.default)

`

1846

1845

``

``

1846

`+

add any parser defaults that aren't present

`

``

1847

`+

for dest in self._defaults:

`

``

1848

`+

if not hasattr(namespace, dest):

`

``

1849

`+

setattr(namespace, dest, self._defaults[dest])

`

``

1850

+

1847

1851

`# parse the arguments and exit if there are any errors

`

1848

1852

`if self.exit_on_error:

`

1849

1853

`try:

`

`@@ -1854,11 +1858,6 @@ def parse_known_args(self, args=None, namespace=None):

`

1854

1858

`else:

`

1855

1859

`namespace, args = self._parse_known_args(args, namespace)

`

1856

1860

``

1857

``

`-

add any parser defaults that aren't present

`

1858

``

`-

for dest in self._defaults:

`

1859

``

`-

if not hasattr(namespace, dest):

`

1860

``

`-

setattr(namespace, dest, self._defaults[dest])

`

1861

``

-

1862

1861

`if hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR):

`

1863

1862

`args.extend(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR))

`

1864

1863

`delattr(namespace, _UNRECOGNIZED_ARGS_ATTR)

`