Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_dis.cpython-35.opt-2.pyc



���]���q@s$ddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZdd�Ze�j
jZGdd�d�Zdejjjd	fZd
ZdejjjdfZd
ejjjdfZdejjeejjeejjefZdd�Zdejjd	ejjdfZdZdd�Zdejjd	ejjdejjdfZ gdd�Z!de!jjd	e"e!jjd	e!jjde!jjdfZ#dZ$dZ%dZ&dZ'dZ(dZ)d Z*d!Z+d"ejd	ejdejdejd#ejd$fZ,d%d&�Z-Gd'd(�d(ej.�Z/Gd)d*�d*e/�Z0d+ej1j2dkr�d/nd0Z3e4d-d.gd/d0��Z5d1Z6e5j7jj8d	Z9d2Z:d3Z;d4Z<d5Z=d6d7�Z>d8Z?Gd9d:�d:ej.�Z@d	dd;d<�ZAd=d>�ZBd	ZCeAjjd	ZDeAjj8dZEeEjeDZFeEj8dZGeGjeDZHd	ZIejJZJeJd?d@dAdBdCd	dDddEdFdGddHddIdJ�eJd?d@dAdBdCddDd#dEdKdGddHddIdJ�eJd?dLdAdMdCddDdNdEdNdGdOdHddIdJ�eJd?dLdAdMdCd	dDdPdEdPdGdQdHddIdJ�eJd?dRdAdSdCddDddEdTdGdUdHddIdJ�eJd?d@dAdBdCddDeEdEeKeE�dGdVdHddIdJ�eJd?d@dAdBdCd#dDdWdEdXdGdYdHddIdJ�eJd?dZdAd[dCddDddEdTdGd\dHddIdJ�eJd?d]dAd^dCddDd_dEd_dGd`dHddIdJ�eJd?dadAdbdCddDdcdEdcdGdddHdedIdJ�eJd?dfdAdgdCddDdNdEdNdGdhdHddIdJ�eJd?dfdAdgdCd	dDdPdEdPdGdidHddIdJ�eJd?d@dAdBdCd$dDdTdEdjdGdkdHddIdJ�eJd?d@dAdBdCdOdDd	dEdldGdmdHddIdJ�eJd?dndAdodCddDddEdTdGdpdHddIdJ�eJd?dqdAdrdCddDddEdTdGdsdHddIdJ�eJd?d@dAdBdCdedDdtdEdudGdvdHddIdJ�eJd?dwdAdxdCdedDdedEdydGdzdHddIdJ�eJd?d{dAd	dCddDddEdTdGd|dHddIdJ�eJd?d}dAd~dCddDd_dEd_dGddHd�dIdJ�eJd?d�dAd�dCddDddEdTdGd�dHddIdJ�gZLeJd?d@dAdBdCd	dDd$dEd�dGddHddIdJ�eJd?d@dAdBdCddDdOdEd�dGddHddIdJ�eJd?dLdAdMdCddDdNdEdNdGdOdHddIdJ�eJd?dLdAdMdCddDdPdEdPdGdQdHddIdJ�eJd?dLdAdMdCddDd�dEd�dGdUdHddIdJ�eJd?dLdAdMdCd	dDd�dEd�dGdVdHddIdJ�eJd?dRdAdSdCd#dDd#dEdTdGdYdHddIdJ�eJd?d@dAdBdCddDeGdEeKeG�dGd\dHddIdJ�eJd?d@dAdBdCd#dDd�dEd�dGd`dHddIdJ�eJd?dZdAd[dCddDddEdTdGdddHddIdJ�eJd?d]dAd^dCddDd�dEd�dGdhdHddIdJ�eJd?dadAdbdCddDdcdEdcdGdidHd$dIdJ�eJd?dfdAdgdCddDdNdEdNdGdkdHddIdJ�eJd?dfdAdgdCddDdPdEdPdGdmdHddIdJ�eJd?dfdAdgdCddDd�dEd�dGdpdHddIdJ�eJd?dfdAdgdCd	dDd�dEd�dGdsdHddIdJ�eJd?dwdAdxdCd#dDd#dEd�dGdvdHddIdJ�eJd?d{dAd	dCddDddEdTdGdzdHddIdJ�eJd?d}dAd~dCddDd�dEd�dGd�dHdOdIdJ�eJd?d�dAd�dCddDddEdTdGddHddIdJ�gZMeJd?dadAdbdCddDdcdEdcdGddHd#dIdJ�eJd?dfdAdgdCddDdNdEdNdGddHddIdJ�eJd?dfdAdgdCd	dDdPdEdPdGdOdHddIdJ�eJd?dfdAdgdCddDd�dEd�dGdQdHddIdJ�eJd?dfdAdgdCddDd�dEd�dGdUdHddIdJ�eJd?d}dAd~dCddDd.dEd.dGdVdHddIdJ�eJd?d}dAd~dCd	dDd_dEd_dGdYdHddIdJ�eJd?dwdAdxdCdOdDdOdEd�dGd\dHddIdJ�eJd?d{dAd	dCddDddEdTdGd`dHddIdJ�eJd?d@dAdBdCddDddEd�dGd�dHddIdJ�eJd?d�dAd�dCddDddEdTdGd�dHddIdJ�gZNeJd?d�dAd�dCd�dDd�dEd�dGddHddIdJ�eJd?dadAdbdCddDd�dEd�dGddHddIdJ�eJd?d@dAdBdCd	dDd�dEd�dGdOdHddIdJ�eJd?dwdAdxdCd	dDd	dEd�dGdQdHddIdJ�eJd?d�dAd�dCddDddEdTdGdUdHddIdJ�eJd?d�dAd�dCd�dDd�dEd�dGd�dHddId-�eJd?d]dAd^dCddDd�dEd�dGd�dHddIdJ�eJd?dadAdbdCd	dDdcdEdcdGd�dHd#dIdJ�eJd?d}dAd~dCddDd�dEd�dGd�dHddIdJ�eJd?dwdAdxdCd	dDd	dEd�dGd�dHddIdJ�eJd?d{dAd	dCddDddEdTdGd�dHddIdJ�eJd?d}dAd~dCddDd�dEd�dGd�dHd$dIdJ�eJd?d@dAdBdCddDd#dEdKdGd�dHddIdJ�eJd?d�dAd�dCddDd�dEd�dGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEdTdGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEdTdGd�dHdOdIdJ�eJd?d}dAd~dCddDd�dEd�dGd�dHdedId-�eJd?d@dAdBdCddDdOdEd�dGd�dHddIdJ�eJd?d�dAd�dCd#dDd�dEd�dGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEdTdGd�dHddIdJ�eJd?d�dAd�dCddDddEdTdGd�dHd�dIdJ�eJd?d�dAd�dCd�dDd�dEdTdGd�dHddIdJ�eJd?d�dAd�dCddDddEdTdGd�dHddId-�eJd?dadAdbdCd	dDdcdEdcdGd�dHd�dIdJ�eJd?d@dAdBdCd#dDd�dEd�dGd�dHddIdJ�eJd?dwdAdxdCd	dDd	dEd�dGd�dHddIdJ�eJd?d{dAd	dCddDddEdTdGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEd�dGd�dHd�dId-�eJd?d}dAd~dCddDd�dEd�dGd�dHddId-�eJd?d�dAd�dCdxdDdxdEdTdGd�dHddIdJ�eJd?dadAdbdCd	dDdcdEdcdGd�dHdUdIdJ�eJd?d}dAd~dCddDd�dEd�dGd�dHddIdJ�eJd?dwdAdxdCd	dDd	dEd�dGd�dHddIdJ�eJd?d{dAd	dCddDddEdTdGd�dHddIdJ�eJd?d}dAd~dCddDd�dEd�dGd�dHd�dIdJ�eJd?d@dAdBdCd$dDd	dEdldGd�dHddIdJ�eJd?d�dAd�dCddDddEdTdGd�dHddIdJ�eJd?d]dAd^dCddDd�dEd�dGd�dHddIdJ�eJd?d}dAd~dCddDd�dEd�dGdBdHd�dIdJ�eJd?d@dAdBdCddDdOdEd�dGdodHddIdJ�eJd?d�dAd�dCd#dDd�dEd�dGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEdTdGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEdTdGd�dHdVdIdJ�eJd?d}dAd~dCddDd�dEd�dGd�dHd�dId-�eJd?d@dAdBdCddDd#dEdKdGd�dHddIdJ�eJd?d�dAd�dCddDd�dEd�dGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEdTdGd~dHddIdJ�eJd?d�dAd�dCddDddEdTdGd�dHd�dIdJ�eJd?d�dAd�dCd�dDd�dEdTdGd�dHddIdJ�eJd?d�dAd�dCddDddEdTdGdxdHddId-�eJd?dadAdbdCd	dDdcdEdcdGd�dHd�dIdJ�eJd?d@dAdBdCdOdDd�dEd�dGdMdHddIdJ�eJd?dwdAdxdCd	dDd	dEd�dGd�dHddIdJ�eJd?d{dAd	dCddDddEdTdGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEd�dGd�dHd�dId-�eJd?d�dAd�dCdUdDd�dEd�dGd�dHddIdJ�eJd?d@dAdBdCd$dDd	dEdldGd�dHd\dIdJ�eJd?d@dAdBdCdedDddEd�dGd�dHddIdJ�eJd?d�dAdddCddDddEdTdGd�dHddIdJ�eJd?d{dAd	dCddDddEdTdGd�dHddIdJ�eJd?d�dAd�dCddDddEdTdGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEd�dGd�dHddIdJ�eJd?d�dAd#dCddDddEdTdGd�dHd�dId-�eJd?dadAdbdCddDd�dEd�dGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEd�dGd�dHddIdJ�eJd?d�dAd�dCd�dDd�dEdTdGd�dHddIdJ�eJd?d{dAd	dCddDddEdTdGd�dHddIdJ�eJd?d{dAd	dCddDddEdTdGd�dHddIdJ�eJd?d{dAd	dCddDddEdTdGd�dHddIdJ�eJd?dadAdbdCd	dDdcdEdcdGd�dHd�dIdJ�eJd?d@dAdBdCd�dDd�dEd�dGd�dHddIdJ�eJd?dwdAdxdCd	dDd	dEd�dGddHddIdJ�eJd?d{dAd	dCddDddEdTdGddHddIdJ�eJd?ddAd�dCddDddEdTdGddHddIdJ�eJd?d�dAd�dCdddDddEddGddHddIdJ�eJd?ddAddCddDddEdTdGd�dHddId-�eJd?d}dAd~dCddDd�dEd�dGd�dHd�dId-�eJd?d	dAd
dCd�dDddEddGd
dHddIdJ�eJd?d]dAd^dCd	dDddEddGddHddIdJ�eJd?dadAdbdCd	dDdcdEdcdGddHddIdJ�eJd?d@dAdBdCdQdDddEddGddHddIdJ�eJd?dwdAdxdCd	dDd	dEd�dGddHddIdJ�eJd?d{dAd	dCddDddEdTdGddHddIdJ�eJd?d�dAd�dCddDddEdTdGddHddIdJ�eJd?d@dAdBdCddDddEd�dGddHddIdJ�eJd?ddAddCddDddEdTdGddHddId-�eJd?ddAddCddDddEdTdGddHddIdJ�eJd?ddAddCddDddEdTdGddHddIdJ�eJd?d�dAd�dCddDddEdTdGddHddId-�eJd?d@dAdBdCddDddEd�dGddHddIdJ�eJd?dadAdbdCd	dDdcdEdcdGd�dHd�dId-�eJd?d@dAdBdCd�dDd dEd!dGd"dHddIdJ�eJd?dwdAdxdCd	dDd	dEd�dGd#dHddIdJ�eJd?d{dAd	dCddDddEdTdGd$dHddIdJ�eJd?ddAddCddDddEdTdGd%dHddIdJ�eJd?d@dAdBdCddDddEd�dGd&dHddIdJ�eJd?d�dAd�dCddDddEdTdGd'dHddIdJ�gaZOd(d)�ZPeJd?d@dAdBdCddDddEd�dGddHePjjdIdJ�eJd?d�dAd�dCddDddEdTdGddHddIdJ�gZQGd*d+�d+e�ZRGd,d-�d-ej.�ZSed.kr$ejT�dS(1�)�captured_stdout)�BytecodeTestCaseNcCs2dd�}|�}x|jr-|j}qW|S)NcSsAyddWn.tk
r<}z|j}WYdd}~XnX|S)N�r)�	Exception�
__traceback__)�e�tb�r	�-/opt/alt/python35/lib64/python3.5/test_dis.py�_errors
zget_tb.<locals>._error)�tb_next)rrr	r	r
�get_tbs
	
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)
              3 LOAD_CONST               1 (1)
              6 COMPARE_OP               2 (==)
              9 LOAD_FAST                0 (self)
             12 STORE_ATTR               0 (x)
             15 LOAD_CONST               0 (None)
             18 RETURN_VALUE
ra          0 LOAD_FAST                1 (1)
          3 LOAD_CONST               1 (1)
          6 COMPARE_OP               2 (==)
          9 LOAD_FAST                0 (0)
         12 STORE_ATTR               0 (0)
         15 LOAD_CONST               0 (0)
         18 RETURN_VALUE
a=%3d           0 LOAD_FAST                1 (x)
              3 LOAD_CONST               1 (1)
              6 COMPARE_OP               2 (==)
              9 LOAD_FAST                0 (cls)
             12 STORE_ATTR               0 (x)
             15 LOAD_CONST               0 (None)
             18 RETURN_VALUE
�a%3d           0 LOAD_FAST                0 (x)
              3 LOAD_CONST               1 (1)
              6 COMPARE_OP               2 (==)
              9 STORE_FAST               0 (x)
             12 LOAD_CONST               0 (None)
             15 RETURN_VALUE
zBDisassembly of %s:
%s
Disassembly of %s:
%s
Disassembly of %s:
%s
cCst|�dS)Nr)�print)�ar	r	r
�_f\s
ra%3d           0 LOAD_GLOBAL              0 (print)
              3 LOAD_FAST                0 (a)
              6 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
              9 POP_TOP

%3d          10 LOAD_CONST               1 (1)
             13 RETURN_VALUE
z�          0 LOAD_GLOBAL              0 (0)
          3 LOAD_FAST                0 (0)
          6 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
          9 POP_TOP
         10 LOAD_CONST               1 (1)
         13 RETURN_VALUE
cCsxtdd�D]}qWdS)Nr�
)�range)�resr	r	r
�	bug708901vs	
r!a"%3d           0 SETUP_LOOP              23 (to 26)
              3 LOAD_GLOBAL              0 (range)
              6 LOAD_CONST               1 (1)

%3d           9 LOAD_CONST               2 (10)
             12 CALL_FUNCTION            2 (2 positional, 0 keyword pair)
             15 GET_ITER
        >>   16 FOR_ITER                 6 (to 25)
             19 STORE_FAST               0 (res)

%3d          22 JUMP_ABSOLUTE           16
        >>   25 POP_BLOCK
        >>   26 LOAD_CONST               0 (None)
             29 RETURN_VALUE
�cCsdS)Nr	)rr	r	r
�
bug1333982�sr#a%3d           0 LOAD_CONST               1 (0)
              3 POP_JUMP_IF_TRUE        35
              6 LOAD_GLOBAL              0 (AssertionError)
              9 LOAD_CONST               2 (<code object <listcomp> at 0x..., file "%s", line %d>)
             12 LOAD_CONST               3 ('bug1333982.<locals>.<listcomp>')
             15 MAKE_FUNCTION            0
             18 LOAD_FAST                0 (x)
             21 GET_ITER
             22 CALL_FUNCTION            1 (1 positional, 0 keyword pair)

%3d          25 LOAD_CONST               4 (1)
             28 BINARY_ADD
             29 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
             32 RAISE_VARARGS            1

%3d     >>   35 LOAD_CONST               0 (None)
             38 RETURN_VALUE
z�%3d           0 LOAD_GLOBAL              0 (spam)
              3 POP_TOP
              4 LOAD_CONST               0 (None)
              7 RETURN_VALUE
z�Disassembly of f:
  4           0 LOAD_CONST               0 (None)
              3 RETURN_VALUE

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

zx + 1z�  1           0 LOAD_NAME                0 (x)
              3 LOAD_CONST               0 (1)
              6 BINARY_ADD
              7 RETURN_VALUE
z	x = x + 1z�  1           0 LOAD_NAME                0 (x)
              3 LOAD_CONST               0 (1)
              6 BINARY_ADD
              7 STORE_NAME               0 (x)
             10 LOAD_CONST               1 (None)
             13 RETURN_VALUE
zx = 0
while 1:
    x += 1a�  1           0 LOAD_CONST               0 (0)
              3 STORE_NAME               0 (x)

  2           6 SETUP_LOOP              14 (to 23)

  3     >>    9 LOAD_NAME                0 (x)
             12 LOAD_CONST               1 (1)
             15 INPLACE_ADD
             16 STORE_NAME               0 (x)
             19 JUMP_ABSOLUTE            9
             22 POP_BLOCK
        >>   23 LOAD_CONST               2 (None)
             26 RETURN_VALUE
a�%3d           0 SETUP_EXCEPT            12 (to 15)

%3d           3 LOAD_CONST               1 (1)
              6 LOAD_CONST               2 (0)
    -->       9 BINARY_TRUE_DIVIDE
             10 POP_TOP
             11 POP_BLOCK
             12 JUMP_FORWARD            46 (to 61)

%3d     >>   15 DUP_TOP
             16 LOAD_GLOBAL              0 (Exception)
             19 COMPARE_OP              10 (exception match)
             22 POP_JUMP_IF_FALSE       60
             25 POP_TOP
             26 STORE_FAST               0 (e)
             29 POP_TOP
             30 SETUP_FINALLY           14 (to 47)

%3d          33 LOAD_FAST                0 (e)
             36 LOAD_ATTR                1 (__traceback__)
             39 STORE_FAST               1 (tb)
             42 POP_BLOCK
             43 POP_EXCEPT
             44 LOAD_CONST               0 (None)
        >>   47 LOAD_CONST               0 (None)
             50 STORE_FAST               0 (e)
             53 DELETE_FAST              0 (e)
             56 END_FINALLY
             57 JUMP_FORWARD             1 (to 61)
        >>   60 END_FINALLY

%3d     >>   61 LOAD_FAST                1 (tb)
             64 RETURN_VALUE
��ccs	|VdS)Nr	)rr	r	r
�_gsr&c@s!eZdZd0ddd�Zd1dd�Zdd�Zd	d
�Zdd�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/S)2�DisTestsrTc
CsStj�}tj|��+|r2tj|�ntj||�WdQRX|j�S)N)�io�StringIO�
contextlib�redirect_stdout�dis�disassemble�getvalue)r�func�lasti�wrapper�outputr	r	r
�get_disassemblyszDisTests.get_disassemblycCs|j||d�S)NF)r3)rr/r0r	r	r
�get_disassemble_as_stringsz"DisTests.get_disassemble_as_stringcCstjdd|�S)Nz\b0x[0-9A-Fa-f]+\bz0x...)�re�sub)r�textr	r	r
�strip_addresses"szDisTests.strip_addressescCs>|j|�}||kr*|j|�}|j||�dS)N)r3r8�assertEqual)rr/�expectedZgotr	r	r
�do_disassembly_test%szDisTests.do_disassembly_testcCsO|jtjdd�|jtjdtj�|jtjdtj�dS)NZNOP�	�
LOAD_CONST�
STORE_NAME)r9r,�opmapZassertInZhasconstZhasname)rr	r	r
�
test_opmap+szDisTests.test_opmapcCs"|jtjtjdd�dS)N�	LOAD_FAST)r9r,�opnamer?)rr	r	r
�test_opname0szDisTests.test_opnamecCs8|jtjdtj�|jtjdtj�dS)N�EXTENDED_ARGr>)r9r,r?rDZ
HAVE_ARGUMENT)rr	r	r
�test_boundaries3szDisTests.test_boundariescCs|jtt�dS)N)r;r�dis_f)rr	r	r
�test_dis7szDisTests.test_discCs|jtt�dS)N)r;r!�
dis_bug708901)rr	r	r
�test_bug_708901:szDisTests.test_bug_708901cCs'ts|jd�|jtt�dS)Nzneed asserts, run without -O)�	__debug__ZskipTestr;r#�dis_bug1333982)rr	r	r
�test_bug_1333982=s
zDisTests.test_bug_1333982cCs�dd�}x;tdd�D]*}t|d}|j||�|�qWx>tddd�D]*}t|d}|j||�|�q]Wdd	lm}|j|t�dS)
NcSs<i}ddjdg|dg�}t||�|dS)Nzdef foo():
 �z
 zspam
Zfoo)�join�exec)�count�	namespacer/r	r	r
r/Fs!
z'DisTests.test_big_linenos.<locals>.funcri,ri�rr)�
dis_module)r�_BIG_LINENO_FORMATr;ZtestrR�dis_module_expected_results)rr/�ir:rRr	r	r
�test_big_linenosEszDisTests.test_big_linenoscCs4|jtt�|jtt�|jtt�dS)N)r;�expr_str�dis_expr_str�simple_stmt_str�dis_simple_stmt_str�compound_stmt_str�dis_compound_stmt_str)rr	r	r
�test_disassemble_strYszDisTests.test_disassemble_strcCs|jtjjt�dS)N)r;r�__code__�co_code�
dis_f_co_code)rr	r	r
�test_disassemble_bytes^szDisTests.test_disassemble_bytescCs|jtt�dS)N)r;r�dis_c)rr	r	r
�test_disassemble_classaszDisTests.test_disassemble_classcCs|jtd�jt�dS)Nr)r;rr�dis_c_instance_method)rr	r	r
� test_disassemble_instance_methoddsz)DisTests.test_disassemble_instance_methodcCs)td�jjj}|j|t�dS)Nr)rrr^r_r;�dis_c_instance_method_bytes)rZmethod_bytecoder	r	r
�&test_disassemble_instance_method_bytesgsz/DisTests.test_disassemble_instance_method_bytescCs|jtjt�dS)N)r;rr�dis_c_static_method)rr	r	r
�test_disassemble_static_methodksz'DisTests.test_disassemble_static_methodcCs|jtjt�dS)N)r;rr�dis_c_class_method)rr	r	r
�test_disassemble_class_methodnsz&DisTests.test_disassemble_class_methodcCs8|jt�}|jtd��}|j||�dS)Nr)r3r&r9)rZgen_func_disasZ	gen_disasr	r	r
�test_disassemble_generatorqsz#DisTests.test_disassemble_generatorcCs9y
t`Wntk
rYnX|jttjd�dS)N)�sys�last_traceback�AttributeError�assertRaises�RuntimeErrorr,)rr	r	r
�
test_dis_nonevs


zDisTests.test_dis_nonecCs�y
t`Wntk
rYnXyddWn7tk
rd}z|j}|t_WYdd}~XnX|j|jj|j�}|j	d|�dS)Nrr)
rmrnrorrr4�tb_frame�f_code�tb_lastir;)rrrZtb_disr	r	r
�test_dis_traceback}s

	zDisTests.test_dis_tracebackcCs|jttjt��dS)N)rp�	TypeErrorr,�object)rr	r	r
�test_dis_object�szDisTests.test_dis_objectN���rz)rrrr3r4r8r;r@rCrErGrIrLrVr]rarcrergrirkrlrrrvryr	r	r	r
r's,
r'c@s"eZdZdddd�ZdS)�DisWithFileTestsrTcCsHtj�}|r(tj|d|�ntj||d|�|j�S)N�file)r(r)r,r-r.)rr/r0r1r2r	r	r
r3�s
z DisWithFileTests.get_disassemblyNrz)rrrr3r	r	r	r
r{�sr{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�1Formatted details of methods, functions, or code.Trc/sB|������fdd�����|���fVdS)Ncs t���|����dS)N)r)�c)�dr�fr�y�zr	r
r��sztricky.<locals>.fr	)rr�r�r~rr�args�kwdsr	)rrr�rr�r�r
�tricky�s$r�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�s\dIdHx1t2dHy3dH}Wqtk
r5YWq=XqWq=t4IdH�}WdQIdHRXdS)Nr)�b�StopAsyncIterationr~)rrr	r	r
�	async_defs
	-r�z�Name:              async_def
Filename:          (.*)
Argument count:    0
Kw-only arguments: 0
Number of locals:  2
Stack size:        17
Flags:             OPTIMIZED, NEWLOCALS, GENERATOR, NOFREE, COROUTINE
Constants:
   0: None
   1: 1c@s�eZdZejefeefee	fe
efee
feefeefgZdd�Zdd�Zdd�Zdd�Zd	S)
�
CodeInfoTestscCs@d|_x0|jD]%\}}|jtj|�|�qWdS)Ni�)�maxDiff�
test_pairs�assertRegexr,�	code_info)rrr:r	r	r
�test_code_info0s	zCodeInfoTests.test_code_infocCs�d|_x�|jD]{\}}t��}tj|�WdQRX|j|j�|d�tj�}tj|d|�|j|j�|�qWdS)Ni��
r|)	r�r�rr,Z	show_coder�r.r(r))rrr:r2r	r	r
�test_show_code5s	zCodeInfoTests.test_show_codecCs|jttjt��dS)N)rprwr,r�rx)rr	r	r
�test_code_info_object?sz#CodeInfoTests.test_code_info_objectcCs|jtjd�d�dS)NrZ0x0)r9r,Zpretty_flags)rr	r	r
�test_pretty_flags_no_flagsBsz(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;dd��fdd�}t��ddgid�|S)Nr"r$cs8dd����fdd�}t�����|S)Nr%�cst����||�dS)N)r)rr�)rr�r~rr	r
�innerJszouter.<locals>.f.<locals>.inner)r)r~rr�)rr�)r~rr
r�Is!zouter.<locals>.frMrzHello world!)r)rr�r�r	)rr�r
�outerHsr�cCs�xDtd�D],}t|�|dkr,q
|dkr
Pq
Wtd�xD|r�t|�|d8}|dkrsqJ|dkrJPqJWtd�zIyddWntk
r�td�YnX|�}td	�WdQRXWdtd
�XdS)Nrr$r�zI 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)rU�dodgyr	r	r
�jumpyQs,

	



	r�rBr=Zopcode�d�argZargvalZargrepr�3�offsetZstarts_lineZis_jump_targetF�4ZLOAD_CLOSURE�rr�r�r<ZBUILD_TUPLE�frM��zouter.<locals>.fz'outer.<locals>.f'�ZMAKE_CLOSURE��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!'�0Z
CALL_FUNCTION�z7 positional, 0 keyword pair�3ZPOP_TOP�6rA�|�7�ZRETURN_VALUE�S�:�5�6r~rzouter.<locals>.f.<locals>.innerz!'outer.<locals>.f.<locals>.inner'r�z4 positional, 0 keyword pair�4z6 positional, 0 keyword pair�None��Z
SETUP_LOOP�x�D�Gzto 71rrZ10z1 positional, 0 keyword pairZGET_ITERZFOR_ITER�]�,�<zto 60�
rU����� Z
COMPARE_OP�k�<�#ZPOP_JUMP_IF_FALSE�r�&Z
JUMP_ABSOLUTE�q�)�/�>�2�5Z
BREAK_LOOP�P�8�9Z	POP_BLOCK�W�=zI can haz else clause?z'I can haz else clause?'�@�C�F�zto 142��J�M�V�Y�ZZINPLACE_SUBTRACT�`�a��j�s�m�p�v�y����z%Who let lolcatz into this test suite?z''Who let lolcatz into this test suite?'��Z
SETUP_FINALLY�z�I��zto 218�ZSETUP_EXCEPT�zto 160���0�ZBINARY_TRUE_DIVIDE���ZJUMP_FORWARD�n�zto 188�ZDUP_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���zto 214�ZEND_FINALLY�XZ
SETUP_WITH���zto 211�r������zNever reach thisz'Never reach this'����������ZWITH_CLEANUP_START�QZWITH_CLEANUP_FINISH�R������zOK, now we're donez"OK, now we're done"������������cCsdS)Nr	r	r	r	r
�simple-sr5c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�InstructionTestscCs)tjt�}|jt|�t�dS)N)r,�get_instructionsr5r9�list�expected_opinfo_simple)r�actualr	r	r
�test_default_first_line6sz(InstructionTests.test_default_first_linecCs/tjtdd�}|jt|�t�dS)N�
first_line)r,r7r5r9r8r9)rr:r	r	r
�test_first_line_set_to_None:sz,InstructionTests.test_first_line_set_to_NonecCs/tjtdt�}|jt|�t�dS)Nr<)r,r7r��expected_outer_liner9r8�expected_opinfo_outer)rr:r	r	r
�
test_outer>szInstructionTests.test_outercCsIt��t�}WdQRXtj|dt�}|jt|�t�dS)Nr<)rr�r,r7�expected_f_liner9r8�expected_opinfo_f)rr�r:r	r	r
�test_nestedBs
zInstructionTests.test_nestedcCsLt��t��}WdQRXtj|dt�}|jt|�t�dS)Nr<)rr�r,r7�expected_inner_liner9r8�expected_opinfo_inner)rr�r:r	r	r
�test_doubly_nestedHs
z#InstructionTests.test_doubly_nestedcCs/tjtdt�}|jt|�t�dS)Nr<)r,r7r��expected_jumpy_liner9r8�expected_opinfo_jumpy)rr:r	r	r
�
test_jumpyNszInstructionTests.test_jumpyN)	rrrr;r=r@rCrFrIr	r	r	r
r64sr6c@speZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�
BytecodeTestscCs�xettd�jdtjgD]E}|jd|��*tj|�}|j|jt	j
�WdQRXqW|jttjt
��dS)Nrza=1�obj)rrrr^�subTestr,�BytecodeZassertIsInstanceZcodeobj�types�CodeTyperprwrx)rrKr�r	r	r
�test_instantiationUs
%!z BytecodeTests.test_instantiationcCs�xzttd�jdtjgD]Z}|jd|��?ttj|��}ttj|��}|j	||�WdQRXqWdS)Nrza=1rK)
rrrr^rLr8r,rMr7r9)rrKZ
via_objectZ
via_generatorr	r	r
�test_iteration^s
%zBytecodeTests.test_iterationcCs/tjtdt�}|jt|�t�dS)Nr<)r,rMr�r>r9r8r?)rr:r	r	r
�test_explicit_first_lineesz&BytecodeTests.test_explicit_first_linecCs}tjt�j�dd�}djtjj�}|j||�tjtdd�j�dd�}|j|d�dS)Nr"z{:>3}r<i^Z350)r,rMr5�formatr^�co_firstlinenor9)rr:r:r	r	r
�test_source_line_in_disassemblyis
%z-BytecodeTests.test_source_line_in_disassemblycCsLd|_x<tjD]1\}}tj|�}|j|j�|�qWdS)Ni�)r�r�r�r,rMr��info)rrr:r�r	r	r
�	test_infors	zBytecodeTests.test_infocCs)tjt�j�}|j|t�dS)N)r,rMrr9rF)rr:r	r	r
�test_disassembledxszBytecodeTests.test_disassembledcCsNt�}tjj|�}x|jr3|j}qW|j|j|j�dS)N)r
r,rM�from_tracebackrr9Zcurrent_offsetru)rrr�r	r	r
�test_from_traceback|s
	
z!BytecodeTests.test_from_tracebackcCs5t�}tjj|�}|j|j�t�dS)N)r
r,rMrYr9�
dis_traceback)rrr�r	r	r
�test_from_traceback_dis�s	z%BytecodeTests.test_from_traceback_disN)rrrrPrQrRrUrWrXrZr\r	r	r	r
rJTs		rJ�__main__)r})N)UZtest.supportrZtest.bytecode_helperrZdifflibZunittestrmr,r(r5rNr*r
rsrtZTRACEBACK_CODErrr^rTrdrfrrjrrhrrbrrFr`r!rHr#�__file__rKrSrTrWrXrYrZr[r\r[r&ZTestCaser'r{�flags�optimizer�rr�r��__func__�	co_constsr�r�r�r�r�r�r�r�r�r�r>Z_line_offsetZ
code_object_frAZcode_object_innerrDrGZInstruction�reprr?rBrErHr5r9r6rJ�mainr	r	r	r
�<module>s�


	




	$



| 
#	


	66666<66666666666666<6666666<66666666666<6666666666<666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666<<< 4