bpo-39058: Preserve attribute order in argparse Namespace reprs. (GH-17621)

This commit is contained in:
Raymond Hettinger 2020-05-17 18:53:01 -07:00 committed by GitHub
parent eefd4e0333
commit 9681953c99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 2 deletions

View File

@ -129,7 +129,7 @@ class _AttributeHolder(object):
return '%s(%s)' % (type_name, ', '.join(arg_strings))
def _get_kwargs(self):
return sorted(self.__dict__.items())
return list(self.__dict__.items())
def _get_args(self):
return []

View File

@ -4725,7 +4725,7 @@ class TestStrings(TestCase):
def test_namespace(self):
ns = argparse.Namespace(foo=42, bar='spam')
string = "Namespace(bar='spam', foo=42)"
string = "Namespace(foo=42, bar='spam')"
self.assertStringEqual(ns, string)
def test_namespace_starkwargs_notidentifier(self):

View File

@ -0,0 +1,4 @@
In the argparse module, the repr for Namespace() and other argument holders
now displayed in the order attributes were added. Formerly, it displayed in
alphabetical order even though argument order is preserved the user visible
parts of the module.