m๒
ญfIc           @   s<  d  Z  d k l Z l Z d k Z d k Z d k Z d k Z d   Z d k	 Z	 e
 e d  Z e i e   e i   e i d e  Z e e d e d g Z d   Z e i   Z y d	 d
 Wn e i Z n Xe e	 i d  e e	 i d  e e	 i d  e e	 i d  e e	 i d  e e	 i d  e e	 i d  e e	 i d  e e	 i d  e e	 i d  d k Z e e	 i d  e e	 i d  e e	 i  e i!  d  e e	 i  g  i"  d  e	 i# e e	 i  Z$ e e$ d e i% f d e i& f d e i' f d e i f g j d  e	 i( e) d   e$  d	  Z* e e* e i' f  f e i f  f e i& e i f f e i% e i& e i' f f g g g j d  e	 i# e e	 i  Z+ e e+ d  e i, f d! e i! f g j d"  e e	 i- e  d# j d$  e e	 i. e  d% j d&  e e	 i/ e i  e j d'  e e	 i0 e i  e j d(  e e	 i1 e i!  e j d)  e e	 i1 e i2  e j d*  d+   Z3 e e	 i4 e i2  e3 d, d-  j d.  e e	 i4 e i  e3 d/ d0  j d1  e e	 i- e i  d2 j d3  e e	 i- e i2  d4 j d5  e e	 i. e i  d6 j d7  e i2 d8 d9 d:  e e	 i d;  e e	 i d<  e e5 e i6  d= j d>  e e i6 d
 d	 e d? d@ dA g d
 f j dB  e e i6 d	 d	 e d: d! dC g d
 f j dB  e e i6 dD d	 e dE d  dF g d
 f j dG  e e5 e i7  dH j dI  e e i7 d
 d	 e dJ d  dK g d
 f j dL  e e i7 d	 d	 e d: d! dC g d
 f j dM  e e i7 dD d	 e d? d@ dA g d
 f j dN  e e i7 d= d	 e d- dO dP g d
 f j dQ  e	 i8 e i9  \ Z: Z; Z< Z= e e: dR dS g j dT  e e; d j dU  e e< d j dV  e e= h  dR dW <dX dW <dS dY <j dZ  e e	 i? e: e; e< e=  d[ j d\  e	 i8 e i9 i@  \ Z: Z; Z< Z= e e: d] d^ d d_ d` da g g g j db  e e; dc j dd  e e< de j df  e e	 i? e: e; e< e=  dg j dh  x) e D]! ZA y e iB eA  WqQqQXqQWdi Z  e
 e dj d  Z e i e   e i   e dj e dk e dl g Z e i dm e dj  ZC e e	 i4 eC iD  e3 dn dJ  j do  e e	 i4 eC iE  e3 d9 d:  j dp  x) e D]! ZA y e iB eA  Wq.q.Xq.Wdq f  dr     YZF ds eF f dt     YZG du eF f dv     YZH dw eG eH f dx     YZI eI eG eF eH f ZJ e	 iK eI  ZL e eJ eL j dy eJ eL  dq eM f dz     YZF ds eF f d{     YZG du eF f d|     YZH dw eG eH f d}     YZI eI eG eH eF eM f ZJ e	 iK eI  ZL e eJ eL j dy eJ eL  d~   ZN dq f  d     YZF eN eF  ZO e d d eF f eO j d  e d d eF f eO j d  e dX d eF f eO j d  e d d eF f eO j d  e d d eF f eO j d  e d d eF f eO j d  ds eF f d     YZG eN eG  ZO e d d eF f eO j d  e d d eF f eO j d  e dX d eF f eO j d  e d d eG f eO j d  e d d eF f eO j d  e d d eF f eO j d  du eF f d     YZH eN eH  ZO e d d eF f eO j d  e d d eH f eO j d  e dX d eF f eO j d  e d d eH f eO j d  e d d eF f eO j d  e d d eF f eO j d  dw eG eH f d     YZI eN eI  ZO e d d eF f eO j d  e d d eF f eO j d  e dX d eF f eO j d  e d d eG f eO j d  e d d eI f eO j d  e d d eF f eO j d  dq eM f d     YZF eN eF  ZO e d d eF f eO j d  e d d eF f eO j d  e dX d eF f eO j d  e d d eF f eO j d  e d d eF f eO j d  e d d eF f eO j d  ds eF f d     YZG eN eG  ZO e d d eF f eO j d  e d d eF f eO j d  e dX d eF f eO j d  e d d eG f eO j d  e d d eF f eO j d  e d d eF f eO j d  du eF f d     YZH eN eH  ZO e d d eF f eO j d  e d d eH f eO j d  e dX d eF f eO j d  e d d eH f eO j d  e d d eF f eO j d  e d d eF f eO j d  dw eG eH f d     YZI eN eI  ZO e d d eF f eO j d  e d d eH f eO j d  e dX d eF f eO j d  e d d eG f eO j d  e d d eI f eO j d  e d d eF f eO j d  e	 iP e i,  \ Z: Z; Z< ZQ e e: dR dS g j d  e e; d j d  e e< d j d  e eQ d j d  e e	 iR e: e; e< eQ  d j d  e	 iP e i!  \ Z: Z; Z< ZQ e e: d] d^ d d_ d` da g g g j d  e e; dc j d  e e< de j d  e eQ d= d dฏ f f j d  e e	 iR e: e; e< eQ  d  j dก  e	 iP eF iS  \ Z: Z; Z< ZQ e e: dข g j dฃ  e e; d j dค  e e< d j dฅ  e eQ d j dฆ  e5 eT dง   eU e	    Z" e e" dW j dจ e"  dฉ   ZV e	 iP eV  \ Z: Z; Z< ZQ e e: dช g g j dซ  e e; d j dฌ  e e< d j dญ  e eQ d j dฎ  d S(ฐ   sT  # line 1
'A module docstring.'

import sys, inspect
# line 5

# line 7
def spam(a, b, c, d=3, (e, (f,))=(4, (5,)), *g, **h):
    eggs(b + d, c + f)

# line 11
def eggs(x, y):
    "A docstring."
    global fr, st
    fr = inspect.currentframe()
    st = inspect.stack()
    p = x
    q = y / 0

# line 20
class StupidGit:
    """A longer,

    indented

    docstring."""
# line 27

    def abuse(self, a, b, c):    # a comment
        """Another

	docstring

        containing

	tabs
	
        """
        self.argue(a, b, c)
# line 40
    def argue(self, a, b, c):
        try:
            spam(a, b, c)
        except:
            self.ex = sys.exc_info()
            self.tr = inspect.trace()

# line 48
class MalodorousPervert(StupidGit):
    pass

class ParrotDroppings:
    pass

class FesteringGob(MalodorousPervert, ParrotDroppings):
    pass
(   s
   TestFaileds   TESTFNNc         G   s   |  p t | |  n d  S(   N(   t	   assertiont
   TestFailedt   messaget   args(   R    R   R   (    (    t.   /mit/python/lib/python2.4/test/test_inspect.pyt   testE   s    t   wt   testmodt   ct   oc         C   sฃ   t  |  } t |  |  d |  i | f  xp t i t i t i	 t i
 t i t i t i t i g D]8 } | |  j	 o% t | |  d | i | f  qc qc Wd  S(   Ns   %s(%s)s
   not %s(%s)(   t   evalt   expt   objR   t   funct   __name__t   inspectt	   isbuiltint   isclasst   iscodet   isframet
   isfunctiont   ismethodt   ismodulet   istracebackt   other(   R   R   R   R   (    (    R   t   istestS   s     7 i   i    s   sys.exits	   [].appends   mod.StupidGits   mod.spam.func_codes   tb.tb_frames   mod.spams   mod.StupidGit.abuses	   git.arguet   modt   tbs   __builtin__.file.closeds   __builtin__.file.softspaces   isroutine(mod.spam)s   isroutine([].count)t   FesteringGobt   MalodorousPervertt   ParrotDroppingst	   StupidGits
   class listc         C   s   |  d S(   Ni   (   t   x(   R    (    (    R   t   <lambda>x   s    s
   class treet   eggst   spams   function lists   A module docstring.s   getdoc(mod)s	   # line 1
s   getcomments(mod)s   getmodule(mod.StupidGit)s   getfile(mod.StupidGit)s   getsourcefile(mod.spam)s   getsourcefile(git.abuse)c         C   s1   t  i t d  } t  i | |  d | !d  d S(   Ns   
i   (   t   stringt   splitt   sourcet   linest   joint   topt   bottom(   R)   R*   R'   (    (    R   t   sourcerange   s    i   i'   s   getsource(git.abuse)i   i.   s   getsource(mod.StupidGit)s   A longer,

indented

docstring.s   getdoc(mod.StupidGit)s$   Another

docstring

containing

tabss   getdoc(git.abuse)s
   # line 20
s   getcomments(mod.StupidGit)i   i   i	   s	   git.ex[2]s   mod.fri   s   trace() lengthi+   t   argues               spam(a, b, c)
s   trace() row 2s       eggs(b + d, c + f)
i   i   s       q = y / 0
s   trace() row 3i   s   stack() lengthi   s       st = inspect.stack()
s   stack() row 1s   stack() row 2s   stack() row 3t   abuses           self.argue(a, b, c)
s   stack() row 4R    t   ys   mod.fr argss   mod.fr varargss   mod.fr varkwi   t   pi   s   mod.fr localss   (x=11, y=14)s   mod.fr formatted argvaluest   at   bt   dt   et   fs   mod.fr.f_back argst   gs   mod.fr.f_back varargst   hs   mod.fr.f_back varkws2   (a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})s!   mod.fr.f_back formatted argvaluess  
def wrap(foo=None):
  def wrapper(func):
    return func
  return wrapper

def replace(func):
  def insteadfunc():
    print 'hello'
  return insteadfunc

# two decorators, one with argument
@wrap()
@wrap(wrap)
def wrapped():
  pass

@replace
def gone():
  passt   2t   2ct   2ot   testmod3i   s   inspect.getsource(mod.wrapped)s   inspect.getsource(mod.gone)t   Ac           B   s   t  Z RS(   N(   R   t
   __module__(    (    (    R   R;   ๗   s    t   Bc           B   s   t  Z RS(   N(   R   R<   (    (    (    R   R=   ๘   s    t   Cc           B   s   t  Z RS(   N(   R   R<   (    (    (    R   R>   ๙   s    t   Dc           B   s   t  Z RS(   N(   R   R<   (    (    (    R   R?   ๚   s    s   expected %r mro, got %rc           B   s   t  Z RS(   N(   R   R<   (    (    (    R   R;     s    c           B   s   t  Z RS(   N(   R   R<   (    (    (    R   R=     s    c           B   s   t  Z RS(   N(   R   R<   (    (    (    R   R>     s    c           B   s   t  Z RS(   N(   R   R<   (    (    (    R   R?     s    c         C   s,   g  } t i |   D] } | | d  q ~ S(   Ni   (   t   _[1]R   t   classify_class_attrst   clst   t(   RB   R@   RC   (    (    R   t   attrs_wo_objs  s    c           B   s_   t  Z d   Z e e  Z d   Z e e  Z d   Z e e  Z d   Z	 d   Z
 d Z RS(   Nc           C   s   d  S(   N(    (    (    (    R   t   s  s    c         C   s   d  S(   N(    (   RB   (    (    R   R     s    c         C   s   d  S(   N(    (   t   self(    (    R   t   getp  s    c         C   s   d  S(   N(    (   RF   (    (    R   t   m  s    c         C   s   d  S(   N(    (   RF   (    (    R   t   m1  s    t   1(   R   R<   RE   t   staticmethodR   t   classmethodRG   t   propertyR/   RH   RI   t   datablob(    (    (    R   R;     s   					RE   s   static methods   missing static methods   class methods   missing class methodRM   s   missing propertyRH   t   methods   missing plain methodRI   RN   t   datas   missing datac           B   s   t  Z d   Z RS(   Nc         C   s   d  S(   N(    (   RF   (    (    R   RH   '  s    (   R   R<   RH   (    (    (    R   R=   &  s   c           B   s   t  Z d   Z d   Z RS(   Nc         C   s   d  S(   N(    (   RF   (    (    R   RH   3  s    c         C   s   d  S(   N(    (   RF   (    (    R   R   4  s    (   R   R<   RH   R   (    (    (    R   R>   2  s   	c           B   s   t  Z d   Z RS(   Nc         C   s   d  S(   N(    (   RF   (    (    R   RI   ?  s    (   R   R<   RI   (    (    (    R   R?   >  s   c           B   s_   t  Z d   Z e e  Z d   Z e e  Z d   Z e e  Z d   Z	 d   Z
 d Z RS(   Nc           C   s   d  S(   N(    (    (    (    R   RE   M  s    c         C   s   d  S(   N(    (   RB   (    (    R   R   P  s    c         C   s   d  S(   N(    (   RF   (    (    R   RG   S  s    c         C   s   d  S(   N(    (   RF   (    (    R   RH   V  s    c         C   s   d  S(   N(    (   RF   (    (    R   RI   X  s    RJ   (   R   R<   RE   RK   R   RL   RG   RM   R/   RH   RI   RN   (    (    (    R   R;   K  s   					c           B   s   t  Z d   Z RS(   Nc         C   s   d  S(   N(    (   RF   (    (    R   RH   f  s    (   R   R<   RH   (    (    (    R   R=   d  s   c           B   s   t  Z d   Z d   Z RS(   Nc         C   s   d  S(   N(    (   RF   (    (    R   RH   s  s    c         C   s   d  S(   N(    (   RF   (    (    R   R   t  s    (   R   R<   RH   R   (    (    (    R   R>   q  s   	c           B   s   t  Z d   Z RS(   Nc         C   s   d  S(   N(    (   RF   (    (    R   RI     s    (   R   R<   RI   (    (    (    R   R?   ~  s   s   mod.eggs argss   mod.eggs varargss   mod.eggs varkws   mod.eggs defaultss   (x, y)s   mod.eggs formatted argspecs   mod.spam argss   mod.spam varargss   mod.spam varkwi   s   mod.spam defaultss,   (a, b, c, d=3, (e, (f,))=(4, (5,)), *g, **h)s   mod.spam formatted argspecRF   s   A.m argss   A.m varargss	   A.m varkws   A.m defaultsc         C   s   |  i d  S(   Nt   is(   R    t
   startswith(   R    (    (    R   R!      s    s#   There are %d (not 11) is* functionsc         C   s
   |  } d S(   Ni   (   t   foo(   t   .0RS   (    (    R   t   sublistOfOneฃ  s    RS   s   sublistOfOne argss   sublistOfOne varargss   sublistOfOne varkws   sublistOfOn defaults(   i   (W   R&   t   test.test_supportR   t   TESTFNt   syst   impt   osR$   R   R   t   opent   filet   writet   closet   load_sourceR   t   files_to_clean_upR   R   t   gitt   exc_tracebackR   R   R   R   R   R   R   R   R   t   __builtin__t   isdatadescriptort	   isroutineR#   t   countt
   getmemberst   classesR   R   R   t   getclasstreet   mapt   treet	   functionsR"   t   getdoct   getcommentst	   getmodulet   getfilet   getsourcefileR-   R+   t	   getsourcet   lent   trt   stt   getargvaluest   frR   t   varargst   varkwt   localst   Nonet   formatargvaluest   f_backt   fnamet   unlinkt   mod2t   wrappedt   goneR;   R=   R>   R?   t   expectedt   getmrot   gott   objectRD   t   attrst
   getargspect   defaultst   formatargspecRH   t   filtert   dirRU   (%   R   RD   R>   Rc   R=   R   R\   RU   Rz   R?   Rl   Ra   R&   RY   R~   R   R   R   R;   R   R$   R   R   R+   R`   RX   R   R   Rx   RW   R   Rf   Ry   Rk   Rh   R   RZ   (    (    R   t   ?   sฎ  A$		
			<T+	!!))))))).!+ 
!! 	+	