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: //proc/thread-self/root/usr/local/lib/python3.7/test/__pycache__/test_dis.cpython-37.opt-2.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
�cCsdS)Nr	)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
�_agRsr,c	�s4x.t|�2y3dH}Wq
tk
s$Xq
YWdS)N)r,�StopAsyncIteration)r�itemr	r	r
�_coUs"r/cs�fdd�}|S)Ncs�fdd��D�S)Ncsg|]}�|�qSr	r	)�.0�z)rr	r
�
<listcomp>\sz#_h.<locals>.foo.<locals>.<listcomp>r	)r)�y)rr
�fooZsz_h.<locals>.foor	)r3r4r	)r3r
�_hYsr5a�%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)rD)rr?r@r	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)rDrI�assertEqual)rr?�expectedZgotr	r	r
�do_disassembly_test�s
zDisTests.do_disassembly_testcCs>|�tjdd�|�tjdtj�|�tjdtj�dS)NZNOP�	�
LOAD_CONST�
STORE_NAME)rKr<�opmapZassertInZhasconstZhasname)rr	r	r
�
test_opmap�szDisTests.test_opmapcCs|�tjtjdd�dS)N�	LOAD_FAST)rKr<�opnamerQ)rr	r	r
�test_opname�szDisTests.test_opnamecCs,|�tjdtj�|�tjdtj�dS)N�EXTENDED_ARGrP)rKr<rQrV�
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)rTr)	�	enumerater<rT�subTestZ
_OPNAME_WIDTHrWZ_OPARG_WIDTHZassertLessEqual�len)r�opcoderT�widthr	r	r
�test_widths�s
zDisTests.test_widthscCs|�tt�dS)N)rMr�dis_f)rr	r	r
�test_dis�szDisTests.test_discCs|�tt�dS)N)rMr �
dis_bug708901)rr	r	r
�test_bug_708901�szDisTests.test_bug_708901cCs|�d�|�tt�dS)Nzneed asserts, run without -O)ZskipTestrMr"�dis_bug1333982)rr	r	r
�test_bug_1333982�s
zDisTests.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
r4)�join�exec)�count�	namespacer?r	r	r
r?�s
z'DisTests.test_big_linenos.<locals>.funcri,ri�ri�r)�
dis_module)r�_BIG_LINENO_FORMATrM�_BIG_LINENO_FORMAT2Ztestrj�dis_module_expected_results)rr?�irLrjr	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 xr4)rfrg)rhrir?r	r	r
r?�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	)r0rn)�wr	r
r2�sz?DisTests.test_big_offsets.<locals>.expected.<locals>.<listcomp>zK
  3        %*d LOAD_FAST                0 (x)
           %*d RETURN_VALUE
rqrz  2rr!re)rrf)rhrs�sr	)rsr
rL�s
 z+DisTests.test_big_offsets.<locals>.expectedrr$r#i�i�)rrM)rr?rLrnr	r	r
�test_big_offsets�szDisTests.test_big_offsetscCs4|�tt�|�tt�|�tt�|�tt�dS)N)	rM�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)rMr�__code__�co_code�
dis_f_co_code)rr	r	r
�test_disassemble_bytesszDisTests.test_disassemble_bytescCs|�tt�dS)N)rMr�dis_c)rr	r	r
�test_disassemble_classszDisTests.test_disassemble_classcCs|�td�jt�dS)Nr)rMrr�dis_c_instance_method)rr	r	r
� test_disassemble_instance_methodsz)DisTests.test_disassemble_instance_methodcCstd�jjj}|�|t�dS)Nr)rrrr�rM�dis_c_instance_method_bytes)rZmethod_bytecoder	r	r
�&test_disassemble_instance_method_bytessz/DisTests.test_disassemble_instance_method_bytescCs|�tjt�dS)N)rMrr�dis_c_static_method)rr	r	r
�test_disassemble_static_methodsz'DisTests.test_disassemble_static_methodcCs|�tjt�dS)N)rMrr�dis_c_class_method)rr	r	r
�test_disassemble_class_methodsz&DisTests.test_disassemble_class_methodcCs(|�t�}|�td��}|�||�dS)Nr)rDr+rK)rZgen_func_disasZ	gen_disasr	r	r
�test_disassemble_generator!s
z#DisTests.test_disassemble_generatorcCs(|�t�}|�td��}|�||�dS)Nr)rDr,rK)rZagen_func_disasZ
agen_disasr	r	r
� test_disassemble_async_generator&s
z)DisTests.test_disassemble_async_generatorcCs4|�t�}td�}|��|�|�}|�||�dS)Nr)rDr/�closerK)rZcoro_func_disas�coroZ
coro_disasr	r	r
�test_disassemble_coroutine+s


z#DisTests.test_disassemble_coroutinecCs|�tt�dS)N)rMr*�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�rrrE�tb_frame�f_code�tb_lastirM)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)rDr5rIrK)rLrBr<)rr	r
�checkOs
z2DisTests.test_disassemble_recursive.<locals>.checkr)rJrrr!)�dis_nested_0�dis_nested_1�dis_nested_2)rr�r	)rr
�test_disassemble_recursiveNsz#DisTests.test_disassemble_recursive)r7T)r7) rrr�maxDiffrDrErIrMrRrUrXr^r`rbrdrorur~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r	r	r
r6�s:


r6c@seZdZddd�ZdS)�DisWithFileTestsr7TcKsDt��}|r$tj|fd|i|��ntj||fd|i|��|��S)N�file)r8r9r<r=r>)rr?r@rArBrCr	r	r
rD_s
z DisWithFileTests.get_disassemblyN)r7T)rrrrDr	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�frr3r1r	r
r�|sztricky.<locals>.fr	)rr3r1r(r)r�args�kwdsr	)r)rr�rr3r1r
�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'r-r()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)rrrLr	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>r8r9)rrrLrCr	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)rKr<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_frv�code_info_expr_strrx�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$rrcst����||�dS)N)r)rr�)rr'r(r)r	r
�innerszouter.<locals>.f.<locals>.inner)r$rr)r)r(r)r�)rr')r(r)r
r�szouter.<locals>.frerz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#rrzI 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)rn�dodgyr	r	r
�jumpys,r�rO�drq)r!r#z(3, 4)F)rTr\�argZargvalZargrepr�offsetZstarts_lineZis_jump_targetZLOAD_CLOSURE�rr'ZBUILD_TUPLE�frerrzouter.<locals>.fz'outer.<locals>.f'rZ
MAKE_FUNCTION�rN�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�"rS�|�$ZRETURN_VALUE�S�&)r$rrz(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 44rnr&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?rK�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<rBr?rKrCrD)rrEr	r	r
�test_first_line_set_to_Nonesz,InstructionTests.test_first_line_set_to_NonecCs"tjttd�}|�t|�t�dS)N)rG)r<rBr��expected_outer_linerKrC�expected_opinfo_outer)rrEr	r	r
�
test_outer	szInstructionTests.test_outerc	Cs:t��t�}WdQRXtj|td�}|�t|�t�dS)N)rG)rr�r<rB�expected_f_linerKrC�expected_opinfo_f)rr�rEr	r	r
�test_nested
szInstructionTests.test_nestedc	Cs<t��t��}WdQRXtj|td�}|�t|�t�dS)N)rG)rr�r<rB�expected_inner_linerKrC�expected_opinfo_inner)rr�rEr	r	r
�test_doubly_nestedsz#InstructionTests.test_doubly_nestedcCs"tjttd�}|�t|�t�dS)N)rG)r<rBr��expected_jumpy_linerKrC�expected_opinfo_jumpy)rrEr	r	r
�
test_jumpyszInstructionTests.test_jumpyN)	rrrrFrHrKrNrQrTr	r	r	r
rA�srAc@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)rrrrrZr<�BytecodeZassertIsInstanceZcodeobj�types�CodeTyper�r�r�)rrVr'r	r	r
�test_instantiation s

z BytecodeTests.test_instantiationc
Csbx\ttd�jdtjgD]D}|j|d��.tt�|��}tt�|��}|�	||�WdQRXqWdS)Nrza=1)rV)
rrrrrZrCr<rWrBrK)rrVZ
via_objectZ
via_generatorr	r	r
�test_iteration)s
zBytecodeTests.test_iterationcCs"tjttd�}|�t|�t�dS)N)rG)r<rWr�rIrKrCrJ)rrEr	r	r
�test_explicit_first_line0sz&BytecodeTests.test_explicit_first_linecCslt�t���}|���d�d}ttjj�}|�||�tjtdd���}|���d�d}|�|d�dS)Nr%ri^)rGZ350)	r<rWr?�strip�	partition�strr�co_firstlinenorK)rrErLr	r	r
�test_source_line_in_disassembly4sz-BytecodeTests.test_source_line_in_disassemblycCs8d|_x,tjD]"\}}t�|�}|�|��|�qWdS)Ni�)r�r�r�r<rWr��info)rrrLr'r	r	r
�	test_info?s
zBytecodeTests.test_infocCst�t���}|�|t�dS)N)r<rWrrKr_)rrEr	r	r
�test_disassembledEszBytecodeTests.test_disassembledcCs8t�}tj�|�}x|jr"|j}qW|�|j|j�dS)N)r
r<rW�from_tracebackrrKZcurrent_offsetr�)rrr'r	r	r
�test_from_tracebackIs

z!BytecodeTests.test_from_tracebackcCs&t�}tj�|�}|�|��t�dS)N)r
r<rWrerK�
dis_traceback)rrr'r	r	r
�test_from_traceback_disPsz%BytecodeTests.test_from_traceback_disN)rrrrZr[r\rarcrdrfrhr	r	r	r
rUs	rU�__main__)T)rr)_Ztest.supportrZtest.bytecode_helperrZunittestr�r<r8rFrXr:r
r�r�ZTRACEBACK_CODErrrr`r�r�rr�rr�rr�rr_r�r rar"�__file__rcrkrlrmrvrwrxryrzr{r|r}rgr*r�r+r,r/r5r�r�r�ZTestCaser6r��flags�optimizer�rr�r��__func__�	co_constsr�r�r�r�r�r�r�r�r�r�rIZ_line_offsetZ
code_object_frLZcode_object_innerrOrRZInstruction�reprrJrMrPrSr?rDrArU�mainr	r	r	r
�<module>s�


	





	$




H 
#	


 6