Xj\%ddlZddlZddlZddlmZddlmZddlmZddlmZddl m Z ddl m Z dd l m Z dd l m Z ed d Zed d ZdZGdde Zedk(rej$yy)N)Context) ContextVar) copy_context)partial) getcurrent)greenlet)PY314)TestCaseid)defaultvarcTeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zy )ContextVarsTestsc6tj|i|SN)rrun)selfargskwargss s/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/greenlet/tests/test_contextvars.py _new_ctx_runzContextVarsTests._new_ctx_runs!|~!!42622ct}| |j|jn |j|j||j |t dD]$}||jxxdz cc<|&y)Nr )ID_VAR assertIsNoneget assertEqualsetrange)r greenlet_idcallbackcountsexpectctx_var_s r _incrementzContextVarsTests._incrementsp >   gkkm ,   W[[]F 3 K q A 7;;= !Q & ! J rc ^tjdtj}t dt dD}t ddDcgc]b}t t|dk(r(ttj|jn |j||||dk(r|dz n|dvrdndd}}|D]6}|d k(rt|_ |dk(stj|_ 8t d D]8}|tjxxdz cc<|D]}|j:|dk(r!t|D]}|jn|D]}|j|D]Y}|j|j|dk(r|j!|j?|j#|j[|dk(r|j%|ddddd d y|j%t|j'td gycc}w) Nrc3$K|]}|df yw)rN).0is r z1ContextVarsTests._test_context...s/q!f/sr rshare)r r)r"r#r$r%r r)rr r)rr rswitchdictr!rrrrr( gr_contextrreversed assertTruedeadrassertIsNotNonervalues)r propagate_byr#r$r-letslets r _test_contextzContextVarsTests._test_context)s  1 <&&/eAh// 1a[  W"U* N&&OO15!)W4AE%7AT    " 9Cu$!-(!+!8!8  9 q A 6::< A %      5 ~       5C OOCHH % u$!!#..1$$S^^4 5 7 "   VqQ1%C D   S13s8 .targets   fjjl +   bmm , JJqM  ! !"-- 9   VZZ\1 -   R]]62A 6--K BM   fjjl +   bmm , JJqM  ! !"-- 9   VZZ\1 -   R]]62A 6--K L   & & ['A B   VZZ\1 -'BM   VZZ\1 - L   & & (   fjjl +   bmm ,'BM   VZZ\1 - L   & & (   fjjl +   bmm ,rzcan't delete context attributer r)rr rassertRaisesRegexAttributeErrorr6rr4assertIsrrrgccollectsys getrefcountr )rrYrVrWrXs` @r%test_context_assignment_while_runningz6ContextVarsTests.test_context_assignment_while_runnings~ 4' -Rf   # #N4T U    "--(#%99; [ k2==1 V,a0 V,a0 4a8#   bmm[1   bmm[1   "--(  5q1M 5qM1M3  s HH c ddl}tjdt|j |j |j |j g fd fd}|j |d}|j  jdd}|jtd5t|dddd|jtd5d|_ ddd jjd|j|j|j|jtd d|_ j|jd|j|dg|j|j|_ |j|jdd=d}d}y#1swYxYw#1swYxYw) Nrc&tjdjjdtjdtjj j tjy)Nr r)VAR_VARr waitrrUr4appendr)holder is_runningshould_suspendsrgreenlet_in_thread_fnzXContextVarsTests.test_context_assignment_different_thread..greenlet_in_thread_fnsW KKN NN     # KKN L   & & ( MM'++- (rct}|_j||jj j d|j~ty)Nrd)rr6rgr4r rf)rXctx did_suspendrkrh should_exits r thread_fnzLContextVarsTests.test_context_assignment_different_thread..thread_fnsS/0BBM MM"  IIK OO    R IIK JrT)rYdaemonrdzrunning in a differentr6r) threadingrer rEventThreadstartrfrZ ValueErrorgetattrr6r\rjoinr) rrrrpthreadrXrmrnrkrhrirorjs @@@@@@@r(test_context_assignment_different_threadz9ContextVarsTests.test_context_assignment_different_threads Di__& "*oo' oo'  )  !!4!@  AY # #J0H I & B % &  # #J0H I ! BM !  bmmS) w/3  B "d, "--(  bmmS) 1I 7 & & ! !s G+7G8+G58Hc|t}|jtd5||_dddy#1swYyxYw)Nz6greenlet context must be a contextvars.Context or None)rrZ TypeErrorr6)rgs r"test_context_assignment_wrong_typez3ContextVarsTests.test_context_assignment_wrong_types9 J  # #I$\^ AL   s2;N)__name__ __module__ __qualname__rr(r?rCrFrHrJrOrQrarzr~r+rrrrsD3 ;=z5547HNT@D rr__main__)r]r_unittest contextvarsrrr functoolsrrrr r rrerrmainr+rrrsn "$ D$ ' UD )  | x| ~ zHMMOr