grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|jüéã@sô ddlZddlTddlmZmZddlmZmZd_dddœd d „Zd d „Z d`ddœdd„Z dd„Z dd„Z dadd„Z dd„Zdd„Zdbdd„Zdd„Zd d!„Zdd"œd#d$„Zd%d&„ZGd'd(„d(eƒZGd)d*„d*eƒZeed+ƒs„d,d-„Zd.d/„Zeeeƒe_eeeƒe_Gd0d1„d1eƒZ d2d3„Z!Gd4d5„d5ee d6�Z"Gd7d8„d8ee d6�Z#Gd9d:„d:ee d6�Z$Gd;d<„d„d>ee d6�Z&e"e'e(e)fe#e*fe$e+fe%edƒe,fe&ed?ƒfiZ-e"e,fiZ.e,diZ/Gd@dA„dAe0ƒZ1GdBdC„dCe1ƒZ2GdDdE„dEe1ƒZ3ee4dFƒ�s!dGdH„Z5dIdJ„Z6ee5e6ƒe4_7GdKdL„dLe8ƒZ9GdMdN„dNe:ƒZ;GdOdP„dPe:ƒZej?j@dƒZAGdTdU„dUeƒZBdVZCdWZDgeC¢eD¢RZEGdXdY„dYeƒZFdZd[„ZGd\d]„ZHeId^k�rxeHƒdSdS)céN)Ú*)ÚcontextmanagerÚ nullcontext)ÚIntEnumÚautoú ÚexecF)Ú type_commentsÚfeature_versioncCsH t}|r |tO}t|tƒr|\}}|}n|durd}t|||||d�S)Néÿÿÿÿ)Ú_feature_version)Z PyCF_ONLY_ASTZPyCF_TYPE_COMMENTSÚ isinstanceÚtupleÚcompile)ÚsourceÚfilenameÚmoder r ÚflagsÚmajorÚminor©rú*/opt/alt/python310/lib64/python3.10/ast.pyÚparse!s  ÿrcsh t|tƒrt| d¡dd�}t|tƒr|j}dd„‰‡fdd„‰‡fdd „‰‡‡‡‡fd d „‰ˆ|ƒS) Nz Úeval©rcSs4d}t|ddƒ}r|d|›�7}t|d|›�ƒ‚)Nzmalformed node or stringÚlinenoz on line ú: )ÚgetattrÚ ValueError)ÚnodeÚmsgÚlnorrrÚ_raise_malformed_nodeCsz+literal_eval.._raise_malformed_nodecs,t|tƒrt|jƒtttfvrˆ|ƒ|jS©N)r ÚConstantÚtypeÚvalueÚintÚfloatÚcomplex©r)r"rrÚ _convert_numHsz"literal_eval.._convert_numcsDt|tƒrt|jttfƒrˆ|jƒ}t|jtƒr| S| Sˆ|ƒSr#)r ZUnaryOpÚopÚUAddÚUSubÚoperand)rr/)r+rrÚ_convert_signed_numLs   z)literal_eval.._convert_signed_numcsLt|tƒr|jSt|tƒrttˆ|jƒƒSt|tƒr"ttˆ|jƒƒSt|t ƒr/t tˆ|jƒƒSt|t ƒrOt|j t ƒrO|j jdkrO|j|jkrNgkrOt ƒSt|tƒrqt|jƒt|jƒkrbˆ|ƒtttˆ|jƒtˆ|jƒƒƒSt|tƒr¢t|jttfƒr¢ˆ|jƒ}ˆ|jƒ}t|ttfƒr¢t|tƒr¢t|jtƒrž||S||Sˆ|ƒS)NÚset) r r$r&ÚTuplerÚmapÚeltsZListÚlistÚSetr1ZCallÚfuncÚNameÚidÚargsÚkeywordsZDictÚlenÚkeysÚvaluesÚdictÚzipZBinOpr,ÚAddÚSubÚleftÚrightr'r(r))rrCrD©Ú_convertr+r0r"rrrFTs4    "ÿ  ÿ   zliteral_eval.._convert)r ÚstrrÚlstripZ ExpressionÚbody)Znode_or_stringrrErÚ literal_eval6s    rJT)ÚindentcsV d‡‡‡‡fdd„ ‰t|tƒstd|jjƒ‚ˆdur%tˆtƒs%dˆ‰ˆ|ƒdS)Nrc sÞˆdurˆd7‰dˆˆ}dˆˆ}nd}d}t|tƒrÍt|ƒ}g}d}ˆ}|jD]@}zt||ƒ} Wn ty?d}Yq+w| durOt||dƒdurOd}q+ˆ| ˆƒ\} } |oY| }|rf| d|| f¡q+| | ¡q+ˆr©|jr©|jD]4}zt||ƒ} Wn ty†Yqtw| dur”t||dƒdur”qtˆ| ˆƒ\} } |ož| }| d|| f¡qt|r¿t|ƒd kr¿d |j j d  |¡f| fSd |j j ||  |¡fd fSt|t ƒré|sÖd Sd||  ‡‡fdd„|Dƒ¡fd fSt |ƒdfS)NéÚ z, Úú, T.z%s=%séz%s(%s)z%s(%s%s)F)z[]Tz[%s%s]c3s�|] }ˆ|ˆƒdVqdS©rNr)Ú.0Úx)Ú_formatÚlevelrrÚ ªs€z(dump.._format..)r ÚASTr%Ú_fieldsrÚAttributeErrorÚappendÚ _attributesr<Ú __class__Ú__name__Újoinr5Úrepr) rrUÚprefixÚsepÚclsr:Z allsimpler;Únamer&Úsimple©rTÚannotate_fieldsÚinclude_attributesrK)rUrrT}s\    þ    ÿ & zdump.._formatzexpected AST, got %rú )r)r rWÚ TypeErrorr\r]rG)rrfrgrKrrerÚdumpqs 0 rjcCsX dD]&}||jvr)||jvr)t||dƒ}|dus#t||ƒr)| d¡r)t|||ƒq|S)N)rÚ col_offsetÚ end_linenoÚend_col_offsetZend_)r[rÚhasattrÚ startswithÚsetattr)Únew_nodeZold_nodeÚattrr&rrrÚ copy_location´s ÿÿ €rscs" ‡fdd„‰ˆ|ddddƒ|S)Ncs¶d|jvrt|dƒs||_n|j}d|jvr%t|ddƒdur"||_n|j}d|jvr6t|dƒs3||_n|j}d|jvrJt|ddƒdurG||_n|j}t|ƒD] }ˆ|||||ƒqNdS)Nrrlrkrm)r[rnrrrlrkrmÚiter_child_nodes)rrrkrlrmÚchild©Ú_fixrrrwÍs&       ÿz#fix_missing_locations.._fixrLrrr*rrvrÚfix_missing_locationsÅs rxrLcCsv t|ƒD]3}t|tƒrt|ddƒ||_qd|jvr$t|ddƒ||_d|jvr8t|ddƒ}dur8|||_q|S)Nrrrl)Úwalkr Z TypeIgnorerrr[rl)rÚnrurlrrrÚincrement_linenoès     €r{c cs:� |jD]}z |t||ƒfVWqtyYqwdSr#)rXrrY)rÚfieldrrrÚ iter_fieldsÿs€  ÿýr}ccsP� t|ƒD]\}}t|tƒr|Vqt|tƒr%|D] }t|tƒr$|VqqdSr#)r}r rWr5)rrcr|Úitemrrrrt s€   €úrtcCs˜ t|ttttfƒstd|jjƒ‚|jrt|jdt ƒsdS|jdj }t|t ƒr.|j }nt|t ƒr=t|j tƒr=|j }ndS|rJddl}| |¡}|S)Nz%r can't have docstringsr)r ÚAsyncFunctionDefÚ FunctionDefÚClassDefÚModulerir\r]rIÚExprr&ÚStrÚsr$rGÚinspectZcleandoc)rZcleanÚtextr†rrrÚ get_docstrings   rˆcCs– d}g}d}|t|ƒkrB||}||7}|d7}|dkr1|t|ƒkr1||dkr1|d7}|d7}|dvr<| |¡d}|t|ƒks |rI| |¡|S)NrrNrLú rMz )r<rZ)rÚidxÚlinesZ next_lineÚcrrrÚ_splitlines_no_ff3s$    ö r�cCs. d}|D]}|dvr||7}q|d7}q|S)NrNz rhr)rÚresultrŒrrrÚ_pad_whitespaceLs  r�)Úpaddedc Cs z|jdus |jdurWdS|jd}|jd}|j}|j}Wn ty*YdSwt|ƒ}||kr?|| ¡||… ¡S|rPt|| ¡d|… ¡ƒ}nd}||| ¡|d… ¡} || ¡d|… ¡} ||d|…}|  d| ¡|  | ¡d  |¡S)NrLrNr) rlrmrrkrYr�ÚencodeÚdecoder�ÚinsertrZr^) rrr�rrlrkrmr‹ZpaddingÚfirstZlastrrrÚget_source_segmentWs.    ÿ   r•ccsF� ddlm}||gƒ}|r!| ¡}| t|ƒ¡|V|sdSdS)Nr)Údeque)Ú collectionsr–ÚpopleftÚextendrt)rr–Ztodorrrry|s€   ýryc@s&eZdZ dd„Zdd„Zdd„ZdS)Ú NodeVisitorcCs$ d|jj}t|||jƒ}||ƒS)NÚvisit_)r\r]rÚ generic_visit)ÚselfrÚmethodÚvisitorrrrÚvisitžs zNodeVisitor.visitcCsV t|ƒD]#\}}t|tƒr|D] }t|tƒr| |¡qqt|tƒr(| |¡qdSr#)r}r r5rWr )r�rr|r&r~rrrrœ¤s   €þ  €úzNodeVisitor.generic_visitc Cs |j}t t|ƒ¡}|dur t ¡D] \}}t||ƒr|}nq|durKd|}zt||ƒ}Wn ty8Ynwddl}|  |›d�t d¡||ƒS|  |¡S)Nr›rz" is deprecated; add visit_Constanté) r&Ú_const_node_type_namesÚgetr%Úitemsr rrYÚwarningsÚwarnÚDeprecationWarningrœ) r�rr&Z type_namerbrcržrŸr¥rrrÚvisit_Constant®s* þ ÿ ÿ zNodeVisitor.visit_ConstantN)r]Ú __module__Ú __qualname__r rœr¨rrrrršŠs  ršc@óeZdZ dd„ZdS)ÚNodeTransformercCs®t|ƒD]P\}}t|tƒr:g}|D]!}t|tƒr-| |¡}|dur"qt|tƒs-| |¡q| |¡q||dd…<qt|tƒrT| |¡}|durNt||ƒqt|||ƒq|Sr#) r}r r5rWr r™rZÚdelattrrp)r�rr|Ú old_valueZ new_valuesr&rqrrrrœès(          €zNodeTransformer.generic_visitN)r]r©rªrœrrrrr¬Äs #r¬rzcCó |jSr#©r&©r�rrrÚ_getterór²cCó ||_dSr#r°©r�r&rrrÚ_setteró r¶c@seZdZdd„Zdd„ZdS)Ú_ABCcGs d|_dS)Nz3Deprecated AST node class. Use ast.Constant instead)Ú__doc__)rbr:rrrÚ__init__r·z _ABC.__init__cCsdt|tƒsdS|tvr,z|j}Wn tyYdSwt|t|ƒo+t|t |d¡ƒ St ||¡S)NFr) r r$Ú _const_typesr&rYÚ_const_types_notr£r%Ú__instancecheck__)rbÚinstr&rrrr½s   ÿþ z_ABC.__instancecheck__N)r]r©rªrºr½rrrrr¸s r¸cOsp|D]}||jvr q|j |¡}|t|ƒkr t|j›d|›�ƒ‚q|tvr,t|i|¤ŽStj|g|¢Ri|¤ŽS)Nz" got multiple values for argument )rXÚindexr<rir]r»r$Ú__new__)rbr:ÚkwargsÚkeyÚposrrrÚ_new"s   ÿrÄc@óeZdZdZeZdS)ÚNum)rzN©r]r©rªrXrÄrÀrrrrrÆ.órÆ)Ú metaclassc@rÅ)r„©r…NrÇrrrrr„2rÈr„c@rÅ)ÚBytesrÊNrÇrrrrrË6rÈrËc@seZdZeZdS)Ú NameConstantN)r]r©rªrÄrÀrrrrrÌ:srÌc@seZdZdZdd„ZdS)ÚEllipsisrcOs6|turtdg|¢Ri|¤ŽStj|g|¢Ri|¤ŽS)N.)rÍr$rÀ)rbr:rÁrrrrÀ@szEllipsis.__new__N)r]r©rªrXrÀrrrrrÍ=s rÍ.c@ó eZdZdS)ÚsliceN©r]r©rªrrrrrÏ[órÏc@r«)ÚIndexcKs|Sr#r)rbr&rÁrrrrÀ`sz Index.__new__N©r]r©rªrÀrrrrrÒ^s rÒc@seZdZ ddd„ZdS)ÚExtSlicercKstt|ƒtƒfi|¤ŽSr#)r2r5ZLoad)rbÚdimsrÁrrrrÀeszExtSlice.__new__N)rrÓrrrrrÔcsrÔrÕcCr¯r#©r4r±rrrÚ _dims_gettermr³r×cCr´r#rÖrµrrrÚ _dims_setterqr·rØc@rÎ)ÚSuiteNrÐrrrrrÙvrÑrÙc@rÎ)ÚAugLoadNrÐrrrrrÚyrÑrÚc@rÎ)ÚAugStoreNrÐrrrrrÛ|rÑrÛc@rÎ)ÚParamNrÐrrrrrÜrÑrÜZ1ec@s€eZdZ eƒZeƒZeƒZeƒZeƒZeƒZ eƒZ eƒZ e Z eƒZ eƒZeƒZeƒZeƒZeƒZeƒZeƒZeƒZdd„ZdS)Ú _PrecedencecCs(z| |d¡WSty|YSw©NrL)r\rr±rrrÚnextžs  ÿz_Precedence.nextN)r]r©rªrÚTUPLEÚYIELDÚTESTÚORÚANDÚNOTÚCMPÚEXPRÚBORÚBXORÚBANDÚSHIFTÚARITHÚTERMÚFACTORÚPOWERÚAWAITÚATOMrßrrrrr݇s* rÝ)ú'ú")z"""z'''cseZdZ ddœdd„Zdd„Zdd„Zd d „Zdód d „Zdd„Zdd„Z e dd„ƒZ e ddœdd„ƒZ e dd„ƒZdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Z‡fd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdd?„Z!d@dA„Z"dBdC„Z#dDdE„Z$dFdG„Z%dHdI„Z&dJdK„Z'dLdM„Z(dNdO„Z)dPdQ„Z*dRdS„Z+dTdU„Z,dVdW„Z-dXdY„Z.dZd[„Z/d\d]„Z0d^d_„Z1d`da„Z2dbdc„Z3ddde„Z4dfdg„Z5dhdi„Z6djdk„Z7dldm„Z8dndo„Z9e:ddpœdqdr„Z;e:dsœdtdu„Zdzd{„Z?d|d}„Z@d~d„ZAd€d�„ZBd‚dƒ„ZCd„d…„ZDd†d‡„ZEdˆd‰„ZFdŠd‹„ZGdŒd�„ZHdŽd�„ZId�d‘„ZJd’d“„ZKd”d•„ZLd–d—„ZMd˜d™„ZNdšd›„ZOdœd�dždŸd œZPeQjReQjSeQjSeQjSd¡œZTd¢d£„ZUdždŸd¤d¥d¦d§d¨d©dªd«d¬d­d®d¯œ ZVeQjWeQjWeQjXeQjXeQjXeQjXeQjYeQjYeQjZeQj[eQj\eQjXeQj]d°œ Z^e_d±ƒZ`d²d³„Zad´dµd¶d·d¸d¹dºd»d¼d½d¾œ Zbd¿dÀ„ZcdÁdÂdÜZdeQjeeQjfdÄœZgdÅdÆ„ZhdÇdÈ„ZidÉdÊ„ZjdËdÌ„ZkdÍd΄ZldÏdЄZmdÑdÒ„ZndÓdÔ„ZodÕdÖ„Zpd×dØ„ZqdÙdÚ„ZrdÛdÜ„ZsdÝdÞ„Ztdßdà„Zudádâ„Zvdãdä„Zwdådæ„Zxdçdè„Zydédê„Zzdëdì„Z{dídî„Z|dïdð„Z}dñdò„Z~‡ZS)ôÚ _UnparserF©Ú_avoid_backslashescCs(g|_g|_i|_i|_d|_||_dS)Nr)Ú_sourceÚ_bufferÚ _precedencesÚ _type_ignoresÚ_indentrö)r�rörrrrº®s  z_Unparser.__init__cCsL t|ƒ}z|t|ƒƒWn tyYdSw|D] }|ƒ||ƒqdSr#)ÚiterrßÚ StopIteration)r�ZinterÚfÚseqrSrrrÚ interleave¶s ÿ þz_Unparser.interleavecsB t|ƒdkr||dƒˆ d¡dSˆ ‡fdd„||¡dS)NrLrú,có ˆ d¡S©NrO©Úwriterr±rrÚÊó z&_Unparser.items_view..)r<rr)r�Z traverserr¤rr±rÚ items_viewÂs   z_Unparser.items_viewcCs |jr | d¡dSdS)NrM)r÷rr±rrrÚ maybe_newlineÌsÿz_Unparser.maybe_newlinerNcCs" | ¡| d|j|¡dS)Nz )r rrû©r�r‡rrrÚfillÑsz_Unparser.fillcCs |j |¡dSr#)r÷rZr rrrr×sz_Unparser.writecCs|j |¡dSr#)rørZr rrrÚ buffer_writerÛóz_Unparser.buffer_writercCsd |j¡}|j ¡|S©NrN)r^røÚclearrµrrrÚbufferÞs  z_Unparser.bufferN©ÚextraccsB� | d¡|r| |¡|jd7_dV|jd8_dS)Nú:rL)rrû)r�rrrrÚblockäs€  z_Unparser.blockccs"� | |¡dV| |¡dSr#r)r�ÚstartÚendrrrÚdelimitòs € z_Unparser.delimitcCs|r| ||¡StƒSr#)rr)r�rrÚ conditionrrrÚ delimit_ifûs z_Unparser.delimit_ifcCs | dd| |¡|k¡S©Nú(ú))rÚget_precedence)r�Ú precedencerrrrÚrequire_parenssz_Unparser.require_parenscCs|j |tj¡Sr#)rùr£rÝrâ©r�rrrrrr z_Unparser.get_precedencecGs|D]}||j|<qdSr#)rù)r�rZnodesrrrrÚset_precedences ÿz_Unparser.set_precedencecCsf t|ttttfƒrt|jƒdkrdS|jd}t|tƒsdS|j}t|t ƒr/t|jt ƒr1|SdSdS)NrLr) r rr€r�r‚r<rIrƒr&r$rGr rrrÚget_raw_docstring s ÿ  ÿz_Unparser.get_raw_docstringcCs*|j |j¡p |j}|durd|›�SdS)Nz # type: )rúr£rÚ type_comment)r�rZcommentrrrÚget_type_comments ÿz_Unparser.get_type_commentcs2t|tƒr|D]}| |¡qdStƒ |¡dSr#)r r5ÚtraverseÚsuperr )r�rr~©r\rrr%!s  ÿz_Unparser.traversecCs g|_| |¡d |j¡Sr)r÷r%r^r rrrr +s  z_Unparser.visitcCs@| |¡}r| |¡| |jdd…¡dS| |j¡dSrÞ)r"Ú_write_docstringr%rI)r�rZ docstringrrrÚ"_write_docstring_and_traverse_body2s z,_Unparser._write_docstring_and_traverse_bodycCs*dd„|jDƒ|_| |¡|j ¡dS)NcSsi|] }|jd|j›�“qS)Úignore)rÚtag)rRr*rrrÚ :sÿÿz*_Unparser.visit_Module..)Ú type_ignoresrúr)rr rrrÚ visit_Module9s þ z_Unparser.visit_Modulecs`ˆ dd¡�ˆ ‡fdd„ˆj|j¡Wdƒn1swYˆ d¡ˆ |j¡dS)Nrrcrrrrr±rrrDrz._Unparser.visit_FunctionType..ú -> )rrr%ÚargtypesrÚreturnsr rr±rÚvisit_FunctionTypeAsÿÿ z_Unparser.visit_FunctionTypecCs(| ¡| tj|j¡| |j¡dSr#)r r!rÝrár&r%r rrrÚ visit_ExprJsz_Unparser.visit_ExprcCsj| tj|¡�$| tj|j|j¡| |j¡| d¡| |j¡WdƒdS1s.wYdS)Nz := ) rrÝràr!rñÚtargetr&r%rr rrrÚvisit_NamedExprOs   "üz_Unparser.visit_NamedExprcó(ˆ d¡ˆ ‡fdd„ˆj|j¡dS)Nzimport crrrrr±rrrXrz(_Unparser.visit_Import..)r rr%Únamesr rr±rÚ visit_ImportVó z_Unparser.visit_ImportcsXˆ d¡ˆ d|jp d¡|jrˆ |j¡ˆ d¡ˆ ‡fdd„ˆj|j¡dS)Nzfrom Ú.rz import crrrrr±rrr`rz,_Unparser.visit_ImportFrom..)r rrUÚmodulerr%r7r rr±rÚvisit_ImportFromZs   z_Unparser.visit_ImportFromcCsT| ¡|jD] }| |¡| d¡q| |j¡| |¡}r(| |¡dSdS)Nú = )r Útargetsr%rr&r$)r�rr4r#rrrÚ visit_Assignbs    ÿz_Unparser.visit_AssigncCsB| ¡| |j¡| d|j|jjjd¡| |j¡dS)Nrhz= ) r r%r4rÚbinopr,r\r]r&r rrrÚvisit_AugAssignks z_Unparser.visit_AugAssigncCsŒ| ¡| dd|j ot|jtƒ¡�| |j¡Wdƒn1s$wY| d¡| |j¡|j rD| d¡| |j ¡dSdS)Nrrrr=) r rrdr r4r8r%rÚ annotationr&r rrrÚvisit_AnnAssignqs ÿ   þz_Unparser.visit_AnnAssigncCs.| d¡|jr| d¡| |j¡dSdS)NÚreturnrh)r r&rr%r rrrÚ visit_Return{s  þz_Unparser.visit_ReturncCó| d¡dS)NÚpass©r r rrrÚ visit_Pass�óz_Unparser.visit_PasscCrF)NÚbreakrHr rrrÚ visit_Break„rJz_Unparser.visit_BreakcCrF)NÚcontinuerHr rrrÚvisit_Continue‡rJz_Unparser.visit_Continuecr6)Nzdel crrrrr±rrrŒrz(_Unparser.visit_Delete..)r rr%r>r rr±rÚ visit_DeleteŠr9z_Unparser.visit_DeletecCs:| d¡| |j¡|jr| d¡| |j¡dSdS)Nzassert rO)r r%Útestr rr rrrÚ visit_AssertŽs   þz_Unparser.visit_Assertcr6)Nzglobal crrrrr±rrr—rz(_Unparser.visit_Global..©r rrr7r rr±rÚ visit_Global•r9z_Unparser.visit_Globalcr6)Nz nonlocal crrrrr±rrr›rz*_Unparser.visit_Nonlocal..rRr rr±rÚvisit_Nonlocal™r9z_Unparser.visit_NonlocalcCóz| tj|¡�,| d¡|jr+| d¡| tj|j¡| |j¡WdƒdSWdƒdS1s6wYdS)NÚawaitrh)rrÝrðrr&r!rñr%r rrrÚ visit_Await�ó  û"þz_Unparser.visit_AwaitcCrU)NÚyieldrh)rrÝrárr&r!rñr%r rrrÚ visit_Yield¥rXz_Unparser.visit_YieldcCsh| tj|¡�#| d¡|jstdƒ‚| tj|j¡| |j¡WdƒdS1s-wYdS)Nz yield from z-Node can't be used without a value attribute.) rrÝrárr&rr!rñr%r rrrÚvisit_YieldFrom­s "ûz_Unparser.visit_YieldFromcCs\| d¡|js|jrtdƒ‚dS| d¡| |j¡|jr,| d¡| |j¡dSdS)NÚraisez*Node can't use cause without an exception.rhz from )r ÚexcÚcauserrr%r rrrÚ visit_Raiseµs    þz_Unparser.visit_RaisecCsæ| d¡| ¡�| |j¡Wdƒn1swY|jD]}| |¡q"|jrL| d¡| ¡�| |j¡Wdƒn1sGwY|jrq| d¡| ¡�| |j¡WdƒdS1sjwYdSdS)NÚtryÚelseÚfinally)r rr%rIÚhandlersÚorelseÚ finalbody)r�rZexrrrÚ visit_TryÁs"  ÿ    ÿ  "ÿþz_Unparser.visit_TrycCs|| d¡|jr| d¡| |j¡|jr!| d¡| |j¡| ¡�| |j¡WdƒdS1s7wYdS)NÚexceptrhú as )r r%rr%rcrrIr rrrÚvisit_ExceptHandlerÐs      "ÿz_Unparser.visit_ExceptHandlercCs| ¡|jD] }| d¡| |¡q| d|j¡|jdd|jp%|jd��4d}|jD]}|r8| d¡nd}| |¡q.|jD]}|rM| d¡nd}| |¡qCWdƒn1s_wY|  ¡�|  |¡WdƒdS1sywYdS) Nú@zclass rr)rFrOT) r Údecorator_listr r%rcrÚbasesr;rrr))r�rÚdecoÚcommaÚerrrÚvisit_ClassDefÛs,         ûø  "ÿz_Unparser.visit_ClassDefcCó| |d¡dS)NÚdef©Ú_function_helperr rrrÚvisit_FunctionDefór z_Unparser.visit_FunctionDefcCrq)Nz async defrsr rrrÚvisit_AsyncFunctionDeför z _Unparser.visit_AsyncFunctionDefcCsÖ| ¡|jD] }| d¡| |¡q|d|j}| |¡| dd¡�| |j¡Wdƒn1s7wY|jrJ| d¡| |j¡|j |  |¡d��|  |¡WdƒdS1sdwYdS)Nrjrhrrr/r) r rkr r%rcrr:r1rrr$r))r�rZ fill_suffixrmZdef_strrrrrtùs    ÿ   "ÿz_Unparser._function_helpercCó| d|¡dS)Nzfor ©Ú _for_helperr rrrÚ visit_Forr z_Unparser.visit_ForcCrw)Nz async for rxr rrrÚvisit_AsyncFor r z_Unparser.visit_AsyncForcCs¸| |¡| |j¡| d¡| |j¡|j| |¡d��| |j¡Wdƒn1s0wY|jrZ| d¡| ¡�| |j¡WdƒdS1sSwYdSdS)Nú in rra) r r%r4rrürr$rIrd)r�r rrrrrys    ÿ  "ÿþz_Unparser._for_helpercCs4| d¡| |j¡| ¡�| |j¡Wdƒn1s wY|jrst|jƒdkrst|jdtƒrs|jd}| d¡| |j¡| ¡�| |j¡Wdƒn1s\wY|jrst|jƒdkrst|jdtƒs7|jr˜| d¡| ¡�| |j¡WdƒdS1s‘wYdSdS)Nzif rLrzelif ra) r r%rPrrIrdr<r ZIfr rrrÚvisit_Ifs&   ÿ$    ÿ$ü  "ÿþz_Unparser.visit_IfcCs˜| d¡| |j¡| ¡�| |j¡Wdƒn1s wY|jrJ| d¡| ¡�| |j¡WdƒdS1sCwYdSdS)Nzwhile ra)r r%rPrrIrdr rrrÚ visit_While,s   ÿ  "ÿþz_Unparser.visit_Whilecóhˆ d¡ˆ ‡fdd„ˆj|j¡ˆjˆ |¡d��ˆ |j¡WdƒdS1s-wYdS)Nzwith crrrrr±rrr8rz&_Unparser.visit_With..r©r rr%r¤rr$rIr rr±rÚ visit_With6ó "ÿz_Unparser.visit_Withcr)Nz async with crrrrr±rrr>rz+_Unparser.visit_AsyncWith..rr€r rr±rÚvisit_AsyncWith<r‚z_Unparser.visit_AsyncWith©Ú quote_typesÚescape_special_whitespacecsÐ ‡fdd„}d t|ˆƒ¡‰|}dˆvrdd„|Dƒ}‡fdd„|Dƒ}|sBtˆƒ‰t‡fdd „|Dƒˆd ƒ}ˆd d …|gfSˆrd|j‡fd d„d�|d d ˆd krdˆdd …dˆd ‰ˆ|fS)Ncs4ˆs|dvr|S|dks| ¡s| d¡ d¡S|S)Nz ú\Zunicode_escapeÚascii)Ú isprintabler‘r’)rŒ)r†rrÚ escape_charHs z2_Unparser._str_literal_helper..escape_charrNrMcSsg|]}|tvr|‘qSr)Ú _MULTI_QUOTES©rRÚqrrrÚ Uóz1_Unparser._str_literal_helper..csg|]}|ˆvr|‘qSrrrŒ©Úescaped_stringrrrŽVr�c3s �|] }ˆd|vr|VqdSrQrrŒ)ÚstringrrrV\s€z0_Unparser._str_literal_helper..rrLr cs|dˆdkS)Nrr r)r�r�rrr`sz/_Unparser._str_literal_helper..)rÂr‡)r^r3r_rßÚsort)r�r’r…r†rŠZpossible_quotesZquoter)r†r‘r’rÚ_str_literal_helperBs   z_Unparser._str_literal_helper©r…cCs6 |j||d�\}}|d}| |›|›|›�¡dS)Nr•r)r”r)r�r’r…Ú quote_typerrrÚ_write_str_avoiding_backslasheshsz)_Unparser._write_str_avoiding_backslashesc CsÔ| d¡|jr| ||j¡| |j¡dSg}|jD]}t|dt|ƒj ƒ}|||jƒ|  |jt |t ƒf¡qg}t }|D]\}}|j|||d�\}}|  |¡q@d |¡}|d}| |›|›|›�¡dS)NrþÚ _fstring_r„rNr)rröÚ_fstring_JoinedStrr r—rr>rr%r]rZr r$Ú _ALL_QUOTESr”r^) r�rrr&ÚmethZ new_bufferr…Z is_constantr–rrrÚvisit_JoinedStrns*      þ  z_Unparser.visit_JoinedStrcCs(| d¡| ||j¡| |j¡dS)Nrþ)rÚ_fstring_FormattedValuer r—rr rrrÚvisit_FormattedValue�s z_Unparser.visit_FormattedValuecCs.|jD]}t|dt|ƒjƒ}|||ƒqdS)Nr˜)r>rr%r])r�rrr&r›rrrr™’s  þz_Unparser._fstring_JoinedStrcCs6t|jtƒs tdƒ‚|j dd¡ dd¡}||ƒdS)Nz.Constants inside JoinedStr should be a string.ú{z{{ú}z}})r r&rGrÚreplace)r�rrr&rrrÚ_fstring_Constant—s  z_Unparser._fstring_ConstantcCsÎ|dƒt|ƒdd�}| tj ¡|j¡| |j¡}| d¡r$|dƒd|vr,tdƒ‚||ƒ|j dkrIt |j ƒ}|dvrBtd ƒ‚|d |›�ƒ|j ra|d ƒt |d t|j ƒj ƒ}||j |ƒ|d ƒdS)NrŸTrõrhr‡z5Unable to avoid backslash in f-string expression partr ZsrazUnknown f-string conversion.ú!rr˜r )r%r!rÝrârßr&r rorÚ conversionÚchrÚ format_specrr])r�rrÚunparserÚexprr¤r›rrrr��s&      z!_Unparser._fstring_FormattedValuecCó| |j¡dSr#)rr9r rrrÚ visit_Name²r z_Unparser.visit_NamecCs0| ¡|jdkr| d¡|j|jtd�dS)NÚur•)r Úkindrr—r&r‹r rrrr(µs  z_Unparser._write_docstringc Csnt|ttfƒr| t|ƒ dt¡ ddt›dt›d�¡¡dS|jr.t|tƒr.|  |¡dS| t|ƒ¡dS)NÚinfÚnanrú-r) r r(r)rr_r¡Ú_INFSTRrörGr—rµrrrÚ_write_constant»sýz_Unparser._write_constantcCsŠ|j}t|tƒr(| dd¡�| |j|¡WdƒdS1s!wYdS|dur3| d¡dS|jdkr=| d¡| |j¡dS)Nrr.ú...r«)r&r rrrr±rr¬)r�rr&rrrr¨És "ÿ  z_Unparser.visit_ConstantcóLˆ dd¡�ˆ ‡fdd„ˆj|j¡WdƒdS1swYdS)Nú[ú]crrrrr±rrr×rz&_Unparser.visit_List..)rrr%r4r rr±rÚ visit_ListÕs"ÿz_Unparser.visit_ListcCóT| dd¡�| |j¡|jD]}| |¡qWdƒdS1s#wYdS)Nr´rµ©rr%ÚeltÚ generators©r�rÚgenrrrÚvisit_ListCompÙó    ÿ"þz_Unparser.visit_ListCompcCr·rr¸r»rrrÚvisit_GeneratorExpßr¾z_Unparser.visit_GeneratorExpcCr·)NrŸr r¸r»rrrÚ visit_SetCompår¾z_Unparser.visit_SetCompcCsj| dd¡�%| |j¡| d¡| |j¡|jD]}| |¡qWdƒdS1s.wYdS)NrŸr r)rr%rÂrr&rºr»rrrÚvisit_DictCompës     ÿ"üz_Unparser.visit_DictCompcCs�|jr | d¡n| d¡| tj|j¡| |j¡| d¡|jtj ¡|j g|j ¢RŽ| |j ¡|j D] }| d¡| |¡q9dS)Nz async for z for r|ú if ) Úis_asyncrr!rÝràr4r%rârßrüÚifs)r�rZ if_clauserrrÚvisit_comprehensionós        þz_Unparser.visit_comprehensioncCs”| tj|¡�9| tj ¡|j|j¡| |j¡| d¡| |j¡| d¡| tj|j ¡| |j ¡WdƒdS1sCwYdS)NrÂz else ) rrÝrâr!rßrIrPr%rrdr rrrÚ visit_IfExps    "ùz_Unparser.visit_IfExpcs`|jr)ˆ dd¡�ˆ ‡fdd„ˆj|j¡WdƒdS1s"wYdSˆ d¡dS)NrŸr crrrrr±rrrrz%_Unparser.visit_Set..z{*()})r4rrr%rr rr±rÚ visit_Set s "ÿz_Unparser.visit_Setcsl‡fdd„‰‡‡fdd„}ˆ dd¡�ˆ ‡fdd„|t|j|jƒ¡WdƒdS1s/wYdS) Ncs"ˆ |¡ˆ d¡ˆ |¡dS©Nr©r%r)ÚkÚvr±rrÚwrite_key_value_pairs  z2_Unparser.visit_Dict..write_key_value_paircsD|\}}|durˆ d¡ˆ tj|¡ˆ |¡dSˆ||ƒdS)Nú**)rr!rÝrçr%)r~rÊrË©r�rÌrrÚ write_items  z(_Unparser.visit_Dict..write_itemrŸr crrrrr±rrr'rz&_Unparser.visit_Dict..)rrr@r=r>)r�rrÏrrÎrÚ visit_Dicts  ÿ"ÿz_Unparser.visit_DictcCsB| dd¡�| |j|j¡WdƒdS1swYdSr)rrr%r4r rrrÚ visit_Tuple*s"ÿz_Unparser.visit_Tupleú~Únotú+r¯)ZInvertZNotr-r.)rÓrÒrÔr¯cCs„|j|jjj}|j|}| ||¡�%| |¡|tjur#| d¡|  ||j ¡|  |j ¡WdƒdS1s;wYdS©Nrh) Úunopr,r\r]Úunop_precedencerrrÝrîr!r/r%)r�rÚoperatorÚoperator_precedencerrrÚ visit_UnaryOp6s    "ùz_Unparser.visit_UnaryOprrjú/ú%ú<<ú>>ú|ú^ú&ú//rÍ) rArBZMultZMatMultZDivZModZLShiftZRShiftZBitOrZBitXorZBitAndZFloorDivZPow) rÔr¯rrjrÛrÜrÝrÞrßràrárârÍ)rÍcCs¶|j|jjj}|j|}| ||¡�>||jvr | ¡}|}n|}| ¡}| ||j ¡|  |j ¡|  d|›d�¡| ||j ¡|  |j ¡WdƒdS1sTwYdSrÕ) r@r,r\r]Úbinop_precedencerÚ binop_rassocrßr!rCr%rrD)r�rrØrÙZleft_precedenceZright_precedencerrrÚ visit_BinOpcs   "ôz_Unparser.visit_BinOpz==z!=úz>=Úiszis notÚinznot in) ZEqZNotEqZLtZLtEZGtZGtEZIsZIsNotZInZNotIncCsœ| tj|¡�=|jtj ¡|jg|j¢RŽ| |j¡t|j |jƒD]\}}|  d|j |j j d¡| |¡q$WdƒdS1sGwYdSrÕ)rrÝrær!rßrCÚ comparatorsr%r@ÚopsrÚcmpopsr\r])r�rÚororrrÚ visit_Compare�s  þ"ýz_Unparser.visit_CompareÚandÚor)ZAndZOr)rïrðcs€ˆj|jjj}ˆj|‰‡‡fdd„}ˆ ˆ|¡�d|›d�‰ˆ ‡‡fdd„||j¡WdƒdS1s9wYdS)Ncs"ˆ ¡‰ˆ ˆ|¡ˆ |¡dSr#)rßr!r%r*)rÙr�rrÚincreasing_level_traverse�s z9_Unparser.visit_BoolOp..increasing_level_traverserhcs ˆ ˆ¡Sr#rr)r…r�rrr˜rz(_Unparser.visit_BoolOp..)Úboolopsr,r\r]Úboolop_precedencerrr>)r�rrØrñr)rÙr…r�rÚ visit_BoolOpŒs  "þz_Unparser.visit_BoolOpcCsZ| tj|j¡| |j¡t|jtƒr t|jjtƒr | d¡| d¡| |j ¡dS)Nrhr:) r!rÝrñr&r%r r$r'rrrr rrrÚvisit_Attributešs    z_Unparser.visit_AttributecCs¦| tj|j¡| |j¡| dd¡�5d}|jD]}|r$| d¡nd}| |¡q|jD]}|r9| d¡nd}| |¡q/WdƒdS1sLwYdS)NrrFrOT) r!rÝrñr7r%rr:rr;)r�rrnrorrrÚ visit_Call¥s        û"øz_Unparser.visit_CallcCs�dd„}| tj|j¡| |j¡| dd¡�&||jƒr(| |j|jj¡n| |j¡WdƒdSWdƒdS1sAwYdS)NcSs&t|tƒo|jotdd„|jDƒƒ S)Ncss�|]}t|tƒVqdSr#)r ZStarred)rRr¹rrrrV¿s€zE_Unparser.visit_Subscript..is_simple_tuple..)r r2r4Úany)Z slice_valuerrrÚis_simple_tuple¸s ÿýz2_Unparser.visit_Subscript..is_simple_tupler´rµ) r!rÝrñr&r%rrÏrr4)r�rrørrrÚvisit_Subscript·s  ü"þz_Unparser.visit_SubscriptcCs*| d¡| tj|j¡| |j¡dS)Nr)rr!rÝrçr&r%r rrrÚ visit_StarredÊs z_Unparser.visit_StarredcCrF)Nr²rr rrrÚvisit_EllipsisÏrJz_Unparser.visit_EllipsiscCsR|jr | |j¡| d¡|jr| |j¡|jr'| d¡| |j¡dSdS)Nr)Úlowerr%rÚupperÚstepr rrrÚ visit_SliceÒs    þz_Unparser.visit_SlicecCsZ| d¡| |j¡| ¡�|jD]}| |¡qWdƒdS1s&wYdS)Nzmatch )r r%ÚsubjectrÚcases)r�rÚcaserrrÚ visit_MatchÜs     ÿ"ÿz_Unparser.visit_MatchcCs0| |j¡|jr| d¡| |j¡dSdSrÈ)rÚargrBr%r rrrÚ visit_argãó  þz_Unparser.visit_argc Csžd}|j|j}dgt|ƒt|jƒ|j}tt||ƒdƒD]/\}}|\}}|r,d}n| d¡| |¡|rB| d¡| |¡|t|jƒkrN| d¡q|jsU|j r~|rZd}n| d¡| d¡|jr~| |jj ¡|jj r~| d¡| |jj ¡|j r£t|j |j ƒD]\}}| d¡| |¡|r¢| d¡| |¡qˆ|j rË|r«d}n| d¡| d |j j ¡|j j rÍ| d¡| |j j ¡dSdSdS) NTrLFrOú=z, /rrrÍ)Ú posonlyargsr:r<ÚdefaultsÚ enumerater@rr%ÚvarargÚ kwonlyargsrrBÚ kw_defaultsÚkwarg) r�rr”Zall_argsr r¿ÚelementsÚaÚdrrrÚvisit_argumentsésV      €        €  øz_Unparser.visit_argumentscCs<|jdur | d¡n | |j¡| d¡| |j¡dS)NrÍr)rrr%r&r rrrÚ visit_keywords    z_Unparser.visit_keywordcCsp| tj|¡�'| d¡| |j¡| d¡| tj|j¡| |j¡WdƒdS1s1wYdS)Nzlambda r)rrÝrârr%r:r!rIr rrrÚ visit_Lambda$s   "ûz_Unparser.visit_LambdacCs*| |j¡|jr| d|j¡dSdS©Nrh)rrcÚasnamer rrrÚ visit_alias,s ÿz_Unparser.visit_aliascCs0| |j¡|jr| d¡| |j¡dSdSr)r%Ú context_exprÚ optional_varsrr rrrÚvisit_withitem1rz_Unparser.visit_withitemcCsl| d¡| |j¡|jr| d¡| |j¡| ¡�| |j¡WdƒdS1s/wYdS)Nzcase rÂ)r r%ÚpatternÚguardrrrIr rrrÚvisit_match_case7s     "ÿz_Unparser.visit_match_casecCr©r#)r%r&r rrrÚvisit_MatchValue@r z_Unparser.visit_MatchValuecCr©r#)r±r&r rrrÚvisit_MatchSingletonCr z_Unparser.visit_MatchSingletoncr³)Nr´rµcrrrrr±rrrIrz/_Unparser.visit_MatchSequence..)rrr%Úpatternsr rr±rÚvisit_MatchSequenceFs ÿ"ÿz_Unparser.visit_MatchSequencecCs&|j}|dur d}| d|›�¡dS)NÚ_r)rcr)r�rrcrrrÚvisit_MatchStarLsz_Unparser.visit_MatchStarc s¢‡fdd„}ˆ dd¡�;|j}ˆ ‡fdd„|t||jdd�¡|j}|dur?|r/ˆ d ¡ˆ d |›�¡WdƒdSWdƒdS1sJwYdS) Ncs*|\}}ˆ |¡ˆ d¡ˆ |¡dSrÈrÉ)ÚpairrÊÚpr±rrÚwrite_key_pattern_pairSs  z<_Unparser.visit_MatchMapping..write_key_pattern_pairrŸr crrrrr±rrr\rz._Unparser.visit_MatchMapping..T©ÚstrictrOrÍ)rr=rr@r Úrestr)r�rr&r=r)rr±rÚvisit_MatchMappingRs  ý õ"øz_Unparser.visit_MatchMappingc sˆ tj|j¡ˆ |j¡ˆ dd¡�C|j}ˆ ‡fdd„ˆj|¡|j}|rO‡fdd„}|r6ˆ  d¡ˆ ‡fdd„|t ||j d d �¡WdƒdSWdƒdS1sZwYdS) Nrrcrrrrr±rrrlrz,_Unparser.visit_MatchClass..cs&|\}}ˆ |›d�¡ˆ |¡dS)Nr)rr%)r$rrrr±rrÚwrite_attr_patternpsz6_Unparser.visit_MatchClass..write_attr_patternrOcrrrrr±rrrxrTr') r!rÝrñrbr%rr rÚ kwd_attrsrr@Ú kwd_patterns)r�rr Zattrsr+rr±rÚvisit_MatchClassfs( ÿ   ýò"úz_Unparser.visit_MatchClasscCsœ|j}|j}|dur| d¡dS|dur| |j¡dS| tj|¡� | tj|j¡| |j¡| d|j›�¡WdƒdS1sGwYdS)Nr"rh) rcrrrrÝrâr!rèr%)r�rrcrrrrÚ visit_MatchAs}s "ýz_Unparser.visit_MatchAscshˆ tj|¡�#ˆjtj ¡g|j¢RŽˆ ‡fdd„ˆj|j¡WdƒdS1s-wYdS)Ncr)Nz | rrr±rrr�rz)_Unparser.visit_MatchOr..)rrÝrèr!rßr rr%r rr±rÚ visit_MatchOrŠs"þz_Unparser.visit_MatchOr)rN)€r]r©rªrºrrr r rr Úpropertyrrrrrrrr!r"r$r%r r)r.r2r3r5r8r<r?rArCrErIrLrNrOrQrSrTrWrZr[r_rfrirprurvrtrzr{ryr}r~r�rƒršr”r—rœržr™r¢r�rªr(r±r¨r¶r½r¿rÀrÁrÅrÆrÇrÐrÑrÖrÝrårîr×rÚr@rìrírërèrérêrïrãÚ frozenseträrårìrîròrärãrórôrõrörùrúrûrÿrrrrrrrrrrr!r#r*r.r/r0Ú __classcell__rrr'rrô©s4              ÿ&   ü óóö   3  rôcCstƒ}| |¡Sr#)rôr )Zast_objr§rrrÚunparse�s r4cCsäddl}|jdd�}|jd|jdd�ddd d �|jd d d ddd�|jddddd�|jddddd�|jddtddd�| ¡}|j� }| ¡}Wdƒn1sTwYt||jj |j |j d �}t t ||j|jd!�ƒdS)"Nrz python -m ast)ÚprogÚinfileÚrbrú?r¯z$the file to parse; defaults to stdin)r%ÚnargsÚdefaultÚhelpz-mz--moder)rZsinglerZ func_typez(specify what kind of code must be parsed)r:Úchoicesr;z--no-type-commentsTZ store_falsez)don't add information about type comments)r:Úactionr;z-az--include-attributesÚ store_truez:include attributes such as line numbers and column offsets)r=r;z-iz--indentrPz'indentation of nodes (number of spaces))r%r:r;)r )rgrK)ÚargparseÚArgumentParserÚ add_argumentZFileTyper'Ú parse_argsr6ÚreadrrcrZno_type_commentsÚprintrjrgrK)r?Úparserr:r6rZtreerrrÚmain”s2 þ þ ÿ ÿ ÿ ÿrFÚ__main__)rr)TF)rL)T)JÚsysZ_astÚ contextlibrrÚenumrrrrJrjrsrxr{r}rtrˆr�r�r•ryÚobjectršr¬rnr$r²r¶r1rzr…r%r¸rÄrÆr„rËrÌrÍr'r(r)rGÚbytesÚboolr»r¼r¢rWrÏrÒrÔr2r×rØrÕÚmodrÙZ expr_contextrÚrÛrÜr_Ú float_infoÚ max_10_expr°rÝZ_SINGLE_QUOTESr‹ršrôr4rFr]rrrrÚs  ÿ;C #  %: <      ûÿø   m  ÿ