o ?Og@s ddlZddlTddlmZmZddlmZmZd_dddd d Zd d Z d`ddddZ ddZ ddZ daddZ ddZddZdbddZddZd d!Zdd"d#d$Zd%d&ZGd'd(d(eZGd)d*d*eZeed+sd,d-Zd.d/Zeeee_eeee_Gd0d1d1eZ d2d3Z!Gd4d5d5ee d6Z"Gd7d8d8ee d6Z#Gd9d:d:ee d6Z$Gd;d<dd>ee d6Z&e"e'e(e)fe#e*fe$e+fe%ede,fe&ed?fiZ-e"e,fiZ.e,diZ/Gd@dAdAe0Z1GdBdCdCe1Z2GdDdEdEe1Z3ee4dFs!dGdHZ5dIdJZ6ee5e6e4_7GdKdLdLe8Z9GdMdNdNe:Z;GdOdPdPe:Zej?j@dZAGdTdUdUeZBdVZCdWZDgeCeDRZEGdXdYdYeZFdZd[ZGd\d]ZHeId^krxeHdSdS)cN)*)contextmanager nullcontext)IntEnumauto execF) type_commentsfeature_versioncCsH t}|r |tO}t|tr|\}}|}n|durd}t|||||dS)N)_feature_version)Z PyCF_ONLY_ASTZPyCF_TYPE_COMMENTS isinstancetuplecompile)sourcefilenamemoder r flagsmajorminorr*/opt/alt/python310/lib64/python3.10/ast.pyparse!s  rcsh t|trt|ddd}t|tr|j}ddfddfdd fd d |S) Nz evalrcSs4d}t|dd}r|d|7}t|d|)Nzmalformed node or stringlinenoz on line : )getattr ValueError)nodemsglnorrr_raise_malformed_nodeCsz+literal_eval.._raise_malformed_nodecs,t|trt|jtttfvr||jSN)r Constanttypevalueintfloatcomplexr)r"rr _convert_numHsz"literal_eval.._convert_numcsDt|trt|jttfr|j}t|jtr| S| S|Sr#)r ZUnaryOpopUAddUSuboperand)rr/)r+rr_convert_signed_numLs   z)literal_eval.._convert_signed_numcsLt|tr|jSt|trtt|jSt|tr"tt|jSt|t r/t t|jSt|t rOt|j t rO|j jdkrO|j|jkrNgkrOt St|trqt|jt|jkrb|ttt|jt|jSt|trt|jttfr|j}|j}t|ttfrt|trt|jtr||S||S|S)Nset) r r$r&TuplermapeltsZListlistSetr1ZCallfuncNameidargskeywordsZDictlenkeysvaluesdictzipZBinOpr,AddSubleftrightr'r(r))rrCrD_convertr+r0r"rrrFTs4    "     zliteral_eval.._convert)r strrlstripZ Expressionbody)Znode_or_stringrrEr literal_eval6s    rJT)indentcsV dfdd t|tstd|jjdur%tts%d|dS)Nrc sdurd7d}d}nd}d}t|trt|}g}d}}|jD]@}zt||} Wn ty?d}Yq+w| durOt||ddurOd}q+| \} } |oY| }|rf|d|| fq+|| q+r|jr|jD]4}zt||} Wn tyYqtw| durt||ddurqt| \} } |o| }|d|| fqt|rt|d krd |j j d |f| fSd |j j || |fd fSt|t r|sd Sd|| fdd|Dfd fSt |dfS)N z, , T.z%s=%sz%s(%s)z%s(%s%s)F)z[]Tz[%s%s]c3s|] }|dVqdSrNr).0x)_formatlevelrr sz(dump.._format..)r ASTr%_fieldsrAttributeErrorappend _attributesr< __class____name__joinr5repr) rrUprefixsepclsr:Z allsimpler;namer&simplerTannotate_fieldsinclude_attributesrK)rUrrT}s\         & zdump.._formatzexpected AST, got %r )r)r rW TypeErrorr\r]rG)rrfrgrKrrerdumpqs 0 rjcCsX dD]&}||jvr)||jvr)t||d}|dus#t||r)|dr)t|||q|S)N)r col_offset end_linenoend_col_offsetZend_)r[rhasattr startswithsetattr)new_nodeZold_nodeattrr&rrr copy_locations  rscs" fdd|dddd|S)Ncsd|jvrt|ds||_n|j}d|jvr%t|dddur"||_n|j}d|jvr6t|ds3||_n|j}d|jvrJt|dddurG||_n|j}t|D] }|||||qNdS)Nrrlrkrm)r[rnrrrlrkrmiter_child_nodes)rrrkrlrmchild_fixrrrws&       z#fix_missing_locations.._fixrLrrr*rrvrfix_missing_locationss rxrLcCsv t|D]3}t|trt|dd||_qd|jvr$t|dd||_d|jvr8t|dd}dur8|||_q|S)Nrrrl)walkr Z TypeIgnorerrr[rl)rnrurlrrrincrement_linenos     r{c cs: |jD]}z |t||fVWqtyYqwdSr#)rXrrY)rfieldrrr iter_fieldss  r}ccsP t|D]\}}t|tr|Vqt|tr%|D] }t|tr$|VqqdSr#)r}r rWr5)rrcr|itemrrrrt s   rtcCs t|ttttfstd|jj|jrt|jdt sdS|jdj }t|t r.|j }nt|t r=t|j tr=|j }ndS|rJddl}||}|S)Nz%r can't have docstringsr)r AsyncFunctionDef FunctionDefClassDefModulerir\r]rIExprr&Strsr$rGinspectZcleandoc)rZcleantextrrrr get_docstrings   rcCs d}g}d}|t|krB||}||7}|d7}|dkr1|t|kr1||dkr1|d7}|d7}|dvr<||d}|t|ks |rI|||S)NrrNrL rMz )r<rZ)ridxlinesZ next_linecrrr_splitlines_no_ff3s$     rcCs. d}|D]}|dvr||7}q|d7}q|S)NrNz rhr)rresultrrrr_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) rlrmrrkrYrencodedecoderinsertrZr^) rrrrrlrkrmrZpaddingfirstZlastrrrget_source_segmentWs.       rccsF ddlm}||g}|r!|}|t||V|sdSdS)Nr)deque) collectionsrpopleftextendrt)rrZtodorrrry|s   ryc@s&eZdZ ddZddZddZdS) NodeVisitorcCs$ d|jj}t|||j}||S)Nvisit_)r\r]r generic_visit)selfrmethodvisitorrrrvisits zNodeVisitor.visitcCsV t|D]#\}}t|tr|D] }t|tr||qqt|tr(||qdSr#)r}r r5rWr)rrr|r&r~rrrrs     zNodeVisitor.generic_visitc Cs|j}tt|}|dur tD] \}}t||r|}nq|durKd|}zt||}Wn ty8Ynwddl}| |dt d||S| |S)Nrrz" is deprecated; add visit_Constant) r&_const_node_type_namesgetr%itemsr rrYwarningswarnDeprecationWarningr) rrr&Z type_namerbrcrrrrrrvisit_Constants*    zNodeVisitor.visit_ConstantN)r] __module__ __qualname__rrrrrrrrs  rc@eZdZ ddZdS)NodeTransformercCst|D]P\}}t|tr:g}|D]!}t|tr-||}|dur"qt|ts-||q||q||dd<qt|trT||}|durNt||qt|||q|Sr#) r}r r5rWrrrZdelattrrp)rrr| old_valueZ new_valuesr&rqrrrrs(          zNodeTransformer.generic_visitN)r]rrrrrrrrs #rrzcC |jSr#r&rrrr_getterrcC ||_dSr#rrr&rrr_setter rc@seZdZddZddZdS)_ABCcGs d|_dS)Nz3Deprecated AST node class. Use ast.Constant instead)__doc__)rbr:rrr__init__rz _ABC.__init__cCsdt|tsdS|tvr,z|j}Wn tyYdSwt|t|o+t|t|d St||S)NFr) r r$ _const_typesr&rY_const_types_notrr%__instancecheck__)rbinstr&rrrrs    z_ABC.__instancecheck__N)r]rrrrrrrrrs rcOsp|D]}||jvr q|j|}|t|kr t|jd|q|tvr,t|i|Stj|g|Ri|S)Nz" got multiple values for argument )rXindexr<rir]rr$__new__)rbr:kwargskeyposrrr_new"s   rc@eZdZdZeZdS)Num)rzNr]rrrXrrrrrrr.r) metaclassc@r)rrNrrrrrr2rrc@r)BytesrNrrrrrr6rrc@seZdZeZdS) NameConstantN)r]rrrrrrrrr:src@seZdZdZddZdS)EllipsisrcOs6|turtdg|Ri|Stj|g|Ri|S)N.)rr$r)rbr:rrrrr@szEllipsis.__new__N)r]rrrXrrrrrr=s r.c@ eZdZdS)sliceNr]rrrrrrr[rc@r)IndexcKs|Sr#r)rbr&rrrrr`sz Index.__new__Nr]rrrrrrrr^s rc@seZdZ dddZdS)ExtSlicercKstt|tfi|Sr#)r2r5ZLoad)rbdimsrrrrreszExtSlice.__new__N)rrrrrrrcsrrcCrr#r4rrrr _dims_gettermrrcCrr#rrrrr _dims_setterqrrc@r)SuiteNrrrrrrvrrc@r)AugLoadNrrrrrryrrc@r)AugStoreNrrrrrr|rrc@r)ParamNrrrrrrrrZ1ec@seZdZ eZeZeZeZeZeZ eZ eZ e Z eZ eZeZeZeZeZeZeZeZddZdS) _PrecedencecCs(z||dWSty|YSwNrL)r\rrrrrnexts  z_Precedence.nextN)r]rrrTUPLEYIELDTESTORANDNOTCMPEXPRBORBXORBANDSHIFTARITHTERMFACTORPOWERAWAITATOMrrrrrrs* r)'")z"""z'''cseZdZ ddddZddZddZd d Zdd d ZddZddZ e ddZ e ddddZ e ddZddZddZddZd d!Zd"d#Zd$d%Zfd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zdd?Z!d@dAZ"dBdCZ#dDdEZ$dFdGZ%dHdIZ&dJdKZ'dLdMZ(dNdOZ)dPdQZ*dRdSZ+dTdUZ,dVdWZ-dXdYZ.dZd[Z/d\d]Z0d^d_Z1d`daZ2dbdcZ3dddeZ4dfdgZ5dhdiZ6djdkZ7dldmZ8dndoZ9e:ddpdqdrZ;e:dsdtduZdzd{Z?d|d}Z@d~dZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOdddddZPeQjReQjSeQjSeQjSdZTddZUdddddddddddddd ZVeQjWeQjWeQjXeQjXeQjXeQjXeQjYeQjYeQjZeQj[eQj\eQjXeQj]d Z^e_dZ`ddZaddddddddddd ZbddZcdddÜZdeQjeeQjfdĜZgddƄZhddȄZiddʄZjdd̄Zkdd΄ZlddЄZmdd҄ZnddԄZoddքZpdd؄ZqddڄZrdd܄ZsddބZtddZuddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ZS) _UnparserF_avoid_backslashescCs(g|_g|_i|_i|_d|_||_dS)Nr)_source_buffer _precedences _type_ignores_indentr)rrrrrrs  z_Unparser.__init__cCsL t|}z|t|Wn tyYdSw|D] }|||qdSr#)iterr StopIteration)rZinterfseqrSrrr interleaves  z_Unparser.interleavecsB t|dkr||dddSfdd||dS)NrLr,c dSNrOwriterrrr z&_Unparser.items_view..)r<rr)rZ traverserrrrr items_views   z_Unparser.items_viewcCs |jr |ddSdS)NrM)rrrrrr maybe_newlinesz_Unparser.maybe_newlinerNcCs" ||d|j|dS)Nz )r rrrrrrrfillsz_Unparser.fillcCs |j|dSr#)rrZr rrrrsz_Unparser.writecCs|j|dSr#)rrZr rrr buffer_writerz_Unparser.buffer_writercCsd|j}|j|SNrN)r^rclearrrrrbuffers  z_Unparser.bufferNextraccsB |d|r|||jd7_dV|jd8_dS)N:rL)rr)rrrrrblocks  z_Unparser.blockccs" ||dV||dSr#r)rstartendrrrdelimits  z_Unparser.delimitcCs|r|||StSr#)rr)rrr conditionrrr delimit_ifs z_Unparser.delimit_ifcCs |dd|||kSN())rget_precedence)r precedencerrrrrequire_parenssz_Unparser.require_parenscCs|j|tjSr#)rrrrrrrrrrr z_Unparser.get_precedencecGs|D]}||j|<qdSr#)r)rrZnodesrrrrset_precedences z_Unparser.set_precedencecCsf t|ttttfrt|jdkrdS|jd}t|tsdS|j}t|t r/t|jt r1|SdSdS)NrLr) r rrrrr<rIrr&r$rGr rrrget_raw_docstring s   z_Unparser.get_raw_docstringcCs*|j|jp |j}|durd|SdS)Nz # type: )rrr type_comment)rrZcommentrrrget_type_comments z_Unparser.get_type_commentcs2t|tr|D]}||qdSt|dSr#)r r5traversesuperr)rrr~r\rrr%!s  z_Unparser.traversecCs g|_||d|jSr)rr%r^r rrrr+s  z_Unparser.visitcCs@||}r||||jdddS||jdSr)r"_write_docstringr%rI)rrZ docstringrrr"_write_docstring_and_traverse_body2s z,_Unparser._write_docstring_and_traverse_bodycCs*dd|jD|_|||jdS)NcSsi|] }|jd|jqS)ignore)rtag)rRr*rrr :sz*_Unparser.visit_Module..) type_ignoresrr)rr rrr visit_Module9s  z_Unparser.visit_Modulecs`ddfddj|jWdn1swYd|jdS)NrrcrrrrrrrrDrz._Unparser.visit_FunctionType.. -> )rrr%argtypesrreturnsr rrrvisit_FunctionTypeAs z_Unparser.visit_FunctionTypecCs(||tj|j||jdSr#)r r!rrr&r%r rrr visit_ExprJsz_Unparser.visit_ExprcCsj|tj|$|tj|j|j||j|d||jWddS1s.wYdS)Nz := ) rrrr!rtargetr&r%rr rrrvisit_NamedExprOs   "z_Unparser.visit_NamedExprc(dfddj|jdS)Nzimport crrrrrrrrXrz(_Unparser.visit_Import..)r rr%namesr rrr visit_ImportV z_Unparser.visit_ImportcsXdd|jp d|jr|jdfddj|jdS)Nzfrom .rz import crrrrrrrr`rz,_Unparser.visit_ImportFrom..)r rrUmodulerr%r7r rrrvisit_ImportFromZs   z_Unparser.visit_ImportFromcCsT||jD] }|||dq||j||}r(||dSdS)N = )r targetsr%rr&r$)rrr4r#rrr visit_Assignbs    z_Unparser.visit_AssigncCsB|||j|d|j|jjjd||jdS)Nrhz= ) r r%r4rbinopr,r\r]r&r rrrvisit_AugAssignks z_Unparser.visit_AugAssigncCs||dd|j ot|jt||jWdn1s$wY|d||j|j rD|d||j dSdS)Nrrrr=) r rrdr r4r8r%r annotationr&r rrrvisit_AnnAssignqs    z_Unparser.visit_AnnAssigncCs.|d|jr|d||jdSdS)Nreturnrh)r r&rr%r rrr visit_Return{s  z_Unparser.visit_ReturncC|ddS)Npassr r rrr visit_Passz_Unparser.visit_PasscCrF)NbreakrHr rrr visit_BreakrJz_Unparser.visit_BreakcCrF)NcontinuerHr rrrvisit_ContinuerJz_Unparser.visit_Continuecr6)Nzdel crrrrrrrrrz(_Unparser.visit_Delete..)r rr%r>r rrr visit_Deleter9z_Unparser.visit_DeletecCs:|d||j|jr|d||jdSdS)Nzassert rO)r r%testr rr rrr visit_Asserts   z_Unparser.visit_Assertcr6)Nzglobal crrrrrrrrrz(_Unparser.visit_Global..r rrr7r rrr visit_Globalr9z_Unparser.visit_Globalcr6)Nz nonlocal crrrrrrrrrz*_Unparser.visit_Nonlocal..rRr rrrvisit_Nonlocalr9z_Unparser.visit_NonlocalcCz|tj|,|d|jr+|d|tj|j||jWddSWddS1s6wYdS)Nawaitrh)rrrrr&r!rr%r rrr visit_Await  "z_Unparser.visit_AwaitcCrU)Nyieldrh)rrrrr&r!rr%r rrr visit_YieldrXz_Unparser.visit_YieldcCsh|tj|#|d|jstd|tj|j||jWddS1s-wYdS)Nz yield from z-Node can't be used without a value attribute.) rrrrr&rr!rr%r rrrvisit_YieldFroms "z_Unparser.visit_YieldFromcCs\|d|js|jrtddS|d||j|jr,|d||jdSdS)Nraisez*Node can't use cause without an exception.rhz from )r exccauserrr%r rrr visit_Raises    z_Unparser.visit_RaisecCs|d|||jWdn1swY|jD]}||q"|jrL|d|||jWdn1sGwY|jrq|d|||jWddS1sjwYdSdS)Ntryelsefinally)r rr%rIhandlersorelse finalbody)rrZexrrr visit_Trys"        "z_Unparser.visit_TrycCs||d|jr|d||j|jr!|d||j|||jWddS1s7wYdS)Nexceptrh as )r r%rr%rcrrIr rrrvisit_ExceptHandlers      "z_Unparser.visit_ExceptHandlercCs||jD] }|d||q|d|j|jdd|jp%|jd4d}|jD]}|r8|dnd}||q.|jD]}|rM|dnd}||qCWdn1s_wY| | |WddS1sywYdS) N@zclass rr)rFrOT) r decorator_listr r%rcrbasesr;rrr))rrdecocommaerrrvisit_ClassDefs,           "z_Unparser.visit_ClassDefcC||ddS)Ndef_function_helperr rrrvisit_FunctionDefr z_Unparser.visit_FunctionDefcCrq)Nz async defrsr rrrvisit_AsyncFunctionDefr z _Unparser.visit_AsyncFunctionDefcCs||jD] }|d||q|d|j}|||dd||jWdn1s7wY|jrJ|d||j|j | |d| |WddS1sdwYdS)Nrjrhrrr/r) r rkr r%rcrr:r1rrr$r))rrZ fill_suffixrmZdef_strrrrrts       "z_Unparser._function_helpercC|d|dS)Nzfor  _for_helperr rrr visit_Forr z_Unparser.visit_ForcCrw)Nz async for rxr rrrvisit_AsyncFor r z_Unparser.visit_AsyncForcCs||||j|d||j|j||d||jWdn1s0wY|jrZ|d|||jWddS1sSwYdSdS)N in rra) r r%r4rrrr$rIrd)rr rrrrrys      "z_Unparser._for_helpercCs4|d||j|||jWdn1s wY|jrst|jdkrst|jdtrs|jd}|d||j|||jWdn1s\wY|jrst|jdkrst|jdts7|jr|d|||jWddS1swYdSdS)Nzif rLrzelif ra) r r%rPrrIrdr<r ZIfr rrrvisit_Ifs&   $    $  "z_Unparser.visit_IfcCs|d||j|||jWdn1s wY|jrJ|d|||jWddS1sCwYdSdS)Nzwhile ra)r r%rPrrIrdr rrr visit_While,s     "z_Unparser.visit_Whilechdfddj|jj|d|jWddS1s-wYdS)Nzwith crrrrrrrr8rz&_Unparser.visit_With..rr rr%rrr$rIr rrr visit_With6 "z_Unparser.visit_Withcr)Nz async with crrrrrrrr>rz+_Unparser.visit_AsyncWith..rrr rrrvisit_AsyncWith<rz_Unparser.visit_AsyncWith quote_typesescape_special_whitespacecs fdd}dt||}dvrdd|D}fdd|D}|sBttfdd |Dd }d d |gfSrd|jfd dd|d d d krddd dd |fS)Ncs4s|dvr|S|dks|s|ddS|S)Nz \Zunicode_escapeascii) isprintablerr)r)rrr escape_charHs z2_Unparser._str_literal_helper..escape_charrNrMcSsg|]}|tvr|qSr) _MULTI_QUOTESrRqrrr Uz1_Unparser._str_literal_helper..csg|]}|vr|qSrrrescaped_stringrrrVrc3s |] }d|vr|VqdSrQrr)stringrrrV\sz0_Unparser._str_literal_helper..rrLr cs|ddkS)Nrr r)rrrrr`sz/_Unparser._str_literal_helper..)rr)r^r3r_rsort)rrrrrZpossible_quotesZquoter)rrrr_str_literal_helperBs   z_Unparser._str_literal_helperrcCs6 |j||d\}}|d}||||dS)Nrr)rr)rrr quote_typerrr_write_str_avoiding_backslasheshsz)_Unparser._write_str_avoiding_backslashesc Cs|d|jr|||j||jdSg}|jD]}t|dt|j }|||j| |jt |t fqg}t }|D]\}}|j|||d\}}| |q@d|}|d}||||dS)Nr _fstring_rrNr)rr_fstring_JoinedStrr rrr>rr%r]rZr r$ _ALL_QUOTESrr^) rrrr&methZ new_bufferrZ is_constantrrrrvisit_JoinedStrns*       z_Unparser.visit_JoinedStrcCs(|d|||j||jdS)Nr)r_fstring_FormattedValuer rrr rrrvisit_FormattedValues z_Unparser.visit_FormattedValuecCs.|jD]}t|dt|j}|||qdS)Nr)r>rr%r])rrrr&rrrrrs  z_Unparser._fstring_JoinedStrcCs6t|jts td|jdddd}||dS)Nz.Constants inside JoinedStr should be a string.{z{{}z}})r r&rGrreplace)rrrr&rrr_fstring_Constants  z_Unparser._fstring_ConstantcCs|dt|dd}|tj|j||j}|dr$|dd|vr,td|||j dkrIt |j }|dvrBtd |d ||j ra|d t |d t|j j }||j ||d dS)NrTrrhrz5Unable to avoid backslash in f-string expression partr ZsrazUnknown f-string conversion.!rrr)r%r!rrrr&rror conversionchr format_specrr])rrrunparserexprrrrrrrs&      z!_Unparser._fstring_FormattedValuecC||jdSr#)rr9r rrr visit_Namer z_Unparser.visit_NamecCs0||jdkr|d|j|jtddS)Nur)r kindrrr&rr rrrr(s  z_Unparser._write_docstringc Csnt|ttfr|t|dtddtdtddS|jr.t|tr.| |dS|t|dS)Ninfnanr-r) r r(r)rr_r_INFSTRrrGrrrrr_write_constantsz_Unparser._write_constantcCs|j}t|tr(|dd||j|WddS1s!wYdS|dur3|ddS|jdkr=|d||jdS)Nrr....r)r&r rrrrrr)rrr&rrrrs "  z_Unparser.visit_ConstantcLddfddj|jWddS1swYdS)N[]crrrrrrrrrz&_Unparser.visit_List..)rrr%r4r rrr visit_Lists"z_Unparser.visit_ListcCT|dd||j|jD]}||qWddS1s#wYdS)Nrrrr%elt generatorsrrgenrrrvisit_ListComp    "z_Unparser.visit_ListCompcCrrrrrrrvisit_GeneratorExprz_Unparser.visit_GeneratorExpcCr)Nrrrrrrr visit_SetComprz_Unparser.visit_SetCompcCsj|dd%||j|d||j|jD]}||qWddS1s.wYdS)Nrrr)rr%rrr&rrrrrvisit_DictComps     "z_Unparser.visit_DictCompcCs|jr |dn|d|tj|j||j|d|jtj|j g|j R||j |j D] }|d||q9dS)Nz async for z for r| if ) is_asyncrr!rrr4r%rrrifs)rrZ if_clauserrrvisit_comprehensions        z_Unparser.visit_comprehensioncCs|tj|9|tj|j|j||j|d||j|d|tj|j ||j WddS1sCwYdS)Nrz else ) rrrr!rrIrPr%rrdr rrr visit_IfExps    "z_Unparser.visit_IfExpcs`|jr)ddfddj|jWddS1s"wYdSddS)Nrrcrrrrrrrrrz%_Unparser.visit_Set..z{*()})r4rrr%rr rrr visit_Set s "z_Unparser.visit_Setcslfddfdd}ddfdd|t|j|jWddS1s/wYdS) Ncs"|d|dSNrr%r)kvrrrwrite_key_value_pairs  z2_Unparser.visit_Dict..write_key_value_paircsD|\}}|durdtj||dS||dS)N**)rr!rrr%)r~rrrrrr write_items  z(_Unparser.visit_Dict..write_itemrrcrrrrrrrr'rz&_Unparser.visit_Dict..)rrr@r=r>)rrrrrr visit_Dicts  "z_Unparser.visit_DictcCsB|dd||j|jWddS1swYdSr)rrr%r4r rrr visit_Tuple*s"z_Unparser.visit_Tuple~not+r)ZInvertZNotr-r.)rrrrcCs|j|jjj}|j|}|||%|||tjur#|d| ||j | |j WddS1s;wYdSNrh) unopr,r\r]unop_precedencerrrrr!r/r%)rroperatoroperator_precedencerrr visit_UnaryOp6s    "z_Unparser.visit_UnaryOprrj/%<<>>|^&//r) rArBZMultZMatMultZDivZModZLShiftZRShiftZBitOrZBitXorZBitAndZFloorDivZPow) rrrrjrrrrrrrrr)rcCs|j|jjj}|j|}|||>||jvr |}|}n|}|}|||j | |j | d|d|||j | |j WddS1sTwYdSr) r@r,r\r]binop_precedencer binop_rassocrr!rCr%rrD)rrrrZleft_precedenceZright_precedencerrr visit_BinOpcs   "z_Unparser.visit_BinOpz==z!=z>=iszis notinznot in) ZEqZNotEqZLtZLtEZGtZGtEZIsZIsNotZInZNotIncCs|tj|=|jtj|jg|jR||jt|j |jD]\}}| d|j |j j d||q$WddS1sGwYdSr)rrrr!rrC comparatorsr%r@opsrcmpopsr\r])rrororrr visit_Compares  "z_Unparser.visit_Compareandor)ZAndZOr)rrcsj|jjj}j|fdd}|d|dfdd||jWddS1s9wYdS)Ncs"||dSr#)rr!r%r*)rrrrincreasing_level_traverses z9_Unparser.visit_BoolOp..increasing_level_traverserhcs Sr#rr)rrrrrrz(_Unparser.visit_BoolOp..)boolopsr,r\r]boolop_precedencerrr>)rrrrr)rrrr visit_BoolOps  "z_Unparser.visit_BoolOpcCsZ|tj|j||jt|jtr t|jjtr |d|d||j dS)Nrhr:) r!rrr&r%r r$r'rrrr rrrvisit_Attributes    z_Unparser.visit_AttributecCs|tj|j||j|dd5d}|jD]}|r$|dnd}||q|jD]}|r9|dnd}||q/WddS1sLwYdS)NrrFrOT) r!rrr7r%rr:rr;)rrrnrorrr visit_Calls        "z_Unparser.visit_CallcCsdd}|tj|j||j|dd&||jr(||j|jjn||jWddSWddS1sAwYdS)NcSs&t|to|jotdd|jD S)Ncss|]}t|tVqdSr#)r ZStarred)rRrrrrrVszE_Unparser.visit_Subscript..is_simple_tuple..)r r2r4any)Z slice_valuerrris_simple_tuples z2_Unparser.visit_Subscript..is_simple_tuplerr) r!rrr&r%rrrr4)rrrrrrvisit_Subscripts  "z_Unparser.visit_SubscriptcCs*|d|tj|j||jdS)Nr)rr!rrr&r%r rrr visit_Starreds z_Unparser.visit_StarredcCrF)Nrrr rrrvisit_EllipsisrJz_Unparser.visit_EllipsiscCsR|jr ||j|d|jr||j|jr'|d||jdSdS)Nr)lowerr%rupperstepr rrr visit_Slices    z_Unparser.visit_SlicecCsZ|d||j||jD]}||qWddS1s&wYdS)Nzmatch )r r%subjectrcases)rrcaserrr visit_Matchs     "z_Unparser.visit_MatchcCs0||j|jr|d||jdSdSr)rargrBr%r rrr visit_arg  z_Unparser.visit_argc Csd}|j|j}dgt|t|j|j}tt||dD]/\}}|\}}|r,d}n|d|||rB|d|||t|jkrN|dq|jsU|j r~|rZd}n|d|d|jr~||jj |jj r~|d||jj |j rt|j |j D]\}}|d|||r|d||q|j r|rd}n|d|d |j j |j j r|d||j j dSdSdS) NTrLFrO=z, /rrr) posonlyargsr:r<defaults enumerater@rr%vararg kwonlyargsrrB kw_defaultskwarg) rrrZall_argsr relementsadrrrvisit_argumentssV                z_Unparser.visit_argumentscCs<|jdur |dn ||j|d||jdS)Nrr)rrr%r&r rrr visit_keywords    z_Unparser.visit_keywordcCsp|tj|'|d||j|d|tj|j||jWddS1s1wYdS)Nzlambda r)rrrrr%r:r!rIr rrr visit_Lambda$s   "z_Unparser.visit_LambdacCs*||j|jr|d|jdSdSNrh)rrcasnamer rrr visit_alias,s z_Unparser.visit_aliascCs0||j|jr|d||jdSdSr)r% context_expr optional_varsrr rrrvisit_withitem1rz_Unparser.visit_withitemcCsl|d||j|jr|d||j|||jWddS1s/wYdS)Nzcase r)r r%patternguardrrrIr rrrvisit_match_case7s     "z_Unparser.visit_match_casecCrr#)r%r&r rrrvisit_MatchValue@r z_Unparser.visit_MatchValuecCrr#)rr&r rrrvisit_MatchSingletonCr z_Unparser.visit_MatchSingletoncr)NrrcrrrrrrrrIrz/_Unparser.visit_MatchSequence..)rrr%patternsr rrrvisit_MatchSequenceFs "z_Unparser.visit_MatchSequencecCs&|j}|dur d}|d|dS)N_r)rcr)rrrcrrrvisit_MatchStarLsz_Unparser.visit_MatchStarc sfdd}dd;|j}fdd|t||jdd|j}|dur?|r/d d |WddSWddS1sJwYdS) Ncs*|\}}|d|dSrr)pairrprrrwrite_key_pattern_pairSs  z<_Unparser.visit_MatchMapping..write_key_pattern_pairrrcrrrrrrrr\rz._Unparser.visit_MatchMapping..TstrictrOr)rr=rr@r restr)rrr&r=r)rrrvisit_MatchMappingRs   "z_Unparser.visit_MatchMappingc stj|j|jddC|j}fddj||j}|rOfdd}|r6 dfdd|t ||j d d WddSWddS1sZwYdS) Nrrcrrrrrrrrlrz,_Unparser.visit_MatchClass..cs&|\}}|d|dS)Nr)rr%)r$rrrrrrwrite_attr_patternpsz6_Unparser.visit_MatchClass..write_attr_patternrOcrrrrrrrrxrTr') r!rrrbr%rr r kwd_attrsrr@ kwd_patterns)rrr Zattrsr+rrrvisit_MatchClassfs(    "z_Unparser.visit_MatchClasscCs|j}|j}|dur|ddS|dur||jdS|tj| |tj|j||j|d|jWddS1sGwYdS)Nr"rh) rcrrrrrr!rr%)rrrcrrrr visit_MatchAs}s "z_Unparser.visit_MatchAscshtj|#jtjg|jRfddj|jWddS1s-wYdS)Ncr)Nz | rrrrrrrz)_Unparser.visit_MatchOr..)rrrr!rr rr%r rrr visit_MatchOrs"z_Unparser.visit_MatchOr)rN)r]rrrrrr r rr propertyrrrrrrrr!r"r$r%rr)r.r2r3r5r8r<r?rArCrErIrLrNrOrQrSrTrWrZr[r_rfrirprurvrtrzr{ryr}r~rrrrrrrrrrrr(rrrrrrrrrrrrrrrrrrr@rrrrrrrr frozensetrrrrrrrrrrrrrrrrrrrrrrrrrr!r#r*r.r/r0 __classcell__rrr'rrs4              &       3  rcCst}||Sr#)rr)Zast_objrrrrunparses r4cCsddl}|jdd}|jd|jddddd d |jd d d ddd|jddddd|jddddd|jddtddd|}|j }|}Wdn1sTwYt||jj |j |j d }t t ||j|jd!dS)"Nrz python -m ast)proginfilerbr?rz$the file to parse; defaults to stdin)r%nargsdefaulthelpz-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)argparseArgumentParser add_argumentZFileTyper' parse_argsr6readrrcrZno_type_commentsprintrjrgrK)r?parserr:r6rZtreerrrmains2      rF__main__)rr)TF)rL)T)JsysZ_ast contextlibrrenumrrrrJrjrsrxr{r}rtrrrrryobjectrrrnr$rrr1rzrr%rrrrrrrr'r(r)rGbytesboolrrrrWrrrr2rrrmodrZ expr_contextrrrr_ float_info max_10_exprrZ_SINGLE_QUOTESrrrr4rFr]rrrrs ;C #  %: <         m