Ë
    V.j '  ã                   óª  — 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j4                  j7                  d«      Zej:                  j=                  d«      Zej:                  j=                  d«      xs eZ ej:                  j=                  d«      Z!e xs e!Z"ej:                  j=                  d«      Z# e$ ejJ                  d«      «      Z& G d„ de'«      Z( G d„ dejR                  e(¬«      Z)y)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y)ÚTestCaseMetaClassc                 ó  — d}t        |j                  «       «      D ]P  \  }}|j                  d«      sŒt        |«      sŒ$|j	                  |«       |rt        j                  |«      }|||<   ŒR t        j                  | |||«      S )NTÚtest)	ÚlistÚitemsÚ
startswithÚcallableÚpopr   Úwrap_refcountÚtypeÚ__new__)ÚclsÚ	classnameÚbasesÚ	classDictÚcheck_totalrefcountÚkeyÚvalues          úYC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\greenlet/tests/__init__.pyr$   zTestCaseMetaClass.__new__2   sw   € ð
 #Ðô
 ˜yŸ™Ó0Ö1‰JˆC�Ø�~‰~˜fÕ%¬(°5­/Ø—‘˜cÔ"Ù&Ü%×3Ñ3°EÓ:�EØ!&�	˜#’ð 2ô �|‰|˜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   c                 ó0  — |xs | j                   }|xs | j                  }| j                  }t        |«       t	        «       | j
                  z   }t        «       s&t        «       |kD  s| j                  s›t        «       |kD  rŽt        |«       t	        «       |kD  rCt        d«       t        d|dt        «       «       t        d|dt        «       «       	 t        «        y t        «       rŒft        «       |kD  rŒt| j                  st        «       |kD  rŒŽt        «        y )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   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                 ó¬   ‡— t        d«      D ]  }t        «        Œ |rt        ˆfd„t        «       D «       «      S t        ˆfd„t        «       D «       «      S )Nr   c              3   ó<   •K  — | ]  }t        |«      ‰u rd –— Œ y­w©r   N)r#   ©Ú.0ÚxÚkinds     €r,   Ú	<genexpr>z)TestCase.count_objects.<locals>.<genexpr>r   s$   øè ø€ ð á&�AÜ˜“7˜d‘?ô Ù&ùs   ƒc              3   ó:   •K  — | ]  }t        |‰«      rd –— Œ y­wrD   )Ú
isinstancerE   s     €r,   rI   z)TestCase.count_objects.<locals>.<genexpr>x   s#   øè ø€ ð 
á"�Ü˜!˜TÔ"ô Ù"ùs   ƒ)Úranger   Úsumr   )r<   rH   Ú
exact_kindÚ_s    `  r,   Úcount_objectszTestCase.count_objectsl   sU   ø€ ô �q–ˆAÜ�Ið áÜó ä$œóó ð ô ó 
ä ”]ó
ó 
ð 	
r-   r   Fc                 ó.   — | j                  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Ð5r-   c                 óè   •— t         ‰| �  «        t        «        t        «       | _        t        «       | _        | j                  | j                  | j                  «       | j                  «       | _	        y ©N)
ÚsuperÚsetUpr	   r9   r5   r   r6   rA   rS   Úgreenlets_before_test©r<   Ú	__class__s    €r,   rW   zTestCase.setUp‰   sV   ø€ ô 	‰‰ŒÜŒÜ#6Ó#8ˆÔ Ü*BÓ*DˆÔ'Ø×&Ñ& t×'?Ñ'?À×A`ÑA`ÔaØ%)×%9Ñ%9Ó%;ˆÕ"r-   c                 óŠ   •— t        | dd«      ry | j                  | j                  | j                  «       t        ‰| �  «        y )NÚskipTearDownF)ÚgetattrrA   r5   r6   rV   ÚtearDownrY   s    €r,   r^   zTestCase.tearDown“   s9   ø€ Ü�4˜¨Ô/Øà×&Ñ& t×'?Ñ'?À×A`ÑA`ÔaÜ‰ÑÕr-   c                 óV   — dd l }t        s|j                   |j                   f}|S 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                  «       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Ç   sJ   € ð	@Ü—>‘>Ó#×4Ñ4Ó6×:Ñ:Ð:øÜò 	@Ü×#Ñ#Ð$7Ó8¸aÐ?ûð	@ús   ‚+. ®	A·AÁAc                 ó¢  — dd l }t        j                  j                  t        j                  j	                  t
        «      |«      }	 |j                  t        j                  |gd|j                  ¬«      S # |j                  $ rJ}|rBt        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‰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                 ó  — dd l }| j                  |j                  «      5 }| j                  |d¬«      }|}d d d «       |€| j	                  «       }| j                  j                  j                  |«       |j                  S # 1 sw Y   ŒMxY w)Nr   F)r€   )rs   ÚassertRaisesr}   rƒ   re   ÚassertInÚ	exceptionÚ
returncode)r<   r   Ú	exitcodesrs   Úexcr~   Ú__traceback_info__s          r,   ÚassertScriptRaiseszTestCase.assertScriptRaisesí   sy   € ÛØ×Ñ˜z×<Ñ<Ô=ÀØ—_‘_ [¸e�_ÓDˆFØ!'Ð÷ >ð ÐØ×IÑIÓKˆIØ�‰�c—m‘m×.Ñ.°	Ô:Ø�}‰}Ð÷ >Ð=ús    BÂB)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   sh   ø„ à%*Ð"Ø !Ðð :>Ø9=ó ðD "&°$ó 
ð$ ÐØÐØ!"ÐØ Ðò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¤      s2  ðñó 
Û 
Û Û å Ý Ý 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-   