ho\dZddlZddlZddlZeZGddejZdS)zGbytecode_helper - support tools for testing correct bytecode generationNc,eZdZdZdZefdZefdZdS)BytecodeTestCasez1Custom assertion methods for inspecting bytecode.c|tj}tj|||S)N)file)ioStringIOdisgetvalue)selfcoss 3/usr/lib/python3.11/test/support/bytecode_helper.pyget_disassembly_as_stringz*BytecodeTestCase.get_disassembly_as_string s0 KMM zz||ctj|D]%}|j|kr|tus |j|kr|cS&||}|tur|d|}n d}||||fz}||dS)zAReturns instr if opname is found, otherwise throws AssertionErrorz not found in bytecode: z!(%s,%r) not found in bytecode: %sN)r get_instructionsopname _UNSPECIFIEDargvalrfailr xrrinstr disassemblymsgs rassertInBytecodez!BytecodeTestCase.assertInBytecodes)!,, ! !E|v%%\))U\V-C-C LLL44Q77 \ ! !5;VV[[ICC6C55C #rctj|D]r}|j|kre||}|tur|d|}||H|j|krd}||||fz}||sdS)z(Throws AssertionError if opname is foundz occurs in bytecode: z(%s,%r) occurs in bytecode: %sN)r rrrrrrrs rassertNotInBytecodez$BytecodeTestCase.assertNotInBytecodes)!,, # #E|v%%"<    5A # # # # # #rr)r"unittestr robjectrTestCaserr#rrr'shMM vxx !#!#!#!#!#x(!#!#!#!#!#r