ó
8Ž	Pc           @   s_   d  Z  d d l m Z d d l m Z d d l m Z m Z m Z d e j f d     YZ	 d S(   s   Fixer for exec.

This converts usages of the exec statement into calls to a built-in
exec() function.

exec code in ns1, ns2 -> exec(code, ns1, ns2)
i   (   t   pytree(   t
   fixer_base(   t   Commat   Namet   Callt   FixExecc           B   s   e  Z e Z d  Z d   Z RS(   sx   
    exec_stmt< 'exec' a=any 'in' b=any [',' c=any] >
    |
    exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any >
    c         C   sĖ   | s t   |  j } | d } | j d  } | j d  } | j   g } d | d _ | d  k	 r | j t   | j   g  n  | d  k	 rÆ | j t   | j   g  n  t t	 d  | d | j S(   Nt   at   bt   ct    i    u   exect   prefix(
   t   AssertionErrort   symst   gett   cloneR
   t   Nonet   extendR   R   R   (   t   selft   nodet   resultsR   R   R   R   t   args(    (    s,   /usr/lib/python2.7/lib2to3/fixes/fix_exec.pyt	   transform   s    	
(   t   __name__t
   __module__t   Truet   BM_compatiblet   PATTERNR   (    (    (    s,   /usr/lib/python2.7/lib2to3/fixes/fix_exec.pyR      s   N(
   t   __doc__R	   R    R   t
   fixer_utilR   R   R   t   BaseFixR   (    (    (    s,   /usr/lib/python2.7/lib2to3/fixes/fix_exec.pyt   <module>
   s   