@@ -26,37 +26,70 @@ def attr_is_not_inherited(type_, attr):
26
26
27
27
28
28
def gen_methods (header , footer , output ):
29
- objects = [
29
+ types = [
30
30
bool ,
31
31
bytearray ,
32
32
bytes ,
33
33
complex ,
34
34
dict ,
35
+ enumerate ,
36
+ filter ,
35
37
float ,
36
38
frozenset ,
37
39
int ,
38
40
list ,
41
+ map ,
39
42
memoryview ,
40
43
range ,
41
44
set ,
45
+ slice ,
42
46
str ,
47
+ super ,
43
48
tuple ,
44
49
object ,
50
+ zip ,
51
+
52
+ classmethod ,
53
+ staticmethod ,
54
+ property ,
55
+
56
+ Exception ,
57
+ BaseException ,
58
+ ]
59
+ objects = [(t .__name__ , t .__name__ ) for t in types ]
60
+ objects .extend ([
61
+ ('NoneType' , 'type(None)' ),
62
+ ])
63
+
64
+ iters = [
65
+ ('bytearray_iterator' , 'type(bytearray().__iter__())' ),
66
+ ('bytes_iterator' , 'type(bytes().__iter__())' ),
67
+ ('dict_keyiterator' , 'type(dict().__iter__())' ),
68
+ ('dict_valueiterator' , 'type(dict().values().__iter__())' ),
69
+ ('dict_itemiterator' , 'type(dict().items().__iter__())' ),
70
+ ('dict_values' , 'type(dict().values())' ),
71
+ ('dict_items' , 'type(dict().items())' ),
72
+ ('set_iterator' , 'type(set().__iter__())' ),
73
+ ('list_iterator' , 'type(list().__iter__())' ),
74
+ ('range_iterator' , 'type(range(0).__iter__())' ),
75
+ ('str_iterator' , 'type(str().__iter__())' ),
76
+ ('tuple_iterator' , 'type(tuple().__iter__())' ),
45
77
]
46
78
47
79
output .write (header .read ())
48
80
output .write ("expected_methods = {\n " )
49
81
50
- for obj in objects :
51
- output .write (f" '{ obj .__name__ } ': ({ obj .__name__ } , [\n " )
82
+ for name , typ_code in objects + iters :
83
+ typ = eval (typ_code )
84
+ output .write (f" '{ name } ': ({ typ_code } , [\n " )
52
85
output .write (
53
86
"\n " .join (
54
87
f" { attr !r} ,"
55
- for attr in dir (obj )
56
- if attr_is_not_inherited (obj , attr )
88
+ for attr in dir (typ )
89
+ if attr_is_not_inherited (typ , attr )
57
90
)
58
91
)
59
- output .write ("\n ])," + ("\n " if objects [- 1 ] == obj else "\n \n " ))
92
+ output .write ("\n ])," + ("\n " if objects [- 1 ] == typ else "\n \n " ))
60
93
61
94
output .write ("}\n \n " )
62
95
output .write (footer .read ())
0 commit comments