ó
\K]c           @   s  d  d l  j Z d  d l m Z d  d l m Z d  d l m Z d  d l	 Z	 e	 j
 d ƒ Z e j e	 j ƒ e j Z e j e _ d d d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ e j e d „ ƒ Z d e j f d „  ƒ  YZ e e _ e d k re j ƒ  n  d S(   iÿÿÿÿN(   t   tracing(   t   StringIO(   t   with_metaclasst   tracet   CapturedTracec           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s-   Capture the trace temporarily for validation.c         C   s%   t  ƒ  |  _ t j |  j ƒ |  _ d  S(   N(   R   t   buffert   loggingt   StreamHandlert   handler(   t   self(    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   __init__   s    c         C   s4   t  j |  _ t ƒ  |  _ t j |  j ƒ g t  _ d  S(   N(   t   loggert   handlerst	   _handlersR   R   R   R   (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt	   __enter__   s    c         C   s   |  j  t _ d  S(   N(   R   R   R   (   R	   t   typet   valuet	   traceback(    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   __exit__   s    c         C   s)   |  j  j ƒ  } | j t d d ƒ } | S(   Nt   .t    (   R   t   getvaluet   replacet   __name__(   R	   t   log(    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR      s    (   R   t
   __module__t   __doc__R
   R   R   R   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR      s
   			t   Classc           B   s†   e  Z e j e d  „  ƒ ƒ Z e j e d „  ƒ ƒ Z d Z	 d „  Z
 d „  Z e j e e
 e ƒ ƒ Z e j d d „ ƒ Z d „  Z RS(   c         C   s   d  S(   N(    (   t   cls(    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   class_method%   s    c           C   s   d  S(   N(    (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   static_method*   s    c         C   s   |  j  S(   N(   t   _Class__test(   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt	   _test_get1   s    c         C   s   | |  _  d  S(   N(   R   (   R	   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt	   _test_set4   s    R   c         O   s   d  S(   N(    (   R	   t   somet   othert   argst   kwds(    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   method9   s    c         C   s   d S(   s,   Generate a deterministic string for testing.s   <Class instance>(    (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   __repr__=   s    N(   R   R   R    R   t   classmethodR   t   staticmethodR   t   NoneR   R    R!   t   propertyt   testR&   R'   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR   #   s   		t   Class2c           B   sh   e  Z e d  „  ƒ Z e d „  ƒ Z d Z e d „  ƒ Z	 e	 j
 d „  ƒ Z	 d „  Z d „  Z d „  Z RS(   c         C   s   d  S(   N(    (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR   B   s    c           C   s   d  S(   N(    (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR   F   s    c         C   s   |  j  S(   N(   t   _Class2__test(   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR,   K   s    c         C   s   | |  _  d  S(   N(   R.   (   R	   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR,   N   s    c         C   s   d  S(   N(    (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR&   R   s    c         C   s   d t  |  j ƒ d S(   Ns   Test(t   )(   t   strR,   (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   __str__U   s    c         C   s   d S(   s,   Generate a deterministic string for testing.s   <Class2 instance>(    (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR'   X   s    N(   R   R   R(   R   R)   R   R*   R.   R+   R,   t   setterR&   R1   R'   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR-   A   s   		c         C   s&   |  | } |  | } | r | S| Sd  S(   N(    (   t   xt   yt   zt   at   b(    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR,   ]   s
    

 t   TestTracingc           B   sh   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 j d ƒ d	 „  ƒ Z RS(
   c         G   s   t  t |  ƒ j | Œ  d  S(   N(   t   superR8   R
   (   R	   R$   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR
   f   s    c         C   s   t  ƒ  |  _ d  S(   N(   R   t   capture(   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   setUpi   s    c         C   s
   |  `  d  S(   N(   R:   (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   tearDownl   s    c         C   sG   |  j   t ƒ  j d d d ƒWd  QX|  j |  j  j ƒ  d d ƒ d  S(   Nt   foot   bart   bazsM   >> Class.method(self=<Class instance>, some='foo', other='value', bar='baz')
s   << Class.method
(   R:   R   R&   t   assertEqualR   (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   test_methodo   s
    
c         C   s;   |  j   t j ƒ  Wd  QX|  j |  j  j ƒ  d d ƒ d  S(   Ns+   >> Class.class_method(cls=<class 'Class'>)
s   << Class.class_method
(   R:   R   R   R@   R   (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   test_class_methodw   s
    
c         C   s;   |  j   t j ƒ  Wd  QX|  j |  j  j ƒ  d d ƒ d  S(   Ns   >> static_method()
s   << static_method
(   R:   R   R   R@   R   (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   test_static_method   s
    
c         C   s`   |  j  , t ƒ  } d | _ d | j k s1 t ‚ Wd  QX|  j |  j  j ƒ  d d d d ƒ d  S(   Ni   s3   >> Class._test_set(self=<Class instance>, value=1)
s   << Class._test_set
s*   >> Class._test_get(self=<Class instance>)
s   << Class._test_get -> 1
(   R:   R   R,   t   AssertionErrorR@   R   (   R	   R,   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   test_propertyˆ   s    
		c         C   sV   |  j  " t d d ƒ t d d t ƒ Wd  QX|  j |  j  j ƒ  d d d d ƒ d  S(   Ni   s   >> test(x=5, y=5, z=True)
s   << test -> 10
s   >> test(x=5, y=5, z=False)
s   << test -> 25
(   R:   R,   t   FalseR@   R   (   R	   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   test_function”   s    
s(   recursive decoration not yet implementedc         C   s‰   |  j  z t j t d t ƒt j ƒ  t j ƒ  t ƒ  } d | _ d | j k sX t ‚ | j	 ƒ  |  j
 |  j  j ƒ  d d ƒ Wd  QXd  S(   Nt	   recursivei   s,   >> Class2.class_method(cls=<type 'Class2'>)
s;   << Class2.class_method
>> static_method()
<< static_method
(   R:   R    R   R-   t   TrueR   R   R,   RD   R&   R@   R   (   R	   R,   (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   test_injectedŸ   s    


		
(   R   R   R
   R;   R<   RA   RB   RC   RE   RG   t   unittestt   skipRJ   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyR8   d   s   									t   __main__(    (   t   numba.unittest_supportt   unittest_supportRK   t   numbaR    t   numba.utilsR   t	   numba.sixR   R   t	   getLoggerR   t   setLevelt   INFOR   t
   orig_tracet   dotraceR   t   objectR   R-   RI   R,   t   TestCaseR8   R   t   main(    (    (    s7   lib/python2.7/site-packages/numba/tests/test_tracing.pyt   <module>   s"   	O	