ó
ñsºec           @   sy   d  Z  d d l m Z d d l m Z m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z m Z d e j f d „  ƒ  YZ d S(   so   Fixer for execfile.

This converts usages of the execfile function into calls to the built-in
exec() function.
i   (   t
   fixer_base(
   t   Commat   Namet   Callt   LParent   RParent   Dott   Nodet   ArgListt   Stringt   symst   FixExecfilec           B   s   e  Z e Z d  Z d „  Z RS(   s«   
    power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > >
    |
    power< 'execfile' trailer< '(' filename=any ')' > >
    c         C   s¸  | s t  ‚ | d } | j d ƒ } | j d ƒ } | j d j d j ƒ  } t | j ƒ  t ƒ  t d d ƒ g d | ƒ} t t j	 t
 d ƒ | g ƒ } t t j t ƒ  t
 d	 ƒ g ƒ t t j t ƒ  t ƒ  g ƒ g }	 | g |	 }
 | j ƒ  } d
 | _ t d d
 ƒ } |
 t ƒ  | t ƒ  | g } t t
 d ƒ | d ƒ } | g } | d  k	 rq| j t ƒ  | j ƒ  g ƒ n  | d  k	 rœ| j t ƒ  | j ƒ  g ƒ n  t t
 d ƒ | d | j ƒS(   Nt   filenamet   globalst   localsiÿÿÿÿs   "rb"t    t   rparenu   openu   readu    u   'exec'u   compileu    u   exect   prefix(   t   AssertionErrort   gett   childrent   cloneR   R   R	   R   R
   t   powerR   t   trailerR   R   R   R   R   t   Nonet   extend(   t   selft   nodet   resultsR   R   R   t   execfile_parent	   open_argst	   open_callt   readt	   open_exprt   filename_argt   exec_strt   compile_argst   compile_callt   args(    (    s0   /usr/lib/python2.7/lib2to3/fixes/fix_execfile.pyt	   transform   s,    
$	!		(   t   __name__t
   __module__t   Truet   BM_compatiblet   PATTERNR'   (    (    (    s0   /usr/lib/python2.7/lib2to3/fixes/fix_execfile.pyR      s   N(   t   __doc__t    R    t
   fixer_utilR   R   R   R   R   R   R   R   R	   R
   t   BaseFixR   (    (    (    s0   /usr/lib/python2.7/lib2to3/fixes/fix_execfile.pyt   <module>   s   F