ÿØÿà 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 @sdZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZddlmZmZeZejD]\ZZeede<qdZddZd d Z d d Z!d dZ"ddZ#e$edrddZ%nddZ%e$edr.ddZ&nddZ&ddZ'ddZ(ddZ)dd Z*d!d"Z+d#d$Z,d%d&Z-d'd(Z.d)d*Z/d+d,Z0d-d.Z1d/d0Z2d1d2Z3d3d4Z4d5d6Z5dd7d8Z6ed9d:Z7d;d<Z8d=d>Z9dd?d@dAZ:dBdCZ;dDdEZdJdKZ?dLdMZ@dNdOZAdPdQZBddRdSZCiZDiZEddTdUZFGdVdWdWeGZHGdXdYdYejIZJdZd[ZKd\d]ZLGd^d_d_eGZMGd`dadaZNdbdcZOdddeZPdfdgZQdhdiZRddkdlZSedmdnZTdodpZUedqdrZVdsdtZWedudvZXdwdxZYedydzZZd{d|Z[dd}d~Z\ddZ]ddddiie^dddddddde\f ddZ_e^ddddddfddZ`ddZaddZbddZceddZdddZeeddZfdddZgddZheddefjiZjdddZkdddZlddZmdddZndddZoepZqddZrddZsddZtddZuddZveqfddZwdZxdZydZzdZ{ddZ|ddZ}dZ~dZdZdZddĄZddƄZeejZeejZeejdZeeeejfZddɄZddd˄Zdd̈́ZddτZddфZddӄZddՄZddd؄ZdddڄZddd܄Zdddݜdd߄ZGdddZGdddZGdddejZejZejZejZejZejZededededediZGdddZGdddZGdddZddddZddZedkredS()zKa-Ping Yee z'Yury Selivanov N) attrgetter) namedtuple OrderedDictZCO_icCs t|tjSN) isinstancetypes ModuleTypeobjectr &/opt/python39/lib/python3.9/inspect.pyismodule@sr cCs t|tSr)rtyper r r r isclassIsrcCs t|tjSr)rr MethodTyper r r r ismethodQsrcCs:t|st|st|rdSt|}t|do8t|d S)NF__get____set__rr isfunctionrhasattrr tpr r r ismethoddescriptor[srcCs8t|st|st|rdSt|}t|dp6t|dS)NFr __delete__rrr r r isdatadescriptorosrMemberDescriptorTypecCs t|tjSr)rrrr r r r ismemberdescriptorsrcCsdSNFr r r r r rsGetSetDescriptorTypecCs t|tjSr)rrrr r r r isgetsetdescriptorsr cCsdSrr r r r r r scCs t|tjSr)rr FunctionTyper r r r rs rcCs6t|r|j}qt|}t|s&dSt|jj|@Sr)r__func__ functools_unwrap_partialrbool__code__co_flags)fflagr r r _has_code_flags  r*cCs t|tSr)r*Z CO_GENERATORobjr r r isgeneratorfunctionsr-cCs t|tSr)r*Z CO_COROUTINEr+r r r iscoroutinefunctionsr.cCs t|tSr)r*ZCO_ASYNC_GENERATORr+r r r isasyncgenfunctionsr/cCs t|tjSr)rrAsyncGeneratorTyper r r r isasyncgensr1cCs t|tjSr)rr GeneratorTyper r r r isgeneratorsr3cCs t|tjSr)rr CoroutineTyper r r r iscoroutinesr5cCs6t|tjp4t|tjr(t|jjt@p4t|tj j Sr) rrr4r2r%gi_coder'ZCO_ITERABLE_COROUTINE collectionsabc Awaitabler r r r isawaitables    r:cCs t|tjSr)rr TracebackTyper r r r istracebacksr<cCs t|tjSr)rr FrameTyper r r r isframes r>cCs t|tjSr)rrCodeTyper r r r iscodesr@cCs t|tjSr)rrBuiltinFunctionTyper r r r isbuiltinsrBcCs t|pt|pt|pt|Sr)rBrrrr r r r isroutine'srCcCst|tsdS|jt@rdStt|tjs0dSt|dr>dS|j D]\}}t |ddrHdSqH|j D]6}t |ddD]$}t ||d}t |ddrzdSqzqjdS)NFT__abstractmethods____isabstractmethod__r ) rr __flags__TPFLAGS_IS_ABSTRACT issubclassr8ABCMetar__dict__itemsgetattr __bases__)r namevaluebaser r r isabstract.s"        rQc Cst|r|ft|}nd}g}t}t|}z:|jD].}|jD]\}}t|tj rD| |qDq6Wnt yzYn0|D]|} zt || } | |vrt Wn8t y|D]}| |jvr|j| } qqYqYn0|r|| r| | | f| | q|jddd|S)Nr cSs|dS)Nrr )Zpairr r r ozgetmembers..key)rgetmrosetdirrMrJrKrrDynamicClassAttributeappendAttributeErrorrLaddsort) r predicatemroresults processednamesrPkvrUrOr r r getmembersFs:          re Attributezname kind defining_class objectc CsTt|}tt|}tdd|D}|f|}||}t|}|D].}|jD]\}}t|tjrR| |qRqDg} t } |D]} d} d} d}| | vrzz| dkrt dt || } Wn$t y}z WYd}~nd}~00t | d| } | |vrzd} d}|D] }t || d}|| ur|}q|D]@}z| || }WntyXYq*Yn0|| ur*|}q*|durz|} |D]0}| |jvr~|j| }| |vr|} qq~| durq| dur| n|}t|ttjfrd}|}nFt|ttjfrd}|}n*t|trd}|}nt|r,d }nd }| t| || || | q| S) Ncss|]}|ttfvr|VqdSr)rr ).0clsr r r rSz'classify_class_attrs..rJz)__dict__ is special, don't want the proxy __objclass__z static methodz class methodpropertymethoddata)rVrtuplerXrJrKrrrYrZrW ExceptionrL __getattr__r[ staticmethodBuiltinMethodType classmethodClassMethodDescriptorTyperkrCrfr\)rhr_ZmetamroZ class_basesZ all_basesrbrPrcrdresultrarNZhomeclsZget_objZdict_objexcZlast_clsZsrch_clsZsrch_objr,kindr r r classify_class_attrsts                    rxcCs|jSr)__mro__)rhr r r rVsrVstopcs|durdd}n fdd}|}t||i}t}||rx|j}t|}||vs`t||krntd||||<q6|S)NcSs t|dSN __wrapped__rr(r r r _is_wrapperszunwrap.._is_wrappercst|do| Sr|r~rrzr r rsz!wrapper loop when unwrapping {!r})idsysgetrecursionlimitr}len ValueErrorformat)funcr{rr(memoZrecursion_limitZid_funcr rzr unwraps    rcCs|}t|t|Sr) expandtabsrlstrip)lineZexpliner r r indentsizesrcCsNtj|j}|durdS|jdddD]}t||}q.t|sJdS|S)N.)rmodulesget __module__ __qualname__splitrLr)rrhrNr r r _findclasss rc Cs t|rR|jD]>}|turz |j}Wnty:YqYn0|dur|SqdSt|r|jj}|j}t|rt t ||dd|jur|}n|j }n$t |r|j}t |}|dust |||urdSnt |r|j}|j}t|r|jd||jkr|}n|j }nt|trN|j}|j}t |}|dusHt |||urdSnnt|sbt|r|j}|j}t |||urdSt|rt |dd}t|tr||vr||SndS|jD]D}zt ||j}WntyYqYn0|dur|SqdS)Nr"r __slots__)rryr __doc__r[rr"__name____self__rL __class__rrrBrrrkfgetrrrjrdict)r,rPdocrNselfrhrslotsr r r _finddoc!sn                rc Csdz |j}WntyYdS0|durNz t|}WnttfyLYdS0t|ts\dSt|Sr)rr[r TypeErrorrstrcleandoc)r rr r r getdoc_s    rcCsz|d}Wnty&YdS0tj}|ddD]*}t|}|r:t||}t||}q:|rz|d|d<|tjkrtdt|D]}|||d||<q|r|ds| q|r|ds| dqd |SdS)N rr) rr UnicodeErrorrmaxsizerrminrangepopjoin)rlinesZmarginrZcontentindentir r r rrs&     (    rcCst|r(t|ddr|jStd|t|rht|drZtj |j }t|ddrZ|jStd|t |rv|j }t |r|j}t|r|j}t|r|j}t|r|jStdt|jdS)N__file__z{!r} is a built-in modulerz{!r} is a built-in classzVmodule, class, method, function, traceback, frame, or code object was expected, got {})r rLrrrrrrrrrrr"rr&r<tb_framer>f_coder@ co_filenamerr)r moduler r r getfiles.   rcCsTtj|}ddtjD}||D]"\}}||r,|d|Sq,dS)NcSsg|]}t| |fqSr )r)rgsuffixr r r sz!getmodulename..)ospathbasename importlib machinery all_suffixesr]endswith)rZfnamesuffixesZneglenrr r r getmodulenames   rcst|tjjdd}|tjjdd7}tfdd|Dr`tjdtjj dntfddtjj Dr~dStj rSt t |dddurStjvrSdS)Nc3s|]}|VqdSrrrgsfilenamer r rirSz getsourcefile..rc3s|]}|VqdSrrrrr r rirS __loader__)rrrDEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESanyrrsplitextSOURCE_SUFFIXESEXTENSION_SUFFIXESexistsrL getmodule linecachecache)r Zall_bytecode_suffixesr rr getsourcefiles"    rcCs,|durt|pt|}tjtj|Sr)rrrrnormcaseabspath)r _filenamer r r getabsfilesrc Cst|r |St|dr$tj|jS|durD|tvrDtjt|Szt||}Wntt fyjYdS0|tvrtjt|Stj D]\\}}t|rt|dr|j }|t |dkrq|t |<t|}|jt|<ttj|<q|tvr tjt|Stjd}t|ds$dSt||jrLt||j}||urL|Stjd}t||jr~t||j} | |ur~|SdS)Nrr__main__rbuiltins)r rrrrr modulesbyfilerrFileNotFoundErrorcopyrKr_filesbymodnamerrrrealpathrL) r rfilemodnamerr(mainZ mainobjectZbuiltinZ builtinobjectr r r rsJ           rc@s eZdZdS)ClassFoundExceptionNrrrr r r r rsrc@s(eZdZddZddZeZddZdS) _ClassFindercCsg|_||_dSr)stackqualname)rrr r r __init__ sz_ClassFinder.__init__cCs<|j|j|jd|||j|jdS)Nz)rrZrN generic_visitrrnoder r r visit_FunctionDefs    z_ClassFinder.visit_FunctionDefcCsb|j|j|jd|jkrJ|jr4|jdj}n|j}|d8}t||||j dS)Nrrr) rrZrNrrdecorator_listlinenorrr)rr line_numberr r r visit_ClassDefs z_ClassFinder.visit_ClassDefN)rrrrrZvisit_AsyncFunctionDefrr r r r r src Cst|}|rt|n$t|}|dr4|dszsource code not availablezcould not get source coderzcould not find class definitionco_firstlinenoz"could not find function definitionrz>^(\s*def\s)|(\s*async\s+def\s)|(.*(?rr@rrrecompile IndexErrormatch) r rrrrsourceZtreeZ class_findererlnumpatrr r r findsource)s`                   rc Cs,zt|\}}Wnttfy(YdS0t|rd}|rR|ddddkrRd}|t|krx||dvrx|d}qR|t|kr||dddkrg}|}|t|kr||dddkr||||d}qd|Sn>|dkr(t ||}|d}|dkr(|| dddkr(t |||kr(|| g}|dkr|d}|| }|dddkrt |||kr|g|dd<|d}|dkrq|| }qr|r|ddkrg|dd<q|r|ddkrg|dd<qd|SdS) Nrz#!r)r#rrr) rrrr rstriprZrrrr)r rrstartZcommentsendrZcommentr r r getcommentsmsH      $ $rc@s eZdZdS) EndOfBlockNrr r r r r rSr c@seZdZddZddZdS) BlockFindercCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)NrFr)rislambdastartedpassline indecoratordecoratorhasargslast body_col0rr r r rszBlockFinder.__init__cCsr|jsB|jsB|dkrd|_n|dvr8|dkr2d|_d|_d|_n,|dkrZ|jrVd|_n|dkrv|jrtd|_d|_n|tjkrd|_|d|_|jrt|jr|jsd|_n|jrn|tj kr|j dur|jr|d |_ |j d |_ d|_n|tj kr|j d |_ |j dkrntnV|tj krL|j durn|d |j krn|d|_n"|j dkrn|tj tjfvrntdS) N@T)defclasslambdar()Frr)r rr r rtokenizeNEWLINErr INDENTrrDEDENTCOMMENTNL)rrtokenZsrowcolZerowcolrr r r tokeneatersL              zBlockFinder.tokeneaterN)rrrrr r r r r r s r c CsTt}z(tt|j}|D]}|j|qWnttfyDYn0|d|jSr) r rgenerate_tokensiter__next__r r IndentationErrorr)rZ blockfindertokensZ_tokenr r r getblocksr&cCsbt|}t|\}}t|r"|j}t|s>t|rF|jjdkrF|dfSt||d|dfSdS)Nzrr) rrr<rr r>rco_namer&r rrr r r getsourceliness  r)cCst|\}}d|S)Nr)r)rr(r r r getsources r*cCsRg}|jtddd|D]2}|||jf||vr|t||||q|S)NrrrT)r]rrZrMwalktree)classeschildrenparentr`cr r r r+sr+FcCsi}g}|D]d}|jr^|jD]>}||vr0g||<|||vrJ||||r||vrqpqq ||vr ||q |D]}||vrv||qvt||dSr)rMrZr+)r,uniquer-rootsr/r.r r r getclasstrees     r2 Argumentszargs, varargs, varkwc Cst|std||j}|j}|j}t|d|}t||||}d}||7}d}|jt@rx|j|}|d}d}|jt @r|j|}t ||||S)Nz{!r} is not a code objectrr) r@rr co_varnames co_argcountco_kwonlyargcountlistr' CO_VARARGSCO_VARKEYWORDSr3) corbnargsZnkwargsr kwonlyargsstepvarargsvarkwr r r getargs+s"    r@ArgSpeczargs varargs keywords defaultscCsDtjdtddt|\}}}}}}}|s.|r6tdt||||S)Nzhinspect.getargspec() is deprecated since Python 3.0, use inspect.signature() or inspect.getfullargspec()r stacklevelzgFunction has keyword-only parameters or annotations, use inspect.signature() API which can support them)warningswarnDeprecationWarninggetfullargspecrrA)rrr>r?defaultsr<kwonlydefaultsannr r r getargspecHsrK FullArgSpeczGargs, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotationsc Cszzt|ddtd}Wn.tyB}ztd|WYd}~n d}~00g}d}d}g}g}i}d} i} |j|jurz|j|d<|jD]} | j} | j } | t ur| | | j | jur| | j f7} nv| t ur| | | j | jur| | j f7} nJ| tur| }n<| tur(| | | j | jur6| j | | <n| tur6| }| j| jur| j|| <q| sXd} | sbd} t||||| || |S)NFfollow_wrapper_chainsskip_bound_argsigclszunsupported callabler return)_signature_from_callable Signaturerorreturn_annotationempty parametersvaluesrwrN_POSITIONAL_ONLYrZdefault_POSITIONAL_OR_KEYWORD_VAR_POSITIONAL _KEYWORD_ONLY _VAR_KEYWORD annotationrL)rsigexrr>r? posonlyargsr< annotationsrH kwdefaultsparamrwrNr r r rGis\              rGArgInfozargs varargs keywords localscCs t|j\}}}t||||jSr)r@rref_locals)framerr>r?r r r getargvaluessrhcCsjt|dddkr t|ddSt|tjr4t|St|trb|jd|fvrR|j S|jd|j St|S)Nrtypingztyping.rrr) rLreprreplacerr GenericAliasrrrr)r^Z base_moduler r r formatannotations  rmcst|ddfdd}|S)Nrcs t|Sr)rm)r^rr r _formatannotationsz5formatannotationrelativeto.._formatannotation)rL)r ror rnr formatannotationrelativetos  rpr cCsd|SN*r rNr r r rRrSrRcCsd|SN**r rsr r r rRrScCs dt|SN=rjrOr r r rRrScCsd|S)Nz -> r )textr r r rRrSc s<ddlm} | dtddfdd}g}|rBt|t|}t|D]:\}}||}|rz||krz|| |||}||qJ|dur||||n|r|d|r|D]2}||}|r||vr|| ||7}||q|dur|| ||d d |d }d vr8|| d 7}|S) Nr)rEzc`formatargspec` is deprecated since Python 3.5. Use `signature` and the `Signature` object directlyrrBcs(|}|vr$|d|7}|S)Nz: r )argrurbrm formatargr r formatargandannotationsz-formatargspec..formatargandannotationrrr, rrQ)rDrErFr enumeraterZr)rr>r?rHr<rIrbr} formatvarargs formatvarkw formatvalueZ formatreturnsrmrEr~specsZ firstdefaultrr{specZ kwonlyargrur r|r formatargspecs<        rcCsd|Srqr rsr r r rRrScCsd|Srtr rsr r r rRrScCs dt|Srvrxryr r r rR rSc Cs|||fdd}g} tt|D]} | ||| q |rV| ||||||rt| |||||dd| dS)NcSs|||||Srr )rNlocalsr}rr r r convert'sz formatargvalues..convertrrr)rrrZr) rr>r?rr}rrrrrrr r r formatargvaluess  rcsfdd|D}t|}|dkr,|d}n>|dkr@dj|}n*dj|dd}|dd=d ||}td |||rzd nd |dkrd nd|fdS)Ncsg|]}|vrt|qSr rx)rgrNrWr r r4rSz&_missing_arguments..rrrz {} and {}z , {} and {}rz*%s() missing %i required %s argument%s: %s positional keyword-onlyrr)rrrr)f_nameZargnamesposrWrbmissingrtailr rr _missing_arguments3s    rc st||}tfdd|D}|r:|dk} d|f} n2|rTd} d|t|f} nt|dk} tt|} d} |rd} | |dkrd nd||dkrd ndf} td || | rd nd|| |dkr|sd nd fdS) Ncsg|]}|vr|qSr r )rgr{rr r rErSz_too_many..rz at least %dTz from %d to %drz7 positional argument%s (and %d keyword-only argument%s)rz5%s() takes %s positional argument%s but %d%s %s givenZwasZwere)rrr) rrZkwonlyr>ZdefcountZgivenrWZatleastZ kwonly_givenpluralr_Z kwonly_sigmsgr rr _too_manyCs*    rcOst|}|\}}}}}} } |j} i} t|rB|jdurB|jf|}t|} t|}|r^t|nd}t| |}t|D]}||| ||<qt|rt||d| |<t||}|ri| |<| D]T\}}||vr|st d| |f|| ||<q|| vrt d| |f|| |<q| |kr<|sr?rHr<rIrJrZ arg2valueZnum_posZnum_argsZ num_defaultsnrZpossible_kwargskwrOZreqr{rkwargr r r getcallargsXsf             r ClosureVarsz"nonlocals globals builtins unboundc Cst|r|j}t|s$td||j}|jdur:i}nddt|j|jD}|j }| dt j }t |rt|j }i}i}t}|jD]`}|dvrqz||||<Wqtyz||||<Wnty||Yn0Yq0qt||||S)N{!r} is not a Python functioncSsi|]\}}||jqSr ) cell_contents)rgvarZcellr r r sz"getclosurevars.. __builtins__)NoneTrueFalse)rr"rrrr& __closure__zip co_freevars __globals__rrrJr rWco_namesKeyErrorr\r) rcodeZ nonlocal_varsZ global_nsZ builtin_nsZ global_varsZ builtin_varsZ unbound_namesrNr r r getclosurevarss<      r Tracebackz+filename lineno function code_context indexrcCst|r|j}|j}n|j}t|s2td|t|p@t|}|dkr|d|d}zt |\}}Wnt yd}}Yq0t dt |t ||}||||}|d|}nd}}t|||jj||S)Nz'{!r} is not a frame or traceback objectrrr)r< tb_linenorf_linenor>rrrrrrmaxrrrrr')rgcontextrrrrrindexr r r getframeinfos$ rcCs|jSr)rrgr r r getlinenosr FrameInforcCs2g}|r.|ft||}|t||j}q|Sr)rrZrf_back)rgr framelist frameinfor r r getouterframess rcCs4g}|r0|jft||}|t||j}q|Sr)rrrZrtb_next)tbrrrr r r getinnerframess rcCsttdrtdSdS)N _getframer)rrrr r r r currentframe srcCsttd|S)Nr)rrrrr r r rsrcCsttd|S)Nr)rrexc_inforr r r tracesrcCstjd|S)Nry)rrJr)klassr r r _static_getmrosrcCs6i}zt|d}Wnty&Yn0t||tSNrJ)r __getattribute__r[rr _sentinel)r,attrZ instance_dictr r r _check_instance s  rc CsFt|D]8}tt|turz|j|WSty>Yq0qtSr)r_shadowed_dictrrrJr)rrentryr r r _check_class)s  rcCs&z t|Wnty YdS0dSNFT)rrr+r r r _is_type2s   rc Csltjd}t|D]T}z||d}Wnty:Yq0t|tjur^|jdkr^|j|us|Sqt Sr) rrJrrrrrrrjr)r dict_attrrZ class_dictr r r r9s    rc Cst}t|s>t|}t|}|tus2t|tjurBt||}n|}t||}|tur|turtt|dturtt|dtur|S|tur|S|tur|S||urtt|D]8}tt|turz|j |WSt yYq0q|tur|St |dS)Nrr) rrrrrrrrrrJrr[)r,rrYZinstance_resultrrZ klass_resultrr r r getattr_staticGs:     r GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSEDcCs,|jr tS|jdurtS|jjdkr(tStSNr) gi_runningrgi_framerf_lastirr) generatorr r r getgeneratorstate|s   rcCs:t|std|t|dd}|dur2|jjSiSdS)Nz{!r} is not a Python generatorr)r3rrrLrrf)rrgr r r getgeneratorlocalss  r CORO_CREATED CORO_RUNNINGCORO_SUSPENDED CORO_CLOSEDcCs,|jr tS|jdurtS|jjdkr(tStSr) cr_runningrcr_framerrrr) coroutiner r r getcoroutinestates   rcCs"t|dd}|dur|jSiSdS)Nr)rLrf)rrgr r r getcoroutinelocalss r from_bytescCs6zt||}Wnty"YdS0t|ts2|SdSr)rLr[r_NonUserDefinedCallables)rhZ method_namemethr r r "_signature_get_user_defined_methods   rc Cs|j}t|}|jpd}|jp$i}|r2||}z|j|i|}Wn8ty~}z d|} t| |WYd}~n d}~00d} |D]\} } z|j | } Wnt yYnl0| j t ur| | q| j tur| |vrd} | j| d|| <n| | jq| j tur | j| d|| <| r| j turT|| jtd}||| <|| q| j ttfvrp|| q| j tur| | jq|j|dS)Nr z+partial object {!r} has incorrect argumentsFT)rYrwrV)rVrrKrkeywords bind_partialrrr argumentsrrwrXrrZrkrNr\ move_to_endr]r[rW) wrapped_sigpartial extra_argsZ old_params new_paramsZ partial_argsZpartial_keywordsZbar`rZtransform_to_kwonly param_namerdZ arg_valueZ new_paramr r r _signature_get_partialsL                rcCslt|j}|r$|djttfvr,td|dj}|ttfvrP|dd}n|t ur`td|j |dS)Nrzinvalid method signaturerzinvalid argument typer) rnrVrWrwr]r\rrZrXr[rk)r_paramsrwr r r _signature_bound_method0s  rcCs&t|p$t|p$t|tp$|ttfvSr)rBrrrrr r+r r r _signature_is_builtinJs rcCst|rt|rdSt|dd}t|dd}t|dt}t|dt}t|dd}t|tjot|to|dusxt|to|dust|t ot|t S)NFrr& __defaults____kwdefaults____annotations__) callablerrL_voidrrr?rrnr)r,rNrrHrcrbr r r _signature_is_functionlikeVs       rcCs<|d}|dkr|d}|d}|d}|d|S)N,rr:rwr)find)rrZcposr r r _signature_get_bound_paramos    rcCs |s|ddfSd}d}dd|dD}t|j}t|}d}d}g}|j} d} tj} tj} t|} |D]} | j | j }}|| kr|dkr|rd}qld}| d7} ql|d krd}| d}ql|| kr|d kr| }ql|rd}|| kr|d ks| d | ||dkrl| d qld |}|||fS)NcSsg|]}|dqS)ascii)encode)rglr r r rrSz6_signature_strip_non_python_syntax..rFrrTr/$rr r) rr"r#rrZrOP ERRORTOKENnextrstringr) signatureself_parameterlast_positional_onlyrrZ token_streamZ delayed_commaZskip_next_commarzr\Zcurrent_parameterrrtrr clean_signaturer r r "_signature_strip_non_python_syntaxsP      rTc s^ddl|jt|\}}}d|d}z|}WntyLd}Yn0t|jshtd||j d} gj t d}it |dd} | rt j| d}|r|jt j fdd fdd  G fd d d jffd d } t| jj} t| jj} tj| | dd}|durHjnjttt|D](\}\}}| ||||kr^jq^| jjrj| | jjjt| jj | jj!D]\}}| ||q| jj"rj#| | jj"|durPt |dd}|du}t$|}|r6|s*|r6%dndj&jd} | d<||j dS)Nrzdef fooz: passz"{!r} builtin has invalid signaturercs|jdurtd|jS)Nz'Annotations are not currently supported)r^rr{)r)rr r parse_names z&_signature_fromstr..parse_namec sxzt|}Wn:tyHzt|}WntyBtYn0Yn0t|tttttt dfrn |StdSr) eval NameError RuntimeErrorrrintfloatbytesr%rZConstant)rrO)r module_dictsys_module_dictr r wrap_values   z&_signature_fromstr..wrap_valuecs(eZdZfddZfddZdS)z,_signature_fromstr..RewriteSymbolicscs\g}|}t|jr(||j|j}qt|js:t||jdt |}|S)Nr) rrfrZrrONamerrrreversed)rrarrOrrr r visit_Attributes    z<_signature_fromstr..RewriteSymbolics.visit_Attributecst|jjst|jSr)rctxZLoadrrrrr r visit_Namesz7_signature_fromstr..RewriteSymbolics.visit_NameN)rrrrr!r rr r RewriteSymbolicss r"cs|}|urdS|rn|turnz|}|}WntyP}Yn0|ur^dS|urj|n|}||ddSNrYr^)_emptyrZ literal_evalrrZ)Z name_nodeZ default_noderYrNo) Parameterr"rrUinvalidrwrVrr r ps    z_signature_fromstr..p) fillvaluerrrT)'r_parameter_clsrr SyntaxErrorrZModulerrbodyrUr rLrrrrJrZNodeTransformerrrrH itertools zip_longestPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrr7varargVAR_POSITIONAL KEYWORD_ONLYrr< kw_defaultsr VAR_KEYWORDr rrk)rhr,rrOrr r Zprogramrr( module_namer)rrHr"rrNrYZ_selfZ self_isboundZ self_ismoduler ) r'r"rrUr(rwrrVrrrr _signature_fromstrsn                    r9cCsBt|std|t|dd}|s4td|t||||S)Nz%{!r} is not a Python builtin function__text_signature__z#no signature found for builtin {!r})rrrrLrr9)rhrrOrr r r _signature_from_builtinXs r;c CsHd}t|s(t|rd}ntd|t|dd}|rFt||||S|j}|j}|j}|j }|j } |d|} |j } |||| } |j } |j }|j}|rt|}nd}g}||}| }| d|D]<}|rtnt}| |t}|||||d|r|d8}qt| |dD]L\}}|r&tnt}| |t}|||||||d|r|d8}q|jt@r||| }| |t}||||td| D]B}t}|dur||t}| |t}||||t|dq|jt@r2|| }|jt@r |d7}||}| |t}||||td||| d t|d S) NFTrr:r)r^rwr)r^rwrYrQrT__validate_parameters__)rrrrrLr9r,r&r5r4co_posonlyargcountr6rrrrrXrZrr%rZrr'r8r[r\r9r])rhrrOZis_duck_functionrr'Z func_code pos_count arg_namesZ posonly_countrZkeyword_only_countZ keyword_onlyrbrHrcZpos_default_countrVZnon_default_countZ posonly_leftrNrwr^offsetrYrr r r _signature_from_functionhs                        rB)rNrOc Cstjt|||d}t|s(td|t|tjrN||j }|rJt |S|S|rvt |ddd}t|tjrv||Sz |j }Wnt yYn&0|durt|tstd||Sz |j}Wnt yYnn0t|tjrB||j}t||d}t|jd}|jtjur|St|j} |f| } |j| d St|sVt|rdt|||d St|r|t|||d St|tjr||j}t||Sd}t|trt t|d } | dur|| }nld} t |d } t |d }d |j!vr| } n0d |j!vr |} n| dur| } n|dur*|} | dur<|| }|dur@|j"ddD]<}z |j#}Wnt yvYn0|rTt$|||SqTt|j"vr@|j%t&j%ur|j't&j'ur|(t&St)d|nlt|t*s@t t|d } | dur@z || }Wn:t)y>}z d|}t)||WYd}~n d}~00|dur\|rXt |S|St|tj+r|d|}t)|t)d|dS)NrMz{!r} is not a callable objectcSs t|dS)N __signature__r~rr r r rRrSz*_signature_from_callable..rzz1unexpected object {!r} in __signature__ attributerrr)rO__call____new__rrz(no signature found for builtin type {!r}zno signature found for {!r}z,no signature found for builtin function {!r}z+callable {!r} is not supported by signature),r#rrRrrrrrrr"rrrCr[rS_partialmethod partialmethodrrrnrVrWrwr'r4rkrrrBrr;rrrJryr:r9rr rE from_callablerrrA)r,rNrOrPZ_get_signature_ofr_rGrZfirst_wrapped_paramZ sig_paramsrcallZfactory_methodnewinitrPZtext_sigr`rr r r rRs                                      rRc@s eZdZdS)rNrr r r r r} src@s eZdZdS)r%Nrr r r r r% sr%c@s4eZdZdZdZdZdZdZddZe dd Z d S) _ParameterKindrrrcCs|jSr)_name_rr r r __str__ sz_ParameterKind.__str__cCst|Sr)_PARAM_NAME_MAPPINGrr r r description sz_ParameterKind.descriptionN) rrrr1r2r4r5r7rPrkrRr r r r rL srLzpositional-onlyzpositional or keywordzvariadic positionalrzvariadic keywordc@seZdZdZeZeZeZ e Z e Z eZeedddZddZddZed d Zed d Zed dZeddZeeeedddZddZddZddZddZdS)r')_name_kind_default _annotationr$cCszt||_Wn"ty0td|dYn0|turb|jttfvrbd}||jj}t|||_||_ |tur~tdt |t sdt |j }t||ddkr|ddr|jtkrd }||jj}t|t|_d |dd}|std |||_dS) Nzvalue z is not a valid Parameter.kindz({} parameters cannot have default valuesz*name is a required attribute for Parameterzname must be a str, not a {}rrrzLimplicit arguments must be passed as positional or keyword arguments, not {}z implicit{}z"{!r} is not a valid parameter name)rLrTrr%r[r]rrRrUrVrrrrrisdigitrZrX isidentifierrS)rrNrwrYr^rr r r r s6    zParameter.__init__cCs t||j|jf|j|jdfS)NrUrV)rrSrTrUrVrr r r __reduce__ s  zParameter.__reduce__cCs|d|_|d|_dS)NrUrVrYrstater r r __setstate__ s zParameter.__setstate__cCs|jSr)rSrr r r rN szParameter.namecCs|jSr)rUrr r r rY szParameter.defaultcCs|jSr)rVrr r r r^ szParameter.annotationcCs|jSr)rTrr r r rw szParameter.kind)rNrwr^rYcCsL|tur|j}|tur|j}|tur*|j}|tur8|j}t|||||dSr#)rrSrTrVrUr)rrNrwr^rYr r r rk szParameter.replacecCs|j}|j}|jtur(d|t|j}|jturb|jturPd|t|j}nd|t|j}|tkrtd|}n|t krd|}|S)Nz{}: {}z{} = {}z{}={}rrru) rwrSrVr%rrmrUrjr[r])rrw formattedr r r rP s    zParameter.__str__cCsd|jj|S)Nz <{} "{}">rrrrr r r __repr__, szParameter.__repr__cCst|j|j|j|jfSr)hashrNrwr^rYrr r r __hash__/ szParameter.__hash__cCsJ||ur dSt|tstS|j|jkoH|j|jkoH|j|jkoH|j|jkSNT)rr'NotImplementedrSrTrUrVrotherr r r __eq__2 s     zParameter.__eq__N)rrrrrXr1rZr2r[r4r\r5r]r7r%rUrrZr]rkrNrYr^rwrrkrPr`rbrgr r r r r' s2(     r'c@sdeZdZdZddZeddZeddZedd Zd d Z d d Z ddZ ddZ ddZ dS)BoundArguments)r _signature __weakref__cCs||_||_dSr)rri)rr rr r r rP szBoundArguments.__init__cCs|jSr)rirr r r r T szBoundArguments.signaturec Cs|g}|jjD]b\}}|jttfvr*qtz|j|}WntyPYqtYq0|jtkrh| |q| |qt |Sr) rirVrKrwr]r\rrr[extendrZrn)rrrrdr{r r r rX s     zBoundArguments.argsc Csi}d}|jjD]v\}}|sD|jttfvr4d}n||jvrDd}q|sJqz|j|}WntyjYq0|jtkr||q|||<q|Sr) rirVrKrwr]r\rrupdate)rkwargsZkwargs_startedrrdr{r r r rmo s&     zBoundArguments.kwargsc Cs|j}g}|jjD]v\}}z||||fWqty|jturT|j}n$|jt urdd}n|jt urti}nYq|||fYq0qt ||_dS)Nr ) rrirVrKrZrrYr%rwr[r]r)rrZ new_argumentsrNrdvalr r r apply_defaults s     zBoundArguments.apply_defaultscCs2||ur dSt|tstS|j|jko0|j|jkSrc)rrhrdr rrer r r rg s   zBoundArguments.__eq__cCs|d|_|d|_dS)Nrirrirr[r r r r] s zBoundArguments.__setstate__cCs|j|jdS)Nrprprr r r __getstate__ szBoundArguments.__getstate__cCs@g}|jD]\}}|d||qd|jjd|S)Nz{}={!r}z <{} ({})>r)rrKrZrrrr)rrr{rOr r r r` szBoundArguments.__repr__N)rrrrrrkr rrmrorgr]rqr`r r r r rh= s   rhc@seZdZdZeZeZeZ d+eddddZ e ddZ e d d Z e dd d d ZeddZeddZeedddZddZddZddZddddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*ZdS),rS)_return_annotation _parametersNTr<c Cs|durt}n|rt}t}d}|D]}|j}|j} ||kr\d} | |j|j} t| n||krld}|}|ttfvr|jt ur|rd} t| nd}| |vrd| } t| ||| <q&ntdd|D}t ||_ ||_ dS)NFz7wrong parameter order: {} parameter before {} parameterz-non-default argument follows default argumentTzduplicate parameter name: {!r}css|]}|j|fVqdSrrsrgrdr r r ri rSz%Signature.__init__..)rrXrwrNrrRrrZrYr%rMappingProxyTypersrr) rrVrTr=rZtop_kindZ kind_defaultsrdrwrNrr r r r s@       zSignature.__init__cCstjdtddt||S)Nz_inspect.Signature.from_function() is deprecated since Python 3.5, use Signature.from_callable()rrB)rDrErFrBrhrr r r from_function szSignature.from_functioncCstjdtddt||S)Nz^inspect.Signature.from_builtin() is deprecated since Python 3.5, use Signature.from_callable()rrB)rDrErFr;rvr r r from_builtin szSignature.from_builtinfollow_wrappedcCst|||dS)N)rPrN)rR)rhr,rzr r r rH+ szSignature.from_callablecCs|jSr)rsrr r r rV1 szSignature.parameterscCs|jSrrrrr r r rT5 szSignature.return_annotation)rVrTcCs0|tur|j}|tur |j}t|||dS)Nr+)rrVrWrrr)rrVrTr r r rk9 s zSignature.replacecCs8tdd|jD}dd|jD}|||jfS)Ncss|]}|jtkr|VqdSr)rwr\rtr r r riI s z(Signature._hash_basis..cSsi|]}|jtkr|j|qSr )rwr\rNrtr r r rL s z)Signature._hash_basis..)rnrVrWrT)rr kwo_paramsr r r _hash_basisH szSignature._hash_basiscCs(|\}}}t|}t|||fSr)r} frozensetrWra)rrr|rTr r r rbQ s zSignature.__hash__cCs*||ur dSt|tstS||kSrc)rrSrdr}rer r r rgV s  zSignature.__eq__Frc Csi}t|j}d}t|}z t|}Wntyz t|} Wnty`YYqYn0| jtkrtYqn| j|vr| jtkrd} | j | jd} t | d| f}YqnP| jt ks| j t ur| f}Yqn.|r| f}Yqnd} | j | jd} t | dYq0z t|} Wnty2t ddYq0| jt tfvrNt dd| jtkr||g} | |t| || j<q| j|vr| jtkrt dj | jdd||| j<qd} t||D]} | jt kr| } q| jtkrq| j} z|| }WnDtyD|s@| jtkr@| j t ur@t dj | ddYn(0| jtkrdt dj | jd||| <q|r| dur||| j<nt dj tt|d|||S)Nr zA{arg!r} parameter is positional only, but was passed as a keyword)r{z$missing a required argument: {arg!r}ztoo many positional argumentsz$multiple values for argument {arg!r}z*got an unexpected keyword argument {arg!r})r"rVrWr  StopIterationrwr[rNrXrrr]rYr%r\rkrnr/chainrr_bound_arguments_cls)rrrmrrrVZ parameters_exZarg_valsZarg_valrdrrWZ kwargs_paramrr r r _bind] s                   zSignature._bindcOs |||Srrrrrmr r r bind szSignature.bindcOs|j||ddS)NTrrrr r r r szSignature.bind_partialcCs t|t|jfd|jifSNrr)rrnrsrWrrrr r r rZ szSignature.__reduce__cCs|d|_dSrr{r[r r r r] szSignature.__setstate__cCsd|jj|S)Nz<{} {}>r_rr r r r` szSignature.__repr__c Csg}d}d}|jD]d}t|}|j}|tkr6d}n|rH|dd}|tkrVd}n|tkrp|rp|dd}||q|r|ddd |}|j t urt |j }|d|7}|S)NFTrrrz({})rz -> {}) rVrWrrwrXrZr[r\rrrTr%rm) rruZrender_pos_only_separatorZrender_kw_only_separatorrdr^rwZrenderedZannor r r rP s0       zSignature.__str__)N)rrrrr'r,rhrr%rUrrsrwrxrHrkrVrTrrkr}rbrgrrrrZr]r`rPr r r r rS s: 6     rSrycCstj||dS)Nry)rSrH)r,rzr r r r ' sr c Csddl}ddl}|}|jddd|jddddd |}|j}|d \}}}z||}} WnPty} z8d |t | j | } t | t jd t d WYd} ~ n d} ~ 00|r|d} | }| D]} t|| }q| j t jvrt dt jd t d|jrt d |t d t| t d | j|| urzt d t| jt| drt d | jn4zt|\}}WntyYn0t d |t dn t t|dS)Nrr zCThe object to be analysed. It supports the 'module:qualname' syntax)helpz-dz --details store_truez9Display info about the module rather than its source code)actionrrzFailed to import {} ({}: {}))rrrz#Can't get info for builtin modules.rz Target: {}z Origin: {}z Cached: {}z Loader: {}__path__zSubmodule search path: {}zLine: {}r)argparserArgumentParser add_argument parse_argsr partition import_modulerorrrprintrstderrexitrrLbuiltin_module_namesZdetailsr __cached__rjrrrrr*)rrparserrtargetZmod_nameZ has_attrsattrsr,rrvrpartspart__rr r r _main, s\       rr)N)N)N)F)N)r)r)r)r)r)r )T)T)T) __author__r8rdiscollections.abcr7enumZimportlib.machineryrr/rrrrrrrrDr#roperatorrrrglobalsZmod_dictZCOMPILER_FLAG_NAMESrKrcrdrGr rrrrrrr rr*r-r.r/r1r3r5r:r<r>r@rBrCrQrerfrxrVrrrrrrrrrrrrrrorZ NodeVisitorrrrr r r&r)r*r+r2r3r@rArKrLrGrerhrmrprrrrrrrrrrr_fieldsrrrrrrr rrrrrrrrrrrrrrrrrrrrrDZ_WrapperDescriptorallZ_MethodWrapperrrJZ_ClassMethodWrapperrArrrrrrrrr9r;rBrRrr%IntEnumrLr1rXr2rZr4r[r5r\r7r]rQr'rhrSr rrr r r r sp            , t$ >   /D->     \   ; < 5        0   L H   _ 8 j: