
    Ah&                        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          Z/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/greenlet/tests/__init__.pyr%   TestCaseMetaClass.__new__2   st    
 #
 y01JC~~f%%(5//c"&%33E:E!&# 2 ||CE==     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$ )TestCaseE   gMbP?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!S4;S;S!7!Z4;Z;Z88
 	jVd<<<
 *++&(+AA11025KK*v
",-13I02413I579 *++&(+AA11025K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   H   >#    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7d? &s   "	"c              3   N   >#    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_process5TestCase.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8a?	@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    GGOOH%

	**CNNF+C4;2<2C2C + E E ,, 	g,f5gbii 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_DF!' > IIKIcmm..	:}} >=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 !'!' 	!'	lle$JJNN+;< JJNN8,I0I jjnnZ0 !8%8zz~~&:;  #9#;#;<M#NO > >,sx  ,= sr/   