ó
è¾bc           @   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   