U a#@sddlZddlZddlZddlmZddlmZddlmZz(ddlmZddlm Z ddlm Z Wn e k rdZZ Z YnXe edk dGd d d ej Zeedk d Gd d d ej ZdS)N)partial)greenlet) getcurrent)Context) ContextVar) copy_contextzContextVar not supportedc@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)ContextVarsTestscOstj||SN)rrun)selfargskwargsr`C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-96vz34c0\greenlet\tests\test_contextvars.py _new_ctx_runszContextVarsTests._new_ctx_runcCs^|dkr||n|||||tdD]}||d7<|q:dS)N) assertIsNoneget assertEqualsetrange)r greenlet_idctx_varcallbackcountsexpect_rrr _increments  zContextVarsTests._incrementc sVtddddtjtddtdDfddtd dD}|D](}d krnt|_qXd krXtj|_qXtd D]*}d 7<|D] }|qqd krt |D] }|qn|D] }|q|D]&} |j  |jdkd kqd kr8 d d d d ddn t td gdS)Niddefaultrcss|]}|dfVqdS)rNr.0irrr 'sz1ContextVarsTests._test_context..c sZg|]R}ttdkr$ttjjnj|dkr@|dndkrLdnddqS)r sharer)rr rN)rrrrr)rrrr rr"rrid_var propagate_byr rr )sz2ContextVarsTests._test_context..rrr'rr )rrr)rrrswitchdictrr gr_contextrreversed assertTrueZdeadrvalues)r r*ZletsZletr$rr(r _test_context"s6           zContextVarsTests._test_contextcCs||jddS)Nr rr5r rrr&test_context_propagated_by_context_run\sz7ContextVarsTests.test_context_propagated_by_context_runcCs||jddS)Nrr6r7rrr,test_context_propagated_by_setting_attribute_sz=ContextVarsTests.test_context_propagated_by_setting_attributecCs||jddSr r6r7rrrtest_context_not_propagatedbsz,ContextVarsTests.test_context_not_propagatedcCs||jddS)Nr'r6r7rrrtest_context_sharedesz$ContextVarsTests.test_context_sharedcCs@ttj}ttj}|tj|tj|dSr )rrr r/rr let1Zlet2rrrtest_break_ctxvarshs   z#ContextVarsTests.test_break_ctxvarscCsLttj}ttj}t|_t|_||||dSr )rrr/rr1r<rrr9test_not_broken_if_using_attribute_instead_of_context_runrs  zJContextVarsTests.test_not_broken_if_using_attribute_instead_of_context_runc s tdddfdd}t|td `W5QRXj\}}|j|d|d| j d|_j|d_j|d_jdt t |dt |ddS)Nrr csXjdjtdjdj}d_jdjtdjdj}tj ||fd|_dtj j|_dtj jdSNrr) rrr1rZassertIsInstancerrrparentr/) old_context new_contextgrr)r rrtargets6       zFContextVarsTests.test_context_assignment_while_running..targetzcan't delete attrrr)rrassertRaisesRegexAttributeErrorr1rr/assertIsrr rgcZcollectsys getrefcount)r rFrBrCrrDr%test_context_assignment_while_running|s0 )   z6ContextVarsTests.test_context_assignment_while_runningc sDddl}ttddd||||gfddfdd}|j|dd }|d}|td t |d W5QRX|td  d|_ W5QRX | |j | |j d d|_  || |dg||j |_ | |j dS) Nrvarr csBddtjdSr@)rwaitrrAr/appendrr)holder is_runningshould_suspendrNrrgreenlet_in_thread_fns    zXContextVarsTests.test_context_assignment_different_thread..greenlet_in_thread_fncs<t}|_|||dSr )rr1rPr/rrO)rE)ctx did_suspendrTrQ should_exitrr thread_fns zLContextVarsTests.test_context_assignment_different_thread..thread_fnT)rFdaemonzrunning in a differentr1r) threadingrrEventThreadstartrOrG ValueErrorgetattrr1rrIrjoinr)r rZrXthreadrEr)rUrVrTrQrRrWrSrNr(test_context_assignment_different_threads:   z9ContextVarsTests.test_context_assignment_different_threadN)__name__ __module__ __qualname__rrr5r8r9r:r;r>r?rMrbrrrrrs :  GrzContextVar supportedc@seZdZddZdS)NoContextVarsTestsc Csttj}|t|d|tt|dW5QRX|t d|_W5QRX||tt|dW5QRX|t d|_W5QRXdS)Nr1) rrr/Z assertFalsehasattr assertRaisesrHr_r1)r r=rrrtest_contextvars_errorss     z*NoContextVarsTests.test_contextvars_errorsN)rcrdrerirrrrrfsrf)ZunittestrJrK functoolsrrrZ contextvarsrrr ImportErrorZ skipUnlessZTestCaserZskipIfrfrrrrs      j