a
XC?h� � @ sV d dl mZ ddlmZmZmZmZ d dlmZm Z m
Z
dd� ZG dd� dej�Z
d S )
� )�
fixer_base� )�dirname�join�exists�sep)�
FromImport�syms�tokenc c s� | g}|r�|� � }|jtjkr(|jV q|jtjkrNd�dd� |jD ��V q|jtj krl|�
|jd � q|jtjkr�|�|jd d d� � qt
d��qd S )N� c S s g | ]
}|j �qS � )�value)�.0Zchr r �=/opt/alt/python39/lib64/python3.9/lib2to3/fixes/fix_import.py�
� z$traverse_imports..r �����zunknown node type)�pop�typer
�NAMEr
r Zdotted_namer �childrenZdotted_as_name�appendZdotted_as_names�extend�AssertionError)�namesZpending�noder r r �traverse_imports s
r c s4 e Zd ZdZdZ� fdd�Zdd� Zdd� Z� ZS ) � FixImportTzj
import_from< 'from' imp=any 'import' ['('] any [')'] >
|
import_name< 'import' imp=any >
c s" t t| ��||� d|jv | _d S )NZabsolute_import)�superr �
start_treeZfuture_features�skip)�selfZtree�name�� __class__r r r / s zFixImport.start_treec C s� | j r
d S |d }|jtjkrVt|d�s4|jd }q| �|j�r�d|j |_|�� nZd}d}t |�D ]}| �|�rzd}qfd}qf|r�|r�| �
|d� d S td|g�}|j|_|S d S )N�impr
r �.FTz#absolute and local imports together)
r r r Zimport_from�hasattrr �probably_a_local_importr
Zchangedr Zwarningr �prefix)r! r Zresultsr% Z
have_localZ
have_absoluteZmod_name�newr r r � transform3 s,
zFixImport.transformc C st |� d�rdS |�dd�d }t| j�}t||�}ttt|�d��sHdS dtddd d
fD ]}t|| �rX dS qXdS )Nr&