Your IP : 3.145.103.119
�
i f� � @ s} d Z d d l m Z d d l m Z m Z m Z m Z d d l m Z m
Z
m Z d d � Z Gd d � d e j
� Z d
S)z�Fixer for import statements.
If spam is being imported from the local directory, this import:
from spam import eggs
Becomes:
from .spam import eggs
And this import:
import spam
Becomes:
from . import spam
� )�
fixer_base� )�dirname�join�exists�sep)�
FromImport�syms�tokenc c s� | g } x� | r� | j � } | j t j k r; | j Vq | j t j k rn d j d d � | j D� � Vq | j t j k r� | j
| j d � q | j t j k r� | j | j d d d � � q t
d � � q Wd S) zF
Walks over all the names imported in a dotted_as_names node.
� c S s g | ] } | j � q S� )�value)�.0Zchr r �=/opt/alt/python34/lib64/python3.4/lib2to3/fixes/fix_import.py�
<listcomp> s z$traverse_imports.<locals>.<listcomp>r Nr zunknown node type���)�pop�typer
�NAMEr
r Zdotted_namer �childrenZdotted_as_name�appendZdotted_as_names�extend�AssertionError)�names�pending�noder r r �traverse_imports s ! r c sF e Z d Z d Z d Z � f d d � Z d d � Z d d � Z � S) � FixImportTzj
import_from< 'from' imp=any 'import' ['('] any [')'] >
|
import_name< 'import' imp=any >
c s/ t t | � j | | � d | j k | _ 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 } | j t j k r~ x t | d � sK | j d } q, W| j | j � rd | j | _ | j � qn� d } d } x2 t | � D]$ } | j | � r� d } q� d } q� W| r� | r� | j
| d � n d St d | g � } | j | _ | Sd 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 s� | j d � r d S| j d d � d } t | j � } t | | � } t t t | � d � � sf d Sx4 d t d d d d
g D] } t | | � r d Sq Wd S)Nr% F� r z__init__.pyz.pyz.pycz.soz.slz.pydT)�
startswith�splitr �filenamer r r )r! Zimp_name� base_pathZextr r r r'