ÿØÿà 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@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl m Z GdddejZGddde jZGdd d eZGd d d eZGd d d eZGdddeZddZGddde jZGdddeZefZedeiZGdddeZGdddeZGdddeZ GdddeZ!Gdd d eZ"Gd!d"d"eZ#Gd#d$d$eZ$Gd%d&d&eZ%Gd'd(d(eZ&Gd)d*d*eZ'Gd+d,d,eZ(Gd-d.d.eZ)Gd/d0d0eZ*Gd1d2d2eZ+Gd3d4d4eZ,Gd5d6d6eZ-Gd7d8d8eZ.Gd9d:d:eZ/Gd;d<dd>eZ1Gd?d@d@eZ2GdAdBdBeZ3GdCdDdDeZ4GdEdFdFeZ5GdGdHdHeZ6GdIdJdJeZ7GdKdLdLeZ8GdMdNdNeZ9GdOdPdPeZ:GdQdRdReZ;GdSdTdTeZGdYdZdZeZ?Gd[d\d\eZ@Gd]d^d^eZAGd_d`d`eZBGdadbdbeZCGdcddddeZDGdedfdfeZEGdgdhdheZFGdidjdjeZGGdkdldleZHGdmdndneZIGdodpdpeZJGdqdrdreZKGdsdtdteZLGdudvdveZMGdwdxdxeZNGdydzdzeZOGd{d|d|eZPGd}d~d~eZQGdddeZRGdddeZSGdddeZTGdddeZUGdddeZVGdddeZWGdddeZXGdddeZYGdddeZZGdddeZ[GdddeZ\GdddeZ]GdddeZ^GdddeZ_GdddeZ`GdddeZaGdddeZbGdddeZcGdddeZdGdddeZeGdddeZfGdddeZgGdddeZhGdddeZiGdddeZjGdddeZkGdddeZlGdddeZmGdddeZnGdddeZoGdddeZpGdddeeZqGdddeeZrGdd„deZseZteZuGddĄdăZvevdŃZwevdƃZxevdǃZyevdȃZzevdɃZ{evdʃZ|Gdd̄deZ}Gdd΄deeZ~GddЄdeeZGdd҄deeZGddԄdeZe eedՃo.edkd֡Gdd؄deeZe eedՃo`edkd֡GddڄdeeZe eedՃoedkd֡Gdd܄deeZe eedՃoedkd֡GddބdeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGd d d eeZGd d d eeZGd ddeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdd d eZGd!d"d"eZGd#d$d$eZGd%d&d&eZefZed'eiZGd(d)d)eZGd*d+d+eZGd,d-d-eZGd.d/d/eZGd0d1d1eZGd2d3d3eZGd4d5d5eZGd6d7d7eZGd8d9d9eZGd:d;d;eZGd<d=d=eZGd>d?d?eZGd@dAdAeZGdBdCdCeZGdDdEdEeZGdFdGdGeZGdHdIdIeZGdJdKdKeZGdLdMdMeZGdNdOdOeZGdPdQdQeZGdRdSdSeZGdTdUdUeZGdVdWdWeZGdXdYdYeZGdZd[d[eZGd\d]d]eZGd^d_d_eZGd`dadaeZGdbdcdceZGdddedeeZGdfdgdgeZGdhdidieZGdjdkdkeZGdldmdmeZGdndodoeZGdpdqdqeZGdrdsdseZGdtdudueZGdvdwdweZGdxdydyeZGdzd{d{eZGd|d}d}eZGd~ddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZddZedkre dS(N)support)mockcs&eZdZdfdd ZddZZS) StdIOBuffer cs,|d}tjtt|d|ddS)Nutf-8)newline)encodesuper__init__ioBufferedWriterBytesIO)selfZ initial_valuer __class__1/opt/python39/lib/python3.9/test/test_argparse.pyr s zStdIOBuffer.__init__cCs||jjdS)Nr)flushbufferrawgetvaluedecoderrrrr szStdIOBuffer.getvalue)rr)__name__ __module__ __qualname__r r __classcell__rrrrrsrc@seZdZddZdS)TestCasecCs t}d|d<||jdS)NZ80COLUMNS)rEnvironmentVarGuard addCleanup__exit__renvrrrsetUp'szTestCase.setUpN)rrrr%rrrrr%src@s,eZdZddZddZddZddZd S) TempDirMixincCs$t|_t|_t|jdSN)tempfilemkdtemptemp_dirosgetcwdold_dirchdirrrrrr%2s  zTempDirMixin.setUpcCs^t|jtj|jddD].\}}}|D]}ttj|j|tj q*qt |jddS)NF)topdownT) r+r.r-walkr*chmodpathjoinstatS_IWRITEshutilrmtree)rrootdirsfilesnamerrrtearDown7s  zTempDirMixin.tearDowncCsHtj|j|}t|d}||Wdn1s:0Y|S)Nw)r+r2r3r*openwrite)rfilenameZ file_pathfilerrrcreate_writable_file>s (z!TempDirMixin.create_writable_filecCst||tjdSr')r+r1rBr4S_IREAD)rr@rrrcreate_readonly_fileDsz!TempDirMixin.create_readonly_fileN)rrrr%r<rBrDrrrrr&0sr&c@seZdZddZdS)SigcOs||_||_dSr')argskwargsrrFrGrrrr Isz Sig.__init__Nrrrr rrrrrEGsrEc@s$eZdZddZddZddZdS)NScKs|j|dSr')__dict__update)rrGrrrr Psz NS.__init__cCs4t|j}ddd|D}dt|j|fS)Nz, cSsg|] }d|qS)z%s=%rr).0tuprrr UzNS.__repr__..z%s(%s))sortedrKitemsr3typer)rZ sorted_itemsZ kwarg_strrrr__repr__Ssz NS.__repr__cCst|t|kSr')varsrotherrrr__eq__Xsz NS.__eq__N)rrrr rTrXrrrrrJNsrJc@seZdZdddZdS)ArgumentParserErrorNcCs,t||||||_||_||_||_dSr') Exceptionr messagestdoutstderr error_code)rr[r\r]r^rrrr ^s zArgumentParserError.__init__)NNNrIrrrrrY\srYc Osjttjtsttjtr&||i|Stj}tj}tt_tt_zz||i|}tt|D]}t||}|tjurt|||qb|tjj urt||t|dt qb|tjurt|||qb|tjj urbt||t|dt qb|WW|t_|t_St yF}z6|j } tj} tj} td| | | dWYd}~n d}~00W|t_|t_n|t_|t_0dS)Nr SystemExit) isinstancesysr]rr\listrUgetattrsetattrrBIN_STDOUT_SENTINELBIN_STDERR_SENTINELr_coderrY) parse_argsrFrGZ old_stdoutZ old_stderrresultkeyattrergr\r]rrrstderr_to_parser_errorfsH       rmcs4eZdZfddZfddZfddZZS)ErrorRaisingArgumentParsercs"tt|j}t|g|Ri|Sr')r rnrhrm)rrFrGrhrrrrhs z%ErrorRaisingArgumentParser.parse_argscs"tt|j}t|g|Ri|Sr')r rnexitrm)rrFrGrorrrros zErrorRaisingArgumentParser.exitcs"tt|j}t|g|Ri|Sr')r rnerrorrm)rrFrGrprrrrps z ErrorRaisingArgumentParser.error)rrrrhrorprrrrrrns  rnc@seZdZddZdS)ParserTesterMetaclassc Cs|dkr dSt|dst|_t|ds.t|_dd}dd}dd }d d }d d }Gdddt} |||fD]} ||fD]} | || | q|qpdS)NParserTestCaseparser_signature parser_classcSs"|D]}|j|ji|jqdSr') add_argumentrFrG)parserargument_signaturessigrrr no_groupssz1ParserTesterMetaclass.__init__..no_groupscSs,|d}|D]}|j|ji|jqdS)Nfoo)add_argument_grouprurFrG)rvrwgrouprxrrr one_groups z1ParserTesterMetaclass.__init__..one_groupcSs8t|D]*\}}|d|}|j|ji|jqdS)Nzfoo:%i) enumerater{rurFrG)rvrwirxr|rrr many_groupssz3ParserTesterMetaclass.__init__..many_groupscSs ||Sr')rh)rvrFrrrlistargssz0ParserTesterMetaclass.__init__..listargscSs4tj}|dg|t_z|W|t_S|t_0dS)Nr)raargvrh)rvrFZ old_sys_argvrrrsysargssz/ParserTesterMetaclass.__init__..sysargsc@s,eZdZddZddZddZddZd S) z0ParserTesterMetaclass.__init__..AddTestsc Ss||_||_|jj}|jj}|j|jfD]T}|j}|||f}d|} |fdd} z | | _WntynYn0t|| | q(dS)N_cSs ||dSr'rr test_funcrrrwrapperszJParserTesterMetaclass.__init__..AddTests.__init__..wrapper)_add_arguments _parse_argsr test_failurestest_successesr3 TypeErrorrd) rZ tester_cls add_argumentsrhZadd_arguments_nameZparse_args_namer func_namenames test_namerrrrr s     z9ParserTesterMetaclass.__init__..AddTests.__init__cSs2|jj}|jj}|j|i|}|||j|Sr')rsrFrGrtrrw)rtesterrFrGrvrrr _get_parsers z.AddTests._get_parserc SsZ||}|jD]D}|}|jt|d||Wdq1sJ0YqdS)N)msg)rfailuressplit assertRaisesrYrh)rrrvargs_strrFrrrrs   z>ParserTesterMetaclass.__init__..AddTests.test_failurescSsH||}|jD]2\}}t|tr*|}|||}|||qdSr')r successesr`strrr assertEqual)rrrvrF expected_nsZ result_nsrrrrs    z?ParserTesterMetaclass.__init__..AddTests.test_successesN)rrrr rrrrrrrAddTestssr)hasattrrErsrnrtobject) clsr;basesbodydictryr}rrrrrrhrrrr s    - zParserTesterMetaclass.__init__NrIrrrrrqsrqrrc@s^eZdZedgZgdZdeddfdeddfdeddfd ed dfd ed dfgZdS) TestOptionalsSingleDash-x)ra--foo-x --fooz-x -yrNx-x ar-xaz-x -1-1z-x-1rrrrErwrrJrrrrrrs      rc@seZdZedddeddddedgZgd Zd ed d d d fdedd d d fded d dd fded d dd fdedd dd fdedd dd fdedd dd fdedd dd fded dd d fded dd d fdedddd fdedddd fg Zd S)TestOptionalsSingleDashCombinedr store_trueactionz-yyy store_const*rconst-z) rrrrz-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzarFN)ryyyzT-zar-z az-xzaz-xz az-x -zaz-x -z a-yz -x -yyy -zaz -x -yyy -z arrrrrr!s$  rc@s^eZdZedgZgdZdeddfdeddfded dfd eddfd eddfgZdS) TestOptionalsSingleDashLong-foo)rrrz -foo --fooz-foo -y-fooarNrzz-foo arz-foo -1rz-fo a-f arrrrrr;s      rc @seZdZedededgZgdZdeddddfded dddfd ed dddfd ed dddfd eddddfdedd ddfdeddd dfgZdS)&TestOptionalsSingleDashSubsetAmbiguous-f-foobar-foorab)rr-fo-foo bz-foobz-foobaz-foorarN)ffoobarfoorabrr-fa-foaZoarZooa -foobar a -foorab arrrrrrIsrc @seZdZededgZgdZdedddfdedddfd edddfd edddfd edddfd edddfd edddfgZdS) TestOptionalsSingleDashAmbiguousrr)rrrrrrrrN)rrz-foob arz-foor az-fooba az-foora arrrrrrrrYsrc@sVeZdZedddgZgdZdeddfded dfd ed dfd ed dfgZdS) TestOptionalsNumericronedest)rrz-1 --fooz-1 -yz-1 -1z-1 -2rN)rz-1 arz-1az-1-2-2rrrrrris    rc@s^eZdZedgZgdZdeddfdeddfdeddfd ed dfd ed dfgZdS) TestOptionalsDoubleDashr)rrrrz--foo -xz --foo --barrNrz--foo arz--foo=az --foo -2.5z-2.5z --foo=-2.5rrrrrrvs      rc @seZdZedddedgZgdZdeddd fd edd d fd ed dd fded dd fded dd fded dd fgZdS)#TestOptionalsDoubleDashPartialMatch--badgerrrz--bat)--bar--b--ba--b=2z--ba=4 --badge 5rFN)badgerZbatz--bat XX--badT--badg--badgerrrrrrs rc @seZdZedddedgZgdZdeddd fd edd d fd edd d fd eddd fdeddd fdeddd fdeddd fgZdS)"TestOptionalsDoubleDashPrefixMatchrrrr)rrrrrrFN)rZbaz--ba Xrz--ba=XrTrrrrrrrrs rc @seZdZedddededdddgZgd Zd ed d d d fdedd d d fded dd d fdeddd d fdedd dd fdedd dd fgZd S)TestOptionalsSingleDoubleDashrrrr-bazrrr)r-fbarz-fbazz-bazf-b BBrFNrbarbazTz--ba Brz -f --bar Bz-f -bz-ba -frrrrrrs  rc @seZdZedddZedddededd d d gZgd Zd eddddfdeddddfdeddddfdeddddfdeddd dfdeddd dfgZdS)!TestOptionalsAlternatePrefixChars+:/F prefix_charsadd_help+frr::bar/bazrrr) rrrrr--bar Br-h--helpz+hz::helpz/helprNrT::ba Br +f ::bar B+f /b/ba +f rrrrErsrwrrJrrrrrrs   rc @seZdZedddZedddededd d d gZgd Zd eddddfdeddddfdeddddfdeddddfdeddd dfdeddd dfgZdS)*TestOptionalsAlternatePrefixCharsAddedHelprTrrrrrrrrr)rrrrrrrrFNrrrrrrrrrrrrs   rc @seZdZedddZedddedddedddgZgd Zd edddd fded ddd fd ed d dd fded d d d fgZdS)2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-Frrrrz+yz+z)-wz-xyzz+xrz+xyzrryrTz+y -xz+yz -xNrrrrrrs    rc@sheZdZeddddddgZgdZded d fded d fded d fded d fded d fgZd S) TestOptionalsShortLong-vz --verbosez-nz--noisyrr)z --x --verbosez-Nrz-v xrF)verboseTNrrrrrrs     rc@sbeZdZededddgZdgZdeddd fd edd d fd ed dd fdeddd fgZdS)TestOptionalsDestz --foo-bar--bazzabbazrrz --foo-bar frN)Zfoo_barrz--baz ggz--foo-bar h --baz ihrz--baz j --foo-bar kkjrrrrrr src@sTeZdZededddgZdgZdedddfd ed ddfd edd dfgZdS) TestOptionalsDefaultrrrdefaultrrNrrz-xxrz-yyrrrrrrrs rc@s:eZdZedgZddgZdeddfdeddfgZdS)TestOptionalsNargsDefaultrrrNrrrrrrrr &s    r c@s@eZdZedddgZddgZdeddfdedgdfgZdS) TestOptionalsNargs1rnargsrrNrrrrrrrr 1s  r c@sBeZdZedddgZgdZdeddfdegd dfgZdS) TestOptionalsNargs3rr)rrr-x a ba -xa -x brNrz-x a b crbcrrrrrr<s  rc@seZdZedddeddddedddd ed ded d d gZdgZdedddddfdedddddfdedddddfdedddddfdedddddfdedddddfdedddddfd edddddfdedddddfg ZdS)TestOptionalsNargsOptionalr?rrr)rrrspamrr r42Z84)rrSrr 2rNTr=rrrz-w 2z-x 2z-y 2z-z 2 rrrrEintrwrrJrrrrrrGs    rc @seZdZedddeddddgZdgZded dd fdegdd fd edgdd fd edd gdd fded gd fded dgd fded dd gd fgZd S)TestOptionalsNargsZeroOrMorer*rrrrrrNr rrr-y a-y a brrrrrr$^s  r$c @seZdZedddeddddgZgdZded dd fd ed gdd fd ed dgdd fded d gd fded d dgd fgZd S)TestOptionalsNargsOneOrMorer+rrrr)rrrrza -y brNr rrrrr&r'rrrrrr(qs  r(c @seZdZedddedeeddgZgdZded d d fd ed d d fd edd d fded dd fded dd fdeddd fgZ d S)TestOptionalsChoicesrabcchoicesz-grSr-)rz-f dz-fadz-gaz-g 6rN)rrrrz-f crz-g 0rz-g 03rz-fb -g4r rrrrEr#rangerwrrJrrrrrr*s r*c@s@eZdZededdgZddgZdeddfd ed dfgZd S) TestOptionalsRequiredrTrSrequiredrr-x 1rrz-x42rNr"rrrrr3s    r3c@s>eZdZedddgZddgZdeddfd ed dfgZdS) TestOptionalsActionStorerstorerrrrNrz-xfoorzrrrrrr7s   r7c@s>eZdZeddedgZdgZdeddfdeedfgZdS)TestOptionalsActionStoreConstrrrrrNr) rrrrErrwrrJrrrrrr9s   r9c@s>eZdZedddgZgdZdeddfdeddfgZd S) TestOptionalsActionStoreFalser store_falser)rrrrT)rFNrrrrrr;s   r;c@s>eZdZedddgZgdZdeddfdeddfgZd S) TestOptionalsActionStoreTruez--applerr)rz --apple=bz --apple brF)ZappleTNrrrrrr=s   r=c@sleZdZedejdgZddgZdeddfdeddfd ed dfd ed dfd eddfgZ d dZ dS)TestBooleanOptionalActionrrz --foo barz --foo=barrNrT--no-fooFz--foo --no-fooz--no-foo --foocCsZt}|t"}|jddtjdWdn1s:0Y|dt|jdS)NrTrrz*got an unexpected keyword argument 'const') argparseArgumentParserrrruBooleanOptionalActionassertInr exceptionrrvcmrrr test_consts 0z$TestBooleanOptionalAction.test_const) rrrrErArCrwrrJrrHrrrrr>s     r>c@s@eZdZeddejdgZdgZdeddfdeddfgZ dS) !TestBooleanOptionalActionRequiredrT)r5rrrr?FN) rrrrErArCrwrrJrrrrrrIs   rIc@sPeZdZedddgZgdZdeddfded gdfd ed d gdfgZdS) TestOptionalsActionAppendrappendrrra --baz --baz a brNr--baz ar--baz a --baz brrrrrrrJs  rJc@sXeZdZedddgdgZgdZdedgdfdedd gdfd egd dfgZd S) $TestOptionalsActionAppendWithDefaultrrKrrr rLrrOrPrrQ)rrrNrrrrrrRs rRc@sbeZdZeddededdddgZgdZd ed d fdeegd fd eed edgd fgZd S)TestOptionalsActionAppendConst-b append_constr-crKrrrrrWza -cz-bxz-b xrNr-b -cx -b -cyzryz rrrrErZrwrrJrrrrrrTs   rTc @sleZdZeddedgdeddddgZgd Zd edgd fdedegd fd eded edgd fgZdS))TestOptionalsActionAppendConstWithDefaultrUrVr)rrr rWrKrrXrYrrZr[rr\Nr]rrrrr^s r^c@s>eZdZedddgZgdZdeddfdeddfgZdS) TestOptionalsActionCountrcountr)rrz-x bz -x a -x brNrrrrrrrr_"s   r_c @sreZdZedededddgZddgZded d d d fd ed d d d fded dd d fdedd dd fgZd S)"TestOptionalsAllowLongAbbreviationrz--foobazz--fooblerrz--foob 5z--foobrNF)rzZfoobazZfooblez--foo 77z --fooba arz--foobl --foo grTrrrrrra-s rac@sleZdZeddZededddedgZgdZd ed dd d fd ed dd d fdedddd fgZd S)%TestOptionalsDisallowLongAbbreviationF allow_abbrevrz--foodlerrz--foonly)z-foon 3z--foon 3z--foodz--food --foo 2rNrzZfoodleZfoonlyz--foo 33z--foonly 7 --foodle --foo 2rTrbrrrrrrc>s  rcc@sneZdZedddZededddedgZgd Zd ed dd d fd eddd d fdedddd fgZd S)0TestOptionalsDisallowLongAbbreviationPrefixCharsr)Frrez++fooz++foodlerrz++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2rNrfz++foo 3rgz++foonly 7 ++foodle ++foo 2rTrbrrrrrrhOs  rhc @seZdZeddZededddgZddgZded d d fd ed d d fd edd d fded dd fded dd fdeddd fgZd S)/TestDisallowLongAbbreviationAllowsShortGroupingFrdz-rrWr`rz-c -rrNrrz-rarz-rccccz-ccr!z-cc -raz-ccrccrrrrrrj`s  rjc @seZdZedddZededddgZddgZd ed d d fd ed d d fdedd d fded dd fded dd fdeddd fgZd S)5TestDisallowLongAbbreviationAllowsShortGroupingPrefixr)Friz+rz+cr`rz+c +rrNrkz+rarz+rccrmz+ccr!z+cc +raz+ccrccrrrrrrnss  rnc@s.eZdZedgZgdZdeddfgZdS)TestPositionalsNargsNonerzrra brrNrrrrrros  roc@s4eZdZedddgZgdZdedgdfgZdS)TestPositionalsNargs1rzrrrprrNrrrrrrrsrrc@s6eZdZedddgZgdZdeddgdfgZd S) TestPositionalsNargs2rzr!r)rrra b crqrrrNrrrrrrssrsc@sNeZdZedddgZdgZdegdfdedgdfdedd gdfgZd S) TestPositionalsNargsZeroOrMorerzr%rrrrrrqrNrrrrrrus  ruc@sPeZdZeddddgZdgZdeddfdedgdfd edd gdfgZd S) %TestPositionalsNargsZeroOrMoreDefaultrzr%rrrrrrrqrNrrrrrrvs  rvc@sDeZdZedddgZddgZdedgdfdedd gdfgZd S) TestPositionalsNargsOneOrMorerzr)rrrrrrqrNrrrrrrws rwc@s>eZdZedddgZddgZdeddfd ed dfgZdS) TestPositionalsNargsOptionalrzrrrrqrNrrrrrrrrxs   rxc@s@eZdZeddddgZddgZdeddfd ed dfgZd S) #TestPositionalsNargsOptionalDefaultrzrrrrrqrrrNrrrrrrys   ryc@sBeZdZeddeddgZgdZdeddfd ed dfgZd S) ,TestPositionalsNargsOptionalConvertedDefaultrzrr)rrSr )rrq1 2rrr1rNr"rrrrrzs   rzc@s6eZdZededgZgdZdedddfgZdS) TestPositionalsNargsNoneNonerzr)rrrrtrqrrrzrNrrrrrr}sr}c@s<eZdZededddgZgdZdeddgd fgZd S) TestPositionalsNargsNone1rzrrr)rrrrtrqrrr~Nrrrrrrsrc@s>eZdZedddedgZgdZdeddgd d fgZd S) TestPositionalsNargs2Nonerzr!rrrrrrqa b c drtrrrr~Nrrrrrrsrc@s\eZdZededddgZddgZdedgdfd edd gdfd edd d gdfgZd S)"TestPositionalsNargsNoneZeroOrMorerzrr%rrrrr~rqrrtrNrrrrrrs rc@sNeZdZededddgZgdZdeddgd fd eddd gd fgZd S) !TestPositionalsNargsNoneOneOrMorerzrr)rrrrrqrrr~rtrNrrrrrrs rc@sHeZdZededddgZgdZdedddfd edd dfgZdS) TestPositionalsNargsNoneOptionalrzrrrrrrtrNr~rqrrrrrrr%s rc@s\eZdZedddedgZddgZdegddfd edgd dfd edd gd dfgZd S)"TestPositionalsNargsZeroOrMoreNonerzr%rrrrrr~rqrrtrNrrrrrr0s rc@sNeZdZedddedgZgdZdedgdd fd eddgd d fgZd S) !TestPositionalsNargsOneOrMoreNonerzr)rrrrqrrr~rtrNrrrrrr<s rc@sJeZdZeddddedgZgdZdedddfd edd dfgZd S) TestPositionalsNargsOptionalNonerzrrrrrrr~rqrNrrrrrrGs rc@sVeZdZedddedddgZgdZdedd ggd fd edd gd gd fgZd S)TestPositionalsNargs2ZeroOrMorerzr!rrr%rrqrrr~rtrNrrrrrrRs rc@sDeZdZedddedddgZgdZdedd gd gd fgZd S) TestPositionalsNargs2OneOrMorerzr!rrr))rrrrqrtrrrr~Nrrrrrr]src@sTeZdZedddedddgZgdZdedd gd d fd edd gd d fgZd S)TestPositionalsNargs2Optionalrzr!rrr)rrrrrqrrNr~rtrrrrrrrgs rc@sfeZdZedddedddgZddgZdegdgd fd edgd gd fd edd gd gd fgZdS)TestPositionalsNargsZeroOrMore1rzr%rrrrrrr~rqrrtrNrrrrrrrs rc@sVeZdZedddedddgZgdZdedgd gd fd edd gd gd fgZd S)TestPositionalsNargsOneOrMore1rzr)rrrrrqrrr~rtrNrrrrrr~s rc@sPeZdZedddedddgZgdZdeddgd fd edd gd fgZdS) TestPositionalsNargsOptional1rzrrrrrrNr~rqrrrrrrrs rc@s\eZdZededddedddgZgdZded gd gd fd ed d gd gd fgZdS)#TestPositionalsNargsNoneZeroOrMore1rzrr%rrrrrqrrrzrrrtrNrrrrrrs  rc@s`eZdZededddedddgZgdZded d gd gd fd ed d d gdgd fgZdS)"TestPositionalsNargsNoneOneOrMore1rzrr)rrr)rrrrrtrrrrrdNrrrrrrs  rc@s\eZdZededdddedddgZgd Zd ed dd gd fded d dgd fgZdS)!TestPositionalsNargsNoneOptional1rzrr?rrrrrrqrrrrtrNrrrrrrs  rc@s\eZdZedddeddddgZddgZd ed dd fd ed dd fd ed dd fgZd S)$TestPositionalsNargsOptionalOptionalrzrrrrrrrtrNr~rrqrrrrrrrs  rc@sleZdZedddedddgZdgZdedgd fd ed gd fd ed d gd fd ed d dgd fgZdS)&TestPositionalsNargsOptionalZeroOrMorerzrrrr%rrNr~rrqrrtrrrrrrrsrc@sbeZdZedddedddgZddgZded dgd fd edd gd fd edd dgd fgZd S)%TestPositionalsNargsOptionalOneOrMorerzrrrr)rrrNr~rqrrtrrrrrrrs rc@sBeZdZededdgZgdZdeddfdeddfgZdS) TestPositionalsChoicesStringrZabcdefgr,rrrrZefrrrN) rrrrEsetrwrrJrrrrrrs   rc@sDeZdZedeeddgZgdZdeddfded dfgZ d S) TestPositionalsChoicesIntrr/r4r0r15Nr1rrrrrs   rc@sFeZdZedddeddddgZgdZdedd d ggd fgZd S) TestPositionalsActionAppendrrKrr!)rrrrtrrrrNrrrrrrs   rc@sjeZdZedddeddddgZdd gZd ed d d fdedd d fded dd fdeddd fgZd S)"TestOptionalsNumericAndPositionalsrrrz-4rrrrrz-315rNFr rTz-4 arrrrrrs  rc @sveZdZedddeddddgZdgZd ed d d fd ed d d fdedd d fded dd fdeddd fgZd S)(TestOptionalsAlmostNumericAndPositionalsrrrz-k4rrrz-k3rNFr rrTz-k4 arrrrrrs  rc @seZdZedddeddddgZdgZdgedd d fd ged d d fd ged d d fddged dd fdd ged d d fdd ged d d fd ged d d fdged d d fgZd S)$TestEmptyAndSpaceContainingArgumentsrrrrz--yyyrrrNr za badgerz -a badgerz--yyy=a badgerz--yyy=-a badgerrrrrrr0s  rc @seZdZeddZedddddedd ed d ed d ddgZddgZdedd ddfdedd ddfdedd ddfdeddddfd edd ddfdedd ddfgZ dS) TestPrefixCharacterOnlyArgumentsz-+r-rrr)rrrr)rr)rrSr z-+-rrrrz+ -rNFrz- Xrz+ -3Tz- ===z===) rrrrErsr#rwrrJrrrrrrCs  rc @seZdZedddedddgZgZdedgdfdeggdfded ggdfd ed gd gdfd edd gdfd egd gdfd ed gd gdfgZdS)TestNargsZeroOrMorerr%rrrNr rrz -x a -- brrrrrrrrrVsrc @szeZdZededddedgZgdZdedgdd fd edgd d fd edgd dd fdedddgdd fgZdS)TestNargsRemainderrr...rr)rrz-z ZrNrz-z Z XZ X A B -z Z)Arrrz X Y --fooYrrrrrrrfsrc@seZdZededededdedddgZgd Zd ed d gd fd edd gd fdedd dgd fded dgd fded dgd fded dgd fded ddgd fded d dgd fdedd dgd fdedd dgd fded ddgd fg Zd S)TestOptionLikerrSz-3r)rSrrr%r) rz-y2.5rz-x -az-x -3z-x -3.5z-3 -3.5z-x -2.5z -x -2.5 az-3 -.5za x -1z-x -1 az-3 -1 arNrz-x 2.5@z-x 2.5 arz-3.5?z-3-.5gz-3 .5za -3.5za -x 1g?z-x 1 az-3 1 a) rrrrEfloatrwrrJrrrrrrss"   rc @seZdZeddejdeddejdeddejdgZd gZd efd ed d fd ed dgdfdeddfded ddfded dgddfgZ dS)TestDefaultSuppressrzrrrr%rrrSrrrrrqrr~TrOrMrzrrNrN) rrrrErASUPPRESSrwrrJrrrrrrs  rc @seZdZeejdZedddedddeddd gZd gZd e fd e d d fde d dgdfde ddfde d ddfde d dgddfgZ dS)TestParserDefaultSuppressargument_defaultrzrrrr%rrrrrrrrqrr~TrOrMrrNrN) rrrrErArrsrwrrJrrrrrrs      rc @seZdZeddZeddddeddd ed d d ed d dgZdgZdedddddfdedddddfdeddgdddfd edddddfdedddddfdeddgdddfgZdS)TestParserDefault42rr --versionversion1.0rrrzrrrr%rrrrr)rzrrrrrqrTrMrNNrrrrrrs     rc seZdZfddZeddZedededdd gZgd Zd ed d dgdfdedd ddgdfded dd gdfded d dgdfdeddddgdfdedd ddgdfgdedd dgdfgZ Z S)TestArgumentsFromFilec s\tt|gd}|D]<\}}t|d}||Wdq1sL0YqdS)N)helloz hello world! ) recursivez -a A @hello)invalidz@no-such-path r=)r rr%r>r?rZ file_textsr2textrArrrr%s   zTestArgumentsFromFile.setUp@fromfile_prefix_chars-arrr)r)rrUrz@invalidz@missingzX YNrr)rrrz X -a A Y Zrr@hello Xz hello world!zX @helloz-a B @recursive Y ZzX @recursive Z -a Br)rrrrr) rrrr%rErsrwrrJrrrrrrrs  rcs`eZdZfddZGdddeZeZeddZeddd gZ gZ d e gd d fgZ Z S) TestArgumentsFromFileConverterc sZtt|dg}|D]<\}}t|d}||Wdq1sJ0YqdS)Nrr=)r rr%r>r?rrrrr%s   z$TestArgumentsFromFileConverter.setUpc@seZdZddZdS)z>TestArgumentsFromFileConverter.FromFileConverterArgumentParserccs"|D]}|sq|VqdSr')rstrip)rarg_lineargrrrconvert_arg_line_to_argss zWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argsN)rrrrrrrrFromFileConverterArgumentParsersrrrrr)rr)rzworld!rr:)rrrr%rnrrtrErsrwrrJrrrrrrrs   rc@s4eZdZddZddZddZddZd d Zd S) TestFileTypeReprcCstd}|dt|dS)Nrlz FileType('r')rAFileTyperreprrrSrrrtest_rs zTestFileTypeRepr.test_rcCs tdd}|dt|dS)NwbrzFileType('wb', 1)rrrrr test_wb_1s zTestFileTypeRepr.test_wb_1cCs"tjddd}|dt|dS)Nrllatin_1encodingz!FileType('r', encoding='latin_1')rrrrr test_r_latinszTestFileTypeRepr.test_r_latincCs$tjdddd}|dt|dS)Nr=big5ignore)rerrorsz/FileType('w', encoding='big5', errors='ignore')rrrrrtest_w_big5_ignoresz#TestFileTypeRepr.test_w_big5_ignorecCs$tjdddd}|dt|dS)Nrlrreplacerz"FileType('r', 1, errors='replace')rrrrrtest_r_1_replace!sz!TestFileTypeRepr.test_r_1_replaceN)rrrrrrrrrrrrrs rc@seZdZddZddZdS)StdStreamComparercCs8t||_|dkrt|_n|dkr,t|_nt|_dS)N stdout.buffer stderr.buffer)operator attrgetterrcre backupattrrfr)rrkrrrr +s  zStdStreamComparer.__init__cCs2z||tkWSty,||jkYS0dSr')rcraAttributeErrorrrVrrrrX9s zStdStreamComparer.__eq__Nrrrr rXrrrrr*srstdinr\r]z stdin.bufferrrc@s eZdZiZddZddZdS)RFilecCs ||_dSr'r;rr;rrrr KszRFile.__init__cCs`||jvr|j|}n|}|j|<|t|tsD|d}|j|jkoZ|kSS)Nascii)seenreadcloser`rrr;rrWrrrrrXNs    z RFile.__eq__N)rrrrr rXrrrrrHsrc seZdZfddZededededdgZgdZde d e dd fd e e de d d fd e e de d d fde e e d fde d e dd fgZ Z S) TestFileTypeRc sftt|dD]D}ttj|j|d}||Wdq1sL0Yq| ddS)Nr~r=readonly) r rr%r>r+r2r3r*r?rDr file_namerArrrr%\s *zTestFileTypeR.setUprrrrl)rrznon-existent-file.txtrzNrr -x foo barr bar -x foo-x - -r)rrrr%rErArrwrrJreq_stdinrrrrrrrYs rcsLeZdZfddZededddgZdgZde e d d fgZ Z S) TestFileTypeDefaultscs:tt|ttj|jdd}|d| dS)Ngoodr=) r rr%r>r+r2r3r*r?r)rrArrrr%rs zTestFileTypeDefaults.setUprWrlz no-file.txtrSr rz-c goodr)r) rrrr%rErArrwrrJrrrrrrrrps  rcseZdZfddZededdededdgZddgZde d e dd fd e e de d d fd e e de d d fde e e d fgZ Z S)TestFileTypeRBc s\tt|dD]D}ttj|j|d}||Wdq1sL0YqdS)Nr~r=) r rr%r>r+r2r3r*r?rrrrr%szTestFileTypeRB.setUprrbrrrrzNrrrrr)rrrr%rErArrwrrJr eq_bstdinrrrrrrrs rc@s"eZdZeZddZddZdS)WFilecCs ||_dSr'rrrrrr szWFile.__init__cCsL||jvr@d}d|jvr"|d}||||j||j|jkS)NzCheck that file is writable.rr)rmoder r?raddr;rrrrrXs     z WFile.__eq__N)rrrrrr rXrrrrrsrgeteuidznon-root user requiredc seZdZfddZededdededdgZgdZde d e dd fd e d e d d fd e e de d d fde e de d d fde e e d fgZ Z S) TestFileTypeWcs"t|d|ddSNrwritabler r%rDrBrrrrr%s  zTestFileTypeW.setUprr=rr)rrrrzNrrrrrrrrrr%rErArrwrrJr eq_stdoutrrrrrrr s r cspeZdZfddZededdededdgZgdZde e d e d d fd e e e d fgZ Z S) TestFileTypeXcs"t|d|ddSr rrrrrr%s  zTestFileTypeX.setUprrrr)rrrrrrzrrrrrrrrrs rc@seZdZededdededdgZddgZdede ddfd ee de d dfd ee de d dfd ee e dfgZ dS) TestFileTypeWBrrrrrrzNrrrrr) rrrrErArrwrrJr eq_bstdoutrrrrrrsrc@sXeZdZededdededdgZdeededdfd ee e dfgZ d S) TestFileTypeXBrxbrrrrzrrrN) rrrrErArrwrJrrrrrrrrs rc@seZdZddZdS)TestFileTypeOpenArgsc Cstj}|ddf|dddf|ddddf|d d d d f|dd dddfg}td8}|D]"\}}|d|jdg|Rq\Wdn1s0YdS)Nr)rNNr=r)r=rNNrr)r=rNrrrr)rrrNrl1strict)r=rrrz builtins.openrz)rArrZpatchZassert_called_with)rZFTZcasesmrSrFrrrtest_open_argss    z#TestFileTypeOpenArgs.test_open_argsN)rrrrrrrrrsrc@seZdZddZdS)!TestFileTypeMissingInitializationcCs`t}|t }|jdtjdWdn1s80Y|dtjft|jdS)Nrrz<%r is a FileType class object, instance of it must be passed) rArBr ValueErrorrurrrrErFrrrtest s .z&TestFileTypeMissingInitialization.testNrrrrrrrrrsrc@sZeZdZededededgZgdZdedddfd ed d dfd ed ddfgZ d S)TestTypeCallablez--eggsrr)rZ42jz--eggs az --eggs 2iz --eggs=42 42rgE@)eggsrz--eggs 2j -- -1.5y@z1024.675Ng3333@) rrrrEcomplexrrwrrJrrrrrr!s  r!c@sheZdZGdddeZededededgZgZdeededd fd eed ed d fgZ d S)TestTypeUserDefinedc@seZdZddZddZdS)zTestTypeUserDefined.MyTypecCs ||_dSr'valuerr'rrrr -sz#TestTypeUserDefined.MyType.__init__cCst||jft||jfkSr'rSr'rVrrrrX0sz!TestTypeUserDefined.MyType.__eq__NrrrrrMyType+sr*rrrrrrr-xf grrN) rrrrr*rErwrrJrrrrrr%(s  r%c@sfeZdZGdddZededededgZgZdeededd fd eed ed d fgZd S)TestTypeClassicClassc@seZdZddZddZdS)zTestTypeClassicClass.CcCs ||_dSr'r&r(rrrr CszTestTypeClassicClass.C.__init__cCst||jft||jfkSr'r)rVrrrrXFszTestTypeClassicClass.C.__eq__NrrrrrCAsr-rrrrrrrr+rrN) rrrr-rErwrrJrrrrrr,>s  r,c@seZdZddZdS)TestTypeRegistrationcCszdd}t}|dd||jddd|jddd||dtdd d ||d td d d dS) NcSsd|S)Nz my_type{%s}rstringrrr get_my_typeYsz.TestTypeRegistration.test..get_my_typerSZmy_typerrrr|z my_type{1}r z-x 1 42z my_type{42})rArBregisterrurrhrrJ)rr1rvrrrrWs  zTestTypeRegistration.testNr rrrrr.Tsr.c@seZdZGdddejZGdddejZeddeedded ee d d d gZ gZ d e dd dfde dddfde dddfde dddfgZ dS)TestActionUserDefinedc@seZdZdddZdS)z$TestActionUserDefined.OptionalActionNc Cs|z:tdd}|dvrd|_n|dvr,d|_n td|Wn0tyj}ztd|WYd}~n d}~00t|d |dS) N?r)?rr!)@r value: %szopt_action failed: %sr)rJrAssertionErrorrYrdrrv namespacer' option_stringrrlrrr__call__ps  "z-TestActionUserDefined.OptionalAction.__call__)Nrrrr<rrrrOptionalActionnsr>c@seZdZdddZdS)z&TestActionUserDefined.PositionalActionNc CszJtdd}|dvrd|_n,|dvr,d|_n|dvrr@rErr#rwrrJrrrrrr3ksr3c@s&eZdZGdddejZddZdS)TestActionRegistrationc@seZdZdddZdS)zTestActionRegistration.MyActionNcCst||jd|dS)Nzfoo[%s])rdr)rrvr:valuesr;rrrr<sz(TestActionRegistration.MyAction.__call__)Nr=rrrrMyActionsrDcCs^t}|dd|j|jddd||dgtdd||dgtd ddS) NrZ my_actionrrr|zfoo[1]r?rzfoo[42])rArBr2rDrurrhrJrrvrrrrs zTestActionRegistration.testN)rrrrArArDrrrrrrBsrBc@s6eZdZedddedgZdZdegddfgZd S) TestActionExtendrextendr))rrrSrz--foo f1 --foo f2 f3 f4)f1f2Zf3Zf4rN) rrrrErrwrrJrrrrrrFs rFcseZdZddZd9ddZfddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8ZZS):TestAddSubparserscOs|jtg|Ri|dSr'rrYrHrrrassertArgumentParserErrorsz+TestAddSubparsers.assertArgumentParserErrorFNc Cs|r0tdd|d}|j|dddddd ntddd }|jd ddd |jd td dddi}|rzd|d<d|d<nd|d<|jfi|}||jtdd}|rd|d<|rddg|d<|jd7i|}|jdtdd|jd d!d"d#td$d} |r d%| d<|jd8i| } | jd'd(d)d#| jd*td+d,d-td.d} |rVd/| d<|jd9i| } | jd1td2d| jd3d4d5d6|S):NPROGmain description)prog descriptionrrr!rzrfoo helprhelprOrPrrbar helprSrSr5FZCOMMANDmetavarcommandstitle command helprSz 1 descriptionrPz1 helpZ1alias1Z1alias2aliasesr|rzw helprr+x helpr-rSz 2 descriptionz2 helprrZ123y helprr%zz help)rSrrSz 3 descriptionz3 helprgtzt helpurzu helprrS)r|)r)rg) rnruradd_subparsersrLdict add_parserr#r$) rsubparser_helprr\rvZsubparsers_kwargs subparsersZparser1_kwargsparser1Zparser2_kwargsparser2Zparser3_kwargsZparser3rrrrsX      zTestAddSubparsers._get_parsercs&t||_|jdd|_dS)NT)rf)r r%rrvcommand_help_parserrrrrr%s  zTestAddSubparsers.setUpcCs&dD]}|}||jj|qdS)N)rrza az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)rrLrvrh)rrrFrrrtest_parse_args_failures sz*TestAddSubparsers.test_parse_args_failuresc Cs||jdtddddd||jdtdd d d d gd ||jdtddddd||jdtdddgdddS)N 0.5 1 b -w 7Frrrzrr=rz0.25 --foo 2 -y 2 3j -- -1jTr4ry@y)rzrrrz--foo 0.125 1 cr5rz-1.5 3 11 -- a --foo 7 -- br# )rrrb--r)rzrr`ra)rrvrhrrJrrrrtest_parse_argss z!TestAddSubparsers.test_parse_argsc Cs||jdtdddddgf||jdtddddddgf||jd tddddddgf||jd tdddddd d gf||jd tdddddgdfdS)NrlFrrmrrnz0.5 -p 1 b -w 7z-pz0.5 1 b -w 7 -pz0.5 1 b -q -rs -w 7z-qz-rsz0.5 -W 1 b -X Y -w 7 Z)z-Wz-Xrr)rrvparse_known_argsrrJrrrrtest_parse_known_args's(z'TestAddSubparsers.test_parse_known_argscCsXt}|jddd|jdd}|d}|d|tddd d |d dS) Nrrrrrr|rFrrr{)rnrurcrerrJrhr)rrvrgrhrrr test_dest=s    zTestAddSubparsers.test_destcCs,|dg}||jd||jddS)Nrunr)rhrcommandrL)rrvretrrr_test_required_subparsersFs z+TestAddSubparsers._test_required_subparserscCs0t}|jdd}d|_|d||dS)NrvrTru)rnrcr5rerxrrvrgrrr&test_required_subparsers_via_attributeNs   z8TestAddSubparsers.test_required_subparsers_via_attributecCs,t}|jddd}|d||dS)NrvTrr5ru)rnrcrerxryrrr"test_required_subparsers_via_kwargUs z4TestAddSubparsers.test_required_subparsers_via_kwargcCs6t}|jdd}|d|d}||jdS)Nrvrrurrnrcrerh assertIsNonervrrvrgrwrrr test_required_subparsers_default[s    z2TestAddSubparsers.test_required_subparsers_defaultcCsnt}|jdd}|d|d|t}|dWdn1sP0Y||jjddS)NTr5rzrrz8error: the following arguments are required: {foo,bar} $ rnrcrerrYrh assertRegexrEr]rrvrgexcinforrr-test_required_subparsers_no_destination_errorcs    (z?TestAddSubparsers.test_required_subparsers_no_destination_errorcCsnt}|jdd}|d|d|t}|dWdn1sP0Y||jjddS)NTrrzrrOzPerror: argument {foo,bar}: invalid choice: 'baz' \(choose from 'foo', 'bar'\)\n$rrrrr3test_wrong_argument_subparsers_no_destination_erroros    (zETestAddSubparsers.test_wrong_argument_subparsers_no_destination_errorcCs8t}|jddd}|d|d}||jdS)NrvFr{rurr}rrrrtest_optional_subparsers{s   z*TestAddSubparsers.test_optional_subparserscCs.||jd||jtddS)N)usage: PROG [-h] [--foo] bar {1,2,3} ... aJ usage: PROG [-h] [--foo] bar {1,2,3} ... main description positional arguments: bar bar help {1,2,3} command help optional arguments: -h, --help show this help message and exit --foo foo help )rrv format_usage format_helptextwrapdedentrrrr test_helps zTestAddSubparsers.test_helpcCs6|jdd}||d||tddS)Nz+:-rz)usage: PROG [-h] [++foo] bar {1,2,3} ... aJ usage: PROG [-h] [++foo] bar {1,2,3} ... main description positional arguments: bar bar help {1,2,3} command help optional arguments: -h, --help show this help message and exit ++foo foo help rrrrrrrErrrtest_help_extra_prefix_charss   z.TestAddSubparsers.test_help_extra_prefix_charscCs6tddd}|jdddd||tddS) NrMrNrTz--non-breakingr<uRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesrRuB usage: PROG [-h] [--non-breaking] main description optional arguments: -h, --help show this help message and exit --non-breaking help message containing non-breaking spaces shall not wrap at non-breaking spaces rnrurrrrrErrrtest_help_non_breaking_spacessz/TestAddSubparsers.test_help_non_breaking_spacescCsftddd}|jddd||tdtddd}|jdgdd ||td dS) NrMrNrTrzz rSz usage: PROG [-h] foo main description positional arguments: foo optional arguments: -h, --help show this help message and exit z %(choices)sr^z usage: PROG [-h] {} main description positional arguments: {} optional arguments: -h, --help show this help message and exit rrErrrtest_help_blanks  z!TestAddSubparsers.test_help_blankcCs6|jdd}||d||tddS)Nrrz)usage: PROG [+h] [++foo] bar {1,2,3} ... aJ usage: PROG [+h] [++foo] bar {1,2,3} ... main description positional arguments: bar bar help {1,2,3} command help optional arguments: +h, ++help show this help message and exit ++foo foo help rrErrr test_help_alternate_prefix_charss   z2TestAddSubparsers.test_help_alternate_prefix_charscCs.||jd||jtddS)Nra usage: PROG [-h] [--foo] bar {1,2,3} ... main description positional arguments: bar bar help {1,2,3} command help 1 1 help 2 2 help 3 3 help optional arguments: -h, --help show this help message and exit --foo foo help )rrjrrrrrrrrtest_parser_command_helps   z*TestAddSubparsers.test_parser_command_helpcCsxtddd}|jdddd|jdd d |jd d d d}|d}|d}||d||tddS)NrMrNrTrrrQrRrrUr subcommandsrZzadditional text)rYrPrSr|rz'usage: PROG [-h] [--foo] bar {1,2} ... a usage: PROG [-h] [--foo] bar {1,2} ... main description positional arguments: bar bar help optional arguments: -h, --help show this help message and exit --foo foo help subcommands: command help {1,2} additional text ) rnrurcrerrrrr)rrvrgrhrirrrtest_subparser_title_help s   z+TestAddSubparsers.test_subparser_title_helpcCsN|t }|j|Wdn1s00Y|||jjdSr')rrYrvrhrrrEr\)rrZ expected_helprGrrr_test_subparser_help$ s .z&TestAddSubparsers._test_subparser_helpcCs|dtddS)Nz5.0 1 -ha usage: PROG bar 1 [-h] [-w W] {a,b,c} 1 description positional arguments: {a,b,c} x help optional arguments: -h, --help show this help message and exit -w W w help rrrrrrrtest_subparser1_help) sz&TestAddSubparsers.test_subparser1_helpcCs|dtddS)Nz5.0 2 -ha usage: PROG bar 2 [-h] [-y {1,2,3}] [z ...] 2 description positional arguments: z z help optional arguments: -h, --help show this help message and exit -y {1,2,3} y help rrrrrtest_subparser2_help7 sz&TestAddSubparsers.test_subparser2_helpc Cs\|jdd}||dtdddddgf||dtdddddgfdS) NTr\z 0.5 1alias1 bFrrrnz 0.5 1alias2 b)rrrrrrJrErrrtest_alias_invocationE s   z'TestAddSubparsers.test_alias_invocationcCs"|jdd}||jddS)NTrz 0.5 1alias3 b)rrLrhrrErrrtest_error_alias_invocationP s z-TestAddSubparsers.test_error_alias_invocationcCs.|jddd}d|_||tddS)NT)r\rfa usage: PROG [-h] [--foo] bar COMMAND ... main description positional arguments: bar bar help optional arguments: -h, --help show this help message and exit --foo foo help commands: COMMAND 1 (1alias1, 1alias2) 1 help 2 2 help 3 3 help )rZmaxDiffrrrrrErrrtest_alias_helpU sz!TestAddSubparsers.test_alias_help)FNF)rrrrLrr%rkrqrsrtrxrzr|rrrrrrrrrrrrrrrrrrrrrrrJs: 7    & rJc@s$eZdZddZddZddZdS)TestPositionalsGroupscCsZt}|d|d}|d|dtdddd}|d }|||dS) Nrzrrrr|rrgr1 2 3)rnrur{rJrhrrrrvr|expectedrirrrtest_nongroup_firsts s    z)TestPositionalsGroups.test_nongroup_firstcCsZt}|d}|d|d|dtdddd}|d }|||dS) Nxxxrzrrr|rrgrrrnr{rurJrhrrrrrrtest_group_first} s    z&TestPositionalsGroups.test_group_firstcCspt}|d}|d|d|d|d}|dtddd d d }|d }|||dS) Nrrzrrrfrellr|rrgr)rzrrrz1 2 3 4rrrrrtest_interleaved_groups s      z-TestPositionalsGroups.test_interleaved_groupsN)rrrrrrrrrrrp s  rcseZdZddZfddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZZS)TestParentParserscOs|jtg|Ri|dSr'rKrHrrrrL sz+TestParentParsers.assertArgumentParserErrorcsttdd|_|jd|jd}|d|jdtdd|_|jd|jd|jd }|d tdd|_|jdtdd|_|jdtdd|_ |j }|jd d d |jdd d t j tjd|_dS)NFrz--wrrrrrUrz--drrrr)r r%rn wxyz_parentrur{ abcd_parentw_parentz_parentab_mutex_parentadd_mutually_exclusive_groupr+r2basenamerar main_program)rZx_groupc_groupr|rrrr% s(                 zTestParentParsers.setUpcCs2t|jgd}||dtdddddS)Nparentsz -y 1 2 --w 3rgr|rr=rr)rnrrrhrrJrErrrtest_single_parent s z$TestParentParsers.test_single_parentcCs,||jjt|jgd}||jdSNr)_test_mutex_abrrhrnrErrrtest_single_parent_mutex sz*TestParentParsers.test_single_parent_mutexcCs0|jg}td|d}t|gd}||jdS)NF)rrr)rrnrrhrrrvrrrtest_single_granparent_mutex s  z.TestParentParsers.test_single_granparent_mutexcCs||gtddd||dgtddd||dgtddd||ddg||ddg||dg||ddg||ddgdS)NFrrrTrUrW)rrJrL)rrhrrrr sz TestParentParsers._test_mutex_abc Cs@|j|jg}t|d}||dtddddddddS)Nrz--d 1 --w 2 3 4rgr|rr)rrrr=rr)rrrnrrhrrJrrrrtest_multiple_parents s   z'TestParentParsers.test_multiple_parentsc Csb|j|jg}t|d}||dtdddddd||jd||jd dS) Nrz -a --w 2 3TFrrg)rrr=rrz -a --w 2 3 -bz -a -b --w 2 3)rrrnrrhrrJrLrrrrtest_multiple_parents_mutex s    z-TestParentParsers.test_multiple_parents_mutexcCs |jtjtj|j|jgddSr)rrA ArgumentErrorrBrrrrrrtest_conflicting_parents s  z*TestParentParsers.test_conflicting_parentscCs |jtjtj|j|jgddSr)rrArrBrrrrrrtest_conflicting_parents_mutex s  z0TestParentParsers.test_conflicting_parents_mutexcCs:|j|jg}t|d}||dtdddddS)Nrr{rr)rrrnrrhrrJrrrrtest_same_argument_name_parents s    z1TestParentParsers.test_same_argument_name_parentsc CsPt}|}|jd|jgd}|d||dtddddd dS) Nrrrlzbar -b 1 --d 2 3 4rgr|rr)rrrrl) rnrcrerrurrhrrJ)rrvrgZ abcde_parserrrrtest_subparser_parents s z(TestParentParsers.test_subparser_parentsc Cst}|}|jg}|jd|d}|d}|d|j|jg}|jd|d}|d||d t dd d d ||d t d dd ddd d| |jd | |jd dS)Nrzrrrrrlzfoo -a 4TFrrzbar -b --w 2 3 4rrg)rrr=rrrlz foo -a -b 4z bar -b -a 4) rnrcrrer{rurrrhrrJrL)rrvrgrZ abc_parserrZwxyzabe_parserrrrtest_subparser_parents_mutex s*       z.TestParentParsers.test_subparser_parents_mutexc CsJ|j|jg}t|d}|}|j}||td||rtdd}|jddt|gd}|tdd|gdS)NFrrzrrr)rrrvrrrtest_set_defaults_parentsk s   z)TestSetDefaults.test_set_defaults_parentscCsLt}|d}|jdd|jdd|tdd|dgdS)Nrrrr!)rArBrcrerrrJrh)rrvZxparserrrr)test_set_defaults_on_parent_and_subparserq s   z9TestSetDefaults.test_set_defaults_on_parent_and_subparsercCst}|jddddd|d|jddd |jd d d |jd d dd|tddddd|g|jddddd|tddddd|gdS)NWrrrr rrXXr rrrrZZrWWYY)rnrrurrJrhrErrr&test_set_defaults_same_as_add_argumentx s z6TestSetDefaults.test_set_defaults_same_as_add_argumentcCst}|jddddd|d}|d|jdd d |jd d d |jdd dd|tdd ddd|g|jddddd|tddddd|gdS)Nr"rrrr rzrrr#r rrrrr$rr%r&)rnrr{rurrJrhrrrr,test_set_defaults_same_as_add_argument_group s  z.AddTestsc Ssj||_||_|j|j|jfD]H}d|j|f}|fdd}z ||_WntyVYn0t|||qdS)Nz%s_%scSs ||dSr'rrrrr test_wrapper szUTestHelpFormattingMetaclass.__init__..AddTests.__init__..test_wrapper) func_suffixstd_name test_format test_printtest_print_filerrrd)rZ test_classr7r8rrr6rrrr s   z?TestHelpFormattingMetaclass.__init__..AddTests.__init__c Sstj|jji|jj}t|dgD]}|j|ji|jq$t|dg}|D]:\}}|j|ji|j}|D]}|j|ji|jqnqNt|dg}|r|} |D]} | j | ji| jq|S)Nrwargument_group_signaturessubparsers_signatures) rArBrsrFrGrcrur{rcre) rrrvZ argument_sigZ group_sigsZ group_sigZ argument_sigsr|Zsubparsers_sigsrgZ subparser_sigrrrr s4        zBTestHelpFormattingMetaclass.__init__..AddTests._get_parsercSs&t||j}t|}|||dSr')rcr7rrr)rr parser_textZ expected_textrrr_test s  z.AddTests._testcSs,||}t|d|j}|||dS)Nz format_%s)rrcr7r?)rrrvrrrrr9 s zBTestHelpFormattingMetaclass.__init__..AddTests.test_formatc Ss||}t|d|j}tt|j}tt|jtz(|tt|j}Wtt|j|ntt|j|0|||dSNzprint_%s) rrcr7rar8rdrrr?)rrrvprint_Z old_streamr>rrrr: s   zATestHelpFormattingMetaclass.__init__..AddTests.test_printcSs@||}t|d|j}t}|||}|||dSr@)rrcr7rrr?)rrrvrAZsfiler>rrrr; s  zFTestHelpFormattingMetaclass.__init__..AddTests.test_print_fileN) rrrr rr?r9r:r;rrrrr s  r))usager\)rSr\)r)rr;rrrr7r8rrrr s H z$TestHelpFormattingMetaclass.__init__NrIrrrrr4 sr4r5c@sjeZdZeddddZeddddd ed d d d edddedddedddgZgZdZedZdZ dS)TestHelpBiggerOptionalsrM DESCRIPTIONEPILOGrOrPepilogrrr0.1rrrX HELPrR--yY HELPrrzFOO HELPrBAR HELPz; usage: PROG [-h] [-v] [-x] [--y Y] foo bar ab DESCRIPTION positional arguments: foo FOO HELP bar BAR HELP optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -x X HELP --y Y Y HELP EPILOG  0.1 N rrrrErsrwr<rBrSrrrrrrC s    rCc@s8eZdZddZejZejZejZdZedZ ej Z dS)TestShortColumnscCs$t}|dd||jdS)Nrr)rr rr!r"r#rrrr%J s zTestShortColumns.setUpz usage: PROG [-h] [-v] [-x] [--y Y] foo bar a DESCRIPTION positional arguments: foo FOO HELP bar BAR HELP optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -x X HELP --y Y Y HELP EPILOG N) rrrr%rCrsrwr<rBrSrrrrrrPD s rPc@seZdZeddddZeddddd ed d d d edddedddedddgZedddedddeddddgfgZdZedZd Z d!S)"TestHelpBiggerOptionalGroupsrMrDrErFrrrrHrrrrIrRrJrKrrzrLrrMz GROUP TITLEzGROUP DESCRIPTIONr[rzBAZ HELPrr)zZ HELPrbzN usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz a DESCRIPTION positional arguments: foo FOO HELP bar BAR HELP optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -x X HELP --y Y Y HELP GROUP TITLE: GROUP DESCRIPTION baz BAZ HELP -z Z [Z ...] Z HELP EPILOG rNNrOrrrrrQ{ s"       rQc@sZeZdZedddZeddddedd d ed d d ed dd gZgZdZedZdZ dS)TestHelpBiggerPositionalsUSAGErDrBrPrrrIrRrJrKrZekiekiekifekangzEKI HELPrrM usage: USAGE a  DESCRIPTION positional arguments: ekiekiekifekang EKI HELP bar BAR HELP optional arguments: -h, --help show this help message and exit -x X HELP --y Y Y HELP rNrOrrrrrR s     rRc@sbeZdZedddZeddddedd d dgZed d d eddddgfgZdZedZdZ dS)TestHelpReformattingrMze oddly formatted description that is so long that it should go onto multiple lines when wrappedrTrr#zoddly formatted -x helprWrSrrz normal y helprYz' oddly formatted group descriptionr[rrz` oddly formatted -a help again, so long that it should be wrapped over multiple linesrR2 usage: PROG [-h] [-x XX] [-a] yyy a oddly formatted description that is so long that it should go onto multiple lines when wrapped positional arguments: yyy normal y help optional arguments: -h, --help show this help message and exit -x XX oddly formatted -x help title: oddly formatted group description -a oddly formatted -a help again, so long that it should be wrapped over multiple lines rNrOrrrrrV s     rVc@s^eZdZedddZeddddedd d dgZed ed d ddgfgZdZedZdZ dS)TestHelpWrappingShortNamesrMzZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DrTrr#zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXrWrrdYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHALPHASrrzPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHArRrXa D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD D positional arguments: yyy YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH optional arguments: -h, --help show this help message and exit -x XX XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX ALPHAS: -a AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHA rNrOrrrrrY s    rYc@sxeZdZedddZeddddded d d d ed ddd gZededddd edddd gfgZdZedZdZ dS)TestHelpWrappingLongNamesrSzZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DrTrrrzZV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VrrXXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHrWrZyyyyyyyyyyyyyyyyyyyyyyyyyrZr[rZAAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHrZzzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHrUar D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD D positional arguments: yyyyyyyyyyyyyyyyyyyyyyyyy YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -x XXXXXXXXXXXXXXXXXXXXXXXXX XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH ALPHAS: -a AAAAAAAAAAAAAAAAAAAAAAAAA AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH zzzzzzzzzzzzzzzzzzzzzzzzz ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH zs V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV V NrOrrrrr\%s     r\c@seZdZeddZeddddeddd ded d d ed d d deddddeddejdedddejdedddejdedejejddg Zeded dd!ded"d#d$ded%d%dded&d&ddgfgZ d'Z e d(Z d)Z d*S)+ TestHelpUsagerMrrr)r=rbrr%rrrrr!)rSrrrrzWhether to foo)rSrrzWhether to barT)rSr rrz--foobarz--barfoorz--bazzzBazz!)rr rSr|rrrrrrrla/ usage: PROG [-h] [-w W [W ...]] [-x [X ...]] [--foo | --no-foo] [--bar | --no-bar] [-f | --foobar | --no-foobar | --barfoo | --no-barfoo] [--bazz | --no-bazz] [-y [Y]] [-z Z Z Z] a b b [c] [d ...] e [e ...] a positional arguments: a a b b c c optional arguments: -h, --help show this help message and exit -w W [W ...] w -x [X ...] x --foo, --no-foo Whether to foo --bar, --no-bar Whether to bar (default: True) -f, --foobar, --no-foobar, --barfoo, --no-barfoo --bazz, --no-bazz Bazz! group: -y [Y] y -z Z Z Z z d d e e rN) rrrrErsrArCrrwr<rBrSrrrrrr^[s2          r^c@sleZdZedddZgZededddedddgfed ed d ded d dgfgZd ZedZdZ dS)TestHelpOnlyUserGroupsrMFrOrZxxxxrrrrZyyyyrrrz. usage: PROG [-x X] [-y Y] a b zn xxxx: -x X x a a yyyy: b b -y Y y rNrOrrrrr_s       r_c@sNeZdZeddZedddedddeded gZgZd Zed Zd Z d S)TestHelpUsageLongProg usage: PROG [-h] [--foo FOO] [--bar BAR] spam a Keep the formatting exactly as it is written here positional arguments: spam spam help optional arguments: -h, --help show this help message and exit --foo FOO foo help should also appear as given here title: This text should be indented exactly like it is here --bar BAR bar help rN) rrrrErARawTextHelpFormatterrsrwr<rBrSrrrrrrs    rc@s`eZdZedejddZedddedddgZed d d ed d dgfgZdZ e dZ dZ dS)TestHelpRawDescriptionrMrrrz4 foo help should not retain this odd formattingrrrxrYrr[rrUra Keep the formatting exactly as it is written here positional arguments: spam spam help optional arguments: -h, --help show this help message and exit --foo FOO foo help should not retain this odd formatting title: This text should be indented exactly like it is here --bar BAR bar help rN) rrrrErARawDescriptionHelpFormatterrsrwr<rBrSrrrrrrs    rc @seZdZedejddZedddeddd d ed ejd d deddddedddedddddgZedddede dddgfgZ dZ e d Z d!Z d"S)#TestHelpArgumentDefaultsrMrPrrz)foo help - oh and by the way, %(default)srrrrUrRz--tazzWhether to taz itT)rrSr z--quuxz Set the quuxr)rSr rrxrrZwoodenz badger helprrYr[rr)rSr rSz usage: PROG [-h] [--foo FOO] [--bar] [--taz | --no-taz] [--quux QUUX] [--baz BAZ] spam [badger] a1 description positional arguments: spam spam help badger badger help (default: wooden) optional arguments: -h, --help show this help message and exit --foo FOO foo help - oh and by the way, None --bar bar help (default: False) --taz, --no-taz Whether to taz it (default: True) --quux QUUX Set the quux (default: 42) title: description --baz BAZ baz help (default: 42) rN)rrrrErAArgumentDefaultsHelpFormatterrsrCrwr#r<rBrSrrrrrr#s(     rc@s>eZdZedddZedddddgZgZd Zed Zd Z d S) TestHelpVersionActionrMrPrT-Vrrz3.6rz& usage: PROG [-h] [-V] z description optional arguments: -h, --help show this help message and exit -V, --version show program's version number and exit rNrOrrrrrRs  rc@sPeZdZeddZeddddejdedd d ed d d gZgZd Z e dZ dS)TestHelpVersionActionSuppressrMrrrrr)rrrSrrQrrrxr|r}N) rrrrErsrArrwr<rBrSrrrrrfs    rc@sHeZdZedddZedddddgZd d d DZd Zed ZdZ dS)TestHelpSubparsersOrderingrMdisplay some subcommandsrTrrrrHrcCsg|]}t|dqS)rrE)rMr;rrrrOsz%TestHelpSubparsersOrdering.)rrrrrl6 usage: PROG [-h] [-v] {a,b,c,d,e} ... z display some subcommands positional arguments: {a,b,c,d,e} optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit rNN) rrrrErsrwr=rBrSrrrrrrs rc@sLeZdZedddZedddddgZd Zd d eDZd Zed Z dZ dS)"TestHelpSubparsersWithHelpOrderingrMrrTrrrrHr))rza subcommand help)rzb subcommand help)rzc subcommand help)rzd subcommand help)rlze subcommand helpcCsg|]\}}t||dqS))r;rSr)rMr;rSrrrrOsz-TestHelpSubparsersWithHelpOrdering.ra display some subcommands positional arguments: {a,b,c,d,e} a a subcommand help b b subcommand help c c subcommand help d d subcommand help e e subcommand help optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit rNN) rrrrErsrwZsubcommand_datar=rBrSrrrrrrsrc@s\eZdZddZeddejdZededededed e d d gZ gZ d Z e d Z dZdS)TestHelpMetavarTypeFormattercCs|Sr'rr/rrr custom_typesz(TestHelpMetavarTypeFormatter.custom_typerMrP)rOrPrrrrUrWz SOME FLOAT)rSrWzF usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int z description positional arguments: int optional arguments: -h, --help show this help message and exit -b custom_type -c SOME FLOAT rN)rrrrrErAMetavarTypeHelpFormatterrsr#rrwr<rBrSrrrrrrs    rc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdS) TestInvalidArgumentConstructorscOs(t}|jt|jg|Ri|dSr')rArBrrrurrFrGrvrrrassertTypeErrors  z/TestInvalidArgumentConstructors.assertTypeErrorcOs(t}|jt|jg|Ri|dSr')rArBrrrurrrrassertValueErrors  z0TestInvalidArgumentConstructors.assertValueErrorcCs<|jddd|jddd|jddd|jdiddS) Nr)rrrz)callbackr)Z callback_args)Zcallback_kwargsrrrrrtest_invalid_keyword_argumentssz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentscCs"|dD]}|j|dq dS)N)rKr8rrrrrrrtest_missing_destinationsz8TestInvalidArgumentConstructors.test_missing_destinationcCs|d|ddS)Nrpz---rrrrrtest_invalid_option_stringss z;TestInvalidArgumentConstructors.test_invalid_option_stringscCs$|jddd|jdttfddS)Nrr#r)rr#rrrrrtest_invalid_typesz1TestInvalidArgumentConstructors.test_invalid_typecCs|jddd|jddd|jdddt}|t}|jdddWdn1s`0Y|dt|jdS) Nrrzrrrr8rKz store-truezunknown action) rrArBrrrurDrrErFrrrtest_invalid_actions ,z3TestInvalidArgumentConstructors.test_invalid_actioncCsbt}|jdd|t}|jdddWdn1sB0Y|dt|jdS)Nrzrrrz+dest supplied twice for positional argument)rArBrurrrDrrErFrrrtest_multiple_dests  ,z2TestInvalidArgumentConstructors.test_multiple_destcCsDdD]:}ttdtddtddfD]}|jd d|i|q$qdS) N)rrr<rVr`rr)rabr,rr)r)rdr#r)rrattrsrrrtest_no_argument_actionss z8TestInvalidArgumentConstructors.test_no_argument_actionscCs.dD]$}|jdd|d|jdd|dqdS)N)rr<r`rrzr@r%rrrrrrr!test_no_argument_no_const_actions szATestInvalidArgumentConstructors.test_no_argument_no_const_actionscCs\dD]R}|jdd|d|jdd|ddD](}|jdd||d|jdd||dq,qdS) Nrrrrr)rr%r)rz)rrrr)rrrrrr#test_more_than_one_argument_actions*szCTestInvalidArgumentConstructors.test_more_than_one_argument_actionscCsdD]}|jdd|dqdS)N)rrVrr)rrrrrrtest_required_const_actions8sz;TestInvalidArgumentConstructors.test_required_const_actionscCs4|jddd|jdddd|jddtjddS)NrvparsersrrM)rrO)rrt)rrArBrrrr"test_parsers_action_missing_params>s zBTestInvalidArgumentConstructors.test_parsers_action_missing_paramscCs|jddddS)NrzTrrrrrrtest_required_positionalDsz8TestInvalidArgumentConstructors.test_required_positionalcs`GdddtGfdddt}t}|j|jd|d|j|jd|ddS)Nc@s eZdZdS)zITestInvalidArgumentConstructors.test_user_defined_action..SuccessNrrrrrSuccessIsrcs"eZdZdfdd ZddZdS)zHTestInvalidArgumentConstructors.test_user_defined_action..ActionFcs"|dkr|ur|urdS)Nrr)roption_stringsrrr r5rrrr NszQTestInvalidArgumentConstructors.test_user_defined_action..Action.__init__c_sdSr'rrHrrrr<YszQTestInvalidArgumentConstructors.test_user_defined_action..Action.__call__N)F)rrrr r<rrrrrALs rAr)rr rr)rZrrArBrru)rrArvrrrtest_user_defined_actionGs  z8TestInvalidArgumentConstructors.test_user_defined_actionN)rrrrrrrrrrrrrrrrrrrrrrrs  rc@seZdZddZddZdS)TestActionsReturnedcCsXt}|d}||jd|dd}||jd|dd}||jddS) NrrzrUrrrrr)rArBrurrrrvrrrrrths   zTestActionsReturned.test_destc Cst}|jddddtddgddd d }||jd||jd||jd||jt||j ddg||j d||j d||j d dS) Nrrrrrr!rZBARr)rrr rSr-rSrWr) rArBrur#rrrr rSr-rSrWrrrrr test_miscqs  zTestActionsReturned.test_miscN)rrrrtrrrrrrfs rc@s$eZdZddZddZddZdS)TestConflictHandlingcCs|jttjdddS)Nrz)conflict_handler)rrrArBrrrr test_bad_types z"TestConflictHandling.test_bad_typecCsDt}|d|tj|jd|d|tj|jddS)Nrr)rArBrurrrErrrtest_conflict_errors  z(TestConflictHandling.test_conflict_errorcCsztj}|ddd}|jddd|jddd||td|jd d d |jd d d ||td dS)NrMresolve)rOrrzOLD XrzNEW Xz usage: PROG [-h] [-x X] optional arguments: -h, --help show this help message and exit -x X NEW X rZOLD_SPAMrcZNEW_SPAMz usage: PROG [-h] [-x X] [--spam NEW_SPAM] optional arguments: -h, --help show this help message and exit -x X NEW X --spam NEW_SPAM )rArBrurrrr)rrrvrrrtest_resolve_errors z'TestConflictHandling.test_resolve_errorN)rrrrrrrrrrrs rc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)TestOptionalsHelpVersionActionscCsP|t}||Wdn1s.0Y|||jjdSr')rrYrhrrrrEr\)rrvrrGrrrassertPrintHelpExits ,z3TestOptionalsHelpVersionActions.assertPrintHelpExitcGs|t|j|dSr')rrYrhrrvrFrrrrLsz9TestOptionalsHelpVersionActions.assertArgumentParserErrorcCsDt}|jddddd||d||d|tt|ddS) Nrrrrrrrformat_versionrnrurrrrcrErrr test_versions   z,TestOptionalsHelpVersionActions.test_versioncCsftdd}|jddddd|t}|dgWdn1sH0Y|d|jjdS) NZPPPrrrrz %(prog)s 3.5rzPPP 3.5 rnrurrYrhrrEr\rFrrrtest_version_formats   *z3TestOptionalsHelpVersionActions.test_version_formatcCsHtdd}|jddddd||d||d |tt|d dS) NFrrrrrrrrr)rnrurLrrrcrErrrtest_version_no_helps    z4TestOptionalsHelpVersionActions.test_version_no_helpcCsdtdd}|jdddd|t}|dgWdn1sF0Y|d|jjdS)Nrsrrrz %(prog)s 3.7rzXXX 3.7 rrFrrrtest_version_actions   *z3TestOptionalsHelpVersionActions.test_version_actioncCs>tdd}||d||d||d||ddS)NFrrrrr)rnrLrErrr test_no_helps     z,TestOptionalsHelpVersionActions.test_no_helpcCsZt}|jddd|jddd||d||d||d|tt|ddS) NrrSrrrrrr)rnrurrLrrrcrErrrtest_alternate_help_versions   z;TestOptionalsHelpVersionActions.test_alternate_help_versioncCst}|jdddd|jddd|dgd }|d d g}|D]J}|D]}d ||f}qN|||d |||d|tt|dqFdS)Nrrrrrrrr)rrrzz-x barzbaz -xz --bad-optionz foo bar bazz %s %%s %srrrr)rrvZvalid_prefixesZvalid_suffixesprefixsuffixrrrr!test_help_version_extra_argumentss  zATestOptionalsHelpVersionActions.test_help_version_extra_argumentsN) rrrrrLrrrrrrrrrrrrs rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) TestStringscCs"ttfD]}||||qdSr')rrr)robjZ result_stringfuncrrrassertStringEquals zTestStrings.assertStringEqualc Cs8tjgdddddgdddd d }d }|||dS) N)rrrUrr#r)rrr!rFZHELPZMETAVAR rrrSrr r-r5rSrWzAction(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], required=False, help='HELP', metavar='METAVAR'))rArAr)roptionr0rrr test_optionals zTestStrings.test_optionalc Cs8tjgdtddgddddd }d t}|||dS) Nrrr)rg?rTzH HH HzMV MV MVrzAction(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], required=True, help='H HH H', metavar='MV MV MV'))rArArr)rargumentr0rrr test_arguments  zTestStrings.test_argumentcCs"tjddd}d}|||dS)Nrrr~zNamespace(foo=42, bar='spam')rAr-rrr0r0rrrtest_namespace&szTestStrings.test_namespacecCs(tjfiddi}d}|||dS)N"quotezNamespace(**{'"': 'quote'})rrrrr'test_namespace_starkwargs_notidentifier+sz3TestStrings.test_namespace_starkwargs_notidentifiercCs,tjfddiddi}d}|||dS)Nrrrrz Namespace(a=1, **{'"': 'quote'})rrrrr2test_namespace_kwargs_and_starkwargs_notidentifier0sz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifiercCs(tjfiddi}d}|||dS)NZvalidTzNamespace(valid=True)rrrrr$test_namespace_starkwargs_identifier5sz0TestStrings.test_namespace_starkwargs_identifiercCs&tjdd}dtj}|||dS)NrMrzvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))rArB HelpFormatterr)rrvr0rrr test_parser:s  zTestStrings.test_parserN) rrrrrrrrrrrrrrrrsrc@s$eZdZddZddZddZdS) TestNamespacecCsFt}|tt|dtjddd}||jd||jddS)Nrrrr)rAr-rrrcrrrr/rrrtest_constructorHs zTestNamespace.test_constructorcCstjddd}tjddd}tjdd}tjdd}||||||||||||||||||k|||k|||k|||kdS)Nrr!r)rr)rrZ)rAr-rZassertNotEqual assertTrue)rZns1Zns2Zns3Zns4rrr test_equalityPs       zTestNamespace.test_equalitycCs6tjddd}||dt||dtdS)Nrr!r)rAr-ZassertIsrXNotImplemented__ne__r/rrr$test_equality_returns_notimplemented`sz2TestNamespace.test_equality_returns_notimplementedN)rrrrrrrrrrrFsrc@s$eZdZddZddZddZdS) TestEncodingcCsRtj|\}}|d7}t|ddd}|Wdn1sD0YdS)Nz.pyrlrr)r+r2splitextr>r)rr2rrrrr_test_module_encodingmsz"TestEncoding._test_module_encodingcCs|tjdSr')rrA__file__rrrrtest_argparse_module_encodingssz*TestEncoding.test_argparse_module_encodingcCs|tdSr')rrrrrr"test_test_argparse_module_encodingvsz/TestEncoding.test_test_argparse_module_encodingN)rrrrrrrrrrrksrc@seZdZddZdS)TestArgumentErrorcCs$d}td|}|t||dS)Nz my error here)rArrr)rrrprrrtest_argument_errors z%TestArgumentError.test_argument_errorN)rrrrrrrrr}src@seZdZddZdS)TestArgumentTypeErrorcCsldd}tddd}|jd|d|t}|dgWdn1sN0Y|d |jjdS) NcSstddS)Nspam!)rAArgumentTypeErrorr/rrrrsz.spamrMFr`rrrsz-usage: PROG x PROG: error: argument x: spam! )rnrurrYrhrrEr])rrrvrGrrrtest_argument_type_errors  *z.TestArgumentTypeError.test_argument_type_errorN)rrrrrrrrrsrc@s$eZdZddZddZddZdS)TestMessageContentErrorcCsltddd}|jdtd|jdtdd|jd td d |t}|gWdn1sd0Yt|j}||d||d ||d |t}|d gWdn1s0Yt|j}| |d||d ||d |t}|d dgWdn1s00Yt|j}| |d| |d ||d dS)NrMrrureq_posr-req_optTr4Zneed_oner))rSrreq_optZ myXargumentz -req_opt=1) rnrurr#rrYrhrErr.rrvrGrrrr%test_missing_argument_name_in_messages,  (     *     .   z=TestMessageContentError.test_missing_argument_name_in_messagecCstddd}|jdtd|jdtdd|jd td dd |t}|gWdn1sf0Yt|j}| |d| |d | |d |t}|dgWdn1s0Yt|j}| |d| |d | |d dS)NrMrrurrz --req_optTr4z --opt_optr)rSrr rZopt_optz --req_opt=1) rnrurr#boolrrYrhrErr.rrrr%test_optional_optional_not_in_messages$   (     *   z=TestMessageContentError.test_optional_optional_not_in_messagecCstddd}|d|jdddd|t}|gWdn1sP0Yt|j}||d||ddS) NrMrrurZoptional_positionalrr"r) rnrurrYrhrrErr.rrrr'test_optional_positional_not_in_messages   (  z?TestMessageContentError.test_optional_positional_not_in_messageN)rrrrrrrrrrrsrc@seZdZddZdS)TestTypeFunctionCallOnlyOncecsHfdd}t}|jd|dd|d}tdd|dS) Ncs|ddS)Nr foo_convertedr)Zstring_to_convertrrrrs zLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once..spamrrrz --foo spam!rr)rArBrurhrrrJrrrvrFrrr!test_type_function_call_only_onces  z>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_onceN)rrrrrrrrrsrc@s,eZdZddZddZddZddZd S) TestTypeFunctionCalledOnDefaultcsDfdd}t}|jd|dd|g}tdd|dS)Ncs|ddS)NrrrZint_to_convertrrrrs z]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default..spamrrrrrArBrurhrrJrrrr/test_type_function_call_with_non_string_defaults   zOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_defaultcCs@dd}t}|jd|dd|g}|tdd|dS)NcSsdS)NrrrrrrrszYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default..spamr0rrrrrrrr+test_type_function_call_with_string_defaults  zKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_defaultcCs@dd}t}|jd|dd|g}|tdd|dS)NcSs|dS)Nr%r)Zstr_to_convertrrrrGszYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default..extend--testr%rz**)rr)rrGrvrFrrr)test_no_double_type_conversion_of_defaults  zITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_defaultcCs8t}|jddtgdd|g}||jgdS)Nr rrK)rrSr r)rArBrurrhrrrrrrtest_issue_15906 s   z0TestTypeFunctionCalledOnDefault.test_issue_15906N)rrrrr r r rrrrrs   rc@s<eZdZddZddZddZddZd d Zd d Zd S)TestParseKnownArgscCst}|ddS)NrrArBrhrErrrtest_arguments_tuplesz'TestParseKnownArgs.test_arguments_tuplecCst}|gdSr'rrErrrtest_arguments_listsz&TestParseKnownArgs.test_arguments_listcCs t}|d|ddS)NrrrArBrurhrErrrtest_arguments_tuple_positional"s z2TestParseKnownArgs.test_arguments_tuple_positionalcCs"t}|d|dgdS)NrrrErrrtest_arguments_list_positional's z1TestParseKnownArgs.test_arguments_list_positionalcCsJt}|d|d\}}|tdd||ddg|dS)Nrz--foo F --bar --bazFrrr)rArBrurrrrrJ)rrvrFextrasrrrtest_optionals,s  z!TestParseKnownArgs.test_optionalscCsrt}|jdddtd|jddd|dgd }||\}}|td d d d ||gd|dS)Nrrr)rrrSrr<rr)rr-rrrgrrTr)vrr)r-rr)rArBrur#rrrrJ)rrvrrFrrrr test_mixed3s zTestParseKnownArgs.test_mixedN) rrrrrrrrrrrrrrs rc@s,eZdZddZddZddZddZd S) TestIntermixedArgscCstjdd}|jddd|jdddd }|d |jd d td d}||}|tdd dgdd|||\}}|tdd dgd||gd|d}| |\}}|tdd ddgd||gd|| |j ||j ddS)NrMrrrzrrrTr{cmdrestr%)rrSzcmd --foo x 1 --bar y 2 3rrr)rrrzrr|rrgz!cmd --foo x 1 --error 2 --bar y 3r)z--errorrrg) rArBrur#rparse_intermixed_argsrrJrrparse_known_intermixed_argsr~rBr5)rrvrrrFrrrr test_basicCs"    zTestIntermixedArgs.test_basiccCs~tdd}|d|d|jdddd}|t}||Wdn1s^0Y|t|jd dS) NrMrrrrrrrz\.\.\.) rnrurrrrrrrE)rrvrrGrrrtest_remainder^s    (z!TestIntermixedArgs.test_remaindercCstdd}|jdd}|jdddd|jd d d |jd d ddd|d}|tddgddd||t|jd||j ddS)NrMrTrrrrrRrrrrr%rrrz 1 --foo 2r|r)rrzrr{) rnrrurrrrJrrYr5)rrvr|rFrrrtest_exclusiveks  z!TestIntermixedArgs.test_exclusivecCshtdd}|jdd}|jdddd|jd d d |jd d ddd|t|jg||jddS)NrMrTrrrrrRrrrrr%rrr)rnrrurrrrr5rrrrtest_exclusive_incompatiblews  z.TestIntermixedArgs.test_exclusive_incompatibleN)rrrr r!r"r#rrrrrBs  rc@seZdZddZdS)!TestIntermixedMessageContentErrorcCstddd}|jdtd|jdtdd|t}|gWdn1sT0Yt|j}||d||d |t}| gWdn1s0Yt|j}| |d||d dS) NrMrrurrrTr4r) rnrurr#rrYrhrErrZassertNotRegexrrrrrs  (    (  zGTestIntermixedMessageContentError.test_missing_argument_name_in_messageN)rrrrrrrrr$sr$c@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+dRdSZ,dTdUZ-dVdWZ.dXdYZ/dZd[Z0d\d]Z1d^d_Z2d`S)aTestAddArgumentMetavarz,length of metavar tuple does not match nargscCst}|jd||ddS)NrrrW)rArBru)rrrWrvrrrdo_test_no_exceptionsz+TestAddArgumentMetavar.do_test_no_exceptioncCs\t}|t }|jd||dWdn1s80Y||jjd|jdS)Nrr&r) rArBrrrurrErFEXPECTED_MESSAGE)rrrWrvrGrrrdo_test_exceptions .z(TestAddArgumentMetavar.do_test_exceptioncCs|jddddS)Nr|r&r'rrrrtest_nargs_None_metavar_stringsz5TestAddArgumentMetavar.test_nargs_None_metavar_stringcCs|jdtddS)Nr&r)tuplerrrrtest_nargs_None_metavar_length0sz6TestAddArgumentMetavar.test_nargs_None_metavar_length0cCs|jddddS)Nr|r&r*rrrrtest_nargs_None_metavar_length1sz6TestAddArgumentMetavar.test_nargs_None_metavar_length1cCs|jddddS)Nr|rr&r)rrrrtest_nargs_None_metavar_length2sz6TestAddArgumentMetavar.test_nargs_None_metavar_length2cCs|jddddS)Nrr&r2rrrrtest_nargs_None_metavar_length3sz6TestAddArgumentMetavar.test_nargs_None_metavar_length3cCs|jddddS)Nrr|r&r*rrrr"test_nargs_optional_metavar_stringsz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringcCs|jdtddS)Nrr&r,rrrr#test_nargs_optional_metavar_length0sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length0cCs|jddddS)Nrr/r&r*rrrr#test_nargs_optional_metavar_length1sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length1cCs|jddddS)Nrr1r&r2rrrr#test_nargs_optional_metavar_length2sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length2cCs|jddddS)Nrrr&r2rrrr#test_nargs_optional_metavar_length3sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length3cCs|jddddS)Nr%r|r&r*rrrr$test_nargs_zeroormore_metavar_stringsz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringcCs|jdtddS)Nr%r&r,rrrr%test_nargs_zeroormore_metavar_length0szr?r@rArBrCrDrErFrGrHrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr[r\r]rrrrr%s`r%c@s4eZdZdZdZddZddZddZd d Zd S) TestInvalidNargszinvalid nargs valueznargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriatecCsZt}|t}|jd|dWdn1s60Y||jjd|jdSNrrr) rArBrrrurrErFEXPECTED_RANGE_MESSAGErrrvrGrrrdo_test_range_exceptionHs ,z(TestInvalidNargs.do_test_range_exceptioncCsZt}|t}|jd|dWdn1s60Y||jjd|jdSr_) rArBrrrurrErFEXPECTED_INVALID_MESSAGErarrrdo_test_invalid_exceptionNs ,z*TestInvalidNargs.do_test_invalid_exceptioncCs|jdd|jdddS)NrrZabcd)rdrrrrtest_nargs_alphabeticVs z&TestInvalidNargs.test_nargs_alphabeticcCs|jdddS)Nrr)rbrrrrtest_nargs_zeroZsz TestInvalidNargs.test_nargs_zeroN) rrrrcr`rbrdrerfrrrrr^As r^c@seZdZddZddZdS)TestImportStarcCs tjD]}|tt|qdSr')rA__all__rrrrrrrcs zTestImportStar.testcCs0ddttD}|t|ttjdS)NcSs0g|](\}}|ds|dkst|s|qS)rngettext) startswithinspectZismodule)rMr;r'rrrrOhs zJTestImportStar.test_all_exports_everything_but_modules..)rUrArRrrQrh)rrRrrr'test_all_exports_everything_but_modulesgs z6TestImportStar.test_all_exports_everything_but_modulesN)rrrrrlrrrrrgasrgcs$eZdZfddZddZZS)TestWrappingMetavarcs,ttd|_d}|jjd|ddS)NZ9this_is_spammy_prog_with_a_long_name_sorry_about_the_namezz--proxyrc)r r%rnrvru)rrWrrrr%ss  zTestWrappingMetavar.setUpcCs |j}||tddS)Na( usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name [-h] [--proxy ] optional arguments: -h, --help show this help message and exit --proxy )rvrrrr)r help_textrrrtest_help_with_metavar}s z*TestWrappingMetavar.test_help_with_metavar)rrrr%rorrrrrrmqs rmc@s$eZdZddZddZddZdS)TestExitOnErrorcCs$tjdd|_|jjddtddS)NF) exit_on_errorz --integersN)rWrS)rArBrvrur#rrrrr%szTestExitOnError.setUpcCs(|jd}||tjdddS)Nz --integers 4r0)Zintegers)rvrhrrrAr-r/rrr!test_exit_on_error_with_good_argssz1TestExitOnError.test_exit_on_error_with_good_argscCs@|tj |jdWdn1s20YdS)Nz --integers a)rrArrvrhrrrrr test_exit_on_error_with_bad_argssz0TestExitOnError.test_exit_on_error_with_bad_argsN)rrrr%rsrtrrrrrpsrpcCsit_tt_dSr')rrrrrrrrtearDownModulesru__main__)rkr rr+r6r4rarr(ZunittestrArrr TextIOWrapperrrrr&rErJrZrYrmrBrnrSrqrrrrrrrrrrrrrrrrrrrr r rrr$r(r*r3r7r9r;r=r>rIrJrRrTr^r_rarcrhrjrnrorrrsrurvrwrxryrzr}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrerfrrrZ eq_stderrrrZ eq_bstderrrrrrrZskipIfrr r rrrrrr!r%r,r.r3rBrFrJrrrrrrrrrrr rrrrrrrrrrrrr)r,r4r5rCrPrQrRrVrYr\r^r_rardrhrmrnrorprqrrrtrvrwryr{r~rrrrrrrrrrrrrrrrrrrrrrrrrrrr$r%r^rgrmrprurmainrrrrs    &q                                            "" A ('4-0#+!$-*(), ^R$7/4(69$&"$. 10/+!~-LI% =1*?)