3 \g; ã @ s d Z ddlmZ ddlmZmZ ddlmZ ddl m Z dd„ Zdd „ Zd d„ Z dd „ ZdWdd„Zdd„ Zdd„ Zdd„ Zeƒ e ƒ fdd„ZdXdd„Zdd„ Zdd„ ZdYdd „Zd!d"„ ZdZd#d$„Zd[d%d&„Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2d3d4d5d6d7d8d9d:h Z d;d<„ Z!d=a"d>a#d?a$d@a%dAdB„ Z&dCdD„ Z'dEdF„ Z(dGdH„ Z)dIdJ„ Z*dKdL„ Z+dMdN„ Z,dOdP„ Z-ej.ej/hZ0d\dQdR„Z1ej/ej.ej2hZ3dSdT„ Z4d]dUdV„Z5dS )^z1Utility functions, node construction macros, etc.é )Útoken)ÚLeafÚNode)Úpython_symbols)Úpatcompc C s t tj| ttjdƒ|gƒS )Nú=)r ÚsymsZargumentr r ÚEQUAL)ÚkeywordÚvalue© r ú*/usr/lib64/python3.6/lib2to3/fixer_util.pyÚ KeywordArg s r c C s t tjdƒS )Nú()r r ÚLPARr r r r ÚLParen s r c C s t tjdƒS )Nú))r r ÚRPARr r r r ÚRParen s r c C sH t | tƒs| g} t |tƒs&d|_|g}ttj| ttjddd�g | ƒS )zBuild an assignment statementú r )Úprefix) Ú isinstanceÚlistr r r Úatomr r r )ÚtargetÚsourcer r r ÚAssign s r Nc C s t tj| |d�S )zReturn a NAME leaf)r )r r ÚNAME)Únamer r r r ÚName$ s r c C s | t tjtƒ |gƒgS )zA node tuple for obj.attr)r r ÚtrailerÚDot)ÚobjÚattrr r r ÚAttr( s r$ c C s t tjdƒS )zA comma leafú,)r r ÚCOMMAr r r r ÚComma, s r' c C s t tjdƒS )zA period (.) leafÚ.)r r ÚDOTr r r r r! 0 s r! c C s4 t tj|jƒ |jƒ gƒ}| r0|jdt tj| ƒƒ |S )z-A parenthesised argument list, used by Call()r )r r r ÚcloneÚinsert_childÚarglist)ÚargsZlparenZrparenÚnoder r r ÚArgList4 s r/ c C s&