HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_dis.cpython-37.pyc
B

��g��j@s�ddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
Z
dd�Ze�jj
ZGdd�d�Zdejjjd	fZd
ZdejjjdfZd
ejjjdfZdejjeejjeejjefZdd�Zdejjd	ejjdfZdZdd�Zdejjd	ejjdejjdfZgfdd�Z de jjd	e!e jjd	e jjde jjdfZ"dZ#dZ$dZ%dZ&dZ'dZ(d Z)d!Z*d"Z+d#Z,d$Z-d%ejd	ejdejdejd&ejd'fZ.d(d)�Z/d*e/jjd	fZ0d+d,�Z1d-d.�Z2d/d0�Z3d1d2�Z4d3e4jjd	e!e4jjd	e4jjd&fZ5d4e5e!e4jjd	e4jjde!e4jjdfZ6d5e6e!e4jjde4jjdfZ7Gd6d7�d7ej8�Z9Gd8d9�d9e9�Z:d:ej;j<dk�r�d;nd<Z=e>�d"gd>�d?d@��Z?dAZ@e?jAjjBd	ZCdBZDdCZEdDZFdEZGdFdG�ZHdHZIGdIdJ�dJej8�ZJ�d#dKdL�ZKdMdN�ZLd	ZMeKjjd	ZNeKjjBdZOeOjeNZPeOjBdZQeQjeNZRd	ZSejTZTeTdOdPdQdRdSdddTdU�eTdVdWddXdXdddTdU�eTdVdWd	dYdYd&ddTdU�eTdZd[ddd\d]ddTdU�eTdOdPdeOeUeO�dQddTdU�eTdOdPd&d^d_d`ddTdU�eTdadbdcdcd\ddddTdU�eTdedfddgdgdhddTdU�eTdidjddkdkdldmdTdU�eTdndoddXdXdpddTdU�eTdndod	dYdYdqddTdU�eTdOdPd'd\drdsddTdU�eTdOdPd]d	dtduddTdU�eTdvdwddd\dxddTdU�eTdydzddd\d{ddTdU�eTdOdPdmd|d}d~ddTdU�eTdd�dmdmd\d�ddTdU�eTd�d	ddd\d�ddTdU�eTd�d�ddgdgd�dQdTdU�eTd�d�ddd\d�ddTdU�gZVeTdOdPd'd�d�dddTdU�eTdVdWddXdXdddTdU�eTdVdWddYdYd&ddTdU�eTdVdWdd�d�d]ddTdU�eTdVdWd	d�d�dQddTdU�eTdZd[d&d&d\d`ddTdU�eTdOdPdeQeUeQ�ddddTdU�eTdOdPd&d�d�dhddTdU�eTdadbdcdcd\dlddTdU�eTdedfdd�d�dpddTdU�eTdidjddkdkdqd'dTdU�eTdndoddXdXdsddTdU�eTdndoddYdYduddTdU�eTdndodd�d�dxddTdU�eTdndod	d�d�d{ddTdU�eTdd�d&d&d\d~ddTdU�eTd�d	ddd\d�ddTdU�eTd�d�dd�d�d�d]dTdU�eTd�d�ddd\d�ddTdU�gZWeTdidjddkdkdd&dTdU�eTdndoddXdXdddTdU�eTdndod	dYdYd&ddTdU�eTdndodd�d�d]ddTdU�eTdndodd�d�dQddTdU�eTd�d�dd�d�d`ddTdU�eTd�d�d	dgdgddddTdU�eTdd�d]d]d\dhddTdU�eTd�d	ddd\dlddTdU�eTdOdPddd�dpddTdU�eTd�d�ddd\dqddTdU�gZXeTd�d�d�d�d�dddTdU�eTdidjdd�d�dddTdU�eTdOdPd	d`d�d&ddTdU�eTdd�d	d	d\d]ddTdU�eTd�d�ddd\dQddTdU�eTd�d�d�d�d�d`dd=dU�eTdedfdd�d�ddddTdU�eTdidjd	dkdkdhd&dTdU�eTd�d�dd�d�dlddTdU�eTdd�d	d	d\dpddTdU�eTd�d	ddd\dqddTdU�eTd�d�dd�d�dsd'dTdU�eTdOdPdd&d�duddTdU�eTd�d�dd�d�dxddTdU�eTd�d�d�d�d\d{ddTdU�eTd�d�d`d`d\d~d]dTdU�eTd�d�dd�d�d�dmd=dU�eTdOdPdd]d�d�ddTdU�eTd�d�d&d�d�d�ddTdU�eTd�d�d`d`d\d�ddTdU�eTd�d�ddd\d�dQdTdU�eTd�d�d`d`d\d�ddTdU�eTd�d�ddd\d�dd=dU�eTdidjd	dkdkd�d`dTdU�eTdOdPd&d�d�d�ddTdU�eTdd�d	d	d\d�ddTdU�eTd�d	ddd\d�ddTdU�eTd�d�d�d�d�d�d�d=dU�eTd�d�dd�d�d�dd=dU�eTd�d�d�d�d\d�ddTdU�eTdidjd	dkdkd�dddTdU�eTd�d�dd�d�d�ddTdU�eTdd�d	d	d\d�ddTdU�eTd�d	ddd\d�ddTdU�eTd�d�dd�d�d�d�dTdU�eTdOdPd'd	dtd�ddTdU�eTd�d�ddd\d�ddTdU�eTdedfdd�d�d�ddTdU�eTd�d�dd�d�d�dhdTdU�eTdOdPdd]d�d�ddTdU�eTd�d�d&d�d�d�ddTdU�eTd�d�d�d�d\d�ddTdU�eTd�d�d�d�d\d�d�dTdU�eTd�d�dd�d�d�dld=dU�eTdOdPdd&d�d�ddTdU�eTd�d�dd�d�d�ddTdU�eTd�d�d�d�d\d�ddTdU�eTd�d�ddd\d�d�dTdU�eTd�d�d�d�d\d�ddTdU�eTd�d�ddd\d�dd=dU�eTdidjd	dkdkdPd�dTdU�eTdOdPd]d�d�d[ddTdU�eTdd�d	d	d\d�ddTdU�eTd�d	ddd\d�ddTdU�eTd�d�d�d�d�d�dqd=dU�eTd�d�ddd�d�d�ddTdU�eTdOdPd'd	dtd�d�dTdU�eTdOdPdmdd�d�ddTdU�eTd�d�ddd\djddTdU�eTd�d	ddd\d�ddTdU�eTd�d�ddd\d�ddTdU�eTd�d�d{d�d�d�ddTdU�eTd�d&ddd\d�dsd=dU�eTdidjdd�d�d�ddTdU�eTd�d�d`d�d�d�ddTdU�eTd�d�d�d�d\d�ddTdU�eTd�d	ddd\dbddTdU�eTd�d	ddd\d�ddTdU�eTd�d	ddd\doddTdU�eTdidjd	dkdkd�d�dTdU�eTdOdPdQd�d�d�ddTdU�eTdd�d	d	d\d�ddTdU�eTd�d	ddd\d�ddTdU�eTd�d�ddd\d�ddTdU�eTd�d�dxd�d�d�ddTdU�eTd�d�ddd\d�dd=dU�eTd�d�dd�d�d�d�d=dU�eTd�d�dh�d�d�dddTdU�eTdedfd	�d�d�dddTdU�eTdidjd	dkdk�ddxdTdU�eTdOdPdc�d�d�dddTdU�eTdd�d	d	d\�d	ddTdU�eTd�d	ddd\�d
ddTdU�eTd�d�ddd\�dddTdU�eTdOdPddd��dddTdU�eT�d
�dddd\�ddd=dU�eT�dd�ddd\�dddTdU�eTd�d�ddd\�dddTdU�eTd�d�ddd\d�dd=dU�eTdOdPddd��dddTdU�eTdidjd	dkdkd�d{d=dU�eTdOdPd`�d�d�dddTdU�eTdd�d	d	d\�dddTdU�eTd�d	ddd\�dddTdU�eTd�d�ddd\�dddTdU�eTdOdPddd��dddTdU�eTd�d�ddd\�dddTdU�gaZY�d�d�ZZeTdOdPddd�deZjjdTdU�eTd�d�ddd\dddTdU�gZ[G�d�d��de�Z\G�d�d ��d ej8�Z]e�d!k�r�e�^�dS($�)�captured_stdout)�BytecodeTestCaseNcCs$dd�}|�}x|jr|j}qW|S)Nc
Ss:yddWn(tk
r4}z
|j}Wdd}~XYnX|S)N�r)�	Exception�
__traceback__)�e�tb�r	�)/usr/local/lib/python3.7/test/test_dis.py�_errors
zget_tb.<locals>._error)�tb_next)rrr	r	r
�get_tb
s

r
c@s,eZdZdd�Zedd��Zedd��ZdS)�_CcCs|dk|_dS)Nr)�x)�selfrr	r	r
�__init__sz_C.__init__cCs|dk}dS)Nrr	)rr	r	r
�sm sz_C.smcCs|dk|_dS)Nr)r)�clsrr	r	r
�cm$sz_C.cmN)�__name__�
__module__�__qualname__r�staticmethodr�classmethodrr	r	r	r
rsra>%3d           0 LOAD_FAST                1 (x)
              2 LOAD_CONST               1 (1)
              4 COMPARE_OP               2 (==)
              6 LOAD_FAST                0 (self)
              8 STORE_ATTR               0 (x)
             10 LOAD_CONST               0 (None)
             12 RETURN_VALUE
ra          0 LOAD_FAST                1 (1)
          2 LOAD_CONST               1 (1)
          4 COMPARE_OP               2 (==)
          6 LOAD_FAST                0 (0)
          8 STORE_ATTR               0 (0)
         10 LOAD_CONST               0 (0)
         12 RETURN_VALUE
a=%3d           0 LOAD_FAST                1 (x)
              2 LOAD_CONST               1 (1)
              4 COMPARE_OP               2 (==)
              6 LOAD_FAST                0 (cls)
              8 STORE_ATTR               0 (x)
             10 LOAD_CONST               0 (None)
             12 RETURN_VALUE
�a%3d           0 LOAD_FAST                0 (x)
              2 LOAD_CONST               1 (1)
              4 COMPARE_OP               2 (==)
              6 STORE_FAST               0 (x)
              8 LOAD_CONST               0 (None)
             10 RETURN_VALUE
zBDisassembly of %s:
%s
Disassembly of %s:
%s
Disassembly of %s:
%s
cCst|�dS)Nr)�print)�ar	r	r
�_f[srz�%3d           0 LOAD_GLOBAL              0 (print)
              2 LOAD_FAST                0 (a)
              4 CALL_FUNCTION            1
              6 POP_TOP

%3d           8 LOAD_CONST               1 (1)
             10 RETURN_VALUE
z�          0 LOAD_GLOBAL              0 (0)
          2 LOAD_FAST                0 (0)
          4 CALL_FUNCTION            1
          6 POP_TOP
          8 LOAD_CONST               1 (1)
         10 RETURN_VALUE
cCsxtdd�D]}qWdS)Nr�
)�range)Zresr	r	r
�	bug708901us
r a%3d           0 SETUP_LOOP              18 (to 20)
              2 LOAD_GLOBAL              0 (range)
              4 LOAD_CONST               1 (1)

%3d           6 LOAD_CONST               2 (10)
              8 CALL_FUNCTION            2
             10 GET_ITER
        >>   12 FOR_ITER                 4 (to 18)
             14 STORE_FAST               0 (res)

%3d          16 JUMP_ABSOLUTE           12
        >>   18 POP_BLOCK
        >>   20 LOAD_CONST               0 (None)
             22 RETURN_VALUE
�cCsdstdd�|D�d��dS)NrcSsg|]}|�qSr	r	)�.0�sr	r	r
�
<listcomp>�szbug1333982.<locals>.<listcomp>r)�AssertionError)rr	r	r
�
bug1333982�sr&a�%3d           0 LOAD_CONST               1 (0)
              2 POP_JUMP_IF_TRUE        26
              4 LOAD_GLOBAL              0 (AssertionError)
              6 LOAD_CONST               2 (<code object <listcomp> at 0x..., file "%s", line %d>)
              8 LOAD_CONST               3 ('bug1333982.<locals>.<listcomp>')
             10 MAKE_FUNCTION            0
             12 LOAD_FAST                0 (x)
             14 GET_ITER
             16 CALL_FUNCTION            1

%3d          18 LOAD_CONST               4 (1)
             20 BINARY_ADD
             22 CALL_FUNCTION            1
             24 RAISE_VARARGS            1

%3d     >>   26 LOAD_CONST               0 (None)
             28 RETURN_VALUE
z�%3d           0 LOAD_GLOBAL              0 (spam)
              2 POP_TOP
              4 LOAD_CONST               0 (None)
              6 RETURN_VALUE
z�%4d           0 LOAD_GLOBAL              0 (spam)
               2 POP_TOP
               4 LOAD_CONST               0 (None)
               6 RETURN_VALUE
z�Disassembly of f:
  4           0 LOAD_CONST               0 (None)
              2 RETURN_VALUE

Disassembly of g:
  5           0 LOAD_CONST               0 (None)
              2 RETURN_VALUE

zx + 1z�  1           0 LOAD_NAME                0 (x)
              2 LOAD_CONST               0 (1)
              4 BINARY_ADD
              6 RETURN_VALUE
z	x = x + 1z�  1           0 LOAD_NAME                0 (x)
              2 LOAD_CONST               0 (1)
              4 BINARY_ADD
              6 STORE_NAME               0 (x)
              8 LOAD_CONST               1 (None)
             10 RETURN_VALUE
z+
x: int = 1
y: fun(1)
lst[fun(0)]: int = 1
a�  2           0 SETUP_ANNOTATIONS
              2 LOAD_CONST               0 (1)
              4 STORE_NAME               0 (x)
              6 LOAD_NAME                1 (int)
              8 LOAD_NAME                2 (__annotations__)
             10 LOAD_CONST               1 ('x')
             12 STORE_SUBSCR

  3          14 LOAD_NAME                3 (fun)
             16 LOAD_CONST               0 (1)
             18 CALL_FUNCTION            1
             20 LOAD_NAME                2 (__annotations__)
             22 LOAD_CONST               2 ('y')
             24 STORE_SUBSCR

  4          26 LOAD_CONST               0 (1)
             28 LOAD_NAME                4 (lst)
             30 LOAD_NAME                3 (fun)
             32 LOAD_CONST               3 (0)
             34 CALL_FUNCTION            1
             36 STORE_SUBSCR
             38 LOAD_NAME                1 (int)
             40 POP_TOP
             42 LOAD_CONST               4 (None)
             44 RETURN_VALUE
zx = 0
while 1:
    x += 1a�  1           0 LOAD_CONST               0 (0)
              2 STORE_NAME               0 (x)

  2           4 SETUP_LOOP              12 (to 18)

  3     >>    6 LOAD_NAME                0 (x)
              8 LOAD_CONST               1 (1)
             10 INPLACE_ADD
             12 STORE_NAME               0 (x)
             14 JUMP_ABSOLUTE            6
             16 POP_BLOCK
        >>   18 LOAD_CONST               2 (None)
             20 RETURN_VALUE
a�%3d           0 SETUP_EXCEPT            12 (to 14)

%3d           2 LOAD_CONST               1 (1)
              4 LOAD_CONST               2 (0)
    -->       6 BINARY_TRUE_DIVIDE
              8 POP_TOP
             10 POP_BLOCK
             12 JUMP_FORWARD            40 (to 54)

%3d     >>   14 DUP_TOP
             16 LOAD_GLOBAL              0 (Exception)
             18 COMPARE_OP              10 (exception match)
             20 POP_JUMP_IF_FALSE       52
             22 POP_TOP
             24 STORE_FAST               0 (e)
             26 POP_TOP
             28 SETUP_FINALLY           10 (to 40)

%3d          30 LOAD_FAST                0 (e)
             32 LOAD_ATTR                1 (__traceback__)
             34 STORE_FAST               1 (tb)
             36 POP_BLOCK
             38 LOAD_CONST               0 (None)
        >>   40 LOAD_CONST               0 (None)
             42 STORE_FAST               0 (e)
             44 DELETE_FAST              0 (e)
             46 END_FINALLY
             48 POP_EXCEPT
             50 JUMP_FORWARD             2 (to 54)
        >>   52 END_FINALLY

%3d     >>   54 LOAD_FAST                1 (tb)
             56 RETURN_VALUE
��cCs|�d|d�d|�d|d��S)N� �4r	)r�b�c�dr	r	r
�_fstring:sr.a�%3d           0 LOAD_FAST                0 (a)
              2 FORMAT_VALUE             0
              4 LOAD_CONST               1 (' ')
              6 LOAD_FAST                1 (b)
              8 LOAD_CONST               2 ('4')
             10 FORMAT_VALUE             4 (with format)
             12 LOAD_CONST               1 (' ')
             14 LOAD_FAST                2 (c)
             16 FORMAT_VALUE             2 (repr)
             18 LOAD_CONST               1 (' ')
             20 LOAD_FAST                3 (d)
             22 LOAD_CONST               2 ('4')
             24 FORMAT_VALUE             6 (repr, with format)
             26 BUILD_STRING             7
             28 RETURN_VALUE
ccs
|VdS)Nr	)rr	r	r
�_gOsr/cCs
|VdS)Nr	)rr	r	r
�_agRsr0c	�s4x.t|�2y3dH}Wq
tk
s$Xq
YWdS)N)r0�StopAsyncIteration)r�itemr	r	r
�_coUs"r3cs�fdd�}|S)Ncs�fdd��D�S)Zfuncdoccsg|]}�|�qSr	r	)r"�z)rr	r
r$\sz#_h.<locals>.foo.<locals>.<listcomp>r	)r)�y)rr
�fooZsz_h.<locals>.foor	)r5r6r	)r5r
�_hYsr7a�%3d           0 LOAD_CLOSURE             0 (y)
              2 BUILD_TUPLE              1
              4 LOAD_CONST               1 (<code object foo at 0x..., file "%s", line %d>)
              6 LOAD_CONST               2 ('_h.<locals>.foo')
              8 MAKE_FUNCTION            8
             10 STORE_FAST               1 (foo)

%3d          12 LOAD_FAST                1 (foo)
             14 RETURN_VALUE
a
%s
Disassembly of <code object foo at 0x..., file "%s", line %d>:
%3d           0 LOAD_CLOSURE             0 (x)
              2 BUILD_TUPLE              1
              4 LOAD_CONST               1 (<code object <listcomp> at 0x..., file "%s", line %d>)
              6 LOAD_CONST               2 ('_h.<locals>.foo.<locals>.<listcomp>')
              8 MAKE_FUNCTION            8
             10 LOAD_DEREF               1 (y)
             12 GET_ITER
             14 CALL_FUNCTION            1
             16 RETURN_VALUE
a�%s
Disassembly of <code object <listcomp> at 0x..., file "%s", line %d>:
%3d           0 BUILD_LIST               0
              2 LOAD_FAST                0 (.0)
        >>    4 FOR_ITER                12 (to 18)
              6 STORE_FAST               1 (z)
              8 LOAD_DEREF               0 (x)
             10 LOAD_FAST                1 (z)
             12 BINARY_ADD
             14 LIST_APPEND              2
             16 JUMP_ABSOLUTE            4
        >>   18 RETURN_VALUE
c@s�eZdZdZd<dd�Zd=dd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�ZdS)>�DisTestsN���Tc	KsJt��}t�|��*|r(tj|f|�ntj||f|�WdQRX|��S)N)�io�StringIO�
contextlib�redirect_stdout�dis�disassemble�getvalue)r�func�lasti�wrapper�kwargs�outputr	r	r
�get_disassembly�szDisTests.get_disassemblycCs|�||d�S)NF)rF)rrArBr	r	r
�get_disassemble_as_string�sz"DisTests.get_disassemble_as_stringcCst�dd|�S)Nz\b0x[0-9A-Fa-f]+\bz0x...)�re�sub)r�textr	r	r
�strip_addresses�szDisTests.strip_addressescCs0|j|dd�}||kr |�|�}|�||�dS)Nr)�depth)rFrK�assertEqual)rrA�expectedZgotr	r	r
�do_disassembly_test�s
zDisTests.do_disassembly_testcCs>|�tjdd�|�tjdtj�|�tjdtj�dS)NZNOP�	�
LOAD_CONST�
STORE_NAME)rMr>�opmapZassertInZhasconstZhasname)rr	r	r
�
test_opmap�szDisTests.test_opmapcCs|�tjtjdd�dS)N�	LOAD_FAST)rMr>�opnamerS)rr	r	r
�test_opname�szDisTests.test_opnamecCs,|�tjdtj�|�tjdtj�dS)N�EXTENDED_ARGrR)rMr>rSrX�
HAVE_ARGUMENT)rr	r	r
�test_boundaries�szDisTests.test_boundariesc
Cslxfttj�D]X\}}|dkrq|j|d��4tj}|tjkrJ|dtj7}|�t|�|�WdQRXqWdS)N)ZBUILD_MAP_UNPACK_WITH_CALLZBUILD_TUPLE_UNPACK_WITH_CALL)rVr)	�	enumerater>rV�subTestZ
_OPNAME_WIDTHrYZ_OPARG_WIDTHZassertLessEqual�len)r�opcoderV�widthr	r	r
�test_widths�s
zDisTests.test_widthscCs|�tt�dS)N)rOr�dis_f)rr	r	r
�test_dis�szDisTests.test_discCs|�tt�dS)N)rOr �
dis_bug708901)rr	r	r
�test_bug_708901�szDisTests.test_bug_708901cCs|�tt�dS)N)rOr&�dis_bug1333982)rr	r	r
�test_bug_1333982�szDisTests.test_bug_1333982cCs�dd�}x.tdd�D] }t|d}|�||�|�qWx0tddd�D] }t|d}|�||�|�qFWx0tddd�D] }t|d}|�||�|�qxWd	d
lm}|�|t�dS)NcSs0i}dd�dg|dg�}t||�|dS)Nzdef foo():
 �z
 zspam
r6)�join�exec)�count�	namespacerAr	r	r
rA�s
z'DisTests.test_big_linenos.<locals>.funcri,ri�ri�r)�
dis_module)r�_BIG_LINENO_FORMATrO�_BIG_LINENO_FORMAT2Ztestrl�dis_module_expected_results)rrA�irNrlr	r	r
�test_big_linenos�szDisTests.test_big_linenoscCsjdd�}dd�}x(tdd�D]}|�||�||d��qW|�|d�|dd��|�|d	�|d	d��dS)
NcSs.i}dd�dg|�d}t||�|dS)Nz
def foo(x):
 �;z	x = x + 1z

 return xr6)rhri)rjrkrAr	r	r
rA�s
z'DisTests.test_big_offsets.<locals>.funccsZ�fdd�t|�D�}|d�d|�d|dfg7}d|ddd�|d<d	�|�S)
Ncs@g|]8}d�d|�d|d�d|d�d|df�qS)z�           %*d LOAD_FAST                0 (x)
           %*d LOAD_CONST               1 (1)
           %*d BINARY_ADD
           %*d STORE_FAST               0 (x)
�rr'�r	)r"rp)�wr	r
r$�sz?DisTests.test_big_offsets.<locals>.expected.<locals>.<listcomp>zK
  3        %*d LOAD_FAST                0 (x)
           %*d RETURN_VALUE
rsrz  2rr!rg)rrh)rjrur#r	)rur
rN�s
 z+DisTests.test_big_offsets.<locals>.expectedrr(r'i�i�)rrO)rrArNrpr	r	r
�test_big_offsets�szDisTests.test_big_offsetscCs4|�tt�|�tt�|�tt�|�tt�dS)N)	rO�expr_str�dis_expr_str�simple_stmt_str�dis_simple_stmt_str�annot_stmt_str�dis_annot_stmt_str�compound_stmt_str�dis_compound_stmt_str)rr	r	r
�test_disassemble_strszDisTests.test_disassemble_strcCs|�tjjt�dS)N)rOr�__code__�co_code�
dis_f_co_code)rr	r	r
�test_disassemble_bytesszDisTests.test_disassemble_bytescCs|�tt�dS)N)rOr�dis_c)rr	r	r
�test_disassemble_classszDisTests.test_disassemble_classcCs|�td�jt�dS)Nr)rOrr�dis_c_instance_method)rr	r	r
� test_disassemble_instance_methodsz)DisTests.test_disassemble_instance_methodcCstd�jjj}|�|t�dS)Nr)rrr�r�rO�dis_c_instance_method_bytes)rZmethod_bytecoder	r	r
�&test_disassemble_instance_method_bytessz/DisTests.test_disassemble_instance_method_bytescCs|�tjt�dS)N)rOrr�dis_c_static_method)rr	r	r
�test_disassemble_static_methodsz'DisTests.test_disassemble_static_methodcCs|�tjt�dS)N)rOrr�dis_c_class_method)rr	r	r
�test_disassemble_class_methodsz&DisTests.test_disassemble_class_methodcCs(|�t�}|�td��}|�||�dS)Nr)rFr/rM)rZgen_func_disasZ	gen_disasr	r	r
�test_disassemble_generator!s
z#DisTests.test_disassemble_generatorcCs(|�t�}|�td��}|�||�dS)Nr)rFr0rM)rZagen_func_disasZ
agen_disasr	r	r
� test_disassemble_async_generator&s
z)DisTests.test_disassemble_async_generatorcCs4|�t�}td�}|��|�|�}|�||�dS)Nr)rFr3�closerM)rZcoro_func_disas�coroZ
coro_disasr	r	r
�test_disassemble_coroutine+s


z#DisTests.test_disassemble_coroutinecCs|�tt�dS)N)rOr.�dis_fstring)rr	r	r
�test_disassemble_fstring2sz!DisTests.test_disassemble_fstringcCs2yt`Wntk
rYnX|�ttjd�dS)N)�sys�last_traceback�AttributeError�assertRaises�RuntimeErrorr>)rr	r	r
�
test_dis_none5s
zDisTests.test_dis_nonec
Cs|yt`Wntk
rYnXyddWn.tk
rX}z|j}|t_Wdd}~XYnX|�|jj|j�}|�	d|�dS)Nrr)
r�r�r�rrrG�tb_frame�f_code�tb_lastirO)rrrZtb_disr	r	r
�test_dis_traceback<szDisTests.test_dis_tracebackcCs|�ttjt��dS)N)r��	TypeErrorr>�object)rr	r	r
�test_dis_objectKszDisTests.test_dis_objectcsT�fdd�}|tdd�|tdd�|tdd�|tdd�|tdd�|t�dS)Ncs(�jtf|�}��|�}��||�dS)N)rFr7rKrM)rNrDr>)rr	r
�checkOs
z2DisTests.test_disassemble_recursive.<locals>.checkr)rLrrr!)�dis_nested_0�dis_nested_1�dis_nested_2)rr�r	)rr
�test_disassemble_recursiveNsz#DisTests.test_disassemble_recursive)r9T)r9) rrr�maxDiffrFrGrKrOrTrWrZr`rbrdrfrqrvrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r	r	r
r8�s:


r8c@seZdZddd�ZdS)�DisWithFileTestsr9TcKsDt��}|r$tj|fd|i|��ntj||fd|i|��|��S)N�file)r:r;r>r?r@)rrArBrCrDrEr	r	r
rF_s
z DisWithFileTests.get_disassemblyN)r9T)rrrrFr	r	r	r
r�\sr�aName:              code_info
Filename:          (.*)
Argument count:    1
Kw-only arguments: 0
Number of locals:  1
Stack size:        3
Flags:             OPTIMIZED, NEWLOCALS, NOFREE
Constants:
   0: %r
Names:
   0: _format_code_info
   1: _get_code_object
Variable names:
   0: x)z1Formatted details of methods, functions, or code.)NT)rc/s2|f������fdd�	����|���fVdS)Ncst���|����dS)N)r)r,)r-r�frr5r4r	r
r�|sztricky.<locals>.fr	)rr5r4r,r-r�args�kwdsr	)r-rr�rr5r4r
�trickyzsr�a�Name:              tricky
Filename:          (.*)
Argument count:    3
Kw-only arguments: 3
Number of locals:  8
Stack size:        7
Flags:             OPTIMIZED, NEWLOCALS, VARARGS, VARKEYWORDS, GENERATOR
Constants:
   0: None
   1: <code object f at (.*), file "(.*)", line (.*)>
   2: 'tricky.<locals>.f'
Variable names:
   0: x
   1: y
   2: z
   3: c
   4: d
   5: e
   6: args
   7: kwds
Cell variables:
   0: [edfxyz]
   1: [edfxyz]
   2: [edfxyz]
   3: [edfxyz]
   4: [edfxyz]
   5: [edfxyz]a[Name:              f
Filename:          (.*)
Argument count:    1
Kw-only arguments: 0
Number of locals:  1
Stack size:        8
Flags:             OPTIMIZED, NEWLOCALS, NESTED
Constants:
   0: None
Names:
   0: print
Variable names:
   0: c
Free variables:
   0: [edfxyz]
   1: [edfxyz]
   2: [edfxyz]
   3: [edfxyz]
   4: [edfxyz]
   5: [edfxyz]z�Name:              <module>
Filename:          <disassembly>
Argument count:    0
Kw-only arguments: 0
Number of locals:  0
Stack size:        2
Flags:             NOFREE
Constants:
   0: 1
Names:
   0: xz�Name:              <module>
Filename:          <disassembly>
Argument count:    0
Kw-only arguments: 0
Number of locals:  0
Stack size:        2
Flags:             NOFREE
Constants:
   0: 1
   1: None
Names:
   0: xz�Name:              <module>
Filename:          <disassembly>
Argument count:    0
Kw-only arguments: 0
Number of locals:  0
Stack size:        2
Flags:             NOFREE
Constants:
   0: 0
   1: 1
   2: None
Names:
   0: xc
�sXdIdHx*t2y3dH}Wqtk
s*XqYWt4IdH�}WdQIdHRXdS)Nr)r+r1r,)rr-r	r	r
�	async_def�s

r�z�Name:              async_def
Filename:          (.*)
Argument count:    0
Kw-only arguments: 0
Number of locals:  2
Stack size:        10
Flags:             OPTIMIZED, NEWLOCALS, NOFREE, COROUTINE
Constants:
   0: None
   1: 1c@s\eZdZejefeefee	fe
efee
feefeefgZdd�Zdd�Zdd�Zdd�Zd	S)
�
CodeInfoTestscCs0d|_x$|jD]\}}|�t�|�|�qWdS)Ni�)r��
test_pairs�assertRegexr>�	code_info)rrrNr	r	r
�test_code_info�szCodeInfoTests.test_code_infoc
Cstd|_xh|jD]^\}}t��}t�|�WdQRX|�|��|d�t��}tj||d�|�|��|�qWdS)Ni��
)r�)	r�r�rr>Z	show_coder�r@r:r;)rrrNrEr	r	r
�test_show_codeszCodeInfoTests.test_show_codecCs|�ttjt��dS)N)r�r�r>r�r�)rr	r	r
�test_code_info_objectsz#CodeInfoTests.test_code_info_objectcCs|�t�d�d�dS)NrZ0x0)rMr>Zpretty_flags)rr	r	r
�test_pretty_flags_no_flagssz(CodeInfoTests.test_pretty_flags_no_flagsN)rrrr>r��code_info_code_infor��code_info_tricky�co_tricky_nested_f�code_info_tricky_nested_frw�code_info_expr_strry�code_info_simple_stmt_strr}�code_info_compound_stmt_strr��code_info_async_defr�r�r�r�r�r	r	r	r
r��s

r�cs(d��fdd�	}t��ddgid�|S)	Nr!r'cs&d����fdd�	}t�����|S)Nr(rtcst����||�dS)N)r)rr�)rr+r,r-r	r
�innerszouter.<locals>.f.<locals>.inner)r(rt)r)r,r-r�)rr+)r,r-r
r�szouter.<locals>.frgrzHello world!)r!r')r)rr+r�r	)rr+r
�outersr�c	Cs�x4td�D] }t|�|dkr q
|dkr
Pq
Wtd�x4|rbt|�|d8}|dkrVq8|dkr8Pq8Wtd�zFyddWntk
r�td�YnX|�}td	�WdQRXWdtd
�XdS)Nrr'rtzI can haz else clause?rz%Who let lolcatz into this test suite?rz%Here we go, here we go, here we go...zNever reach thiszOK, now we're done)rr�ZeroDivisionError)rp�dodgyr	r	r
�jumpys,r�rQ�drs)r!r'z(3, 4)F)rVr^�argZargvalZargrepr�offsetZstarts_lineZis_jump_targetZLOAD_CLOSURE�rr+ZBUILD_TUPLE�frgrtzouter.<locals>.fz'outer.<locals>.f'rZ
MAKE_FUNCTION�rP�Z
STORE_FAST�}r��ZLOAD_GLOBAL�tr��Z
LOAD_DEREF���z''��1�Z
BUILD_LIST�g�Z	BUILD_MAP�i�zHello world!z'Hello world!'�Z
CALL_FUNCTION�� ZPOP_TOP�"rU�|�$ZRETURN_VALUE�S�&)r(rtz(5, 6)r,r-zouter.<locals>.f.<locals>.innerz!'outer.<locals>.f.<locals>.inner'r�r�NoneZ
SETUP_LOOP�x�4�6zto 54rZ10ZGET_ITER�DZFOR_ITER�]�,zto 44rpr*Z
COMPARE_OP�k�<ZPOP_JUMP_IF_FALSE�rZ
JUMP_ABSOLUTE�q�6�>Z
BREAK_LOOP�P�(�*Z	POP_BLOCK�W�.zI can haz else clause?z'I can haz else clause?'�0�2�lzto 108��8�b�:�<�>�@�B�
�FZINPLACE_SUBTRACT�H�J�L�N�V�R�T��X�Z�\�^��`�z%Who let lolcatz into this test suite?z''Who let lolcatz into this test suite?'�h�jZ
SETUP_FINALLY�z�zto 180ZSETUP_EXCEPT�yzto 124�n�p��0ZBINARY_TRUE_DIVIDE��vZJUMP_FORWARD�zto 152ZDUP_TOPr��~zexception match������z%Here we go, here we go, here we go...z''Here we go, here we go, here we go...'���Z
POP_EXCEPT�Y��zto 176�ZEND_FINALLY�Z
SETUP_WITH��zto 170�r���zNever reach thisz'Never reach this'�����ZWITH_CLEANUP_START�QZWITH_CLEANUP_FINISH���zOK, now we're donez"OK, now we're done"������cCsdS)Nr	r	r	r	r
�simple��r@c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�InstructionTestscCst�t�}|�t|�t�dS)N)r>�get_instructionsr@rM�list�expected_opinfo_simple)r�actualr	r	r
�test_default_first_lines
z(InstructionTests.test_default_first_linecCs"tjtdd�}|�t|�t�dS)N)�
first_line)r>rCr@rMrDrE)rrFr	r	r
�test_first_line_set_to_Nonesz,InstructionTests.test_first_line_set_to_NonecCs"tjttd�}|�t|�t�dS)N)rH)r>rCr��expected_outer_linerMrD�expected_opinfo_outer)rrFr	r	r
�
test_outer	szInstructionTests.test_outerc	Cs:t��t�}WdQRXtj|td�}|�t|�t�dS)N)rH)rr�r>rC�expected_f_linerMrD�expected_opinfo_f)rr�rFr	r	r
�test_nested
szInstructionTests.test_nestedc	Cs<t��t��}WdQRXtj|td�}|�t|�t�dS)N)rH)rr�r>rC�expected_inner_linerMrD�expected_opinfo_inner)rr�rFr	r	r
�test_doubly_nestedsz#InstructionTests.test_doubly_nestedcCs"tjttd�}|�t|�t�dS)N)rH)r>rCr��expected_jumpy_linerMrD�expected_opinfo_jumpy)rrFr	r	r
�
test_jumpyszInstructionTests.test_jumpyN)	rrrrGrIrLrOrRrUr	r	r	r
rB�srBc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�
BytecodeTestsc
CsfxNttd�jdtjgD]6}|j|d�� t�|�}|�|jt	j
�WdQRXqW|�ttjt
��dS)Nrza=1)�obj)rrrr�r\r>�BytecodeZassertIsInstanceZcodeobj�types�CodeTyper�r�r�)rrWr+r	r	r
�test_instantiation s

z BytecodeTests.test_instantiationc
Csbx\ttd�jdtjgD]D}|j|d��.tt�|��}tt�|��}|�	||�WdQRXqWdS)Nrza=1)rW)
rrrr�r\rDr>rXrCrM)rrWZ
via_objectZ
via_generatorr	r	r
�test_iteration)s
zBytecodeTests.test_iterationcCs"tjttd�}|�t|�t�dS)N)rH)r>rXr�rJrMrDrK)rrFr	r	r
�test_explicit_first_line0sz&BytecodeTests.test_explicit_first_linecCslt�t���}|���d�d}ttjj�}|�||�tjtdd���}|���d�d}|�|d�dS)Nr)ri^)rHZ350)	r>rXr@�strip�	partition�strr��co_firstlinenorM)rrFrNr	r	r
�test_source_line_in_disassembly4sz-BytecodeTests.test_source_line_in_disassemblycCs8d|_x,tjD]"\}}t�|�}|�|��|�qWdS)Ni�)r�r�r�r>rXr��info)rrrNr+r	r	r
�	test_info?s
zBytecodeTests.test_infocCst�t���}|�|t�dS)N)r>rXrrMra)rrFr	r	r
�test_disassembledEszBytecodeTests.test_disassembledcCs8t�}tj�|�}x|jr"|j}qW|�|j|j�dS)N)r
r>rX�from_tracebackrrMZcurrent_offsetr�)rrr+r	r	r
�test_from_tracebackIs

z!BytecodeTests.test_from_tracebackcCs&t�}tj�|�}|�|��t�dS)N)r
r>rXrfrM�
dis_traceback)rrr+r	r	r
�test_from_traceback_disPsz%BytecodeTests.test_from_traceback_disN)rrrr[r\r]rbrdrergrir	r	r	r
rVs	rV�__main__)T)rr)_Ztest.supportrZtest.bytecode_helperrZunittestr�r>r:rHrYr<r
r�r�ZTRACEBACK_CODErrr�rar�r�rr�rr�rr�rrar�r rcr&�__file__rermrnrorwrxryrzr{r|r}r~rhr.r�r/r0r3r7r�r�r�ZTestCaser8r��flags�optimizer�rr�r��__func__�	co_constsr�r�r�r�r�r�r�r�r�r�rJZ_line_offsetZ
code_object_frMZcode_object_innerrPrSZInstruction�reprrKrNrQrTr@rErBrV�mainr	r	r	r
�<module>s�


	





	$




H 
#	


 6