rename copy.Error to copy.error
diff --git a/Lib/copy.py b/Lib/copy.py
index 966bfa2..3bbf3e7 100644
--- a/Lib/copy.py
+++ b/Lib/copy.py
@@ -9,7 +9,7 @@
 	x = copy.copy(y)	# make a shallow copy of y
 	x = copy.deepcopy(y)	# make a deep copy of y
 
-For module specific errors, copy.Error is raised.
+For module specific errors, copy.error is raised.
 
 The difference between shallow and deep copying is only relevant for
 compound objects (objects that contain other objects, like lists or
@@ -52,7 +52,8 @@
 
 import types
 
-Error = 'copy.Error'
+error = 'copy.error'
+Error = error # backward compatibility
 
 def copy(x):
 	"""Shallow copy operation on arbitrary Python objects.
@@ -66,7 +67,7 @@
 		try:
 			copier = x.__copy__
 		except AttributeError:
-			raise Error, \
+			raise error, \
 			      "un(shallow)copyable object of type %s" % type(x)
 		y = copier()
 	else:
@@ -85,6 +86,7 @@
 d[types.CodeType] = _copy_atomic
 d[types.TypeType] = _copy_atomic
 d[types.XRangeType] = _copy_atomic
+d[types.ClassType] = _copy_atomic
 
 def _copy_list(x):
 	return x[:]
@@ -140,7 +142,7 @@
 		try:
 			copier = x.__deepcopy__
 		except AttributeError:
-			raise Error, \
+			raise error, \
 			      "un-deep-copyable object of type %s" % type(x)
 		y = copier(memo)
 	else:
@@ -220,7 +222,8 @@
 del types
 
 def _test():
-	l = [None, 1, 2L, 3.14, 'xyzzy', (1, 2L), [3.14, 'abc'], {'abc': 'ABC'}, (), [], {}]
+	l = [None, 1, 2L, 3.14, 'xyzzy', (1, 2L), [3.14, 'abc'],
+	     {'abc': 'ABC'}, (), [], {}]
 	l1 = copy(l)
 	print l1==l
 	l1 = map(copy, l)