Updated patch, which also takes care of not calling default __repr__ on functions.
diff -u -r epydoc-3.0.1+dfsg.old/epydoc/markup/pyval_repr.py epydoc-3.0.1+dfsg/epydoc/markup/pyval_repr.py
--- epydoc-3.0.1+dfsg.old/epydoc/markup/pyval_repr.py 2015-08-16 18:57:38.152484836 +0000
+++ epydoc-3.0.1+dfsg/epydoc/markup/pyval_repr.py 2015-08-17 09:31:08.384223756 +0000
@@ -207,9 +207,18 @@
self._colorize_re(pyval, state)
else:
try:
- pyval_repr = repr(pyval)
- if not isinstance(pyval_repr, (str, unicode)):
- pyval_repr = unicode(pyval_repr)
+ pyval_class = pyval.__class__
+ if hasattr(pyval, '__repr__') and \
+ pyval_class.__repr__ is not object.__repr__ and \
+ pyval_class.__repr__ is not types.FunctionType.__repr__:
+ pyval_repr = repr(pyval)
+ if not isinstance(pyval_repr, (str, unicode)):
+ pyval_repr = unicode(pyval_repr)
+ else:
+ # pyval has a default repr(), which would leak
+ # a reference to the object
+ pyval_repr = '<%s.%s object>' % (
+ pyval_class.__module__, pyval_class.__name__)
pyval_repr_ok = True
except KeyboardInterrupt:
raise
signature.asc
Description: OpenPGP digital signature

