classification
Title: pprint: added support for mapping proxy
Type: enhancement Stage: resolved
Components: Library (Lib) Versions: Python 3.5
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: serhiy.storchaka Nosy List: fdrake, pitrou, python-dev, rhettinger, serhiy.storchaka
Priority: normal Keywords: patch

Created on 2015-02-23 19:21 by serhiy.storchaka, last changed 2015-03-24 17:33 by serhiy.storchaka. This issue is now closed.

Files
File name Uploaded Description Edit
pprint_mappingproxy.patch serhiy.storchaka, 2015-02-23 19:21 review
Messages (2)
msg236460 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-02-23 19:21
Mapping proxy is quite often used in building . For example types __dict__ are mapping proxy.

>>> bool.__dict__
mappingproxy({'__or__': <slot wrapper '__or__' of 'bool' objects>, '__doc__': 'bool(x) -> bool\n\nReturns True when the argument x is true, False otherwise.\nThe builtins True and False are the only two instances of the class bool.\nThe class bool is a subclass of the class int, and cannot be subclassed.', '__xor__': <slot wrapper '__xor__' of 'bool' objects>, '__and__': <slot wrapper '__and__' of 'bool' objects>, '__rxor__': <slot wrapper '__rxor__' of 'bool' objects>, '__repr__': <slot wrapper '__repr__' of 'bool' objects>, '__new__': <built-in method __new__ of type object at 0x82a1140>, '__rand__': <slot wrapper '__rand__' of 'bool' objects>, '__str__': <slot wrapper '__str__' of 'bool' objects>, '__ror__': <slot wrapper '__ror__' of 'bool' objects>})

Mapping proxy is not a subclass of dict, so pprint doesn't print it pretty. Proposed patch adds support for mapping proxies in pprint.

>>> from pprint import pprint as pp
>>> pp(bool.__dict__)
mappingproxy({'__and__': <slot wrapper '__and__' of 'bool' objects>,
              '__doc__': 'bool(x) -> bool\n'
                         '\n'
                         'Returns True when the argument x is true, False '
                         'otherwise.\n'
                         'The builtins True and False are the only two '
                         'instances of the class bool.\n'
                         'The class bool is a subclass of the class int, and '
                         'cannot be subclassed.',
              '__new__': <built-in method __new__ of type object at 0x82a1140>,
              '__or__': <slot wrapper '__or__' of 'bool' objects>,
              '__rand__': <slot wrapper '__rand__' of 'bool' objects>,
              '__repr__': <slot wrapper '__repr__' of 'bool' objects>,
              '__ror__': <slot wrapper '__ror__' of 'bool' objects>,
              '__rxor__': <slot wrapper '__rxor__' of 'bool' objects>,
              '__str__': <slot wrapper '__str__' of 'bool' objects>,
              '__xor__': <slot wrapper '__xor__' of 'bool' objects>})
msg239160 - (view) Author: Roundup Robot (python-dev) Date: 2015-03-24 17:32
New changeset 646a7e1da7f0 by Serhiy Storchaka in branch 'default':
Issue #23502: The pprint module now supports mapping proxies.
https://hg.python.org/cpython/rev/646a7e1da7f0
History
Date User Action Args
2015-03-24 17:33:09serhiy.storchakasetstatus: open -> closed
assignee: serhiy.storchaka
resolution: fixed
stage: patch review -> resolved
2015-03-24 17:32:38python-devsetnosy: + python-dev
messages: + msg239160
2015-02-23 19:21:48serhiy.storchakacreate