(Merge 3.3) Close #17702: os.environ now raises KeyError with the original

environment variable name (str on UNIX), instead of using the encoded name
(bytes on UNIX).
This commit is contained in:
Victor Stinner 2013-04-14 16:38:35 +02:00
commit 43aa0d07e2
3 changed files with 34 additions and 4 deletions

View file

@ -644,7 +644,11 @@ class _Environ(MutableMapping):
self._data = data
def __getitem__(self, key):
value = self._data[self.encodekey(key)]
try:
value = self._data[self.encodekey(key)]
except KeyError:
# raise KeyError with the original key value
raise KeyError(key)
return self.decodevalue(value)
def __setitem__(self, key, value):
@ -654,9 +658,13 @@ class _Environ(MutableMapping):
self._data[key] = value
def __delitem__(self, key):
key = self.encodekey(key)
self.unsetenv(key)
del self._data[key]
encodedkey = self.encodekey(key)
self.unsetenv(encodedkey)
try:
del self._data[encodedkey]
except KeyError:
# raise KeyError with the original key value
raise KeyError(key)
def __iter__(self):
for key in self._data: