
    dafL                     +   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlZd Z e       j                   j"                  Z G d d      Zdej(                  j*                  j,                  ej(                  j*                  j,                  dz   fz  Zd	Zd
ej2                  j*                  j,                  ej2                  j*                  j,                  dz   fz  Zdej6                  j*                  j,                  ej6                  j*                  j,                  dz   fz  Zdej(                  j:                  dedej2                  j:                  dedej6                  j:                  dedZd Zdej*                  j,                  ej*                  j,                  dz   ej*                  j,                  dz   fz  Z dZ!d Z"de"j*                  j,                  e"j*                  j,                  dz   e"j*                  j,                  dz   e"j*                  j,                  dz   e"j*                  j,                  dz   e"j*                  j,                  dz   fz  Z#g fdZ$de$j*                  j,                  e$j*                  j,                  dz   e%e$j*                  j,                  dz   e$j*                  j,                  dz   e$j*                  j,                  dz   fz  Z&d Z'e'j*                  jQ                  d      e'_        dZ) e*g d      Z+dZ, e*ejZ                  dejZ                  dejZ                  dej\                  d    d!g      Z/d"Z0d# Z1d$ Z2d%e2j*                  j,                  e2j*                  j,                  dz   fz  Z3d&Z4d'Z5d(Z6d)Z7d*Z8d+Z9d,Z:d-Z;d.Z<d/Z=d0Z>d1Z?d2Z@d3ZAd4ej,                  ej,                  dz   ej,                  dz   ej,                  d5z   ej,                  dz   ej,                  d6z   ej,                  d5z   ej,                  dz   fz  ZBd7 ZCd8eCj*                  j,                  eCj*                  j,                  dz   fz  ZDd9 ZEd:eEj*                  j,                  eEj*                  j,                  dz   eEj*                  j,                  dz   eEj*                  j,                  dz   eEj*                  j,                  dz   eEj*                  j,                  dz   eEj*                  j,                  dz   fz  ZFd; ZGd<eGj*                  j,                  eGj*                  j,                  dz   eGj*                  j,                  dz   eGj*                  j,                  dz   eGj*                  j,                  dz   eGj*                  j,                  dz   eGj*                  j,                  dz   fz  ZHd= ZId> ZJd?eIj*                  j,                  eIj*                  j,                  dz   eIj*                  j,                  dz   eIj*                  j,                  d6z   fz  ZKd@eJj*                  j,                  eJj*                  j,                  dz   eJj*                  j,                  dz   eJj*                  j,                  d6z   fz  ZLdA ZMdB ZNdC ZOdD ZPdEePj*                  j,                  ePj*                  j,                  dz   e%ePj*                  j,                  dz   ePj*                  j,                  d6z   fz  ZQdFeQe%ePj*                  j,                  dz   ePj*                  j,                  dz   ePj*                  j,                  dz   e%ePj*                  j,                  dz   fz  ZRdGeRe%ePj*                  j,                  dz   ePj*                  j,                  dz   fz  ZSdvdHZTdIeTj*                  j,                  eTj*                  j,                  dz   eTj*                  j,                  dz   fz  ZUdJ ZVdKeVj*                  j,                  eVj*                  j,                  dz   eVj*                  j,                  dz   eVj*                  j,                  dz   fz  ZWdL ZXdMeXj*                  j,                  eXj*                  j,                  dz   fz  ZYdZZ G dN dOej                        Z\ G dP dQe\      Z] G dR dSe]      Z^ej                  j                  dTZandUZadVea dWZbecdwg dYdZ       Zdd[Zeedj                  j*                  j                  d   Zhd\Zid]Zjd^Zkd_Zld` ZmdaZn G db dcej                        ZodxddZpde ZqdZrepj*                  j,                  dz
  Zsepj*                  j                  d   Ztetj,                  esz
  Zuetj                  d   Zvevj,                  esz
  ZwdZxdf Zydg Zzej                  Z{ e{dhdid djdjd ddkdl	       e{dhdiddmdmdddkdl	       e{dndod d dpd6ddkdl	       e{dqdrd5dsdtduddkdl	       e{dvdwd djdjdxddkdl	       e{dvdwddmdmdyddkdl	       e{dzd{dddpd|ddkdl	       e{dqdrdet e|et      d}ddkdl	       e{d~dddddddkdl	       e{ddddddddkdl	       e{ddddddddkdl	       e{ddd djdjdddkdl	       e{ddddmdmdddkdl	       e{dqdrddpddddkdl	       e{dqdrddddddkdl	       e{ddd d dpdddkdl	       e{ddd d dpdddkdl	       e{dqdrd6dddddkdl	       e{dddddpdddkdl	       e{dddddpdddkdl	       e{dddddddxdkdl	       e{dddddpdddkdl	      gZ} e{dddddpd ddkdl	       e{dhdid dddddkdl	       e{dhdidddd6ddkdl	       e{dndod d dpduddkdl	       e{dqdrddddxddkdl	       e{dvdwddjdjdyddkdl	       e{dvdwd6dmdmd|ddkdl	       e{dvdwd ddd}ddkdl	       e{dvdwddddddkdl	       e{dzd{d6d6dpdddkdl	       e{dqdrdev e|ev      dddkdl	       e{d~dddddddkdl	       e{ddddddddkdl	       e{ddddddd5dkdl	       e{ddddjdjdddkdl	       e{ddd6dmdmdddkdl	       e{ddd dddddkdl	       e{ddddddddkdl	       e{ddd6d6dpdddkdl	       e{dddddpdddkdl	       e{dddddddudkdl	       e{dddddpdddkdl	      gZ~ e{ddd6d6dpd ddkdl	       e{dndod d dpdddkdl	       e{dddddd6d6dkdl	       e{ddddjdjd}ddkdl	       e{ddddmdmdddkdl	       e{ddd6dddddkdl	       e{ddd5dddddkdl	       e{ddd dddddkdl	       e{ddddddddkdl	       e{dddududpdddkdl	       e{dddddpdddkdl	       e{ddd dddddkdl	      gZg  e{dndod d dpd ddkdl	       e{ddddddddkdl	       e{dqdrddydd|ddkdl	       e{dddddpd}ddkdl	       e{dddddpdddkdl	       e{ddddddddXdl	       e{ddd dddddkdl	       e{ddddddd6dkdl	       e{ddd dddddkdl	       e{dddddpdddkdl	       e{dddddpdddkdl	       e{ddd dddd5dkdl	       e{dqdrdd6ddddkdl	       e{ddddddddkdl	       e{ddddddddkdl	       e{dddddddudkdl	       e{ddd dddddXdl	       e{dqdrdduddddkdl	       e{ddddddddkdl	       e{ddddddddkdl	       e{ddddddddkdl	       e{dddddpddxdXdl	       e{d dd|dddddkdl	       e{dd6dddpdddXdl	       e{dddddddydkdl	       e{dqdrd6dddddkdl	       e{dddddpdddkdl	       e{dddddpd{ddkdl	       e{ddd dddddXdl	       e{ddddddddkdl	       e{ddddddd|dXdl	       e{ddd dddddkdl	       e{dddddpdddkdl	       e{dddddpdddkdl	       e{ddd dddddkdl	       e{dqdrd5dddddkdl	       e{ddddddddkdl	       e{ddd dddddkdl	       e{ddd dddd}dkdl	       e{dqdrdduddddkdl	       e{ddddddddkdl	       e{ddddddddkdl	       e{ddddddddkdl	       e{ddd dddddXdl	       e{dqdrdd6ddddkdl	       e{ddddddddkdl	       e{ddddd dddkdl	       e{d dd}dddddkdl	       e{ddd dddddXdl	       e{ddddddddkdl	       e{ddddddddkdl	       e{ddddddd	dXdl	       e{dqdrdud
ddddkdl	       e{dddddpdddkdl	       e{dddddpdddkdl	       e{dddddpdddXdl	       e{dqdrd5dddddkdl	       e{dqdrdd ddddkdl	       e{ddddddddkdl	       e{dddddpdddkdl	       e{ddd dddddkdl	       e{dddddpdddkdl	       e{ddddddddkdl	       e{ddddddddkdl	       e{dqdrdxdd d!ddkdl	       e{dddddpd"ddkdl	       e{dddddpd#ddkdl	       e{dqdrd ddd$ddkdl	       e{dqdrd ddd%ddkdl	       e{dqdrd ddd&ddkdl	       e{dddddpd'ddkdl	       e{dddddpd(ddkdl	       e{dddddd)ddXdl	       e{dqdrdyd*d+d,ddkdl	       e{dddddpd-ddkdl	       e{dddddpd.ddkdl	       e{ddd ddd/ddkdl	       e{d0d1dddpd2ddkdl	       e{d3d4dddpd5ddkdl	       e{dddd6d7d8ddkdl	       e{d9d:dddpd;ddkdl	       e{dddddpd6ddXdl	       e{d<d=dddpd>ddkdl	       e{dddddpd?ddkdl	       e{dddddpd@ddkdl	       e{dd͐dd)dAdBddkdl	       e{dCddddpdDddkdl	       e{d<d=dddpdEddkdl	       e{d9d:dddpdFddkdl	       e{d0d1dddpdGddkdl	       e{ddd6dHdHdIddkdl	       e{dJddddpdKddkdl	       e{ddd}dLdMdNddkdl	       e{dddddpdOddkdl	       e{ddddddPddkdl	       e{dqdrddQdRdSddkdl	       e{dddddpdTddkdl	       e{dddddpdUddkdl	       e{d<d=dddpdVddkdl	       e{dd͐dWd)dAdXddkdl	       e{d9d:d d dpdLddXdl	       e{dCddddpdYddkdl	       e{d<d=dddpdZddkdl	       e{d9d:dddpd[ddkdl	       e{d0d1dddpd\ddkdl	       e{dddddd]ddkdl	       e{dqdrdyd*d+d^ddkdl	       e{dddddpd_ddkdl	       e{dddddpd`ddkdl	       e{d9d:d d dpdaddkdl	       e{dCddddpdbddkdl	       e{d<d=dddpdcddkdl	       e{d9d:dddpddddkdl	      Zde Z e{dndod d dpd ej*                  j,                  dkdl	       e{ddd dddddkf      gZ G dg dhe      Z G di dje      Z G dk dlee\      Z G dm dne      Z G do dpej                        Z G dq dre\      Z G ds dte      Zeduk(  r ej                          yy(y      N)captured_stdoutrequires_debug_rangesrequires_specializationcpython_only)BytecodeTestCasec                  d    d }  |        }|j                   r|j                   }|j                   r|S )Nc                  X    	 ddz   S # t         $ r} | j                  }Y d } ~ |S d } ~ ww xY w)N   r   )	Exception__traceback__)etbs     (/root/Python-3.12.4/Lib/test/test_dis.py_errorzget_tb.<locals>._error   s5    	!E 	  	!B		!s   	 	)$))tb_next)r   r   s     r   get_tbr      s.     
B
**ZZ **I    c                   2    e Zd Zd Zed        Zed        Zy)_Cc                     |dk(  | _         y Nr
   x)selfr   s     r   __init__z_C.__init__!   s    ar   c                     | dk(  } y r    r   s    r   smz_C.sm$   s    Fr   c                     |dk(  | _         y r   r   )clsr   s     r   cmz_C.cm(   s    Qr   N)__name__
__module____qualname__r   staticmethodr   classmethodr!   r   r   r   r   r       s/        r   r   a*  %3d        RESUME                   0

%3d        LOAD_FAST                1 (x)
           LOAD_CONST               1 (1)
           COMPARE_OP              40 (==)
           LOAD_FAST                0 (self)
           STORE_ATTR               0 (x)
           RETURN_CONST             0 (None)
r
   z       RESUME                   0
       LOAD_FAST                1
       LOAD_CONST               1
       COMPARE_OP              40 (==)
       LOAD_FAST                0
       STORE_ATTR               0
       RETURN_CONST             0
a)  %3d        RESUME                   0

%3d        LOAD_FAST                1 (x)
           LOAD_CONST               1 (1)
           COMPARE_OP              40 (==)
           LOAD_FAST                0 (cls)
           STORE_ATTR               0 (x)
           RETURN_CONST             0 (None)
   z%3d        RESUME                   0

%3d        LOAD_FAST                0 (x)
           LOAD_CONST               1 (1)
           COMPARE_OP              40 (==)
           STORE_FAST               0 (x)
           RETURN_CONST             0 (None)
zDisassembly of z:
z
Disassembly of 
c                     t        |        yr   print)as    r   _fr-   b   s    	!Hr   z%3d        RESUME                   0

%3d        LOAD_GLOBAL              1 (NULL + print)
           LOAD_FAST                0 (a)
           CALL                     1
           POP_TOP

%3d        RETURN_CONST             1 (1)
z       RESUME                   0
       LOAD_GLOBAL              1
       LOAD_FAST                0
       CALL                     1
       POP_TOP
       RETURN_CONST             1
c                  &    t        dd      D ]  }  y )Nr
   
   range)ress    r   	bug708901r3   ~   s    Q r   a  %3d        RESUME                   0

%3d        LOAD_GLOBAL              1 (NULL + range)
           LOAD_CONST               1 (1)

%3d        LOAD_CONST               2 (10)

%3d        CALL                     2
           GET_ITER
        >> FOR_ITER                 2 (to 34)
           STORE_FAST               0 (res)

%3d        JUMP_BACKWARD            4 (to 26)

%3d     >> END_FOR
           RETURN_CONST             0 (None)
   c                 $    J d | D        dz          )Nc              3       K   | ]  }|  y wNr   ).0ss     r   	<genexpr>zbug1333982.<locals>.<genexpr>   s     ~a~s   r
   r   r   s    r   
bug1333982r;      s    ~1~ 1r   a  %3d        RESUME                   0

%3d        LOAD_ASSERTION_ERROR
           LOAD_CONST               1 (<code object <genexpr> at 0x..., file "%s", line %d>)
           MAKE_FUNCTION            0
           LOAD_FAST                0 (x)
           GET_ITER
           CALL                     0

%3d        LOAD_CONST               2 (1)

%3d        BINARY_OP                0 (+)
           CALL                     0
           RAISE_VARARGS            1
c                       y r7   r   r   r   r   bug42562r=          r      co_linetablezK       RESUME                   0
       RETURN_CONST             0 (None)
)
   r
   	      rB   r
   d   )   S   r   z       EXTENDED_ARG             1
       NOP
       EXTENDED_ARG             1
       LOAD_CONST             297
       RETURN_VALUE
rD   JUMP_FORWARD   z    >> EXTENDED_ARG           255
       EXTENDED_ARG         65535
       EXTENDED_ARG         16777215
       JUMP_FORWARD            -4 (to 0)
c                      y r7   r   )r,   bcs      r   func_w_kwargsrM      r>   r   c                       t        ddd       y )Nr
   r'      rL   )rM   r   r   r   wrap_func_w_kwargsrQ      s    !Q!r   aw  %3d        RESUME                   0

%3d        LOAD_GLOBAL              1 (NULL + func_w_kwargs)
           LOAD_CONST               1 (1)
           LOAD_CONST               2 (2)
           LOAD_CONST               3 (5)
           KW_NAMES                 4 (('c',))
           CALL                     3
           POP_TOP
           RETURN_CONST             0 (None)
a+    0        RESUME                   0

  1        LOAD_CONST               0 (0)
           LOAD_CONST               1 (('*',))
           IMPORT_NAME              0 (math)
           CALL_INTRINSIC_1         2 (INTRINSIC_IMPORT_STAR)
           POP_TOP
           RETURN_CONST             2 (None)
z  0        RESUME                   0

  1        LOAD_NAME                0 (a)
           CALL_INTRINSIC_1         5 (INTRINSIC_UNARY_POSITIVE)
           RETURN_VALUE
z  0        RESUME                   0

  1        BUILD_LIST               0
           LOAD_NAME                0 (a)
           LIST_EXTEND              1
           CALL_INTRINSIC_1         6 (INTRINSIC_LIST_TO_TUPLE)
           RETURN_VALUE
z  1        RESUME                   0

%3d        LOAD_GLOBAL              0 (spam)
           POP_TOP
           RETURN_CONST             0 (None)
z   1        RESUME                   0

%4d        LOAD_GLOBAL              0 (spam)
            POP_TOP
            RETURN_CONST             0 (None)
zDisassembly of f:
  4        RESUME                   0
           RETURN_CONST             0 (None)

Disassembly of g:
  5        RESUME                   0
           RETURN_CONST             0 (None)

zx + 1z  0        RESUME                   0

  1        LOAD_NAME                0 (x)
           LOAD_CONST               0 (1)
           BINARY_OP                0 (+)
           RETURN_VALUE
	x = x + 1z  0        RESUME                   0

  1        LOAD_NAME                0 (x)
           LOAD_CONST               0 (1)
           BINARY_OP                0 (+)
           STORE_NAME               0 (x)
           RETURN_CONST             1 (None)
z+
x: int = 1
y: fun(1)
lst[fun(0)]: int = 1
a    0        RESUME                   0

  2        SETUP_ANNOTATIONS
           LOAD_CONST               0 (1)
           STORE_NAME               0 (x)
           LOAD_NAME                1 (int)
           LOAD_NAME                2 (__annotations__)
           LOAD_CONST               1 ('x')
           STORE_SUBSCR

  3        PUSH_NULL
           LOAD_NAME                3 (fun)
           LOAD_CONST               0 (1)
           CALL                     1
           LOAD_NAME                2 (__annotations__)
           LOAD_CONST               2 ('y')
           STORE_SUBSCR

  4        LOAD_CONST               0 (1)
           LOAD_NAME                4 (lst)
           PUSH_NULL
           LOAD_NAME                3 (fun)
           LOAD_CONST               3 (0)
           CALL                     1
           STORE_SUBSCR
           LOAD_NAME                1 (int)
           POP_TOP
           RETURN_CONST             4 (None)
zx = 0
while 1:
    x += 1ac    0        RESUME                   0

  1        LOAD_CONST               0 (0)
           STORE_NAME               0 (x)

  2        NOP

  3     >> LOAD_NAME                0 (x)
           LOAD_CONST               1 (1)
           BINARY_OP               13 (+=)
           STORE_NAME               0 (x)

  2        JUMP_BACKWARD            6 (to 8)
ay  %3d        RESUME                   0

%3d        NOP

%3d        LOAD_CONST               1 (1)
           LOAD_CONST               2 (0)
    -->    BINARY_OP               11 (/)
           POP_TOP

%3d        LOAD_FAST_CHECK          1 (tb)
           RETURN_VALUE
        >> PUSH_EXC_INFO

%3d        LOAD_GLOBAL              0 (Exception)
           CHECK_EXC_MATCH
           POP_JUMP_IF_FALSE       23 (to 80)
           STORE_FAST               0 (e)

%3d        LOAD_FAST                0 (e)
           LOAD_ATTR                2 (__traceback__)
           STORE_FAST               1 (tb)
           POP_EXCEPT
           LOAD_CONST               0 (None)
           STORE_FAST               0 (e)
           DELETE_FAST              0 (e)

%3d        LOAD_FAST                1 (tb)
           RETURN_VALUE
        >> LOAD_CONST               0 (None)
           STORE_FAST               0 (e)
           DELETE_FAST              0 (e)
           RERAISE                  1

%3d     >> RERAISE                  0
        >> COPY                     3
           POP_EXCEPT
           RERAISE                  1
ExceptionTable:
4 rows
rO      c                      |  d|dd|d|dS )N 4r   r,   rK   rL   ds       r   _fstringrY     s#    S!AauAa!W%%r   a  %3d        RESUME                   0

%3d        LOAD_FAST                0 (a)
           FORMAT_VALUE             0
           LOAD_CONST               1 (' ')
           LOAD_FAST                1 (b)
           LOAD_CONST               2 ('4')
           FORMAT_VALUE             4 (with format)
           LOAD_CONST               1 (' ')
           LOAD_FAST                2 (c)
           FORMAT_VALUE             2 (repr)
           LOAD_CONST               1 (' ')
           LOAD_FAST                3 (d)
           LOAD_CONST               2 ('4')
           FORMAT_VALUE             6 (repr, with format)
           BUILD_STRING             7
           RETURN_VALUE
c                 >    | 5  d}d d d        d}y # 1 sw Y   d}y xY wNr
   r'   r   rL   r   ys      r   _withr^     s$    	
 	A	As   a  %3d        RESUME                   0

%3d        LOAD_FAST                0 (c)
           BEFORE_WITH
           POP_TOP

%3d        LOAD_CONST               1 (1)
           STORE_FAST               1 (x)

%3d        LOAD_CONST               0 (None)
           LOAD_CONST               0 (None)
           LOAD_CONST               0 (None)
           CALL                     2
           POP_TOP

%3d        LOAD_CONST               2 (2)
           STORE_FAST               2 (y)
           RETURN_CONST             0 (None)

%3d     >> PUSH_EXC_INFO
           WITH_EXCEPT_START
           POP_JUMP_IF_TRUE         1 (to 42)
           RERAISE                  2
        >> POP_TOP
           POP_EXCEPT
           POP_TOP
           POP_TOP

%3d        LOAD_CONST               2 (2)
           STORE_FAST               2 (y)
           RETURN_CONST             0 (None)
        >> COPY                     3
           POP_EXCEPT
           RERAISE                  1
ExceptionTable:
2 rows
c                    K   | 4 d {    d}d d d       d {    d}y 7 7 	# 1 d {  7  sw Y   d}y xY wwr[   r   r\   s      r   
_asyncwithr`     sG        	A    	As0   >#>'>%>>;0;	>aq  %3d        RETURN_GENERATOR
           POP_TOP
           RESUME                   0

%3d        LOAD_FAST                0 (c)
           BEFORE_ASYNC_WITH
           GET_AWAITABLE            1
           LOAD_CONST               0 (None)
        >> SEND                     3 (to 24)
           YIELD_VALUE              2
           RESUME                   3
           JUMP_BACKWARD_NO_INTERRUPT     5 (to 14)
        >> END_SEND
           POP_TOP

%3d        LOAD_CONST               1 (1)
           STORE_FAST               1 (x)

%3d        LOAD_CONST               0 (None)
           LOAD_CONST               0 (None)
           LOAD_CONST               0 (None)
           CALL                     2
           GET_AWAITABLE            2
           LOAD_CONST               0 (None)
        >> SEND                     3 (to 60)
           YIELD_VALUE              2
           RESUME                   3
           JUMP_BACKWARD_NO_INTERRUPT     5 (to 50)
        >> END_SEND
           POP_TOP

%3d        LOAD_CONST               2 (2)
           STORE_FAST               2 (y)
           RETURN_CONST             0 (None)

%3d     >> CLEANUP_THROW
           JUMP_BACKWARD           25 (to 24)
        >> CLEANUP_THROW
           JUMP_BACKWARD            9 (to 60)
        >> PUSH_EXC_INFO
           WITH_EXCEPT_START
           GET_AWAITABLE            2
           LOAD_CONST               0 (None)
        >> SEND                     4 (to 98)
           YIELD_VALUE              3
           RESUME                   3
           JUMP_BACKWARD_NO_INTERRUPT     5 (to 86)
        >> CLEANUP_THROW
        >> END_SEND
           POP_JUMP_IF_TRUE         1 (to 104)
           RERAISE                  2
        >> POP_TOP
           POP_EXCEPT
           POP_TOP
           POP_TOP

%3d        LOAD_CONST               2 (2)
           STORE_FAST               2 (y)
           RETURN_CONST             0 (None)
        >> COPY                     3
           POP_EXCEPT
           RERAISE                  1
        >> CALL_INTRINSIC_1         3 (INTRINSIC_STOPITERATION_ERROR)
           RERAISE                  1
ExceptionTable:
12 rows
c                 .    	 |  |        S #  |        w xY wr7   r   r,   rK   s     r   _tryfinallyrc   S      	s    	c                 .    	 	  |         y#  |         w xY wr   r   )rK   s    r   _tryfinallyconstrf   Y  rd   s   	a"  %3d        RESUME                   0

%3d        NOP

%3d        LOAD_FAST                0 (a)

%3d        PUSH_NULL
           LOAD_FAST                1 (b)
           CALL                     0
           POP_TOP
           RETURN_VALUE
        >> PUSH_EXC_INFO
           PUSH_NULL
           LOAD_FAST                1 (b)
           CALL                     0
           POP_TOP
           RERAISE                  0
        >> COPY                     3
           POP_EXCEPT
           RERAISE                  1
ExceptionTable:
2 rows
a  %3d        RESUME                   0

%3d        NOP

%3d        NOP

%3d        PUSH_NULL
           LOAD_FAST                0 (b)
           CALL                     0
           POP_TOP
           RETURN_CONST             1 (1)
           PUSH_EXC_INFO
           PUSH_NULL
           LOAD_FAST                0 (b)
           CALL                     0
           POP_TOP
           RERAISE                  0
        >> COPY                     3
           POP_EXCEPT
           RERAISE                  1
ExceptionTable:
1 row
c              #      K   |  y wr7   r   r   s    r   _grh     s     
Gs   c                   K   |  y wr7   r   r   s    r   _agrj     s     
Gs   	c                 <   K   t        |       2 3 d {   }
7 6 y wr7   )rj   )r   items     r   _corm     s$     !f  dfs   c                       fd}|S )Nc                 .     t         fdD              S )funcdocc              3   (   K   | ]	  }|z     y wr7   r   )r8   zr   s     r   r:   z"_h.<locals>.foo.<locals>.<genexpr>  s     %aAE%   )listr   r]   s   `r   fooz_h.<locals>.foo  s    %1%%%r   r   )r]   rv   s   ` r   _hrw     s    & Jr   a             MAKE_CELL                0 (y)

%3d        RESUME                   0

%3d        LOAD_CLOSURE             0 (y)
           BUILD_TUPLE              1
           LOAD_CONST               1 (<code object foo at 0x..., file "%s", line %d>)
           MAKE_FUNCTION            8 (closure)
           STORE_FAST               1 (foo)

%3d        LOAD_FAST                1 (foo)
           RETURN_VALUE
am  %s
Disassembly of <code object foo at 0x..., file "%s", line %d>:
           COPY_FREE_VARS           1
           MAKE_CELL                0 (x)

%3d        RESUME                   0

%3d        LOAD_GLOBAL              1 (NULL + list)
           LOAD_CLOSURE             0 (x)
           BUILD_TUPLE              1
           LOAD_CONST               1 (<code object <genexpr> at 0x..., file "%s", line %d>)
           MAKE_FUNCTION            8 (closure)
           LOAD_DEREF               1 (y)
           GET_ITER
           CALL                     0
           CALL                     1
           RETURN_VALUE
a  %s
Disassembly of <code object <genexpr> at 0x..., file "%s", line %d>:
           COPY_FREE_VARS           1

%3d        RETURN_GENERATOR
           POP_TOP
           RESUME                   0
           LOAD_FAST                0 (.0)
        >> FOR_ITER                 9 (to 32)
           STORE_FAST               1 (z)
           LOAD_DEREF               2 (x)
           LOAD_FAST                1 (z)
           BINARY_OP                0 (+)
           YIELD_VALUE              1
           RESUME                   1
           POP_TOP
           JUMP_BACKWARD           11 (to 10)
        >> END_FOR
           RETURN_CONST             0 (None)
        >> CALL_INTRINSIC_1         3 (INTRINSIC_STOPITERATION_ERROR)
           RERAISE                  1
ExceptionTable:
1 row
c                     | |}}||fS r7   r   )r   r]   r,   rK   s       r   	load_testry     s    aqAa4Kr   a  %3d           0 RESUME                   0

%3d           2 LOAD_FAST__LOAD_FAST     0 (x)
              4 LOAD_FAST                1 (y)
              6 STORE_FAST__STORE_FAST     3 (b)
              8 STORE_FAST__LOAD_FAST     2 (a)

%3d          10 LOAD_FAST__LOAD_FAST     2 (a)
             12 LOAD_FAST                3 (b)
             14 BUILD_TUPLE              2
             16 RETURN_VALUE
c                  2    g ddz  D ]  } t        |         y )N)r
   r'   r4   r4   ry   )is    r   	loop_testr}     s    ] !r   ar  %3d        RESUME                   0

%3d        BUILD_LIST               0
           LOAD_CONST               1 ((1, 2, 3))
           LIST_EXTEND              1
           LOAD_CONST               2 (3)
           BINARY_OP                5 (*)
           GET_ITER
        >> FOR_ITER_LIST           13 (to 46)
           STORE_FAST               0 (i)

%3d        LOAD_GLOBAL_MODULE       1 (NULL + load_test)
           LOAD_FAST                0 (i)
           CALL_PY_WITH_DEFAULTS     1
           POP_TOP
           JUMP_BACKWARD           15 (to 16)

%3d     >> END_FOR
           RETURN_CONST             0 (None)
c                      d^ } } y )N.r   )_s    r   extended_arg_quickr   %  s    EQr   aH  %3d           0 RESUME                   0

%3d           2 LOAD_CONST               1 (Ellipsis)
              4 EXTENDED_ARG             1
              6 UNPACK_EX              256
              8 STORE_FAST               0 (_)
             10 STORE_FAST               0 (_)
             12 RETURN_CONST             0 (None)
c                   6    e Zd ZdZd Zd Zd Zd Zd Zd	dZ	y)
DisTestBasez2Common utilities for DisTests and TestDisTracebackc                 0    t        j                  dd|      S )Nz\b0x[0-9A-Fa-f]+\bz0x...)resub)r   texts     r   strip_addresseszDisTestBase.strip_addresses9  s    vv+Wd;;r   c                     |D ]  }|s|j                  d      r n yd}||   dk(  r|dz  }||   dk(  r||   dk(  r|dz  }||   dk(  r|dz  }||   dk(  r|}||   dv r|dz  }||   dv r|dz
  |fS )	NDisassembly)r   r   rO   rU   r
   >r'   
0123456789)
startswith)r   lineslineoffsetends        r   find_offset_columnzDisTestBase.find_offset_column<  s     	DDOOM:	 F|s"aKF F|s"LCaKFF|s"aKF F|s"3i<'1HC 3i<'1uczr   c                     d}|j                         }| j                  |      \  }}|D ]R  }|s|j                  d      rd}|j                  d      r y t        |||       }| j	                  |||       ||z   }T y )Nr   r   r   )
splitlinesr   r   intassertGreaterEqual)	r   r   deltaexpected_offsetr   startr   r   r   s	            r   assert_offsets_increasingz%DisTestBase.assert_offsets_increasingN  s    !,,U3
s 
	-D}-"#{+eC)F##FOTB$unO
	-r   c                    d\  }}d}|D ]o  }t        j                  d|      }|j                         D cg c]  }t        |       c}\  }}	| j	                  |	|       | j                  ||       ||	}}|dz  }q |S c c}w )N)r   r   z  (\d+) to (\d+) -> \d+ \[\d+\]r
   )r   matchgroupsr   r   assertGreater)
r   r   
prev_startprev_endcountr   mgr   r   s
             r   !assert_exception_table_increasingz-DisTestBase.assert_exception_table_increasing^  s    %
H 	D;TBA*+((*5Q#a&5JE3##C/uh/#(#JQJE	  6s   A>c                    |j                  d      }| j                  |      \  }}g }t        |      }|D ]e  }|j                  d      r|j	                  |        nA|r|j                  d      r|j	                  |       L|j	                  |d | ||d  z          g | j                  |      }|r|j	                  | d|dkD  rdnd d       dj                  |      S )	NTr   r   z rowr
   r9    r(   )r   r   iterr   appendr   join)r   r   r   r   r   r2   r   num_rowss           r   strip_offsetszDisTestBase.strip_offsetsj  s    %,,U3
sU 	6D{+

4 4??=9

4 

4<$st*45	6 99%@JJ(4x!|'DBGHwws|r   c                     |s#| j                  |d       | j                  |      }||k7  r| j                  |      }| j                  ||       y )Nr'   )r   r   r   assertEqual)r   gotexpectedwith_offsetss       r   do_disassembly_comparez"DisTestBase.do_disassembly_compare|  sL    **32$$S)C(?&&s+Ch'r   NF)
r"   r#   r$   __doc__r   r   r   r   r   r   r   r   r   r   r   6  s#    8<$- 
$(r   r   c                      e Zd ZdZd1dZd2dZd3dZd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(e)e*fd'       Z+e,e-d(               Z.e,e-d)               Z/e,e-d*               Z0e,e-d+               Z1e,e-d,               Z2e,d-        Z3d. Z4e,d/        Z5e,d0        Z6y)4DisTestsNc                    t        j                         }t        j                  |      5  |rt	        j                  |fi | nt	        j
                  ||fi | d d d        |j                         S # 1 sw Y   |j                         S xY wr7   )ioStringIO
contextlibredirect_stdoutdisdisassemblegetvaluer   funclastiwrapperkwargsoutputs         r   get_disassemblyzDisTests.get_disassembly  sp    ''/ 	7''e6v6		7
   	7
   s   1A33Bc                 (    | j                  ||d      S )NF)r   )r   r   r   s      r   get_disassemble_as_stringz"DisTests.get_disassemble_as_string  s    ##D%77r   c                 t   d | _         | j                  |d      }| j                  |||       t        |d      rst	        j
                         }t        j                  |      5  t        j                  |j                         d d d        | j                  |j                         ||       y y # 1 sw Y   ,xY w)Nr   depth__code__)maxDiffr   r   hasattrr   r   r   r   r   discor   r   )r   r   r   r   r   	got_discos         r   do_disassembly_testzDisTests.do_disassembly_test  s    ""4q"1##C<@4$I++I6 )		$--()''	(:(:(<h(46	 %) )s   # B..B7c                    | j                  t        j                  d   d       | j                  t        j                  d   t        j                         | j                  t        j                  d   t        j
                         y )NNOPrC   
LOAD_CONST
STORE_NAME)r   r   opmapassertInhasconsthasnamer   s    r   
test_opmapzDisTests.test_opmap  sQ    5)1-cii-s||<cii-s{{;r   c                 l    | j                  t        j                  t        j                  d      d       y )N	LOAD_FAST)r   r   opnamer   r   s    r   test_opnamezDisTests.test_opname  s$    CIIk$:;[Ir   c                     | j                  t        j                  d   t        j                         | j                  t        j                  d   t        j                         y )NEXTENDED_ARGr   )r   r   r   r   HAVE_ARGUMENTr   s    r   test_boundarieszDisTests.test_boundaries  s@    >2C4D4DE<0#2C2CDr   c                    t        ddg      }t        t        j                        D ]  \  }}||v s|j	                  d      r| j                  |      5  t        j                  }|t        j                  v r|dt        j                  z   z  }| j                  t        |      |       d d d         y # 1 sw Y   xY w)NJUMP_BACKWARD_NO_INTERRUPTINSTRUMENTED_CALL_FUNCTION_EXINSTRUMENTED)r   r
   )set	enumerater   r   r   subTest_OPNAME_WIDTHhasarg_OPARG_WIDTHassertLessEquallen)r   long_opcodesopcoder   widths        r   test_widthszDisTests.test_widths  s    8;= >'

3 	9NFF%):):>)JV, 9))SZZ'Q!1!111E$$S[%8	9 9	99 9s   AB44B=	c                 8    | j                  t        t               y r7   )r   r-   dis_fr   s    r   test_diszDisTests.test_dis        U+r   c                 8    | j                  t        t               y r7   )r   r3   dis_bug708901r   s    r   test_bug_708901zDisTests.test_bug_708901  s      M:r   c                 :    	 | j                  t        t               y r7   )skipTestr   r;   dis_bug1333982r   s    r   test_bug_1333982zDisTests.test_bug_1333982  s      	  ^<r   c                 8    | j                  t        t               y r7   )r   r=   dis_bug42562r   s    r   test_bug_42562zDisTests.test_bug_42562  s      <8r   c                 8    | j                  t        t               y r7   )r   code_bug_45757dis_bug_45757r   s    r   test_bug_45757zDisTests.test_bug_45757  s      ?r   c                 8    | j                  t        t               y r7   )r   bug46724dis_bug46724r   s    r   test_bug_46724zDisTests.test_bug_46724  s      <8r   c                 8    | j                  t        t               y r7   )r   rQ   dis_kw_namesr   s    r   test_kw_nameszDisTests.test_kw_names  s      !3\Br   c                     | j                  dt               | j                  dt               | j                  dt               y )Nzfrom math import *z+az(*a,))r   dis_intrinsic_1_2dis_intrinsic_1_5dis_intrinsic_1_6r   s    r   test_intrinsic_1zDisTests.test_intrinsic_1  s6      !57HI  '89  *;<r   c                 F    | j                  d| j                  d             y )Nz8CALL_INTRINSIC_2         1 (INTRINSIC_PREP_RERAISE_STAR)ztry: pass
except* Exception: x)r   r   r   s    r   test_intrinsic_2zDisTests.test_intrinsic_2  s!    P**+LM	Or   c                    d }t        dd      D ]&  }t        |dz   z  }| j                   ||      |       ( t        ddd      D ]&  }t        |dz   z  }| j                   ||      |       ( t        ddd      D ]&  }t        |dz   z  }| j                   ||      |       ( dd	lm} | j                  |t               y )
Nc                 `    i }ddj                  dg| z  dgz         z   }t        ||       |d   S )Nzdef foo():
 r   z
 zspam
rv   r   execr   	namespacer   s      r   r   z'DisTests.test_big_linenos.<locals>.func  s<    I"RWWeWu_z-I%JJDy!U##r   r
   i,  r'     r/   i  r   )
dis_module)r1   _BIG_LINENO_FORMATr   _BIG_LINENO_FORMAT2testr  dis_module_expected_results)r   r   r|   r   r  s        r   test_big_linenoszDisTests.test_big_linenos  s    	$ q# 	8A)QU3H$$T!Wh7	8
 sD"% 	8A)QU3H$$T!Wh7	8 tT2& 	8A*a!e4H$$T!Wh7	8 	$  -HIr   c                     d | _         d }d }t        dd      D ]"  }| j                   ||       ||d      d       $ | j                   |d       |dd      d       | j                   |d       |dd      d       y )	Nc                 ^    i }ddj                  dg| z        z   dz   }t        ||       |d   S )Nzdef foo(x):
 ;rR   z

 return xrv   r  r  s      r   r   z'DisTests.test_big_offsets.<locals>.func  s;    I#chh}u/D&EEUDy!U##r   c                 
   d|dfz  g}|t        |       D cg c]'  }d|d|z  dz   |d|z  dz   |d|z  dz   |d|z  dz   fz  ) c}z  }|d|d| z  dz   |d| z  dz   fz  gz  }d	|d
   dd  z   |d
<   dj                  |      S c c}w )Nz+  1        %*d RESUME                   0

r   z           %*d LOAD_FAST                0 (x)
           %*d LOAD_CONST               1 (1)
           %*d BINARY_OP                0 (+)
           %*d STORE_FAST               0 (x)
r/   r'   rS      zK
  3        %*d LOAD_FAST                0 (x)
           %*d RETURN_VALUE
z  2r
   r4   r   )r1   r   )r   wr9   r|   s       r   r   z+DisTests.test_big_offsets.<locals>.expected  s     	!f A   ,( 
 	"Q$(Ar!taxBqD1HaA;< ( (A   	"U(Q,2e8a<(	) * *A
 1Q48#AaD771:(s   ,B r
   rO   rS   Ti  r  )r   r1   r   )r   r   r   r|   s       r   test_big_offsetszDisTests.test_big_offsets  s    	$	( q! 	DA$$T!Whq!ndC	D  cHS!,<dC  dXdA->Er   c                     | j                  t        t               | j                  t        t               | j                  t
        t               | j                  t        t               y r7   )	r   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_strr   s    r   test_disassemble_strzDisTests.test_disassemble_str  sF      <8  2EF  1CD  !24IJr   c                 `    | j                  t        j                  j                  t               y r7   )r   r-   r   co_codedis_f_co_coder   s    r   test_disassemble_byteszDisTests.test_disassemble_bytes   s      !4!4mDr   c                 8    | j                  t        t               y r7   )r   r   dis_cr   s    r   test_disassemble_classzDisTests.test_disassemble_class#  r   r   c                 V    | j                  t        d      j                  t               y r   )r   r   r   dis_c_instance_methodr   s    r    test_disassemble_instance_methodz)DisTests.test_disassemble_instance_method&  s      A1FGr   c                     t        d      j                  j                  j                  }| j	                  |t
               y r   )r   r   r   r1  r   dis_c_instance_method_bytes)r   method_bytecodes     r   &test_disassemble_instance_method_bytesz/DisTests.test_disassemble_instance_method_bytes)  s,    Q%..1199  2MNr   c                 L    | j                  t        j                  t               y r7   )r   r   r   dis_c_static_methodr   s    r   test_disassemble_static_methodz'DisTests.test_disassemble_static_method-  s      (;<r   c                 L    | j                  t        j                  t               y r7   )r   r   r!   dis_c_class_methodr   s    r   test_disassemble_class_methodz&DisTests.test_disassemble_class_method0  s      (:;r   c                     | j                  t              }| j                  t        d            }| j                  ||       y r   )r   rh   r   )r   gen_func_disas	gen_disass      r   test_disassemble_generatorz#DisTests.test_disassemble_generator3  s6    --b1((A/	N3r   c                     | j                  t              }| j                  t        d            }| j                  ||       y r   )r   rj   r   )r   agen_func_disas
agen_disass      r    test_disassemble_async_generatorz)DisTests.test_disassemble_async_generator8  s6    ..s3))#a&1
_5r   c                     | j                  t              }t        d      }|j                          | j                  |      }| j                  ||       y r   )r   rm   closer   )r   coro_func_disascoro
coro_disass       r   test_disassemble_coroutinez#DisTests.test_disassemble_coroutine=  sD    ..s31v

))$/
_5r   c                 8    | j                  t        t               y r7   )r   rY   dis_fstringr   s    r   test_disassemble_fstringz!DisTests.test_disassemble_fstringD  s      ;7r   c                 8    | j                  t        t               y r7   )r   r^   dis_withr   s    r   test_disassemble_withzDisTests.test_disassemble_withG  s      1r   c                 8    | j                  t        t               y r7   )r   r`   dis_asyncwithr   s    r   test_disassemble_asyncwithz#DisTests.test_disassemble_asyncwithJ  s      ];r   c                 l    | j                  t        t               | j                  t        t               y r7   )r   rc   dis_tryfinallyrf   dis_tryfinallyconstr   s    r   test_disassemble_try_finallyz%DisTests.test_disassemble_try_finallyM  s$      n=  !13FGr   c                     	 t         `	 t         `| j	                  t
        t        j                  d        y # t        $ r Y 8w xY w# t        $ r Y @w xY wr7   )syslast_excAttributeErrorlast_tracebackassertRaisesRuntimeErrorr   r   s    r   test_dis_nonezDisTests.test_dis_noneQ  sV    		" 	,6  		  		s    5 A 	A A	AAc                 *   d | _         	 t        `	 ddz   | j                  j                  j                  |j                        }| j                  d |d       y # t        $ r Y Uw xY w# t        $ r!}|j
                  }|t        _        Y d }~xd }~ww xY w)Nr
   r   T)r   r`  rc  rb  r   r   ra  r   tb_framef_codetb_lastir   )r   r   r   tb_diss       r   test_dis_tracebackzDisTests.test_dis_traceback\  s    	"	aC
 //0B0BBKKP  vt4  		
  	BCLL	s(   A A( 	A%$A%(	B1BBc                 ^    | j                  t        t        j                  t                      y r7   )rd  	TypeErrorr   objectr   s    r   test_dis_objectzDisTests.test_dis_objectl  s    )SWWfh7r   c                       fd} |t         d        |t        d        |t        d        |t        d        |t        d         |t               y )Nc                      j                   t        fi |}j                  |      }j                  |      }j	                  ||        y r7   )r   rw   r   r   r   )r   r   r   r   s      r   checkz2DisTests.test_disassemble_recursive.<locals>.checkp  sJ    &$&&r4V4C&&s+C$$S)CS(+r   r   r   r
   r'   r4   )dis_nested_0dis_nested_1dis_nested_2)r   rs  s   ` r   test_disassemble_recursivez#DisTests.test_disassemble_recursiveo  sD    	, 	l!$l!$l!$l!$l$'lr   c                     	 t        j                  dd       y # t        $ r%}| j                  |j                         Y d }~y d }~ww xY w)N)r   )r   _try_compiler   assertIsNone__context__)r   r   s     r   )test__try_compile_no_context_exc_on_errorz2DisTests.test__try_compile_no_context_exc_on_error}  s<    	-S"% 	-amm,,	-s    	AAAc                 2    t        |      D ]	  } |          y r7   r0   )ftimesr   s      r   code_quickenzDisTests.code_quicken  s    u 	AC	r   c                     | j                  d        | j                  t        d      }| j                  |t        d       y )Nc                      t        dd      S )Nr   r{   r   r   r   <lambda>z2DisTests.test_super_instructions.<locals>.<lambda>  s    )Aq/ r   Tadaptive)r  r   ry   r   dis_load_test_quickened_coder   r   s     r   test_super_instructionsz DisTests.test_super_instructions  s;     	12""9t"<##C)EtLr   c                 d   d}t        ddd      | j                  fd       | j                  d      }| j                  ||dz  d       t        dd	d      | j                  fd
       | j                  d      }| j                  ||dz  d       d}t        ddd      | j                  fd       | j                  d      }| j                  ||dz  d       t        ddd      | j                  fd       | j                  d      }| j                  ||dz  d       y )Nz  0           0 RESUME                   0

  1           2 LOAD_NAME                0 (a)
              4 LOAD_NAME                1 (b)
              6 %s
             10 RETURN_VALUE
za + bz<int>evalc                  $    t         i ddd      S )Nr
   r'   rb   r  )co_ints   r   r  z1DisTests.test_binary_specialize.<locals>.<lambda>  s    $vr3C"D r   Tr  zBINARY_OP_ADD_INT        0 (+)z	<unicode>c                  $    t         i ddd      S )Nr,   rK   rb   r  )
co_unicodes   r   r  z1DisTests.test_binary_specialize.<locals>.<lambda>  s    $z2Ss7K"L r   zBINARY_OP_ADD_UNICODE     0 (+)z  0           0 RESUME                   0

  1           2 LOAD_NAME                0 (a)
              4 LOAD_CONST               0 (0)
              6 %s
             10 RETURN_VALUE
za[0]z<list>c                  $    t         i ddgi      S )Nr,   r   r  )co_lists   r   r  z1DisTests.test_binary_specialize.<locals>.<lambda>  s    $wS1#J"? r   BINARY_SUBSCR_LIST_INTz<dict>c                  &    t         i dddii      S )Nr,   r   1r  )co_dicts   r   r  z1DisTests.test_binary_specialize.<locals>.<lambda>  s    $wS1c(O"D r   BINARY_SUBSCR_DICTcompiler  r   r   )r   binary_op_quickenr   binary_subscr_quickenr  r  r  r  s       @@@@r   test_binary_specializezDisTests.test_binary_specialize  sG    '62DE""6D"9##C):=])]_cdWk6:
LM"":"=##C):=^)^`de! &(F3?@""7T":##C)>AY)Y[_`&(F3DE""7T":##C)>AU)UW[\r   c                     d}t        ddd      | j                  fd       | j                  d      }| j                  ||d       y )Nz  0           0 RESUME                   0

  1           2 LOAD_CONST               0 ('a')
              4 LOAD_ATTR_SLOT           0 (__class__)
             24 RETURN_VALUE
z'a'.__class__r   r  c                      t         i i       S r7   r  cos   r   r  z4DisTests.test_load_attr_specialize.<locals>.<lambda>      $r2r"2 r   Tr  r  )r   load_attr_quickenr   r  s      @r   test_load_attr_specializez"DisTests.test_load_attr_specialize  sR     _b&123""2"5##C):DAr   c                     d}t        ddd      | j                  fd       | j                  d      }| j                  ||       y )Nz  0        RESUME                   0

  1        PUSH_NULL
           LOAD_NAME                0 (str)
           LOAD_CONST               0 (1)
           CALL_NO_KW_STR_1         1
           RETURN_VALUE
zstr(1)r   r  c                      t         i i       S r7   r  r  s   r   r  z/DisTests.test_call_specialize.<locals>.<lambda>  r  r   Tr  r  )r   call_quickenr   r  s      @r   test_call_specializezDisTests.test_call_specialize  sN     Xr6*23""2"5##C6r   c                     | j                  t        d       | j                  t        d      }| j                  |t               y )Nr
   Tr  )r  r}   r   r   dis_loop_test_quickened_coder  s     r   test_loop_quickenzDisTests.test_loop_quicken  s:     	)Q'""9t"<##C)EFr   c                 \    | j                  t              }| j                  |t        d       y )NT)r   r   r   dis_extended_arg_quick_coder  s     r   test_extended_arg_quickz DisTests.test_extended_arg_quick  s&    ""#56##C)DdKr   c              #      K   d }|r| j                  |       n|j                  j                         |_        t        j                  |d|      D ]   }|j
                  dk(  s|j                   " y w)Nc                  J    g } t        d      D ]  }| j                  |        y )N*   )r1   r   )lr|   s     r   r  z%DisTests.get_cached_values.<locals>.f  s%    A2Y r   T)show_cachesr  CACHE)r  r   replacer   get_instructionsr   argrepr)r   	quickenedr  r  instructions        r   get_cached_valueszDisTests.get_cached_values  sq     	 a  ++-AJ//4(
 	*K !!W,!)))		*s   A!A5$A5c           	      n   dD ]  }dD ]  }| j                  d|d|      5  |rd}nd}t        | j                  ||            }|D ]  }| j                  ||        d}d}| j	                  |j                  d      |       | j	                  t        |      |       d d d          y # 1 sw Y   xY w)	NFTz
quickened=z, adaptive=z^(\w+: \d+)?$z^(\w+: 0)?$      r   )r   rt   r  assertRegexr   r   r   )r   r  r  patterncachescachetotal_cachesempty_cachess           r   test_show_cacheszDisTests.test_show_caches  s    & 	@I) @\\ZYL8+">? @"2"0!$"8"8H"MNF!' 9((89#%L#$L$$V\\"%5|D$$S[,?@ @@	@@ @s   A<B++B4c                    d }t        j                  |d      D ].  }|j                  dk(  s|j                  dz
  }|j                  } n | j	                  d       | j                  |j                  d      }| j                  |j                  d      }| j                  |d	|        | j                  ||       y
)zp
        Make sure that with lasti pointing to CACHE, it still shows the current
        line correctly
        c                  "    t        t               y r7   )r+   r,   r   r   r   r  z2DisTests.test_show_currinstr_with_cache.<locals>.f  s	    !Hr   T)r  r  r'   z@Can't find a CACHE entry in the function provided to do the testF)r   r   z-->\s+N)	r   r  r   r   failr   r   r  r   )r   r  inst	op_offsetcache_offsetassem_opassem_caches          r   test_show_currinstr_with_cachez'DisTests.test_show_currinstr_with_cache  s    	 ((= 	ZD{{g% KK!O	#{{		Z IIXY''

)U'S**1::\SX*Y 	fYK#89;/r   r   T)r   r   )7r"   r#   r$   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r%  r/  r3  r6  r9  r=  r@  rC  rG  rK  rQ  rT  rW  rZ  r^  rf  rl  rp  rw  r}  r%   ADAPTIVE_WARMUP_DELAYr  r   r   r  r  r  r  r  r  r  r  r  r   r   r   r   r     s   G!8
6<
JE
9,;=9@9C=OJ0FBKE,HO=<4
6
682<H	75 8- 3   M  M
 #]  #]J B  B 7  7 G  G L L*  @ @  0 0r   r   c                       e Zd ZddZy)DisWithFileTestsc                     t        j                         }|r(t        j                  |fd|i| |j	                         S t        j                  ||fd|i| |j	                         S )Nfile)r   r   r   r   r   r   s         r   r   z DisWithFileTests.get_disassembly%  s\    GGD0v00    OOD%?f??  r   Nr  r"   r#   r$   r   r   r   r   r  r  "  s    !r   r  z0: Nonez60: 'Formatted details of methods, functions, or code.'zName:              code_info
Filename:          (.*)
Argument count:    1
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  1
Stack size:        \d+
Flags:             OPTIMIZED, NEWLOCALS
Constants:
   zN
Names:
   0: _format_code_info
   1: _get_code_object
Variable names:
   0: xT)r   c         	   /   R    
K   |f 
fd	
 |
f	 y w)Nc                 ,    t        | 	       y r7   r*   )	rL   r,   rK   rX   r   r  r   r]   rr   s	    r   r  ztricky.<locals>.fG  s    aAq!Q1a(r   r   )r,   rK   r   r]   rr   rL   rX   r   argskwdsr  s   ````` ``  @r   trickyr  E  s-      ) )
Q1aAq!
##s   'a  Name:              tricky
Filename:          (.*)
Argument count:    5
Positional-only arguments: 2
Kw-only arguments: 3
Number of locals:  10
Stack size:        \d+
Flags:             OPTIMIZED, NEWLOCALS, VARARGS, VARKEYWORDS, GENERATOR
Constants:
   0: None
   1: <code object f at (.*), file "(.*)", line (.*)>
Variable names:
   0: a
   1: b
   2: x
   3: y
   4: z
   5: c
   6: d
   7: e
   8: args
   9: kwds
Cell variables:
   0: [abedfxyz]
   1: [abedfxyz]
   2: [abedfxyz]
   3: [abedfxyz]
   4: [abedfxyz]
   5: [abedfxyz]aq  Filename:          (.*)
Argument count:    1
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  1
Stack size:        \d+
Flags:             OPTIMIZED, NEWLOCALS, NESTED
Constants:
   0: None
Names:
   0: print
Variable names:
   0: c
Free variables:
   0: [abedfxyz]
   1: [abedfxyz]
   2: [abedfxyz]
   3: [abedfxyz]
   4: [abedfxyz]
   5: [abedfxyz]zName:              <module>
Filename:          <disassembly>
Argument count:    0
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  0
Stack size:        \d+
Flags:             0x0
Constants:
   0: 1
Names:
   0: xzName:              <module>
Filename:          <disassembly>
Argument count:    0
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  0
Stack size:        \d+
Flags:             0x0
Constants:
   0: 1
   1: None
Names:
   0: xzName:              <module>
Filename:          <disassembly>
Argument count:    0
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  0
Stack size:        \d+
Flags:             0x0
Constants:
   0: 0
   1: 1
Names:
   0: xc                     K   d d {    t         2 3 d {   } 
7 7 6 t        4 d {  7  }d d d       d {  7   y # 1 d {  7  sw Y   y xY wwr   )rK   rL   )r,   rX   s     r   	async_defr    s>     
GGa 1As]   A
A!!A!A/AAAA AA
AAAa/  Name:              async_def
Filename:          (.*)
Argument count:    0
Positional-only arguments: 0
Kw-only arguments: 0
Number of locals:  2
Stack size:        \d+
Flags:             OPTIMIZED, NEWLOCALS, COROUTINE
Constants:
   0: None
   1: 1
Names:
   0: b
   1: c
Variable names:
   0: a
   1: dc                   f    e Zd Zej                  efeefee	fe
efeefeefeefgZd Zd Zd Zd Zy)CodeInfoTestsc                     d| _         | j                  D ]*  \  }}| j                  t        j                  |      |       , y Nr  )r   
test_pairsr  r   	code_info)r   r   r   s      r   test_code_infozCodeInfoTests.test_code_info  s9    ?? 	9KAxS]]1-x8	9r   c                 ~   d| _         | j                  D ]  \  }}t               5 }t        j                  |       d d d        | j                  j                         |dz          t        j                         }t        j                  ||       | j                  |j                         |        y # 1 sw Y   zxY w)Nr  r(   r  )	r   r  r   r   	show_coder  r   r   r   )r   r   r   r   s       r   test_show_codezCodeInfoTests.test_show_code  s    ?? 	:KAx " !fa !V__.>[[]FMM!&)V__.9	:! !s   B33B<	c                 ^    | j                  t        t        j                  t	                      y r7   )rd  rn  r   r  ro  r   s    r   test_code_info_objectz#CodeInfoTests.test_code_info_object  s    )S]]FH=r   c                 N    | j                  t        j                  d      d       y )Nr   0x0)r   r   pretty_flagsr   s    r   test_pretty_flags_no_flagsz(CodeInfoTests.test_pretty_flags_no_flags  s    ))!,e4r   N)r"   r#   r$   r   r  code_info_code_infor  code_info_trickyco_tricky_nested_fcode_info_tricky_nested_fr'  code_info_expr_strr)  code_info_simple_stmt_strr-  code_info_compound_stmt_strr  code_info_async_defr  r  r  r  r  r   r   r   r  r    s`    
}})* 45#$1256%&J9
:>5r   r  c           	      :     d fd	}t         ddg i d       |S )Nc                 :     d fd	}t                |S )Nc                 &    t        | |       y r7   r*   )r   r  r,   rK   rL   rX   s     r   innerzouter.<locals>.f.<locals>.inner  s    !Q1a#r   rO   r#  r*   )rL   rX   r  r,   rK   s   `` r   r  zouter.<locals>.f  s     	$ 	$aAqr   r   r
   Hello world!r4   rS   r*   )r,   rK   r  s   `` r   outerr    s#    
 
!QAr2~.Hr   c                  |   t        d      D ]  } t        |        | dk  r| dkD  s n t        d        rt        |        | dz  } | dkD  r| dk  rn| rt        d       	 ddz   | 5 }t        d       d d d        t        d
       y # 1 sw Y   xY w# t        $ r t        d	       Y .w xY w# t        d
       w xY w)Nr/   rS   r#  I can haz else clause?r
   %Who let lolcatz into this test suite?r   Never reach this%Here we go, here we go, here we go...OK, now we're done)r1   r+   ZeroDivisionError)r|   dodgys     r   jumpyr    s    2Y (aq5q5( 	&'
a	Qq5q5  	56$	A  	&%$%	& 	"#	& 	&  7567 	"#sB   !B &B. (B4B. BB. B+(B. *B++B. .B;c                 8    t        | j                  d             S N)	positions)str_replace)instrs    r   _stringify_instructionr    s     u~~~-..r   c            	         t        j                  t        t              } t	        ddj                  t        t        |             dd       t        j                  t               t              } t	        ddj                  t        t        |             dd       t        j                   t                      t              } t	        ddj                  t        t        |             dd       t        j                  t        t              } t	        d	dj                  t        t        |             dd       t        j                   t               y )
N
first_linezexpected_opinfo_outer = [
  z,
  z,
]r   )sepzexpected_opinfo_f = [
  zexpected_opinfo_inner = [
  zexpected_opinfo_jumpy = [
  )r   r  r  expected_outer_liner+   r   mapr  expected_f_lineexpected_inner_liner  expected_jumpy_line)_instructionss    r   _prepare_test_casesr  $  s    ((;NOM	
)
,,s1=A
BFPRT((_MM	
%
,,s1=A
BFPRT((?RSM	
)
,,s1=A
BFPRT((;NOM	
)
,,s1=A
BFPRTGGENr   	MAKE_CELL   r,   F)	r   r   argargvalr  r   starts_lineis_jump_targetr  rK   RESUME   r   r   rE   r  z(3, 4)r#  LOAD_CLOSURE      r/   BUILD_TUPLEf         MAKE_FUNCTION   rC   zdefaults, closure   
STORE_FAST}   r     LOAD_GLOBALt   r+   zNULL + printr  r  
LOAD_DEREF          z''"   r  $   
BUILD_LISTg   &   	BUILD_MAPi   (   r  z'Hello world!'r  CALL   ,   POP_TOP4   r   |   6   RETURN_VALUErG   8   COPY_FREE_VARS   rL   rX   r  z(5, 6)   r        r   RETURN_CONSTy   Noner1   zNULL + range10GET_ITERD   FOR_ITER]   P   zto 80r|      2   rV   
COMPARE_OPk   <POP_JUMP_IF_FALSEr   @   zto 64<   JUMP_BACKWARD   zto 24>   6B   r   POP_JUMP_IF_TRUEs   L   zto 76H   J   n   h   zto 104N   END_FORR   r  z'I can haz else clause?'\   ^   LOAD_FAST_CHECK            zto 170j   l   v   x            	BINARY_OPz      z-=         rB      zto 152                  zto 164      zto 192         zto 108      r  z''Who let lolcatz into this test suite?'         r         0   /            BEFORE_WITH5      r        r   z'Never reach this'                           r  z"OK, now we're done"i  i  i  i  PUSH_EXC_INFO#   i  WITH_EXCEPT_START1   i  i  zto 280i  RERAISEw   i  
POP_EXCEPTY   i  i  i  zto 248i   COPYi"  i$  i&  i(  r  i*  CHECK_EXC_MATCHi4  iT  zto 340i6  i8  i:  r  z''Here we go, here we go, here we go...'iD  iF  iN  iP  .   iR  iV  iX  iZ  i\  ^  ih  ij  ir  it  iv  ix  iz  c                       y r7   r   r   r   r   simpler    s    dr   )r   r   r  r  r  r   r  r  c                       e Zd Zd Zy)InstructionTestCasec                    |D cg c]  }|j                  d        }}|D cg c]  }|j                  d        }}| j                  ||       y c c}w c c}w r  )r
  r   )r   instrs_1instrs_2instr_1instr_2s        r   assertInstructionsEqualz+InstructionTestCase.assertInstructionsEqual  s]    DLMG$$t$4MMDLMG$$t$4MM8, NMs
   AAN)r"   r#   r$   r  r   r   r   r  r    s    -r   r  c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	 e
       d        Z e
       d	        Z e
       d
        Z xZS )InstructionTestsc                 ,    t        |   |  d | _        y r7   )superr   r   )r   r  	__class__s     r   r   zInstructionTests.__init__  s    $r   c                 t    t        j                  t              }| j                  t	        |      t
               y r7   r   r  r  r  rt   expected_opinfo_simpler   actuals     r   test_default_first_linez(InstructionTests.test_default_first_line  s'    %%f-$$T&\3IJr   c                 x    t        j                  t        d       }| j                  t	        |      t
               y Nr  r  r  s     r   test_first_line_set_to_Nonez,InstructionTests.test_first_line_set_to_None  s)    %%f>$$T&\3IJr   c                     t        j                  t        t              }| j	                  t        |      t               y r  )r   r  r  r  r  rt   expected_opinfo_outerr  s     r   
test_outerzInstructionTests.test_outer	  *    %%e8KL$$T&\3HIr   c                     t               5  t               }d d d        t        j                  t              }| j                  t        |      t               y # 1 sw Y   DxY wr  )r   r  r   r  r  r  rt   expected_opinfo_f)r   r  r  s      r   test_nestedzInstructionTests.test_nested  sK     	A	%%aOD$$T&\3DE	 	s   AA"c                     t               5   t                      }d d d        t        j                  t              }| j                  t        |      t               y # 1 sw Y   DxY wr  )r   r  r   r  r  r  rt   expected_opinfo_inner)r   r  r  s      r   test_doubly_nestedz#InstructionTests.test_doubly_nested  sP     	EGIE	%%e8KL$$T&\3HI	 	s   AA'c                     t        j                  t        t              }| j	                  t        |      t               y r  )r   r  r  r  r  rt   expected_opinfo_jumpyr  s     r   
test_jumpyzInstructionTests.test_jumpy  r  r   c                 P   t        ddd      }t        j                  |      D cg c]  }|j                   }}g d}| j	                  ||       |D cg c]0  }|j
                  |j                  |j                  |j                  f2 }}| j	                  ||       y c c}w c c}w )Nzf(
  x, y, z
)<test>r  )	)r   r
   r   r   r
   r
   r   r
   r  )r'   r'   r'   r4   )r'   r'   rO   r#  )r'   r'   r"  rC   r
   r4   r   r
   r  r  )	r  r   r  r  r   lineno
end_lineno
col_offsetend_col_offset)r   coder  r  r   posnamed_positionss          r   test_co_positionsz"InstructionTests.test_co_positions  s    )8V< --d3
 OO
	 


 	H- !
 ZZ9K9KL
 
 	(3+
"
s   B5B#c                     t        ddd      }|j                  d      }t        j                  |      }|D ]  }| j	                  |      5  |j
                  }| j                  t        |      d       |j                  dk(  r
	 d d d        V| j                  |j                         | j                  |j                         | j                  |j                         | j                  |j                         d d d         y # 1 sw Y   xY w)	Nzx, y, zr  r  r   r@   )r  rS   r  )r  r  r   r  r   r  r   r   r   r{  r  r  r  r  )r   r  code_without_location_tabler  r  r  s         r   test_co_positions_missing_infoz/InstructionTests.test_co_positions_missing_info7  s    y(F3&*lll&D#%%&AB! 		<K+6 <'11	  Y3%%1	< <
 !!)"2"23!!)"6"67!!)"6"67!!)":":;< <		<< <s   8DA,DD	c           	      F   d }|j                   }|j                  d d d   }t        j                  d   t	        fd|D              }t        |      |z
  }d||z  k  sJ d       dD ]  }dD ]  }| j                  d|d	|      5  t        ||j                         d
      D 	cg c]  \  }}	|s|k7  r|	 }
}}	t        j                  |||      D cg c]  }|j                   }}| j                  |
|       d d d          y c c}	}w c c}w # 1 sw Y   xY w)Nc              3      K   |dz  d| z  |z  z
  }| t         j                  |      z
  d| z  z   |r"| t         j                  |      z   d| z  z   y y w)Nr'   rS   )cmathsqrtrW   s       r   rootszEInstructionTests.test_co_positions_with_lots_of_caches.<locals>.rootsI  s`     1q1uqy A2

1%!a%00rEJJqM)a!e44 s   AAr'   r  c              3   (   K   | ]	  }|k(    y wr7   r   )r8   opcache_opcodes     r   r:   zIInstructionTests.test_co_positions_with_lots_of_caches.<locals>.<genexpr>Q  s     6BR<'6rs   gUUUUUU?zthis test needs more caches!r  z	adaptive=z, show_caches=T)strict)r  r  )r   r1  r   r   sumr   r   zipco_positionsr   r  r  r   )r   r  r  opsr  
non_cachesr  r  r  r  r  r  dis_positionsr  s                @r   %test_co_positions_with_lots_of_cachesz6InstructionTests.test_co_positions_with_lots_of_cachesG  sW   	5
 ~~ll3Q3||G,6#66X&
++K-KK+( 	BK) B\\YXK+"@A B .1d6G6G6IRV-W$)B	&"*< "$L $ ,/+?+? 8,%' $--%M % $$\=AB BB	B$
%B Bs*    D(D;DD
+DDD )r"   r#   r$   r   r  r  r  r  r  r  r   r  r  r  __classcell__r  s   @r   r  r    ss    KKJFJJ 4 42 < < B Br   r  c                   V    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
 e       d	        Zy
)BytecodeTestsc                    t         t        d      j                  dt         j                  fD ]\  }| j	                  |      5  t        j                  |      }| j                  |j                  t        j                         d d d        ^ | j                  t        t
        j                  t                      y # 1 sw Y   xY wNr
   a=1)obj)r-   r   r   r   r   r   BytecodeassertIsInstancecodeobjtypesCodeTyperd  rn  ro  )r   r  rK   s      r   test_instantiationz BytecodeTests.test_instantiationi  s    1r{{; 	AC#& ALL%%%aii@A A	A
 	)S\\68<	A As   A B99C	c                 N   t         t        d      j                  dt         j                  fD ]k  }| j	                  |      5  t        t        j                  |            }t        t        j                  |            }| j                  ||       d d d        m y # 1 sw Y   xxY wr  )
r-   r   r   r   r   rt   r   r  r  r  )r   r  
via_objectvia_generators       r   test_iterationzBytecodeTests.test_iterationr  s    1r{{; 	HC#& H!#,,s"34
 $S%9%9#%> ?,,ZGH H	HH Hs   ABB$	c                     t        j                  t        t              }| j	                  t        |      t               y r  )r   r  r  r  r  rt   r  r  s     r   test_explicit_first_linez&BytecodeTests.test_explicit_first_liney  s(    e0CD$$T&\3HIr   c                    t        j                  t              j                         }|j                         j	                  d      d   }t        t        j                  j                        }| j                  ||       t        j                  t        d      j                         }|j                         j	                  d      d   }| j                  |d       y )NrU   r   r  r  350)	r   r  r  strip	partitionr	  r   co_firstlinenor   )r   r  r   s      r   test_source_line_in_disassemblyz-BytecodeTests.test_source_line_in_disassembly}  s    f%))+))#.q1v556*f599;))#.q1'r   c                     d| _         t        j                  D ]:  \  }}t        j                  |      }| j                  |j                         |       < y r  )r   r  r  r   r  r  info)r   r   r   rK   s       r   	test_infozBytecodeTests.test_info  sE    (33 	1KAxQAQVVXx0	1r   c                 ~    t        j                  t              j                         }| j                  |t               y r7   )r   r  r-   r   r   r  s     r   test_disassembledzBytecodeTests.test_disassembled  s)    b!%%'##FE2r   c                     t               }t        j                  j                  |      }|j                  r|j                  }|j                  r| j                  |j                  |j                         y r7   )r   r   r  from_tracebackr   r   current_offsetrj  r   r   rK   s      r   test_from_tracebackz!BytecodeTests.test_from_traceback  sL    XLL''+jjrzz"bjj))2;;7r   c                     d | _         t               }t        j                  j	                  |      }| j                  | j                  |j                               t               y r7   )r   r   r   r  r  r   r   dis_tracebackr  s      r   test_from_traceback_disz%BytecodeTests.test_from_traceback_dis  sE    XLL''+++AEEG4mDr   c                     t        j                  d      }t        ||j                  j	                               D ]  \  }}|j
                  |k(  rJ  y )Nr  )r   r  r  r   r  r  )r   bytecoder  r  s       r   test_bytecode_co_positionsz(BytecodeTests.test_bytecode_co_positions  sL    <<& #Hh.>.>.K.K.M N 	0E9??i///	0r   N)r"   r#   r$   r  r  r	  r  r  r  r  r  r   r  r   r   r   r  r  g  sD    =HJ	(138E 0 0r   r  c                       e Zd Zd Zd Zd Zy)TestBytecodeTestCasec                     t        ddd      }| j                  |dd       | j                  |d       | j                  |dd       y )Na = 1<string>r  r   r
   	LOAD_NAMEr,   r  assertInBytecodeassertNotInBytecoder   r  s     r   *test_assert_not_in_with_op_not_in_bytecodez?TestBytecodeTestCase.test_assert_not_in_with_op_not_in_bytecode  sD    w
F3dL!4  {3  {C8r   c                     t        ddd      }| j                  |d       | j                  |dd       | j                  |dd       y )Nr#  r$  r  r   r
   r'   r&  r)  s     r   +test_assert_not_in_with_arg_not_in_bytecodez@TestBytecodeTestCase.test_assert_not_in_with_arg_not_in_bytecode  sD    w
F3dL1dL!4  |Q7r   c                     t        ddd      }| j                  t              5  | j                  |dd       d d d        y # 1 sw Y   y xY w)Nr#  r$  r  r   r
   )r  rd  AssertionErrorr(  r)  s     r   'test_assert_not_in_with_arg_in_bytecodez<TestBytecodeTestCase.test_assert_not_in_with_arg_in_bytecode  sE    w
F3~. 	<$$T<;	< 	< 	<s   A  A	N)r"   r#   r$   r*  r,  r/  r   r   r   r!  r!    s    98<r   r!  c                   $    e Zd Zd Zd Zd Zd Zy)TestFinderMethodsc                 $   g d}|D ]{  \  }}| j                  |      5  t        |dd      }t        t        j                  |            }| j                  t        |      d       | j                  |d   |       d d d        } y # 1 sw Y   xY w)N))zimport a.b.c)za.b.cr   N)zfrom a.b import ca.br   rP   )zfrom a.b import c as dr3  )zfrom a.b import *)r4  r   *)zfrom ...a.b import c as d)r4  r4   rP   )z from ..a.b import c as d, e as f)r4  r'   )rL   r   )zfrom ..a.b import *)r4  r'   r5  srcr$  r  r
   r   )r   r  tupler   _find_importsr   r   r   casesr8  r   r  r2   s         r   test__find_importsz$TestFinderMethods.test__find_imports  s    
 # 	3MC#& 3sJ7C--d34  S1-  Q2	3 3	33 3s   ABB	c                     g d}|D ]]  \  }}| j                  |      5  t        |dd      }t        t        j                  |            }| j                  ||       d d d        _ y # 1 sw Y   jxY w)N))zx+yr   )zx=y=1ru   )zx+=yr   )zglobal x
x=y=1ru   )zglobal x
z=x)rr   r7  r$  r  )r   r  r9  r   _find_store_namesr   r;  s         r   test__find_store_namesz(TestFinderMethods.test__find_store_names  sy    
 # 	0MC#& 0sJ7C11$78  h/0 0	00 0s   >A((A1	c                    t        j                  t        j                  j                        }t
        D cg c]  }|j                  r|j                   }}| j                  t        |      t        |             y c c}w r7   )
r   
findlabelsr  r   r1  r  r  r   r   sorted)r   labelsr  jumpss       r   test_findlabelsz!TestFinderMethods.test_findlabels  se     6 67 /
## LL
 
 	7
s   A<c                     d }|j                   }t        j                  |      D cg c]  }|d   	 }}| j                  |ddg       y c c}w )Nc                       y r7   r   r   r   r   r   z3TestFinderMethods.test_findlinestarts.<locals>.func  s    r   r   r'   )r   r   findlinestartsr   )r   r   r  	linestartoffsetss        r   test_findlinestartsz%TestFinderMethods.test_findlinestarts  sN    	 }}141C1CD1IJI9Q<JJ1a&) Ks   A
N)r"   r#   r$   r=  r@  rF  rL  r   r   r   r1  r1    s    3"08*r   r1  c                   8     e Zd Zd fdZd Zd Zd Zd Z xZS )TestDisTracebackc                 x    	 t         `	 t         `t        |          S # t        $ r Y  w xY w# t        $ r Y (w xY wr7   )r`  ra  rb  rc  r  setUp)r   r  s    r   rP  zTestDisTraceback.setUp  sM    		" w}  		  		s    - 	**	99c                     t        j                         }t        j                  |      5  t	        j
                  |       d d d        |j                         S # 1 sw Y   |j                         S xY wr7   r   r   r   r   r   distbr   r   r   r   s      r   r   z TestDisTraceback.get_disassembly  sP    ''/ 	IIbM	  	  s   AA0c                     | j                  t              5  t        j                          d d d        y # 1 sw Y   y xY wr7   )rd  re  r   rS  r   s    r   test_distb_emptyz!TestDisTraceback.test_distb_empty  s.    |, 	IIK	 	 	s   4=c                     d | _         t               }|t        _        | j	                  | j                  d       t               y r7   )r   r   r`  rc  r   r   r  r   r   s     r   test_distb_last_tracebackz*TestDisTraceback.test_distb_last_traceback   s3    X##D$8$8$>Nr   c                 p    d | _         t               }| j                  | j                  |      t               y r7   )r   r   r   r   r  rX  s     r   test_distb_explicit_argz(TestDisTraceback.test_distb_explicit_arg  s+    X##D$8$8$<mLr   )returnN)	r"   r#   r$   rP  r   rV  rY  r[  r  r  s   @r   rN  rN    s    	!OMr   rN  c                       e Zd Zd Zy)TestDisTracebackWithFilec                     t        j                         }t        j                  |      5  t	        j
                  ||       d d d        |j                         S # 1 sw Y   |j                         S xY w)Nr  rR  rT  s      r   r   z(TestDisTracebackWithFile.get_disassembly  sS    ''/ 	'IIbv&	'  	'  s   AA2Nr  r   r   r   r^  r^    s    !r   r^  __main__)r   )T)r
   r'   )r   r   r   r   r`  r  unittesttest.supportr   r   r   r   test.support.bytecode_helperr   r   r   rh  ri  TRACEBACK_CODEr   r   r   r  r8  r;  r!   rB  r   r?  r"   r5  r-   r   r2  r3   r   r;   __file__r   r=   r  r   bytesr  r  r   r   r  r  rM   rQ   r	  r  r  r  r  r  r  r'  r(  r)  r*  r+  r,  r-  r.  r  rY   rS  r^   rV  r`   rY  rc   rf   r\  r]  rh   rj   rm   rw   rt  ru  rv  ry   r  r}   r  r   r  r  TestCaser   r   r  r  r   code_info_constsr  r%   r  r  __func__	co_constsr  r  r  r  r  r  r  r  r  r  r  _line_offsetcode_object_fr  code_object_innerr  r  r  r  Instructionreprr  r  r  r  r  r  r  r  r  r!  r1  rN  r^  mainr   r   r   <module>rq     s-(    
 	 	 
  A A 9  ""))
 
	 
{{**BKK,@,@,O,ORS,SU	V  	 
uu~~$$beenn&C&Ca&GI	J  
uu~~$$beenn&C&Ca&GIJ $ 
{{2	uu~~)	uu~~*		,		 
{{!!	{{!!A%	{{!!A%'	'
" ((((1,((1,((1,((1,((1,.#.2  	
 ))))A-))A-))A-))A-//.	
 %%--7-C     



LL #	 	 ""11""11A577	     	     >   (P $$$$q($$q($$q($$q($$q($$q($$q(*Q/*b&$ ''):):)I)IA)MN%O(

%J ~~$$~~$$q(~~$$q(~~$$q(~~$$q(~~$$q(~~$$q(	K,	\

CF ))))A-))A-))A-))A-))A-))A-	GJ	Z. ****Q.**Q.**Q.	/	:.   //  //!3  //!3  //!3	/	 : 
{{!!	{{!!A%	{{!!A%	{{!!A%	(" 	{{!!A%	{{!!A%	{{!!A%	{{!!A%#4. 	{{!!A%	{{!!A%/:  ((((1,((1,. .   ( ((((1,((1,((1,/) / 2	 !!00!!00147
7   L((## L(^Z0{ Z0z	!x 	! ==  O
   $ $ $ $
 @ __--77:  ,    
 &5H%% 5F$<  ~~,,q0((+..=!++A. '66E  /
" oo [!CUVdhy~  KO  P[!CUVdhy~  KO  PXcqBq^_pu  BF  G\#1VX^_mn  @E  QU  V^CQsCXYgk  }B  NR  S^CQsCXZhl  ~C  OS  T]3AaTVdhy~  KO  P\#1]TXYfTgpr  AE  V[  gk  l_SaK^giw{  MR  ^b  c\#1S#VXfj  |A  MQ  R]3Ag~fhvw  IN  Z^  _\#1S#VXfj  |A  MQ  R\#1S#VXfj  |A  MQ  R\#1RVXfj  |A  MQ  R\#1QTVdhy~  KO  P\#1QSUcgx}  JN  O[!ArRTbfw|  IM  N\#1^Uenp  C  TY  ei  jVCQq"R]arw  DH  IYqd4TVdhy~  KO  P[!CUWefw|  IM  N^BDrZ\jn  @E  QU  V- 4 %cqBWXfj  |A  MQ  R[!CUVdhy~  KO  P[!CUVdhy~  KO  PXcqBq^_pu  BF  G\#1VX^_mn  @E  QU  V^CQsCXZhl  ~C  OS  T^CQsCXZhl  ~C  OS  T^CQsCXZhl  ~C  OS  T^CQsCXZhl  ~C  OS  T]3AaTVdhy~  KO  P\#1=NX\]nXoxz  IM  ^c  os  t_SaK^giw{  MR  ^b  c\#1Wg^`nr  DI  UY  Z]3Ag~fhvw  IN  Z^  _\#1S#VXfj  |A  MQ  R\#1S#VXfj  |A  MQ  R\#1S#VXfj  |A  MQ  R\#1S#VXfj  |A  MQ  RVCQq"R]arw  DH  IYqd4TVdhy~  KO  P[!GW]_mn  @E  QU  V^BDrZ\jn  @E  QU  V- 4 %cqBWXfj  |A  MQ  RXcqBq^_pu  BF  G]3Ag~fguv  HM  Y]  ^\#1S#VXfj  |A  MQ  R\#1S#VXfj  |A  MQ  R\#1S#VXfj  |A  MQ  R\#1S#VXfj  |A  MQ  R[!CUWeiz  LP  Q[!CUWeiz  LP  QVCQq"R]arw  DH  IYqd4TVdhy~  KO  P^CQtV\^lp  BG  SW  X rXcqBq^_pu  BF  Gr]3Ag~fguv  HM  Y]  ^r \#1RVXfj  |A  MQ  Rr VCQq"R]arw  DH  I	r
 ZT2VXfj  |A  MQ  Rr Z2wWYgk  }A  MQ  Rr \#1S#VXfj  |A  MQ  Rr ]3Ag~fhvw  IN  Z^  _r [!CUWeiz  LP  Qr VCQq"R]arw  DH  Ir Yqd4TVdhy~  KO  Pr [!CUWefw|  IM  Nr \#1QTVdhy~  KO  Pr \#1S#VXfj  |A  MQ  Rr (!BPW`bpt  FK  W[  \r  _SbW]_mn  @E  QU  V!r" [!CUWefw{  HL  M#r$ \#1QTVdhy~  KO  P%r& \#2c3WYgk  }B  NR  S'r( '2w_aos  EJ  VZ  [)r* _SbW]_mq  CH  TX  Y+r, Yqd4TVdevz  GK  L-r. ^CRX^`nr  DI  UY  Z/r0 Yqd4TVdevz  GK  L1r2 ]3Ag~fhvx  JO  [_  `3r4 \#1=U_y  CE  SW  hm  y}  ~5r6 VCQq"R]arw  DH  I7r8 Yqd4TWeiz  LP  Q9r: &s#s[^ln  @D  PT  U;r< ("SRZcftx  JO  [_  `=r> ]3Ag~fiwy  KO  [_  `?r@ [!CUXfj  |A  MQ  RArB VCQq"S^bsx  EI  JCrD Yqd4TWeiz  LP  QErF [!CUXfhy~  KO  PGrH \#1QTWeiz  LP  QIrJ ["RVYgk  }B  NR  SKrL \#1S#VYgk  }B  NR  SMrN [!CUXfhy~  KO  POrP \#1QTWeiz  LP  QQrR \#2c3WZhl  ~C  OS  TSrT (!CQYbesw  IN  Z^  _UrV _Sbh_bpr  DI  UY  ZWrX [!CUXfhy}  JN  OYrZ \#1QTWeiz  LP  Q[r\ \#1S#VYgk  }B  NR  S]r^ (!CQYbesw  IN  Z^  __r` ^CRX^aoq  CH  TX  Yarb [!CUXfhy}  JN  Ocrd (!CQYbesw  IN  Z^  _erf _Sbh_bpt  FK  W[  \grh ]3Ag~fiwy  KO  [_  `irj \#1=d  oX  ad  rv  GL  X\  ]krl VCQq"S^bsx  EI  Jmrn Yqd4TWeiz  LP  Qorp U1$tRPSactx  EI  Jqrr \#1QTWegx}  JN  Osrt \#1QTWeiz  LP  Qurv ["RUXfj  |A  MQ  Rwrx Yqd4TWeiz  LP  Qyrz [!CUXfhy~  KO  P{r| ]24bY\jn  @E  QU  V}r~ \#1Wg^aos  EJ  VZ  [r@ ]3Ag~fiwy  KP  \`  aArB \#1=OYmvy  HL  ]b  nr  sCrD VCQq"S^bsx  EI  JErF Yqd4TWeiz  LP  QGrH \#1T6Z]km  D  PT  UIrJ \#1T6Z]ko  AF  RV  WKrL \#1T6Z]ko  AF  RV  WMrN VCQq"S^bsx  EI  JOrP Yqd4TWeiz  LP  QQrR ]3Ag~fiwy  KO  [_  `SrT \#2>R\s|  NR  ch  tx  yUrV VCQq"S^bsx  EI  JWrX Yqd4TWeiz  LP  QYrZ ^CQtV\_mq  CH  TX  Y[r\ _RT$PR[^ln  @E  QU  V]r^ (dTV_bpt  FK  W[  \_r` '3PXadrv  HM  Y]  ^arb Ys!RPSaev{  HL  Mcrd Yqd4TWeiz~  KO  Perf \"$tRX[im  D  PT  Ugrh Yqd4TWeiz  LP  Qirj Yqd4TWeiz  LP  Qkrl _Sbh_bpt  FK  W[  \mrn VCQq"S^bsx  EI  Jorp \"$tRX[im  D  PT  Uqrr Ys!RPSaev{  HL  Msrt _RT$PR[^lp  BG  SW  Xurv ]3A>Q[nwz  IK  \a  mq  rwrx &rtDRT]`nr  DI  UY  Zyrz ("SRZcftx  JO  [_  `{r| Yqd4TWeiz  LP  Q}r~ ]3Ag~fiwy  KP  \`  ar@ \#1=d  oX  ad  rv  GL  X\  ]ArB VCQq"S^bsx  EI  JCrD Yqd4TWeiz  LP  QErF \"$tRX[im  D  PT  UGrH _Sbh_bpt  FK  W[  \IrJ Ys!RPSactx  EI  JKrL VCQq"S^bsx  EI  JMrN \"$tRX[im  D  PT  UOrP Ys!RPSaev{  HL  MQrR _RT$PR[^lp  BG  SW  XSrT ]3Ag~fiwy  KP  \`  aUrV \#2>R\s|  NR  ch  tx  yWrX VCQq"S^bsx  EI  JYrZ Yqd4TWeiz  LP  Q[r\ Ys!RPSaev{  HL  M]r^ VCQq"S^bsx  EI  J_r` \"$tRX[im  D  PT  Uarb Ys!RPSaev{  HL  Mcr j XcqBq^d^m^m^|^|  NS  _c  d^CQtV\]ko  AF  G -* -hB* hBX<0' <0|<+ <$0*)) 0*f"M{ "MJ!/ ! zHMMO r   