U e5dg; ã @ 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.8/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 leafr )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| ¡ | ¡ gƒ}| r0| dt tj| ƒ¡ |S )z-A parenthesised argument list, used by Call()r )r r r! ÚcloneÚinsert_childÚarglist)ÚargsZlparenZrparenÚnoder r r ÚArgList4 s r0 c C s&