§
    dŠtj&  ã                   ó¤  — d Z ddlZ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
 ddlmZ ddlmZ ddlZddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ej        dd…         dk    Zej        dd…         dk    Zej        dd…         dk    Zej                             d¦  «        Zej                             d¦  «        Zej                             d¦  «        peZ ej                             d¦  «        Z!e pe!Z"ej                             d¦  «        Z# e$ ej%        d¦  «        ¦  «        Z& G d„ de'¦  «        Z( G d„ dej)        e(¬¦  «        Z)dS )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                   ó   — e Zd Zd„ ZdS )ÚTestCaseMetaClassc                 ó6  — d}t          |                     ¦   «         ¦  «        D ]Y\  }}|                     d¦  «        r?t          |¦  «        r0|                     |¦  «         |rt          j        |¦  «        }|||<   ŒZt                               | |||¦  «        S )NTÚtest)	ÚlistÚitemsÚ
startswithÚcallableÚpopr   Úwrap_refcountÚtypeÚ__new__)ÚclsÚ	classnameÚbasesÚ	classDictÚcheck_totalrefcountÚkeyÚvalues          úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/greenlet/tests/__init__.pyr$   zTestCaseMetaClass.__new__2   sž   € ð
 #Ðõ
 ˜yŸšÑ0Ô0Ñ1Ô1ð 	'ð 	'‰JˆC�Ø�~Š~˜fÑ%Ô%ð '­(°5©/¬/ð 'Ø—’˜cÑ"Ô"Ð"Ø&ð ;Ý%Ô3°EÑ:Ô:�EØ!&�	˜#‘øÝ�|Š|˜C ¨E°9Ñ=Ô=Ð=ó    N)Ú__name__Ú
__module__Ú__qualname__r$   © r-   r,   r   r   /   s#   € € € € € ð>ð >ð >ð >ð >r-   r   c                   óz   ‡ — e Zd ZdZdZ	 	 dd„Zedfd„ZdZdZ	dZ
dZd	„ Zˆ fd
„Zˆ fd„Zd„ Zd„ Zdd„Zdd„Zˆ xZS )ÚTestCasegü©ñÒMbP?r   Nc                 ó\  — |p| j         }|p| j        }| j        }t          |¦  «         t	          ¦   «         | j        z   }t          ¦   «         s+t          ¦   «         |k    s| j        s¸t          ¦   «         |k    r¦t          |¦  «         t	          ¦   «         |k    rLt          d¦  «         t          d|dt          ¦   «         ¦  «         t          d|dt          ¦   «         ¦  «         n9t          ¦   «         °{t          ¦   «         |k    °�| j        st          ¦   «         |k    °¦t          ¦   «          d S )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_cleanupsz"TestCase.wait_for_pending_cleanupsJ   sO  € ð "8Ð!S¸4Ô;SÐØ!7Ð!Z¸4Ô;ZÐØÔ8ˆ
õ 	ˆjÑÔÐÝ‘V”V˜dÔ<Ñ<ˆ
õ *Ñ+Ô+ð	å&Ñ(Ô(Ð+AÒAÐAØÔ1ð Bå0Ñ2Ô2Ð5KÒKÐKÝ�*ÑÔÐÝ‰vŒv˜
Ò"Ð"ÝÐ,Ñ-Ô-Ð-ÝÐ1Ð3IØÕ0Ñ2Ô2ñ4ô 4ð 4åÐ1Ð3IØÕ5Ñ7Ô7ñ9ô 9ð 9àõ *Ñ+Ô+ð	å&Ñ(Ô(Ð+AÒAÐAØÔ1ð Bå0Ñ2Ô2Ð5KÒKÐKõ 	‰	Œ	ˆ	ˆ	ˆ	r-   Tc                 óä   ‡— t          d¦  «        D ]}t          ¦   «          Œ|r't          ˆfd„t          ¦   «         D ¦   «         ¦  «        S t          ˆfd„t          ¦   «         D ¦   «         ¦  «        S )Nr   c              3   ó>   •K  — | ]}t          |¦  «        ‰u ¯d V — ŒdS ©r   N)r#   ©Ú.0ÚxÚkinds     €r,   ú	<genexpr>z)TestCase.count_objects.<locals>.<genexpr>r   s;   øè è € ð ð àÝ˜‘7”7˜d�?�?ð à"�?�?�?ðð r-   c              3   ó<   •K  — | ]}t          |‰¦  «        ¯d V — ŒdS rD   )Ú
isinstancerE   s     €r,   rI   z)TestCase.count_objects.<locals>.<genexpr>x   sG   øè è € ð 
ð 
àÝ˜!˜TÑ"Ô"ð
Øð
ð 
ð 
ð 
ð 
ð 
r-   )Úranger   Úsumr   )r<   rH   Ú
exact_kindÚ_s    `  r,   Úcount_objectszTestCase.count_objectsl   s§   ø€ õ �q‘”ð 	ð 	ˆAÝ‰IŒIˆIˆIØð 	Ýð ð ð ð å$™œðñ ô ñ ô ð õ ð 
ð 
ð 
ð 
å ‘]”]ð
ñ 
ô 
ñ 
ô 
ð 	
r-   r   Fc                 ó8   — |                       t          d¦  «        S )zJ
        Find all the greenlets and subclasses tracked by the GC.
        F)rP   ÚRawGreenlet)r<   s    r,   Úcount_greenletszTestCase.count_greenletsƒ   s   € ð ×!Ò!¥+¨uÑ5Ô5Ð5r-   c                 ó"  •— t          ¦   «                              ¦   «          t          ¦   «          t          ¦   «         | _        t          ¦   «         | _        |                      | j        | j        ¦  «         |                      ¦   «         | _	        d S ©N)
ÚsuperÚsetUpr	   r9   r5   r   r6   rA   rS   Úgreenlets_before_test©r<   Ú	__class__s    €r,   rW   zTestCase.setUp‰   sq   ø€ õ 	‰Œ�Š‰ŒˆÝ‰ŒˆÝ#6Ñ#8Ô#8ˆÔ Ý*BÑ*DÔ*DˆÔ'Ø×&Ò& tÔ'?ÀÔA`ÑaÔaÐaØ%)×%9Ò%9Ñ%;Ô%;ˆÔ"Ð"Ð"r-   c                 ó®   •— t          | dd¦  «        rd S |                      | j        | j        ¦  «         t	          ¦   «                              ¦   «          d S )NÚskipTearDownF)ÚgetattrrA   r5   r6   rV   ÚtearDownrY   s    €r,   r^   zTestCase.tearDown“   sT   ø€ Ý�4˜¨Ñ/Ô/ð 	ØˆFà×&Ò& tÔ'?ÀÔA`ÑaÔaÐaÝ‰Œ×ÒÑÔÐÐÐr-   c                 ó@   — dd l }t          s|j         |j         fnd}|S )Nr   )r   l   	   l       )ÚsignalÚWINÚSIGABRTÚSIGSEGV)r<   r`   Úexpected_exits      r,   Ú,get_expected_returncodes_for_aborted_processz5TestCase.get_expected_returncodes_for_aborted_processš   sB   € ØˆˆˆõJ ð
ØŒ^ˆOð
 Œ^ˆOð
ð 
ð
ð 	ð Ðr-   c                 ó¦   — 	 t          j        ¦   «                              ¦   «         j        S # t          $ r}t          j        d¦  «        |‚d}~ww xY w)aˆ  
        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_usszTestCase.get_process_ussÇ   s\   € ð	@Ý”>Ñ#Ô#×4Ò4Ñ6Ô6Ô:Ð:øÝð 	@ð 	@ð 	@ÝÔ#Ð$7Ñ8Ô8¸aÐ?øøøøð	@øøøs   ‚), ¬
A¶AÁAc                 ó®  — dd l }t          j                             t          j                             t
          ¦  «        |¦  «        }	 |                     t          j        |gd|j	        ¬¦  «        S # |j
        $ rY}|rQt          d¦  «         t          d|¦  «         t          d¦  «         t          |j        ¦  «         t          d¦  «         ‚ d }~ww xY w)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)r<   Úscript_nameÚshow_outputrs   ÚscriptÚexs         r,   Ú
run_scriptzTestCase.run_scriptØ   sß   € ØÐÐÐÝ”—’ÝŒG�OŠO�HÑ%Ô%Øñ
ô 
ˆð
	Ø×*Ò*­C¬N¸FÐ+CØ4;Ø2<Ô2Cð +ñ Eô Eð Eøð Ô,ð 	ð 	ð 	Øð  Ý�g‘”�ÝÐ,¨fÑ5Ô5Ð5Ý�g‘”�Ý�b”iÑ Ô Ð Ý�h‘”�Øøøøøð	øøøs   Á(A1 Á1
CÁ;ACÃCc                 ó  — dd l }|                      |j        ¦  «        5 }|                      |d¬¦  «        }|}d d d ¦  «         n# 1 swxY w Y   |€|                      ¦   «         }|                      |j        j        |¦  «         |j        S )Nr   F)r€   )rs   ÚassertRaisesr}   rƒ   re   ÚassertInÚ	exceptionÚ
returncode)r<   r   Ú	exitcodesrs   Úexcr~   Ú__traceback_info__s          r,   ÚassertScriptRaiseszTestCase.assertScriptRaisesí   sÌ   € ØÐÐÐØ×Ò˜zÔ<Ñ=Ô=ð 	(ÀØ—_’_ [¸e�_ÑDÔDˆFØ!'Ðð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð ÐØ×IÒIÑKÔKˆIØ�Š�c”mÔ.°	Ñ:Ô:Ð:ØŒ}Ðs   ŸAÁA	ÁA	)NN)TrU   )r.   r/   r0   r7   r8   rA   r   rP   rX   r5   r6   r:   rS   rW   r^   re   ro   rƒ   rŒ   Ú__classcell__)rZ   s   @r,   r3   r3   E   s  ø€ € € € € à%*Ð"Ø !Ðð :>Ø9=ð ð  ð  ð  ðD "&°$ð 
ð 
ð 
ð 
ð$ ÐØÐØ!"ÐØ Ðð6ð 6ð 6ð<ð <ð <ð <ð <ðð ð ð ð ð+ð +ð +ðZ@ð @ð @ð"ð ð ð ð*ð ð ð ð ð ð ð r-   r3   )Ú	metaclass)*Ú__doc__rt   rz   Ú	sysconfigrl   Úgcr   r   Ú	threadingr   r9   r   r   rg   r   rR   r	   Úgreenlet._greenletr
   r   Ú r   Úversion_infoÚPY312ÚPY313ÚPY314Úplatformr   ra   Ú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   r3   r1   r-   r,   ú<module>r¤      sF  ððð ð 
€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7à Ð Ð Ð Ð Ð àÔ˜˜!˜Ô Ò'€ØÔ˜˜!˜Ô Ò'€ð 	Ô˜˜!˜Ô Ò'€à	„l×Ò˜eÑ$Ô$€ØœJŸNšNÐ+;Ñ<Ô<Ð Ø”J—N’N 8Ñ,Ô,ÐIÐ0IÐ Ø”j—n’n ZÑ0Ô0Ð Ø!Ð8Ð%8€Ø”z—~’~Ð&:Ñ;Ô;Ð ð #˜dÐ#; 9Ô#;Ð<MÑ#NÔ#NÑOÔOÐ ð>ð >ð >ð >ð >˜ñ >ô >ð >ð,sð sð sð sð sˆxÔ Ð,=ð sñ sô sð sð sð sr-   