3

T'íc5ã.@snUdZddlZddlmZmZmZmZmZejd%kr>ddl	Z	n.yddl
mZ	Wnek
rjddl	Z	YnXe	j
de	jde	jd	e	jd
e	jde	jde	jd
e	jde	jde	jde	jde	jde	jde	jde	jde	jde	jde	jde	jdiZ eee	j!e"f d&e"e"ddœdd„Z#ed'de"ddœdd „ƒZ$ed(e	j!e"e"dœd!d „ƒZ$d)ee	j!e"ee"dœd"d „Z$Gd#d$„d$e	j%ƒZ&dS)*z'Helpers for AST (Abstract Syntax Tree).éN)ÚDictÚListÚOptionalÚTypeÚoverloadéé)Úast3ú+Úandú&ú|ú^ú/z//ú~z<<ú@Ú*ú%Únotz**Úorz>>ú-Úexeczast.AST)ÚcodeÚmodeÚreturncCsPytj||ddStk
r.tj||dStk
rJtj||dSXdS)z{Parse the *code* using the built-in ast or typed_ast libraries.

    This enables "type_comments" feature if possible.
    T)rZ
type_comments)rN)ÚastÚparseÚSyntaxErrorÚ	TypeError)rr©rú3/tmp/pip-build-gk9425m9/sphinx/sphinx/pycode/ast.pyr'srÚ)ÚnoderrcCsdS)Nr)r"rrrr Úunparse9sr#cCsdS)Nr)r"rrrr r#>scCs(|dkrdSt|tƒr|St|ƒj|ƒS)zUnparse an AST to string.N)Ú
isinstanceÚstrÚ_UnparseVisitorÚvisit)r"rrrr r#Cs

c@søeZdZd;eddœdd„Zejedœdd„ZxeD]Z	ee
ƒd	je	jƒ<q2Wejedœd
d„Z
ejeejedœd
d„Zejedœdd„Zejedœdd„Zejedœdd„Zejedœdd„Zejedœdd„Zejedœdd„Zejedœdd„Zejedœdd„Zej edœdd „Z!ej"edœd!d"„Z#ej$edœd#d$„Z%ej&edœd%d&„Z'ej(edœd'd(„Z)ej*edœd)d*„Z+ej,edœd+d,„Z-e.j/d<krìej0edœd/d0„Z1ej2edœd1d2„Z3ej4edœd3d4„Z5ej6edœd5d6„Z7ej8edœd7d8„Z9d9d:„Z:dS)=r&r!N)rrcCs
||_dS)N)r)Úselfrrrr Ú__init__Nsz_UnparseVisitor.__init__)r"rcCs
t|jS)N)Ú	OPERATORSÚ	__class__)r(r"rrr Ú	_visit_opQsz_UnparseVisitor._visit_opzvisit_{}cCs&|jrd|j|j|jƒfS|jSdS)Nz%s: %s)Ú
annotationÚargr')r(r"rrr Ú	visit_argVsz_UnparseVisitor.visit_arg)r.ÚdefaultrcCs>|j|ƒ}|r:|jr(|d|j|ƒ7}n|d|j|ƒ7}|S)z&Unparse a single argument to a string.z = %sz=%s)r'r-)r(r.r0Únamerrr Ú_visit_arg_with_default\s
z'_UnparseVisitor._visit_arg_with_defaultc
Cs t|jƒ}t|jƒ}d}t|dƒr8|t|jƒ7}||7}x"tt|ƒ|ƒD]}|jddƒqHWt|jƒ}x(tt|ƒt|j	ƒƒD]}|jddƒq|Wg}t|dƒrÜx,t
|jƒD]\}}	|j|j|	||ƒƒqªW|jrÜ|jdƒx0t
|jƒD]"\}}	|j|j|	|||ƒƒqèW|j
r,|jd|j|j
ƒƒ|j	rH|j
rH|jdƒx.t
|j	ƒD] \}}	|j|j|	||ƒƒqTW|jr–|jd|j|jƒƒdj|ƒS)NrÚposonlyargsrrz**z, )ÚlistÚdefaultsÚlenÚargsÚhasattrr3ÚrangeÚinsertÚkw_defaultsÚ
kwonlyargsÚ	enumerateÚappendr2Úvarargr'ÚkwargÚjoin)
r(r"r5Úpositionalsr3Ú_r;r7Úir.rrr Úvisit_argumentsfs8






z_UnparseVisitor.visit_argumentscCsd|j|jƒ|jfS)Nz%s.%s)r'ÚvalueÚattr)r(r"rrr Úvisit_AttributeŒsz_UnparseVisitor.visit_Attributecs$dj‡fdd„|j|j|jgDƒƒS)Nú c3s|]}ˆj|ƒVqdS)N)r')Ú.0Úe)r(rr ú	<genexpr>sz._UnparseVisitor.visit_BinOp.<locals>.<genexpr>)rAÚleftÚopÚright)r(r"r)r(r Úvisit_BinOpsz_UnparseVisitor.visit_BinOpcs*dˆj|jƒ}|j‡fdd„|jDƒƒS)Nz %s c3s|]}ˆj|ƒVqdS)N)r')rJrK)r(rr rL”sz/_UnparseVisitor.visit_BoolOp.<locals>.<genexpr>)r'rNrAÚvalues)r(r"rNr)r(r Úvisit_BoolOp’sz_UnparseVisitor.visit_BoolOpcsB‡fdd„|jDƒ‡fdd„|jDƒ}dˆj|jƒdj|ƒfS)Ncsg|]}ˆj|ƒ‘qSr)r')rJrK)r(rr ú
<listcomp>—sz._UnparseVisitor.visit_Call.<locals>.<listcomp>cs"g|]}d|jˆj|jƒf‘qS)z%s=%s)r.r'rF)rJÚk)r(rr rS˜sz%s(%s)z, )r7Úkeywordsr'ÚfuncrA)r(r"r7r)r(r Ú
visit_Call–sz_UnparseVisitor.visit_CallcCsX|jtkrdSt|jtttfƒrJ|jr>tjdkr>t	j
|j|ƒSt|jƒSn
t|jƒSdS)Nz...rr)rr)rFÚEllipsisr$ÚintÚfloatÚcomplexrÚsysÚversion_inforZget_source_segmentÚrepr)r(r"rrr Úvisit_Constant›s
z_UnparseVisitor.visit_ConstantcsN‡fdd„|jDƒ}‡fdd„|jDƒ}dd„t||ƒDƒ}ddj|ƒdS)Nc3s|]}ˆj|ƒVqdS)N)r')rJrT)r(rr rL§sz-_UnparseVisitor.visit_Dict.<locals>.<genexpr>c3s|]}ˆj|ƒVqdS)N)r')rJÚv)r(rr rL¨scss|]\}}|d|VqdS)z: Nr)rJrTr`rrr rL©sÚ{z, Ú})ÚkeysrQÚziprA)r(r"rcrQÚitemsr)r(r Ú
visit_Dict¦sz_UnparseVisitor.visit_DictcCs|j|jƒS)N)r'rF)r(r"rrr Úvisit_Index¬sz_UnparseVisitor.visit_IndexcCsd|j|jƒS)Nzlambda %s: ...)r'r7)r(r"rrr Úvisit_Lambda¯sz_UnparseVisitor.visit_Lambdacs"ddj‡fdd„|jDƒƒdS)Nú[z, c3s|]}ˆj|ƒVqdS)N)r')rJrK)r(rr rL³sz-_UnparseVisitor.visit_List.<locals>.<genexpr>ú])rAÚelts)r(r"r)r(r Ú
visit_List²sz_UnparseVisitor.visit_ListcCs|jS)N)Úid)r(r"rrr Ú
visit_Nameµsz_UnparseVisitor.visit_Namecs"ddj‡fdd„|jDƒƒdS)Nraz, c3s|]}ˆj|ƒVqdS)N)r')rJrK)r(rr rL¹sz,_UnparseVisitor.visit_Set.<locals>.<genexpr>rb)rArk)r(r"r)r(r Ú	visit_Set¸sz_UnparseVisitor.visit_Setcs¸tjtdœdd„}||jƒrLdj‡fdd„|jjDƒƒ}dˆj|jƒ|fSt|jtj	ƒr˜||jjƒr˜dj‡fdd„|jjjDƒƒ}dˆj|jƒ|fSdˆj|jƒˆj|jƒfSdS)	N)rFrcSs,t|tjƒo*t|jƒo*tdd„|jDƒƒS)Ncss|]}t|tjƒVqdS)N)r$rÚStarred)rJÚeltrrr rLÀszK_UnparseVisitor.visit_Subscript.<locals>.is_simple_tuple.<locals>.<genexpr>)r$rÚTupleÚboolrkÚany)rFrrr Úis_simple_tuple¼s
z8_UnparseVisitor.visit_Subscript.<locals>.is_simple_tuplez, c3s|]}ˆj|ƒVqdS)N)r')rJrK)r(rr rLÄsz2_UnparseVisitor.visit_Subscript.<locals>.<genexpr>z%s[%s]c3s|]}ˆj|ƒVqdS)N)r')rJrK)r(rr rLÇs)
rÚASTrsÚslicerArkr'rFr$ÚIndex)r(r"rurkr)r(r Úvisit_Subscript»s
z_UnparseVisitor.visit_SubscriptcCsd|j|jƒ|j|jƒfS)Nz%s %s)r'rNÚoperand)r(r"rrr Ú
visit_UnaryOpÌsz_UnparseVisitor.visit_UnaryOpcsZt|jƒdkrdSt|jƒdkr4dˆj|jdƒSddj‡fdd„|jDƒƒd	SdS)
Nrz()éz(%s,)ú(z, c3s|]}ˆj|ƒVqdS)N)r')rJrK)r(rr rLÕsz._UnparseVisitor.visit_Tuple.<locals>.<genexpr>ú))r6rkr'rA)r(r"r)r(r Úvisit_TupleÏs
z_UnparseVisitor.visit_TuplerrcCs
t|jƒS)N)r^Ús)r(r"rrr Úvisit_BytesÙsz_UnparseVisitor.visit_BytescCsdS)Nz...r)r(r"rrr Úvisit_EllipsisÜsz_UnparseVisitor.visit_EllipsiscCs
t|jƒS)N)r^rF)r(r"rrr Úvisit_NameConstantßsz"_UnparseVisitor.visit_NameConstantcCs
t|jƒS)N)r^Ún)r(r"rrr Ú	visit_Numâsz_UnparseVisitor.visit_NumcCs
t|jƒS)N)r^r€)r(r"rrr Ú	visit_Stråsz_UnparseVisitor.visit_StrcCstdt|ƒjƒ‚dS)NzUnable to parse %s object)ÚNotImplementedErrorÚtypeÚ__name__)r(r"rrr Ú
generic_visitèsz_UnparseVisitor.generic_visit)r!)rr);r‰Ú
__module__Ú__qualname__r%r)rrvr,r*Z_opÚlocalsÚformatr.r/rr2Ú	argumentsrEÚ	AttributerHÚBinOprPÚBoolOprRÚCallrWÚConstantr_rrfrxrgÚLambdarhrrlÚNamernÚSetroÚ	SubscriptryÚUnaryOpr{rrrr\r]ÚBytesrrXr‚ÚNameConstantrƒÚNumr…ÚStrr†rŠrrrr r&Ms8

&r&)rr)r)r!)r!)r!)'Ú__doc__r\Útypingrrrrrr]rZ	typed_astr	ÚImportErrorÚAddÚAndÚBitAndÚBitOrÚBitXorÚDivÚFloorDivÚInvertÚLShiftÚMatMultÚMultÚModÚNotÚPowÚOrÚRShiftÚSubÚUAddÚUSubr*rvr%rr#ÚNodeVisitorr&rrrr Ú<module>sD