ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3gZ@sdZddlmZddlmZddlZddlZddlZddlZddl m Z ddl m Z m Z mZmZmZmZddlmZddlZddlZedd d gZed gd Zed gdZGdddejZGdddejZdZdZedeeeefZ GdddZ!Gddde!ejZ"Gddde!ejZ#GdddejZ$GdddejZ%Gd d!d!ejZ&Gd"d#d#ejZ'Gd$d%d%ejZ(Gd&d'd'ejZ)e*d(kre+dS))zTest cases for traceback module) namedtuple)StringION)support)TESTFNErrorcaptured_outputunlink cpython_only ALWAYS_EQ)assert_python_okcode co_filenameco_nameframe)f_code f_globalsf_localstb)tb_frame tb_linenotb_nextc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!S)"TracebackCasesc CsHz |Wn0|y:}zt||WYd}~Sd}~00tddS)Nzcall did not raise exception) tracebackformat_exception_only ValueError)selffuncexcvaluer2/opt/python39/lib/python3.9/test/test_traceback.pyget_exception_formats  "z#TracebackCases.get_exception_formatcCstddddS)Nzdef fact(x): return x! ?execcompilerrrr syntax_error_with_caret"sz&TracebackCases.syntax_error_with_caretcCstddddS)Nz1 + r"r#r$r&rrr syntax_error_with_caret_2%sz(TracebackCases.syntax_error_with_caret_2cCstddddS)Nz def spam(): print(1) print(2)r"r#r$r&rrr syntax_error_bad_indentation(sz+TracebackCases.syntax_error_bad_indentationcCstddddS)NuPython = "Ṕýţĥòñ" +r"r#r$r&rrr !syntax_error_with_caret_non_ascii+sz0TracebackCases.syntax_error_with_caret_non_asciicCstddddS)Nz print(2)r"r#r$r&rrr syntax_error_bad_indentation2.sz,TracebackCases.syntax_error_bad_indentation2cCs||jt}|t|d||ddk|d|d||dd|dd||j t}|d|d||d dd||ddd|dd||j t}|d|d||d dd||ddd|dddS) Nz return x!^! +) r!r' SyntaxError assertEquallen assertTruestripassertInfindr(countr*rerrrrr test_caret1s& $zTracebackCases.test_caretcCs>tdd}tt|}|t|d||dddS)Nerror)zx.pyN bad syntaxr-r@)r3rrr4r5r7)rrr<rrr test_nocaretEs  zTracebackCases.test_nocaretcCs||jt}|t|d||dd|d|d||ddd|dd||jt}|t|d||dddS)Nr,r-zprint(2)r.r/)rA) r!r)IndentationErrorr4r5r7r8r9r+r;rrr test_bad_indentationKs$z#TracebackCases.test_bad_indentationcCs&t}t|j|}||dgdS)NzKeyboardInterrupt )KeyboardInterruptrr __class__r4)reZlstrrr test_base_exceptionYsz"TracebackCases.test_base_exceptioncsPfddz Wnty0t}Yn0t|d|d|ddS)Ncs*z tdWnty$Yn0dS)Nhellorrfrr rMds  z?TracebackCases.test_traceback_context_recursionerror..frr-r/)RecursionErrorsysexc_inforformat_exceptionrrPrrLr %test_traceback_context_recursionerror_s    z4TracebackCases.test_traceback_context_recursionerrorcsPfddz Wnty0t}Yn0t|d|d|ddS)Nc sBd}z Wn(ty6}z|}WYd}~n d}~00t|dSN Exception)rHrrLrr rMus  z=TracebackCases.test_traceback_cause_recursionerror..frr-r/)rVrOrPrrQrRrrLr #test_traceback_cause_recursionerrorqs    z2TracebackCases.test_traceback_cause_recursionerrorcCsxGdddt}t||}|t|dd|j}|jdvrJ|j}nd|j|jg}||dd||fdS) Nc@seZdZddZdS)z?TracebackCases.test_format_exception_only_bad__str__..XcSs dddSNr-rrr&rrr __str__szGTracebackCases.test_format_exception_only_bad__str__..X.__str__N__name__ __module__ __qualname__rYrrrr Xsr^r-z)__main__builtins.r%s: %s ) rVrrr4r5r[r\r]join)rr^r< str_valuestr_namerrr %test_format_exception_only_bad__str__s  z4TracebackCases.test_format_exception_only_bad__str__csddlddljjddgjjd}|\}}t|ddfdd}|dd dd d D]`}|dkrd }n|d krd }nd}|d |||d|d |||d|d |||dqn|dddddS)Nr-cz&import sys; print(sys.stdout.encoding)stdoutstderrasciic szttd|d"}|d||Wdn1s80Yjjtgjjd}|\}}|  }Wt tn t t0| d}| } d| } d| }  d||d d |d ||d | d |d | |d | kd|d | dS)Nw)encodingz}{0}if 1: import traceback; raise RuntimeError('{1}') rhbackslashreplacezraise RuntimeError('{0}')zRuntimeError: {0}zline %sr-z)Invalid line number: {0!r} instead of {1}r/z.Invalid traceback line: {0!r} instead of {1!r}rAz-Invalid error message: {0!r} instead of {1!r})openrwriteformatPopen executablePIPESTDOUT communicatedecode splitlinesrencoder8r6endswith) Z firstlinesmessagecharsetlinenooutputprocessrirjZencoded_messageZ message_asciiZerr_lineerr_msgZoutput_encodingr subprocessrOrr do_tests@$     z1TracebackCases.test_encoded_file..do_testfoorA)rkz iso-8859-1utf-8GBKru丂儀uhé hoz# coding: {0} r,z#!shebang # coding: {0} z # coding: {0} zx=0 # coding: GBK r) rOrrrrsrtrurvstrrxrq)rrrirjrr|textrrr test_encoded_files6  #   z TracebackCases.test_encoded_filecCs6td}td|\}}}gd}|||dS)Na% import sys import traceback class PrintExceptionAtExit(object): def __init__(self): try: x = 1 / 0 except Exception: self.exc_info = sys.exc_info() # self.exc_info[1] (traceback) contains frames: # explicitly clear the reference to self in the current # frame to break a reference cycle self = None def __del__(self): traceback.print_exception(*self.exc_info) # Keep a reference in the module namespace to call the destructor # when the module is unloaded obj = PrintExceptionAtExit() rg)s"Traceback (most recent call last):s& File "", line 8, in __init__s#ZeroDivisionError: division by zero)textwrapdedentr r4rx)rr rcrirjexpectedrrr test_print_traceback_at_exits z+TracebackCases.test_print_traceback_at_exitcCs0t}tjttdd|d||ddS)NZ projectorfilezException: projector )rrprint_exceptionrVr4getvalue)rr~rrr test_print_exceptions  z#TracebackCases.test_print_exceptionN)r[r\r]r!r'r(r)r*r+r=rBrErIrSrWrfrrrrrrr rs  Drc@sreZdZddZedddZddZdd Zd d Zd d Z ddZ ddZ eddZ ddZ eddZdS)TracebackFormatTestscCs tddS)NZblah)KeyErrorr&rrr some_exceptionsz#TracebackFormatTests.some_exceptionNc Csddlm}z |Wntyt\}}}|durH||jddt |}t }|||| }t d} t |Wdn1s0Yt } tj || dt d} tWdn1s0Yt} t } tj| dYn 0td||||| | || | || | |}|t|d|d}|d d\}}||d ||d ||d dS) Nr)traceback_printz#Traceback (most recent call last): rrjrz&unable to create test traceback stringr Traceback Filez raise) _testcapirrrrOrPrrcr format_tbrrrprint_tb print_exc format_excrr4rxr5r6 startswith)rZ cleanup_funcrtype_rrZ traceback_fmtZfile_Z python_fmtZtbstderrZtbfileZ excstderrZexcfmtZexcfileZtb_linesZbannerlocationZ source_linerrr check_traceback_formatsD     ( & z+TracebackFormatTests.check_traceback_formatcCs |dSrTrr&rrr test_traceback_format.sz*TracebackFormatTests.test_traceback_formatcCsdd}||dS)NcSs|jdSrT)rclearrrrr cleanup_tb3szRTracebackFormatTests.test_traceback_format_with_cleared_frames..cleanup_tbr)rrrrr )test_traceback_format_with_cleared_frames1sz>TracebackFormatTests.test_traceback_format_with_cleared_framescCstd }ttdWdn1s.0Yt}tjtd|d|||ttd}||d |dS)Nrjr-rr) rr print_stackrO _getframerr4r format_stackrc)rZststderrZstfileZstfmtrrr test_stack_format7s .z&TracebackFormatTests.test_stack_formatc Cs~dd}td}|Wdn1s,0Y|jj}||dddt|dfddt|d fd gdS) NcSs tdSrT)rrrrrr prnEsz2TracebackFormatTests.test_print_stack..prnrjz) File "%s", line %d, in test_print_stackrAz prn()z File "%s", line %d, in prnr-z traceback.print_stack())r__code__co_firstlinenor4rrx__file__)rrrjr}rrr test_print_stackDs $z%TracebackFormatTests.test_print_stackcsd|_fddtd>}z Wnty>|Yn 0|dWdn1s^0Yjj}dtd|ddtd|d d td|d d td|d d }|}|}| |dd |dd | |d |d | |d |d t }| ttd|d t|d|d(fdd td@}z Wnty||Yn 0|dWdn1s0Yjj} dtd| ddtd| ddtd| ddtd| dd} dtd| dd} | | }|}| ||d)fdd td@} z Wntyn|Yn 0|dWdn1s0Yjj} dtd| ddtd| ddtd| ddtd| dd td| dd!}|| }| }| ||tdD}ztjWntyN|Yn 0|d"Wdn1sp0Ydtd| ddtd| ddtd| ddtd| dd} dtd| d#d$} | | }|}| ||tdH}ztjd Wnty0|Yn 0|d"Wdn1sR0Ydtd| ddtd| ddtd| dd%td| dd} dtd| d&d'} | | }|}| ||dS)*Ncs dSrTrrrLrr rMYszBTracebackFormatTests._check_recursive_traceback_display..frjzno recursion occurredz+Traceback (most recent call last): File "z", line rz8, in _check_recursive_traceback_display f() File "r-z, in f f() File "zn, in f f() \[Previous line repeated (\d+) more times\] RecursionError: maximum recursion depth exceeded rz\d+< cs|r|dStdSNr-rKr:)grr rs zBTracebackFormatTests._check_recursive_traceback_display..gzno value error was raisedz File "r/z%, in g return g(count-1) File "zM, in g return g(count-1) [Previous line repeated 7 more times] File "rAz', in g raise ValueError ValueError z0, in _check_recursive_traceback_display g() cs|r|dSdSrrr)rhrr rs zBTracebackFormatTests._check_recursive_traceback_display..hz8, in _check_recursive_traceback_display h() File "z%, in h return h(count-1) File "zM, in h return h(count-1) [Previous line repeated 7 more times] File "z, in h g() zno error raisedGzK, in _check_recursive_traceback_display g(traceback._RECURSIVE_CUTOFF) zL, in g return g(count-1) [Previous line repeated 1 more time] File "czO, in _check_recursive_traceback_display g(traceback._RECURSIVE_CUTOFF + 1) )r)r)ZmaxDiffrrNZfailrrrrxrr4Z assertRegexr8rOgetrecursionlimitintresearchgrouprangerr_RECURSIVE_CUTOFF)r render_excstderr_fZlineno_fZresult_fractualZ rec_limitZstderr_gZlineno_gZresult_gZtb_lineZstderr_hZlineno_hZresult_hr)rMrrr "_check_recursive_traceback_displayRs8     ( *   *       *       *      *   z7TracebackFormatTests._check_recursive_traceback_displaycCs|tjdSrT)rrrr&rrr test_recursive_traceback_pythonsz4TracebackFormatTests.test_recursive_traceback_pythoncs&ddlmfdd}||dS)Nrexception_printcst\}}}|dSrT)rOrP)exc_type exc_valueexc_tbrrr r szRTracebackFormatTests.test_recursive_traceback_cpython_internal..render_exc)rrr)rrrrr )test_recursive_traceback_cpython_internals  z>TracebackFormatTests.test_recursive_traceback_cpython_internalcCsJdd}|}|jj}||dddt|dfdt|dfgdS)NcSstSrT)rrrrrr fmtsz3TracebackFormatTests.test_format_stack..fmtrz> File "%s", line %d, in test_format_stack result = fmt() r/zA File "%s", line %d, in fmt return traceback.format_stack() r-)rrr4r)rrresultr}rrr test_format_stacks  z&TracebackFormatTests.test_format_stackc Csddlm}Gdddt}|d}|d}z ||Wn<|yrz|Wn |ylt\}}}Yn0Yn0td}||Wdn1s0Y|} | dt | | t | d | d | d | d | d dS)Nrrc@seZdZddZdS)zATracebackFormatTests.test_unhashable..UnhashableExceptioncSsdSNTrrotherrrr __eq__szHTracebackFormatTests.test_unhashable..UnhashableException.__eq__Nr[r\r]rrrrr UnhashableExceptionsrex1ex2rj rzUnhashableException: ex2rAzUnhashableException: ex1r) rrrVrOrPrrr7rxr4r5context_messager8) rrrrrrexc_valrrrrrr test_unhashables$     &z$TracebackFormatTests.test_unhashable)N)r[r\r]rr rrrrrrrrrrrrrr rs , 2  rzG The above exception was the direct cause of the following exception: zF During handling of the above exception, another exception occurred: z(%s|%s)c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ e edddZddZddZddZddZddZd S)!BaseExceptionReportingTestsc CsFt|tr|Sz |Wn(ty@}z|WYd}~Sd}~00dSrT) isinstancerV)rZexception_or_callablerHrrr get_exceptionDs   z)BaseExceptionReportingTests.get_exceptioncCs dddSrXrr&rrr zero_divLsz$BaseExceptionReportingTests.zero_divcCsJ|}||dd|d|d||dd|ddS)Nrz1/0 # In zero_divrrZeroDivisionError)rxr6rr8)rmsglinesrrr check_zero_divOsz*BaseExceptionReportingTests.check_zero_divc Csz ddWn(ty4}z|}WYd}~n d}~00||}|t|d||dd||dd|d|d||dd dS) Nr-rr,rrz 1/0 # Markerr/rAr)r get_reportrxr4r5r6rr8r_rHrrrr test_simpleUs z'BaseExceptionReportingTests.test_simplecsjfddfdd}t|}t|d|dt|dd|d dS) Nc s<z Wn*ty6}zt|WYd}~n d}~00dSrTrrr)rHr&rr inner_raisebs z;BaseExceptionReportingTests.test_cause..inner_raisecs dSrTrrrrr outer_raisegsz;BaseExceptionReportingTests.test_cause..outer_raiserAr-rinner_raise() # Markerr/ boundariessplitrr4r5 cause_messagerr8rrZblocksrrrr test_causeas  z&BaseExceptionReportingTests.test_causecsjfddfdd}t|}t|d|dt|dd|d dS) Ncs(z Wnty"tYn0dSrTrrr&rr rps  z=BaseExceptionReportingTests.test_context..inner_raisecs dSrTrrrrr rusz=BaseExceptionReportingTests.test_context..outer_raiserAr-rrr/)rrrr4r5rrr8rrrr test_contextos  z(BaseExceptionReportingTests.test_contextc Csz ztWntdYn0Wn(tyH}z|}WYd}~n d}~00||}|t|d||dd||dd|d|d||dd dS) Nr,rrr-rzZeroDivisionError from Noner/rAr) rVrrrxr4r5r6rr8rrrr test_context_suppression}sz4BaseExceptionReportingTests.test_context_suppressioncsjfddfdd}t|}t|d|dt|dd|d dS) Nc s\z Wn(ty4}z|}WYd}~n d}~00ztWntyVt|Yn0dSrT)rrZxyzzy NameErrorr)_erHr&rr rs  zGBaseExceptionReportingTests.test_cause_and_context..inner_raisecs dSrTrrrrr rszGBaseExceptionReportingTests.test_cause_and_context..outer_raiserAr-rrr/rrrrr test_cause_and_contexts z2BaseExceptionReportingTests.test_cause_and_contextcsfddfdd}t|}t|d|dtd|dd |dd |d |d dS) Nc spz@z Wn.ty<}z|}t|WYd}~n d}~00Wn*tyj}z||WYd}~n d}~00dSrTr)rHzr&rr rs  zEBaseExceptionReportingTests.test_cause_recursive..inner_raisecs dSrTrrrrr rszEBaseExceptionReportingTests.test_cause_recursive..outer_raiserAr-zraise KeyError from erz1/0rr/) rrrr4r5rr8Z assertNotInrrrrr test_cause_recursives z0BaseExceptionReportingTests.test_cause_recursivez5Pegen is arguably better here, so no need to fix thiscCsPdd}||}||dddd}||}||dddS)NcSstdddS)Nr)rrrrJ)r3rrrr rHszFBaseExceptionReportingTests.test_syntax_error_offset_at_eol..erz ^cSs tddS)Nz x = 5 | 4 |)r#rrrr rHsz ^)rrxr4rrHrrrr test_syntax_error_offset_at_eols z;BaseExceptionReportingTests.test_syntax_error_offset_at_eolcCstd}||}||dgd|_||}||ddgtd}d|_||}||dgd|_||}||ddgdS)Nr@zSyntaxError: bad syntaxdz File "", line 100z myfile.pyz#SyntaxError: bad syntax (myfile.py)z File "myfile.py", line 100)r3rrxr4r}filenamerrrr test_syntax_error_no_linenos*z7BaseExceptionReportingTests.test_syntax_error_no_linenocCsj|td}|d||td}|d||t}|d||td}|d|dS)NzException: None Nonez Exception r)rrVr8r;rrr test_message_nones    z-BaseExceptionReportingTests.test_message_nonecCs@Gdddt}d|_||}d|jd}|||dS)Nc@seZdZddZdS)zLBaseExceptionReportingTests.test_exception_modulename_not_unicode..XcSsdSNI am Xrr&rrr rYszTBaseExceptionReportingTests.test_exception_modulename_not_unicode..X.__str__NrZrrrr r^sr^*z .z : I am X )rVr\rr]r4)rr^r<exprrr %test_exception_modulename_not_unicodes  zABaseExceptionReportingTests.test_exception_modulename_not_unicodec CstddD]}dD]}d|d|}dg}|dkrH|d|nR|d krz|d||d d|dn |d||d d |d |d |tddd|||f}d|}|||qq dS)Nr)rr/ ztext%dz File "file.py", line 1r-z %sz %s^z zSyntaxError: msgrrzfile.pyr1)rappendlstriprr3rcr4)roffsetaddrrr<r rrr !test_syntax_error_various_offsetss    z=BaseExceptionReportingTests.test_syntax_error_various_offsetscCsXGddd}||j}d}d|jjj|jjjg}d||f}|||dS)Nc@seZdZGdddZdS)zJBaseExceptionReportingTests.test_format_exception_only_qualname..Ac@seZdZGdddeZdS)zLBaseExceptionReportingTests.test_format_exception_only_qualname..A.Bc@seZdZddZdS)zNBaseExceptionReportingTests.test_format_exception_only_qualname..A.B.XcSsdSrrr&rrr rY szVBaseExceptionReportingTests.test_format_exception_only_qualname..A.B.X.__str__NrZrrrr r^sr^N)r[r\r]rVr^rrrr BsrN)r[r\r]rrrrr Asrr rarb)rrr^rcr\r]r4)rrr<rdrer rrr #test_format_exception_only_qualnames  z?BaseExceptionReportingTests.test_format_exception_only_qualnameN)r[r\r]rrrrrrrrrunittestZskipIfrZuse_old_parserrrrr rrrrrr rBs     rc@seZdZddZdS)PyExcReportingTestscCst||}dtt|||j}td$}tt|||jWdn1sV0Y|| ||S)Nrrj) rrcrrQtype __traceback__rrr4r)rrHssiorrr rs  2zPyExcReportingTests.get_reportN)r[r\r]rrrrr rsrc@seZdZeddZdS)CExcReportingTestscCsNddlm}||}td}||Wdn1s<0Y|S)Nrrrj)rrrrr)rrHrrrrr r(s    &zCExcReportingTests.get_reportN)r[r\r]r rrrrr r#src@sxeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdS) LimitTestsze Tests for limit argument. It's enough to test extact_tb, extract_stack and format_exception cCs tddS)Nz Last raisedrUr&rrr last_raises16szLimitTests.last_raises1cCs |dSrT)r r&rrr last_raises29szLimitTests.last_raises2cCs |dSrT)r!r&rrr last_raises3<szLimitTests.last_raises3cCs |dSrT)r"r&rrr last_raises4?szLimitTests.last_raises4cCs |dSrT)r#r&rrr last_raises5BszLimitTests.last_raises5cCstSrT)rOrr&rrr last_returns_frame1EszLimitTests.last_returns_frame1cCs|SrT)r%r&rrr last_returns_frame2HszLimitTests.last_returns_frame2cCs|SrT)r&r&rrr last_returns_frame3KszLimitTests.last_returns_frame3cCs|SrT)r'r&rrr last_returns_frame4NszLimitTests.last_returns_frame4cCs|SrT)r(r&rrr last_returns_frame5QszLimitTests.last_returns_frame5cs|fdd}fdd}ttdd6|}t|d|dd |d d||d d |d dd |d d |dd||d d |dd t|dd|dd gt`|||d dt_||d d|dd |dd|dd |dddt_|gdt_|gWdn1sn0YdS)Ncstjfi|SrTr extract_stackkwargs)rrr extractVsz.LimitTests.test_extract_stack..extractcsX|d||d|||dd||ddt|t|dSr)r4r5)rrignorer&rr assertEqualExceptXs$z8LimitTests.test_extract_stack..assertEqualExcepttracebacklimitrr/limitrriir-rrArr)r)r swap_attrrOZ assertGreaterr5r4r1)rr.r0nolimr)rrr test_extract_stackTs*  &zLimitTests.test_extract_stackcszz |Wn ty,t\}}Yn0fdd}ttdd|}|t|d||dd|dd||dd|||d d|d d||d d|||d dgt`|||dt_|||dd||d d|dd ||d d|d dd t_||gdt_||gWdn1sl0YdS)Ncstjfi|SrT)r extract_tbr,rrr r.usz+LimitTests.test_extract_tb..extractr1r2rr/r3rrrrArr r$rVrOrPrr5r4r5r1)rrrr.r6rrr test_extract_tbps.   zLimitTests.test_extract_tbcs~z |Wn ty,t\Yn0fdd}ttdd|}|t|d||dd|dd||dd|||d d|d d||d d|||d dgt`|||dt_|||dd||d d|dd ||d d|d dd t_||gdt_||gWdn1sp0YdS)Ncstjfi|ddS)Nr-r)rrQr,rrrrr r.sz1LimitTests.test_format_exception..extractr1r2rr/r3rrr9rrArrr:)rr.r6rr<r test_format_exceptions.  z LimitTests.test_format_exceptionN)r[r\r]__doc__r r!r"r#r$r%r&r'r(r)r7r;r=rrrr r1src@seZdZddZddZdS)MiscTracebackCasescsfdd}fddddz |Wnt\}}}Yn0|jjjj}|t|jdt||t|jddS) Ncs dSrTrr)middlerr outersz,MiscTracebackCases.test_clear..outercs dSrTrr)innerrr r@sz-MiscTracebackCases.test_clear..middlecSsd}dddSrXr)irrr rBsz,MiscTracebackCases.test_clear..innerr-r) rOrPrrr4r5rr clear_frames)rrArrrZ inner_framer)rBr@r test_clears     zMiscTracebackCases.test_clearcCs^dd}|}|jj}||ddt|dddft|ddd fg|t|d d dS) NcSstSrTr*rrrr r.sz6MiscTracebackCases.test_extract_stack..extractrr/r7zresult = extract()r-r.z return traceback.extract_stack()rr,)rrr4rr5)rr.rr}rrr r7sz%MiscTracebackCases.test_extract_stackN)r[r\r]rEr7rrrr r?sr?c@s,eZdZddZddZddZddZd S) TestFramecCsttdttddd}||d|t|d||tddd||t||t||||j | |t ||t dS)NrMr-dummy)rMr-rG%"""Test cases for traceback module""") linecache clearcache lazycacheglobalsr FrameSummaryr4tupleZ assertIsNonelocalsassertNotEqualobjectr rrMrrr test_basicss  zTestFrame.test_basicscCsHttjddddd}|d|jtdt|d|jdS)NrMr-rGF) lookup_linerH) rIrJrrMr4_linerKrLlinerRrrr test_lazy_linesszTestFrame.test_lazy_linescCs$tjddddd}|d|jdS)NrMr-rGrVrV)rrMr4rVrRrrr test_explicit_lineszTestFrame.test_explicit_linecCs&tjddddd}|t|ddS)NrMr-rGrVrXr,)rrMr4r5rRrrr test_lenszTestFrame.test_lenN)r[r\r]rSrWrYrZrrrr rFs rFc@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS) TestStackcCsLdd}ttd}|}|t|t|d||dd|dS)NcSsttdSrT)listr walk_stackrrrr deepersz)TestStack.test_walk_stack..deeperr-)r\rr]r4r5)rr^s1s2rrr test_walk_stacks zTestStack.test_walk_stackcCsPz ddWn ty,t\}}}Yn0tt|}|t|ddSrX)rVrOrPr\rwalk_tbr4r5)rrrrrrr test_walk_tbs   zTestStack.test_walk_tbcCs$tjtd}||tjdSrT)r StackSummaryr.r]ZassertIsInstancerrrrr r7 szTestStack.test_extract_stackcCs*tjjtddd}|t|ddS)Nrr3)rrdr.r]r4r5rerrr test_extract_stack_limit sz"TestStack.test_extract_stack_limitcCsdttdttdd}t|dd}tjjt |dfgdd}t| |dj ddS)N/foo.pymethodrT lookup_linesr import sys) rIrJ updatecacherL test_code test_framerrdr.iterr4rVrcrMrrrr test_extract_stack_lookup_liness  z)TestStack.test_extract_stack_lookup_linescCsjttdd}t|dd}tjjt|dfgdd}|itj t dt ||dj ddS)NrgrhrFrirrk) rIrJrmrnrrdr.ror4cacherlrLrVrprrr *test_extract_stackup_deferred_lookup_liness  z4TestStack.test_extract_stackup_deferred_lookup_linescCs$tjdg}|dg|dSNfoo.pyr-fredrVz* File "foo.py", line 1, in fred line rrd from_listr4rqrerrr test_from_list#s zTestStack.test_from_listcCs8tjdg}d|d<tj|}|dg|dS)Nrv)rwr/rxrVrz* File "foo.py", line 2, in fred line ry)rrr`rrr test_from_list_edited_stack)s z%TestStack.test_from_list_edited_stackcCs$tjdg}|dg|dSruryrerrr test_format_smoke1s zTestStack.test_format_smokecCs^tdttdd}t|tddi}tjjt|dfgdd}| |dj dd idS) Nrgrh somethingr-rTcapture_localsr1 rIrlrLrmrnrrdr.ror4rOrprrr test_locals9s  zTestStack.test_localscCsVtdttdd}t|tddi}tjt|dfg}| |dj ddS)Nrgrhr~r-rrrrprrr test_no_locals@s  zTestStack.test_no_localscCs8dd}|dd}|dt|jjdfg|dS)NcSs d}d}tjjtddddS)Nr-r/T)rr4)rrdr.r])kvabrrr some_innerHs  z0TestStack.test_format_locals..some_innerrAr,zw File "%s", line %d, in some_inner return traceback.StackSummary.extract( a = 1 b = 2 k = 3 v = 4 )r4rrrrq)rrrrrr test_format_localsGs zTestStack.test_format_localsN)r[r\r]rarcr7rfrrrtr{r|r}rrrrrrr r[s  r[c@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)TestTracebackExceptionc Csz ddWn:tyFt}tj|}tjt|d}Yn0|d|j |d|j |d|j |||j ||d|j |t|dt|dS)Nr-rr/F)rVrOrPrTracebackExceptionrdr.rbr4 __cause__ __context____suppress_context__stackrrrrPrexpected_stackrrr test_smokeYs    z!TestTracebackException.test_smokec Csdd}z |Wnbtyt}zJt}tjjt|ddddd|_tjj |dddd|_ WYd}~n d}~00|j}|j }| d|j | d|j | d|j| ||j| |d|j| t|dt|dS) NcSs dddSrXrrrrr rjsz7TestTracebackException.test_from_exception..foor/r-FT)r4rjrr)rVrOrPrrdr.rbrrfrom_exceptionrr4rrrrrr)rrrHrPrrrrr test_from_exceptionhs( z*TestTracebackException.test_from_exceptionc Cs z\z0ddWt}tj|}td}td|n&t}tj|}td}td|0Wn:tyt}tj|}tjt|d}Yn0tt|d}|||j |||j |d|j |||j ||d|j |t|dt|dS)Nr-rcauseuh ohr/TrOrPrrrVrdr.rbr4rrrrrr)rexc_info_context exc_contextrrPrrZ exc_causerrr r~s0       z!TestTracebackException.test_causec CszHz&ddWt}tj|}tdnt}tj|}td0Wn:tyt}tj|}tjt|d}Yn0|d|j |||j |d|j |||j ||d|j |t|dt|dS)Nr-rrr/Fr)rrrrPrrrrr rs*       z#TestTracebackException.test_contextcCs~z ddWnty&t}Yn0t|d}t|d}tj|}|t|d||t|d|dS)Nr-rr/)rVrOrP getrefcountrrr4)rrPZrefcnt1Zrefcnt2rrrr /test_no_refs_to_exception_and_traceback_objectss   zFTestTracebackException.test_no_refs_to_exception_and_traceback_objectscCsrz ddWn.ty:t}tj|}tj|}Yn0||||||||t||t dSrX) rVrOrPrrZ assertIsNotr4rPrQr )rrPrexc2rrr test_comparison_basics     z,TestTracebackException.test_comparison_basicc sddfdd}z |Wnty8t}Yn0tj|}tj|ddi}tj|ddi}||||||tj|dd i}|||tj|dd i}tj|d d d }|||tj|dd i} tj|d d d } || | dS) NcSs z tdWnYn0dS)Nz bad valuerKrrrr raise_excs zKTestTracebackException.test_comparison_params_variations..raise_exccsd\}}dS)N)r-r/r)xyrrr raise_with_localsszSTestTracebackException.test_comparison_params_variations..raise_with_localsr4rr/rTr)r4rr)rVrOrPrrr4rP) rrrPrZexc1rZexc3Zexc4Zexc5Zexc6Zexc7rrr !test_comparison_params_variationss&        z8TestTracebackException.test_comparison_params_variationsc Cs|g}tdD]2}z ddWq |tjtYq 0q ||d|d|t|dt|ddS)Nr/r-r) rrrrrOrPr4r\rq)rZexcsrrrr /test_comparison_equivalent_exceptions_are_equals  zFTestTracebackException.test_comparison_equivalent_exceptions_are_equalc CsGdddt}|d}|d}z ||Wn6|y`z|Wn|yZt}Yn0Yn0tj|}t|}|d|d|d|ddS) Nc@seZdZddZdS)zCTestTracebackException.test_unhashable..UnhashableExceptioncSsdSrrrrrr rszJTestTracebackException.test_unhashable..UnhashableException.__eq__Nrrrrr rsrrrzUnhashableException: ex2 r/zUnhashableException: ex1 r)rVrOrPrrr\rqr8)rrrrrPr formattedrrr rs     z&TestTracebackException.test_unhashablecspfddz dWnDty\t}tj|ddi}tjjt|ddd}Yn0|||j dS)Ncs|r|dndddSrXr)nrecurserr rsz2TestTracebackException.test_limit..recurserr4rr/r3) rVrOrPrrrdr.rbr4rrrrr test_limits    z!TestTracebackException.test_limitcCsxttd}tdd}t|dd}t|dd}tjt||dd}|tj it dt ||j dj ddS) NrrgrhrFrirrk)rIrJrVrmrntest_tbrrr4rsrlrLrrVrrHrqrMrrrrr test_lookup_liness   z(TestTracebackException.test_lookup_linescCsptdttd}tdd}t|tddd}t|dd}tjt||dd }| |j d j d d ddS) Nrgrrhr-string)r~rrTrrrz'string' rIrlrLrVrmrnrrrr4rrOrrrr rs  z"TestTracebackException.test_localscCsdtdttd}tdd}t|tddi}t|dd}tt||}| |j dj ddS)Nrgrrhr~r-rrrrrrr r's  z%TestTracebackException.test_no_localscCs,tttdd}|t|dgdS)NZhavenzException: haven )rrrVr4r\rq)rrrrr test_traceback_header0sz,TestTracebackException.test_traceback_headerN)r[r\r]rrrrrrrrrrrrrrrrrr rWs  %    rc@seZdZddZdS)MiscTestcCsdt}dh}ttD]<}|ds||vr,qtt|}t|dddkr||q|tj|dS)N print_listrr\r)setdirrrgetattrrZassertCountEqual__all__)rrZ blacklistnameZ module_objectrrr test_all9s   zMiscTest.test_allN)r[r\r]rrrrr r7srr_),r> collectionsriorrIrOrrtestrZ test.supportrrrrr r Ztest.support.script_helperr rrrmrnrZTestCaserrrrr%escaperrrrrr?rFr[rrr[mainrrrr sN     g=Rx)%`a