classification
Title: Readibility of ABCMeta._dump_registry()
Type: enhancement Stage: resolved
Components: Versions: Python 3.7, Python 3.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: inada.naoki, levkivskyi, yahya-abou-imran
Priority: normal Keywords: patch

Created on 2018-01-01 06:09 by yahya-abou-imran, last changed 2018-01-12 10:48 by inada.naoki. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 5091 merged yahya-abou-imran, 2018-01-03 18:20
PR 5163 merged python-dev, 2018-01-12 09:22
Messages (3)
msg309321 - (view) Author: Yahya Abou Imran (yahya-abou-imran) * Date: 2018-01-01 06:09
From python-ideas:
https://mail.python.org/pipermail/python-ideas/2017-December/048504.html

In python 2.7, ABCs's caches and registries are sets. But in python 3.6 they are WeakSet.
In consequence, the output of _dump_registry() is almost useless:

>>> from collections import abc
>>> abc.Iterator._dump_registry()
Class: collections.abc.Iterator
Inv.counter: 40
_abc_cache: <_weakrefset.WeakSet object at 0x7f4b58fe2668>
_abc_negative_cache: <_weakrefset.WeakSet object at 0x7f4b53283780>
_abc_negative_cache_version: 40
_abc_registry: <_weakrefset.WeakSet object at 0x7f4b58fe2630>

We could convert them into a regular set before printing:

if isinstance(value, WeakSet):
    value = set(value)

The result:

>>> abc.Iterator._dump_registry()
Class: collections.abc.Iterator
Inv.counter: 40
_abc_cache: {<class 'dict_valueiterator'>, <class 'bytearray_iterator'>, <class 'tuple_iterator'>, <class 'dict_itemiterator'>, <class 'dict_keyiterator'>, <class 'str_iterator'>, <class 'zip'>, <class 'set_iterator'>, <class 'list_reverseiterator'>, <class 'range_iterator'>, <class 'longrange_iterator'>, <class 'list_iterator'>, <class 'bytes_iterator'>}
_abc_negative_cache: set()
_abc_negative_cache_version: 40
_abc_registry: set()
msg309840 - (view) Author: Inada Naoki (inada.naoki) * (Python committer) Date: 2018-01-12 09:18
New changeset ae12f5d4c98f2095c2aadd58981453e955044697 by INADA Naoki (yahya-abou-imran) in branch 'master':
bpo-32473: Improve ABCMeta._dump_registry() readability (GH-5091)
https://github.com/python/cpython/commit/ae12f5d4c98f2095c2aadd58981453e955044697
msg309847 - (view) Author: Inada Naoki (inada.naoki) * (Python committer) Date: 2018-01-12 10:47
New changeset a91662affeb0aae2515cdc5e8f82269337105bf4 by INADA Naoki (Miss Islington (bot)) in branch '3.6':
bpo-32473: Improve ABCMeta._dump_registry() readability (GH-5091)
https://github.com/python/cpython/commit/a91662affeb0aae2515cdc5e8f82269337105bf4
History
Date User Action Args
2018-01-12 10:48:15inada.naokisetstatus: open -> closed
resolution: fixed
stage: patch review -> resolved
2018-01-12 10:47:42inada.naokisetmessages: + msg309847
2018-01-12 09:22:22python-devsetpull_requests: + pull_request5019
2018-01-12 09:18:51inada.naokisetnosy: + inada.naoki
messages: + msg309840
2018-01-05 16:56:14levkivskyisetnosy: + levkivskyi
2018-01-03 18:20:16yahya-abou-imransetkeywords: + patch
stage: patch review
pull_requests: + pull_request4963
2018-01-01 06:09:25yahya-abou-imrancreate