� �V~gc@s�dZddlmZmZd�Zdd d��YZddd��YZd�Zed kr�dd l Z dd lm Z mZxHe j d D]6Z e GHe e �Z e�Zee e�ejGHHq�Wnd S(sParser for future statements i����(tasttwalkcCs1t|tj�sdS|jdkr)dSdSdS(s:Return true if statement is a well-formed future statementit __future__iN(t isinstanceRtFromtmodname(tstmt((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyt is_futures t FutureParsercBs2eZd Zd�Zd�Zd �Zd �ZRS( t nested_scopest generatorstdivisiontabsolute_importtwith_statementtprint_functiontunicode_literalscCs i|_dS(N(tfound(tself((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyt__init__scCs4|j}x$|jD]}|j|�sPqqWdS(N(tnodetnodest check_stmt(RRRts((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyt visitModules cCsct|�r_xC|jD]8\}}||jkrAd|j|<qtd|�qWd|_dSdS(Nis future feature %s is not definedi(RtnamestfeaturesRt SyntaxErrort valid_future(RRtnametasname((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyRs  cCs |jj�S(s4Return list of features enabled by future statements(Rtkeys(R((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyt get_features+s(R R R R R RR(t__name__t __module__RRRRR(((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyRs   tBadFutureParsercBseZdZd�ZRS(s#Check for invalid future statementscCs=t|d�rdS|jdkr&dStdt|��dS(NRRsinvalid future statement (thasattrRRtrepr(RR((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyt visitFrom2s (R R!t__doc__R%(((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyR"/scCs6t�}t�}t||�t||�|j�S(N(RR"RR(Rtp1tp2((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyt find_futures9s     t__main__N(t parseFileRi(((R&tcompilerRRRRR"R)R tsysR+targvtfilettreetvR(((s4/opt/alt/python27/lib64/python2.7/compiler/future.pyt<module>s