
Y]c           @   s  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 Z d  d l m Z d  d l	 m	 Z	 d  d l
 m Z m Z m Z e d e f d e % d  d l m Z d  d l m Z Wd QXy d  d l Z Wn e k
 rd Z n Xe j Z e j d1  r*e d   Z n  d  d l Z y d d Wn e j Z n Xe j   Z d e j  f d     YZ! d   Z" d e! f d     YZ# d e! f d     YZ$ d e j  f d     YZ% d e% f d     YZ& d e% f d     YZ' d e% f d     YZ( d e% f d     YZ) d e% f d     YZ* d  e+ f d!     YZ, d" e+ f d#     YZ- d$   Z. d% e j  f d&     YZ/ d' e j  f d(     YZ0 d) e0 f d*     YZ1 d+ e0 f d,     YZ2 d- e2 f d.     YZ3 d/   Z4 e5 d0 k re4   n  d S(2   iN(   t   UserList(   t   UserDict(   t   run_unittestt   check_py3k_warningst   have_unicodes*   tuple parameter unpacking has been removedt   quiet(   t   inspect_fodder(   t   inspect_fodder2t   ct   oi   i    t
   IsTestBasec           B   sY   e  Z e e j e j e j e j e j e j	 e j
 e j e j e j g
  Z d    Z RS(   c         C   s   t  |  } |  j | |  d | j | f  xe |  j t | g  D]M } | t j k rp | t j k rp qF n  |  j | |  d | j | f  qF Wd  S(   Ns   %s(%s)s
   not %s(%s)(	   t   evalt
   assertTruet   __name__t
   predicatest   sett   inspectt   isgeneratorfunctiont
   isfunctiont   assertFalse(   t   selft	   predicatet   expt   objt   other(    (    s"   lib/python2.7/test/test_inspect.pyt   istest7   s    #(   R   t
   __module__R   R   t	   isbuiltint   isclasst   iscodet   isframeR   t   ismethodt   ismodulet   istracebackt   isgeneratorR   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR
   1   s
   c         c   s    x t  d  D] } | Vq Wd  S(   Ni   (   t   xrange(   R   t   i(    (    s"   lib/python2.7/test/test_inspect.pyt   generator_function_exampleA   s    t   TestPredicatesc           B   s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   sK   t  t d   t t    } d } d | | f } |  j | | |  d  S(   Nc         S   s   |  j  d  S(   Nt   is(   t
   startswith(   t   x(    (    s"   lib/python2.7/test/test_inspect.pyt   <lambda>G   t    i   s#   There are %d (not %d) is* functions(   t   lent   filtert   dirR   t   assertEqual(   R   t   countt   expectedt   err_msg(    (    s"   lib/python2.7/test/test_inspect.pyt   test_sixteenF   s    c         C   s  |  j  t j d  |  j  t j d  |  j  t j d  |  j  t j d  |  j  t j d  |  j  t j d  |  j  t j d  |  j  t j d  |  j  t j d	  |  j  t j	 d
  |  j  t j	 d  |  j  t j
 d  |  j  t j d  t t d  r|  j  t j d  n" |  j t j t t j  j   t t d  rc|  j  t j d  n |  j t j t j j   d  S(   Ns   sys.exits	   [].appends   mod.spam.func_codes   tb.tb_frames   mod.spams   mod.StupidGit.abuses	   git.arguet   modt   tbs   __builtin__.file.closeds   __builtin__.file.softspaces   (x for x in xrange(2))R%   t   GetSetDescriptorTypes   type(tb.tb_frame).f_localst   MemberDescriptorTypes   datetime.timedelta.days(   R   R   R   R   R   R   R   R    R!   t   isdatadescriptorR"   R   t   hasattrt   typest   isgetsetdescriptorR   t   typeR5   t   tb_framet   f_localst   ismemberdescriptort   datetimet	   timedeltat   days(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_excluding_predicatesO   s(    
"c         C   s6   |  j  t j t j   |  j  t j g  j   d  S(   N(   R   R   t	   isroutineR4   t   spamR0   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_isroutineg   s    c         C   s   |  j  t j d  |  j t j t   d t f d     Y} |  j t j |   d t f d     Y} |  j t j |     d  S(   Ns   mod.StupidGitt   newstylec           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyRG   o   s    t   CustomGetattrc           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(   t   None(   R   t   attr(    (    s"   lib/python2.7/test/test_inspect.pyt   __getattr__s   s    (   R   R   RK   (    (    (    s"   lib/python2.7/test/test_inspect.pyRH   r   s   (   R   R   R   R   t   listt   objectR   (   R   RG   RH   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_isclassk   s    c         C   sa   d t  f d     Y} |   } d | _ t t j |   } |  j d |  |  j d |  d  S(   Nt   Cc           B   s   e  Z d Z RS(   t   at   b(   RP   RQ   (   R   R   t	   __slots__(    (    (    s"   lib/python2.7/test/test_inspect.pyRO   x   s   i*   RP   RQ   (   RM   RP   t   dictR   t
   getmemberst   assertInt   assertNotIn(   R   RO   R)   t   members(    (    s"   lib/python2.7/test/test_inspect.pyt   test_get_slot_membersw   s    		c            s   d d l  m   m  d t f    f d     Y} d | f d     Y} |   } |  j t j |   |  j t j |   |  j t j |   |  j t j t   |  j t j d   d  S(   Ni(   t   ABCMetat   abstractmethodt   AbstractClassExamplec              s   e  Z   Z  d     Z RS(   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   foo   s    (   R   R   t   __metaclass__R\   (    (   RY   RZ   (    s"   lib/python2.7/test/test_inspect.pyR[      s   t   ClassExamplec           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR\      s    (   R   R   R\   (    (    (    s"   lib/python2.7/test/test_inspect.pyR^      s   i   (	   t   abcRY   RZ   RM   R   R   t
   isabstractR   t   int(   R   R[   R^   RP   (    (   RY   RZ   s"   lib/python2.7/test/test_inspect.pyt   test_isabstract   s    	(   R   R   R3   RC   RF   RN   RX   Rb   (    (    (    s"   lib/python2.7/test/test_inspect.pyR&   E   s   						
t   TestInterpreterStackc           B   s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         O   s-   t  j j |  | |  t j d d d  d  S(   Ni   i   i	   (   t   unittestt   TestCaset   __init__t   gitt   abuse(   R   t   argst   kwargs(    (    s"   lib/python2.7/test/test_inspect.pyRf      s    c         C   s*   |  j  t j d  |  j  t j d  d  S(   Ns	   git.ex[2]s   mod.fr(   R   R   R!   R   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_abuse_done   s    c         C   s   |  j  t t j  d k  |  j t j d d t d d d g d f  |  j t j d d t d d d	 g d f  |  j t j d
 d t d d d g d f  |  j t j d d t d d d g d f  d  S(   Ni   i    i   i   t   eggss       st = inspect.stack()
i	   RE   s       eggs(b + d, c + f)
i   i+   t   argues               spam(a, b, c)
i   i'   Rh   s           self.argue(a, b, c)
(   R   R,   R4   t   stR/   t   modfile(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt
   test_stack   s    c         C   s   |  j  t t j  d  |  j  t j d d t d d d g d f  |  j  t j d d t d d d	 g d f  |  j  t j d
 d t d d d g d f  d  S(   Ni   i    i   i+   Rm   s               spam(a, b, c)
i	   RE   s       eggs(b + d, c + f)
i   i   Rl   s       q = y // 0
(   R/   R,   Rg   t   trRo   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt
   test_trace   s    c         C   s   t  j t j  \ } } } } |  j | d d g  |  j | d   |  j | d   |  j | i d d 6d d 6d d 6 |  j t  j | | | |  d  d  S(   NR)   t   yi   t   pi   s   (x=11, y=14)(   R   t   getargvaluesR4   t   frR/   RI   t   formatargvalues(   R   Ri   t   varargst   varkwt   locals(    (    s"   lib/python2.7/test/test_inspect.pyt
   test_frame   s    %c         C   s   t  j t j j  \ } } } } |  j | d d d d d d g g g  |  j | d  |  j | d  |  j t  j | | | |  d	  d  S(
   NRP   RQ   R   t   dt   et   ft   gt   hs2   (a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})(   R   Ru   R4   Rv   t   f_backR/   Rw   (   R   Ri   Rx   Ry   Rz   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_previous_frame   s    !((   R   R   Rf   Rk   Rp   Rr   R{   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyRc      s   							t   GetSourceBasec           B   s)   e  Z d Z d    Z d   Z d   Z RS(   c         O   sJ   t  j j |  | |  t t j |  j    } | j   |  _ Wd  QXd  S(   N(	   Rd   Re   Rf   t   openR   t   getsourcefilet
   fodderFilet   readt   source(   R   Ri   Rj   t   fp(    (    s"   lib/python2.7/test/test_inspect.pyRf      s    c         C   s:   |  j  j d  } d j | | d | ! | r5 d n d S(   Ns   
i   R+   (   R   t   splitt   join(   R   t   topt   bottomt   lines(    (    s"   lib/python2.7/test/test_inspect.pyt   sourcerange   s    c         C   s)   |  j  t j |  |  j | |   d  S(   N(   R/   R   t	   getsourceR   (   R   R   R   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   assertSourceEqual   s    N(   R   R   RI   R   Rf   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR      s   		t   TestRetrievingSourceCodec           B   s   e  Z e Z d    Z d   Z e j e j	 j
 d k d  d    Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z RS(   c      	   C   s  t  j t t  j  } |  j | d t j f d t j f d t j f d t j f d t j f g  t  j	 g  | D] } | d ^ qn  } |  j | t j d f t j t j t j f f g t j d f t j t j f f t j t j t j f f g g g  t  j	 g  | D] } | d ^ qt
  } |  j | t j d	 f t j d
 f t j t j f f t j t j t j f f g g g  d  S(   Nt   FesteringGobt   MalodorousPervertt   ParrotDroppingst	   StupidGitt   Titi   (    (    (    (    (   R   RT   R4   R   R/   R   R   R   R   t   getclasstreet   True(   R   t   classest   clst   tree(    (    s"   lib/python2.7/test/test_inspect.pyt   test_getclasses   s.    	&	)	c         C   sA   t  j t t  j  } |  j | d t j f d t j f g  d  S(   NRl   RE   (   R   RT   R4   R   R/   Rl   RE   (   R   t	   functions(    (    s"   lib/python2.7/test/test_inspect.pyt   test_getfunctions   s    i   s)   Docstrings are omitted with -O2 and abovec         C   sU   |  j  t j t  d  |  j  t j t j  d  |  j  t j t j  d  d  S(   Ns   A module docstring.s   A longer,

indented

docstring.s$   Another

docstring

containing

tabs(   R/   R   t   getdocR4   R   Rg   Rh   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_getdoc  s
    c         C   s   |  j  t j d  d  d  S(   Ns   An
    indented
    docstring.s   An
indented
docstring.(   R/   R   t   cleandoc(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_cleandoc  s    c         C   s9   |  j  t j t  d  |  j  t j t j  d  d  S(   Ns	   # line 1
s
   # line 20
(   R/   R   t   getcommentsR4   R   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_getcomments  s    c         C   s   |  j  t j t  t  |  j  t j t j  t  |  j  t j t j j  t  |  j  t j t j j  t  |  j  t j t  t j d  |  j  t j d  t
  t  d  S(   Nt   __builtin__(   R/   R   t	   getmoduleR4   R   Rh   t   strt   syst   modulesRI   Ro   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_getmodule  s     c         C   s0   |  j  t j d d  |  j  t j d d  d  S(   Ni   i'   i   i.   (   R   Rg   Rh   R4   R   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_getsource"  s    c         C   s   |  j  t j t j  t  |  j  t j t j  t  d } t d | d  } |  j  t j |  d   d d  d | j
 f t j | j
 <|  j  t j |  |  d  S(   Ns2   _non_existing_filename_used_for_sourcefile_test.pyRI   t   execi   (   R/   R   R   R4   RE   Ro   Rg   Rh   t   compileRI   t   co_filenamet	   linecachet   cache(   R   t   fnt   co(    (    s"   lib/python2.7/test/test_inspect.pyt   test_getsourcefile&  s    c         C   s#   |  j  t j t j  t j  d  S(   N(   R/   R   t   getfileR4   R   t   __file__(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_getfile/  s    c         B   s   d d l  m } d } | |  } e j | <d | _ d | _ d | j U|  j e j	 | j
 j  d  e j | =e j e d d d	   d  S(
   Ni(   t
   ModuleTypet   __inspect_dummys   <string>t   dummys   def x(): passs   a=10R+   t   single(   R:   R   R   R   R   t
   __loader__t   __dict__R/   R   R   R)   t	   func_codeR   R   (   R   R   t   namet   m(    (    s"   lib/python2.7/test/test_inspect.pyt   test_getmodule_recursion2  s    		
c            sv   d \    e  j  d     f d  } | e  _ z/ i  } e    d  | Ue j | d  Wd  e  _ Xd S(   s4   doctest monkeypatches linecache to enable inspections   <test>s   def x(): pass
c            s*   |    k r  j  t  S |  |  Sd  S(   N(   t
   splitlinesR   (   t   filenamet   module_globals(   R   t   getlinesR   (    s"   lib/python2.7/test/test_inspect.pyt   monkeyA  s    R   R)   N(   s   <test>s   def x(): pass
(   R   R   RI   R   R   R   (   R   R   t   ns(    (   R   R   R   s"   lib/python2.7/test/test_inspect.pyt   test_proceed_with_fake_filename=  s    		(   R   R   R4   R   R   R   Rd   t   skipIfR   t   flagst   optimizeR   R   R   R   R   R   R   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR      s   	!									t!   TestGettingSourceOfToplevelFramesc           B   s    e  Z e Z d    Z d   Z RS(   c         C   s#   d  |  _ |  j t j d d   d  S(   Ni   (   RI   t   maxDiffR   R4   t   currentframe(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_range_toplevel_frameQ  s    	c         C   s   |  j  t j d d   d  S(   Ni   (   R   R4   R5   RI   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt#   test_range_traceback_toplevel_frameU  s    (   R   R   R4   R   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR   N  s   	t   TestDecoratorsc           B   s    e  Z e Z d    Z d   Z RS(   c         C   s   |  j  t j d d  d  S(   Ni   i   (   R   t   mod2t   wrapped(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_wrapped_decorator[  s    c         C   s   |  j  t j d d  d  S(   Ni	   i
   (   R   R   t   gone(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_replacing_decorator^  s    (   R   R   R   R   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR   X  s   	t   TestOnelinersc           B   sV   e  Z e Z d    Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z RS(   c         C   s   |  j  t j d d  d  S(   Ni   (   R   R   t   oll(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_oneline_lambdac  s    c         C   s   |  j  t j d d  d  S(   Ni   i   (   R   R   t   tll(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_threeline_lambdag  s    c         C   s   |  j  t j d d  d  S(   Ni!   i"   (   R   R   t   tlli(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_twoline_indented_lambdal  s    c         C   s   |  j  t j d d  d  S(   Ni%   (   R   R   t   onelinefunc(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_onelinefuncq  s    c         C   s   |  j  t j d d  d  S(   Ni(   i)   (   R   R   t   manyargs(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_manyargsu  s    c         C   s   |  j  t j d d  d  S(   Ni,   i-   (   R   R   t   twolinefunc(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_twolinefunc{  s    c         C   s   |  j  t j d d d  d  S(   Ni   i1   (   R   R   RP   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_lambda_in_list  s    c         C   s   |  j  t j d d  d  S(   Ni7   (   R   R   t	   anonymous(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_anonymous  s    (   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR   a  s   							t   TestBuggyCasesc           B   s   e  Z e Z d    Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 e j e e d  pq e j d d k d  d    Z d   Z d   Z RS(   c         C   s   |  j  t j d d  d  S(   Ni:   i;   (   R   R   t   with_comment(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_with_comment  s    c         C   s   |  j  t j d d d  d  S(   Ni    i?   i@   (   R   R   t   multiline_sig(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_multiline_sig  s    c         C   s    |  j  t j   j d d  d  S(   NiG   iH   (   R   R   t   func69t   func71(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_nested_class  s    c         C   s   |  j  t j d d  d  S(   NiM   (   R   R   t   func77(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt#   test_one_liner_followed_by_non_name  s    c         C   s   |  j  t j j d d  d  S(   NiS   (   R   R   t   cls82t   func83(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_one_liner_dedent_non_name  s    c         C   s   |  j  t j d d  d  S(   NiX   iZ   (   R   R   t   func88(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt&   test_with_comment_instead_of_docstring  s    c         C   s   |  j  t j d d  d  S(   Ni_   ia   (   R   R   t   method_in_dynamic_class(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_method_in_dynamic_class  s    R   is   .pycs   .pyos,   unicodedata is not an external binary modulec         C   s0   |  j  t t j t  |  j  t t j t  d  S(   N(   t   assertRaisest   IOErrorR   R   t   unicodedatat
   findsource(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_findsource_binary  s    c         C   s   d g } t  | d d d  } |  j t t j |  |  j t t j |  d d  | | j f t j	 | j <|  j
 t j |  | d f  |  j
 t j |  | d  d  S(   Ns   x=1i    t   _dynamically_created_fileR   i   (   R   R   R   R   R   R   RI   R   R   R   R/   (   R   R   R   (    (    s"   lib/python2.7/test/test_inspect.pyt!   test_findsource_code_in_linecache  s    	c         C   sY   xR d d g D]D } t  d | d  } |  j t t j |  |  j t t j |  q Wd  S(   NR+   s   <string>s   x=1R   (   R   R   R   R   R   R   (   R   t   fnameR   (    (    s"   lib/python2.7/test/test_inspect.pyt    test_findsource_without_filename  s    (   s   .pycs   .pyo(   R   R   R   R   R   R   R   R   R   R   R   Rd   R   R9   R   R   R   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR     s   									t   _BrokenDataDescriptorc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s2   
    A broken data descriptor. See bug #1785.
    c          G   s   t  d   d  S(   Ns#   should not __get__ data descriptors(   t   AssertionError(   Ri   (    (    s"   lib/python2.7/test/test_inspect.pyt   __get__  s    c          G   s
   t   d  S(   N(   t   RuntimeError(   Ri   (    (    s"   lib/python2.7/test/test_inspect.pyt   __set__  s    c          G   s   t  d   d  S(   Ns'   should not __getattr__ data descriptors(   R  (   Ri   (    (    s"   lib/python2.7/test/test_inspect.pyRK     s    (   R   R   t   __doc__R  R  RK   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s   		t   _BrokenMethodDescriptorc           B   s    e  Z d  Z d   Z d   Z RS(   s4   
    A broken method descriptor. See bug #1785.
    c          G   s   t  d   d  S(   Ns%   should not __get__ method descriptors(   R  (   Ri   (    (    s"   lib/python2.7/test/test_inspect.pyR    s    c          G   s   t  d   d  S(   Ns)   should not __getattr__ method descriptors(   R  (   Ri   (    (    s"   lib/python2.7/test/test_inspect.pyRK     s    (   R   R   R  R  RK   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s   	c         C   s$   g  t  j |   D] } | d  ^ q S(   Ni   (   R   t   classify_class_attrs(   R   t   t(    (    s"   lib/python2.7/test/test_inspect.pyt   attrs_wo_objs  s    t   TestClassesAndFunctionsc           B   sw   e  Z d    Z d   Z d d d d d  Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z RS(   c         C   s   d d	 d     Y} d | f d     Y} d | f d     Y} d | | f d     Y} | | | | f } t  j |  } |  j | |  d  S(
   Nt   Ac           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s    t   Bc           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s    RO   c           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyRO     s    t   Dc           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s    (    (   R   t   getmroR/   (   R   R  R  RO   R  R1   t   got(    (    s"   lib/python2.7/test/test_inspect.pyt   test_classic_mro  s    c         C   s   d t  f d     Y} d | f d     Y} d | f d     Y} d | | f d     Y} | | | | t  f } t j |  } |  j | |  d  S(	   NR  c           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s    R  c           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s    RO   c           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyRO     s    R  c           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s    (   RM   R   R  R/   (   R   R  R  RO   R  R1   R  (    (    s"   lib/python2.7/test/test_inspect.pyt   test_newstyle_mro  s    c         C   s   t  j |  \ } } }	 }
 |  j | |  |  j | |  |  j |	 |  |  j |
 |  | d  k	 r |  j t  j | | |	 |
  |  n  d  S(   N(   R   t
   getargspecR/   RI   t   formatargspec(   R   t   routinet   args_et	   varargs_et   varkw_et
   defaults_et	   formattedRi   Rx   Ry   t   defaults(    (    s"   lib/python2.7/test/test_inspect.pyt   assertArgSpecEquals  s    c      	   B   s   |  j  e j d d g d d |  j  e j d d d d d	 d
 g g g d d d d d f f d  e d e f d e  e j d  d  UWd  QX|  j  e	 d d d d d	 d
 g g g d d d d d f f d  d  S(   NR)   Rs   R  s   (x, y)RP   RQ   R   R|   R}   R~   R   R   i   i   i   s,   (a, b, c, d=3, (e, (f,))=(4, (5,)), *g, **h)s*   tuple parameter unpacking has been removedR   s   
                def spam_deref(a, b, c, d=3, (e, (f,))=(4, (5,)), *g, **h):
                    def eggs():
                        return a + b + c + d + e + f + g + h
                    return eggs
            (   i   (   i   (
   R  R4   Rl   RE   R   t   SyntaxWarningR   t   textwrapt   dedentt
   spam_deref(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_getargspec  s    	
	c         C   s0   d t  f d     Y} |  j | j d g  d  S(   NR  c           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR     s    (   R   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s   R   (   RM   R  R   (   R   R  (    (    s"   lib/python2.7/test/test_inspect.pyt   test_getargspec_method  s    c         B   s   e  d e f d e f  w d d  U|  j e d g g  d d  U|  j e d g g  d d  U|  j e d g  d d  U|  j e d g  Wd  QXd  S(   Ns*   tuple parameter unpacking has been removeds(   parenthesized argument names are invalids"   def sublistOfOne((foo,)): return 1R\   s.   def sublistOfOne((foo,)): return (lambda: foo)s%   def fakeSublistOfOne((foo)): return 1s-   def sublistOfOne((foo)): return (lambda: foo)(   R   R  R  t   sublistOfOnet   fakeSublistOfOne(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_getargspec_sublistofone  s    	c         C   sV  | r t  } n d d  d     Y} d | f d     Y} t |  } |  j d d | f | d  |  j d d	 | f | d
  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  d | f d     Y} t |  } |  j d d | f | d  |  j d d	 | f | d
  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  d | f d     Y} t |  } |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  d | | f d     Y} t |  } |  j d d | f | d  | r|  j d d | f | d  n |  j d d	 | f | d
  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  |  j d d | f | d  d S(!   s~   Helper for testing that classify_class_attrs finds a bunch of
        different kinds of attributes on a given class.
        t   basec           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR&  0  s   R  c           B   sq   e  Z d    Z e e  Z d   Z e e  Z d   Z e e  Z d   Z	 d   Z
 d Z e   Z e   Z RS(   c           S   s   d  S(   N(    (    (    (    s"   lib/python2.7/test/test_inspect.pyt   s4  R+   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR   7  R+   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   getp:  R+   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR   =  R+   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   m1?  R+   t   1(   R   R   R'  t   staticmethodR   t   classmethodR(  t   propertyRt   R   R)  t   datablobR  t   ddR  t   md(    (    (    s"   lib/python2.7/test/test_inspect.pyR  3  s   						R'  s   static methods   missing static methodR   s   class methods   missing class methodRt   R-  s   missing propertyR   t   methods   missing plain methodR)  R.  t   datas   missing dataR0  s   missing method descriptorR/  s   missing data descriptorR  c           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR   Q  R+   (   R   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR  P  s   RO   c           B   s   e  Z d    Z d   Z RS(   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR   _  R+   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR   `  R+   (   R   R   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyRO   ^  s   	R  c           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR)  m  R+   (   R   R   R)  (    (    (    s"   lib/python2.7/test/test_inspect.pyR  l  s   N(    (   RM   R
  RU   (   R   RG   R&  R  t   attrsR  RO   R  (    (    s"   lib/python2.7/test/test_inspect.pyt   _classify_test)  sZ    	c         C   s   |  j  t  d S(   s   classify_class_attrs finds static methods, class methods,
        properties, normal methods, and data attributes on an old-style
        class.
        N(   R4  t   False(   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_classify_oldstyle}  s    c         C   s   |  j  t  d S(   sE   Just like test_classify_oldstyle, but for a new-style class.
        N(   R4  R   (   R   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_classify_newstyle  s    c         C   sI   xB t  t  D]4 } t t |  } t | t  r t j |  q q Wd  S(   N(   R.   R   t   getattrt
   isinstanceR<   R   R  (   R   R   t   builtin(    (    s"   lib/python2.7/test/test_inspect.pyt   test_classify_builtin_types  s    c         C   sg  d d d     Y} |  j  d | j f t j |   |  j  d | j f t j | t j   |   } |  j  d | j f t j |   |  j  d | j f t j | t j   d t f d     Y} |  j  d | j f t j |   |  j  d | j f t j | t j   |   } |  j  d | j f t j |   |  j  d | j f t j | t j   d  S(   NR  c           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR~     s    (   R   R   R~   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s   R~   c           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(    (   R   (    (    s"   lib/python2.7/test/test_inspect.pyR~     s    (   R   R   R~   (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s   (    (   RU   R~   R   RT   R   RM   (   R   R  RQ   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_getmembers_method  s    "(	"("(	"N(   R   R   R  R  RI   R  R!  R"  R%  R4  R6  R7  R;  R<  (    (    (    s"   lib/python2.7/test/test_inspect.pyR    s   		
				T			t   TestGetcallargsFunctionsc           B   sz   e  Z e j d   j Z d d  Z d d  Z d   Z	 d   Z
 d   Z d   Z d   Z d   Z d	   Z d
   Z RS(   s   ^\.\d+$c         C   sX   t  | p i  d | } t d | d  |  } t d | d  |  } |  j | |  d  S(   Nt   funcs   func(%s)s   inspect.getcallargs(func, %s)(   RS   R   RI   R/   (   R   R>  t   call_params_stringt   locst   r1t   r2(    (    s"   lib/python2.7/test/test_inspect.pyt   assertEqualCallArgs  s
    	c         C   s   t  | p i  d | } y t d | d  |  Wn t k
 rE } n X|  j d  y t d | d  |  Wn t k
 r } n X|  j d  |  j t |  t |   |  j t |  t |   d  S(   NR>  s   func(%s)s   Exception not raiseds   inspect.getcallargs(func, %s)(	   RS   R   RI   t	   Exceptiont   failt   assertIsR<   R/   R   (   R   R>  t   call_param_stringR@  t   ex1t   ex2(    (    s"   lib/python2.7/test/test_inspect.pyt   assertEqualException  s    c      	   C   sD   t  d t f d t & d } t | | i |  j d 6 SWd QXd S(   s}   Create a function that returns its locals(), excluding the
        autogenerated '.1', '.2', etc. tuple param names (if any).s*   tuple parameter unpacking has been removedR   sF   lambda %s: dict(i for i in locals().items() if not is_tuplename(i[0]))t   is_tuplenameN(   R   R  R   R   RK  (   R   t	   signaturet   code(    (    s"   lib/python2.7/test/test_inspect.pyt   makeCallable  s
    
c         C   ss  |  j  d  } |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d	  |  j | d
  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  d  S(   Ns   a, b=1t   2s   2, 3s   a=2s   b=3, a=2s   2, b=3s   *(2,)s   *[2]s   *(2, 3)s   *[2, 3]s	   **{"a":2}s   b=3, **{"a":2}s   2, **{"b":3}s   **{"b":3, "a":2}s   *UserList([2])s   *UserList([2, 3])s   **UserDict(a=2)s   2, **UserDict(b=3)s   b=2, **UserDict(a=3)s
   **{u"a":2}s   b=3, **{u"a":2}s   2, **{u"b":3}s   **{u"b":3, u"a":2}(   RN  RC  (   R   R~   (    (    s"   lib/python2.7/test/test_inspect.pyt
   test_plain  s.    c         C   ss   |  j  d  } |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  d  S(   Ns
   a, b=1, *cRO  s   2, 3s   2, 3, 4s   *(2,3,4)s	   2, *[3,4]s   2, 3, *UserList([4])(   RN  RC  (   R   R~   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_varargs  s    c         C   s   |  j  d  } |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d	  |  j | d
  |  j | d  |  j | d  |  j | d  d  S(   Ns   a, b=1, **cs   a=2s   2, b=3, c=4s   b=3, a=2, c=4s   c=4, **{"a":2, "b":3}s   2, c=4, **{"b":3}s   b=2, **{"a":3, "c":4}s   **UserDict(a=2, b=3, c=4)s   2, c=4, **UserDict(b=3)s   b=2, **UserDict(a=3, c=4)s   c=4, **{u"a":2, u"b":3}s   2, c=4, **{u"b":3}s   b=2, **{u"a":3, u"c":4}(   RN  RC  (   R   R~   (    (    s"   lib/python2.7/test/test_inspect.pyt
   test_varkw  s    c         C   ss   |  j  d  } |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  d  S(   Ns   **cR+   s   a=1s   a=1, b=2s   c=3, **{"a": 1, "b": 2}s   **UserDict(a=1, b=2)s   c=3, **UserDict(a=1, b=2)(   RN  RC  (   R   R~   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_varkw_only	  s    c         C   ss   |  j  d  } |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  d  S(   Ns   (b,c), (d,(e,f))=(0,[1,2])s   (2,3)s   [2,3]s   UserList([2,3])s   (2,3), (4,(5,6))s   (2,3), (4,[5,6])s   (2,3), [4,UserList([5,6])](   RN  RC  (   R   R~   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_tupleargs  s    c         C   s   |  j  d  } |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  d  S(	   Ns$   a, b=2, (c,(d,e))=(3,[4,5]), *f, **gs   2, 3, (4,[5,6]), 7s   2, 3, *[(4,[5,6]), 7], x=8s   2, 3, x=8, *[(4,[5,6]), 7]s   2, x=8, *[3, (4,[5,6]), 7], y=9s   x=8, *[2, 3, (4,[5,6])], y=9s4   x=8, *UserList([2, 3, (4,[5,6])]), **{"y":9, "z":10}s8   2, x=8, *UserList([3, (4,[5,6])]), **UserDict(y=9, z=10)(   RN  RC  (   R   R~   (    (    s"   lib/python2.7/test/test_inspect.pyt   test_multiple_features  s    c         C   s  |  j  d  } |  j  d  } |  j  d  } |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  x | | f D] } |  j | d	  |  j | d
  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  |  j | d  t ri|  j | d  n  |  j | d  |  j | d  |  j | d  q W|  j  d  } |  j | d  |  j | d  |  j | d  |  j  d  } |  j | d  |  j | d  d  S(   NR+   s   a, bs   a, b=1R*  s   x=1s   1,x=1s   a=2s   b=3s   2, 3, 4s   1, 2, 3, a=1s   2, 3, 4, c=5s   2, 3, 4, a=1, c=5s   c=2s   2, c=3s	   2, 3, c=4s   2, c=4, b=3s   **{u"\u03c0\u03b9": 4}s   1, a=2s   1, **{"a":2}s	   1, 2, b=3s   (a,b)=(0,1)s   [1]s   (1,2,3)s   **cs   1, 2s   1, 2, a=1, b=2(   RN  RJ  R   (   R   t   f0t   f1t   f2R~   t   f3(    (    s"   lib/python2.7/test/test_inspect.pyt   test_errors(  sB    N(   R   R   t   reR   t   matchRK  RI   RC  RJ  RN  RP  RQ  RR  RS  RT  RU  RZ  (    (    (    s"   lib/python2.7/test/test_inspect.pyR=    s   	
					
			t    TestGetcallargsFunctionsCellVarsc           B   s   e  Z d    Z RS(   c      	   C   sD   t  d t f d t & d } t | | i |  j d 6 SWd QXd S(   s}   Create a function that returns its locals(), excluding the
        autogenerated '.1', '.2', etc. tuple param names (if any).s*   tuple parameter unpacking has been removedR   s   lambda %s: (
                    (lambda: a+b+c+d+d+e+f+g+h), # make parameters cell vars
                    dict(i for i in locals().items()
                         if not is_tuplename(i[0]))
                )[1]RK  N(   R   R  R   R   RK  (   R   RL  RM  (    (    s"   lib/python2.7/test/test_inspect.pyRN  Y  s
    
(   R   R   RN  (    (    (    s"   lib/python2.7/test/test_inspect.pyR]  W  s   t   TestGetcallargsMethodsc           B   s   e  Z d    Z d   Z RS(   c         C   s/   d t  f d     Y} | |  _ |   |  _ d  S(   Nt   Fooc           B   s   e  Z RS(    (   R   R   (    (    (    s"   lib/python2.7/test/test_inspect.pyR_  j  s   (   RM   R   t   inst(   R   R_  (    (    s"   lib/python2.7/test/test_inspect.pyt   setUpi  s    	c         C   sD   d | k s t   t t |   j } | d |  |  j _ |  j j S(   NR   s   self, (   R  t   superR^  RN  R   R1  R`  (   R   RL  t   mk(    (    s"   lib/python2.7/test/test_inspect.pyRN  o  s    (   R   R   Ra  RN  (    (    (    s"   lib/python2.7/test/test_inspect.pyR^  g  s   	t   TestGetcallargsUnboundMethodsc           B   s5   e  Z d    Z d d  Z d d  Z d d  Z RS(   c         C   s    t  t |   j |  |  j j S(   N(   Rb  Rd  RN  R   R1  (   R   RL  (    (    s"   lib/python2.7/test/test_inspect.pyRN  w  s    c         C   s%   t  t |   j |  j | | |    S(   N(   Rb  Rd  RC  t   _getAssertEqualParams(   R   R>  R?  R@  (    (    s"   lib/python2.7/test/test_inspect.pyRC  {  s    c         C   s%   t  t |   j |  j | | |    S(   N(   Rb  Rd  RJ  Re  (   R   R>  R?  R@  (    (    s"   lib/python2.7/test/test_inspect.pyRJ    s    c         C   s>   d | k s t   t | p i  d |  j } | d | | f S(   NR`  s   inst,(   R  RS   R`  (   R   R>  R?  R@  (    (    s"   lib/python2.7/test/test_inspect.pyRe    s    N(   R   R   RN  RI   RC  RJ  Re  (    (    (    s"   lib/python2.7/test/test_inspect.pyRd  u  s   	c           C   s/   t  t t t t t t t t t	 t
 t t  d  S(   N(   R   R   R   R   R   Rc   R  R&   R=  R]  R^  Rd  R   (    (    (    s"   lib/python2.7/test/test_inspect.pyt	   test_main  s    	t   __main__(   R   R	   (6   R[  R   R:   Rd   R   R   R@   R  R    R   t   test.supportR   R   R   R  R   t   testR   R4   R   R   R   t   ImportErrorRI   R   Ro   t   endswithR   t   exc_tracebackR5   R   Rg   Re   R
   R%   R&   Rc   R   R   R   R   R   R   RM   R  R  R
  R  R=  R]  R^  Rd  Rf  R   (    (    (    s"   lib/python2.7/test/test_inspect.pyt   <module>   sb   

		T/t
	*0		