;ò
ìŒü?c           @   s²   d  Z  d k Z d k Z d k Td k l Z d d d d g e Z [ e d „ Z e d	 „ Z d
 d „ Z	 d
 e e e d „ Z
 e	 Z d „  Z d „  Z e d j o e ƒ  n d S(   s0   Disassembler of Python byte code into mnemonics.N(   s   *(   s   __all__s   diss   disassembles   distbs   discoc         C   s{  |  t j o t ƒ  d Sn t |  ƒ t i j o |  i }  n t |  d ƒ o |  i }  n t |  d ƒ o |  i	 }  n t |  d ƒ oœ |  i
 i ƒ  } | i ƒ  xÒ | D]t \ } } t | ƒ t i t i t i t i f j o= d | GHy t | ƒ Wn t j
 o } d G| GHn XHq© q© WnS t |  d ƒ o t |  ƒ n5 t |  t ƒ o t |  ƒ n t d t |  ƒ i ‚ d S(	   sn   Disassemble classes, methods, functions, or code.

    With no argument, disassemble the last traceback.

    Ns   im_funcs	   func_codes   __dict__s   Disassembly of %s:s   Sorry:s   co_codes(   don't know how to disassemble %s objects(   s   xs   Nones   distbs   types   typess   InstanceTypes	   __class__s   hasattrs   im_funcs	   func_codes   __dict__s   itemss   sorts   names   x1s
   MethodTypes   FunctionTypes   CodeTypes	   ClassTypes   diss	   TypeErrors   msgs   disassembles
   isinstances   strs   disassemble_strings   __name__(   s   xs   names   itemss   msgs   x1(    (    s    /mit/python/lib/python2.3/dis.pys   dis   s6     
 +	c         C   sr   |  t j oK y t i }  Wn t j
 o t d ‚ n Xx |  i o |  i }  q< Wn t |  i i	 |  i
 ƒ d S(   s2   Disassemble a traceback (default: last traceback).s    no last traceback to disassembleN(   s   tbs   Nones   syss   last_tracebacks   AttributeErrors   RuntimeErrors   tb_nexts   disassembles   tb_frames   f_codes   tb_lasti(   s   tb(    (    s    /mit/python/lib/python2.3/dis.pys   distb2   s      
 iÿÿÿÿc         C   sˆ  |  i } g  i } |  i d d d … D] } | t | ƒ ƒ q' ~ } g  i } |  i d d d … D] } | t | ƒ ƒ qd ~ } t
 | ƒ } |  i }	 d } x; | | j  o | | d j o |	 | | 7}	 | d 7} q¡ Wd } d } t | ƒ } t
 | ƒ } d } d } t }
 xo| | j  oa| | } t | ƒ } | | j ot |	 | 7}	 xI | | j  o2 | | | 7} | | } | d 7} | o PqRqRWt i } | d j o Hn d |	 Gn d G| | j o d Gn d G| | j o d Gn d	 G| i d
 ƒ Gt | i d ƒ G| d } | t j oYt | | ƒ t | | d ƒ d | } d } | d } | t! j o | d } n | i d ƒ G| t" j o d |  i# | d Gq~| t$ j o d |  i% | d Gq~| t& j o d | | d Gq~| t' j o d |  i( | d Gq~| t) j o d t* | d Gq~| t+ j o5 |
 t j o |  i, |  i- }
 n d |
 | d Gq~n HqWd S(   s   Disassemble a code object.i    Ni   i   s   %3ds      s   -->s   >>s     i   i   i   l      i   s   (s   )s   (to (.   s   cos   co_codes   codes   appends   _[1]s	   co_lnotabs   cs   ords   byte_incrementss   line_incrementss   lens   table_lengths   co_firstlinenos   linenos   table_indexs   addrs	   line_incrs
   findlabelss   labelss   ns   is   extended_args   Nones   frees   ops   syss   maxints   lastis   rjusts   opnames   ljusts   HAVE_ARGUMENTs   opargs   EXTENDED_ARGs   hasconsts	   co_constss   hasnames   co_namess   hasjrels   haslocals   co_varnamess
   hascompares   cmp_ops   hasfrees   co_cellvarss   co_freevars(   s   cos   lastis   extended_args   codes   labelss   byte_incrementss   line_incrementss   addrs   opargs   linenos   frees   table_indexs	   line_incrs   table_lengths   cs   is   ns   _[1]s   op(    (    s    /mit/python/lib/python2.3/dis.pys   disassemble<   s†     	==	  

 


	  
*
c         C   s  t  |  ƒ } t |  ƒ }	 d } xÜ| |	 j  oÎ|  | } t | ƒ }
 |
 t	 d j o
 | d j o Hn | | j o d Gn d G| | j o d Gn d G| i d ƒ Gt |
 i d ƒ G| d	 } |
 t j o(t |  | ƒ t |  | d	 ƒ d
 } | d } | i d ƒ G|
 t j o( | o d | | d Gqód | Gq÷|
 t j o- | t j	 o d | | d Gqód | Gq÷|
 t j o d | | d Gq÷|
 t j o' | o d | | d Gqód | Gq÷|
 t j o d t | d Gq÷n Hq! Wd  S(   Ni    s
   SET_LINENOs   -->s      s   >>s     i   i   i   i   i   i   s   (s   )s   (%d)s   (to (   s
   findlabelss   codes   labelss   lens   ns   is   cs   ords   ops   opmaps   lastis   rjusts   opnames   ljusts   HAVE_ARGUMENTs   opargs   hasconsts	   constantss   hasnames   namess   Nones   hasjrels   haslocals   varnamess
   hascompares   cmp_op(   s   codes   lastis   varnamess   namess	   constantss   labelss   opargs   cs   is   ns   op(    (    s    /mit/python/lib/python2.3/dis.pys   disassemble_string„   sN     
  
&
c         C   sý   g  } t |  ƒ } d } xÚ | | j  oÌ |  | } t | ƒ } | d } | t j o› t |  | ƒ t |  | d ƒ d } | d } d } | t j o | | } n | t j o
 | } n | d j o" | | j o | i | ƒ qì qð q q W| Sd S(   s`   Detect all offsets in a byte code which are jump targets.

    Return the list of offsets.

    i    i   i   i   iÿÿÿÿN(   s   labelss   lens   codes   ns   is   cs   ords   ops   HAVE_ARGUMENTs   opargs   labels   hasjrels   hasjabss   append(   s   codes   cs   is   labelss   ns   opargs   labels   op(    (    s    /mit/python/lib/python2.3/dis.pys
   findlabels°   s*      

&

c          C   sæ   t  i d o_ t  i d o! t  i i d ƒ t  i d ƒ n t  i d } | p
 | d j o
 t } qs n t } | t j o t  i } n t	 | ƒ } | i
 ƒ  } | t j	 o | i ƒ  n d } t | | d ƒ }  t |  ƒ d S(   s*   Simple test program to disassemble a file.i   i   s   usage: python dis.py [-|file]
s   -s   <stdin>s   execN(   s   syss   argvs   stderrs   writes   exits   fns   Nones   stdins   fs   opens   reads   sources   closes   compiles   codes   dis(   s   codes   fs   sources   fn(    (    s    /mit/python/lib/python2.3/dis.pys   _testË   s$     s   __main__(   s   __doc__s   syss   typess   opcodes   __all__s   _opcodes_alls   Nones   diss   distbs   disassembles   disassemble_strings   discos
   findlabelss   _tests   __name__(   s   __all__s   distbs
   findlabelss   disassembles   discos   syss   _opcodes_alls   disassemble_strings   _tests   typess   dis(    (    s    /mit/python/lib/python2.3/dis.pys   ?   s   		&
H*		