§
    µ³Ùg*  ã                   óV   — 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„ Zd„ ZdS )é    N)Úassert_)Úraises)ÚReentrancyLockÚnon_reentrantÚReentrancyErrorc                  ó*  ‡‡‡‡— t          d¦  «        ŠdgŠg Šˆˆˆfd„Šˆfd„t          d¦  «        D ¦   «         } | D ]}|                     ¦   «          Œ| D ]}|                     ¦   «          Œd                     ‰¦  «        Št	          ‰ ‰¦  «         d S )NÚfailureFc                 óH  •— 	 ‰5  t          ‰d          ¦  «         d‰d<   t          j        d| z  ¦  «         t          ‰d         ¦  «         d‰d<   d d d ¦  «         d S # 1 swxY w Y   d S # t          $ r+ ‰                     t          j        d¦  «        ¦  «         Y d S w xY w)Nr   Tgš™™™™™¹?Fé   )r   ÚtimeÚsleepÚ	ExceptionÚappendÚ	tracebackÚ
format_exc)ÚkÚexceptions_raisedÚfailflagÚlocks    €€€úY/granary/edev/quantum/lib/python3.11/site-packages/scipy/_lib/tests/test__threadsafety.pyÚworkerz%test_parallel_threads.<locals>.worker   s  ø€ ð	>Øð $ð $Ý˜H QœK˜Ñ(Ô(Ð(Ø"�˜‘Ý”
˜3 ™7Ñ#Ô#Ð#Ý˜ œÑ$Ô$Ð$Ø#�˜‘ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $øõ ð 	>ð 	>ð 	>Ø×$Ò$¥YÔ%9¸!Ñ%<Ô%<Ñ=Ô=Ð=Ð=Ð=Ð=ð	>øøøs5   ƒA, …AAÁA, ÁA#Á#A, Á&A#Á'A, Á,1B!Â B!c                 óD   •— g | ]}t          j        |fˆfd „	¬¦  «        ‘ŒS )c                 ó   •—  ‰| ¦  «        S ©N© )r   r   s    €r   ú<lambda>z2test_parallel_threads.<locals>.<listcomp>.<lambda>!   s   ø€ °6°6¸!±9´9€ ó    )Útarget)Ú	threadingÚThread)Ú.0r   r   s     €r   ú
<listcomp>z)test_parallel_threads.<locals>.<listcomp>!   sF   ø€ ð "ð "ð "Øõ Ô°Ð'<Ð'<Ð'<Ð'<Ð'<Ð=Ñ=Ô=ð "ð "ð "r   é   ú
)r   ÚrangeÚstartÚjoinr   )ÚthreadsÚtr   r   r   r   s     @@@@r   Útest_parallel_threadsr*      sÝ   øøøø€ õ ˜)Ñ$Ô$€Dàˆw€HØÐð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð"ð "ð "ð "Ý˜a™œð"ñ "ô "€Gàð ð ˆØ	�Š‰	Œ	ˆ	ˆ	Øð ð ˆØ	�Š‰ŒˆˆàŸ	š	Ð"3Ñ4Ô4ÐÝÐ!Ð!Ð#4Ñ5Ô5Ð5Ð5Ð5r   c                  óf   ‡ — t          ¦   «         ˆ fd„¦   «         Š t          t          ‰ d¦  «         d S )Nc                 ó   •—  ‰| ¦  «        S r   r   )ÚxÚfuncs    €r   r.   ztest_reentering.<locals>.func/   s   ø€ àˆt�A‰wŒwˆr   r   )r   Úassert_raisesr   )r.   s   @r   Útest_reenteringr0   ,   sF   ø€ õ �_„_ðð ð ð ñ „_ðõ •/ 4¨Ñ+Ô+Ð+Ð+Ð+r   )r   r   r   Únumpy.testingr   Úpytestr   r/   Úscipy._lib._threadsafetyr   r   r   r*   r0   r   r   r   ú<module>r4      s‘   ðØ Ð Ð Ð Ø €€€Ø Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø *Ð *Ð *Ð *Ð *Ð *à SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ Sð6ð 6ð 6ðB,ð ,ð ,ð ,ð ,r   