o $a@sUdZddlZddlmZmZmZmZmZejdkrddl Z nzddl m Z Wn e y4ddl Z Ynwie j de jde jde jd e jd e jd e jd e jd e jde jde jde jde jde jde jde jde jde jde jdiZ eee j!e"fe#d<d'de"de"ddfddZ$ed(d dde"ddfd!d"Z%ed(d e j!de"de"fd#d"Z%d(d ee j!de"dee"fd$d"Z%Gd%d&d&e j&Z'dS))z sphinx.pycode.ast ~~~~~~~~~~~~~~~~~ Helpers for AST (Abstract Syntax Tree). :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N)DictListOptionalTypeoverload)ast3+and&|^/z//~z<<@*%not**orz>>- OPERATORSexeccodemodereturnzast.ASTcCsRz tj||ddWStytj||dYSty(tj||dYSw)z{Parse the *code* using the built-in ast or typed_ast libraries. This enables "type_comments" feature if possible. T)r type_comments)r)astparse SyntaxError TypeError)rrr#3/usr/lib/python3/dist-packages/sphinx/pycode/ast.pyr /s  r nodecCdSNr#r&rr#r#r$unparseAr*cCr'r(r#r)r#r#r$r*Fr+cCs(|durdSt|tr |St||S)zUnparse an AST to string.N) isinstancestr_UnparseVisitorvisitr)r#r#r$r*Ks  c@s&eZdZdz._UnparseVisitor.visit_BinOp..)rKleftoprightr4r#rYr$ visit_BinOps$z_UnparseVisitor.visit_BinOpcs*d|j}|fdd|jDS)Nz %s c3rTr(rUrVrYr#r$rZr[z/_UnparseVisitor.visit_BoolOp..)r/r]rKvalues)r0r&r]r#rYr$ visit_BoolOpsz_UnparseVisitor.visit_BoolOpcsBfdd|jDfdd|jD}d|jd|fS)Ncsg|]}|qSr#rUrVrYr#r$ sz._UnparseVisitor.visit_Call..cs"g|] }d|j|jfqS)z%s=%s)r7r/rPrWkrYr#r$rbs"z%s(%s)r=)rAkeywordsr/funcrK)r0r&rAr#rYr$ visit_Callsz_UnparseVisitor.visit_CallcCsR|jturdSt|jtttfr$|jrtjdkrt |j|St |jSt |jS)N...r) rPEllipsisr,intfloatcomplexrsys version_inforget_source_segmentreprr4r#r#r$visit_Constants   z_UnparseVisitor.visit_ConstantcsNfdd|jD}fdd|jD}ddt||D}dd|dS)Nc3rTr(rUrcrYr#r$rZr[z-_UnparseVisitor.visit_Dict..c3rTr(rU)rWvrYr#r$rZr[css |] \}}|d|VqdS)z: Nr#)rWrdrrr#r#r$rZs{r=})keysr`ziprK)r0r&rur`itemsr#rYr$ visit_Dictsz_UnparseVisitor.visit_DictcCs ||jSr()r/rPr4r#r#r$ visit_Indexs z_UnparseVisitor.visit_IndexcCsd||jS)Nzlambda %s: ...)r/rAr4r#r#r$ visit_Lambdasz_UnparseVisitor.visit_Lambdac"ddfdd|jDdS)N[r=c3rTr(rUrVrYr#r$rZr[z-_UnparseVisitor.visit_List..]rKeltsr4r#rYr$ visit_List"z_UnparseVisitor.visit_ListcCs|jSr()idr4r#r#r$ visit_Namesz_UnparseVisitor.visit_Namecr{)Nrsr=c3rTr(rUrVrYr#r$rZr[z,_UnparseVisitor.visit_Set..rtr~r4r#rYr$ visit_Setrz_UnparseVisitor.visit_Setcsdtjdtfdd}||jr'dfdd|jjD}d|j|fSt|jtj rM||jjrMdfd d|jjjD}d|j|fSd|j|jfS) NrPrcSs,t|tjot|jotdd|jD S)Ncss|] }t|tjVqdSr()r,rStarred)rWeltr#r#r$rZszK_UnparseVisitor.visit_Subscript..is_simple_tuple..)r,rTupleboolrany)rPr#r#r$is_simple_tuples z8_UnparseVisitor.visit_Subscript..is_simple_tupler=c3rTr(rUrVrYr#r$rZr[z2_UnparseVisitor.visit_Subscript..z%s[%s]c3rTr(rUrVrYr#r$rZr[) rASTrslicerKrr/rPr,Index)r0r&rrr#rYr$visit_Subscripts z_UnparseVisitor.visit_SubscriptcCsd||j||jfS)Nz%s %s)r/r]operandr4r#r#r$ visit_UnaryOpsz_UnparseVisitor.visit_UnaryOpcsVt|jdkr dSt|jdkrd|jdSddfdd|jDd S) Nrz()z(%s,)(r=c3rTr(rUrVrYr#r$rZr[z._UnparseVisitor.visit_Tuple..))r@rr/rKr4r#rYr$ visit_Tuples "z_UnparseVisitor.visit_TuplercC t|jSr(rpsr4r#r#r$ visit_Bytesr2z_UnparseVisitor.visit_BytescCsdS)Nrhr#r4r#r#r$visit_Ellipsissz_UnparseVisitor.visit_EllipsiscCrr()rprPr4r#r#r$visit_NameConstantr2z"_UnparseVisitor.visit_NameConstantcCrr()rpnr4r#r#r$ visit_Numr2z_UnparseVisitor.visit_NumcCrr(rr4r#r#r$ visit_Strr2z_UnparseVisitor.visit_StrcCstdt|j)NzUnable to parse %s object)NotImplementedErrortype__name__r4r#r#r$ generic_visitsz_UnparseVisitor.generic_visitr%);r __module__ __qualname__r-r1rrr5r_oplocalsformatr7r8rr; argumentsrO AttributerRBinOpr_BoolOpraCallrgConstantrqrrxrryLambdarzrrNamerSetr SubscriptrUnaryOprrrrmrnBytesrrir NameConstantrNumrStrrrr#r#r#r$r.Us: &   r.)rr)(__doc__rmtypingrrrrrrnr typed_astr ImportErrorAddAndBitAndBitOrBitXorDivFloorDivInvertLShiftMatMultMultModNotPowOrRShiftSubUAddUSubrrr-__annotations__r r* NodeVisitorr.r#r#r#r$sn          "