ÿØÿà 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 3g@svddlZddlZddlZddlZddlZddlZddlmZmZddl m Z dZ Gdddej Z e dkrredS)N)temp_cwduse_old_parser)assert_python_failurezglobal variablec@sNeZdZddZddZddZddZd d Zd d Ze e d ddZ e e d ddZ ddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Z d8d9Z!d:d;Z"dd?Z$d@dAZ%dBdCZ&dDdEZ'dFdGZ(dHdIZ)dJdKZ*dLdMZ+dNdOZ,dPdQZ-dRdSZ.dTdUZ/dVdWZ0dXdYZ1dZd[Z2d\d]Z3d^d_Z4d`daZ5dbdcZ6dddeZ7dfdgZ8dhdiZ9djdkZ:dldmZ;dndoZdudvZ?dwdxZ@dydzZAd{d|ZBd}d~ZCddZDddZEddZFddZGddZHdS)TestCasec Csn|D]d}|j|dD|||t|Wdn1s@0YWdq1s^0YqdS)Nstr)ZsubTestassertRaisesRegexeval)selfZexception_typeZregexZ error_stringsrr 0/opt/python39/lib/python3.9/test/test_fstring.pyassertAllRaiseszTestCase.assertAllRaisecCsGddd}|}|}tdd||_||t|||d|t|t|||dd||dd|t||dd|t||dddS)Nc@seZdZddZdS)z(TestCase.test__format__lookup..XcSsdS)Nclassr r specr r r __format__&sz3TestCase.test__format__lookup..X.__format__N__name__ __module__ __qualname__rr r r r X%srcSsdS)Ninstancer rr r r .z/TestCase.test__format__lookup..rr)types MethodTyper assertEqualformattype)r rxyr r r test__format__lookup#szTestCase.test__format__lookupcCsRGddd}|}d}t|}t|dd}||jt|||jdS)Nc@seZdZddZddZdS)zTestCase.test_ast..XcSs d|_dS)NFcalledr r r r __init__Asz%TestCase.test_ast..X.__init__cSs d|_dS)NTr#r%r r r __call__Csz%TestCase.test_ast..X.__call__N)rrrr&r(r r r r r@sr a = 10 f'{a * x()}'rexec)astparsecompileZ assertFalser$r*Z assertTrue)r rr exprtcr r r test_ast>s   zTestCase.test_astcCsd}t|}|t|tj|t|jd|t|jdtj||jdjd|t|jdtj |t|jdj tj |t|jdj j d|t|jdj j dtj ||jdjd||jdj jd||jdj j djd|jdj j dj }|t|tj|t|jtj|t|jtj|t|jtj||jd||jjd||jjd||jd||jjd||jjddS)Nr)r)r+r,rrModulelenbodyAssignlinenoExprvalue JoinedStrvaluesFormattedValueBinOpleftNameopMultrightCall col_offsetr r.r/binopr r r test_ast_line_numbersVs0  zTestCase.test_ast_line_numberscCsd}t|}|t|tj|t|jd|t|jdtj|t|jdjtj ||jdj d|t|jdtj|t|jdjtj |t|jdjj d|t|jdjj dtj |t|jdjj djt |t|jdjj dtj|t|jdjj dtj |t|jdjj djt |t|jdjj dtj||jdj d||jdjj d||jdjj dj d||jdjj dj d||jdjj dj d||jdjj dj d|jdjj dj}|t|tj|t|jtj|t|jtj|t|jtj||j d||jj d||jj d||jd||jjd||jjd|jdjj dj}|t|tj|t|jtj|t|jtj|t|jtj||j d||jj d||jj d||jd ||jjd ||jjd dS) Nz8 f'no formatted values' f'eggs {a * x()} spam {b + y()}'r2rr3r'r4 )r+r,rrr6r7r8r;r<r=r:r>Constantrr?r@rArBrCrDrErFrGZAdd)r r.r/Zbinop1Zbinop2r r r .test_ast_line_numbers_multiple_formattedvaluesusX       z7TestCase.test_ast_line_numbers_multiple_formattedvaluescCsd}t|}|t|tj|t|jd|t|jdtj||jdjd|t|jdtj |t|jdj tj |t|jdj j d|t|jdj j dtj ||jdjd||jdj jd||jdj j djd|jdj j dj }|t|tj|t|jtj|t|jtj|t|jtj ||jd||jjd||jjd||jd||jjd||jjd|t|jj d|t|jj dtj|t|jj dj t|t|jj dtj |t|jj dtj|t|jj dj t||jj djd||jj djd||jj djd|jj dj }|t|tj||jd||jddS)Nz a = 10 f'{a * f"-{x()}-"}'r2rr3r4r5 )r+r,rrr6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErGrOrrF)r r.r/rIcallr r r test_ast_line_numbers_nestedsJ  z%TestCase.test_ast_line_numbers_nestedz8The old parser gets the offsets incorrectly for fstringscCs~d}t|}|t|tj|t|jd|t|jdtj||jdjd|t|jdtj |t|jdj tj |t|jdj j d|t|jdj j dtj |t|jdj j dtj|t|jdj j dj t|t|jdj j dtj |t|jdj j dtj|t|jdj j dj t|t|jdj j dtj ||jdjd||jdj jd||jdj j djd||jdj j djd||jdj j djd||jdj j djd||jdj j djd|jdj j dj }|t|tj|t|jtj|t|jtj|t|jtj||jd||jjd||jjd||jd||jjd||jjd|jdj j dj }|t|tj|t|jtj|t|jtj|t|jtj||jd||jjd||jjd||jd ||jjd ||jjd |jdj j dj }|t|tj|t|jtj|t|jtj|t|jtj||jd||jjd||jjd||jd ||jjd ||jjd dS) Nz) a = 10 f'{a * x()} {a * x()} {a * x()}' r2rr3r4r'r5 rMrN)r+r,rrr6r7r8r9r:r;r<r=r>r?rOrr@rArBrCrDrErFrGrHr r r *test_ast_line_numbers_duplicate_expressionsp        z3TestCase.test_ast_line_numbers_duplicate_expressioncCsDtd}|t|jd||jdjd|t|jdtj|t|jdjtj |t|jdjj d|t|jdjj dtj |t|jdjj dtj |t|jdjj dtj |jdjj \}}}|j}|t|tj ||jd||jd||jd||jddS)Nz%f"Here is that pesky {xxx:.3f} again"r3rr4r2)r+r,rr7r8r:rr;r<r=r>rOr?rB end_linenorGend_col_offset)r r/_r.namer r r (test_ast_numbers_fstring_with_formattings     z1TestCase.test_ast_numbers_fstring_with_formattingcCsd}t|}|t|tj|t|jd|t|jdtj||jdjd|t|jdtj |t|jdj tj |t|jdj j d|t|jdj j dtj |t|jdj j dj t|t|jdj j dtj|t|jdj j dtj |t|jdj j dj t||jdjd||jdj jd||jdj j djd||jdj j djd||jdj j djd||jdjd||jdj jd||jdj j djd||jdj j djd||jdj j djd|jdj j dj }|t|tj|t|jtj|t|jtj|t|jtj||jd||jjd||jjd||jd||jjd||jjddS) Nz? a = 10 f''' {a * x()} non-important content ''' r2rr3r4r'r5)r+r,rrr6r7r8r9r:r;r<r=r>rOrr?rGr@rArBrCrDrErFrHr r r 'test_ast_line_numbers_multiline_fstring1sF      z0TestCase.test_ast_line_numbers_multiline_fstringcCsd}t|}|t|tj|t|jd|jdjjdj}|t|tj ||j d||j d||j d||j dd}t|}|t|tj|t|jd|jdjjd}|t|tj|t|jd|j\}}}|t|tj||j d||j d ||j d ||j d |j}|t|tj ||j trzdnd ||j trdnd ||j trd nd||j trdnd|t|tj||j d||j d ||j d ||j d dS)Nz x = ( f" {test(t)}" )r3rr4rKzv x = ( 'PERL_MM_OPT', ( f'wat' f'some_string={f(x)} ' f'wat' ), ) r'r_rLrTrUrNrV)r+r,rrr6r7r8r<r>rFr:rZrGr[eltsr=rOr)r r.r/rRZfstringZwat1ZmiddleZwat2r r r &test_ast_line_numbers_with_parenthesescsD   z/TestCase.test_ast_line_numbers_with_parenthesescCs,dd}||jdd}||jdS)NcSsddSNzNot a docstringr r r r r fsz"TestCase.test_docstring..fcSsddSrfr r r r r gsz"TestCase.test_docstring..g)Z assertIsNone__doc__)r rgrhr r r test_docstrings zTestCase.test_docstringcCs:|tdtdWdn1s,0YdS)Nzmalformed node or stringzf'x')r ValueErrorr+Z literal_evalr%r r r test_literal_evalszTestCase.test_literal_evalcCs<dg}d}t|}t|dd}t|||dddS)Nrzx[0] = 'foo' f'{3}'r*rZfoo3)r+r,r-r*r)r r r.r/r0r r r test_ast_compile_time_concats   z%TestCase.test_ast_compile_time_concatcCs|tdddgdS)Nz&cannot mix bytes and nonbytes literalszf'' b''zb'' f''r SyntaxErrorr%r r r test_compile_time_concat_errorss z(TestCase.test_compile_time_concat_errorscCs(|d|dd|dddS)Nra rr%r r r test_literals  zTestCase.test_literalcCs|tdgddS)Nzf-string: unterminated string)zf'{"x'zf'{"x}'zf'{("x'zf'{("x}'rnr%r r r test_unterminated_stringsz!TestCase.test_unterminated_stringcCsb|tddg|tddg|tddg|tddg|tdd g|ttd dS) NzJf-string: closing parenthesis '\}' does not match opening parenthesis '\('zf'{((}'zJf-string: closing parenthesis '\)' does not match opening parenthesis '\['z f'{a[4)}'zJf-string: closing parenthesis '\]' does not match opening parenthesis '\('z f'{a(4]}'zJf-string: closing parenthesis '\}' does not match opening parenthesis '\['zf'{a[4}'zf'{a(4}'af'{((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((}')r ro assertRaisesr r%r r r test_mismatched_parenss zTestCase.test_mismatched_parenscCsr|dd|dd|dd|dd|dd|dd|dd|dd|d d |d d |d d |d d |d d |dd|dd|dd|ddd|ddd|ddd|ddd|ddd|ddd|ddd|ddd|dd|tddgdS) N{za{z{bza{b}za}z}bza}bz{}za{}z{b}z{}cza{b}za{}cz{b}cza{b}c z{10z}10z}{z}{10z}a{z}a{10z10{z10}z10}{z}a{}z10}a{}z{{}}zunhashable typez f'{ {{}} }')rr TypeErrorr%r r r test_double_bracess8                zTestCase.test_double_bracescCsd}|d|dd|d|dd|d|d|dd|d |d |d |d |d |d |d |d|d|d|d|d||dd||d||d||d||dd|d|dd|d|d||d|d|d|d|d|d|d|d|d|tddgdS)Ndefzabc## Zghiz abc## defghiabcZ abcdefghi4z abcdefghidef z{x}z{x}defz{xz{xdefz{{x}}z{{x}}defz{{xz{{xdefzx}}zx}}defzdefx}}2Zdef21Z1def2Z1def-zdef-defrf-string: expecting '}'z f'{3' f'}'rr ror r r r r test_compile_time_concats8       z!TestCase.test_compile_time_concatcCsNddi}|dd||dd|tdgd|tddgdS)N#hashz+f-string expression part cannot include '#')zf'{1#}'z f'{3(#)}'zf'{#}'f-string: unmatched '\)'zf'{)#}'rr dr r r test_commentsszTestCase.test_commentscCsddd}d}d}tddD] }|t|||d|q|t|d d |dd |d d }|t||dddd}|t|ddS)NrcSsdd||dS)Nzf'z{x} 'r )nextrar r r build_fstr0sz2TestCase.test_many_expressions..build_fstrrr3irriz {x:{width}} zf'{1}' 'x' 'y'iA 1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy1xy)r)rangerr )r rr widthisr r r test_many_expressions+s   zTestCase.test_many_expressionsc Csd}d}td}|d||d|d|d||d|d|d||dd|dd|d|d d dd|dd|d|d d dd|dd|dd d d d |dd dd dd |ddd dd dd|ddd d ddd|dd dddikoH|dd |tddgtrrdnd}|t|dg|tddg|tddgdS)Nrzr'z12.34567zresult: .zresult: 12.350rr3rr0xz 0xar irz -0xar4rTrzf'{"s"!r{":10"}}'invalid syntaxf-string: invalid syntaxz f'{4:{/5}}'z'f-string: expressions nested too deeplyz,f'result: {value:{width:{0}}.{precision:1}}'&f-string: invalid conversion characterzf'{"s"!{"r"}}')decimalZDecimalrr ror)r rZ precisionr<err_msgr r r !test_format_specifier_expressionsDs: "&& &z*TestCase.test_format_specifier_expressionscCs.Gddd}|}||d|ddS)Nc@seZdZddZddZdS)z*TestCase.test_side_effect_order..XcSs d|_dS)Nrrr%r r r r&lsz3TestCase.test_side_effect_order..X.__init__cSs|jd7_t|jS)Nr3)rrrr r r rnsz5TestCase.test_side_effect_order..X.__format__N)rrrr&rr r r r rksrrrz1 2rs)r rr r r r test_side_effect_orderjszTestCase.test_side_effect_ordercCs(|tdgd|tdddgdS)Nz&f-string: empty expression not allowed)zf'{}'z f'{ }'f' {} 'zf'{!r}'zf'{ !r}'z f'{10:{ }}'zf' { } 'z f'''{ }'''zf'{!x}'z f'{ !xr}'zf'{!x:}'z f'{!x:a}'z f'{ !xr:}'z f'{ !xr:a}'zf'{!}'zf'{:}'zf'{!'zf'{!s:'zf'{:'zf'{:x'z'invalid non-printable character U\+00A0u f'''{ }''' rnr%r r r test_missing_expressionus"z TestCase.test_missing_expressioncCsR|ddtrdnd}|t|ddg|tddg|tdd gdS) N)r4z(3,)rrzf'{,}'rz f'{3)+(4}'z!EOL while scanning string literalzf'{ }'rrr ror rr r r test_parens_in_expressionssz#TestCase.test_parens_in_expressionscCs|dd|dd|dd|ddd|dddd|ddd|dd|d d |d d |ddd |dddd |ddd |dd|d d |d d |ddd |dddd |ddd |dd|ddd |dddd |ddd |d d |d d |d d |dd|dd|dd|ddd|dddd|ddd|dd|dd|dd|ttd}Wdn1s00Y||d|ddd|dddd}|dd|d|d|d|d|dddS)N z\tr2z2 r4z2 3z 3uΔz\u0394u2Δu2Δ3uΔ3z \U00000394rrz\x20z2 z2 3z 3z f'\{6*7}'z\42\*Zspam&z\Nz\Nspamz\&)rZ assertWarnsDeprecationWarningr )r r<Z AMPERSANDr r r test_backslashes_in_string_partsX                    (  z(TestCase.test_backslashes_in_string_partcCs|tdgddS)Nzi\(unicode error\) 'unicodeescape' codec can't decode bytes in position .*: malformed \\N character escape) zf'\N'zf'\N 'zf'\N 'zf'\N{'z f'\N{GREEK CAPITAL LETTER DELTA'z'\N'z'\N 'z'\N 'z'\N{'z'\N{GREEK CAPITAL LETTER DELTA'rnr%r r r %test_misformed_unicode_character_namesz.TestCase.test_misformed_unicode_character_namecCs|tdgddS)Nz3f-string expression part cannot include a backslash)z f'{\'a\'}'zf'{\t3}'zf'{\}'z rf'{\'a\'}'z rf'{\t3}'zrf'{\}'zrf'{"\N{LEFT CURLY BRACKET}"}'zf'{\n}'rnr%r r r &test_no_backslashes_in_expression_partsz/TestCase.test_no_backslashes_in_expression_partcCs4|dd|dd|dd|dddS)z@ Only literal curly braces begin an expression. z{1+1}z{1+1Nrsr%r r r test_no_escapes_for_bracess   z#TestCase.test_no_escapes_for_bracescCs |dd|dddS)Nrrr57rsr%r r r test_newlines_in_expressionssz%TestCase.test_newlines_in_expressionscsxd|fdddd|fddddd|fd dddd tr`d nd }|t|d gdS)NrTcs|SNr r!r r r rrz&TestCase.test_lambda..8z'88888'cs|Srr rrr r rr10z '88888' cs|Srr rrr r rrz 88888 rrzf'{lambda x:x}'rrr rr test_lambdaszTestCase.test_lambdacCs4dd}|d}|t|d|t|ddS)Ncssd|dVdVdS)Nzy:r2r rr r r fn'szTestCase.test_yield..fnr'rK)rnext)r rrhr r r test_yield$szTestCase.test_yieldcCs>dd}|d}t|}||dd||dddS)Nc3sdfddVVdS)Nx:cs|Srr rrr r r1rz6TestCase.test_yield_send..fn..r rr rr r0sz$TestCase.test_yield_send..fnrzr'(stringzx:string)rrsend)r rrhZ the_lambdar r r test_yield_send/s zTestCase.test_yield_sendcCst|dd|dd|dd|dd|dd|dd|dd|dddS)Nr zeric'szxeric"syzxeric"szeric"syrsr%r r r +test_expressions_with_triple_quoted_strings8sz4TestCase.test_expressions_with_triple_quoted_stringscCsd}d}|||d|d||d||d|d|||dd|d|d|d |d||dd ||d|dd |d|d|d d dS)Nbr~Z98abcrZX98abcZ98XabcZ98abcXYZX98YabcZX98abcYZ98XabcYZZX98YabcZrs)r r r!r r r test_multiple_varsDszTestCase.test_multiple_varscCs0dd}||dd||dddS)Ncsfdd}|S)Ncs dS)Nrr r rr r innerUsz3TestCase.test_closure..outer..innerr )r rr rr outerTs z$TestCase.test_closure..outerZ987zx:987r5zx:7rs)r rr r r test_closureSszTestCase.test_closurecs<dfdd}||dddd}||ddddS) Nr2csd||SNx=r )r rrr r rg^sz"TestCase.test_arguments..ffoorzz x=foofoo barz x= 20rs)r rgr r rr test_arguments\s  zTestCase.test_argumentscCsd}|d|ddS)N{v:zv:123rs)r r<r r r test_localseszTestCase.test_localscCs8|tdtWdn1s*0YdS)Nr)rv NameErrorr<r%r r r test_missing_variableis zTestCase.test_missing_variablecCsfGddd}||dd||d||d|dd|dddS)Nc@seZdZddZdS)z,TestCase.test_missing_format_spec..OcSs |sdS|S)N*r rr r r rosz7TestCase.test_missing_format_spec..O.__format__Nrr r r r Onsrr rr43rs)r rr r r test_missing_format_specms z!TestCase.test_missing_format_speccCs||dtd|dtdd}|dtd|d|dtd|dtd|d|dtdS) Ng:zg:global variablezg:'global variable'local variable l:z"g:global variable l:local variablez$g:global variable l:'local variable'zmodule 'unittest' from)ra_globalassertInunittest)r a_localr r r test_global{s zTestCase.test_globalcCsrd}|d|d|d|dd}|d|d|d|d|d|d|d|ddS) Nzreally a localrzg:really a localzg:'really a local'rrz!g:really a local l:local variablez#g:really a local l:'local variable'rs)r rrr r r test_shadowed_globals zTestCase.test_shadowed_globalcCsdd}||dddS)NcSs dt|Srrrr r r rszTestCase.test_call..foorzzx=10rs)r rr r r test_callszTestCase.test_callcCs0d}|ddd||dddS)NrTrr4Z000Z555rs)r r!r r r test_nested_fstringsszTestCase.test_nested_fstringscCs:gd}dd|D}tr dnd}|t|||dS)N)zfu''zuf''zFu''zfU''zUf''zuF''zufr''zurf''zfur''zfru''zrfu''zruf''zFUR''zFur''zfb''zfB''zFb''zFB''zbf''zbF''zBf''zBF''cSsg|]}|ddqS)r")replace).0Zcaser r r rz9TestCase.test_invalid_string_prefixes..rzunexpected EOF while parsing)rr ro)r Zsingle_quote_casesZdouble_quote_cases error_msgr r r test_invalid_string_prefixessz%TestCase.test_invalid_string_prefixescCst|dd|dd|dd|dd|ddddDd|ddddDddS) Nr4rzexpr=cSsi|]\}}||qSr r rr r!r r r rz9TestCase.test_leading_trailing_spaces..))r3r2z expr={1: 2}cSsi|]\}}||qSr r rr r r rrrsr%r r r test_leading_trailing_spacessz%TestCase.test_leading_trailing_spacescCsP|ddkd|ddkd|ddkd|ddkdddS)Nr4r'Truez.3ZTrursr%r r r test_not_equalszTestCase.test_not_equalcCs|ddkddS)Nrr3Falsersr%r r r test_equal_equalszTestCase.test_equal_equalcCs|ddd|ddd|ddd|ddd|dd|dd|dd|dd|ddd |td gd |td gd dS)NgQ @z10.10z 3.14z 3.14 rqz'a'za!rz!<10.10z 3.14!!!!!!r)zf'{3!g}'zf'{3!A}'zf'{3!3}'zf'{3!G}'zf'{3!!}'zf'{3!:}'z f'{3! s}'r)z f'{x!s{y}}'z f'{3!ss}'z f'{3!ss:}'z f'{3!ss:s}'rr%r r r test_conversionss zTestCase.test_conversionscCs|tdgddS)Nr)zf'' = 3z f'{0}' = xz f'{x}' = xrnr%r r r test_assignmentszTestCase.test_assignmentcCs|tdddgdS)Nrzdel f''z del '' f''rnr%r r r test_dels zTestCase.test_delcCsp|tdgd|tdgd|dd|dd|dddd |d ddd dS) Nz#f-string: single '}' is not allowed)zf'{{}'zf'{{}}}'zf'}'zf'x}'zf'x}x'z f'\u007b}'z f'{3:}>10}'z f'{3:}}>10}'r)z f'{3:{{>10}'zf'{3'zf'{3!'zf'{3:'zf'{3!s'zf'{3!s:'z f'{3!s:3'zf'x{'zf'x{x'zf'{x'zf'{3:s'zf'{{{'zf'{{}}{'zf'{'zf'x{<'zf'x{>'rxryr4z>10z }}}}}}}}}3r2z {{{{{{{{{2)r rorr%r r r test_mismatched_braces s zTestCase.test_mismatched_bracescsdfdd}fdd}fdd}|dd|d d |dd|d d |dd |d d dS) Ncs$d}|rd}nd}||dSNrr3r2rsr Zexpectedflagr%r r test_fstring6s z2TestCase.test_if_conditional..test_fstringcs$d}|rd}nd}||dSrrsrr%r r test_concat_empty>s z7TestCase.test_if_conditional..test_concat_emptycs(d}d|rd}nd}||dS)Nrrrr3r2rsrr%r r test_concat_non_emptyFs  z;TestCase.test_if_conditional..test_concat_non_emptyrr2rrr3r )r rrrr r%r test_if_conditional1s        zTestCase.test_if_conditionalcCsFd}||d||d||d||ddS)Ntestz'test'rsrr r r test_empty_format_specifierWs z$TestCase.test_empty_format_specifiercCspddd}d}||dd||dd|||d|dj|dd|dj|dddS) NrZinteger)rqrrrqz{d[a]})rz{d[0]})rr)r rrqr r r test_str_format_differences^sz$TestCase.test_str_format_differencescCs(|tdddg|tdddgdS)NZ unsupportedzf'{(lambda: 0):x}'z f'{(0,):x}'zUnknown format codez f'{1000:j}')r r{rkr%r r r test_errorsiszTestCase.test_errorsz6The old parser only supports as the filenamec Cstd}tj|d}t|d}|dWdn1s@0Yt|dd\}}}Wdn1sp0Y||dd|dS)Nzt.pywzf"{a b}"ascii)ZPYTHONIOENCODINGbackslashreplace) rospathjoinopenwriterrencode)r cwdZ file_pathrgr\stderrr r r test_filename_in_syntaxerrorts (*z%TestCase.test_filename_in_syntaxerrorcCs,tdD]}|d|dt|qdS)Nizi:)rrr)r rr r r test_loops zTestCase.test_loopcCsXdddd}||dd||dd||dd||dddS)NZdquoteZsquoter)rrrrrrrsrr r r test_dictszTestCase.test_dictcCs$|tdd|tdddS)Nzf"\ "rzf"\ ")rr r%r r r test_backslash_charszTestCase.test_backslash_charcsd|ddt|ddt|ddt|ddt|ddtd|dddtd|ddtd|dddttd|dddttd|dddttdd|d d d d d }|d|dd|ddd|dddddd}|d|dd|dd d|ddkd |ddkd!|ddkd!|ddkd |d"d"|d"|d#d"|d#|d$d$d%|d&d'fd(d)}d||d*d+d,|d*||d-d+d*|d-Gd.d/d/}|d0|d1|d0|d1|d0|d2|d0|d3d4|d0|d5d6|d0|dd7|ttd8d9|d:d;d:td;|d<d;dd;d>td;dS)?NzA stringrzx =g @z.2frz^20 z3*x+15=r4raz 3*x+15=42gffffff?@utenπ=u tenπ=31.40u"Σ"=uΣu "Σ"='Σ'z3.1415=go! @z.1fz*^20z*****3.1415=3.1*****uπu alpha α pi=u ω omegaualpha α pi='π' ω omegaz 3 =z 3 =3rr3rr5rT==10 20cs }||Srr )rqZoldxrr r rgsz)TestCase.test_debug_conversion..fz3=)rqrr'c@seZdZddZddZdS)z)TestCase.test_debug_conversion..CcSs d|S)NzFORMAT-r )r rr r r rsz4TestCase.test_debug_conversion..C.__format__cSsdS)NZREPRr r%r r r __repr__sz2TestCase.test_debug_conversion..C.__repr__N)rrrrrr r r r CsrzC()=zC()=REPRz C()=FORMAT-rrz C()=FORMAT- r z C()=FORMAT-xzC()=********REPR********zf'{C=]'rzXx=rzXx =zXx= zXx = )rreprrrrrvror )r ttenπpirgrr rr test_debug_conversionsn"""        zTestCase.test_debug_conversioncCs6d}||dd|d}d||ddS)Nrrrrzrrsrr r r test_walrusszTestCase.test_walruscCsJtr dnd}|t|tdddWdn1s<0YdS)Nrrz f'{a $ b}'?r*)rrror-rr r r !test_invalid_syntax_error_messagesz*TestCase.test_invalid_syntax_error_messagecCsBtd}|t|ddWdn1s40YdS)NzCannot specify ',' with ','.r3z,,reescaperrkr rr r r (test_with_two_commas_in_format_specifier s z1TestCase.test_with_two_commas_in_format_specifiercCsBtd}|t|ddWdn1s40YdS)NzCannot specify '_' with '_'.r3__rr!r r r ,test_with_two_underscore_in_format_specifiers z5TestCase.test_with_two_underscore_in_format_specifiercCsBtd}|t|ddWdn1s40YdS)N Cannot specify both ',' and '_'.r3z,_rr!r r r 8test_with_a_commas_and_an_underscore_in_format_specifiers zATestCase.test_with_a_commas_and_an_underscore_in_format_specifiercCsBtd}|t|ddWdn1s40YdS)Nr%r3z_,rr!r r r 7test_with_an_underscore_and_a_comma_in_format_specifiers z@TestCase.test_with_an_underscore_and_a_comma_in_format_specifierN)Irrrr r"r1rJrPrSrZskipIfrrWr^r`rerjrlrmrprtrurwr|rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrrrrr"r$r&r'r r r r rs4-  B  25  #& (7            !'&    h r__main__)r+rrrrrZ test.supportrrZtest.support.script_helperrrrrmainr r r r  s*