Bug #1287: make os.environ.pop() work as expected.

This commit is contained in:
Georg Brandl 2007-10-24 21:40:38 +00:00
parent 9afb9850f2
commit 1a94ec2664
3 changed files with 13 additions and 3 deletions

View file

@ -118,10 +118,11 @@ process and user.
If the platform supports the :func:`unsetenv` function, you can delete items in If the platform supports the :func:`unsetenv` function, you can delete items in
this mapping to unset environment variables. :func:`unsetenv` will be called this mapping to unset environment variables. :func:`unsetenv` will be called
automatically when an item is deleted from ``os.environ``, and when 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 .. 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) .. function:: chdir(path)

View file

@ -450,6 +450,9 @@ else:
for key in self.data.keys(): for key in self.data.keys():
unsetenv(key) unsetenv(key)
del self.data[key] del self.data[key]
def pop(self, key, *args):
unsetenv(key)
return self.data.pop(key, *args)
def has_key(self, key): def has_key(self, key):
return key.upper() in self.data return key.upper() in self.data
def __contains__(self, key): def __contains__(self, key):
@ -511,6 +514,9 @@ else:
for key in self.data.keys(): for key in self.data.keys():
unsetenv(key) unsetenv(key)
del self.data[key] del self.data[key]
def pop(self, key, *args):
unsetenv(key)
return self.data.pop(key, *args)
def copy(self): def copy(self):
return dict(self) return dict(self)

View file

@ -274,11 +274,14 @@ Core and builtins
Library 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 - ctypes will now work correctly on 32-bit systems when Python is
configured with --with-system-ffi. configured with --with-system-ffi.
- Patch #1203: ctypes now does work on OS X when Python is built with - 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. - collections.deque() now supports a "maxlen" argument.