Re: [Python-ideas] Improve ABCs _dump_registry() readability
On 31 December 2017 at 20:05, Antoine Pitrouwrote: > On Sun, 31 Dec 2017 19:31:06 +0100 > Ivan Levkivskyi > wrote: > > > On 31 December 2017 at 19:24, Yahya Abou 'Imran via Python-ideas < > > python-ideas@python.org> wrote: > > > > > > > > >I guess a PR to fix the registry output would make sense (first file a > > > bug on bugs.python.org for it). > > > > > > Ok, I will! > > > > > > > > Please don't hurry with this. I am going to rewrite ABCMeta in C soon. > > In fact most of the work is done but I am waiting for implementation of > PEP > > 560 to settle (need few more days for this). > > > > In the C version the caches/registry will be simpler and will not use > > WeakSet (instead they will be thin C wrappers around normal sets). > > Hmm... Just because you are rewriting the thing in C doesn't mean that > Yahya shouldn't submit a patch for the Python version (which I assume > will be staying around anyway). > Yes, good point! -- Ivan ___ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
Re: [Python-ideas] Improve ABCs _dump_registry() readability
On Sun, 31 Dec 2017 19:31:06 +0100 Ivan Levkivskyiwrote: > On 31 December 2017 at 19:24, Yahya Abou 'Imran via Python-ideas < > python-ideas@python.org> wrote: > > > > > >I guess a PR to fix the registry output would make sense (first file a > > bug on bugs.python.org for it). > > > > Ok, I will! > > > > > Please don't hurry with this. I am going to rewrite ABCMeta in C soon. > In fact most of the work is done but I am waiting for implementation of PEP > 560 to settle (need few more days for this). > > In the C version the caches/registry will be simpler and will not use > WeakSet (instead they will be thin C wrappers around normal sets). Hmm... Just because you are rewriting the thing in C doesn't mean that Yahya shouldn't submit a patch for the Python version (which I assume will be staying around anyway). Regards Antoine. ___ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
Re: [Python-ideas] Improve ABCs _dump_registry() readability
On 31 December 2017 at 19:24, Yahya Abou 'Imran via Python-ideas < python-ideas@python.org> wrote: > > >I guess a PR to fix the registry output would make sense (first file a > bug on bugs.python.org for it). > > Ok, I will! > > Please don't hurry with this. I am going to rewrite ABCMeta in C soon. In fact most of the work is done but I am waiting for implementation of PEP 560 to settle (need few more days for this). In the C version the caches/registry will be simpler and will not use WeakSet (instead they will be thin C wrappers around normal sets). -- Ivan ___ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
Re: [Python-ideas] Improve ABCs _dump_registry() readability
Yeah, I guess few developers have needed to use _dump_registry(), and also it's easy enough to just access e.g. Iterator._abc_registry yourself. The reason Iterator._abc_registry is empty is that no class directly registered with it -- they are all registered with e.g. Sequence. The cache includes classes registered with subclasses, but the registry itself does not. I guess a PR to fix the registry output would make sense (first file a bug on bugs.python.org for it). On Sat, Dec 30, 2017 at 11:19 PM, Yahya Abou 'Imran via Python-ideas < python-ideas@python.org> wrote: > 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: {, , > , , 'dict_keyiterator'>, , , 'set_iterator'>, , , > , , 'bytes_iterator'>} > _abc_negative_cache: set() > _abc_negative_cache_version: 40 > _abc_registry: set() > > > NB: It seems pretty weird to me that registry is empty... All the > iterators in the cache should've been in the registry instead, should'nt > they? > ___ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido van Rossum (python.org/~guido) ___ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
[Python-ideas] Improve ABCs _dump_registry() readability
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: {, , , , , , , , , , , , } _abc_negative_cache: set() _abc_negative_cache_version: 40 _abc_registry: set() NB: It seems pretty weird to me that registry is empty... All the iterators in the cache should've been in the registry instead, should'nt they? ___ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/