summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2011-02-02 22:17:34 (GMT)
committerRaymond Hettinger <python@rcn.com>2011-02-02 22:17:34 (GMT)
commit44d8bb08911d304022e77ca5febfff15bdc86b34 (patch)
tree029dde8ee20f1fc3d41a9a2cecea38d0a4a1bc87
parent3bae626fd2e783e9d8fa8bed62b7f66bc3b7d6b7 (diff)
downloadcpython-44d8bb08911d304022e77ca5febfff15bdc86b34.zip
cpython-44d8bb08911d304022e77ca5febfff15bdc86b34.tar.gz
cpython-44d8bb08911d304022e77ca5febfff15bdc86b34.tar.bz2
collections.Mapping is not available for setup.py. Remove the dependency the old-fashioned way (copy and paste).
-rw-r--r--Lib/configparser.py34
1 files changed, 32 insertions, 2 deletions
diff --git a/Lib/configparser.py b/Lib/configparser.py
index edd3ac3..c7ae270 100644
--- a/Lib/configparser.py
+++ b/Lib/configparser.py
@@ -88,7 +88,7 @@ ConfigParser -- responsible for parsing a list of
"""
try:
- from collections import Mapping, OrderedDict as _default_dict
+ from collections import OrderedDict as _default_dict
except ImportError:
# fallback for setup.py which hasn't yet built _collections
_default_dict = dict
@@ -515,7 +515,7 @@ class RawConfigParser:
if e:
raise e
-class _Chainmap(Mapping):
+class _Chainmap:
"""Combine multiple mappings for successive lookups.
For example, to emulate Python's normal lookup sequence:
@@ -548,6 +548,36 @@ class _Chainmap(Mapping):
s.update(*self.maps)
return len(s)
+ def get(self, key, default=None):
+ try:
+ return self[key]
+ except KeyError:
+ return default
+
+ def __contains__(self, key):
+ try:
+ self[key]
+ except KeyError:
+ return False
+ else:
+ return True
+
+ def keys(self):
+ return list(self)
+
+ def items(self):
+ return [(k, self[k]) for k in self]
+
+ def values(self):
+ return [self[k] for k in self]
+
+ def __eq__(self, other):
+ return dict(self.items()) == dict(other.items())
+
+ def __ne__(self, other):
+ return not (self == other)
+
+
class ConfigParser(RawConfigParser):
def get(self, section, option, raw=False, vars=None):