diff --git a/Demo/pdist/cmptree.py b/Demo/pdist/cmptree.py
index 1e9f985e..f804d31 100755
--- a/Demo/pdist/cmptree.py
+++ b/Demo/pdist/cmptree.py
@@ -1,7 +1,7 @@
 """Compare local and remote dictionaries and transfer differing files -- like rdist."""
 
 import sys
-from repr import repr
+from reprlib import repr
 import FSProxy
 import time
 import os
diff --git a/Demo/pdist/server.py b/Demo/pdist/server.py
index 7e77971..b3943ff 100755
--- a/Demo/pdist/server.py
+++ b/Demo/pdist/server.py
@@ -4,7 +4,7 @@
 import socket
 import pickle
 from fnmatch import fnmatch
-from repr import repr
+from reprlib import repr
 
 
 # Default verbosity (0 = silent, 1 = print connections, 2 = print requests too)
diff --git a/Doc/library/repr.rst b/Doc/library/reprlib.rst
similarity index 91%
rename from Doc/library/repr.rst
rename to Doc/library/reprlib.rst
index 3f7fc22..84fd6fb 100644
--- a/Doc/library/repr.rst
+++ b/Doc/library/reprlib.rst
@@ -1,13 +1,13 @@
 
-:mod:`repr` --- Alternate :func:`repr` implementation
+:mod:`reprlib` --- Alternate :func:`repr` implementation
 =====================================================
 
-.. module:: repr
+.. module:: reprlib
    :synopsis: Alternate repr() implementation with size limits.
 .. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
 
 
-The :mod:`repr` module provides a means for producing object representations
+The :mod:`reprlib` module provides a means for producing object representations
 with limits on the size of the resulting strings. This is used in the Python
 debugger and may be useful in other contexts as well.
 
@@ -62,10 +62,13 @@
    default is ``4`` for :attr:`maxdict`, ``5`` for :attr:`maxarray`, and  ``6`` for
    the others.
 
+   .. versionadded:: 2.4
+      :attr:`maxset`, :attr:`maxfrozenset`, and :attr:`set`.
+
 
 .. attribute:: Repr.maxlong
 
-   Maximum number of characters in the representation for an integer.  Digits
+   Maximum number of characters in the representation for a long integer.  Digits
    are dropped from the middle.  The default is ``40``.
 
 
@@ -129,5 +132,5 @@
                return `obj`
 
    aRepr = MyRepr()
-   print(aRepr.repr(sys.stdin))          # prints '<stdin>'
+   print aRepr.repr(sys.stdin)          # prints '<stdin>'
 
diff --git a/Doc/tutorial/stdlib2.rst b/Doc/tutorial/stdlib2.rst
index d519fc4..33bc47a 100644
--- a/Doc/tutorial/stdlib2.rst
+++ b/Doc/tutorial/stdlib2.rst
@@ -13,11 +13,11 @@
 Output Formatting
 =================
 
-The :mod:`repr` module provides a version of :func:`repr` customized for
+The :mod:`reprlib` module provides a version of :func:`repr` customized for
 abbreviated displays of large or deeply nested containers::
 
-   >>> import repr   
-   >>> repr.repr(set('supercalifragilisticexpialidocious'))
+   >>> import reprlib
+   >>> reprlib.repr(set('supercalifragilisticexpialidocious'))
    "set(['a', 'c', 'd', 'e', 'f', 'g', ...])"
 
 The :mod:`pprint` module offers more sophisticated control over printing both
diff --git a/Lib/bdb.py b/Lib/bdb.py
index b8a20ec..747e092 100644
--- a/Lib/bdb.py
+++ b/Lib/bdb.py
@@ -324,7 +324,7 @@
     #
 
     def format_stack_entry(self, frame_lineno, lprefix=': '):
-        import linecache, repr
+        import linecache, reprlib
         frame, lineno = frame_lineno
         filename = self.canonic(frame.f_code.co_filename)
         s = '%s(%r)' % (filename, lineno)
@@ -337,13 +337,13 @@
         else:
             args = None
         if args:
-            s = s + repr.repr(args)
+            s = s + reprlib.repr(args)
         else:
             s = s + '()'
         if '__return__' in frame.f_locals:
             rv = frame.f_locals['__return__']
             s = s + '->'
-            s = s + repr.repr(rv)
+            s = s + reprlib.repr(rv)
         line = linecache.getline(filename, lineno)
         if line: s = s + lprefix + line.strip()
         return s
diff --git a/Lib/copy.py b/Lib/copy.py
index 899ee4d..a334b79 100644
--- a/Lib/copy.py
+++ b/Lib/copy.py
@@ -354,17 +354,16 @@
     print(l2)
     l.append({l[1]: l, 'xyz': l[2]})
     l3 = copy(l)
-    import repr
-    print(map(repr.repr, l))
-    print(map(repr.repr, l1))
-    print(map(repr.repr, l2))
-    print(map(repr.repr, l3))
+    import reprlib
+    print(map(reprlib.repr, l))
+    print(map(reprlib.repr, l1))
+    print(map(reprlib.repr, l2))
+    print(map(reprlib.repr, l3))
     l3 = deepcopy(l)
-    import repr
-    print(map(repr.repr, l))
-    print(map(repr.repr, l1))
-    print(map(repr.repr, l2))
-    print(map(repr.repr, l3))
+    print(map(reprlib.repr, l))
+    print(map(reprlib.repr, l1))
+    print(map(reprlib.repr, l2))
+    print(map(reprlib.repr, l3))
 
 if __name__ == '__main__':
     _test()
diff --git a/Lib/idlelib/Debugger.py b/Lib/idlelib/Debugger.py
index 346763f..00aa4bb 100644
--- a/Lib/idlelib/Debugger.py
+++ b/Lib/idlelib/Debugger.py
@@ -412,8 +412,8 @@
             height = 20*len(dict) # XXX 20 == observed height of Entry widget
         self.master = master
         self.title = title
-        import repr
-        self.repr = repr.Repr()
+        import reprlib
+        self.repr = reprlib.Repr()
         self.repr.maxstring = 60
         self.repr.maxother = 60
         self.frame = frame = Frame(master)
diff --git a/Lib/idlelib/ObjectBrowser.py b/Lib/idlelib/ObjectBrowser.py
index 75bc3a6..4cb432f 100644
--- a/Lib/idlelib/ObjectBrowser.py
+++ b/Lib/idlelib/ObjectBrowser.py
@@ -11,7 +11,7 @@
 
 from idlelib.TreeWidget import TreeItem, TreeNode, ScrolledCanvas
 
-from repr import Repr
+from reprlib import Repr
 
 myrepr = Repr()
 myrepr.maxstring = 100
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 7e1edb5..bc0ec68 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -8,7 +8,7 @@
 import linecache
 import cmd
 import bdb
-from repr import Repr
+from reprlib import Repr
 import os
 import re
 import pprint
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index c60a198..f94da3f 100755
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -53,7 +53,7 @@
 #     path will be displayed.
 
 import sys, imp, os, re, inspect, builtins, pkgutil
-from repr import Repr
+from reprlib import Repr
 try:
     from collections import deque
 except ImportError:
diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py
index dbc55cd..9d0487d 100644
--- a/Lib/test/test___all__.py
+++ b/Lib/test/test___all__.py
@@ -114,7 +114,7 @@
         self.check_all("quopri")
         self.check_all("random")
         self.check_all("re")
-        self.check_all("repr")
+        self.check_all("reprlib")
         self.check_all("rfc822")
         self.check_all("rlcompleter")
         self.check_all("robotparser")
diff --git a/Lib/test/test_repr.py b/Lib/test/test_repr.py
index ac1a0a0..442c048 100644
--- a/Lib/test/test_repr.py
+++ b/Lib/test/test_repr.py
@@ -9,8 +9,8 @@
 import unittest
 
 from test.test_support import run_unittest
-from repr import repr as r # Don't shadow builtin repr
-from repr import Repr
+from reprlib import repr as r # Don't shadow builtin repr
+from reprlib import Repr
 
 
 def nestedTuple(nesting):
diff --git a/Misc/NEWS b/Misc/NEWS
index 6eb022d..7bb3b3f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -42,6 +42,8 @@
 Library
 -------
 
+- The repr module has been renamed to reprlib.
+
 - The statvfs module has been removed.
 
 - #1713041: fix pprint's handling of maximum depth.
