[issue21542] pprint doesn't work well for counters, sometimes shows them like a dict

2014-05-22 Thread Raymond Hettinger

Changes by Raymond Hettinger raymond.hettin...@gmail.com:


--
resolution:  - duplicate
status: open - closed
superseder:  - general pprint rewrite

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21542
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue21542] pprint doesn't work well for counters, sometimes shows them like a dict

2014-05-22 Thread Ram Rachum

Ram Rachum added the comment:

Maybe though this item should result in at least a test case for the future 
`pprint` redesign?

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21542
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue21542] pprint doesn't work well for counters, sometimes shows them like a dict

2014-05-22 Thread Raymond Hettinger

Raymond Hettinger added the comment:

Please add a note to the other tracker item.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21542
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue21542] pprint doesn't work well for counters, sometimes shows them like a dict

2014-05-21 Thread akira

akira added the comment:

If it fits on a line then it seems Counter's repr is used:

   pprint(Counter({i:i*i for i in range(10)}))
  Counter({9: 81, 8: 64, 7: 49, 6: 36, 5: 25, 4: 16, 3: 9, 2: 4, 1: 1, 0: 0})

Otherwise It is shown as a dict (Counter is a dict subclass) if it is too 
large (multi-line):

   pprint(Counter({i:i*i for i in range(10)}), width=20)
  {0: 0,
   1: 1,
   2: 4,
   3: 9,
   4: 16,
   5: 25,
   6: 36,
   7: 49,
   8: 64,
   9: 81}
 
the behaviour is weird but pprint doesn't promise that custom objects such 
as Counter that can't be created using Python literals will be printed in a 
reversible manner.

It seems there is a special support for some objects:

   pprint(frozenset({i for i in range(10)}))
  frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
   pprint(frozenset({i for i in range(10)}), width=20)
  frozenset({0,
 1,
 2,
 3,
 4,
 5,
 6,
 7,
 8,
 9})

Perhaps the support for Counter could be added using functools.singledispatch
and/or __prettyprint__ hook from issue #7434

--
nosy: +akira

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21542
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue21542] pprint doesn't work well for counters, sometimes shows them like a dict

2014-05-21 Thread Raymond Hettinger

Raymond Hettinger added the comment:

I think this tracker item should be subsumed by the effort to write a better 
pprint API.   That would be better than trying to hack special cases into the 
current code which doesn't allow straight-forward customizations or extensions.

I recommend this entry be closed as a known problem that is just one of many 
and needs to be solved in a much larger context.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21542
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue21542] pprint doesn't work well for counters, sometimes shows them like a dict

2014-05-20 Thread Ram Rachum

New submission from Ram Rachum:

pprint doesn't work well for counters, sometimes shows them like a dict 

Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:25:23) [MSC v.1600 64 
bit (AMD64)] on win32
Type help, copyright, credits or license for more information.
 dd={'a': 11640, 'b': 2614, 'c': 5261, 'd': 5311, 'e': 17722, 'f': 3041, 
'g': 3570, 'h': 6740, 'i':
 10729, 'j': 279, 'k': 1812, 'l': 6391, 'm': 5037, 'n': 10111, 'o': 11922, 
'p': 3863, 'q': 99, 'r': 94
61, 's': 9444, 't': 13744, 'u': 4027, 'v': 1486, 'w': 3194, 'x': 540, 'y': 
2976, 'z': 203}
 import collections
 collections.Counter(dd)
Counter({'e': 17722, 't': 13744, 'o': 11922, 'a': 11640, 'i': 10729, 'n': 
10111, 'r': 9461, 's': 9444,
 'h': 6740, 'l': 6391, 'd': 5311, 'c': 5261, 'm': 5037, 'u': 4027, 'p': 
3863, 'g': 3570, 'w': 3194, 'f
': 3041, 'y': 2976, 'b': 2614, 'k': 1812, 'v': 1486, 'x': 540, 'j': 279, 
'z': 203, 'q': 99})
 import pprint
 pprint.pprint(collections.Counter(dd))
{'a': 11640,
 'b': 2614,
 'c': 5261,
 'd': 5311,
 'e': 17722,
 'f': 3041,
 'g': 3570,
 'h': 6740,
 'i': 10729,
 'j': 279,
 'k': 1812,
 'l': 6391,
 'm': 5037,
 'n': 10111,
 'o': 11922,
 'p': 3863,
 'q': 99,
 'r': 9461,
 's': 9444,
 't': 13744,
 'u': 4027,
 'v': 1486,
 'w': 3194,
 'x': 540,
 'y': 2976,
 'z': 203}


--
components: Library (Lib)
messages: 218848
nosy: cool-RR
priority: normal
severity: normal
status: open
title: pprint doesn't work well for counters, sometimes shows them like a dict
versions: Python 3.4

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21542
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue21542] pprint doesn't work well for counters, sometimes shows them like a dict

2014-05-20 Thread Ned Deily

Changes by Ned Deily n...@acm.org:


--
nosy: +rhettinger

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21542
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com