Support case insensitive treatment of os.environ keys on Windows and
DOS (as well as OS/2). I presume that making a call to putenv() with
a lowercase key will actually do the right thing. I know this is so
on Windows/DOS, and I expect it is so OS/2 -- but the old OS/2 code
didn't assume this. (I don't know if the person who provided the OS/2
patch was clueless or just didn't care about DOS and Windows.)
Also ripped out the support for pickling -- as of 1.5, this is no
longer needed to make pickling work.
diff --git a/Lib/os.py b/Lib/os.py
index 03f6ae2..28ed3cf 100644
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -226,15 +226,19 @@
else:
import UserDict
- if name in ('os2', ): # Where Env Var Names Must Be UPPERCASE
+ if name in ('os2', 'nt', 'dos'): # Where Env Var Names Must Be UPPERCASE
+ # But we store them as upper case
import string
class _Environ(UserDict.UserDict):
def __init__(self, environ):
UserDict.UserDict.__init__(self)
- self.data = environ
+ data = self.data
+ upper = string.upper
+ for k, v in environ.items():
+ data[upper(k)] = v
def __setitem__(self, key, item):
- key = string.upper(key)
putenv(key, item)
+ key = string.upper(key)
self.data[key] = item
def __getitem__(self, key):
return self.data[string.upper(key)]
@@ -244,13 +248,8 @@
def __init__(self, environ):
UserDict.UserDict.__init__(self)
self.data = environ
- def __getinitargs__(self):
- import copy
- return (copy.copy(self.data),)
def __setitem__(self, key, item):
putenv(key, item)
self.data[key] = item
- def __copy__(self):
- return _Environ(self.data.copy())
environ = _Environ(environ)