1717 "MappingView" , "KeysView" , "ItemsView" , "ValuesView" ,
1818 "Sequence" , "MutableSequence" ,
1919 "ByteString" ,
20+ "bytearray_iterator" , "bytes_iterator" , "dict_itemiterator" ,
21+ "dict_items" , "dict_keyiterator" , "dict_keys" ,
22+ "dict_valueiterator" , "dict_values" , "list_iterator" ,
23+ "list_reverseiterator" , "range_iterator" , "set_iterator" ,
24+ "str_iterator" , "tuple_iterator" , "zip_iterator" ,
2025 ]
2126
27+
28+ ### collection related types which are not exposed through builtin ###
29+ ## iterators ##
30+ bytes_iterator = type (iter (b'' ))
31+ bytearray_iterator = type (iter (bytearray ()))
32+ #callable_iterator = ???
33+ dict_keyiterator = type (iter ({}.keys ()))
34+ dict_valueiterator = type (iter ({}.values ()))
35+ dict_itemiterator = type (iter ({}.items ()))
36+ list_iterator = type (iter ([]))
37+ list_reverseiterator = type (iter (reversed ([])))
38+ range_iterator = type (iter (range (0 )))
39+ set_iterator = type (iter (set ()))
40+ str_iterator = type (iter ("" ))
41+ tuple_iterator = type (iter (()))
42+ zip_iterator = type (iter (zip ()))
43+ ## views ##
44+ dict_keys = type ({}.keys ())
45+ dict_values = type ({}.values ())
46+ dict_items = type ({}.items ())
47+
48+
2249### ONE-TRICK PONIES ###
2350
2451class Hashable (metaclass = ABCMeta ):
@@ -69,6 +96,19 @@ def __subclasshook__(cls, C):
6996 return True
7097 return NotImplemented
7198
99+ Iterator .register (bytes_iterator )
100+ Iterator .register (bytearray_iterator )
101+ #Iterator.register(callable_iterator)
102+ Iterator .register (dict_keyiterator )
103+ Iterator .register (dict_valueiterator )
104+ Iterator .register (dict_itemiterator )
105+ Iterator .register (list_iterator )
106+ Iterator .register (list_reverseiterator )
107+ Iterator .register (range_iterator )
108+ Iterator .register (set_iterator )
109+ Iterator .register (str_iterator )
110+ Iterator .register (tuple_iterator )
111+ Iterator .register (zip_iterator )
72112
73113class Sized (metaclass = ABCMeta ):
74114
@@ -349,7 +389,7 @@ def __iter__(self):
349389 for key in self ._mapping :
350390 yield key
351391
352- KeysView .register (type ({}. keys ()) )
392+ KeysView .register (dict_keys )
353393
354394
355395class ItemsView (MappingView , Set ):
@@ -367,7 +407,7 @@ def __iter__(self):
367407 for key in self ._mapping :
368408 yield (key , self ._mapping [key ])
369409
370- ItemsView .register (type ({}. items ()) )
410+ ItemsView .register (dict_items )
371411
372412
373413class ValuesView (MappingView ):
@@ -382,7 +422,7 @@ def __iter__(self):
382422 for key in self ._mapping :
383423 yield self ._mapping [key ]
384424
385- ValuesView .register (type ({}. values ()) )
425+ ValuesView .register (dict_values )
386426
387427
388428class MutableMapping (Mapping ):
0 commit comments