o
    i                     @   s   d dl mZ d dlZd dlZd dlmZ edZeej	 ej
Zeje_
G dd dZG dd deZG d	d
 d
eZej
dddZG dd dejZee_
edkr[e  dS dS )    )StringION)tracingtracec                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )CapturedTracez-Capture the trace temporarily for validation.c                 C   s   t  | _t| j| _d S N)r   bufferloggingStreamHandlerhandlerself r   g/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_tracing.py__init__   s   zCapturedTrace.__init__c                 C   s$   t j| _t | _t| jgt _d S r   )loggerhandlers	_handlersr   r   r   r	   r   r   r   r   	__enter__   s   zCapturedTrace.__enter__c                 C   s   | j t_d S r   )r   r   r   )r   typevalue	tracebackr   r   r   __exit__      zCapturedTrace.__exit__c                 C   s   | j  }|td d}|S )N. )r   getvaluereplace__name__)r   logr   r   r   r      s   
zCapturedTrace.getvalueN)r   
__module____qualname____doc__r   r   r   r   r   r   r   r   r      s    r   c                   @   sl   e Zd Zejedd Zejedd ZdZ	dd Z
dd	 Zeee
eZejdddZdd ZdS )Classc                 C      d S r   r   clsr   r   r   class_method%      zClass.class_methodc                   C   r#   r   r   r   r   r   r   static_method*   r'   zClass.static_methodNc                 C      | j S r   _Class__testr   r   r   r   	_test_get1   s   zClass._test_getc                 C   
   || _ d S r   r*   r   r   r   r   r   	_test_set4   s   
zClass._test_setr   c                 O   r#   r   r   )r   Zsomeotherargskwdsr   r   r   method9      zClass.methodc                 C      dS ),Generate a deterministic string for testing.z<Class instance>r   r   r   r   r   __repr__=   r4   zClass.__repr__)r   )r   r   r    r   r   classmethodr&   staticmethodr(   r+   r,   r/   propertytestr3   r7   r   r   r   r   r"   #   s    r"   c                   @   sZ   e Zd Zedd Zedd ZdZedd Z	e	j
dd Z	d	d
 Zdd Zdd ZdS )Class2c                 C   r#   r   r   r$   r   r   r   r&   B   r4   zClass2.class_methodc                   C   r#   r   r   r   r   r   r   r(   F   r4   zClass2.static_methodNc                 C   r)   r   _Class2__testr   r   r   r   r;   K   s   zClass2.testc                 C   r-   r   r=   r.   r   r   r   r;   N   s   
c                 C   r#   r   r   r   r   r   r   r3   R   s   zClass2.methodc                 C   s   dt | j d S )NzTest())strr;   r   r   r   r   __str__U   s   zClass2.__str__c                 C   r5   )r6   z<Class2 instance>r   r   r   r   r   r7   X   r4   zClass2.__repr__)r   r   r    r8   r&   r9   r(   r>   r:   r;   setterr3   rA   r7   r   r   r   r   r<   A   s    



r<   Tc                 C   s   | | }| | }|r|S |S r   r   )xyzabr   r   r   r;   ]   s   r;   c                       sf   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
eddd Z  ZS )TestTracingc                    s   t t| j|  d S r   )superrH   r   )r   r1   	__class__r   r   r   f   s   zTestTracing.__init__c                 C   s   t  | _d S r   )r   capturer   r   r   r   setUpi   r   zTestTracing.setUpc                 C   s   | ` d S r   )rL   r   r   r   r   tearDownl   s   zTestTracing.tearDownc                 C   sL   | j  t jddd W d    n1 sw   Y  | | j  d d S )NZfooZbaz)barz]>> Class.method(self=<Class instance>, some='foo', other='value', bar='baz')
<< Class.method
)rL   r"   r3   assertEqualr   r   r   r   r   test_methodo   s   zTestTracing.test_methodc                 C   D   | j  t  W d    n1 sw   Y  | | j  d d S )NzA>> Class.class_method(cls=<class 'Class'>)
<< Class.class_method
)rL   r"   r&   rP   r   r   r   r   r   test_class_methodw      
zTestTracing.test_class_methodc                 C   rR   )Nz$>> static_method()
<< static_method
)rL   r"   r(   rP   r   r   r   r   r   test_static_method   rT   zTestTracing.test_static_methodc                 C   sV   | j  t }d|_d|jksJ W d    n1 sw   Y  | | j  d d S )N   z>> Class._test_set(self=<Class instance>, value=1)
<< Class._test_set
>> Class._test_get(self=<Class instance>)
<< Class._test_get -> 1
)rL   r"   r;   rP   r   r   r;   r   r   r   test_property   s   zTestTracing.test_propertyc                 C   sR   | j  tdd tddd W d    n1 sw   Y  | | j  d d S )N   FzQ>> test(x=5, y=5, z=True)
<< test -> 10
>> test(x=5, y=5, z=False)
<< test -> 25
)rL   r;   rP   r   r   r   r   r   test_function   s   
zTestTracing.test_functionz(recursive decoration not yet implementedc                 C   s~   | j 2 tjtdd t  t  t }d|_d|jks J |  | | j 	 d W d    d S 1 s8w   Y  d S )NT)	recursiverV   zg>> Class2.class_method(cls=<type 'Class2'>)
<< Class2.class_method
>> static_method()
<< static_method
)
rL   r   r   r<   r&   r(   r;   r3   rP   r   rW   r   r   r   test_injected   s   "zTestTracing.test_injected)r   r   r    r   rM   rN   rQ   rS   rU   rX   rZ   unittestskipr\   __classcell__r   r   rJ   r   rH   d   s    	rH   __main__)T)ior   r   r]   Z
numba.corer   	getLoggerr   setLevelINFOr   Z
orig_traceZdotracer   objectr"   r<   r;   ZTestCaserH   r   mainr   r   r   r   <module>   s$    
O