o
    i                     @   sd   d dl Zd dlZd dlZd dlZd dlmZ ddlm	Z	 eG dd de	Z
eG dd de	ZdS )	    N)skip_parfors_unsupported   )DispatcherCacheUsecasesTestc                   @   sL   e Zd ZejeZejedZ	dZ
dddZdd Zdd	 Zd
d ZdS )TestParforsCacheparfors_cache_usecases.pyparfors_caching_test_fodderr   c                 C   s   |   }| d t||}td}tj|||| dd |j	 D }|j	 \}| 
|dg | |d  |   d S )Nr   
   c                 S   s   g | ]}|j jqS  )libraryhas_dynamic_globals).0cresr	   r	   ]/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/numba/tests/test_parfors_caching.py
<listcomp>   s    z-TestParforsCache.run_test.<locals>.<listcomp>F   )import_modulecheck_pycachegetattrnponestestingassert_allclosepy_func	overloadsvaluesassertEqualrun_in_separate_process)selffname	num_funcsmodfarydynamic_globalsr   r	   r	   r   run_test   s   


zTestParforsCache.run_testc                 C      d}|  | d S )Narrayexprs_caser$   r   r!   r	   r	   r   test_arrayexprs#      z TestParforsCache.test_arrayexprsc                 C   r%   )Nprange_caser'   r(   r	   r	   r   test_prange'   r*   zTestParforsCache.test_prangec                 C   s   d}| j |dd d S )Ncaller_case   )r   r'   r(   r	   r	   r   test_caller+   s   zTestParforsCache.test_callerN)r   )__name__
__module____qualname__ospathdirname__file__herejoinusecases_filemodnamer$   r)   r,   r/   r	   r	   r	   r   r      s    
r   c                   @   s:   e Zd ZejeZejedZ	dZ
dd Zdd ZdS )TestParforsCacheChangingThreadsr   r   c                 C   s~   dt | j| jd }i tjdt|i}tjtj	d|gtj
tj
|d}| \}}|jdkr=td|j d|  d	d S )
Nzif 1:
            import sys

            sys.path.insert(0, %(tempdir)r)
            mod = __import__(%(modname)r)
            mod.self_run()
            )tempdirr:   NUMBA_NUM_THREADSz-c)stdoutstderrenvr   zprocess failed with code z:stderr follows

)dictr<   r:   r3   environstr
subprocessPopensys
executablePIPEcommunicate
returncodeAssertionErrordecode)r   thread_countcodenew_envpopenouterrr	   r	   r   r   ;   s   

z7TestParforsCacheChangingThreads.run_in_separate_processc                 C   s6   |  d | d |  d | d |  d d S )Nr   r      r   )r   r   )r   r	   r	   r   test_cachingN   s
   



z,TestParforsCacheChangingThreads.test_cachingN)r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r   rU   r	   r	   r	   r   r;   2   s    r;   )os.pathr3   rE   rG   numpyr   numba.tests.supportr   rU   r   r   r;   r	   r	   r	   r   <module>   s    &