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   úV/home/ubuntu/transcripts/venv/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ÿ