Your IP : 216.73.216.85


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.opt-1.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)Z	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)ZAndZOr)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_moduleXsr0�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�parentr1�kws�valuerrr�_visit_or_noneasr8c@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:)Z_manager�
_global_names�_import_from_nodes�_delayed_assattr�_visit_methsr�_parser_moduler&�_unary_op_classesr+�_cmp_op_classesr#�_bool_op_classesr �_bin_op_classesr0�_context_classes)�selfZmanagerr: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�hasattrrG�body�
isinstancer?�Exprr7ZStr�s�
IndexError)rEr3�docrrr�_get_docszTreeRebuilder._get_doccCs|j�t|j�tj�S)N)rD�get�type�ctxr-r,)rEr3rrr�_get_context�szTreeRebuilder._get_contextcsF��|�\}}tj||||g|dd������fdd�|jD���S)z7visit a Module node by returning a fresh instance of itN)�namerP�file�path�packager5csg|]}��|���qSr)r1)�.0�child)�newnoderErr�
<listcomp>�sz.TreeRebuilder.visit_module.<locals>.<listcomp>)rQrZModule�postinitrK)rEr3�modnameZmodpathrYrPr)r\rEr�visit_module�szTreeRebuilder.visit_modulecCsT|j}||jkr|j|}n.|j}dt�||���}t||�}||j|<|||�S)NZvisit_)�	__class__r>�__name__�REDIRECTrR�lowerr2)rEr3r5�clsZvisit_methodZcls_name�
visit_namerrrr1�s


zTreeRebuilder.visitNcCs>|jr*|j|jdkr*|���|j|�n|j�|j|�dS)zAsave assignement situation since node.parent is not available yet���N)r;rV�root�	set_localr5)rEr3rVrrr�_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)r1)rZr[)r\rErrr]�sz1TreeRebuilder.visit_arguments.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr[)r\rErrr]�scsg|]}��|���qSr)r1)rZr[)r\rErrr]�scs g|]}|r��|��nd�qS)N)r1)rZr[)r\rErrr]�scs$g|]}|jr��|j��nd�qS)N)�
annotationr1)rZ�arg)r\rErrr]�scs$g|]}|jr��|j��nd�qS)N)rkr1)rZrl)r\rErrr]�s)�args�defaults�
kwonlyargs�kw_defaults�annotations�kwonlyargs_annotations�varargannotation�kwargannotation)�vararg�kwarg�PY34rr	rlrmrnrkr1�PY3rorpr^r5ri)
rEr3r5rurvrmrnrsrtrorprqrrr)r\rEr�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�msgr1r^�test)rEr3r5r\r|rrr�visit_assert�szTreeRebuilder.visit_assertcCs^t|dd�}|sdSyt|�}Wntk
r4dSX|�|jd|�}t|tj�sXdS|jS)N�type_commentr)	r2r�SyntaxErrorr1rKrLrrMr7)rEr3r�type_comment_astZtype_objectrrr�check_type_comment�sz TreeRebuilder.check_type_commentcspt�dd�}|sdSyt|�}Wntk
r4dSXd}��fdd�|jpNgD�}|jrh��|j��}||fS)Nrcsg|]}��|���qSr)r1)rZ�elem)r3rErrr]sz=TreeRebuilder.check_function_type_comment.<locals>.<listcomp>)r2rr��argtypes�returnsr1)rEr3rr�r�r�r)r3rEr�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)r1)rZr[)r\rErrr]%sz.TreeRebuilder.visit_assign.<locals>.<listcomp>)�targetsr7�type_annotation)	r�rZAssignrzr{r^r�r1r7)rEr3r5r�r)r\rEr�visit_assign s
zTreeRebuilder.visit_assigncCs.t�|t|dd�t|dd�|�}|�|�|S)z)visit a node and return a AssignName noderzNr{)r�
AssignNamer2rj)rEr3r5Z	node_namer\rrr�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	AugAssignrCrS�oprzr{r^r1�targetr7)rEr3r5r\rrr�visit_augassign6szTreeRebuilder.visit_augassigncCs*t�|j|j|�}|�|�|j|��|S)z:visit a Backquote node by returning a fresh instance of it)r�Reprrzr{r^r1r7)rEr3r5r\rrr�
visit_reprCszTreeRebuilder.visit_reprcCsDt�|jt|j�|j|j|�}|�|�|j	|�|�|j
|��|S)z6visit a BinOp node by returning a fresh instance of it)rZBinOprCrSr�rzr{r^r1�left�right)rEr3r5r\rrr�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)r1)rZr[)r\rErrr]Xsz.TreeRebuilder.visit_boolop.<locals>.<listcomp>)	rZBoolOprBrSr�rzr{r^�values)rEr3r5r)r\rEr�visit_boolopSszTreeRebuilder.visit_boolopcCst�t|dd�t|dd�|�S)z6visit a Break node by returning a fresh instance of itrzNr{)rZBreakr2)rEr3r5rrr�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)r1)rZr[)r\rErrr]fsz,TreeRebuilder.visit_call.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr[)r\rErrr]isN)r{rzr5)r7)rlr{rzr5)rZCallrzr{r8rm�keywords�Starredr5r^�appendrr1�func)	rEr3r5r�r�rmr�Znew_starargsZ
new_kwargsr)r\rEr�
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)r1)rZr[)r\rErrr]�sz0TreeRebuilder.visit_classdef.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr[)r\rErrr]�scs"g|]}|jdkr��|���qS)r�)rlr1)rZZkwd)r\rErrr]�s)rQrZClassDefrVrzr{rxr�rlr1r7�decorator_list�visit_decoratorsr^�basesrK)rEr3r5�newstylerPr�r
�
decoratorsr)r\rEr�visit_classdef�s(
zTreeRebuilder.visit_classdefcCs"t�|jt|dd�t|dd�|�S)z6visit a Const node by returning a fresh instance of itrzNr{)r�Constr7r2)rEr3r5rrr�visit_const�s


zTreeRebuilder.visit_constcCst�t|dd�t|dd�|�S)z9visit a Continue node by returning a fresh instance of itrzNr{)rZContinuer2)rEr3r5rrr�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)rArar1)rZr��expr)r\rErrr]�sz/TreeRebuilder.visit_compare.<locals>.<listcomp>)
rZComparerzr{r^r1r��zipZopsZcomparators)rEr3r5r)r\rEr�
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)r1)rZr[)r\rErrr]�sz5TreeRebuilder.visit_comprehension.<locals>.<listcomp>Zis_asyncN)rr
r^r1r��iterZifsr2)rEr3r5r)r\rEr�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)r1)rZr[)r\rErrr]�sz2TreeRebuilder.visit_decorators.<locals>.<listcomp>)rZ
Decoratorsrzr{r^r�)rEr3r5r)r\rErr��szTreeRebuilder.visit_decoratorscs2t�|j|j|������fdd�|jD���S)z7visit a Delete node by returning a fresh instance of itcsg|]}��|���qSr)r1)rZr[)r\rErrr]�sz.TreeRebuilder.visit_delete.<locals>.<listcomp>)rZDeleterzr{r^r�)rEr3r5r)r\rEr�visit_delete�szTreeRebuilder.visit_deleteccsZxTt|j|j�D]B\}}|�||�}|s<t�|j|j|�}n|�||�}||fVqWdS)N)r��keysr�r1rZ
DictUnpackrzr{)rEr3r5r\�keyr7Z
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)rZDictrzr{�listr�r^)rEr3r5r\�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)r1)rZr[)r\rErrr]�sz0TreeRebuilder.visit_dictcomp.<locals>.<listcomp>)	rZDictComprzr{r^r1r�r7�
generators)rEr3r5r)r\rEr�visit_dictcomp�szTreeRebuilder.visit_dictcompcCs*t�|j|j|�}|�|�|j|��|S)z5visit a Expr node by returning a fresh instance of it)rrMrzr{r^r1r7)rEr3r5r\rrr�
visit_expr�szTreeRebuilder.visit_exprcCst�t|dd�t|dd�|�S)z:visit an Ellipsis node by returning a fresh instance of itrzNr{)r�Ellipsisr2)rEr3r5rrr�visit_ellipsis�szTreeRebuilder.visit_ellipsiscCst�t|dd�t|dd�|�S)z;visit an EmptyNode node by returning a fresh instance of itrzNr{)rZ	EmptyNoder2)rEr3r5rrr�visit_emptynodeszTreeRebuilder.visit_emptynodecsJt�|j|j|����t|d���t|d�����fdd�|jD���S)z?visit an ExceptHandler node by returning a fresh instance of itrSrVcsg|]}��|���qSr)r1)rZr[)r\rErrr]
sz5TreeRebuilder.visit_excepthandler.<locals>.<listcomp>)rrrzr{r^r8rK)rEr3r5r)r\rEr�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)rZExecrzr{r^r1rKr8)rEr3r5r\rrr�
visit_execszTreeRebuilder.visit_execcs,tj|d������fdd�|jD���S)z:visit an ExtSlice node by returning a fresh instance of it)r5csg|]}��|���qSr)r1)rZZdim)r\rErrr]sz0TreeRebuilder.visit_extslice.<locals>.<listcomp>)rZExtSlicer^Zdims)rEr3r5r)r\rEr�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)r1)rZr[)r\rErrr])sz,TreeRebuilder._visit_for.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr[)r\rErrr]*s)r�r�rK�orelser�)	rzr{r�r^r1r�r�rKr�)rErer3r5r�r)r\rEr�
_visit_for"s
zTreeRebuilder._visit_forcCs|�tj||�S)N)r�rZFor)rEr3r5rrr�	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)rV�asname)rZ�aliasrrrr]4sz2TreeRebuilder.visit_importfrom.<locals>.<listcomp>�Nrzr{)�namesrZ
ImportFromr�levelr2r<r�)rEr3r5r�r\rrr�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)r1)rZr[)r\rErrr]Usz4TreeRebuilder._visit_functiondef.<locals>.<listcomp>)rmrKr�r��type_comment_returns�type_comment_args)r;r�rQrVrzr{r�r�rxr�r1r�r^rmrK�pop)
rErer3r5rPr�r�r�r�Ztype_comment_annotationr)r\rEr�_visit_functiondefAs,


z TreeRebuilder._visit_functiondefcCs|�tj||�S)N)r�rZFunctionDef)rEr3r5rrr�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)r1)rZr[)r\rErrr]fsz4TreeRebuilder.visit_generatorexp.<locals>.<listcomp>)rZGeneratorExprzr{r^r1�eltr�)rEr3r5r)r\rEr�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)rUr-r/rZDelAttrr4rzr{r.Z
AssignAttrrLrr=r�Z	Attributer^r1r7)rEr3r5�contextr\rrr�visit_attributejs


zTreeRebuilder.visit_attributecCsTt�|jt|dd�t|dd�|�}|jrPx&|jD]}|jd�|g��|�q0W|S)z%visit a Global node to become astroidrzNr{rg)rZGlobalr�r2r;�
setdefaultr�)rEr3r5r\rVrrr�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)r1)rZr[)r\rErrr]�sz*TreeRebuilder.visit_if.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr[)r\rErrr]�s)	rZIfrzr{r^r1r}rKr�)rEr3r5r)r\rEr�visit_if�szTreeRebuilder.visit_ifcCsBt�|j|j|�}|�|�|j|�|�|j|�|�|j|��|S)z6visit a IfExp node by returning a fresh instance of it)	rZIfExprzr{r^r1r}rKr�)rEr3r5r\rrr�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)rVr�)rZr�rrrr]�sz.TreeRebuilder.visit_import.<locals>.<listcomp>rzNr{�.r)r�rZImportr2ri�split)rEr3r5r�r\rVr�rrr�visit_import�s

zTreeRebuilder.visit_importcCs$tj|d�}|�|�|j|��|S)z6visit a Index node by returning a fresh instance of it)r5)rZIndexr^r1r7)rEr3r5r\rrr�visit_index�szTreeRebuilder.visit_indexcCs(tj|j|d�}|�|�|j|��|S)z8visit a Keyword node by returning a fresh instance of it)r5)rrrlr^r1r7)rEr3r5r\rrr�
visit_keyword�szTreeRebuilder.visit_keywordcCs6t�|j|j|�}|�|�|j|�|�|j|��|S)z7visit a Lambda node by returning a fresh instance of it)rZLambdarzr{r^r1rmrK)rEr3r5r\rrr�visit_lambda�s zTreeRebuilder.visit_lambdacs@��|�}tj||j|j|d������fdd�|jD���S)z5visit a List node by returning a fresh instance of it)rTrzr{r5csg|]}��|���qSr)r1)rZr[)r\rErrr]�sz,TreeRebuilder.visit_list.<locals>.<listcomp>)rUrZListrzr{r^�elts)rEr3r5r�r)r\rEr�
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)r1)rZr[)r\rErrr]�sz0TreeRebuilder.visit_listcomp.<locals>.<listcomp>)rZListComprzr{r^r1r�r�)rEr3r5r)r\rEr�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 itrzNr{)rUr-r/rZDelName�idrzr{r.r��CONST_NAME_TRANSFORMSr�r2�Namerj)rEr3r5r�r\rrrrf�s 






zTreeRebuilder.visit_namecCs"t�|jt|dd�t|dd�|�S)z<visit a Constant node by returning a fresh instance of ConstrzNr{)rr�r7r2)rEr3r5rrr�visit_constant�s


zTreeRebuilder.visit_constantcCs"t�|jt|dd�t|dd�|�S)z@visit a String/Bytes node by returning a fresh instance of ConstrzNr{)rr�rNr2)rEr3r5rrr�	visit_str�s


zTreeRebuilder.visit_strcCs"t�|jt|dd�t|dd�|�S)z7visit a Num node by returning a fresh instance of ConstrzNr{)rr��nr2)rEr3r5rrr�	visit_num�s


zTreeRebuilder.visit_numcCst�|j|j|�S)z5visit a Pass node by returning a fresh instance of it)rZPassrzr{)rEr3r5rrr�
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)r1)rZr[)r\rErrr]sz-TreeRebuilder.visit_print.<locals>.<listcomp>)rZPrint�nlrzr{r^r8r�)rEr3r5r)r\rEr�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 itrS�instZtback)r�Raiserzr{r^r8)rEr3r5r\rrr�visit_raiseszTreeRebuilder.visit_raisecCs4t�|j|j|�}|jdk	r0|�|�|j|��|S)z7visit a Return node by returning a fresh instance of itN)rZReturnrzr{r7r^r1)rEr3r5r\rrr�visit_returns
zTreeRebuilder.visit_returncs2t�|j|j|������fdd�|jD���S)z4visit a Set node by returning a fresh instance of itcsg|]}��|���qSr)r1)rZr[)r\rErrr])sz+TreeRebuilder.visit_set.<locals>.<listcomp>)r�Setrzr{r^r�)rEr3r5r)r\rEr�	visit_set&szTreeRebuilder.visit_setcs>t�|j|j|������|j����fdd�|jD���S)z8visit a SetComp node by returning a fresh instance of itcsg|]}��|���qSr)r1)rZr[)r\rErrr]1sz/TreeRebuilder.visit_setcomp.<locals>.<listcomp>)rZSetComprzr{r^r1r�r�)rEr3r5r)r\rEr�
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)r5rd�upper�step)rZSlicer^r8)rEr3r5r\rrr�visit_slice5szTreeRebuilder.visit_slicecCsD|�|�}tj||j|j|d�}|�|�|j|�|�|j|��|S)z:visit a Subscript node by returning a fresh instance of it)rTrzr{r5)	rUrZ	Subscriptrzr{r^r1r7�slice)rEr3r5r�r\rrr�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)r1)rZr[)r\rErrr]Nsz1TreeRebuilder.visit_tryexcept.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr[)r\rErrr]Oscsg|]}��|���qSr)r1)rZr[)r\rErrr]Ps)rZ	TryExceptrzr{r^rK�handlersr�)rEr3r5r)r\rEr�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)r1)rZr[)r\rErrr]Xsz2TreeRebuilder.visit_tryfinally.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr�)r\rErrr]Ys)r�
TryFinallyrzr{r^rK�	finalbody)rEr3r5r)r\rEr�visit_tryfinallyTs
zTreeRebuilder.visit_tryfinallycs@��|�}tj||j|j|d������fdd�|jD���S)z6visit a Tuple node by returning a fresh instance of it)rTrzr{r5csg|]}��|���qSr)r1)rZr[)r\rErrr]csz-TreeRebuilder.visit_tuple.<locals>.<listcomp>)rUrZTuplerzr{r^r�)rEr3r5r�r)r\rEr�visit_tuple]s

zTreeRebuilder.visit_tuplecCs6t�|j|jj|j|j|�}|�|�|j	|��|S)z8visit a UnaryOp node by returning a fresh instance of it)
rZUnaryOpr@r�rarzr{r^r1Zoperand)rEr3r5r\rrr�
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)r1)rZr[)r\rErrr]vsz-TreeRebuilder.visit_while.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr[)r\rErrr]ws)	rZWhilerzr{r^r1r}rKr�)rEr3r5r)r\rEr�visit_whileqszTreeRebuilder.visit_whilecstt�|j|j|����|j��}|jdk	r:��|j��}nd}��|�}�j||fg��fdd�|j	D�|d��S)Ncsg|]}��|���qSr)r1)rZr[)r\rErrr]�sz,TreeRebuilder.visit_with.<locals>.<listcomp>)r�rKr�)
r�Withrzr{r1�context_expr�
optional_varsr�r^rK)rEr3r5r�rr�r)r\rEr�
visit_with{s

zTreeRebuilder.visit_withcCs4t�|j|j|�}|jdk	r0|�|�|j|��|S)z6visit a Yield node by returning a fresh instance of itN)rZYieldrzr{r7r^r1)rEr3r5r\rrr�visit_yield�s
zTreeRebuilder.visit_yield)F)N)N)N)Krb�
__module__�__qualname__�__doc__�boolrFrQrUr`r1rjryr~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�rfr�r�Zvisit_bytesr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr9ms�
>



#
	

	


		
				

		
r9cs�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�rl)rEr3r5rrr�	visit_arg�szTreeRebuilder3.visit_argcCs"t�|jt|dd�t|dd�|�S)Nrzr{)rr�r7r2)rEr3r5rrr�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 itNrScsg|]}��|���qSr)r1)rZr[)r\rErrr]�sz6TreeRebuilder3.visit_excepthandler.<locals>.<listcomp>)	rrrzr{rVr�r^r8rK)rEr3r5rVr)r\rErr��sz"TreeRebuilder3.visit_excepthandlercCs"t�|jt|dd�t|dd�|�S)z5visit a Nonlocal node and return a new instance of itrzNr{)rZNonlocalr�r2)rEr3r5rrr�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�rzr{r^r8)rEr3r5r\rrrr��s
zTreeRebuilder3.visit_raisecCs8|�|�}tj||j|j|d�}|�|�|j|��|S)z4visit a Starred node and return a new instance of it)rTrzr{r5)rUrr�rzr{r^r1r7)rEr3r5r�r\rrr�
visit_starred�s

zTreeRebuilder3.visit_starredcs||jrft�|j|j|��|jr.��|��g}n��fdd�|jD�}��|��fdd�|jD���S|jrx��||�SdS)Ncsg|]}��|���qSr)r1)rZr[)r\rErrr]�sz,TreeRebuilder3.visit_try.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr�)r\rErrr]�s)	r�rr�rzr{r�r�rKr^)rEr3r5rKr)r\rEr�	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 itrkr7)r�rk�simpler7)	rZ	AnnAssignrzr{r8r^r1r�r)rEr3r5r\rkrrr�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)r1r�r8)r[r��var)r\rErr�visit_child�sz/TreeRebuilder3._visit_with.<locals>.visit_childcsg|]}�|��qSrr)rZr[)rrrr]�sz.TreeRebuilder3._visit_with.<locals>.<listcomp>csg|]}��|���qSr)r1)rZr[)r\rErrr]�s)r�rKr�)
�_fields�superrrrzr{r�r^r�rK)rErer3r5r�)ra)r\rErr�_visit_with�s

zTreeRebuilder3._visit_withcCs|�tj||�S)N)rrr�)rEr3r5rrrr�szTreeRebuilder3.visit_withcCs4t�|j|j|�}|jdk	r0|�|�|j|��|S)N)rZ	YieldFromrzr{r7r^r1)rEr3r5r\rrr�visit_yieldfroms
zTreeRebuilder3.visit_yieldfromTcstt|�j|||d�S)N)r�)rrr�)rEr3r5r�)rarrr�s
zTreeRebuilder3.visit_classdefcCs|�tj||�S)N)r�rZAsyncFunctionDef)rEr3r5rrr�visit_asyncfunctiondefsz%TreeRebuilder3.visit_asyncfunctiondefcCs|�tj||�S)N)r�rZAsyncFor)rEr3r5rrr�visit_asyncforszTreeRebuilder3.visit_asyncforcCs,t�|j|j|�}|j|�|j|�d�|S)N)r7)rZAwaitrzr{r^r1r7)rEr3r5r\rrr�visit_awaitszTreeRebuilder3.visit_awaitcCs|�tj||�S)N)rrZ	AsyncWith)rEr3r5rrr�visit_asyncwithszTreeRebuilder3.visit_asyncwithcs2t�|j|j|������fdd�|jD���S)Ncsg|]}��|���qSr)r1)rZr[)r\rErrr]sz2TreeRebuilder3.visit_joinedstr.<locals>.<listcomp>)rZ	JoinedStrrzr{r^r�)rEr3r5r)r\rEr�visit_joinedstrszTreeRebuilder3.visit_joinedstrc	Cs:t�|j|j|�}|�|�|j|�|jt|d||��|S)N�format_spec)	rZFormattedValuerzr{r^r1r7�
conversionr8)rEr3r5r\rrr�visit_formattedvaluesz#TreeRebuilder3.visit_formattedvalue)T)rbrrrrr	r�r
r�r
rrrrrr�rrrrrr�
__classcell__rr)rarr�s&		
	r)r1)rrr-Zastroid._astrrrrr�rcrrxrwrIr r#r&r+r0r8r9rrrrr�<module>s>


	
,