a
XC?h @ sV d dl mZ ddlmZmZmZmZ d dlmZm Z m
Z
dd ZG dd dejZ
d S )
)
fixer_base )dirnamejoinexistssep)
FromImportsymstokenc c s | g}|r| }|jtjkr(|jV q|jtjkrNddd |jD V q|jtj krl|
|jd q|jtjkr||jd d d qt
dqd 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)poptyper
NAMEr
r Zdotted_namer childrenZdotted_as_nameappendZdotted_as_namesextendAssertionError)namesZpendingnoder r r traverse_imports s
r c s4 e Zd ZdZdZ fddZdd 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_featuresskip)selfZtreename __class__r r r / s zFixImport.start_treec C s | j r
d S |d }|jtjkrVt|ds4|jd }q| |jrd|j |_| nZd}d}t |D ]}| |rzd}qfd}qf|r|r|
|d d S td|g}|j|_|S d S )Nimpr
r .FTz#absolute and local imports together)
r r r Zimport_fromhasattrr probably_a_local_importr
Zchangedr Zwarningr prefix)r! r Zresultsr% Z
have_localZ
have_absoluteZmod_namenewr r r transform3 s,
zFixImport.transformc C st | drdS |ddd }t| j}t||}ttt|dsHdS dtddd d
fD ]}t|| rX dS qXdS )Nr&