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 @@
 """
 
 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 @@
         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 @@
         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):
