7YSSKJr SSKrSSKrSSKJr SSKrSSKrSSKrSSK J r \ R"S5r SSK Jr SSKJrJrJr \R&\R(rSrS S .S jrS r04S jr"SS\"SS55r\R6S5r"SS\"SS55r"SS\"SS55rSS.SjrSr Sr!"SS\RD5r#"SS \#5r$"S!S"\#5r%"S#S$\#5r&"S%S&\"S&S'55r'\RP"S(5"S)S*\#55r)\*S+:Xa\RV"5 gg),) namedtupleN)dedent) import_helper_interpchannels) _crossinterp) _interpreters _run_outputclean_up_interpretersc[RU5upU$![Ra [R"S5 Of=fML)N皙?) _channelsrecvChannelEmptyErrortimesleep)cidobj unboundops @/opt/alt/python313/lib64/python3.13/test/test__interpchannels.py recv_waitrsH  &^^C0NC J **  JJsO  s*A A Funboundc8[R"U/UQ76up4U$N)r r)rrargsrrs r recv_nowaitr*s^^C/$/NC Jc [XU5 gr) _run_interp)idsourceshareds r run_interpr#:s F#rc[U5n[R"5tpEX@:Xa-[R"5tpeXd:wa[e[ X5 g[R "XU5 gr)rrget_main get_current RuntimeErrorexec run_string)r r!r"_mainnsmain_curs rrr>sS F^F%%'HD z++- ;  V  V4rc<^\rSrSr\S5rSU4SjjrSrU=r$) InterpreterKcl[X5(aU$[U[5(aU"U5$[er) isinstancestrNotImplementedError)clsraws rfrom_rawInterpreter.from_rawMs. c  J S ! !s8O% %rcD>[R"5tp4X#:Xa-U(dSnO US:wa[SRU55eUnOFUbU(dSnO9US:Xa [S5eO'U(aUS:XaSnUnO[R"5n[ TU]XU5nU$)Nr+z)name mismatch (expected "main", got "{}")interpz!name mismatch (unexpected "main"))rr% ValueErrorformatcreatesuper__new__)r5namer r+r,self __class__s rr?Interpreter.__new__Vs ))+ : ?FFtLNNB ^ !DEE DB%%'Bws"- rNN) __name__ __module__ __qualname____firstlineno__ classmethodr7r?__static_attributes__ __classcell__rBs@rr/r/Ks&&rr/zname idc#J# Sv g![Ra gf=f7fr)r ChannelClosedErrorrDrrexpect_channel_closedrPps$+  ' '   s# # # #c>^\rSrSrSU4SjjrSrSrSrSrU=r $) ChannelActionzcL>U(dSnU(dSn[TU]XX#5nU$)Nbothr+r>r?)r5actionendr:rArBs rr?ChannelAction.__new__|s(CFwsC8 rcPURS:Xa&URS;a[UR5eOKURS;a&URS;a[UR5eO[UR5eURS;a[UR5eg)Nuse)sameoppositesendrclose force-close)rUr\r]r^r)r+r\otherextra)rWrXr;r:)rArkwargss r__init__ChannelAction.__init__s ;;% xxCC **D [[4 4xxKK **LT[[) ) ;;@ @T[[) ) ArcrURS:XaU$URS:Xa US:XaS$S$UR$)Nr\r]r^rrXrArXs r resolve_endChannelAction.resolve_ends9 88v J XX # F]6 6 688OrcURS:XaU$URS:Xa Uc[eU$URS:Xa Uc[eU$URS:Xa1URS:XaU$U(aURS:XaU$[eg)Nr\rbrcr+)r:r'r@)rAr:rbrcs rresolve_interpChannelAction.resolve_interps ;;& M [[G #}""L [[G #}""L [[F "{{f$ 5::/ "" #rrDrE) rFrGrHrIr?rerjrmrKrLrMs@rrRrRzs *##rrRzaction end interpcN^\rSrSrS SS.U4SjjjrSrSrSS.S jrS rU=r $) ChannelStateFclosedc(>[TU]XU5nU$rrV)r5pendingrsrArBs rr?ChannelState.__new__swsV4 rcP[U5"URS-URS9$NrrtyperursrAs rincrChannelState.incr Dz$,,*4;;??rcP[U5"URS- URS9$rxrzr|s rdecrChannelState.decrrrTforcecUR(aU(aURS:XaU$[U5"U(aSSS9$URSS9$)NrTrr)rsrur{)rArs rr`ChannelState.closes= ;;DLLA- Dzu!tDD$,,tDDrrD)r) rFrGrHrIr?r}rr`rKrLrMs@rrprps1%@@"EErrpzpending closedT hideclosedcUR(a#US:XaUS:XaUR(aSnOSnOSn[XX#5nU(aSeU$![Ra# U(dU(deUR 5nU$f=f)Nr[rFT.)rsru _run_actionr rOr`)rrWrXstater expectfailresults r run_actionrs || U?sf}JJ S#5 I  M  ' '*  Ms A3BBcTUS:XaUS:Xa%[RUSSS9 UR5$US:XaMUR(d![R U5 [ S5e[U5 UR5$[U5eUS:Xa30nUS ;aS XB'[R"U40UD6 UR5$US :Xa4S S 0nUS ;aS XB'[R"U40UD6 URS S 9$[U5e![R a Us$f=f)Nr[r^spamFblockingrzexpected ChannelEmptyErrorr`rr^Trarr) r r^r}rur Exceptionrrrr;r`)rrWrXrrds rrrs#  &= NN3%N 8::<  F]==BNN3'$$@AAC zz|#S/ ! 7  " "FK&v&{{} = T " "FK&v&{{{&&  1!22! L!s DD'&D'c[R5Hup[RU5 M g![Ra M7f=fr)r list_alldestroyChannelNotFoundError)rr,s rclean_up_channelsrsD$$&    c "'--   s5A  A c\rSrSrSrSrg)TestBaseic,[5 [5 gr)rr r|s rtearDownTestBase.tearDownsrrDN)rFrGrHrIrrKrDrrrrs rrcP\rSrSrSrSrSrSrSrSr Sr S r S r S r S rg )ChannelIDTestsi c[RSSS9nUR[U5S5 URURS5 g)N TrrU)r _channel_id assertEqualintrXrArs rtest_default_kwargs"ChannelIDTests.test_default_kwargs s?##Bd#3 S2& &)rc[RSSSS9nURURS5 [RSSSSS9nURURS5 [RSSSS9nURURS5 [RSSSSS 9nURURS5 [RSSSSS9nURURS 5 g) NrTr^rr^Fr^rrrrr)rr^rrU)r rrrXrs rtest_with_kwargsChannelIDTests.test_with_kwargss##BT#> &)##BTT#J &)##BT#> &)##BTT#J &)##BTD#I &)rc"SS[5n[RU"5SS9nUR[ U5S5 g)Nc\rSrSrSrSrg)*ChannelIDTests.test_coerce_id..Inti$cgNrrDr|s r __index__4ChannelIDTests.test_coerce_id..Int.__index__%srrDN)rFrGrHrIrrKrDrrIntr$s rrTrr)r3r rrr)rArrs rtest_coerce_idChannelIDTests.test_coerce_id#s; # ##CE#6 S2&rcUR[[R[ 55 UR[[RS5 UR[[RS5 UR[[RS5 UR[ [RS5 UR[ [RS5 g)Ng$@10s10l) assertRaises TypeErrorr robjectr; OverflowErrorr|s r test_bad_idChannelIDTests.test_bad_id+s )Y%:%:FHE )Y%:%:DA )Y%:%:DA )Y%:%:EB *i&;&;R@ -)>)>FrcUR[5 [RSSSS9 SSS5 g!,(df  g=f)NrFr^r)rr;r rr|s rtest_bad_kwargsChannelIDTests.test_bad_kwargs3s1   z *  ! !"5u ! =+ * *s 5 Ac[R[5nUR[R5 [R [ U5S-5 SSS5 g!,(df  g=fNry)r r=REPLACErrrrrs rtest_does_not_exist"ChannelIDTests.test_does_not_exist7sHw'   y== >  ! !#c(Q, /? > >s "A$$ A2cb[RSSS9nUR[U5S5 g)NrTrr)r rrr3rs rtest_strChannelIDTests.test_str<s+##Bd#3 S4(rc[RSSS9nUR[U5S5 [RSSSS9nUR[U5S5 [RSSSS9nUR[U5S5 [RSSSSS 9nUR[U5S5 g) NrTrz ChannelID(10)rzChannelID(10, send=True)rzChannelID(10, recv=True)r)r rrreprrs r test_reprChannelIDTests.test_repr@s##Bd#3 cO4##BT#> c$>?##BT#> c$>?##BTD#I cO4rc[R[5n[R[ U55n[R[5nUR X:H5 UR X:H5 UR U[ U5:H5 UR [ U5U:H5 UR U[ [ U55:H5 UR [ [ U55U:H5 URU[ [ U55S-:H5 URU[[ U55:H5 URUSS-:H5 URU[ S5:H5 URUS:H5 URX:H5 URX:g5 URX:g5 UR X:g5 g)Nr infspam) r r=rrr assertTruefloat assertFalser3)rAcid1cid2cid3s r test_equalityChannelIDTests.test_equalityMsi($$SY/(  %  % D )* D T)* c$i 001 c$i(D01 s4y!1C!778 SY/0 D) u-. ( & & &  %rc[R[5n[R[5n[RXSS9 [ U5nUR X25 UR [U5[U55 g)NFr)r r=rr^rrassertIsr{)rAchanrgots rtest_shareableChannelIDTests.test_shareablecs`(w't51$ " d3ic+rrDN)rFrGrHrIrrrrrrrrrrrKrDrrrr s5* * 'G>0 ) 5&,,rrcl\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS r\R""S5S5rSrSrSrSrSrSrSrSrSrSrSrSS.SjrSrSr S r!S!r"S"r#S#r$S$r%S%r&S&r'S'r(S(r)S)r*S*r+S+r,S,r-S-r.S.r/S/r0S0r1S1r2S2r3S3r4S4r5S5r6S6r7g7)8 ChannelTestsipcv[R[5nURU[R5 gr)r r=rassertIsInstance ChannelIDrs rtest_create_cidChannelTests.test_create_cidrs(w' c9#6#67rc[R5VVs/sHupUPM nnn[R[5n[R[5n[R[5n[R5VVs/sHupUPM nnnUR U[ U5S-5 UR U[ U5S-5 UR [ U5[ U5- XEU15 gs snnfs snnfr)r rr=rrrset)rArr,beforeid1id2id3afters rtest_sequential_ids ChannelTests.test_sequential_idsvs$-$6$6$89$8&##$89w'w'w'#,#5#5#78#7#78 c#hl+ c#hl+ Uc&k1Cc?C:9s D DcL[R"5n[U[S55n[ UR 55n[R"5n[U[S55n[ UR 55nUR U[ U5S-5 g)Nzz import _interpchannels as _channels cid = _channels.create(3) print(cid) ry)rr=r rrstripr)rAroutrrrs rtest_ids_globalChannelTests.test_ids_globals""$#v'  399;""$#v'  399; s4y1}-rc[R[5n[RUSS9n[RUSS9nUR U/5 UR U/5 g)NTr^F)r r=rlist_interpretersr)rAr send_interps recv_interpss r#test_channel_list_interpreters_none0ChannelTests.test_channel_list_interpreters_nones^w' 223T2B  223U2C  r* r*rc[R"5tp[R[5n[R USSS9 [R USS9n[R USS9nURXA/5 URU/5 [R"5n[U[SUS355 [R USS9n[R USS9nURXA/5 URXV/5 g)Nr^FrTrL import _interpchannels as _channels _channels.recv() ) rr%r r=rr^rrr r)rAinterp0r,rrrinterp1s r$test_channel_list_interpreters_basic1ChannelTests.test_channel_list_interpreters_basics#,,. w'sFU3 223T2B  223U2C  y1 r*&&(GV)5! %  !223T2B  223U2C  y1 y1rc`[R"5tp[R"5n[R"5n[R"5n[R[5n[R USSS9 [ U[SUS355 [ U[SUS355 [ U[SUS355 [RUSS 9n[RUSS 9nUR[U5X15 UR[U5XE15 g) Nr^FrL import _interpchannels as _channels _channels.send(z&, "send", blocking=False) rrTr) rr%r=r rr^r rrrr) rArr,rinterp2interp3rrrs r'test_channel_list_interpreters_multiple4ChannelTests.test_channel_list_interpreters_multiples-#,,. &&(&&(&&(w'sFU3GV)5! %  GV)5! %  GV)5! % !223T2B  223U2C  \*W,>? \*W,>?rcD[R"5tp[R"5n[R[5n[R USSS9 [ U[SUS355 [RUSS9n[RUSS9nURXQ/5 URXc/5 [R"U5 [RUSS9n[RUSS9nURXQ/5 URU/5 g)Nr^FrrrTr) rr%r=r rr^r rrrrrArr,rrrrs r(test_channel_list_interpreters_destroyed5ChannelTests.test_channel_list_interpreters_destroyeds #,,. &&(w'sFU3GV)5! %  !223T2B  223U2C  y1 y1g& 223T2B  223U2C  y1 r*rc[R"5tp[R"5n[R"5n[R[5n[R USSS9 [ U[SUS355 [R USSS9 [ U[SUS355 [RUSS9n[RUSS9nUR[U5S5 UR[U5S 5 [RUSS9 [RUSS9n[RUSS9nUR[U5S 5 UR[U5S 5 [ U[S US355 [RUSS9n[RUSS9nUR[U5S 5 URXs/5 g) NdataFrrrTrryrrO import _interpchannels as _channels _channels.release() rr%r=r rr^r rrrlenrelease)rArr,rr rrrs r'test_channel_list_interpreters_released4ChannelTests.test_channel_list_interpreters_releaseds$,,. &&(&&(w'sFU3GV)5! %  sFU3GV)5! %  !223T2B  223U2C  \*A. \*A. #D) 223T2B  223U2C  \*A. \*A. GV)"e$ %  !223T2B  223U2C  \*A. y1rc[R"5tp[R"5n[R[5n[R USSS9 [R USS9n[R USS9nUR[U5S5 UR[U5S5 [RUSS9 UR[R5 [R USS9 SSS5 UR[R5 [R USS9 SSS5 g!,(df  NK=f!,(df  g=f) Nr^FrTrryrr) rr%r=r rr^rrrr`rrOrs r%test_channel_list_interpreters_closed2ChannelTests.test_channel_list_interpreters_closeds#,,. &&(w'sFU3!223T2B  223U2C  \*A. \*A. 4(   y;; <  ' '$ ' 7=   y;; <  ' '% ' 8= <= < < [T5n[RTU5 gr)rr r^)rrs rf8ChannelTests.test_send_recv_different_threads..fsC.C NN3 $rtargetr) r r=r threadingThreadstartr^rjoinr)rArAtrrs @r test_send_recv_different_threads-ChannelTests.test_send_recv_different_threadsscw' %   A &  sG$n  g&rcH^^^[R[5m[R"5mSmUUU4Sjn[R "US9nUR 5 [RTS5 [T5nUR5 URUS5 g)Nc >>[T[STSTS355mg)Nz import time import _interpchannels as _channels while True: try: obj, _ = _channels.recv(z) break except _channels.ChannelEmptyError: time.sleep(0.1) assert(obj == b'spam') _channels.send(z, b'eggs') )r r)rrrsrrAIChannelTests.test_send_recv_different_interpreters_and_threads..fs8c6/1 256 !$u% + $ CrrCreggs) r r=rrrErFrGr^rrHr)rArArIrrrrs @@@r1test_send_recv_different_interpreters_and_threads>ChannelTests.test_send_recv_different_interpreters_and_threadssvw'""$    A &  sG$n  g&rcUR[R5 [RSS5 SSS5 g!,(df  g=f)Nrr)rr rr^r|s rtest_send_not_found ChannelTests.test_send_not_founds0   y== > NN2w '? > >s A AcUR[R5 [RS5 SSS5 g!,(df  g=fr)rr rrr|s rtest_recv_not_found ChannelTests.test_recv_not_founds.   y== > NN2 ? > >s ? A c[R[5nUR[R5 [R U5 SSS5 g!,(df  g=fr)r r=rrrrrs rtest_recv_emptyChannelTests.test_recv_emptys>w'   y:: ; NN3 < ; ;s A A&cJ[5n[R[5n[ X!5n[R USSS9 [R USSS9 [R USSS9 [R USSS9 [ X!5n[ X!5n[ U5n[ X!5n[ X!5nUR X15 UR US5 URUS5 URUS5 URUS5 UR X5 g)NFrryrrO)rr r=rrr^rr) rAdefaultrobj1obj2obj3obj4obj5obj6s rtest_recv_defaultChannelTests.test_recv_defaults(w'3(sD51sA.sGe4sGe43(3(33(3( d$ dD! q! w' w' d$rc URS5 [R[5n[R"5n[R "U[ SUS355 [R"U5 UR[SUS35 [RU5 SSS5 ASSS5 URS5 [R[5n[R"5n[R "U[ SUS355 [RUSSS 9 [R"U5 [US S 9 [USS 9 UR[SUS 35 [RU5 SSS5 ASSS5 g!,(df  N=f!,(df  GN=f!,(df  N;=f!,(df  g=f) NrszT import _interpchannels as _channels _channels.send(z+, b'spam', blocking=False) zchannel z is closedz still openrOFrTrz is empty) r#r r=rrr)rrassertRaisesRegexr'rr^r)rArr:rs r"test_recv_sending_interp_destroyed/ChannelTests.test_recv_sending_interp_destroyeds \\( ###G,D"))+F  $ $VV9 $v&5.   ! !& )'' *24& (CEt$E$\\, '##G,D"))+F  $ $VV9 $v&5.  NN45N 9  ! !& ) d + e ,'' *24& (BDt$D( ' EE$ #2DD( 'sIBF2F!+ F2 B,G9G G! F/ +F22 G G G G#cR[S5n[R[5n[R X!SS9 [ U5nUR X15 URU[5 URX15 SUSS&URX15 SUSS&URX15 g)Ns spamspamspamFrrOsham.) bytearrayr r=r send_bufferrr4r memoryviewr)rAbufrrs rtest_send_bufferChannelTests.test_send_buffers(w'c7# " c:. "Aa "Aa "rFbufferc^U(a[RnO[Rn[R[5n[ R "5nU"XASS9 [ R "5n[U5 [RU5 Xe- mTS-mU4SjnU$![RU5 f=f)NFrc2>[R"T5 gr)rr)delaysrwait,ChannelTests.build_send_waiter..wait5s JJu r) r rmr^r=rr monotonicrr) rArrsr^rstartedstoppedrxrws @rbuild_send_waiterChannelTests.build_send_waiter"s ((D>>Dw' #nn&G E *nn&G     c "!      c "s T"5 [T5mgrrrreceivedrxsrrA2ChannelTests.test_send_blocking_waiting..f> F ~HrrCTr) r}r r=rrErFrGr^rHrrArrArIrrrxs @@@rtest_send_blocking_waiting'ChannelTests.test_send_blocking_waiting9sx%%c*w' &   A &  sC$/  3'rc<^^^Sm[S5nURUSS9m[R[5mUUU4Sjn[ R "US9nUR5 [RTUSS9 UR5 URTU5 g)NrTrrc*>T"5 [T5mgrrrsrrA9ChannelTests.test_send_buffer_blocking_waiting..fNrrrCr) rlr}r r=rrErFrGrmrHrrs @@@r!test_send_buffer_blocking_waiting.ChannelTests.test_send_buffer_blocking_waitingIs %%c$%7w' &   A &  c36  3'rc^^SmSn[R[5mUU4Sjn[R"US9nUR 5 [R TUSS9 UR5 URTU5 g)Nrc>[T5mgrrrrsrrA2ChannelTests.test_send_blocking_no_wait..f]  ~HrrCTr) r r=rrErFrGr^rHrrArrArIrrs @@rtest_send_blocking_no_wait'ChannelTests.test_send_blocking_no_waitYshw' &   A &  sC$/  3'rc^^Sm[S5n[R[5mUU4Sjn[R "US9nUR 5 [RTUSS9 UR5 URTU5 g)Nrc>[T5mgrrrsrrA9ChannelTests.test_send_buffer_blocking_no_wait..fkrrrCTr) rlr r=rrErFrGrmrHrrs @@r!test_send_buffer_blocking_no_wait.ChannelTests.test_send_buffer_blocking_no_waitgsp w' &   A &  c36  3'rc  ^SnURS5 [R[5mUR [ 5 [R TUSSS9 SSS5 SSS5 URS5 [R[5mUR [5 [R TUSSS9 SSS5 UR [R5 [T5n[[U55 SSS5 SSS5 URS5 [R[5mU4S jn[R"US 9nUR5 [R TUSS S9 UR5 SSS5 g!,(df  GNI=f!,(df  GNS=f!,(df  GN=f!,(df  N=f!,(df  N=f!,(df  g=f) Nrnon-blocking with timeoutFr rtimeout timeout hitTtimeout not hitc>[T5 grrr(srrA)ChannelTests.test_send_timeout..f #rrCr)r#r r=rrr;r^ TimeoutErrorrrprintrrErFrGrHrArrrArIrs @rtest_send_timeoutChannelTests.test_send_timeoutusa \\5 6""7+C"":.sC%E/7 \\- (""7+C""<0sC$D1""9#>#>?&s+d8n%@ )\\+ ,""7+C   *A GGI NN3dBN ? FFH- ,/.7 610?? ) (- ,sl/F/FF/ G G$ G! G$$ G25 Hc ^UR SUl[ S5nUR S5 [ R[5mUR[5 [ RTUSSS9 SSS5 SSS5 UR S5 [ R[5mUR[5 [ RTUSSS9 SSS5 UR[ R5 [T5n[[!U55 SSS5 SSS5 UR S 5 [ R[5mU4S jn["R$"US 9nUR'5 [ RTUSS S9 UR)5 SSS5 g![a [R"S5ef=f!,(df  GNm=f!,(df  GNw=f!,(df  GN*=f!,(df  N=f!,(df  N=f!,(df  g=f) NT#temporarily skipped due to refleaksrrFr rrrc>[T5 grrr(srrA0ChannelTests.test_send_buffer_timeout..frrrCr)_has_run_once_timeoutAttributeErrorunittestSkipTestrlr#r r=rrr;rmrrrrrrErFrGrHrs @rtest_send_buffer_timeout%ChannelTests.test_send_buffer_timeouts .  & &*.D &  \\5 6""7+C"":.%%c3%L/7 \\- (""7+C""<0%%c3s%K1""9#>#>?&s+d8n%@ )\\+ ,""7+C   *A GGI  ! !#sT2 ! F FFH- ,3 K ##$IJ J  K/.7 610?? ) (- ,sw F:/G0!G8G0/H%H'H% H&H%A*H6:!G G- (G00 G? H H% H" H%% H36 Ic d^^SnURU5mURS5 [R[5mUU4Sjn[ R "US9nUR5 UR[R5 [RTUSS9 SSS5 UR5 SSS5 URS5 [R[5mUU4Sjn[ R "US9nUR5 UR[R5 [RTUSS S 9 SSS5 UR5 SSS5 g!,(df  N=f!,(df  N=f!,(df  NI=f!,(df  g=f) Nrwithout timeoutc<>T"5 [RTSS9 gNTrr r`rrxsrrA6ChannelTests.test_send_closed_while_waiting..f40rrCTr with timeoutc<>T"5 [RTSS9 grrrsrrArrrr) r}r#r r=rrErFrGrrOr^rHrArrArIrrxs @@rtest_send_closed_while_waiting+ChannelTests.test_send_closed_while_waitings2%%c* \\+ ,""7+C 1  *A GGI""9#?#?@sC$7A FFH-\\. )""7+C 1  *A GGI""9#?#?@sC$CA FFH* ) A@- ,$A@* )sIA$E? E.!E?A$F!6F F!. E< 8E?? F  F F!! F/c ^^UR SUl[ S5nUR USS9mUR S5 [R[5mUU4Sjn[R"US9nUR5 UR[R5 [RTUSS9 SSS5 UR!5 SSS5 UR S 5 [R[5mUU4S jn[R"US9nUR5 UR[R5 [RTUSS S 9 SSS5 UR!5 SSS5 g![a [R"S5ef=f!,(df  N=f!,(df  N=f!,(df  Nm=f!,(df  g=f) NTrrrrrc<>T"5 [RTSS9 grrrsrrA=ChannelTests.test_send_buffer_closed_while_waiting..frrrCrrc<>T"5 [RTSS9 grrrsrrArrrrr)_has_run_once_closedrrrrlr}r#r r=rrErFrGrrOrmrHrs @@r%test_send_buffer_closed_while_waiting2ChannelTests.test_send_buffer_closed_while_waitings -  % %)-D % %%c$%7 \\+ ,""7+C 1  *A GGI""9#?#?@%%c3%>A FFH-\\. )""7+C 1  *A GGI""9#?#?@%%c3r%JA FFH* )1 K ##$IJ J  K(A@- ,$A@* )sU F A$F?'F.=F?.A$G!G)G! !F+. F< 8F?? G  G G!! G/c[R[5n[RUSSS9 [ U5 [R U5 UR [R5 [RUS5 SSS5 UR [R5 [RU5 SSS5 g!,(df  NL=f!,(df  g=fNrFrrO r r=rr^rr`rrOrrs rtest_close_single_user#ChannelTests.test_close_single_usersw'sGe4C   y;; < NN3 (=   y;; < NN3 = <= < < <.C ,C C C*cl[R[5n[R"5n[R"5n[R"U[ SUS355 [R"U[ SUS355 [R U5 [R"U[ SUS355nURURRS5 [R"U[ SUS355nURURRS5 g)Nr r<rrz _channels.send(z, b'spam') rO) r r=rrr)rr`rr{rF)rArrrexcsnaps rtest_close_multiple_users&ChannelTests.test_close_multiple_userss(w'""$""$  f25! .'    f25! .'  **3< #u%81 ..0DE**3< #u%81 ..0DErc<[R[5n[RUSSS9 [ U5 [R U5 UR [R5 [R U5 SSS5 g!,(df  g=fr3)r r=rr^rr`rrOrs rtest_close_multiple_times&ChannelTests.test_close_multiple_timessdw'sGe4C   y;; < OOC = < < .B  BcR/SQnUHup#URX#45 [R[5n[R USSS9 [ U5 [R XBUS9 UR[R5 [R US5 SSS5 UR[R5 [RU5 SSS5 SSS5 M g!,(df  NX=f!,(df  N,=f!,(df  GM=f)N))FFTF)FT)TTrFrrrO) r#r r=rr^rr`rrOr)rAtestsr^rrs rtest_close_emptyChannelTests.test_close_empty"s  JDtl+&&w/sGe<C T:&&y'C'CDNN30E&&y'C'CDNN3'E,+ EDDD,+s<A-D C4"'D DD4 D >D D D D& cf[R[5n[RUSSS9 [RUSSS9 UR [R 5 [R U5 SSS5 [U5 [RUSSS9 g!,(df  N/=f)NrFrhamrOr r=rr^rChannelNotEmptyErrorr`rrs r%test_close_defaults_with_unused_items2ChannelTests.test_close_defaults_with_unused_items5s~w'sGe4sFU3   y== > OOC ?CsGe4? >s #B"" B0c[R[5n[RUSSS9 [RUSSS9 UR [R 5 [R USS9 SSS5 [U5 [RUSSS9 [U5 [U5 [R USS9 g!,(df  NY=f)NrFrrTrrOrrs r*test_close_recv_with_unused_items_unforced7ChannelTests.test_close_recv_with_unused_items_unforced?sw'sGe4sFU3   y== > OOCdO +?CsGe4CC$' ? >s #C  Cc[R[5n[RUSSS9 [RUSSS9 [R USS9 UR [R 5 [RUS5 SSS5 [U5 [U5 UR [R 5 [RU5 SSS5 g!,(df  Nb=f!,(df  g=f)NrFrrTrrO) r r=rr^r`rrOrrrs r*test_close_send_with_unused_items_unforced7ChannelTests.test_close_send_with_unused_items_unforcedLsw'sGe4sFU3$'   y;; < NN3 (=CC   y;; < NN3 = < = <= OOCdO 6?CsGe4CC$' ? >s #C  Cc[R[5n[RUSSS9 [RUSSS9 [R USSS9 UR [R 5 [RUS5 SSS5 UR [R 5 [RU5 SSS5 g!,(df  NL=f!,(df  g=f)NrFrrTrrOr r=rr^r`rrOrrs r(test_close_recv_with_unused_items_forced5ChannelTests.test_close_recv_with_unused_items_forcedfw'sGe4sFU3$d3   y;; < NN3 (=   y;; < NN3 = <= < < <8C6C& C#& C4c[R[5n[RUSSS9 [RUSSS9 [R USSS9 UR [R 5 [RUS5 SSS5 UR [R 5 [RU5 SSS5 g!,(df  NL=f!,(df  g=f)NrFrrTrrOrrs r(test_close_send_with_unused_items_forced5ChannelTests.test_close_send_with_unused_items_forcedqrrc[R[5n[RUSSS9 [RUSSS9 [R USSSS9 UR [R 5 [RUS5 SSS5 UR [R 5 [RU5 SSS5 g!,(df  NL=f!,(df  g=f)NrFrrTrrOrrs r(test_close_both_with_unused_items_forced5ChannelTests.test_close_both_with_unused_items_forced|sw'sGe4sFU3$T>   y;; < NN3 (=   y;; < NN3 = <= < <  ' '4 ' 8?    y;; <  ' '$ ' 7= < ? > = .?.&$  ' ''8( %*D #$05.( ( ( (2#J4$R  F0!(&5 (   (        !   8-rrcT\rSrSrSrSrSrSrSrSr Sr S r S r S r S rg )ChannelReleaseTestsic[R[5n[RUSSS9 [ U5 [R USSS9 UR [R5 [RUS5 SSS5 UR [R5 [RU5 SSS5 g!,(df  NL=f!,(df  g=fNrFrTrrO r r=rr^rrrrOrrs rtest_single_user$ChannelReleaseTests.test_single_usersw'sGe4C#Dt4   y;; < NN3 (=   y;; < NN3 = <= < < $"  1(  9   '   '  rr c^\rSrSrSrU4Sjr\S5r\S5rSr SSjr Sr S r S r S rS rS rSrU=r$)ChannelCloseFixtureiaFcv>UR(a0nOe[RU5n[RU5n[RU5nURUURUURU0nU(dSn[TU]XX#XE5n[ 5Ul[5Ul Xgl U$)Nr\) QUICKr/r7r@r>r?r_preppedrp_state_known) r5rXr:rbrccreatorknownrArBs rr?ChannelCloseFixture.__new__hs 99E ))&1F((/E((/E V E EE GwsG "n   rcUR$rr1r|s rrChannelCloseFixture.state}s {{rcUR$![a@ URUR5nUR U5UlURs$f=fr)_cidr_get_interpreterr3 _new_channel)rAr3s rrChannelCloseFixture.cidsP 99  ++DLL9G))'2DI99  s AAAcJURU5nURU5 U$r)r;_prep_interpreterrAr:s rget_interpreter#ChannelCloseFixture.get_interpreters%&&v. v& rcUc URnUS:XaURRS:Xag[URR5$)Nrr^F)rXrrsboolris rexpect_closed_error'ChannelCloseFixture.expect_closed_errors@ ;((C &=TZZ..&8DJJ%%&&rc&URU5 gr)r?r@s rprep_interpreter$ChannelCloseFixture.prep_interpreters v&rcX lgrr7)rArWrs r record_action!ChannelCloseFixture.record_actions rc,[5 [5 gr)r rr|s rclean_upChannelCloseFixture.clean_upsrcURS:Xa[R[5$[R[5n[ UR SUS35 [ U5UlUR$)Nr+z import _interpreters cid = _xxsubchannels.create() # We purposefully send back an int to avoid tying the # channel to the other interpreter. _xxsubchannels.send(zN, int(cid), blocking=False) del _interpreters )r@r r=rr#r rr:)rAr3chs rr< ChannelCloseFixture._new_channelsj <<6 !##G, ,!!'*B wzz(% &(D) $ $BDIyyrcUS;a UR$US:Xa UR$US:Xa UR$UnURUnU$![a [ U5=oRU'U$f=f)N)r\r:rbrc)r:rbrcr2KeyErrorr/)rAr:r@s rr;$ChannelCloseFixture._get_interpreters ' ';;  w ::  w :: D ?T*M ?-8->>T*M ?sA #A21A2cURUR;agURRUR5 URS:Xag[ URSUR S35 g)Nr+a import _interpchannels as channels import test.test__interpchannels as helpers ChannelState = helpers.ChannelState try: cid except NameError: cid = _channels._channel_id(r)r r0addr@r#rr@s rr?%ChannelCloseFixture._prep_interpretersb 99 %  &))$ ;;& 699#-.2XXJ7  r)r:r2r0r1r)rFrGrHrIr/r?propertyrrrArErHrKrNr<r;r?rKrLrMs@rr-r-asd E* ''  rr-zend interp other extra creatorz%these tests take several hours to runc|\rSrSrSrSrSrSrSrSS.S jr S r S r SS jr Sr SSjrSrSrSrSrg )ExhaustiveChannelTestsic#`# /v URSS5H$nUv UR5H nX-v M M& URSS5H$nUv UR5H nX-v M M& URSS5HnUv URSS5H(nX1-nUv UR5H nXB-v M M* URSS5H(nX1-nUv UR5H nXB-v M M* M URSS5HnUv URSS5H(nX1-nUv UR5H nXB-v M M* URSS5H(nX1-nUv UR5H nXB-v M M* M g7f)Nr\rbrc)_iter_close_action_sets_iter_post_close_action_sets_iter_use_action_sets)rA closeactions postactions useactionsactionss riter_action_sets'ExhaustiveChannelTests.iter_action_setss!88IL #@@B "00 CJ!88'JL #@@B "00 CK 44VWEJ  $ < c#^# SH#n[SSU5/v [SSU5/v M% g7f)N)r\rcrbr[rr^rgr@s rr^3ExhaustiveChannelTests._iter_post_close_action_setsns=0FeVV4 eVV4  1s+-c8UHnURX5 M gr)r)rAfixrcrWs r run_actions"ExhaustiveChannelTests.run_actionswsF OOC (rTrcURUR5nURURURUR 5nUR U5 URS:Xa=[URURUURUS9nURX&5 g[R[5n[!UR"SURS[%UR5S[%U5S[%UR5SUSUSUS35 ['[(R+[-U5S 5[/[-U55S 9nURX&5 g) Nr+rzB result = helpers.run_action( z, z!, hideclosed=z7, ) _channels.send(zW, result.pending.to_bytes(1, 'little'), blocking=False) _channels.send(zB, b'X' if result.closed else b'', blocking=False) little)rurs)rjrXrmr:rbrcrHr@rrrWrrKr r=rr#r rrpr from_bytesrrD)rArtrWrrXr:rr:s rr!ExhaustiveChannelTests.run_action{sJ  )&&szz399ciiH V$ ;;&   % F   f -##G,D vyy'WWI&--()*#YK #))_%& *|, $v& $v& # "{4'8(CK-.F   f -rc #n# /SQnUH'up#nSHnSHn[XbX4U5v M M M) g7f)N))r+r:rc)r:r+rc)rr rc)rr r+)r\rbr3r)r-)rA interpretersr:rbrcr3rXs r iter_fixtures$ExhaustiveChannelTests.iter_fixturess@ %1 F57+C-c5QQ,8%1s35c$U(aSOSn[X1RS5nUR5(dURXSS9 gUR [ R 5 URXSS9 SSS5 g!,(df  g=f)Nrar`r\Fr)rRrXrErrr rO)rArtrrmr`s r_closeExhaustiveChannelTests._closesk#]b''62&&(( OOC5O 9""9#?#?@u=A@@s 'B BNcUbURS:XGaUR[R5 [R UR 5 SSS5 UR[R5 [R UR S5 SSS5 UR[R5 [RUR 5 SSS5 UR[R5 [RUR SS9 SSS5 g[URS5 [URS5 [URS5 [URS5 g!,(df  GN>=f!,(df  GN=f!,(df  N=f!,(df  g=f) Nr+rTrzo with helpers.expect_channel_closed(): _channels.recv(cid) z with helpers.expect_channel_closed(): _channels.send(cid, b'spam', blocking=False) zp with helpers.expect_channel_closed(): _channels.close(cid) z| with helpers.expect_channel_closed(): _channels.close(cid, force=True) ) r@rr rOrrr^r`r#r )rArtr:s r_assert_closed_in_interp/ExhaustiveChannelTests._assert_closed_in_interps6 >V[[F2""9#?#?@sww'A""9#?#?@sww0A""9#?#?@(A""9#?#?@t4A@ vyy#  vyy#  vyy#  vyy# +A@@@@@@@s/ F ;!F F/ G F F,/ F= GcURURR5 [URR5Hn[ UR 5 M URU5 SH7nURU5nURS:XaM&URX5 M9 URS5nURX5 g)N)r\rbr+fresh) rrrsrangerurrrrAr@)rArtr,r:s r_assert_closed%ExhaustiveChannelTests._assert_closeds  (()syy(()A  * %%c*'F((0F{{f$  ) )# 6 ( $$W- %%c2rc ## SnUR5Hn[5 UR5HnUS- nUS:a gU(a;US- S-S:Xa [5 [X$SR[ U555 O>US- S-S:Xa [SSS9 [S SS9 [ R R5 X$U4v M U(dM[S 5 M [5 g7f) Nrryrz ({} actions) rh.z---)rdrr}r<rsysstdoutflush)rAverboseircrts r_iter_close_tests(ExhaustiveChannelTests._iter_close_testss ,,.G G))+Qt8A{a'!."7"7G "EFA{a'cr*#2& (8(8(:go%,we !/" s CC0C0cNS[lUR5HupnM g)NT)r-r/rrArrtrcs r_skim_close_tests(ExhaustiveChannelTests._skim_close_testss%$(!#557OAG  8rchUR5HupnURSRXU55 URUR5 UR X#5 UR USS9 URU5 SSS5 UR5 M g!,(df  N#=f)N {} {} {}Fr rr#r<rHr:rurrrNrs r test_close!ExhaustiveChannelTests.test_closes#557OAGk00AB$$SZZ0  . Cu -##C( C LLN 8BB AB## B1 chUR5HupnURSRXU55 URUR5 UR X#5 UR USS9 URU5 SSS5 UR5 M g!,(df  N#=f)NrTrrrs rtest_force_close'ExhaustiveChannelTests.test_force_closes#557OAGk00AB$$SZZ0  . Ct ,##C( C LLN 8BBrrDr)F)rFrGrHrIrdr_r]r^rurr}rrrrrrrrKrDrrr[r[s[& +0Z/b&)59.@ R>83 ,  rr[__main__), collectionsr contextlibrtextwraprrErr test.supportr import_moduler test.support.interpretersrtest.test__interpretersrr r _UNBOUND_CONSTANT_TO_FLAGUNBOUNDrrrr#rr/contextmanagerrPrRrprrrTestCaserrrr r-r r[rFr+rDrrrsz"  &  ' '(9 : 2  0 01E1E F%* $-/ 5 *]I6 J ++/#J0CD/#fE:n.>?E&7;*!!H x   `,X`,JI -8I -Xb (b Jn*%:%EGnb 67{X{8{|  z MMOr