+
    ÃìÜj&  ã                   óÜ  € R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t
 ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^RIHt ]P,                  R,          R8¬  t]P,                  R,          R8¬  t]P,                  R,          R8¬  t]P4                  P7                  R4      t]P:                  P=                  R4      t]P:                  P=                  R4      ;'       g    ]t ]P:                  P=                  R4      t!] ;'       g    ]!t"]P:                  P=                  R4      t#]$! ]PJ                  ! R4      4      t& ! R R]'4      t( ! R R]PR                  ](R7      t)R# )z
Tests for greenlet.

N)Úcollect)Úget_objects)Úactive_count)Úsleep)Útime)Úgreenlet)Ú
getcurrent)Úget_pending_cleanup_count)Úget_total_main_greenlets)Ú	leakcheck:Né   NÚwinÚGITHUB_ACTIONSÚTRAVISÚAPPVEYORÚGREENLET_MANYLINUXÚPy_GIL_DISABLEDc                   ó&   a € ] tR t^/t o R tRtV tR# )ÚTestCaseMetaClassc                ó4  € R p\        VP                  4       4       Fd  w  rVVP                  R4      '       g   K  \        V4      '       g   K1  VP	                  V4       V'       d   \
        P                  ! V4      pWcV&   Kf  	  \        P                  WW#4      # )TÚtest)	ÚlistÚitemsÚ
startswithÚcallableÚpopr   Úwrap_refcountÚtypeÚ__new__)ÚclsÚ	classnameÚbasesÚ	classDictÚcheck_totalrefcountÚkeyÚvalues   &&&&   ÚU/opt/render/project/src/.venv/lib/python3.14/site-packages/greenlet/tests/__init__.pyr   ÚTestCaseMetaClass.__new__2   st   € ð
 #Ðô
 ˜yŸ™Ó0Ö1‰JˆCØ�~‰~˜f×%Ô%¬(°5¯/¬/Ø—‘˜cÔ"ß&Ü%×3Ò3°EÓ:�EØ!&˜#“ñ 2ô �|‰|˜C¨EÓ=Ð=ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r&   r   r   /   s   ø‡ € ÷>ð >r(   r   c                   ó”   a a€ ] tR t^Et oRt^tRR lt]R3R lt^ t	^ t
^ tRtR tV 3R ltV 3R ltR	 tR
 tRR ltRR ltRtVtV ;t# )ÚTestCasegü©ñÒMbP?c                óþ  € T;'       g    V P                   pT;'       g    V P                  pV P                  p\        V4       \	        4       V P
                  ,           p\        4       '       g1   \        4       V8”  g"   V P                  '       gd   \        4       V8”  dU   \        V4       \	        4       V8”  g   K\  \        R 4       \        RVR\        4       4       \        RVR\        4       4        \        4        R# )zTime limit exceeded.zThreads: Waiting for onlyz-->zMGlets : Waiting for onlyN)Úthreads_before_testÚmain_greenlets_before_testÚcleanup_attempt_sleep_durationr   r   Úcleanup_max_sleep_secondsr	   Úactive_thread_countÚexpect_greenlet_leakr
   Úprintr   )ÚselfÚinitial_active_threadsÚinitial_main_greenletsÚ
sleep_timeÚ
quit_afters   &&&  r&   Úwait_for_pending_cleanupsÚ"TestCase.wait_for_pending_cleanupsJ   sÓ   € ð "8×!SÐ!S¸4×;SÑ;SÐØ!7×!ZÐ!Z¸4×;ZÑ;ZÐØ×8Ñ8ˆ
ô 	ˆjÔÜ“V˜d×<Ñ<Õ<ˆ
ô *×+Ò+Ü&Ó(Ð+AÔAØ×1×1Ð1Ü0Ó2Ð5KÔKÜ�*ÔÜ‹v˜
Ö"ÜÐ,Ô-ÜÐ1Ð3IØÔ0Ó2ô4äÐ1Ð3IØÔ5Ó7ô9àÜŽ	r(   Tc                óÀ   a€ \        ^4       F  p\        4        K  	  V'       d   \        V3R l\        4        4       4      # \        V3R l\        4        4       4      # )é   c              3   óJ   <"  € T F  p\        V4      SJ g   K  ^x € K  	  R# 5i©é   N)r   ©Ú.0ÚxÚkinds   & €r&   Ú	<genexpr>Ú)TestCase.count_objects.<locals>.<genexpr>r   s%   øé € ð á&�AÜ˜“7˜d�?÷ ’Û&ùs   ƒ#™
#c              3   óP   <"  € T F  p\        VS4      '       g   K  ^x € K  	  R# 5irE   )Ú
isinstancerG   s   & €r&   rK   rL   x   s$   øé € ð 
á"�Ü˜!˜T×"÷ ŠAÛ"ùs   ƒ&œ
&)Úranger   Úsumr   )r;   rJ   Ú
exact_kindÚ_s   &f& r&   Úcount_objectsÚTestCase.count_objectsl   sU   ø€ ô �q–ˆAÜŽIñ çÜô ä$œóó ð ô ô 
ä ”]ó
ó 
ð 	
r(   Fc                ó.   € V P                  \        R4      # )z:
Find all the greenlets and subclasses tracked by the GC.
F)rS   ÚRawGreenlet)r;   s   &r&   Úcount_greenletsÚTestCase.count_greenletsƒ   s   € ð ×!Ñ!¤+¨uÓ5Ð5r(   c                óê   <€ \         SV `  4        \        4        \        4       V n        \        4       V n        V P                  V P                  V P                  4       V P                  4       V n	        R # ©N)
ÚsuperÚsetUpr   r8   r4   r
   r5   r@   rW   Úgreenlets_before_test©r;   Ú	__class__s   &€r&   r\   ÚTestCase.setUp‰   sV   ø€ ô 	‰‰ŒÜŒÜ#6Ó#8ˆÔ Ü*BÓ*DˆÔ'Ø×&Ñ& t×'?Ñ'?À×A`ÑA`ÔaØ%)×%9Ñ%9Ó%;ˆÖ"r(   c                óš   <€ \        V R R4      '       d   R# V P                  V P                  V P                  4       \        SV `  4        R# )ÚskipTearDownFN)Úgetattrr@   r4   r5   r[   ÚtearDownr^   s   &€r&   rd   ÚTestCase.tearDown“   s<   ø€ Ü�4˜¨×/Ò/Ùà×&Ñ& t×'?Ñ'?À×A`ÑA`ÔaÜ‰ÑÖr(   c                ób   € ^ RI p\        '       g   VP                  ) VP                  ) 3pV# RpV# )é    N)rC   l   	   l       )ÚsignalÚWINÚSIGABRTÚSIGSEGV)r;   rh   Úexpected_exits   &  r&   Ú,get_expected_returncodes_for_aborted_processÚ5TestCase.get_expected_returncodes_for_aborted_processš   sD   € Û÷J “ð �^‰^ˆOð
 �^‰^ˆOð
ˆð Ðð
ð 	ð Ðr(   c                ó²   €  \         P                  ! 4       P                  4       P                  #   \         d   p\
        P                  ! R4      ThRp?ii ; i)aH  
Return the current process's USS in bytes.

uss is available on Linux, macOS, Windows. Also known as
"Unique Set Size", this is the memory which is unique to a
process and which would be freed if the process was terminated
right now.

If this is not supported by ``psutil``, this raises the
:exc:`unittest.SkipTest` exception.
zuss not supportedN)ÚpsutilÚProcessÚmemory_full_infoÚussÚAttributeErrorÚunittestÚSkipTest)r;   Úes   & r&   Úget_process_ussÚTestCase.get_process_ussÇ   sJ   € ð	@Ü—>’>Ó#×4Ñ4Ó6×:Ñ:Ð:øÜô 	@Ü×#Ò#Ð$7Ó8¸aÐ?ûð	@ús   ‚,/ ¯AºAÁAc                ó²  € ^ RI p\        P                  P                  \        P                  P	                  \
        4      V4      p VP                  \        P                  V.RVP                  R7      #   TP                   dQ   pT'       dC   \        R4       \        RT4       \        R4       \        TP                  4       \        R4       h Rp?ii ; i)rg   Nzutf-8)ÚencodingÚstderrz-----zFailed to run scriptz~~~~~z------)Ú
subprocessÚosÚpathÚjoinÚdirnameÚ__file__Úcheck_outputÚsysÚ
executableÚSTDOUTÚCalledProcessErrorr:   Úoutput)r;   Úscript_nameÚshow_outputr}   ÚscriptÚexs   &&&   r&   Ú
run_scriptÚTestCase.run_scriptØ   sª   € ÛÜ—‘—‘Ü�G‰G�O‰OœHÓ%Øó
ˆð
	Ø×*Ñ*¬C¯N©N¸FÐ+CØ4;Ø2<×2CÑ2Cð +ó Eð Eøð ×,Ñ,ô 	ßÜ�g”ÜÐ,¨fÔ5Ü�g”Ü�b—i‘iÔ Ü�h”Øûð	ús   Á-A5 Á5CÂACÃCc                ó>  € ^ RI pV P                  VP                  4      ;_uu_ 4       pV P                  VRR7      pTpRRR4       Vf   V P	                  4       pV P                  XP                  P                  V4       VP                  #   + '       g   i     LV; i)rg   NF)rŠ   )r}   ÚassertRaisesr‡   r�   rm   ÚassertInÚ	exceptionÚ
returncode)r;   r‰   Ú	exitcodesr}   Úexcrˆ   Ú__traceback_info__s   &&&    r&   ÚassertScriptRaisesÚTestCase.assertScriptRaisesí   s|   € ÛØ×Ñ˜z×<Ñ<×=Ô=ÀØ—_‘_ [¸e�_ÓDˆFØ!'Ð÷ >ð ÒØ×IÑIÓKˆIØ�‰�c—m‘m×.Ñ.°	Ô:Ø�}‰}Ð÷ >×=ús   ¨BÂB	)r]   r5   r4   )NN)TrZ   )r*   r+   r,   r-   r6   r7   r@   r   rS   r]   r4   r5   r9   rW   r\   rd   rm   rx   r�   r—   r.   r/   Ú__classcell__)r_   r0   s   @@r&   r2   r2   E   sg   ù‡ € à%*Ð"Ø !Ðô ðD "&°$ô 
ð$ ÐØÐØ!"ÐØ Ðò6õ<õò+òZ@ô"÷*ô r(   r2   )Ú	metaclass)rC   é   )rC   é   )rC   é   )*Ú__doc__r~   r„   Ú	sysconfigru   Úgcr   r   Ú	threadingr   r8   r   r   rp   r   rV   r   Úgreenlet._greenletr	   r
   Ú r   Úversion_infoÚPY312ÚPY313ÚPY314Úplatformr   ri   ÚenvironÚgetÚRUNNING_ON_GITHUB_ACTIONSÚRUNNING_ON_TRAVISÚRUNNING_ON_APPVEYORÚRUNNING_ON_CIÚRUNNING_ON_MANYLINUXÚboolÚget_config_varÚRUNNING_ON_FREETHREAD_BUILDr   r   r2   r)   r(   r&   Ú<module>r³      s/  ðñó 
Û 
Û Û å Ý Ý 9Ý Ý ã å ,Ý å 8Ý 7å à×Ñ˜Õ Ñ'€Ø×Ñ˜Õ Ñ'€ð 	×Ñ˜Õ Ñ'€à	‡l�l×Ñ˜eÓ$€ØŸJ™JŸN™NÐ+;Ó<Ð Ø—J‘J—N‘N 8Ó,×IÐIÐ0IÐ Ø—j‘j—n‘n ZÓ0Ð Ø!×8Ð8Ð%8€Ø—z‘z—~‘~Ð&:Ó;Ð ñ # 9×#;Ò#;Ð<MÓ#NÓOÐ ô>˜ô >ô,sˆx× Ñ Ð,=÷ sr(   