ó
    ÷Þ j&  ã                   ó¸  • S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r
  SSKJr  SSKJr  SSKrSSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  \R,                  SS S:¬  r\R,                  SS S:¬  r\R,                  SS S:¬  r\R4                  R7                  S5      r\R:                  R=                  S5      r\R:                  R=                  S5      =(       d    \r \R:                  R=                  S5      r!\ =(       d    \!r"\R:                  R=                  S5      r#\$" \RJ                  " S5      5      r& " S S\'5      r( " S S\RR                  \(S9r)g)z
Tests for greenlet.

é    N)Úcollect)Úget_objects)Úactive_count)Úsleep)Útime)Úgreenlet)Ú
getcurrent)Úget_pending_cleanup_count)Úget_total_main_greenletsé   )Ú	leakchecké   )é   é   )r   é   )r   é   ÚwinÚGITHUB_ACTIONSÚTRAVISÚAPPVEYORÚGREENLET_MANYLINUXÚPy_GIL_DISABLEDc                   ó   • \ rS rSrS rSrg)ÚTestCaseMetaClassé/   c                 ó.  • Sn[        UR                  5       5       Ha  u  pVUR                  S5      (       d  M  [        U5      (       d  M/  UR	                  U5        U(       a  [
        R                  " U5      nXcU'   Mc     [        R                  XX#5      $ )NTÚtest)	ÚlistÚitemsÚ
startswithÚcallableÚpopr   Úwrap_refcountÚtypeÚ__new__)ÚclsÚ	classnameÚbasesÚ	classDictÚcheck_totalrefcountÚkeyÚvalues          ÚQ/var/www/html/gaurav/venv/lib/python3.13/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__r0   r/   r-   r   r   /   s   † õ>r/   r   c                   óŽ   ^ • \ rS rSrSrSr  SS jr\S4S jrSr	Sr
SrSrS	 rU 4S
 jrU 4S jrS rS rSS jrSS jrSrU =r$ )ÚTestCaseéE   gü©ñÒMbP?r   c                 óf  • U=(       d    U R                   nU=(       d    U R                  nU R                  n[        U5        [	        5       U R
                  -   n[        5       (       d-  [        5       U:”  d  U R                  (       d¡  [        5       U:”  a“  [        U5        [	        5       U:”  a8  [        S5        [        SUS[        5       5        [        SUS[        5       5        OB[        5       (       a  Mb  [        5       U:”  a  Mr  U R                  (       d  [        5       U:”  a  M“  [        5         g )NzTime limit exceeded.zThreads: Waiting for onlyz-->zMGlets : Waiting for only)Ú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¸4×;SÑ;SÐØ!7×!Z¸4×;ZÑ;ZÐØ×8Ñ8ˆ
ô 	ˆjÔÜ“V˜d×<Ñ<Ñ<ˆ
ô *×+Ñ+Ü&Ó(Ð+AÓAØ×1×1Ü0Ó2Ð5KÓKÜ�*ÔÜ‹v˜
Ó"ÜÐ,Ô-ÜÐ1Ð3IØÔ0Ó2ô4äÐ1Ð3IØÔ5Ó7ô9àô *×+Ó+Ü&Ó(Ð+AÕAØ×1×1Ü0Ó2Ð5KÕKô 	�	r/   Tc                 ó¾   ^• [        S5       H  n[        5         M     U(       a  [        U4S j[        5        5       5      $ [        U4S j[        5        5       5      $ )Nr   c              3   óF   >#   • U H  n[        U5      TL d  M  S v •  M     g7f©r   N)r$   ©Ú.0ÚxÚkinds     €r-   Ú	<genexpr>Ú)TestCase.count_objects.<locals>.<genexpr>r   s%   øé € ð á&�AÜ˜“7˜d�?÷ ‘Ú&ùs   ƒ!˜	!c              3   óL   >#   • U H  n[        UT5      (       d  M  S v •  M     g7frJ   )Ú
isinstancerK   s     €r-   rO   rP   x   s$   øé € ð 
á"�Ü˜!˜T×"÷ ‰AÚ"ùs   ƒ$›	$)Úranger   Úsumr   )rA   rN   Ú
exact_kindÚ_s    `  r-   Úcount_objectsÚTestCase.count_objectsl   sU   ø€ ô �q–ˆAÜŽIñ æÜô ä$œóó ð ô ô 
ä ”]ó
ó 
ð 	
r/   r   Fc                 ó.   • U R                  [        S5      $ )z:
Find all the greenlets and subclasses tracked by the GC.
F)rW   ÚRawGreenlet)rA   s    r-   Úcount_greenletsÚTestCase.count_greenletsƒ   s   € ð ×!Ñ!¤+¨uÓ5Ð5r/   c                 óè   >• [         TU ]  5         [        5         [        5       U l        [        5       U l        U R                  U R                  U R                  5        U R                  5       U l	        g ©N)
ÚsuperÚsetUpr	   r>   r:   r   r;   rF   r[   Úgreenlets_before_test©rA   Ú	__class__s    €r-   r`   ÚTestCase.setUp‰   sV   ø€ ô 	‰‰ŒÜŒÜ#6Ó#8ˆÔ Ü*BÓ*DˆÔ'Ø×&Ñ& t×'?Ñ'?À×A`ÑA`ÔaØ%)×%9Ñ%9Ó%;ˆÕ"r/   c                 ó”   >• [        U SS5      (       a  g U R                  U R                  U R                  5        [        TU ]  5         g )NÚskipTearDownF)ÚgetattrrF   r:   r;   r_   ÚtearDownrb   s    €r-   rh   ÚTestCase.tearDown“   s<   ø€ Ü�4˜¨×/Ñ/Øà×&Ñ& t×'?Ñ'?À×A`ÑA`ÔaÜ‰ÑÕr/   c                 ó`   • SS K n[        (       d  UR                  * UR                  * 4nU$ SnU$ )Nr   )r   l   	   l       )ÚsignalÚWINÚSIGABRTÚSIGSEGV)rA   rk   Úexpected_exits      r-   Ú,get_expected_returncodes_for_aborted_processÚ5TestCase.get_expected_returncodes_for_aborted_processš   sD   € Û÷J ’ð �^‰^ˆOð
 �^‰^ˆOð
ˆð Ðð
ð 	ð Ðr/   c                 ó°   •  [         R                  " 5       R                  5       R                  $ ! [         a  n[
        R                  " S5      UeSnAff = f)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)rA   Úes     r-   Úget_process_ussÚTestCase.get_process_ussÇ   sJ   € ð	@Ü—>’>Ó#×4Ñ4Ó6×:Ñ:Ð:øÜó 	@Ü×#Ò#Ð$7Ó8¸aÐ?ûð	@ús   ‚,/ ¯
A¹AÁAc                 ó¨  • SS K n[        R                  R                  [        R                  R	                  [
        5      U5      n UR                  [        R                  U/SUR                  S9$ ! UR                   aO  nU(       aB  [        S5        [        SU5        [        S5        [        UR                  5        [        S5        e S nAff = f)Nr   zutf-8)ÚencodingÚstderrz-----zFailed to run scriptz~~~~~z------)Ú
subprocessÚosÚpathÚjoinÚdirnameÚ__file__Úcheck_outputÚsysÚ
executableÚSTDOUTÚCalledProcessErrorr@   Úoutput)rA   Ú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   Á*A2 Á2CÂA
CÃCc                 ó"  • SS K nU R                  UR                  5       nU R                  USS9nUnS S S 5        Uc  U R	                  5       nU R                  WR                  R                  U5        UR                  $ ! , (       d  f       NS= f)Nr   F)r�   )r€   ÚassertRaisesrŠ   r�   rp   ÚassertInÚ	exceptionÚ
returncode)rA   rŒ   Ú	exitcodesr€   Úexcr‹   Ú__traceback_info__s          r-   ÚassertScriptRaisesÚTestCase.assertScriptRaisesí   sy   € ÛØ×Ñ˜z×<Ñ<Ô=ÀØ—_‘_ [¸e�_ÐDˆFØ!'Ð÷ >ð ÑØ×IÑIÓKˆIØ�‰�c—m‘m×.Ñ.°	Ô:Ø�}‰}Ð÷ >Õ=ús    B Â 
B)ra   r;   r:   )NN)Tr^   )r1   r2   r3   r4   r<   r=   rF   r   rW   ra   r:   r;   r?   r[   r`   rh   rp   r{   r�   rš   r5   Ú__classcell__)rc   s   @r-   r7   r7   E   sm   ø† à%*Ð"Ø !Ðð :>Ø9=ô ðD "&°$ô 
ð$ ÐØÐØ!"ÐØ Ðò6õ<õò+òZ@ô"÷*ò r/   r7   )Ú	metaclass)*Ú__doc__r�   r‡   Ú	sysconfigrx   Úgcr   r   Ú	threadingr   r>   r   r   rs   r   rZ   r	   Úgreenlet._greenletr
   r   Ú r   Úversion_infoÚPY312ÚPY313ÚPY314Úplatformr    rl   Ú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   r7   r0   r/   r-   Ú<module>r³      s/  ðñó 
Û 
Û Û å Ý Ý 9Ý Ý ã å ,Ý å 8Ý 7å à×Ñ˜˜!Ð Ñ'€Ø×Ñ˜˜!Ð Ñ'€ð 	×Ñ˜˜!Ð Ñ'€à	‡l�l×Ñ˜eÓ$€ØŸJ™JŸN™NÐ+;Ó<Ð Ø—J‘J—N‘N 8Ó,×IÐ0IÐ Ø—j‘j—n‘n ZÓ0Ð Ø!×8Ð%8€Ø—z‘z—~‘~Ð&:Ó;Ð ñ # 9×#;Ò#;Ð<MÓ#NÓOÐ ô>˜ô >ô,sˆx× Ñ Ð,=ó sr/   