Message256910
I agree that by default calling reversed() on mapping should raise a TypeError. But for now issubclass(collections.abc.Mapping, typing.Reversible) returns False. If add default __reversed__ implementation this test will return True. We have to find other way to make Mapping true non-reversible in all meanings.
Perhaps there is a bug in typing.Reversible. It doesn't accept all types supported by reversed().
>>> class Counter(int):
... def __getitem__(s, i): return i
... def __len__(s): return s
...
>>> list(reversed(Counter(10)))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> issubclass(Counter, typing.Reversible)
False
And accepts types that don't work with reversed().
>>> class L(list):
... __reversed__ = None
...
>>> reversed(L())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
>>> issubclass(L, typing.Reversible)
True |
|
Date |
User |
Action |
Args |
2015-12-23 13:24:11 | serhiy.storchaka | set | recipients:
+ serhiy.storchaka, gvanrossum, rhettinger, terry.reedy, r.david.murray, abarnert, abarry, curioswati |
2015-12-23 13:24:11 | serhiy.storchaka | set | messageid: <1450877051.59.0.888981600006.issue25864@psf.upfronthosting.co.za> |
2015-12-23 13:24:11 | serhiy.storchaka | link | issue25864 messages |
2015-12-23 13:24:11 | serhiy.storchaka | create | |
|