Ë
    âQ(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    ú^/var/www/skyplay_api_hub/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-   ú€ Ø�h‰hˆ÷	.ð 	.œ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   € Ü—K‘K  4¨Ó2Ð2ˆA�ÜŸ[™[¨¨AÓ.‰NˆF�FØ˜‘ˆAØ�a˜�7ˆNr   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   ø€ Ü%ŸO™O¨D°$Ó7ò  �Ù& xÓ0�Ü#Ÿy™y›{�Ù˜TÑ"Ü—9‘9“; Ñ-°Ó>Ø’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Ü�J‰J�sŒOØ�H‰H�YÕð	 ð 	×ÑÔØ�}‰}ò !
ò 
ð 	
ñ 
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   