
    e!h'                     H    d dl Z d dlZd dlZd dlZd dlZd dlZ G d d      Zy)    Nc                       e Zd ZdZd Zd Zd Zej                  j                  ej                  j                  d      d               Zy)	TestGILzECheck if the GIL is properly released by scipy.interpolate functions.c                     g | _         y N)messages)selfs    h/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_gil.pysetup_methodzTestGIL.setup_method   s	        c                 :    | j                   j                  |       y r   )r   append)r   messages     r	   logzTestGIL.log   s    W%r   c                 h    | j                    G fddt        j                        } |       S )Nc                       e Zd Z fdZy)0TestGIL.make_worker_thread.<locals>.WorkerThreadc                 0     d           d       y )Ninterpolation startedinterpolation complete )r   argsr   targets    r	   runz4TestGIL.make_worker_thread.<locals>.WorkerThread.run   s    +,,-r   N)__name__
__module____qualname__r   )r   r   r   s   r	   WorkerThreadr      s    .r   r   )r   	threadingThread)r   r   r   r   r   s    `` @r	   make_worker_threadzTestGIL.make_worker_thread   s-    hh	. 	.9++ 	. ~r   z*race conditions, may depend on system load)reasonc                 (   d fd}d  |d      }| j                  |      }|j                          t        d      D ](  }t        j                  d       | j                  d       * |j                          | j                  g dk(  sJ y )	Nc                 z    t        j                  dd|       x}}t        j                  ||      \  }}||z  }|||fS )Nr     )nplinspacemeshgrid)n_pointsxyx_gridy_gridzs         r	   generate_paramsz9TestGIL.test_rectbivariatespline.<locals>.generate_params!   sA    KK422A[[A.NFFAa7Nr   c                     t        j                  dd      D ]A  } |      }t        j                         } |  t        j                         |z
  | kD  s?|c S  y )Ni  r$   )	itertoolscounttime)requested_timer(   r   time_startedr.   interpolates       r	   calibrate_delayz9TestGIL.test_rectbivariatespline.<locals>.calibrate_delay'   sR    %OOD$7  &x0#yy{T"99;->K r   c                 F    t         j                  j                  | ||       y r   )scipyr5   RectBivariateSpline)r)   r*   r-   s      r	   r5   z5TestGIL.test_rectbivariatespline.<locals>.interpolate/   s    11!Q:r      )r3   g      ?working)r   r;   r;   r;   r   )r    startranger2   sleepr   joinr   )r   r6   r   worker_threadir.   r5   s        @@r	   test_rectbivariatesplinez TestGIL.test_rectbivariatespline   s    		 	; a0//TBq 	 AJJsOHHY	  	}} !
 
 	
 
r   N)r   r   r   __doc__r
   r   r    pytestmarkxslowxfailrB   r   r   r	   r   r   
   sN    O&	 [[[[JK
 L 
r   r   )	r0   r   r2   numpyr%   rD   scipy.interpolater8   r   r   r   r	   <module>rJ      s!         5
 5
r   