U
    ,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 J/tmp/pip-unpacked-wheel-eu7e0c37/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
         	         )ZnumpyZnumbar   r   numba.experimentalr   object
assertTrue
isinstanceZassertPreciseEqualr   Z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&   r0   )r   retr   r   r   getD   s    zFDocsJitclassUsageTest.test_ex_jitclass_type_hints.<locals>.Counter.getN)r   r   r   int__annotations__r   r4   r   r   r   r   Counter=   s   
r7   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)r9   c                    s   || _   | _d S r   )r9   r8   )r   r9   )r7   r   r   r   N   s    zTDocsJitclassUsageTest.test_ex_jitclass_type_hints.<locals>.ListLoopIterator.__init__r1   c                 S   s   | j  t| j }| j| S r   )r8   r4   lenr9   )r   idxr   r   r   r4   R   s    zODocsJitclassUsageTest.test_ex_jitclass_type_hints.<locals>.ListLoopIterator.getN)r   r   r   r6   floatr   r4   r   r7   r/   r   r   ListLoopIteratorI   s   
r>   gQ	@gX9v@grh|?g      
   r&   )typingr/   r(   r   Znumba.typedr   assertEqualr8   r   ZassertAlmostEqualr4   r:   )r   r   Z	NumbaListr>   r9   Zloop_itrr;   r   r=   r   test_ex_jitclass_type_hints7   s    z1DocsJitclassUsageTest.test_ex_jitclass_type_hintsN)r   r   r   r.   rB   r   r   r   r   r      s   -r   __main__)ZunittestZnumba.tests.supportr   r   r   mainr   r   r   r   <module>   s   X