o
    Z۷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   N/home/ubuntu/vllm_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   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__=   r5   zClass.__repr__)r   )r   r   r    r   r   classmethodr&   staticmethodr(   r+   r,   r/   propertytestr4   r8   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   r5   zClass2.class_methodc                   C   r#   r   r   r   r   r   r   r(   F   r5   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   r4   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   r6   )r7   z<Class2 instance>r   r   r   r   r   r8   X   r5   zClass2.__repr__)r   r   r    r9   r&   r:   r(   r?   r;   r<   setterr4   rB   r8   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   )superrI   r   )r   r2   	__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   )rM   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 )Nfoobaz)barz]>> Class.method(self=<Class instance>, some='foo', other='value', bar='baz')
<< Class.method
)rM   r"   r4   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
)rM   r"   r&   rS   r   r   r   r   r   test_class_methodw      
zTestTracing.test_class_methodc                 C   rU   )Nz$>> static_method()
<< static_method
)rM   r"   r(   rS   r   r   r   r   r   test_static_method   rW   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
)rM   r"   r<   rS   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
)rM   r<   rS   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)	recursiverY   zg>> Class2.class_method(cls=<type 'Class2'>)
<< Class2.class_method
>> static_method()
<< static_method
)
rM   r   r   r=   r&   r(   r<   r4   rS   r   rZ   r   r   r   test_injected   s   "zTestTracing.test_injected)r   r   r    r   rN   rO   rT   rV   rX   r[   r]   unittestskipr_   __classcell__r   r   rK   r   rI   d   s    	rI   __main__)T)ior   r   r`   
numba.corer   	getLoggerr   setLevelINFOr   
orig_tracedotracer   objectr"   r=   r<   TestCaserI   r   mainr   r   r   r   <module>   s$    
O