
    UgS                     \    d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZ	 G d d          Z
dS )    N)assert_equalc                       e Zd ZdZd Zd Zd Zej        j	        ej        
                    d          d                         ZdS )	TestGILzECheck if the GIL is properly released by scipy.interpolate functions.c                     g | _         d S N)messages)selfs    _/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/interpolate/tests/test_gil.pysetup_methodzTestGIL.setup_method   s        c                 :    | j                             |           d S r   )r   append)r	   messages     r
   logzTestGIL.log   s    W%%%%%r   c                 b    | j          G fddt          j                  } |            S )Nc                       e Zd Z fdZdS )0TestGIL.make_worker_thread.<locals>.WorkerThreadc                 >     d               d           d S )Ninterpolation startedinterpolation complete )r	   argsr   targets    r
   runz4TestGIL.make_worker_thread.<locals>.WorkerThread.run   s6    +,,,,-----r   N)__name__
__module____qualname__r   )r   r   r   s   r
   WorkerThreadr      s8        . . . . . . . . .r   r   )r   	threadingThread)r	   r   r   r   r   s    `` @r
   make_worker_threadzTestGIL.make_worker_thread   s[    h	. 	. 	. 	. 	. 	. 	. 	. 	.9+ 	. 	. 	. |~~r   z*race conditions, may depend on system load)reasonc                 Z   d fd}d  |d          }|                      |          }|                                 t          d          D ]+}t          j        d           |                     d           ,|                                 t          | j        g d           d S )	Nc                 v    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"   sC    K4222A[A..NFFAa7Nr   c                     t          j        dd          D ]C} |          }t          j                    } |  t          j                    |z
  | k    r|c S Dd S )Ni  r%   )	itertoolscounttime)requested_timer)   r   time_startedr/   interpolates       r
   calibrate_delayz9TestGIL.test_rectbivariatespline.<locals>.calibrate_delay(   ss    %OD$77    &x00#y{{T""9;;->>KKK ?	   r   c                 H    t           j                            | ||           d S r   )scipyr6   RectBivariateSpline)r*   r+   r.   s      r
   r6   z5TestGIL.test_rectbivariatespline.<locals>.interpolate0   s#    11!Q:::::r      )r4   g      ?working)r   r<   r<   r<   r   )	r!   startranger3   sleepr   joinr   r   )r	   r7   r   worker_threadir/   r6   s        @@r
   test_rectbivariatesplinez TestGIL.test_rectbivariatespline   s    	 	 		  	  	  	  	  	 	; 	; 	; a000//TBBq 	  	 AJsOOOHHYT] %
 %
 %
 	 	 	 	 	r   N)r   r   r   __doc__r   r   r!   pytestmarkxslowxfailrC   r   r   r
   r   r      s        OO  & & &	 	 	 [[JKK  LK   r   r   )r1   r   r3   numpyr&   numpy.testingr   rE   scipy.interpolater9   r   r   r   r
   <module>rL      s                 & & & & & &     5 5 5 5 5 5 5 5 5 5r   