
    ZQd                     P    d Z ddlmZ ddlmZmZmZ  G d dej                  ZdS )zFixer 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)
   )
fixer_base)CommaNameCallc                       e Zd ZdZdZd ZdS )FixExecTzx
    exec_stmt< 'exec' a=any 'in' b=any [',' c=any] >
    |
    exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any >
    c                    |sJ | j         }|d         }|                    d          }|                    d          }|                                g}d|d         _        |5|                    t                      |                                g           |5|                    t                      |                                g           t          t          d          ||j                  S )Nabc     exec)prefix)symsgetcloner   extendr   r   r   )selfnoderesultsr   r
   r   r   argss           -/usr/lib/python3.11/lib2to3/fixes/fix_exec.py	transformzFixExec.transform   s    yCLKKKK		{Q=KK!'')),---=KK!'')),---DLL$t{;;;;    N)__name__
__module____qualname__BM_compatiblePATTERNr    r   r   r   r      s/        MG< < < < <r   r   N)	__doc__r   r   
fixer_utilr   r   r   BaseFixr   r!   r   r   <module>r%      sx           * * * * * * * * * *< < < < <j  < < < < <r   