Skip to content

Commit 985f6e4

Browse files
committed
tests
1 parent 9a1e768 commit 985f6e4

File tree

12 files changed

+295
-236
lines changed

12 files changed

+295
-236
lines changed

.cspell.dict/cpython.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ cafile
1414
cellarg
1515
cellvar
1616
cellvars
17+
CLASSDEREF
1718
cmpop
1819
denom
1920
DICTFLAG

Lib/_opcode_metadata.py

Lines changed: 39 additions & 218 deletions
Original file line numberDiff line numberDiff line change
@@ -1,198 +1,16 @@
1-
# This file is generated by Tools/cases_generator/py_metadata_generator.py
2-
# from:
3-
# Python/bytecodes.c
1+
# This file is generated by scripts/generate_opcode_metadata.py
2+
# for RustPython bytecode format (CPython 3.13 compatible opcode numbers).
43
# Do not edit!
5-
_specializations = {
6-
"RESUME": [
7-
"RESUME_CHECK",
8-
],
9-
"TO_BOOL": [
10-
"TO_BOOL_ALWAYS_TRUE",
11-
"TO_BOOL_BOOL",
12-
"TO_BOOL_INT",
13-
"TO_BOOL_LIST",
14-
"TO_BOOL_NONE",
15-
"TO_BOOL_STR",
16-
],
17-
"BINARY_OP": [
18-
"BINARY_OP_MULTIPLY_INT",
19-
"BINARY_OP_ADD_INT",
20-
"BINARY_OP_SUBTRACT_INT",
21-
"BINARY_OP_MULTIPLY_FLOAT",
22-
"BINARY_OP_ADD_FLOAT",
23-
"BINARY_OP_SUBTRACT_FLOAT",
24-
"BINARY_OP_ADD_UNICODE",
25-
"BINARY_OP_INPLACE_ADD_UNICODE",
26-
],
27-
"BINARY_SUBSCR": [
28-
"BINARY_SUBSCR_DICT",
29-
"BINARY_SUBSCR_GETITEM",
30-
"BINARY_SUBSCR_LIST_INT",
31-
"BINARY_SUBSCR_STR_INT",
32-
"BINARY_SUBSCR_TUPLE_INT",
33-
],
34-
"STORE_SUBSCR": [
35-
"STORE_SUBSCR_DICT",
36-
"STORE_SUBSCR_LIST_INT",
37-
],
38-
"SEND": [
39-
"SEND_GEN",
40-
],
41-
"UNPACK_SEQUENCE": [
42-
"UNPACK_SEQUENCE_TWO_TUPLE",
43-
"UNPACK_SEQUENCE_TUPLE",
44-
"UNPACK_SEQUENCE_LIST",
45-
],
46-
"STORE_ATTR": [
47-
"STORE_ATTR_INSTANCE_VALUE",
48-
"STORE_ATTR_SLOT",
49-
"STORE_ATTR_WITH_HINT",
50-
],
51-
"LOAD_GLOBAL": [
52-
"LOAD_GLOBAL_MODULE",
53-
"LOAD_GLOBAL_BUILTIN",
54-
],
55-
"LOAD_SUPER_ATTR": [
56-
"LOAD_SUPER_ATTR_ATTR",
57-
"LOAD_SUPER_ATTR_METHOD",
58-
],
59-
"LOAD_ATTR": [
60-
"LOAD_ATTR_INSTANCE_VALUE",
61-
"LOAD_ATTR_MODULE",
62-
"LOAD_ATTR_WITH_HINT",
63-
"LOAD_ATTR_SLOT",
64-
"LOAD_ATTR_CLASS",
65-
"LOAD_ATTR_PROPERTY",
66-
"LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN",
67-
"LOAD_ATTR_METHOD_WITH_VALUES",
68-
"LOAD_ATTR_METHOD_NO_DICT",
69-
"LOAD_ATTR_METHOD_LAZY_DICT",
70-
"LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES",
71-
"LOAD_ATTR_NONDESCRIPTOR_NO_DICT",
72-
],
73-
"COMPARE_OP": [
74-
"COMPARE_OP_FLOAT",
75-
"COMPARE_OP_INT",
76-
"COMPARE_OP_STR",
77-
],
78-
"CONTAINS_OP": [
79-
"CONTAINS_OP_SET",
80-
"CONTAINS_OP_DICT",
81-
],
82-
"FOR_ITER": [
83-
"FOR_ITER_LIST",
84-
"FOR_ITER_TUPLE",
85-
"FOR_ITER_RANGE",
86-
"FOR_ITER_GEN",
87-
],
88-
"CALL": [
89-
"CALL_BOUND_METHOD_EXACT_ARGS",
90-
"CALL_PY_EXACT_ARGS",
91-
"CALL_TYPE_1",
92-
"CALL_STR_1",
93-
"CALL_TUPLE_1",
94-
"CALL_BUILTIN_CLASS",
95-
"CALL_BUILTIN_O",
96-
"CALL_BUILTIN_FAST",
97-
"CALL_BUILTIN_FAST_WITH_KEYWORDS",
98-
"CALL_LEN",
99-
"CALL_ISINSTANCE",
100-
"CALL_LIST_APPEND",
101-
"CALL_METHOD_DESCRIPTOR_O",
102-
"CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS",
103-
"CALL_METHOD_DESCRIPTOR_NOARGS",
104-
"CALL_METHOD_DESCRIPTOR_FAST",
105-
"CALL_ALLOC_AND_ENTER_INIT",
106-
"CALL_PY_GENERAL",
107-
"CALL_BOUND_METHOD_GENERAL",
108-
"CALL_NON_PY_GENERAL",
109-
],
110-
}
1114

112-
_specialized_opmap = {
113-
'BINARY_OP_ADD_FLOAT': 150,
114-
'BINARY_OP_ADD_INT': 151,
115-
'BINARY_OP_ADD_UNICODE': 152,
116-
'BINARY_OP_INPLACE_ADD_UNICODE': 3,
117-
'BINARY_OP_MULTIPLY_FLOAT': 153,
118-
'BINARY_OP_MULTIPLY_INT': 154,
119-
'BINARY_OP_SUBTRACT_FLOAT': 155,
120-
'BINARY_OP_SUBTRACT_INT': 156,
121-
'BINARY_SUBSCR_DICT': 157,
122-
'BINARY_SUBSCR_GETITEM': 158,
123-
'BINARY_SUBSCR_LIST_INT': 159,
124-
'BINARY_SUBSCR_STR_INT': 160,
125-
'BINARY_SUBSCR_TUPLE_INT': 161,
126-
'CALL_ALLOC_AND_ENTER_INIT': 162,
127-
'CALL_BOUND_METHOD_EXACT_ARGS': 163,
128-
'CALL_BOUND_METHOD_GENERAL': 164,
129-
'CALL_BUILTIN_CLASS': 165,
130-
'CALL_BUILTIN_FAST': 166,
131-
'CALL_BUILTIN_FAST_WITH_KEYWORDS': 167,
132-
'CALL_BUILTIN_O': 168,
133-
'CALL_ISINSTANCE': 169,
134-
'CALL_LEN': 170,
135-
'CALL_LIST_APPEND': 171,
136-
'CALL_METHOD_DESCRIPTOR_FAST': 172,
137-
'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 173,
138-
'CALL_METHOD_DESCRIPTOR_NOARGS': 174,
139-
'CALL_METHOD_DESCRIPTOR_O': 175,
140-
'CALL_NON_PY_GENERAL': 176,
141-
'CALL_PY_EXACT_ARGS': 177,
142-
'CALL_PY_GENERAL': 178,
143-
'CALL_STR_1': 179,
144-
'CALL_TUPLE_1': 180,
145-
'CALL_TYPE_1': 181,
146-
'COMPARE_OP_FLOAT': 182,
147-
'COMPARE_OP_INT': 183,
148-
'COMPARE_OP_STR': 184,
149-
'CONTAINS_OP_DICT': 185,
150-
'CONTAINS_OP_SET': 186,
151-
'FOR_ITER_GEN': 187,
152-
'FOR_ITER_LIST': 188,
153-
'FOR_ITER_RANGE': 189,
154-
'FOR_ITER_TUPLE': 190,
155-
'LOAD_ATTR_CLASS': 191,
156-
'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 192,
157-
'LOAD_ATTR_INSTANCE_VALUE': 193,
158-
'LOAD_ATTR_METHOD_LAZY_DICT': 194,
159-
'LOAD_ATTR_METHOD_NO_DICT': 195,
160-
'LOAD_ATTR_METHOD_WITH_VALUES': 196,
161-
'LOAD_ATTR_MODULE': 197,
162-
'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 198,
163-
'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 199,
164-
'LOAD_ATTR_PROPERTY': 200,
165-
'LOAD_ATTR_SLOT': 201,
166-
'LOAD_ATTR_WITH_HINT': 202,
167-
'LOAD_GLOBAL_BUILTIN': 203,
168-
'LOAD_GLOBAL_MODULE': 204,
169-
'LOAD_SUPER_ATTR_ATTR': 205,
170-
'LOAD_SUPER_ATTR_METHOD': 206,
171-
'RESUME_CHECK': 207,
172-
'SEND_GEN': 208,
173-
'STORE_ATTR_INSTANCE_VALUE': 209,
174-
'STORE_ATTR_SLOT': 210,
175-
'STORE_ATTR_WITH_HINT': 211,
176-
'STORE_SUBSCR_DICT': 212,
177-
'STORE_SUBSCR_LIST_INT': 213,
178-
'TO_BOOL_ALWAYS_TRUE': 214,
179-
'TO_BOOL_BOOL': 215,
180-
'TO_BOOL_INT': 216,
181-
'TO_BOOL_LIST': 217,
182-
'TO_BOOL_NONE': 218,
183-
'TO_BOOL_STR': 219,
184-
'UNPACK_SEQUENCE_LIST': 220,
185-
'UNPACK_SEQUENCE_TUPLE': 221,
186-
'UNPACK_SEQUENCE_TWO_TUPLE': 222,
187-
}
5+
_specializations = {}
6+
7+
_specialized_opmap = {}
1888

1899
opmap = {
19010
'CACHE': 0,
191-
'RESERVED': 17,
192-
'RESUME': 149,
193-
'INSTRUMENTED_LINE': 254,
19411
'BEFORE_ASYNC_WITH': 1,
19512
'BEFORE_WITH': 2,
13+
'RESERVED_3': 3,
19614
'BINARY_SLICE': 4,
19715
'BINARY_SUBSCR': 5,
19816
'CHECK_EG_MATCH': 6,
@@ -206,6 +24,7 @@
20624
'FORMAT_SIMPLE': 14,
20725
'FORMAT_WITH_SPEC': 15,
20826
'GET_AITER': 16,
27+
'RESERVED_17': 17,
20928
'GET_ANEXT': 18,
21029
'GET_ITER': 19,
21130
'GET_LEN': 20,
@@ -307,37 +126,39 @@
307126
'UNPACK_EX': 116,
308127
'UNPACK_SEQUENCE': 117,
309128
'YIELD_VALUE': 118,
310-
'INSTRUMENTED_RESUME': 236,
311-
'INSTRUMENTED_END_FOR': 237,
312-
'INSTRUMENTED_END_SEND': 238,
313-
'INSTRUMENTED_RETURN_VALUE': 239,
314-
'INSTRUMENTED_RETURN_CONST': 240,
315-
'INSTRUMENTED_YIELD_VALUE': 241,
316-
'INSTRUMENTED_LOAD_SUPER_ATTR': 242,
317-
'INSTRUMENTED_FOR_ITER': 243,
318-
'INSTRUMENTED_CALL': 244,
319-
'INSTRUMENTED_CALL_KW': 245,
320-
'INSTRUMENTED_CALL_FUNCTION_EX': 246,
321-
'INSTRUMENTED_INSTRUCTION': 247,
322-
'INSTRUMENTED_JUMP_FORWARD': 248,
323-
'INSTRUMENTED_JUMP_BACKWARD': 249,
324-
'INSTRUMENTED_POP_JUMP_IF_TRUE': 250,
325-
'INSTRUMENTED_POP_JUMP_IF_FALSE': 251,
326-
'INSTRUMENTED_POP_JUMP_IF_NONE': 252,
327-
'INSTRUMENTED_POP_JUMP_IF_NOT_NONE': 253,
328-
'JUMP': 256,
329-
'JUMP_NO_INTERRUPT': 257,
330-
'LOAD_CLOSURE': 258,
331-
'LOAD_METHOD': 259,
332-
'LOAD_SUPER_METHOD': 260,
333-
'LOAD_ZERO_SUPER_ATTR': 261,
334-
'LOAD_ZERO_SUPER_METHOD': 262,
335-
'POP_BLOCK': 263,
336-
'SETUP_CLEANUP': 264,
337-
'SETUP_FINALLY': 265,
338-
'SETUP_WITH': 266,
339-
'STORE_FAST_MAYBE_NULL': 267,
129+
'BREAK': 119,
130+
'BUILD_LIST_UNPACK': 120,
131+
'BUILD_MAP_FOR_CALL': 121,
132+
'BUILD_SET_UNPACK': 122,
133+
'BUILD_TUPLE_ITER': 123,
134+
'BUILD_TUPLE_UNPACK': 124,
135+
'CALL_METHOD': 125,
136+
'CALL_METHOD_KW': 126,
137+
'CALL_METHOD_EX': 127,
138+
'CONTINUE': 128,
139+
'END_FINALLY': 129,
140+
'ENTER_FINALLY': 130,
141+
'JUMP': 131,
142+
'JUMP_IF_FALSE_OR_POP': 132,
143+
'JUMP_IF_TRUE_OR_POP': 133,
144+
'JUMP_IF_NOT_EXC_MATCH': 134,
145+
'LOAD_CLASSDEREF': 135,
146+
'LOAD_CLOSURE': 136,
147+
'LOAD_METHOD': 137,
148+
'POP_BLOCK': 138,
149+
'REVERSE': 139,
150+
'SET_EXC_INFO': 140,
151+
'SETUP_EXCEPT': 141,
152+
'SETUP_FINALLY': 142,
153+
'SETUP_LOOP': 143,
154+
'SUBSCRIPT': 144,
155+
'UNARY_OP': 145,
156+
'YIELD_FROM': 146,
157+
'RESERVED_147': 147,
158+
'RESERVED_148': 148,
159+
'RESUME': 149,
340160
}
341161

162+
# CPython 3.13 compatible: opcodes < 44 have no argument
342163
HAVE_ARGUMENT = 44
343164
MIN_INSTRUMENTED_OPCODE = 236

Lib/test/test__opcode.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def test_invalid_opcodes(self):
2727
self.check_bool_function_result(_opcode.has_local, invalid, False)
2828
self.check_bool_function_result(_opcode.has_exc, invalid, False)
2929

30+
@unittest.expectedFailure # TODO: RUSTPYTHON - no instrumented opcodes
3031
def test_is_valid(self):
3132
names = [
3233
'CACHE',
@@ -56,7 +57,6 @@ def check_function(self, func, expected):
5657

5758

5859
class StackEffectTests(unittest.TestCase):
59-
@unittest.expectedFailure # TODO: RUSTPYTHON
6060
def test_stack_effect(self):
6161
self.assertEqual(stack_effect(dis.opmap['POP_TOP']), -1)
6262
self.assertEqual(stack_effect(dis.opmap['BUILD_SLICE'], 0), -1)
@@ -111,6 +111,7 @@ def test_stack_effect_jump(self):
111111

112112

113113
class SpecializationStatsTests(unittest.TestCase):
114+
@unittest.expectedFailure # TODO: RUSTPYTHON - no specialization stats
114115
def test_specialization_stats(self):
115116
stat_names = ["success", "failure", "hit", "deferred", "miss", "deopt"]
116117
specialized_opcodes = [

Lib/test/test_asyncgen.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,8 +1026,6 @@ async def run():
10261026
fut.cancel()
10271027
self.loop.run_until_complete(asyncio.sleep(0.01))
10281028

1029-
# TODO: RUSTPYTHON
1030-
@unittest.expectedFailure
10311029
def test_async_gen_asyncio_gc_aclose_09(self):
10321030
DONE = 0
10331031

@@ -1514,8 +1512,6 @@ async def main():
15141512
self.assertIn('an error occurred during closing of asynchronous generator',
15151513
message['message'])
15161514

1517-
# TODO: RUSTPYTHON, ValueError: not enough values to unpack (expected 1, got 0)
1518-
@unittest.expectedFailure
15191515
def test_async_gen_asyncio_shutdown_exception_02(self):
15201516
messages = []
15211517

Lib/test/test_compile.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,8 +1039,6 @@ def test_big_dict_literal(self):
10391039
the_dict = "{" + ",".join(f"{x}:{x}" for x in range(dict_size)) + "}"
10401040
self.assertEqual(len(eval(the_dict)), dict_size)
10411041

1042-
# TODO: RUSTPYTHON
1043-
@unittest.expectedFailure
10441042
def test_redundant_jump_in_if_else_break(self):
10451043
# Check if bytecode containing jumps that simply point to the next line
10461044
# is generated around if-else-break style structures. See bpo-42615.

Lib/test/test_contextlib.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,6 +1160,10 @@ class TestExitStack(TestBaseExitStack, unittest.TestCase):
11601160
('__exit__', 'if cb(*exc_details):'),
11611161
]
11621162

1163+
# TODO: RUSTPYTHON; sync version works correctly
1164+
def test_exit_exception_traceback(self):
1165+
return super().test_exit_exception_traceback()
1166+
11631167

11641168
class TestRedirectStream:
11651169

0 commit comments

Comments
 (0)