From 50a1acb2abafbe7b99ad57ca566c1ff9bb8abf0f Mon Sep 17 00:00:00 2001 From: Alexandre Vassalotti Date: Fri, 16 May 2008 06:58:49 +0000 Subject: Changed references to the reprlib module to use its new name. --- Demo/pdist/cmptree.py | 2 +- Demo/pdist/server.py | 2 +- Doc/library/repr.rst | 136 ------------------------------------------- Doc/library/reprlib.rst | 136 +++++++++++++++++++++++++++++++++++++++++++ Doc/tutorial/stdlib2.rst | 6 +- Lib/bdb.py | 6 +- Lib/copy.py | 19 +++--- Lib/idlelib/Debugger.py | 4 +- Lib/idlelib/ObjectBrowser.py | 2 +- Lib/pdb.py | 2 +- Lib/pydoc.py | 2 +- Lib/test/test___all__.py | 2 +- Lib/test/test_repr.py | 4 +- 13 files changed, 161 insertions(+), 162 deletions(-) delete mode 100644 Doc/library/repr.rst create mode 100644 Doc/library/reprlib.rst diff --git a/Demo/pdist/cmptree.py b/Demo/pdist/cmptree.py index f6c611f..dccd3ae 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 e692eea..ea70e71 100755 --- a/Demo/pdist/server.py +++ b/Demo/pdist/server.py @@ -4,7 +4,7 @@ import sys 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/repr.rst deleted file mode 100644 index 493e2b3..0000000 --- a/Doc/library/repr.rst +++ /dev/null @@ -1,136 +0,0 @@ - -:mod:`repr` --- Alternate :func:`repr` implementation -===================================================== - -.. module:: repr - :synopsis: Alternate repr() implementation with size limits. -.. sectionauthor:: Fred L. Drake, Jr. - - -The :mod:`repr` 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. - -This module provides a class, an instance, and a function: - - -.. class:: Repr() - - Class which provides formatting services useful in implementing functions - similar to the built-in :func:`repr`; size limits for different object types - are added to avoid the generation of representations which are excessively long. - - -.. data:: aRepr - - This is an instance of :class:`Repr` which is used to provide the :func:`repr` - function described below. Changing the attributes of this object will affect - the size limits used by :func:`repr` and the Python debugger. - - -.. function:: repr(obj) - - This is the :meth:`repr` method of ``aRepr``. It returns a string similar to - that returned by the built-in function of the same name, but with limits on - most sizes. - - -.. _repr-objects: - -Repr Objects ------------- - -:class:`Repr` instances provide several members which can be used to provide -size limits for the representations of different object types, and methods -which format specific object types. - - -.. attribute:: Repr.maxlevel - - Depth limit on the creation of recursive representations. The default is ``6``. - - -.. attribute:: Repr.maxdict - Repr.maxlist - Repr.maxtuple - Repr.maxset - Repr.maxfrozenset - Repr.maxdeque - Repr.maxarray - - Limits on the number of entries represented for the named object type. The - 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 a long integer. Digits - are dropped from the middle. The default is ``40``. - - -.. attribute:: Repr.maxstring - - Limit on the number of characters in the representation of the string. Note - that the "normal" representation of the string is used as the character source: - if escape sequences are needed in the representation, these may be mangled when - the representation is shortened. The default is ``30``. - - -.. attribute:: Repr.maxother - - This limit is used to control the size of object types for which no specific - formatting method is available on the :class:`Repr` object. It is applied in a - similar manner as :attr:`maxstring`. The default is ``20``. - - -.. method:: Repr.repr(obj) - - The equivalent to the built-in :func:`repr` that uses the formatting imposed by - the instance. - - -.. method:: Repr.repr1(obj, level) - - Recursive implementation used by :meth:`repr`. This uses the type of *obj* to - determine which formatting method to call, passing it *obj* and *level*. The - type-specific methods should call :meth:`repr1` to perform recursive formatting, - with ``level - 1`` for the value of *level* in the recursive call. - - -.. method:: Repr.repr_TYPE(obj, level) - :noindex: - - Formatting methods for specific types are implemented as methods with a name - based on the type name. In the method name, **TYPE** is replaced by - ``string.join(string.split(type(obj).__name__, '_'))``. Dispatch to these - methods is handled by :meth:`repr1`. Type-specific methods which need to - recursively format a value should call ``self.repr1(subobj, level - 1)``. - - -.. _subclassing-reprs: - -Subclassing Repr Objects ------------------------- - -The use of dynamic dispatching by :meth:`Repr.repr1` allows subclasses of -:class:`Repr` to add support for additional built-in object types or to modify -the handling of types already supported. This example shows how special support -for file objects could be added:: - - import repr - import sys - - class MyRepr(repr.Repr): - def repr_file(self, obj, level): - if obj.name in ['', '', '']: - return obj.name - else: - return `obj` - - aRepr = MyRepr() - print aRepr.repr(sys.stdin) # prints '' - diff --git a/Doc/library/reprlib.rst b/Doc/library/reprlib.rst new file mode 100644 index 0000000..84fd6fb --- /dev/null +++ b/Doc/library/reprlib.rst @@ -0,0 +1,136 @@ + +:mod:`reprlib` --- Alternate :func:`repr` implementation +===================================================== + +.. module:: reprlib + :synopsis: Alternate repr() implementation with size limits. +.. sectionauthor:: Fred L. Drake, Jr. + + +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. + +This module provides a class, an instance, and a function: + + +.. class:: Repr() + + Class which provides formatting services useful in implementing functions + similar to the built-in :func:`repr`; size limits for different object types + are added to avoid the generation of representations which are excessively long. + + +.. data:: aRepr + + This is an instance of :class:`Repr` which is used to provide the :func:`repr` + function described below. Changing the attributes of this object will affect + the size limits used by :func:`repr` and the Python debugger. + + +.. function:: repr(obj) + + This is the :meth:`repr` method of ``aRepr``. It returns a string similar to + that returned by the built-in function of the same name, but with limits on + most sizes. + + +.. _repr-objects: + +Repr Objects +------------ + +:class:`Repr` instances provide several members which can be used to provide +size limits for the representations of different object types, and methods +which format specific object types. + + +.. attribute:: Repr.maxlevel + + Depth limit on the creation of recursive representations. The default is ``6``. + + +.. attribute:: Repr.maxdict + Repr.maxlist + Repr.maxtuple + Repr.maxset + Repr.maxfrozenset + Repr.maxdeque + Repr.maxarray + + Limits on the number of entries represented for the named object type. The + 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 a long integer. Digits + are dropped from the middle. The default is ``40``. + + +.. attribute:: Repr.maxstring + + Limit on the number of characters in the representation of the string. Note + that the "normal" representation of the string is used as the character source: + if escape sequences are needed in the representation, these may be mangled when + the representation is shortened. The default is ``30``. + + +.. attribute:: Repr.maxother + + This limit is used to control the size of object types for which no specific + formatting method is available on the :class:`Repr` object. It is applied in a + similar manner as :attr:`maxstring`. The default is ``20``. + + +.. method:: Repr.repr(obj) + + The equivalent to the built-in :func:`repr` that uses the formatting imposed by + the instance. + + +.. method:: Repr.repr1(obj, level) + + Recursive implementation used by :meth:`repr`. This uses the type of *obj* to + determine which formatting method to call, passing it *obj* and *level*. The + type-specific methods should call :meth:`repr1` to perform recursive formatting, + with ``level - 1`` for the value of *level* in the recursive call. + + +.. method:: Repr.repr_TYPE(obj, level) + :noindex: + + Formatting methods for specific types are implemented as methods with a name + based on the type name. In the method name, **TYPE** is replaced by + ``string.join(string.split(type(obj).__name__, '_'))``. Dispatch to these + methods is handled by :meth:`repr1`. Type-specific methods which need to + recursively format a value should call ``self.repr1(subobj, level - 1)``. + + +.. _subclassing-reprs: + +Subclassing Repr Objects +------------------------ + +The use of dynamic dispatching by :meth:`Repr.repr1` allows subclasses of +:class:`Repr` to add support for additional built-in object types or to modify +the handling of types already supported. This example shows how special support +for file objects could be added:: + + import repr + import sys + + class MyRepr(repr.Repr): + def repr_file(self, obj, level): + if obj.name in ['', '', '']: + return obj.name + else: + return `obj` + + aRepr = MyRepr() + print aRepr.repr(sys.stdin) # prints '' + diff --git a/Doc/tutorial/stdlib2.rst b/Doc/tutorial/stdlib2.rst index 9da5213..79044f9 100644 --- a/Doc/tutorial/stdlib2.rst +++ b/Doc/tutorial/stdlib2.rst @@ -13,11 +13,11 @@ programming needs. These modules rarely occur in small scripts. 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 74870e3..5e4d7b4 100644 --- a/Lib/bdb.py +++ b/Lib/bdb.py @@ -325,7 +325,7 @@ class Bdb: # 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) @@ -338,13 +338,13 @@ class Bdb: 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 55ea660..26ab366 100644 --- a/Lib/copy.py +++ b/Lib/copy.py @@ -399,17 +399,16 @@ def _test(): 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 f56460a..a56c224 100644 --- a/Lib/idlelib/Debugger.py +++ b/Lib/idlelib/Debugger.py @@ -413,8 +413,8 @@ class NamespaceViewer: 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 a2a6cee..8ff0041 100644 --- a/Lib/idlelib/ObjectBrowser.py +++ b/Lib/idlelib/ObjectBrowser.py @@ -11,7 +11,7 @@ from 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 8616202..3ed7a2f 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -8,7 +8,7 @@ import sys 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 8007ed0..987d213 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -53,7 +53,7 @@ Richard Chamberlain, for the first implementation of textdoc. # path will be displayed. import sys, imp, os, re, types, inspect, __builtin__, pkgutil -from repr import Repr +from reprlib import Repr from string import expandtabs, find, join, lower, split, strip, rfind, rstrip try: from collections import deque diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py index 63df10a..eaa9c25 100644 --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -123,7 +123,7 @@ class AllTest(unittest.TestCase): self.check_all("quopri") self.check_all("random") self.check_all("re") - self.check_all("repr") + self.check_all("reprlib") self.check_all("rexec") self.check_all("rfc822") self.check_all("rlcompleter") diff --git a/Lib/test/test_repr.py b/Lib/test/test_repr.py index 1094816..50f728c 100644 --- a/Lib/test/test_repr.py +++ b/Lib/test/test_repr.py @@ -9,8 +9,8 @@ import shutil 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): -- cgit v0.12