
%![c           @   s  d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z i d e j 6d e j 6d e j 6d e j	 6d	 e j
 6d
 e j 6d e j 6d e j 6d e j 6d e j 6d e j 6d e j 6Z e j d d f k r d e e j <n  i d e j 6d e j 6Z i d e j 6d e j 6d e j 6d e j 6Z i
 d e j 6d e j 6d e j 6d e j  6d e j! 6d e j" 6d e j# 6d e j$ 6d  e j% 6d! e j& 6Z' i e( d" 6e) d# 6e* d$ 6Z+ i d% d& 6d' d( 6d' d) 6d' d* 6d+ d, 6d- d. 6Z, e j d d/ f k Z- e j d d0 f k Z. i e j/ e j/ 6e j0 e j0 6e j1 e j1 6e j0 e j2 6Z3 d1   Z4 d2 d3  Z5 d4   Z6 d5 e7 f d6     YZ8 d7 e8 f d8     YZ9 e j d d/ f k re9 Z8 n  d S(9   sj   this module contains utilities for rebuilding a _ast tree in
order to get a single Astroid representation
iN(   t   astpeephole(   t   nodest   +t   &t   |t   ^t   /s   //t   %t   *s   **t   -s   <<s   >>i   i   t   @t   andt   ort   nott   ~s   ==t   >s   >=t   int   iss   is nott   <s   <=s   !=s   not int   Nonet   Truet   Falset	   Argumentst	   argumentst   Comprehensiont   comprehensiont   ListCompFort
   GenExprFort   ExceptHandlert   excepthandlert   Keywordt   keywordi    i   c         C   s   yf t  |  j d t j  re t  |  j d j t j  re |  j d j j } |  j d |  _ |  | f SWn t k
 ry n X|  d  f S(   Ni    i   (	   t
   isinstancet   bodyt   _astt   Exprt   valuet   Strt   st
   IndexErrorR   (   t   nodet   doc(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   _get_docP   s    5t   visitc         K   s5   t  |  | d  } | r1 t  | |  | | |  Sd S(   s_   If the given node has an attribute, visits the attribute, and
    otherwise returns None.

    N(   t   getattrR   (   R(   t   attrt   visitort   parentR+   t   kwsR$   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   _visit_or_noneZ   s    c         C   s   t  j t |  j  t j  S(   N(   t   CONTEXTSt   gett   typet   ctxt   astroidt   Load(   R(   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   _get_contextg   s    t   TreeRebuilderc           B   s]  e  Z d  Z d   Z d   Z d   Z dA d  Z d   Z d   Z	 d   Z
 dA d  Z d	   Z d
   Z d   Z d   Z d   Z d   Z dA d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d    Z# d!   Z$ d"   Z% d#   Z& d$   Z' d%   Z( d&   Z) d'   Z* d(   Z+ d)   Z, d*   Z- d+   Z. d,   Z/ d-   Z0 d.   Z1 d/   Z2 d0   Z3 e3 Z4 d1   Z5 d2   Z6 d3   Z7 d4   Z8 d5   Z9 d6   Z: d7   Z; d8   Z< d9   Z= d:   Z> d;   Z? d<   Z@ d=   ZA d>   ZB d?   ZC d@   ZD RS(B   s0   Rebuilds the _ast tree to become an Astroid treec         C   s@   | |  _  g  |  _ g  |  _ g  |  _ i  |  _ t j   |  _ d  S(   N(   t   _managert   _global_namest   _import_from_nodest   _delayed_assattrt   _visit_methsR    t   ASTPeepholeOptimizert
   _peepholer(   t   selft   manager(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   __init__n   s    					c         C   su   t  |  \ } } t j d | d | d | d | d | d d  } | j g  | j D] } |  j | |  ^ qR  | S(   s7   visit a Module node by returning a fresh instance of itt   nameR)   t   filet   patht   packageR/   N(   R*   R   t   ModuleR   t   postinitR!   R+   (   RA   R(   t   modnamet   modpathRG   R)   t   newnodet   child(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_modulev   s
    !/c         C   sv   | j  } | |  j k r( |  j | } nA | j } d t j | |  j   } t |  |  } | |  j | <| | |  S(   Nt   visit_(   t	   __class__R>   t   __name__t   REDIRECTR3   t   lowerR,   (   RA   R(   R/   t   clst   visit_methodt   cls_namet
   visit_name(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyR+   ~   s    		c         C   sU   |  j  r; | j |  j  d k r; | j   j | j |  n | j j | j |  d S(   sA   save assignement situation since node.parent is not available yetiN(   R;   RD   t   roott	   set_localR/   (   RA   R(   RD   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   _save_assignment   s    c         C   s  | j  | j } } t rO t j | r. | j n d	 | r@ | j n d	 |  } n t j | | |  } g  | j D] } |  j | |  ^ qn } g  | j	 D] } |  j | |  ^ q } d	 }	 d	 }
 | rt r| j  j
 r |  j | j  j
 |  }	 n  | j } qn  | rDt rD| j j
 r5|  j | j j
 |  }
 n  | j } qDn  t rg  | j D] } |  j | |  ^ qT} g  | j D]$ } | r|  j | |  n d	 ^ q|} g  | j D]* } | j
 r|  j | j
 |  n d	 ^ q} g  | j D]* } | j
 r|  j | j
 |  n d	 ^ q} n g  } g  } g  } g  } | j d | d | d | d | d | d | d |	 d |
  | r| j j | |  n  | r| j j | |  n  | S(
   s:   visit a Arguments node by returning a fresh instance of itt   argst   defaultst
   kwonlyargst   kw_defaultst   annotationst   kwonlyargs_annotationst   varargannotationt   kwargannotationN(   t   varargt   kwargt   PY34R   R   t   argR   R[   R+   R\   t
   annotationt   PY3R]   R^   RI   R/   RY   (   RA   R(   R/   Rc   Rd   RL   RM   R[   R\   Ra   Rb   R]   R^   Rf   R_   R`   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_arguments   sd    (%%17:	c         C   se   t  j | j | j |  } | j r< |  j | j |  } n d } | j |  j | j |  |  | S(   s7   visit a Assert node by returning a fresh instance of itN(	   R   t   Assertt   linenot
   col_offsett   msgR+   R   RI   t   test(   RA   R(   R/   RL   Rm   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_assert   s    	c         C   s`   t  j | j | j |  } | j g  | j D] } |  j | |  ^ q+ |  j | j |   | S(   s7   visit a Assign node by returning a fresh instance of it(   R   t   AssignRk   Rl   RI   t   targetsR+   R$   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_assign   s
    	"c         C   sA   t  j | t | d d  t | d d  |  } |  j |  | S(   s)   visit a node and return a AssignName nodeRk   Rl   N(   R   t
   AssignNameR,   R   RZ   (   RA   R(   R/   t	   node_nameRL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_assignname   s    c         C   sa   t  j t t | j  d | j | j |  } | j |  j | j	 |  |  j | j
 |   | S(   s:   visit a AugAssign node by returning a fresh instance of itt   =(   R   t	   AugAssignt   _BIN_OP_CLASSESR4   t   opRk   Rl   RI   R+   t   targetR$   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_augassign   s
    c         C   s;   t  j | j | j |  } | j |  j | j |   | S(   s:   visit a Backquote node by returning a fresh instance of it(   R   t   ReprRk   Rl   RI   R+   R$   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt
   visit_repr   s    c         C   s   t  | j t j  rC |  j j rC |  j j | |  } | rC | Sn  t j t	 t
 | j  | j | j |  } | j |  j | j |  |  j | j |   | S(   s6   visit a BinOp node by returning a fresh instance of it(   R    t   leftR"   t   BinOpR:   t   optimize_astR@   t   optimize_binopR   Rx   R4   Ry   Rk   Rl   RI   R+   t   right(   RA   R(   R/   t	   optimizedRL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_binop   s    !c         C   s^   t  j t t | j  | j | j |  } | j g  | j D] } |  j	 | |  ^ q;  | S(   s7   visit a BoolOp node by returning a fresh instance of it(
   R   t   BoolOpt   _BOOL_OP_CLASSESR4   Ry   Rk   Rl   RI   t   valuesR+   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_boolop  s
    	&c         C   s+   t  j t | d d  t | d d  |  S(   s6   visit a Break node by returning a fresh instance of itRk   Rl   N(   R   t   BreakR,   R   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_break  s    c      	   C   s  t  j | j | j |  } t | d |  |  } t | d |  |  } g  | j D] } |  j | |  ^ qO } | j r g  | j D] } |  j | |  ^ q } n d } | r t  j	 d | j d | j d | j
  }	 |	 j d |  | j |	  n  | rYt  j d d d | j d | j d | j
  }
 |
 j d |  | rM| j |
  qY|
 g } n  | j |  j | j |  | |  | S(	   s9   visit a CallFunc node by returning a fresh instance of itt   starargst   kwargsRl   Rk   R/   R$   Rf   N(   R   t   CallRk   Rl   R1   R[   R+   t   keywordsR   t   StarredR/   RI   t   appendR   t   func(   RA   R(   R/   RL   R   R   RM   R[   R   t   new_starargst
   new_kwargs(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt
   visit_call  s4    %	(		
c         C   sF  t  |  \ } } t j | j | | j | j |  } d } t r x< | j D]. } | j	 d k rL |  j
 | |  j } PqL qL Wn  | j r |  j | |  } n d } | j g  | j D] }	 |  j
 |	 |  ^ q g  | j D] }	 |  j
 |	 |  ^ q | | | t r;g  | j D]- }
 |
 j	 d k r|  j
 |
 |  ^ qn g   | S(   s'   visit a ClassDef node to become astroidt	   metaclassN(   R*   R   t   ClassDefRD   Rk   Rl   R   Rh   R   Rf   R+   R$   t   decorator_listt   visit_decoratorsRI   t   basesR!   (   RA   R(   R/   t   newstyleR)   RL   R   R   t
   decoratorsRM   t   kwd(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_classdef=  s&    		""	Dc         C   s1   t  j | j t | d d  t | d d  |  S(   s6   visit a Const node by returning a fresh instance of itRk   Rl   N(   R   t   ConstR$   R,   R   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_constU  s    c         C   s+   t  j t | d d  t | d d  |  S(   s9   visit a Continue node by returning a fresh instance of itRk   Rl   N(   R   t   ContinueR,   R   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_continue[  s    c         C   s   t  j | j | j |  } | j |  j | j |  g  t | j | j	  D]+ \ } } t
 | j |  j | |  f ^ qI  | S(   s8   visit a Compare node by returning a fresh instance of it(   R   t   CompareRk   Rl   RI   R+   R~   t   zipt   opst   comparatorst   _CMP_OP_CLASSESRP   (   RA   R(   R/   RL   Ry   t   expr(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_comparea  s
    Ec         C   su   t  j |  } | j |  j | j |  |  j | j |  g  | j D] } |  j | |  ^ qC t | d d   | S(   s>   visit a Comprehension node by returning a fresh instance of itt   is_asyncN(	   R   R   RI   R+   Rz   t   itert   ifsR,   R   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_comprehensionj  s    "c         C   sN   t  j | j | j |  } | j g  | j D] } |  j | |  ^ q+  | S(   s;   visit a Decorators node by returning a fresh instance of it(   R   t
   DecoratorsRk   Rl   RI   R   R+   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyR   t  s    	&c         C   sN   t  j | j | j |  } | j g  | j D] } |  j | |  ^ q+  | S(   s7   visit a Delete node by returning a fresh instance of it(   R   t   DeleteRk   Rl   RI   Rq   R+   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_delete}  s    	&c         c   s}   xv t  | j | j  D]_ \ } } |  j | |  } | sX t j | j | j |  } n |  j | |  } | | f Vq Wd  S(   N(   R   t   keysR   R+   R   t
   DictUnpackRk   Rl   (   RA   R(   R/   RL   t   keyR$   t   rebuilt_valuet   rebuilt_key(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   _visit_dict_items  s    "c         C   sG   t  j | j | j |  } t |  j | | |   } | j |  | S(   s5   visit a Dict node by returning a fresh instance of it(   R   t   DictRk   Rl   t   listR   RI   (   RA   R(   R/   RL   t   items(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt
   visit_dict  s    c         C   sr   t  j | j | j |  } | j |  j | j |  |  j | j |  g  | j D] } |  j | |  ^ qO  | S(   s9   visit a DictComp node by returning a fresh instance of it(	   R   t   DictCompRk   Rl   RI   R+   R   R$   t
   generators(   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_dictcomp  s    &c         C   s;   t  j | j | j |  } | j |  j | j |   | S(   s5   visit a Expr node by returning a fresh instance of it(   R   R#   Rk   Rl   RI   R+   R$   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt
   visit_expr  s    c         C   s+   t  j t | d d  t | d d  |  S(   s:   visit an Ellipsis node by returning a fresh instance of itRk   Rl   N(   R   t   EllipsisR,   R   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_ellipsis  s    c         C   s+   t  j t | d d  t | d d  |  S(   s;   visit an EmptyNode node by returning a fresh instance of itRk   Rl   N(   R   t	   EmptyNodeR,   R   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_emptynode  s    c         C   sr   t  j | j | j |  } | j t | d |  |  t | d |  |  g  | j D] } |  j | |  ^ qO  | S(   s?   visit an ExceptHandler node by returning a fresh instance of itR4   RD   (   R   R   Rk   Rl   RI   R1   R!   R+   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_excepthandler  s    &c         C   s_   t  j | j | j |  } | j |  j | j |  t | d |  |  t | d |  |   | S(   s6   visit an Exec node by returning a fresh instance of itt   globalst   locals(   R   t   ExecRk   Rl   RI   R+   R!   R1   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt
   visit_exec  s
    c         C   sE   t  j d |  } | j g  | j D] } |  j | |  ^ q"  | S(   s:   visit an ExtSlice node by returning a fresh instance of itR/   (   R   t   ExtSliceRI   t   dimsR+   (   RA   R(   R/   RL   t   dim(    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_extslice  s    	&c      	   C   s   | | j  | j |  } | j |  j | j |  |  j | j |  g  | j D] } |  j | |  ^ qL g  | j D] } |  j | |  ^ qq  | S(   s4   visit a For node by returning a fresh instance of it(   Rk   Rl   RI   R+   Rz   R   R!   t   orelse(   RA   RT   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt
   _visit_for  s    "&c         C   s   |  j  t j | |  S(   N(   R   R   t   For(   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt	   visit_for  s    c      	   C   s   g  | j  D] } | j | j f ^ q
 } t j | j p: d | | j pI d t | d d  t | d d  |  } |  j	 j
 |  | S(   s<   visit an ImportFrom node by returning a fresh instance of itt    Rk   Rl   N(   t   namesRD   t   asnameR   t
   ImportFromt   modulet   levelR   R,   R<   R   (   RA   R(   R/   t   aliasR   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_importfrom  s    (!c   	      C   s   |  j  j i   t |  \ } } | | j | | j | j |  } | j ra |  j | |  } n d } t	 r | j
 r |  j | j
 |  } n d } | j |  j | j |  g  | j D] } |  j | |  ^ q | |  |  j  j   | S(   s+   visit an FunctionDef node to become astroidN(   R;   R   R*   RD   Rk   Rl   R   R   R   Rh   t   returnsR+   RI   R[   R!   t   pop(	   RA   RT   R(   R/   R)   RL   R   R   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   _visit_functiondef  s     	"
c         C   s   |  j  t j | |  S(   N(   R   R   t   FunctionDef(   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_functiondef  s    c         C   s`   t  j | j | j |  } | j |  j | j |  g  | j D] } |  j | |  ^ q=  | S(   s=   visit a GeneratorExp node by returning a fresh instance of it(   R   t   GeneratorExpRk   Rl   RI   R+   t   eltR   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_generatorexp  s
    &c         C   s   t  |  } | t j k r? t j | j | j | j |  } ny | t j k r t j	 | j | j | j |  } t
 | t j  s |  j j |  q n! t j | j | j | j |  } | j |  j | j |   | S(   s;   visit an Attribute node by returning a fresh instance of it(   R8   R6   t   DelR   t   DelAttrR-   Rk   Rl   t   Storet
   AssignAttrR    R   R=   R   t	   AttributeRI   R+   R$   (   RA   R(   R/   t   contextRL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_attribute  s    		c         C   sw   t  j | j t | d d  t | d d  |  } |  j rs x4 | j D]& } |  j d j | g   j |  qF Wn  | S(   s%   visit a Global node to become astroidRk   Rl   iN(   R   t   GlobalR   R,   R   R;   t
   setdefaultR   (   RA   R(   R/   RL   RD   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_global  s    	'c         C   s   t  j | j | j |  } | j |  j | j |  g  | j D] } |  j | |  ^ q= g  | j D] } |  j | |  ^ qb  | S(   s4   visit an If node by returning a fresh instance of it(	   R   t   IfRk   Rl   RI   R+   Rn   R!   R   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_if   s    "&c         C   s_   t  j | j | j |  } | j |  j | j |  |  j | j |  |  j | j |   | S(   s6   visit a IfExp node by returning a fresh instance of it(	   R   t   IfExpRk   Rl   RI   R+   Rn   R!   R   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_ifexp*  s
    c         C   s   g  | j  D] } | j | j f ^ q
 } t j | t | d d  t | d d  |  } x@ | j  D]5 \ } } | pw | } | j | j d  d |  qb W| S(   s7   visit a Import node by returning a fresh instance of itRk   Rl   t   .i    N(	   R   RD   R   R   t   ImportR,   R   RY   t   split(   RA   R(   R/   R   R   RL   RD   R   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_import2  s    (!c         C   s2   t  j d |  } | j |  j | j |   | S(   s6   visit a Index node by returning a fresh instance of itR/   (   R   t   IndexRI   R+   R$   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_index=  s    c         C   s8   t  j | j d | } | j |  j | j |   | S(   s8   visit a Keyword node by returning a fresh instance of itR/   (   R   R   Rf   RI   R+   R$   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_keywordC  s    c         C   sM   t  j | j | j |  } | j |  j | j |  |  j | j |   | S(   s7   visit a Lambda node by returning a fresh instance of it(   R   t   LambdaRk   Rl   RI   R+   R[   R!   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_lambdaI  s    c      	   C   si   t  |  } t j d | d | j d | j d |  } | j g  | j D] } |  j | |  ^ qF  | S(   s5   visit a List node by returning a fresh instance of itR5   Rk   Rl   R/   (   R8   R   t   ListRk   Rl   RI   t   eltsR+   (   RA   R(   R/   R   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt
   visit_listP  s    				&c         C   s`   t  j | j | j |  } | j |  j | j |  g  | j D] } |  j | |  ^ q=  | S(   s9   visit a ListComp node by returning a fresh instance of it(   R   t   ListCompRk   Rl   RI   R+   R   R   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_listcomp[  s
    &c         C   s	  t  |  } | t j k r? t j | j | j | j |  } n | t j k rr t j	 | j | j | j |  } nk | j t
 k r t j t
 | j t | d d  t | d d  |  } | St j | j | j | j |  } | t j t j f k r|  j |  n  | S(   s5   visit a Name node by returning a fresh instance of itRk   Rl   N(   R8   R6   R   R   t   DelNamet   idRk   Rl   R   Rs   t   CONST_NAME_TRANSFORMSR   R,   R   t   NameRZ   (   RA   R(   R/   R   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyRW   c  s     !c         C   s1   t  j | j t | d d  t | d d  |  S(   s@   visit a String/Bytes node by returning a fresh instance of ConstRk   Rl   N(   R   R   R&   R,   R   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt	   visit_strz  s    c         C   s1   t  j | j t | d d  t | d d  |  S(   s7   visit a Num node by returning a fresh instance of ConstRk   Rl   N(   R   R   t   nR,   R   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt	   visit_num  s    c         C   s   t  j | j | j |  S(   s5   visit a Pass node by returning a fresh instance of it(   R   t   PassRk   Rl   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt
   visit_pass  s    c         C   sf   t  j | j | j | j |  } | j t | d |  |  g  | j D] } |  j | |  ^ qC  | S(   s6   visit a Print node by returning a fresh instance of itt   dest(	   R   t   Printt   nlRk   Rl   RI   R1   R   R+   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_print  s
    !&c         C   s_   t  j | j | j |  } | j t | d |  |  t | d |  |  t | d |  |   | S(   s6   visit a Raise node by returning a fresh instance of itR4   t   instt   tback(   R   t   RaiseRk   Rl   RI   R1   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_raise  s
    c         C   sM   t  j | j | j |  } | j d k	 rI | j |  j | j |   n  | S(   s7   visit a Return node by returning a fresh instance of itN(   R   t   ReturnRk   Rl   R$   R   RI   R+   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_return  s    c         C   sN   t  j | j | j |  } | j g  | j D] } |  j | |  ^ q+  | S(   s4   visit a Set node by returning a fresh instance of it(   R   t   SetRk   Rl   RI   R   R+   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt	   visit_set  s    	&c         C   s`   t  j | j | j |  } | j |  j | j |  g  | j D] } |  j | |  ^ q=  | S(   s8   visit a SetComp node by returning a fresh instance of it(   R   t   SetCompRk   Rl   RI   R+   R   R   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_setcomp  s
    &c         C   sV   t  j d |  } | j t | d |  |  t | d |  |  t | d |  |   | S(   s6   visit a Slice node by returning a fresh instance of itR/   RS   t   uppert   step(   R   t   SliceRI   R1   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_slice  s
    c      	   C   sh   t  |  } t j d | d | j d | j d |  } | j |  j | j |  |  j | j |   | S(   s:   visit a Subscript node by returning a fresh instance of itR5   Rk   Rl   R/   (	   R8   R   t	   SubscriptRk   Rl   RI   R+   R$   t   slice(   RA   R(   R/   R   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_subscript  s    			c         C   s   t  j | j | j |  } | j g  | j D] } |  j | |  ^ q+ g  | j D] } |  j | |  ^ qP g  | j D] } |  j | |  ^ qu  | S(   s:   visit a TryExcept node by returning a fresh instance of it(	   R   t	   TryExceptRk   Rl   RI   R!   R+   t   handlersR   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_tryexcept  s    	""&c         C   ss   t  j | j | j |  } | j g  | j D] } |  j | |  ^ q+ g  | j D] } |  j | |  ^ qP  | S(   s;   visit a TryFinally node by returning a fresh instance of it(   R   t
   TryFinallyRk   Rl   RI   R!   R+   t	   finalbody(   RA   R(   R/   RL   RM   R   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_tryfinally  s    	"&c      	   C   si   t  |  } t j d | d | j d | j d |  } | j g  | j D] } |  j | |  ^ qF  | S(   s6   visit a Tuple node by returning a fresh instance of itR5   Rk   Rl   R/   (   R8   R   t   TupleRk   Rl   RI   R   R+   (   RA   R(   R/   R   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_tuple  s    				&c         C   sH   t  j t | j j | j | j |  } | j |  j | j	 |   | S(   s8   visit a UnaryOp node by returning a fresh instance of it(
   R   t   UnaryOpt   _UNARY_OP_CLASSESRy   RP   Rk   Rl   RI   R+   t   operand(   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_unaryop  s    c         C   s   t  j | j | j |  } | j |  j | j |  g  | j D] } |  j | |  ^ q= g  | j D] } |  j | |  ^ qb  | S(   s6   visit a While node by returning a fresh instance of it(	   R   t   WhileRk   Rl   RI   R+   Rn   R!   R   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_while  s    "&c         C   s   t  j | j | j |  } |  j | j |  } | j d  k	 rW |  j | j |  } n d  } | j | | f g g  | j	 D] } |  j | |  ^ qy  | S(   N(
   R   t   WithRk   Rl   R+   t   context_exprt   optional_varsR   RI   R!   (   RA   R(   R/   RL   R   R)  RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt
   visit_with  s    &c         C   sM   t  j | j | j |  } | j d k	 rI | j |  j | j |   n  | S(   s6   visit a Yield node by returning a fresh instance of itN(   R   t   YieldRk   Rl   R$   R   RI   R+   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_yield  s    N(E   RQ   t
   __module__t   __doc__RC   RN   R+   R   RZ   Ri   Ro   Rr   Ru   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   RW   R   t   visit_bytesR  R  R  R  R  R  R  R  R  R  R  R   R$  R&  R*  R,  (    (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyR9   k   s   				>	
							!					
											
					
							
																								
	t   TreeRebuilder3c           B   s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z e d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s/   extend and overwrite TreeRebuilder for python3kc         C   s   |  j  | | | j  S(   s6   visit a arg node by returning a fresh AssName instance(   Ru   Rf   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt	   visit_arg	  s    c         C   s1   t  j | j t | d d   t | d d   |  S(   NRk   Rl   (   R   R   R$   R,   R   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_nameconstant  s    c         C   s   t  j | j | j |  } | j r? |  j | | | j  } n d } | j t | d |  |  | g  | j	 D] } |  j
 | |  ^ qj  | S(   s?   visit an ExceptHandler node by returning a fresh instance of itR4   N(   R   R   Rk   Rl   RD   Ru   R   RI   R1   R!   R+   (   RA   R(   R/   RL   RD   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyR     s    	&c         C   s1   t  j | j t | d d  t | d d  |  S(   s5   visit a Nonlocal node and return a new instance of itRk   Rl   N(   R   t   NonlocalR   R,   R   (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_nonlocal   s    c         C   sM   t  j | j | j |  } | j t | d |  |  t | d |  |   | S(   s6   visit a Raise node by returning a fresh instance of itt   exct   cause(   R   R
  Rk   Rl   RI   R1   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyR  &  s    c      	   C   sV   t  |  } t j d | d | j d | j d |  } | j |  j | j |   | S(   s4   visit a Starred node and return a new instance of itR5   Rk   Rl   R/   (   R8   R   R   Rk   Rl   RI   R+   R$   (   RA   R(   R/   R   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_starred.  s    		c         C   s   | j  r t j | j | j |  } | j rE |  j | |  g } n( g  | j D] } |  j | |  ^ qO } | j	 | g  | j  D] } |  j | |  ^ q  | S| j r |  j | |  Sd  S(   N(   R  R   R  Rk   Rl   R  R  R!   R+   RI   R   (   RA   R(   R/   RL   R!   RM   R   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt	   visit_try7  s    		%	&	c         C   sw   t  j | j | j |  } t | d |  |  } | j d |  j | j |  d | d | j d t | d |  |   | S(   s;   visit an AnnAssign node by returning a fresh instance of itRg   Rz   t   simpleR$   (	   R   t	   AnnAssignRk   Rl   R1   RI   R+   Rz   R9  (   RA   R(   R/   RL   Rg   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_annassignI  s    	c            s   d | j  k r( t t   j | |  S| | j | j |       f d   }   j g  | j D] } | |  ^ qb g  | j D] }  j	 |    ^ q    S(   NR   c            s4    j  |  j    } t |  d     } | | f S(   NR)  (   R+   R(  R1   (   RM   R   t   var(   RL   RA   (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_childY  s    (
   t   _fieldst   superR0  R*  Rk   Rl   RI   R   R!   R+   (   RA   RT   R(   R/   R=  RM   (    (   RL   RA   s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   _visit_withS  s    %&c         C   s   |  j  t j | |  S(   N(   R@  R   R'  (   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyR*  b  s    c         C   sM   t  j | j | j |  } | j d  k	 rI | j |  j | j |   n  | S(   N(   R   t	   YieldFromRk   Rl   R$   R   RI   R+   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_yieldfrome  s    c         C   s   t  t |   j | | d | S(   NR   (   R?  R0  R   (   RA   R(   R/   R   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyR   k  s    c         C   s   |  j  t j | |  S(   N(   R   R   t   AsyncFunctionDef(   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_asyncfunctiondefp  s    c         C   s   |  j  t j | |  S(   N(   R   R   t   AsyncFor(   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_asyncfors  s    c         C   s>   t  j | j | j |  } | j d |  j | j |   | S(   NR$   (   R   t   AwaitRk   Rl   RI   R+   R$   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_awaitv  s    c         C   s   |  j  t j | |  S(   N(   R@  R   t	   AsyncWith(   RA   R(   R/   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_asyncwith{  s    c         C   sN   t  j | j | j |  } | j g  | j D] } |  j | |  ^ q+  | S(   N(   R   t	   JoinedStrRk   Rl   RI   R   R+   (   RA   R(   R/   RL   RM   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_joinedstr~  s    	&c         C   sS   t  j | j | j |  } | j |  j | j |  | j t | d |  |   | S(   Nt   format_spec(	   R   t   FormattedValueRk   Rl   RI   R+   R$   t
   conversionR1   (   RA   R(   R/   RL   (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   visit_formattedvalue  s
    (   RQ   R-  R.  R1  R2  R   R4  R  R7  R8  R;  R@  R*  RB  R   R   RD  RF  RH  RJ  RL  RP  (    (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyR0    s&   									
								(:   R.  t   sysR"   R6   R    R   t   Addt   BitAndt   BitOrt   BitXort   Divt   FloorDivt   Modt   Multt   Powt   Subt   LShiftt   RShiftRx   t   version_infot   MatMultt   Andt   OrR   t   UAddt   USubt   Nott   InvertR"  t   Eqt   Gtt   GtEt   Int   Ist   IsNott   Ltt   LtEt   NotEqt   NotInR   R   R   R   R   RR   Rh   Re   R7   R   R   t   ParamR2   R*   R1   R8   t   objectR9   R0  (    (    (    s0   lib/python2.7/site-packages/astroid/rebuilder.pyt   <module>   sv   























	
	  