File: //opt/alt/python35/lib64/python3.5/lib2to3/fixes/__pycache__/fix_exec.cpython-35.opt-1.pyc
��Yf�  �               @   s_   d  Z  d d l m Z d d l m Z d d l m Z m Z m Z Gd d �  d e j � Z	 d S)z�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)
�   )�pytree)�
fixer_base)�Comma�Name�Callc               @   s(   e  Z d  Z d Z d Z d d �  Z d S)�FixExecTzx
    exec_stmt< 'exec' a=any 'in' b=any [',' c=any] >
    |
    exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any >
    c             C   s�   |  j  } | d } | j d � } | j d � } | j �  g } d | d _ | d  k	 ru | j t �  | j �  g � | d  k	 r� | j t �  | j �  g � t t d � | d | j �S)N�a�b�c� �    �exec�prefix)�syms�getZcloner   �extendr   r   r   )�selfZnodeZresultsr   r   r	   r
   �args� r   �;/opt/alt/python35/lib64/python3.5/lib2to3/fixes/fix_exec.py�	transform   s    	
zFixExec.transformN)�__name__�
__module__�__qualname__Z
BM_compatibleZPATTERNr   r   r   r   r   r      s   r   N)
�__doc__r   r   r   Z
fixer_utilr   r   r   ZBaseFixr   r   r   r   r   �<module>
   s