U
    9%e                     @   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re  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   W/var/www/html/Darija-Ai-API/env/lib/python3.8/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__   s    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   s   d S r   r   clsr   r   r   class_method%   s    zClass.class_methodc                   C   s   d S r   r   r   r   r   r   static_method*   s    zClass.static_methodNc                 C   s   | j S r   _Class__testr   r   r   r   	_test_get1   s    zClass._test_getc                 C   s
   || _ d S r   r&   r   r   r   r   r   	_test_set4   s    zClass._test_setr   c                 O   s   d S r   r   )r   Zsomeotherargskwdsr   r   r   method9   s    zClass.methodc                 C   s   dS ),Generate a deterministic string for testing.z<Class instance>r   r   r   r   r   __repr__=   s    zClass.__repr__)r   )r   r   r   r   r   classmethodr$   staticmethodr%   r'   r(   r*   propertytestr.   r0   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   s   d S r   r   r"   r   r   r   r$   B   s    zClass2.class_methodc                   C   s   d S r   r   r   r   r   r   r%   F   s    zClass2.static_methodNc                 C   s   | j S r   _Class2__testr   r   r   r   r4   K   s    zClass2.testc                 C   s
   || _ d S r   r6   r)   r   r   r   r4   N   s    c                 C   s   d S r   r   r   r   r   r   r.   R   s    zClass2.methodc                 C   s   dt | j d S )NzTest())strr4   r   r   r   r   __str__U   s    zClass2.__str__c                 C   s   dS )r/   z<Class2 instance>r   r   r   r   r   r0   X   s    zClass2.__repr__)r   r   r   r1   r$   r2   r%   r7   r3   r4   setterr.   r:   r0   r   r   r   r   r5   A   s   



r5   Tc                 C   s    | | }| | }|r|S |S d S r   r   )xyzabr   r   r   r4   ]   s
     r4   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   )superrA   r   )r   r,   	__class__r   r   r   f   s    zTestTracing.__init__c                 C   s   t  | _d S r   )r   capturer   r   r   r   setUpi   s    zTestTracing.setUpc                 C   s   | ` d S r   )rE   r   r   r   r   tearDownl   s    zTestTracing.tearDownc              	   C   s8   | j  t jddd W 5 Q R X | | j  d d S )NZfooZbaz)barz]>> Class.method(self=<Class instance>, some='foo', other='value', bar='baz')
<< Class.method
)rE   r!   r.   assertEqualr   r   r   r   r   test_methodo   s
    zTestTracing.test_methodc              	   C   s0   | j  t  W 5 Q R X | | j  d d S )NzA>> Class.class_method(cls=<class 'Class'>)
<< Class.class_method
)rE   r!   r$   rI   r   r   r   r   r   test_class_methodw   s
    zTestTracing.test_class_methodc              	   C   s0   | j  t  W 5 Q R X | | j  d d S )Nz$>> static_method()
<< static_method
)rE   r!   r%   rI   r   r   r   r   r   test_static_method   s
    zTestTracing.test_static_methodc              	   C   sB   | j   t }d|_d|jks"tW 5 Q R X | | 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
)rE   r!   r4   AssertionErrorrI   r   r   r4   r   r   r   test_property   s    zTestTracing.test_propertyc              	   C   s>   | j  tdd tddd W 5 Q R X | | j  d d S )N   FzQ>> test(x=5, y=5, z=True)
<< test -> 10
>> test(x=5, y=5, z=False)
<< test -> 25
)rE   r4   rI   r   r   r   r   r   test_function   s    
zTestTracing.test_functionz(recursive decoration not yet implementedc              	   C   sh   | j X tjtdd t  t  t }d|_d|jks@t|  | 	| j 
 d W 5 Q R X d S )NT)	recursiverM   zg>> Class2.class_method(cls=<type 'Class2'>)
<< Class2.class_method
>> static_method()
<< static_method
)rE   r   r   r5   r$   r%   r4   rN   r.   rI   r   rO   r   r   r   test_injected   s    zTestTracing.test_injected)r   r   r   r   rF   rG   rJ   rK   rL   rP   rR   unittestskiprT   __classcell__r   r   rC   r   rA   d   s   	rA   __main__)T)ior   r   rU   Z
numba.corer   	getLoggerr   setLevelINFOr   Z
orig_traceZdotracer   objectr!   r5   r4   ZTestCaserA   r   mainr   r   r   r   <module>   s    
O