3 \�/�@s�ddlTd dd�ZeeefZdd�Zd!d d �Zd d �Zdd�Z d"dd�Z dd�Z dd�Z d#dd�Z dd�ZGdd�de�ZGdd�de�ZdS)$�)�*� �execcCst|||t�S)N)�compileZ PyCF_ONLY_AST)�source�filename�mode�r �/usr/lib64/python3.6/ast.py�parsesr cs:t|t�rt|dd�}t|t�r&|j}�fdd���|�S)N�eval)rcs�t|t�r|jSt|ttf�r$|jSt|t�r4|jSt|t�rNt t �|j ��St|t �rht t �|j ��St|t�r�tt �|j ��St|t�r�t�fdd�t|j|j�D��St|t�r�|jSt|t�o�t|jttf��r �|j�}t|t��rrt|jt��r| S| Snht|t��rrt|jttf��rr�|j�}�|j �}t|t��rrt|t��rrt|jt��rj||S||St!dt"|���dS)Nc3s"|]\}}�|��|�fVqdS)Nr )�.0�k�v)�_convertr r � Asz1literal_eval.._convert..zmalformed node or string: )#� isinstance�Constant�value�StrZBytes�sZNum�nZTuple�tuple�mapZeltsZList�list�Set�setZDict�dict�zip�keys�valuesZ NameConstantZUnaryOp�opZUAddZUSub�operand� _NUM_TYPESZBinOpZAddZSub�left�right� ValueError�repr)�noder"r$r%)rr r r3s>            zliteral_eval.._convert)r�strr Z Expression�body)Znode_or_stringr )rr � literal_eval(s     "r+TFcs2���fdd��t|t�s*td|jj���|�S)Ncs�t�t�r��fdd�t��D�}d�jjdj�r>dd�|D�n dd�|D��f}�r��jr�||rfdphd7}|dj��fd d��jD��7}|d St�t�r�d dj�fd d��D��St��S) Ncsg|]\}}|�|�f�qSr r )r �a�b)�_formatr r � csz)dump.._format..z%s(%sz, css|]}d|VqdS)z%s=%sNr )r �fieldr r r resz(dump.._format..css|]\}}|VqdS)Nr )r r,r-r r r rgs� c3s$|]}d|�t�|��fVqdS)z%s=%sN)�getattr)r r,)r.r(r r rks�)z[%s]c3s|]}�|�VqdS)Nr )r �x)r.r r ros) r�AST� iter_fields� __class__�__name__�join� _attributesrr')r(Zfields�rv)r.�annotate_fields�include_attributes)r(r r.as    zdump.._formatzexpected AST, got %r)rr5� TypeErrorr7r8)r(r<r=r )r.r<r=r �dumpXs  r?cCsBx||_n|j}xt|�D]}�|||�qNWdS)Nr@rA)r:rBr@rA�iter_child_nodes)r(r@rA�child)�_fixr r rI�s    z#fix_missing_locations.._fix�rr )r(r )rIr �fix_missing_locations�s rKrJcCs2x,t|�D] }d|jkr t|dd�||_q W|S)Nr@r)�walkr:r2r@)r(rrHr r r �increment_lineno�s rMc cs>x8|jD].}y|t||�fVWqtk r4YqXqWdS)N)�_fieldsr2�AttributeError)r(r0r r r r6�s  r6ccsTxNt|�D]B\}}t|t�r$|Vq t|t�r x|D]}t|t�r4|Vq4Wq WdS)N)r6rr5r)r(�namer0�itemr r r rG�s    rGcCs�t|ttttf�s"td|jj��|jo6t|jdt �sr7r8r*ZExprrrrrr)�inspectZcleandoc)r(Zclean�textrRr r r � get_docstring�s   rTccs@ddlm}||g�}x$|r:|j�}|jt|��|VqWdS)Nr)�deque)� collectionsrU�popleft�extendrG)r(rUZtodor r r rL�s   rLc@seZdZdd�Zdd�ZdS)� NodeVisitorcCs"d|jj}t|||j�}||�S)NZvisit_)r7r8r2� generic_visit)�selfr(�methodZvisitorr r r �visit�s zNodeVisitor.visitcCs\xVt|�D]J\}}t|t�r@x6|D]}t|t�r"|j|�q"Wq t|t�r |j|�q WdS)N)r6rrr5r])r[r(r0rrQr r r rZ�s    zNodeVisitor.generic_visitN)r8� __module__� __qualname__r]rZr r r r rY�srYc@seZdZdd�ZdS)�NodeTransformercCs�x�t|�D]�\}}t|t�r|g}xL|D]D}t|t�r`|j|�}|dkrJq&nt|t�s`|j|�q&|j|�q&W||dd�<q t|t�r |j|�}|dkr�t||�q t|||�q W|S)N) r6rrr5r]rX�append�delattrrC)r[r(r0Z old_valueZ new_valuesrrDr r r rZ.s&         zNodeTransformer.generic_visitN)r8r^r_rZr r r r r` s$r`N)rr)TF)rJ)T)Z_astr �int�float�complexr#r+r?rFrKrMr6rGrTrL�objectrYr`r r r r �s  0     %