@Sc@sdZddlZddlmZddlmZmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%ddl&m'Z(i de 6de6de6d e6d e 6d e 6d e 6d e6de6de6de6de6Z)ide6de6Z*ide6de6de6de6Z+i de6de6de6de6de 6de!6de"6de#6de$6de%6Z,ie-d 6e.d!6e/d"6Z0id#d$6d%d&6d'd(6d)d*6d+d,6d'd-6d'd.6d/d06d1d26d3d46d5d66d7d86d9d:6d;d<6Z1ej2d=d>fkZ3ej2d=d?fkZ4d@Z5dAZ6dBZ7dCZ8dDZ9dEe:fdFYZ;dGe;fdHYZ<ej2d=d>fkre<Z;ndS(Isjthis module contains utilities for rebuilding a _ast tree in order to get a single Astroid representation iN(twarn( tExprtStrtNamet AttributetAddtDivtFloorDivtModtMulttPowtSubtBitAndtBitOrtBitXortLShifttRShifttAndtOrtUAddtUSubtNottInverttEqtGttGtEtIntIstIsNottLttLtEtNotEqtNotIn(tnodest+t&t|t^t/s//t%t*s**t-s<>tandtortnott~s==t>s>=tintissis nottd<Z?d=Z@d>ZAd?ZBRS(As0Rebuilds the _ast tree to become an Astroid treecCsR||_d|_dg|_g|_g|_g|_i|_|j|_ dS(Nt( t_managerR2t asscontextt _metaclasst _global_namest _from_nodest_delayed_assattrt _visit_methst transformt _transform(tselftmanager((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt__init__s       cCstj|d}||_t||ddt||g|jD]}|j||^qE|_|j|j |j |S(s7visit a Module node by returning a fresh instance of itRYN( tnewtModuleR2tpackageR\RWRORcR]R^Rq(RrRUtmodnameRwRVtchild((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_modules  +cCs|j}||jkr(|j|}nA|j}dtj||j}t||}||j|<|j|||S(Ntvisit_(t __class__Rot__name__tREDIRECTtgettlowertgetattrRq(RrRURYtclst visit_methodtcls_namet visit_name((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyRcs   cCsU|jr;|j|jdkr;|jj|j|n|jj|j|dS(sAsave assignement situation since node.parent is not available yetiN(Rltnametroott set_localRY(RrRUR((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt_save_assignmentscCs:tj}t|||d|_g|jD]}|j||^q/|_d|_g|jD]}|j||^qc|_g|_g|_ |j |j }}|rt r|j }n|rt r|j }n||_ ||_ |r|jj||n|r#|jj||n|j|j|S(s:visit a Arguments node by returning a fresh instance of ittAssN(RuR5R\RjtargsRcR2tdefaultst kwonlyargst kw_defaultstvarargtkwargtPY34targRYRR]R^(RrRURYRVRyRR((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_argumentss*  + +        cCsw|jd}|_tj}t||||j|j||_||_|jj||j |j |S(s8visit a AssAttr node by returning a fresh instance of itN( RjR2RutAssAttrR\RctexprRntappendR]R^(RrRURYtasscRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_assattrs  cCsutj}t||||j|j||_|jdk r^|j|j||_n|j|j |S(s7visit a Assert node by returning a fresh instance of itN( RutAssertR\RcttesttmsgR2tfailR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_asserts c Cstj}t|||d|_g|jD]}|j||^q/|_d |_|j|j||_|jj }t |tj rkt |jtj rkt |jj tjrk|jj j}x|jD]}yi||j}t |tjrF|d kr||_n|dkr0d|_n|jj|jnWqttfk rcqqXqWn8t|jddd dkrt|j|jd_|jdk rj|j_n|jdk rj|j_njj fd|j Dj j S(s9visit a CallFunc node by returning a fresh instance of itc3s!|]}j|VqdS(N(Rc(t.0Ry(RVRr(sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pys >sN( RuR:R\RcRRtstarargsR2tkwargstextendtkeywordsR]R^(RrRURYRy((RrRVsK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_callfunc4s +&cCs>|jj|jdtj|jd}t|||t||g|jD]}|j ||^qS|_g|j D]}|j ||^q~|_ d|j kr|j r|j |||_n|j|j|jj}trt|_n|js|dk|_n|jjj|j||S(s$visit a Class node to become astroiditdecorator_listRtABCMetaN(stypesABCMeta(RkRRuR<RR2R\RWtbasesRcROt_fieldsRtvisit_decoratorst decoratorsR]R^tpoptPY3KR3t _newstyleRYRR(RrRURYRVRyt metaclass((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_classBs  ++  cCs&tj|j}t||||S(s6visit a Const node by returning a fresh instance of it(RutConstRPR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_constXscCs tj}t||||S(s9visit a Continue node by returning a fresh instance of it(RutContinueR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_continue^s cCstj}t||||j|j||_gt|j|jD]+\}}t|j |j||f^qJ|_|j |j |S(s8visit a Compare node by returning a fresh instance of it( RutCompareR\RcRtziptopst comparatorst_CMP_OP_CLASSESR|R]R^(RrRURYRVRR((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_compareds GcCstj}t|||d|_|j|j||_d|_|j|j||_g|jD]}|j||^qh|_|j |j |S(s>visit a Comprehension node by returning a fresh instance of itRN( RuR8R\RjRcRR2titertifsR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_comprehensionns   +cCstj}t|||d|jkr7|j}n |j}g|D]}|j||^qG|_|j|j |S(s;visit a Decorators node by returning a fresh instance of itR( Rut DecoratorsR\RRRRcR!R]R^(RrRURYRVRRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyRzs   (cCsptj}t|||d|_g|jD]}|j||^q/|_d|_|j|j|S(s7visit a Delete node by returning a fresh instance of ittDelN( RutDeleteR\RjRRcR2R]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_deletes  + cCstj}t|||gt|j|jD]0\}}|j|||j||f^q2|_|j|j |S(s5visit a Dict node by returning a fresh instance of it( RutDictR\RtkeysRRctitemsR]R^(RrRURYRVtkeyRP((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_dicts  LcCstj}t||||j|j||_|j|j||_g|jD]}|j||^qV|_|j|j|S(s9visit a DictComp node by returning a fresh instance of it( RutDictCompR\RcRRPt generatorsR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_dictcomps (cCsKtj}t||||j|j||_|j|j|S(s8visit a Discard node by returning a fresh instance of it(RuRBR\RcRPR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_discards  cCs tj}t||||S(s:visit an Ellipsis node by returning a fresh instance of it(RutEllipsisR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_ellipsiss cCs tj}t||||S(s;visit an EmptyNode node by returning a fresh instance of it(Rut EmptyNodeR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_emptynodes cCstj}t||||jdk rF|j|j||_n|jdk rd|_|j|j||_d|_ng|jD]}|j||^q|_|j |j |S(s?visit an ExceptHandler node by returning a fresh instance of itRN( RuR@R\RR2RcRRjROR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_excepthandlers   +cCstj}t||||j|j||_|jdk r^|j|j||_n|jdk r|j|j||_n|j |j |S(s6visit an Exec node by returning a fresh instance of itN( RutExecR\RcRORtglobalsR2tlocalsR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_execs cCs^tj}t|||g|jD]}|j||^q&|_|j|j|S(s:visit an ExtSlice node by returning a fresh instance of it(RutExtSliceR\tdimsRcR]R^(RrRURYRVtdim((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_extslices  +cCstj}t|||d|_|j|j||_d|_|j|j||_g|jD]}|j||^qh|_g|j D]}|j||^q|_ |j |j |S(s4visit a For node by returning a fresh instance of itRN( RutForR\RjRcRR2RROtorelseR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_fors   ++cCssg|jD]}|j|jf^q }tj|jp:d||jpId}t||||j j ||S(s5visit a From node by returning a fresh instance of itRhN( tnamesRtasnameRuRGtmoduletlevelR2R_RmR(RrRURYtaliasRRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_froms ('c Cs|jjitj|jd}t|||t|||j|j ||_ g|j D]}|j||^qd|_ d|j krd}nd}t ||}|r|j |||_n|j|j|jj|jj}t|tjr8|jdkr,d|_q8d|_n|jdk rxe|jjD]T}t|tjrT|jd kr|j|_q|jdkrd|_qqTqTWn|j|j||S( s(visit an Function node to become astroidRRt__new__RtmethodRRN(s classmethods staticmethod(RlRRuRCRR2R\RWRcRRORRRRR]R^RRYRRNR<t_typeR!RR( RrRURYRVRyRaRRtdecorator_expr((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_functions8 +    cCsvtj}t||||j|j||_g|jD]}|j||^q>|_|j|j|S(s8visit a GenExpr node by returning a fresh instance of it(RuRER\RcteltRR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_genexprs  +cCs|jdkrtj}n:|jdkrLtj}|jj|n tj}t||||jd}|_|j |j ||_ ||_|j |_ |j|j|S(s8visit a Getattr node by returning a fresh instance of itRRN(RjRutDelAttrRRnRR7R\R2RcRPRRatattrnameR]R^(RrRURYRVRj((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_getattrs    cCsftj|j}t||||jrbx4|jD]&}|jdj|gj|q5Wn|S(s&visit an Global node to become astroidi(RutGlobalRR_Rlt setdefaultR(RrRURYRVR((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_global1s  'cCstj}t||||j|j||_g|jD]}|j||^q>|_g|jD]}|j||^qi|_|j|j|S(s3visit a If node by returning a fresh instance of it( RutIfR\RcRRORR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_if:s ++cCs{tj}t||||j|j||_|j|j||_|j|j||_|j|j|S(s6visit a IfExp node by returning a fresh instance of it( RutIfExpR\RcRRORR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_ifexpDs cCstj}t|||g|jD]}|j|jf^q&|_xC|jD]8\}}|pf|}|jj|jdd|qQW|S(s7visit a Import node by returning a fresh instance of itt.i( RutImportR_RRRRYRtsplit(RrRURYRVRRR((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_importNs + $cCsKtj}t||||j|j||_|j|j|S(s6visit a Index node by returning a fresh instance of it(RutIndexR\RcRPR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_indexYs  cCsWtj}t||||j|_|j|j||_|j|j|S(s8visit a Keyword node by returning a fresh instance of it(RuRIR\RRcRPR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_keywordas   cCsctj}t||||j|j||_|j|j||_|j|j|S(s7visit a Lambda node by returning a fresh instance of it(RutLambdaR\RcRROR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_lambdajs  cCs^tj}t|||g|jD]}|j||^q&|_|j|j|S(s5visit a List node by returning a fresh instance of it(RutListR\teltsRcR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_listss  +cCsvtj}t||||j|j||_g|jD]}|j||^q>|_|j|j|S(s9visit a ListComp node by returning a fresh instance of it(RutListCompR\RcR RR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_listcomp{s (cCs|jdkrtj}nx|jdk rQ|jdksBttj}nE|jtkrtjt|j}t ||||Stj }t ||||j|_ |jdkr|j |n|j|j|S(s5visit a Name node by returning a fresh instance of itRRN(sDelsAss(RjRutDelNameR2tAssertionErrorRR`tCONST_NAME_TRANSFORMSRR_RR\RRR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyRs   cCs&tj|j}t||||S(s9visit a Bytes node by returning a fresh instance of Const(RuRRSR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_bytesscCs&tj|j}t||||S(s7visit a Num node by returning a fresh instance of Const(RuRtnR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_numscCs tj}t||||S(s5visit a Pass node by returning a fresh instance of it(RutPassR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_passs cCs&tj|j}t||||S(s7visit a Str node by returning a fresh instance of Const(RuRRSR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_strscCstj}t||||j|_|jdk rR|j|j||_ng|jD]}|j||^q\|_|j|j |S(s6visit a Print node by returning a fresh instance of itN( RutPrintR\tnltdestR2RcRR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_prints  +cCstj}t||||jdk rF|j|j||_n|jdk rp|j|j||_n|jdk r|j|j||_n|j |j |S(s6visit a Raise node by returning a fresh instance of itN( RutRaiseR\RR2RctexctinstttbackR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_raises cCs]tj}t||||jdk rF|j|j||_n|j|j|S(s7visit a Return node by returning a fresh instance of itN(RutReturnR\RPR2RcR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_returns  cCs^tj}t|||g|jD]}|j||^q&|_|j|j|S(s4visit a Set node by returning a fresh instance of it(RutSetR\RRcR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_sets  +cCsvtj}t||||j|j||_g|jD]}|j||^q>|_|j|j|S(s8visit a SetComp node by returning a fresh instance of it(RutSetCompR\RcR RR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_setcomps (cCstj}t||||jdk rF|j|j||_n|jdk rp|j|j||_n|jdk r|j|j||_n|j|j |S(s6visit a Slice node by returning a fresh instance of itN( RutSliceR\RR2RctuppertstepR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_slices cCstj}t||||jd}|_|j|j||_|j|j||_||_|j|j |S(s:visit a Subscript node by returning a fresh instance of itN( Rut SubscriptR\RjR2RcRPtsliceR]R^(RrRURYRVt subcontext((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_subscripts  cCstj}t|||g|jD]}|j||^q&|_g|jD]}|j||^qQ|_g|jD]}|j||^q||_|j|j|S(s:visit a TryExcept node by returning a fresh instance of it( Rut TryExceptR\RORcthandlersRR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_tryexcepts +++cCstj}t|||g|jD]}|j||^q&|_g|jD]}|j||^qQ|_|j|j|S(s;visit a TryFinally node by returning a fresh instance of it(Rut TryFinallyR\RORct finalbodyR]R^(RrRURYRVRyR'((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_tryfinally s  ++cCs^tj}t|||g|jD]}|j||^q&|_|j|j|S(s6visit a Tuple node by returning a fresh instance of it(RutTupleR\RRcR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_tuples  +cCs^tj}t||||j|j||_t|jj|_|j|j |S(s8visit a UnaryOp node by returning a fresh instance of it( RutUnaryOpR\Rctoperandt_UNARY_OP_CLASSESRR|R]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_unaryops  cCstj}t||||j|j||_g|jD]}|j||^q>|_g|jD]}|j||^qi|_|j|j|S(s6visit a While node by returning a fresh instance of it( RutWhileR\RcRRORR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_while#s ++cCstj}t||||j|j|}d|_|jdk ra|j|j|}nd}d|_||fg|_g|j D]}|j||^q|_ |j |j |S(NR( RutWithR\Rct context_exprRjt optional_varsR2RROR]R^(RrRURYRVRtvarsRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_with-s   +cCst|||tjS(s6visit a Yield node by returning a fresh instance of it(RfRutYield(RrRURY((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_yield<sN(CR}t __module__t__doc__RtRzRcR2RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR R RRRRRRRR R"RR&R(R*R+R/R4R6R8R:R>RBRERHRJRNRPRURW(((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyRgs                 !           tTreeRebuilder3kcBsqeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z RS( s/extend and overwrite TreeRebuilder for python3kcCs|j|||jS(s6visit a arg node by returning a fresh AssName instance(RR(RrRURY((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_argCscCs&tj|j}t||||S(N(RuRRPR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_nameconstantIscCstt|j||}d|_g|jD]}|j||^q.|_d|_g|jD]$}|r|j||nd^qb|_|S(NR(tsuperRZRRjRRcR2R(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyROs  + 7cCstj}t||||jdk rF|j|j||_n|jdk rs|j|||j|_ng|jD]}|j||^q}|_|j |j |S(s?visit an ExceptHandler node by returning a fresh instance of itN( RuR@R\RR2RcRRROR]R^(RrRURYRVRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyRWs +cCs&tj|j}t||||S(s5visit a Nonlocal node and return a new instance of it(RutNonlocalRR_(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_nonlocalcscCstj}t||||jdk rF|j|j||_n|jdk rp|j|j||_n|j|j|S(s6visit a Raise node by returning a fresh instance of itN( RuR0R\R1R2RctcauseR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyR4is cCsKtj}t||||j|j||_|j|j|S(s4visit a Starred node and return a new instance of it(RutStarredR\RcRPR]R^(RrRURYRV((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_starredus  cCs|jrFtj}t|||g|jD]}|j||^q/|_|jrtj}t|||g|jD]}|j||^q|_g|jD]}|j||^q|_g|jD]}|j||^q|_|j |j |g|_qg|jD]}|j||^q"|_n|jrtj}t|||g|jD]}|j||^qu|_g|jD]}|j||^q|_g|jD]}|j||^q|_n|j |j |S(N( RGRuRFR\RcRDRCRORR]R^(RrRURYRVR'texcnodeRy((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_try}s*  +  +++.  ++.csd|jkr(ttj||Stjt||fd}g|jD]}||^q`_g|jD]}j |^q_j j S(NRcsXj|j}d_|jr?j|j}nd}d_||fS(NR(RcRRRjRSR2(RyRtvar(RrRV(sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyt visit_childs   ( RR]RZRURuRQR\RRORcR]R^(RrRURYRfRy((RrRVsK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyRUs  "+cCst|||tjS(N(RfRut YieldFrom(RrRURY((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pytvisit_yieldfromscCs^tt|j||}x<|jD]1}|jdkr%|j||j|_Pq%q%W|S(NR(R]RZRRRRcRPRk(RrRURYRVRJ((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyRs (R}RXRYR[R\RRR_R4RbRdRURhR(((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyRZ@s        (=RYtsystwarningsRt_astRRBRRRRRRRR R R R R RRRRRRRRRRRRRRRRRRR tastroidR!RuRRRMRR2R3R4R%R~t version_infoRRRWR\R_RbRftobjectRgRZ(((sK/Users/jacob/code/ruby/exercism-analysis/vendor/python/astroid/rebuilder.pyts|                  w