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

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

`

1210

1210

`# namespace for the relevant parts.

`

1211

1211

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

`

1212

1212

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

`

1213

``

`-

if not hasattr(namespace, key):

`

1214

``

`-

setattr(namespace, key, value)

`

``

1213

`+

setattr(namespace, key, value)

`

1215

1214

``

1216

1215

`if arg_strings:

`

1217

1216

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

`

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

`

1845

1844

`if action.default is not SUPPRESS:

`

1846

1845

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

`

1847

1846

``

``

1847

`+

add any parser defaults that aren't present

`

``

1848

`+

for dest in self._defaults:

`

``

1849

`+

if not hasattr(namespace, dest):

`

``

1850

`+

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

`

``

1851

+

1848

1852

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

`

1849

1853

`if self.exit_on_error:

`

1850

1854

`try:

`

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

`

1855

1859

`else:

`

1856

1860

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

`

1857

1861

``

1858

``

`-

add any parser defaults that aren't present

`

1859

``

`-

for dest in self._defaults:

`

1860

``

`-

if not hasattr(namespace, dest):

`

1861

``

`-

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

`

1862

``

-

1863

1862

`if hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR):

`

1864

1863

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

`

1865

1864

`delattr(namespace, _UNRECOGNIZED_ARGS_ATTR)

`