o
    Ö­j*  ã                   @   sX   d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ dd„ Zdd„ ZdS )	é    N)Úassert_)Úraises)ÚReentrancyLockÚnon_reentrantÚReentrancyErrorc                     sv   t dƒ‰dg‰g ‰ ‡ ‡‡fdd„‰‡fdd„tdƒD ƒ} | D ]}| ¡  q| D ]}| ¡  q'd ˆ ¡‰ tˆ  ˆ ƒ d S )	NÚfailureFc                    sŒ   z3ˆ�& t ˆd  ƒ dˆd< t d|  ¡ t ˆd ƒ dˆd< W d   ƒ W d S 1 s,w   Y  W d S  tyE   ˆ  t d¡¡ Y d S w )Nr   Tgš™™™™™¹?Fé   )r   ÚtimeÚsleepÚ	ExceptionÚappendÚ	tracebackÚ
format_exc©Úk)Úexceptions_raisedÚfailflagÚlock© ú`/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/_lib/tests/test__threadsafety.pyÚworker   s   
&ûÿz%test_parallel_threads.<locals>.workerc                    s$   g | ]}t j|f‡ fd d„	d�‘qS )c                    ó   ˆ | ƒS ©Nr   r   ©r   r   r   Ú<lambda>!   s    z2test_parallel_threads.<locals>.<listcomp>.<lambda>)Útarget)Ú	threadingÚThread)Ú.0r   r   r   r   Ú
<listcomp>!   s    ÿz)test_parallel_threads.<locals>.<listcomp>é   Ú
)r   ÚrangeÚstartÚjoinr   )ÚthreadsÚtr   )r   r   r   r   r   Útest_parallel_threads   s   
ÿ


r'   c                      s"   t ƒ ‡ fdd„ƒ‰ ttˆ dƒ d S )Nc                    r   r   r   )Úx©Úfuncr   r   r*   /   s   ztest_reentering.<locals>.funcr   )r   Úassert_raisesr   r   r   r)   r   Útest_reentering,   s   r,   )r   r	   r   Únumpy.testingr   Úpytestr   r+   Úscipy._lib._threadsafetyr   r   r   r'   r,   r   r   r   r   Ú<module>   s    !