L i&dZddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z ddl Z ddlmZdd lmZdd lmZdd lmZd d lmZej,dddk\Zej,dddk\Zej,dddk\Zej4j7dZej:j=dZej:j=dxseZ ej:j=dZ!e xse!Z"ej:j=dZ#e$ejJdZ&Gdde'Z(GddejRe(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 )rwinGITHUB_ACTIONSTRAVISAPPVEYORGREENLET_MANYLINUXPy_GIL_DISABLEDceZdZdZy)TestCaseMetaClasscd}t|jD]P\}}|jdst|s$|j ||rt j |}|||<Rtj||||S)NTtest) listitems startswithcallablepopr wrap_refcounttype__new__)cls classnamebases classDictcheck_totalrefcountkeyvalues ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/greenlet/tests/__init__.pyr$zTestCaseMetaClass.__new__2s| # y01 'JC~~f%(5/ c"&%33E:E!& #  ' ||CE9==N)__name__ __module__ __qualname__r$r-r,rr/s>r-rczeZdZdZdZ ddZedfdZdZdZ dZ dZ dZ fd Z fd Zd Zd Zdd ZddZxZS)TestCasegMbP?r c0|xs |j}|xs |j}|j}t|t |j z}t s&t|kDs|jst|kDrt|t |kDrCtdtd|dttd|dt tyt rft|kDrt|jst|kDrty)NzTime limit exceeded.zThreads: Waiting for onlyz-->zMGlets : Waiting for only) threads_before_testmain_greenlets_before_testcleanup_attempt_sleep_durationrrcleanup_max_sleep_secondsr active_thread_countexpect_greenlet_leakr printr)selfinitial_active_threadsinitial_main_greenlets sleep_time quit_afters r,wait_for_pending_cleanupsz"TestCase.wait_for_pending_cleanupsJs"8!S4;S;S!7!Z4;Z;Z88  jVd<<< *+&(+AA11025KK * v ",-13I02413I579 *+&(+AA11025KK  r-TctdD] }t|rtfdtDStfdtDS)Nrc3<K|]}t|urdywr N)r#.0xkinds r, z)TestCase.count_objects..rs$7d?sc3:K|]}t|rdywrD) isinstancerEs r,rIz)TestCase.count_objects..xs# !T"  s)rangersumr)r<rH exact_kind_s ` r, count_objectszTestCase.count_objectslsZq A I  $    ]   r-rFc.|jtdS)zJ Find all the greenlets and subclasses tracked by the GC. F)rP RawGreenlet)r<s r,count_greenletszTestCase.count_greenletss!!+u55r-ct|tt|_t |_|j|j|j |j|_ yN) supersetUpr r9r5r r6rArSgreenlets_before_testr< __class__s r,rWzTestCase.setUpsV   #6#8 *B*D' &&t'?'?A`A`a%)%9%9%;"r-ct|ddry|j|j|jt|y)N skipTearDownF)getattrrAr5r6rVtearDownrYs r,r^zTestCase.tearDowns9 4 /  &&t'?'?A`A`a r-cVddl}ts|j |j f}|Sd}|S)Nr)rl l)signalWINSIGABRTSIGSEGV)r<r` expected_exits r,,get_expected_returncodes_for_aborted_processz5TestCase.get_expected_returncodes_for_aborted_processsBJ ^^O ^^O     r-c tjjjS#t$r}t j d|d}~wwxYw)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. zuss not supportedN)psutilProcessmemory_full_infoussAttributeErrorunittestSkipTest)r<es r,get_process_usszTestCase.get_process_usssJ @>>#446:: : @##$78a ? @s+. AA  Acddl}tjjtjj t |} |j tj|gd|jS#|j$rJ}|rBtdtd|tdt|jtdd}~wwxYw)Nrzutf-8)encodingstderrz-----zFailed to run scriptz~~~~~z------) subprocessospathjoindirname__file__ check_outputsys executableSTDOUTCalledProcessErrorr;output)r< script_name show_outputrsscriptexs r, run_scriptzTestCase.run_scripts GGOOH %   **CNNF+C4;2<2C2C+E E,, g,f5gbii h  s-A55CAC  Ccddl}|j|j5}|j|d}|}ddd||j }|j j j||j S#1swYMxYw)NrF)r)rs assertRaisesr}rreassertIn exception returncode)r<r exitcodesrsexcr~__traceback_info__s r,assertScriptRaiseszTestCase.assertScriptRaisess   z<< = (__[e_DF!'  (  IIKI cmm.. :}} ( (s BB )NN)TrU)r.r/r0r7r8rArrPrXr5r6r:rSrWr^rerorr __classcell__)rZs@r,r3r3Esh%*" !:>9= D"&$ $!" 6 <+Z@"* r-r3) metaclass)*__doc__rtrz sysconfigrlgcrr threadingrr9rrrgrrRr greenlet._greenletr r r version_infoPY312PY313PY314platformrraenvirongetRUNNING_ON_GITHUB_ACTIONSRUNNING_ON_TRAVISRUNNING_ON_APPVEYOR RUNNING_ON_CIRUNNING_ON_MANYLINUXboolget_config_varRUNNING_ON_FREETHREAD_BUILDr#rr3r1r-r,rs2 9 ,87 !' !' !' lle$JJNN+;<JJNN8,I0IjjnnZ0!8%8 zz~~&:;##;9#;#;>,sx  ,=sr-