From 1a94ec266483cf3212e362cb20ffb989e254ecf3 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Wed, 24 Oct 2007 21:40:38 +0000 Subject: Bug #1287: make os.environ.pop() work as expected. --- Doc/library/os.rst | 5 +++-- Lib/os.py | 6 ++++++ Misc/NEWS | 5 ++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Doc/library/os.rst b/Doc/library/os.rst index bc4cf42..0e46741 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -118,10 +118,11 @@ process and user. If the platform supports the :func:`unsetenv` function, you can delete items in this mapping to unset environment variables. :func:`unsetenv` will be called automatically when an item is deleted from ``os.environ``, and when - :meth:`os.environ.clear` is called. + one of the :meth:`pop` or :meth:`clear` methods is called. .. versionchanged:: 2.6 - Also unset environment variables when calling :meth:`os.environ.clear`. + Also unset environment variables when calling :meth:`os.environ.clear` + and :meth:`os.environ.pop`. .. function:: chdir(path) diff --git a/Lib/os.py b/Lib/os.py index 7d21763..ccc11f4 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -450,6 +450,9 @@ else: for key in self.data.keys(): unsetenv(key) del self.data[key] + def pop(self, key, *args): + unsetenv(key) + return self.data.pop(key, *args) def has_key(self, key): return key.upper() in self.data def __contains__(self, key): @@ -511,6 +514,9 @@ else: for key in self.data.keys(): unsetenv(key) del self.data[key] + def pop(self, key, *args): + unsetenv(key) + return self.data.pop(key, *args) def copy(self): return dict(self) diff --git a/Misc/NEWS b/Misc/NEWS index 683bef0..be6b6ff 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -274,11 +274,14 @@ Core and builtins Library ------- +- Issues #1181, #1287: unsetenv() is now called when the os.environ.pop() + and os.environ.clear() methods are used. + - ctypes will now work correctly on 32-bit systems when Python is configured with --with-system-ffi. - Patch #1203: ctypes now does work on OS X when Python is built with - --disable-toolbox-glue + --disable-toolbox-glue. - collections.deque() now supports a "maxlen" argument. -- cgit v0.12