From 19e4acfa15ec17a748b26770078aad53aa72475f Mon Sep 17 00:00:00 2001 From: Ezio Melotti Date: Mon, 22 Feb 2010 15:59:01 +0000 Subject: #7310: fix the repr() of os.environ --- Lib/os.py | 10 ++++++++++ Lib/test/test_os.py | 8 ++++++++ Misc/NEWS | 2 ++ 3 files changed, 20 insertions(+) diff --git a/Lib/os.py b/Lib/os.py index a640984..1c5b5ce 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -387,22 +387,32 @@ class _Environ(MutableMapping): self.data = data = {} for key, value in environ.items(): data[keymap(key)] = str(value) + def __getitem__(self, key): return self.data[self.keymap(key)] + def __setitem__(self, key, value): value = str(value) self.putenv(key, value) self.data[self.keymap(key)] = value + def __delitem__(self, key): self.unsetenv(key) del self.data[self.keymap(key)] + def __iter__(self): for key in self.data: yield key + def __len__(self): return len(self.data) + + def __repr__(self): + return 'environ({!r})'.format(self.data) + def copy(self): return dict(self) + def setdefault(self, key, value): if key not in self: self[key] = value diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index cdbc998..1ff356c 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -400,6 +400,14 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol): for key, value in self._reference().items(): self.assertEqual(os.environ.get(key), value) + # Issue 7310 + def test___repr__(self): + """Check that the repr() of os.environ looks like environ({...}).""" + env = os.environ + self.assertTrue(isinstance(env.data, dict)) + self.assertEqual(repr(env), 'environ({!r})'.format(env.data)) + + class WalkTests(unittest.TestCase): """Tests for os.walk().""" diff --git a/Misc/NEWS b/Misc/NEWS index 021b31a..2db7bc1 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -247,6 +247,8 @@ C-API Library ------- +- Issue #7310: fix the __repr__ of os.environ to show the environment variables. + - Issue #7970: email.Generator.flatten now correctly flattens message/rfc822 messages parsed by email.Parser.HeaderParser. -- cgit v0.12