Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib/python3.7/site-packages/astroid/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/astroid/__pycache__/rebuilder.cpython-37.pyc

B

��\:��@s�dZddlZddlZddlmZmZmZddlmZdddd�Zdd	d	d	d
dd�Z	ej
d
kZej
dkZej
dkZ
dd�Zdd�Zdd�Zdd�Zdd�Zd!dd�ZGdd�d�ZGdd �d e�Zej
d
kr�eZdS)"zjthis module contains utilities for rebuilding a _ast tree in
order to get a single Astroid representation
�N)�_parse�_get_parser_module�parse_function_type_comment)�nodesTF)�None�True�False�	Arguments�
Comprehension�
ExceptHandler�Keyword)�	argumentsZ
comprehensionZListCompForZ
GenExprForZ
excepthandler�keyword)�r)r�)r�cCsd|jd|jd|jd|jd|jd|jd|jd|jd|jd	|j	d
|j
d|jdi}tj
d
kr`d||j<|S)N�+�&�|�^�/z//�%�*z**�-z<<z>>)r��@)ZAddZBitAndZBitOrZBitXorZDivZFloorDivZModZMultZPowZSubZLShiftZRShift�sys�version_infoZMatMult)�moduleZbinary_operators�r�B/opt/alt/python37/lib/python3.7/site-packages/astroid/rebuilder.py�_binary_operators_from_module-s


r!cCs|jd|jdiS)N�and�or)�And�Or)rrrr �_bool_operators_from_moduleAsr&cCs|jd|jd|jd|jdiS)Nrr�not�~)ZUAddZUSubZNotZInvert)rrrr �_unary_operators_from_moduleEsr)cCs@|jd|jd|jd|jd|jd|jd|jd|jd|jd	|j	d
i
S)Nz==�>z>=�in�iszis not�<z<=z!=znot in)
ZEqZGtZGtEZInZIsZIsNotZLtZLtEZNotEqZNotIn)rrrr �_compare_operators_from_moduleIsr.cCs$|jtj|jtj|jtj|jtjiS)N)�Load�astroid�Store�DelZParam)rrrr �_contexts_from_moduleXsr3�visitcKs(t||d�}|r$t||�||f|�SdS)z_If the given node has an attribute, visits the attribute, and
    otherwise returns None.

    N)�getattr)�node�attrZvisitor�parentr4�kws�valuerrr �_visit_or_noneasr;c@sJeZdZdZd�ed�dd�Zdd�Zdd	�Zd
d�Zdd
�Z	d�dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zd�dd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd�d)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2dadb�Z3dcdd�Z4dedf�Z5dgdh�Z6didj�Z7dkdl�Z8dmdn�Z9e9Z:dodp�Z;dqdr�Z<dsdt�Z=dudv�Z>dwdx�Z?dydz�Z@d{d|�ZAd}d~�ZBdd��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJdS)��
TreeRebuilderz0Rebuilds the _ast tree to become an Astroid treeF)�parse_python_twocCsj||_g|_g|_g|_i|_t|d�|_t|j�|_t	|j�|_
t|j�|_t
|j�|_t|j�|_dS)N)r=)�_manager�
_global_names�_import_from_nodes�_delayed_assattr�_visit_methsr�_parser_moduler)�_unary_op_classesr.�_cmp_op_classesr&�_bool_op_classesr!�_bin_op_classesr3�_context_classes)�self�managerr=rrr �__init__pszTreeRebuilder.__init__cCs�yvtrt|d�r|j}||fS|jrtt|jd|jj�rtt|jdj|jj�rt|jdjj	}|jdd�|_||fSWnt
k
r�YnX|dfS)N�	docstringr�)�PY37�hasattrrL�body�
isinstancerC�Exprr:�Str�s�
IndexError)rIr6�docrrr �_get_docszTreeRebuilder._get_doccCs|j�t|j�tj�S)N)rH�get�type�ctxr0r/)rIr6rrr �_get_context�szTreeRebuilder._get_contextcsF��|�\}}tj||||g|dd������fdd�|jD���S)z7visit a Module node by returning a fresh instance of itN)�namerV�file�path�packager8csg|]}��|���qSr)r4)�.0�child)�newnoderIrr �
<listcomp>�sz.TreeRebuilder.visit_module.<locals>.<listcomp>)rWr�Module�postinitrP)rIr6�modnameZmodpathr_rVr)rbrIr �visit_module�szTreeRebuilder.visit_modulecCsT|j}||jkr|j|}n.|j}dt�||���}t||�}||j|<|||�S)NZvisit_)�	__class__rB�__name__�REDIRECTrX�lowerr5)rIr6r8�clsZvisit_methodZcls_name�
visit_namerrr r4�s


zTreeRebuilder.visitNcCs>|jr*|j|jdkr*|���|j|�n|j�|j|�dS)zAsave assignement situation since node.parent is not available yet���N)r?r\�root�	set_localr8)rIr6r\rrr �_save_assignment�szTreeRebuilder._save_assignmentc

sz|j|j}}tr6t�|r |jnd|r,|jnd|��nt�|||����fdd�|jD�}��fdd�|jD�}d}d}|r�tr�|jjr���	|jj��}|j}|r�tr�|jjr���	|jj��}|j}t
�r$��fdd�|jD�}	��fdd�|jD�}
��fdd�|jD�}��fdd�|jD�}ng}	g}
g}g}�j
|||	|
||||d	�|�rb�j�|��|�rv�j�|���S)
z;visit an Arguments node by returning a fresh instance of itNcsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz1TreeRebuilder.visit_arguments.<locals>.<listcomp>csg|]}��|���qSr)r4)r`ra)rbrIrr rc�scsg|]}��|���qSr)r4)r`ra)rbrIrr rc�scs g|]}|r��|��nd�qS)N)r4)r`ra)rbrIrr rc�scs$g|]}|jr��|j��nd�qS)N)�
annotationr4)r`�arg)rbrIrr rc�scs$g|]}|jr��|j��nd�qS)N)rrr4)r`rs)rbrIrr rc�s)�args�defaults�
kwonlyargs�kw_defaults�annotations�kwonlyargs_annotations�varargannotation�kwargannotation)�vararg�kwarg�PY34rr	rsrtrurrr4�PY3rvrwrer8rp)
rIr6r8r|r}rtrurzr{rvrwrxryr)rbrIr �visit_arguments�sZ 

zTreeRebuilder.visit_argumentscCsFt�|j|j|�}|jr(|�|j|�}nd}|�|�|j|�|�|S)z7visit a Assert node by returning a fresh instance of itN)rZAssert�lineno�
col_offset�msgr4re�test)rIr6r8rbr�rrr �visit_assert�szTreeRebuilder.visit_assertcCs^t|dd�}|sdSyt|�}Wntk
r4dSX|�|jd|�}t|tj�sXdS|jS)N�type_commentr)	r5r�SyntaxErrorr4rPrQrrRr:)rIr6r��type_comment_astZtype_objectrrr �check_type_comment�sz TreeRebuilder.check_type_commentcspt�dd�}|sdSyt|�}Wntk
r4dSXd}��fdd�|jpNgD�}|jrh��|j��}||fS)Nr�csg|]}��|���qSr)r4)r`�elem)r6rIrr rcsz=TreeRebuilder.check_function_type_comment.<locals>.<listcomp>)r5rr��argtypes�returnsr4)rIr6r�r�r�r�r)r6rIr �check_function_type_commentsz)TreeRebuilder.check_function_type_commentcsL��|�}t�|j|j|���j��fdd�|jD���|j��|d��S)z7visit a Assign node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc%sz.TreeRebuilder.visit_assign.<locals>.<listcomp>)�targetsr:�type_annotation)	r�rZAssignr�r�rer�r4r:)rIr6r8r�r)rbrIr �visit_assign s
zTreeRebuilder.visit_assigncCs.t�|t|dd�t|dd�|�}|�|�|S)z)visit a node and return a AssignName noder�Nr�)r�
AssignNamer5rq)rIr6r8Z	node_namerbrrr �visit_assignname+s


zTreeRebuilder.visit_assignnamecCsHt�|jt|j�d|j|j|�}|�|�|j	|�|�|j
|��|S)z:visit a AugAssign node by returning a fresh instance of it�=)rZ	AugAssignrGrY�opr�r�rer4�targetr:)rIr6r8rbrrr �visit_augassign6szTreeRebuilder.visit_augassigncCs*t�|j|j|�}|�|�|j|��|S)z:visit a Backquote node by returning a fresh instance of it)r�Reprr�r�rer4r:)rIr6r8rbrrr �
visit_reprCszTreeRebuilder.visit_reprcCsDt�|jt|j�|j|j|�}|�|�|j	|�|�|j
|��|S)z6visit a BinOp node by returning a fresh instance of it)rZBinOprGrYr�r�r�rer4�left�right)rIr6r8rbrrr �visit_binopIs
zTreeRebuilder.visit_binopcs@t��jt|j�|j|j|������fdd�|jD���S)z7visit a BoolOp node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rcXsz.TreeRebuilder.visit_boolop.<locals>.<listcomp>)	rZBoolOprFrYr�r�r�re�values)rIr6r8r)rbrIr �visit_boolopSszTreeRebuilder.visit_boolopcCst�t|dd�t|dd�|�S)z6visit a Break node by returning a fresh instance of itr�Nr�)rZBreakr5)rIr6r8rrr �visit_break[szTreeRebuilder.visit_breakc	s�t�|j|j|��t|d���}t|d���}��fdd�|jD�}|jrb��fdd�|jD�}nd}|r�tj|j|j|jd�}|j	|d�|�
|�|r�tjd|j|j|jd	�}|j	|d�|r�|�
|�n|g}��	��|j
��||��S)
z9visit a CallFunc node by returning a fresh instance of it�starargs�kwargscsg|]}��|���qSr)r4)r`ra)rbrIrr rcfsz,TreeRebuilder.visit_call.<locals>.<listcomp>csg|]}��|���qSr)r4)r`ra)rbrIrr rcisN)r�r�r8)r:)rsr�r�r8)rZCallr�r�r;rt�keywords�Starredr8re�appendrr4�func)	rIr6r8r�r�rtr�Znew_starargsZ
new_kwargsr)rbrIr �
visit_callas4


zTreeRebuilder.visit_callc
s���|�\}}t�|j||j|j|��d}trXx(|jD]}|jdkr6��	|��j
}Pq6W|jrl��|��}nd}��
��fdd�|jD���fdd�|jD�|||tr���fdd�|jD�ng��S)z'visit a ClassDef node to become astroidN�	metaclasscsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz0TreeRebuilder.visit_classdef.<locals>.<listcomp>csg|]}��|���qSr)r4)r`ra)rbrIrr rc�scs"g|]}|jdkr��|���qS)r�)rsr4)r`Zkwd)rbrIrr rc�s)rWrZClassDefr\r�r�rr�rsr4r:�decorator_list�visit_decoratorsre�basesrP)rIr6r8�newstylerVr�r�
decoratorsr)rbrIr �visit_classdef�s(
zTreeRebuilder.visit_classdefcCs"t�|jt|dd�t|dd�|�S)z6visit a Const node by returning a fresh instance of itr�Nr�)r�Constr:r5)rIr6r8rrr �visit_const�s


zTreeRebuilder.visit_constcCst�t|dd�t|dd�|�S)z9visit a Continue node by returning a fresh instance of itr�Nr�)r�Continuer5)rIr6r8rrr �visit_continue�szTreeRebuilder.visit_continuecsFt�|j|j|������|j����fdd�t|j|j	�D���S)z8visit a Compare node by returning a fresh instance of itcs(g|] \}}�j|j��|��f�qSr)rErhr4)r`r��expr)rbrIrr rc�sz/TreeRebuilder.visit_compare.<locals>.<listcomp>)
rZComparer�r�rer4r��zipZopsZcomparators)rIr6r8r)rbrIr �
visit_compare�szTreeRebuilder.visit_comparec	sLt�|������|j����|j����fdd�|jD�t|dd���S)z>visit a Comprehension node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz5TreeRebuilder.visit_comprehension.<locals>.<listcomp>Zis_asyncN)rr
rer4r��iterZifsr5)rIr6r8r)rbrIr �visit_comprehension�s
z!TreeRebuilder.visit_comprehensioncs2t�|j|j|������fdd�|jD���S)z;visit a Decorators node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz2TreeRebuilder.visit_decorators.<locals>.<listcomp>)rZ
Decoratorsr�r�rer�)rIr6r8r)rbrIr r��szTreeRebuilder.visit_decoratorscs2t�|j|j|������fdd�|jD���S)z7visit a Delete node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz.TreeRebuilder.visit_delete.<locals>.<listcomp>)rZDeleter�r�rer�)rIr6r8r)rbrIr �visit_delete�szTreeRebuilder.visit_deleteccsZxTt|j|j�D]B\}}|�||�}|s<t�|j|j|�}n|�||�}||fVqWdS)N)r��keysr�r4rZ
DictUnpackr�r�)rIr6r8rb�keyr:Z
rebuilt_valueZrebuilt_keyrrr �_visit_dict_items�szTreeRebuilder._visit_dict_itemscCs2t�|j|j|�}t|�|||��}|�|�|S)z5visit a Dict node by returning a fresh instance of it)r�Dictr�r��listr�re)rIr6r8rb�itemsrrr �
visit_dict�s
zTreeRebuilder.visit_dictcsJt�|j|j|������|j����|j����fdd�|jD���S)z9visit a DictComp node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz0TreeRebuilder.visit_dictcomp.<locals>.<listcomp>)	rZDictCompr�r�rer4r�r:�
generators)rIr6r8r)rbrIr �visit_dictcomp�szTreeRebuilder.visit_dictcompcCs*t�|j|j|�}|�|�|j|��|S)z5visit a Expr node by returning a fresh instance of it)rrRr�r�rer4r:)rIr6r8rbrrr �
visit_expr�szTreeRebuilder.visit_exprcCst�t|dd�t|dd�|�S)z:visit an Ellipsis node by returning a fresh instance of itr�Nr�)r�Ellipsisr5)rIr6r8rrr �visit_ellipsis�szTreeRebuilder.visit_ellipsiscCst�t|dd�t|dd�|�S)z;visit an EmptyNode node by returning a fresh instance of itr�Nr�)rZ	EmptyNoder5)rIr6r8rrr �visit_emptynodeszTreeRebuilder.visit_emptynodecsJt�|j|j|����t|d���t|d�����fdd�|jD���S)z?visit an ExceptHandler node by returning a fresh instance of itrYr\csg|]}��|���qSr)r4)r`ra)rbrIrr rc
sz5TreeRebuilder.visit_excepthandler.<locals>.<listcomp>)rrr�r�rer;rP)rIr6r8r)rbrIr �visit_excepthandlersz!TreeRebuilder.visit_excepthandlerc	CsBt�|j|j|�}|�|�|j|�t|d||�t|d||��|S)z6visit an Exec node by returning a fresh instance of it�globals�locals)rZExecr�r�rer4rPr;)rIr6r8rbrrr �
visit_execszTreeRebuilder.visit_execcs,tj|d������fdd�|jD���S)z:visit an ExtSlice node by returning a fresh instance of it)r8csg|]}��|���qSr)r4)r`Zdim)rbrIrr rcsz0TreeRebuilder.visit_extslice.<locals>.<listcomp>)rZExtSlicereZdims)rIr6r8r)rbrIr �visit_extsliceszTreeRebuilder.visit_extslicecsj||j|j|����|�}�j��|j����|j����fdd�|jD���fdd�|jD�|d��S)z4visit a For node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc)sz,TreeRebuilder._visit_for.<locals>.<listcomp>csg|]}��|���qSr)r4)r`ra)rbrIrr rc*s)r�r�rP�orelser�)	r�r�r�rer4r�r�rPr�)rIrlr6r8r�r)rbrIr �
_visit_for"s
zTreeRebuilder._visit_forcCs|�tj||�S)N)r�rZFor)rIr6r8rrr �	visit_for/szTreeRebuilder.visit_forc
CsPdd�|jD�}t�|jpd||jp&dt|dd�t|dd�|�}|j�|�|S)z<visit an ImportFrom node by returning a fresh instance of itcSsg|]}|j|jf�qSr)r\�asname)r`�aliasrrr rc4sz2TreeRebuilder.visit_importfrom.<locals>.<listcomp>�Nr�r�)�namesrZ
ImportFromr�levelr5r@r�)rIr6r8r�rbrrr �visit_importfrom2s

zTreeRebuilder.visit_importfromc
s��j�i���|�\}}||j||j|j|��|jrD��|��}nd}trb|j	rb��
|j	��}nd}d}}��|�}	|	r�|	\}}�j��
|j
����fdd�|jD�||||d��j���S)z+visit an FunctionDef node to become astroidNcsg|]}��|���qSr)r4)r`ra)rbrIrr rcUsz4TreeRebuilder._visit_functiondef.<locals>.<listcomp>)rtrPr�r��type_comment_returns�type_comment_args)r?r�rWr\r�r�r�r�rr�r4r�rertrP�pop)
rIrlr6r8rVr�r�r�r�Ztype_comment_annotationr)rbrIr �_visit_functiondefAs,


z TreeRebuilder._visit_functiondefcCs|�tj||�S)N)r�rZFunctionDef)rIr6r8rrr �visit_functiondef^szTreeRebuilder.visit_functiondefcs>t�|j|j|������|j����fdd�|jD���S)z=visit a GeneratorExp node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rcfsz4TreeRebuilder.visit_generatorexp.<locals>.<listcomp>)rZGeneratorExpr�r�rer4�eltr�)rIr6r8r)rbrIr �visit_generatorexpas
z TreeRebuilder.visit_generatorexpcCs�|�|�}|tjkr,t�|j|j|j|�}nP|tjkrft�	|j|j|j|�}t
|tj�s||j�
|�nt�|j|j|j|�}|�|�|j|��|S)z;visit an Attribute node by returning a fresh instance of it)r[r0r2rZDelAttrr7r�r�r1Z
AssignAttrrQrrAr��	Attributerer4r:)rIr6r8�contextrbrrr �visit_attributejs


zTreeRebuilder.visit_attributecCsTt�|jt|dd�t|dd�|�}|jrPx&|jD]}|jd�|g��|�q0W|S)z%visit a Global node to become astroidr�Nr�rn)rZGlobalr�r5r?�
setdefaultr�)rIr6r8rbr\rrr �visit_global{s

zTreeRebuilder.visit_globalcsRt�|j|j|������|j����fdd�|jD���fdd�|jD���S)z4visit an If node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz*TreeRebuilder.visit_if.<locals>.<listcomp>csg|]}��|���qSr)r4)r`ra)rbrIrr rc�s)	rZIfr�r�rer4r�rPr�)rIr6r8r)rbrIr �visit_if�szTreeRebuilder.visit_ifcCsBt�|j|j|�}|�|�|j|�|�|j|�|�|j|��|S)z6visit a IfExp node by returning a fresh instance of it)	rZIfExpr�r�rer4r�rPr�)rIr6r8rbrrr �visit_ifexp�szTreeRebuilder.visit_ifexpcCsfdd�|jD�}t�|t|dd�t|dd�|�}x0|jD]&\}}|pF|}|�|�d�d|�q8W|S)z7visit a Import node by returning a fresh instance of itcSsg|]}|j|jf�qSr)r\r�)r`r�rrr rc�sz.TreeRebuilder.visit_import.<locals>.<listcomp>r�Nr��.r)r�rZImportr5rp�split)rIr6r8r�rbr\r�rrr �visit_import�s

zTreeRebuilder.visit_importcCs$tj|d�}|�|�|j|��|S)z6visit a Index node by returning a fresh instance of it)r8)rZIndexrer4r:)rIr6r8rbrrr �visit_index�szTreeRebuilder.visit_indexcCs(tj|j|d�}|�|�|j|��|S)z8visit a Keyword node by returning a fresh instance of it)r8)rrrsrer4r:)rIr6r8rbrrr �
visit_keyword�szTreeRebuilder.visit_keywordcCs6t�|j|j|�}|�|�|j|�|�|j|��|S)z7visit a Lambda node by returning a fresh instance of it)rZLambdar�r�rer4rtrP)rIr6r8rbrrr �visit_lambda�s zTreeRebuilder.visit_lambdacs@��|�}tj||j|j|d������fdd�|jD���S)z5visit a List node by returning a fresh instance of it)rZr�r�r8csg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz,TreeRebuilder.visit_list.<locals>.<listcomp>)r[rZListr�r�re�elts)rIr6r8r�r)rbrIr �
visit_list�s

zTreeRebuilder.visit_listcs>t�|j|j|������|j����fdd�|jD���S)z9visit a ListComp node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz0TreeRebuilder.visit_listcomp.<locals>.<listcomp>)rZListCompr�r�rer4r�r�)rIr6r8r)rbrIr �visit_listcomp�s
zTreeRebuilder.visit_listcompcCs�|�|�}|tjkr,t�|j|j|j|�}nl|tjkrNt�	|j|j|j|�}nJ|jt
kr�t�t
|jt|dd�t|dd�|�}|St�
|j|j|j|�}|tjtjfkr�|�|�|S)z5visit a Name node by returning a fresh instance of itr�Nr�)r[r0r2rZDelName�idr�r�r1r��CONST_NAME_TRANSFORMSr�r5�Namerq)rIr6r8r�rbrrr rm�s 






zTreeRebuilder.visit_namecCs"t�|jt|dd�t|dd�|�S)z<visit a Constant node by returning a fresh instance of Constr�Nr�)rr�r:r5)rIr6r8rrr �visit_constant�s


zTreeRebuilder.visit_constantcCs"t�|jt|dd�t|dd�|�S)z@visit a String/Bytes node by returning a fresh instance of Constr�Nr�)rr�rTr5)rIr6r8rrr �	visit_str�s


zTreeRebuilder.visit_strcCs"t�|jt|dd�t|dd�|�S)z7visit a Num node by returning a fresh instance of Constr�Nr�)rr��nr5)rIr6r8rrr �	visit_num�s


zTreeRebuilder.visit_numcCst�|j|j|�S)z5visit a Pass node by returning a fresh instance of it)rZPassr�r�)rIr6r8rrr �
visit_passszTreeRebuilder.visit_passcsBt�|j|j|j|����t|d�����fdd�|jD���S)z6visit a Print node by returning a fresh instance of it�destcsg|]}��|���qSr)r4)r`ra)rbrIrr rcsz-TreeRebuilder.visit_print.<locals>.<listcomp>)rZPrint�nlr�r�rer;r�)rIr6r8r)rbrIr �visit_prints
zTreeRebuilder.visit_printc	CsBt�|j|j|�}|�t|d||�t|d||�t|d||��|S)z6visit a Raise node by returning a fresh instance of itrY�instZtback)r�Raiser�r�rer;)rIr6r8rbrrr �visit_raiseszTreeRebuilder.visit_raisecCs4t�|j|j|�}|jdk	r0|�|�|j|��|S)z7visit a Return node by returning a fresh instance of itN)rZReturnr�r�r:rer4)rIr6r8rbrrr �visit_returns
zTreeRebuilder.visit_returncs2t�|j|j|������fdd�|jD���S)z4visit a Set node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc)sz+TreeRebuilder.visit_set.<locals>.<listcomp>)r�Setr�r�rer�)rIr6r8r)rbrIr �	visit_set&szTreeRebuilder.visit_setcs>t�|j|j|������|j����fdd�|jD���S)z8visit a SetComp node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rc1sz/TreeRebuilder.visit_setcomp.<locals>.<listcomp>)rZSetCompr�r�rer4r�r�)rIr6r8r)rbrIr �
visit_setcomp,s
zTreeRebuilder.visit_setcompc	Cs<tj|d�}|�t|d||�t|d||�t|d||��|S)z6visit a Slice node by returning a fresh instance of it)r8rk�upper�step)rZSlicerer;)rIr6r8rbrrr �visit_slice5szTreeRebuilder.visit_slicecCsD|�|�}tj||j|j|d�}|�|�|j|�|�|j|��|S)z:visit a Subscript node by returning a fresh instance of it)rZr�r�r8)	r[rZ	Subscriptr�r�rer4r:�slice)rIr6r8r�rbrrr �visit_subscript?s
zTreeRebuilder.visit_subscriptcsZt�|j|j|������fdd�|jD���fdd�|jD���fdd�|jD���S)z:visit a TryExcept node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rcNsz1TreeRebuilder.visit_tryexcept.<locals>.<listcomp>csg|]}��|���qSr)r4)r`ra)rbrIrr rcOscsg|]}��|���qSr)r4)r`ra)rbrIrr rcPs)rZ	TryExceptr�r�rerP�handlersr�)rIr6r8r)rbrIr �visit_tryexceptJszTreeRebuilder.visit_tryexceptcsFt�|j|j|������fdd�|jD���fdd�|jD���S)z;visit a TryFinally node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rcXsz2TreeRebuilder.visit_tryfinally.<locals>.<listcomp>csg|]}��|���qSr)r4)r`r�)rbrIrr rcYs)r�
TryFinallyr�r�rerP�	finalbody)rIr6r8r)rbrIr �visit_tryfinallyTs
zTreeRebuilder.visit_tryfinallycs@��|�}tj||j|j|d������fdd�|jD���S)z6visit a Tuple node by returning a fresh instance of it)rZr�r�r8csg|]}��|���qSr)r4)r`ra)rbrIrr rccsz-TreeRebuilder.visit_tuple.<locals>.<listcomp>)r[rZTupler�r�rer�)rIr6r8r�r)rbrIr �visit_tuple]s

zTreeRebuilder.visit_tuplecCs6t�|j|jj|j|j|�}|�|�|j	|��|S)z8visit a UnaryOp node by returning a fresh instance of it)
rZUnaryOprDr�rhr�r�rer4Zoperand)rIr6r8rbrrr �
visit_unaryopfszTreeRebuilder.visit_unaryopcsRt�|j|j|������|j����fdd�|jD���fdd�|jD���S)z6visit a While node by returning a fresh instance of itcsg|]}��|���qSr)r4)r`ra)rbrIrr rcvsz-TreeRebuilder.visit_while.<locals>.<listcomp>csg|]}��|���qSr)r4)r`ra)rbrIrr rcws)	rZWhiler�r�rer4r�rPr�)rIr6r8r)rbrIr �visit_whileqszTreeRebuilder.visit_whilecstt�|j|j|����|j��}|jdk	r:��|j��}nd}��|�}�j||fg��fdd�|j	D�|d��S)Ncsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz,TreeRebuilder.visit_with.<locals>.<listcomp>)r�rPr�)
r�Withr�r�r4�context_expr�
optional_varsr�rerP)rIr6r8r�r
r�r)rbrIr �
visit_with{s

zTreeRebuilder.visit_withcCs4t�|j|j|�}|jdk	r0|�|�|j|��|S)z6visit a Yield node by returning a fresh instance of itN)rZYieldr�r�r:rer4)rIr6r8rbrrr �visit_yield�s
zTreeRebuilder.visit_yield)F)N)N)N)Kri�
__module__�__qualname__�__doc__�boolrKrWr[rgr4rqr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rmr�r�Zvisit_bytesr�r�r�r�r�r�r�r�r�rrrrrrrrrrr r<ms�
>



#
	

	


		
				

		
r<cs�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Z�fdd�Zdd�Z
dd�Zd'�fdd�	Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Z�ZS)(�TreeRebuilder3z/extend and overwrite TreeRebuilder for python3kcCs|�|||j�S)z7visit an arg node by returning a fresh AssName instance)r�rs)rIr6r8rrr �	visit_arg�szTreeRebuilder3.visit_argcCs"t�|jt|dd�t|dd�|�S)Nr�r�)rr�r:r5)rIr6r8rrr �visit_nameconstant�s


z!TreeRebuilder3.visit_nameconstantcs\t�|j|j|��|jr*��|�|j�}nd}��t|d���|��fdd�|jD���S)z?visit an ExceptHandler node by returning a fresh instance of itNrYcsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz6TreeRebuilder3.visit_excepthandler.<locals>.<listcomp>)	rrr�r�r\r�rer;rP)rIr6r8r\r)rbrIr r��sz"TreeRebuilder3.visit_excepthandlercCs"t�|jt|dd�t|dd�|�S)z5visit a Nonlocal node and return a new instance of itr�Nr�)rZNonlocalr�r5)rIr6r8rrr �visit_nonlocal�s


zTreeRebuilder3.visit_nonlocalcCs6t�|j|j|�}|�t|d||�t|d||��|S)z6visit a Raise node by returning a fresh instance of it�exc�cause)rr�r�r�rer;)rIr6r8rbrrr r��s
zTreeRebuilder3.visit_raisecCs8|�|�}tj||j|j|d�}|�|�|j|��|S)z4visit a Starred node and return a new instance of it)rZr�r�r8)r[rr�r�r�rer4r:)rIr6r8r�rbrrr �
visit_starred�s

zTreeRebuilder3.visit_starredcs||jrft�|j|j|��|jr.��|��g}n��fdd�|jD�}��|��fdd�|jD���S|jrx��||�SdS)Ncsg|]}��|���qSr)r4)r`ra)rbrIrr rc�sz,TreeRebuilder3.visit_try.<locals>.<listcomp>csg|]}��|���qSr)r4)r`r�)rbrIrr rc�s)	rrrr�r�rrrPre)rIr6r8rPr)rbrIr �	visit_try�szTreeRebuilder3.visit_tryc	CsLt�|j|j|�}t|d||�}|j|�|j|�||jt|d||�d�|S)z;visit an AnnAssign node by returning a fresh instance of itrrr:)r�rr�simpler:)	rZ	AnnAssignr�r�r;rer4r�r)rIr6r8rbrrrrr �visit_annassign�szTreeRebuilder3.visit_annassigncszd|jkrtt���||�S||j|j|����fdd����|�}�j�fdd�|jD���fdd�|j	D�|d��S)Nr�cs$��|j��}t|d���}||fS)Nr
)r4r	r;)rar��var)rbrIrr �visit_child�sz/TreeRebuilder3._visit_with.<locals>.visit_childcsg|]}�|��qSrr)r`ra)rrr rc�sz.TreeRebuilder3._visit_with.<locals>.<listcomp>csg|]}��|���qSr)r4)r`ra)rbrIrr rc�s)r�rPr�)
�_fields�superrrr�r�r�rer�rP)rIrlr6r8r�)rh)rbrIrr �_visit_with�s

zTreeRebuilder3._visit_withcCs|�tj||�S)N)rrr)rIr6r8rrr r�szTreeRebuilder3.visit_withcCs4t�|j|j|�}|jdk	r0|�|�|j|��|S)N)rZ	YieldFromr�r�r:rer4)rIr6r8rbrrr �visit_yieldfroms
zTreeRebuilder3.visit_yieldfromTcstt|�j|||d�S)N)r�)rrr�)rIr6r8r�)rhrr r�s
zTreeRebuilder3.visit_classdefcCs|�tj||�S)N)r�rZAsyncFunctionDef)rIr6r8rrr �visit_asyncfunctiondefsz%TreeRebuilder3.visit_asyncfunctiondefcCs|�tj||�S)N)r�rZAsyncFor)rIr6r8rrr �visit_asyncforszTreeRebuilder3.visit_asyncforcCs,t�|j|j|�}|j|�|j|�d�|S)N)r:)rZAwaitr�r�rer4r:)rIr6r8rbrrr �visit_awaitszTreeRebuilder3.visit_awaitcCs|�tj||�S)N)rrZ	AsyncWith)rIr6r8rrr �visit_asyncwithszTreeRebuilder3.visit_asyncwithcs2t�|j|j|������fdd�|jD���S)Ncsg|]}��|���qSr)r4)r`ra)rbrIrr rcsz2TreeRebuilder3.visit_joinedstr.<locals>.<listcomp>)rZ	JoinedStrr�r�rer�)rIr6r8r)rbrIr �visit_joinedstrszTreeRebuilder3.visit_joinedstrc	Cs:t�|j|j|�}|�|�|j|�|jt|d||��|S)N�format_spec)	rZFormattedValuer�r�rer4r:�
conversionr;)rIr6r8rbrrr �visit_formattedvaluesz#TreeRebuilder3.visit_formattedvalue)T)rir
rrrrr�rr�rrrrrr r�r!r"r#r$r%r(�
__classcell__rr)rhr r�s&		
	r)r4)rrr0Zastroid._astrrrrr�rjrrr~rNr!r&r)r.r3r;r<rrrrr �<module>s>


	
,