New submission from Shawn Brown 03sjbr...@gmail.com:
This is related to resolved issue 3976 and, to a lesser extent, issue 10017.
I've run across another instance where pprint throws an exception (but works
fine in 2.7 and earlier):
Python 3.2 (r32:88445, Mar 25 2011, 19:28:28)
[GCC 4.5.2] on linux2
Type help, copyright, credits or license for more information.
from pprint import pprint
pprint({(0,): 1, (None,): 2})
Traceback (most recent call last):
File stdin, line 1, in module
File /usr/lib/python3.2/pprint.py, line 55, in pprint
printer.pprint(object)
File /usr/lib/python3.2/pprint.py, line 132, in pprint
self._format(object, self._stream, 0, 0, {}, 0)
File /usr/lib/python3.2/pprint.py, line 155, in _format
rep = self._repr(object, context, level - 1)
File /usr/lib/python3.2/pprint.py, line 245, in _repr
self._depth, level)
File /usr/lib/python3.2/pprint.py, line 257, in format
return _safe_repr(object, context, maxlevels, level)
File /usr/lib/python3.2/pprint.py, line 299, in _safe_repr
items = sorted(object.items(), key=_safe_tuple)
File /usr/lib/python3.2/pprint.py, line 89, in __lt__
rv = self.obj.__lt__(other.obj)
TypeError: unorderable types: int() NoneType()
The above example might seem contrived but I stumbled across the issue quite
naturally. Honest!
In working with multiple lists and computing results using combinations of
these lists' values. I _could_ organize the results as a dictionary of
dictionaries of dictionaries but that would get confusing very quickly.
Instead, I'm using a single dictionary with a composite key (flat is better
than nested). So I've got code like this...
combinations = itertools.product(lst_x, lst_y, lst_z)
results = {(x,y,z): compute(x,y,z) for x,y,z in combinations}
... and it is not uncommon for one or more of the values to be None --
resulting in the above exception should anyone (including unittest) attempt to
pprint the dictionary.
--
components: Library (Lib)
messages: 162249
nosy: Shawn.Brown
priority: normal
severity: normal
status: open
title: pprint._safe_key is not always safe enough
versions: Python 3.2
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue14998
___
___
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com