Commit 22cc1183 authored by Raymond Hettinger's avatar Raymond Hettinger

merge

parents acf71b89 3d89057f
...@@ -269,6 +269,8 @@ class {typename}(tuple): ...@@ -269,6 +269,8 @@ class {typename}(tuple):
'Return a new OrderedDict which maps field names to their values' 'Return a new OrderedDict which maps field names to their values'
return OrderedDict(zip(self._fields, self)) return OrderedDict(zip(self._fields, self))
__dict__ = property(_asdict)
def _replace(_self, **kwds): def _replace(_self, **kwds):
'Return a new {typename} object replacing specified fields with new values' 'Return a new {typename} object replacing specified fields with new values'
result = _self._make(map(kwds.pop, {field_names!r}, _self)) result = _self._make(map(kwds.pop, {field_names!r}, _self))
......
...@@ -181,12 +181,12 @@ class TestNamedTuple(unittest.TestCase): ...@@ -181,12 +181,12 @@ class TestNamedTuple(unittest.TestCase):
self.assertRaises(TypeError, eval, 'Point(XXX=1, y=2)', locals()) # wrong keyword argument self.assertRaises(TypeError, eval, 'Point(XXX=1, y=2)', locals()) # wrong keyword argument
self.assertRaises(TypeError, eval, 'Point(x=1)', locals()) # missing keyword argument self.assertRaises(TypeError, eval, 'Point(x=1)', locals()) # missing keyword argument
self.assertEqual(repr(p), 'Point(x=11, y=22)') self.assertEqual(repr(p), 'Point(x=11, y=22)')
self.assertNotIn('__dict__', dir(p)) # verify instance has no dict
self.assertNotIn('__weakref__', dir(p)) self.assertNotIn('__weakref__', dir(p))
self.assertEqual(p, Point._make([11, 22])) # test _make classmethod self.assertEqual(p, Point._make([11, 22])) # test _make classmethod
self.assertEqual(p._fields, ('x', 'y')) # test _fields attribute self.assertEqual(p._fields, ('x', 'y')) # test _fields attribute
self.assertEqual(p._replace(x=1), (1, 22)) # test _replace method self.assertEqual(p._replace(x=1), (1, 22)) # test _replace method
self.assertEqual(p._asdict(), dict(x=11, y=22)) # test _asdict method self.assertEqual(p._asdict(), dict(x=11, y=22)) # test _asdict method
self.assertEqual(vars(p), p._asdict()) # verify that vars() works
try: try:
p._replace(x=1, error=2) p._replace(x=1, error=2)
......
...@@ -188,6 +188,8 @@ Library ...@@ -188,6 +188,8 @@ Library
pydoc, tkinter, and xml.parsers.expat. This were useless version constants pydoc, tkinter, and xml.parsers.expat. This were useless version constants
left over from the Mercurial transition left over from the Mercurial transition
- Named tuples now work correctly with vars().
- Issue #12085: Fix an attribute error in subprocess.Popen destructor if the - Issue #12085: Fix an attribute error in subprocess.Popen destructor if the
constructor has failed, e.g. because of an undeclared keyword argument. Patch constructor has failed, e.g. because of an undeclared keyword argument. Patch
written by Oleg Oshmyan. written by Oleg Oshmyan.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment