File: //opt/alt/python35/lib64/python3.5/lib2to3/fixes/__pycache__/fix_next.cpython-35.pyc
��Yff  �               @   s�   d  Z  d d l m Z d d l m Z d d l m Z d d l m	 Z	 m
 Z
 m Z d Z Gd d �  d e j
 � Z d	 d
 �  Z d d �  Z d
 d �  Z d S)z.Fixer for it.next() -> next(it), per PEP 3114.�   )�token)�python_symbols)�
fixer_base)�Name�Call�find_bindingz;Calls to builtin next() possibly shadowed by global bindingc                   s@   e  Z d  Z d Z d Z d Z �  f d d �  Z d d �  Z �  S)�FixNextTa�  
    power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
    |
    power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
    |
    classdef< 'class' any+ ':'
              suite< any*
                     funcdef< 'def'
                              name='next'
                              parameters< '(' NAME ')' > any+ >
                     any* > >
    |
    global=global_stmt< 'global' any* 'next' any* >
    Zprec                sW   t  t |  � j | | � t d | � } | rJ |  j | t � d |  _ n	 d |  _ d  S)N�nextTF)�superr   �
start_treer   �warning�bind_warning�
shadowed_next)�selfZtree�filename�n)�	__class__� �;/opt/alt/python35/lib64/python3.5/lib2to3/fixes/fix_next.pyr   $   s    zFixNext.start_treec             C   sq  | s t  � | j d � } | j d � } | j d � } | r� |  j rg | j t d d | j �� qmd d �  | D� } d | d	 _ | j t t d
 d | j �| � � n� | r� t d d | j �} | j | � n� | rHt | � r2| d } d j d d �  | D� � j	 �  d
 k r.|  j
 | t � d  S| j t d � � n% d | k rm|  j
 | t � d |  _ d  S)N�base�attr�name�__next__�prefixc             S   s   g  |  ] } | j  �  � q Sr   )Zclone)�.0r   r   r   r   �
<listcomp>9   s   	 z%FixNext.transform.<locals>.<listcomp>� �    r	   �headc             S   s   g  |  ] } t  | � � q Sr   )�str)r   r   r   r   r   r   E   s   	 Z__builtin__�globalT)�AssertionError�getr   �replacer   r   r   �is_assign_target�join�stripr   r
   )r   �nodeZresultsr   r   r   r   r   r   r   r   �	transform.   s.    	
(
(zFixNext.transform)�__name__�
__module__�__qualname__Z
BM_compatibleZPATTERN�orderr   r(   r   r   )r   r   r      s
   
r   c             C   s]   t  |  � } | d  k r d Sx: | j D]/ } | j t j k rB d St | |  � r&