File: //lib/python3/dist-packages/libfuturize/fixes/__pycache__/fix_next_call.cpython-310.pyc
o
,�]V � @ sn d Z ddlmZ ddlmZ ddlmZ ddlm Z m
Z
mZ dZG dd� dej
�Zd d
� Zdd� Zd
d� ZdS )a
Based on fix_next.py by Collin Winter.
Replaces it.next() -> next(it), per PEP 3114.
Unlike fix_next.py, this fixer doesn't replace the name of a next method with __next__,
which would break Python 2 compatibility without further help from fixers in
stage 2.
� )�token)�python_symbols)�
fixer_base)�Name�Call�find_bindingz;Calls to builtin next() possibly shadowed by global bindingc s0 e Zd ZdZdZdZ� fdd�Zdd� Z� ZS )�FixNextCallTz�
power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
|
power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
|
global=global_stmt< 'global' any* 'next' any* >
�prec s@ t t| ��||� td|�}|r| �|t� d| _d S d| _d S )N�nextTF)�superr �
start_treer �warning�bind_warning�
shadowed_next)�self�tree�filename�n�� __class__� �A/usr/lib/python3/dist-packages/libfuturize/fixes/fix_next_call.pyr s
zFixNextCall.start_treec C s� |sJ �|� d�}|� d�}|� d�}|r5| jrd S dd� |D �}d|d _|�ttd|jd �|�� d S |r9d S |r[t|�rY|d
}d�dd� |D ���� dkrW| � |t
� d S d S d
|v rj| � |t
� d| _d S d S )N�base�attr�namec S s g | ]}|� � �qS r )�clone��.0r r r r �
<listcomp>7 � z)FixNextCall.transform.<locals>.<listcomp>� r r
)�prefix�headc S s g | ]}t |��qS r )�strr r r r r E r �__builtin__�globalT)�getr r! �replacer r �is_assign_target�join�stripr
r )r �node�resultsr r r r"