summaryrefslogtreecommitdiffstats
path: root/Lib/os.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2013-04-14 14:35:04 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2013-04-14 14:35:04 (GMT)
commit6d10139d70b80cf1326c2763dd13ecc169ce1931 (patch)
tree89f487d9481b0ddfde8efbeea9872daab60f1333 /Lib/os.py
parentc4e0d982f3b967973553c99722b1e4002c8b35f6 (diff)
downloadcpython-6d10139d70b80cf1326c2763dd13ecc169ce1931.zip
cpython-6d10139d70b80cf1326c2763dd13ecc169ce1931.tar.gz
cpython-6d10139d70b80cf1326c2763dd13ecc169ce1931.tar.bz2
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).
Diffstat (limited to 'Lib/os.py')
-rw-r--r--Lib/os.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/Lib/os.py b/Lib/os.py
index e4ea142..06616c6 100644
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -669,7 +669,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):
@@ -679,9 +683,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: