U
    iâËdñ  ã                   @   s8   d dl Z d dlmZ G dd„ deƒZedkr4e  ¡  dS )é    N)ÚTestCasec                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚDocsJitclassUsageTestc                    s   dd l ‰ ddlm}m} ddlm} d|fd|d d … fg}||ƒG ‡ fdd„dtƒƒ}d}||ƒ}|  t||ƒ¡ |  	|j
|¡ ˆ j |jˆ j|ˆ jd	�¡ |  	|j|¡ ˆ j | d
¡d
ˆ j|ˆ jd	� ¡ ˆ j | d¡dˆ j|ˆ jd	� ¡ |  	| dd¡d¡ |  	| dd¡d
¡ d S )Nr   )Úint32Úfloat32©ÚjitclassÚvalueÚarrayc                       s8   e Zd Z‡ fdd„Zedd„ ƒZdd„ Zedd„ ƒZd	S )
z3DocsJitclassUsageTest.test_ex_jitclass.<locals>.Bagc                    s   || _ ˆ j|ˆ jd�| _d S )N©Zdtype)r   Úzerosr   r	   )Úselfr   ©Únp© ú_/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/doc_examples/test_jitclass.pyÚ__init__   s    z<DocsJitclassUsageTest.test_ex_jitclass.<locals>.Bag.__init__c                 S   s   | j jS ©N)r	   Úsize©r   r   r   r   r      s    z8DocsJitclassUsageTest.test_ex_jitclass.<locals>.Bag.sizec                 S   s(   t | jƒD ]}| j|  |7  < q
| jS r   )Úranger   r	   )r   ÚvalÚir   r   r   Ú	increment   s    z=DocsJitclassUsageTest.test_ex_jitclass.<locals>.Bag.incrementc                 S   s   | | S r   r   )ÚxÚyr   r   r   Úadd$   s    z7DocsJitclassUsageTest.test_ex_jitclass.<locals>.Bag.addN)	Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r   Ústaticmethodr   r   r   r   r   ÚBag   s   
r!   é   r
   é   é   é	   é   é   )ÚnumpyZnumbar   r   Únumba.experimentalr   ÚobjectÚ
assertTrueÚ
isinstanceZassertPreciseEqualr   ÚtestingZassert_allcloser	   r   r   r   Zonesr   )r   r   r   r   Úspecr!   ÚnZmybagr   r   r   Útest_ex_jitclass
   s,    þÿÿz&DocsJitclassUsageTest.test_ex_jitclassc                    s¸   ddl m‰ ddlm} ddlm} |G dd„ dƒƒ‰ |G ‡ ‡fdd„dƒƒ}|dd	d
dgƒ}||ƒ}tdƒD ]D}|  |jj|¡ |  	| 
¡ ||t|ƒ  ¡ |  |jj|d ¡ qnd S )Nr   )ÚListr   c                   @   s,   e Zd ZU eed< dd„ Zedœdd„ZdS )zBDocsJitclassUsageTest.test_ex_jitclass_type_hints.<locals>.Counterr   c                 S   s
   d| _ d S )Nr   ©r   r   r   r   r   r   A   s    zKDocsJitclassUsageTest.test_ex_jitclass_type_hints.<locals>.Counter.__init__©Úreturnc                 S   s   | j }|  j d7  _ |S )Nr&   r2   )r   Úretr   r   r   ÚgetD   s    zFDocsJitclassUsageTest.test_ex_jitclass_type_hints.<locals>.Counter.getN)r   r   r   ÚintÚ__annotations__r   r6   r   r   r   r   ÚCounter=   s   
r9   c                       sF   e Zd ZU ” ed< ”e ed< ”e dœ‡ fdd„Zedœdd„Zd	S )
zKDocsJitclassUsageTest.test_ex_jitclass_type_hints.<locals>.ListLoopIteratorÚcounterÚitems)r;   c                    s   || _ ˆ ƒ | _d S r   )r;   r:   )r   r;   )r9   r   r   r   N   s    zTDocsJitclassUsageTest.test_ex_jitclass_type_hints.<locals>.ListLoopIterator.__init__r3   c                 S   s   | j  ¡ t| jƒ }| j| S r   )r:   r6   Úlenr;   )r   Úidxr   r   r   r6   R   s    zODocsJitclassUsageTest.test_ex_jitclass_type_hints.<locals>.ListLoopIterator.getN)r   r   r   r8   Úfloatr   r6   r   ©r9   r1   r   r   ÚListLoopIteratorI   s   
r@   g…ëQ¸	@gX9´Èv¾@g°rh‘í|¿?g      Àé
   r&   )Útypingr1   r)   r   Znumba.typedr   ÚassertEqualr:   r   ZassertAlmostEqualr6   r<   )r   r   Z	NumbaListr@   r;   Zloop_itrr=   r   r?   r   Útest_ex_jitclass_type_hints7   s    z1DocsJitclassUsageTest.test_ex_jitclass_type_hintsN)r   r   r   r0   rD   r   r   r   r   r      s   -r   Ú__main__)ZunittestZnumba.tests.supportr   r   r   Úmainr   r   r   r   Ú<module>   s   X