
\[\4                 @   s  d  Z  d d l m Z d d l m Z m Z i0 d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d  6d! d" 6d# d$ 6d% d& 6d' d( 6d) d* 6d+ d, 6d- d. 6d/ d0 6d1 d2 6d3 d4 6d5 d6 6d7 d8 6d9 d: 6d; d< 6d= d> 6d? d@ 6dA dB 6dC dD 6dC dE 6dF dG 6dH dI 6dJ dK 6dL dM 6dN dO 6dP dQ 6dP dR 6dP dS 6dT dU 6dV dW 6dV dX 6dY dZ 6d[ d\ 6Z d] d^   Z e d_ d`  Z Gda db   db e j	  Z
 dc S)dz/Fix incompatible imports and module references.   )
fixer_base)Name
attr_chainioStringIOZ	cStringIOpickleZcPicklebuiltinsZ__builtin__copyregZcopy_regZqueueZQueueZsocketserverZSocketServerZconfigparserZConfigParserreprlibreprztkinter.filedialogZ
FileDialogZtkFileDialogztkinter.simpledialogZSimpleDialogZtkSimpleDialogztkinter.colorchooserZtkColorChooserztkinter.commondialogZtkCommonDialogztkinter.dialogZDialogztkinter.dndZTkdndztkinter.fontZtkFontztkinter.messageboxZtkMessageBoxztkinter.scrolledtextZScrolledTextztkinter.constantsZTkconstantsztkinter.tixZTixztkinter.ttkZttkZtkinterZTkinterZ_markupbaseZ
markupbasewinreg_winreg_threadZthreadZ_dummy_threadZdummy_threadzdbm.bsdZdbhashzdbm.dumbZdumbdbmzdbm.ndbmZdbmzdbm.gnuZgdbmzxmlrpc.clientZ	xmlrpclibzxmlrpc.serverZDocXMLRPCServerZSimpleXMLRPCServerzhttp.clientZhttplibzhtml.entitiesZhtmlentitydefszhtml.parserZ
HTMLParserzhttp.cookiesZCookiezhttp.cookiejarZ	cookielibzhttp.serverZBaseHTTPServerZSimpleHTTPServerZCGIHTTPServer
subprocessZcommandscollections
UserStringUserListzurllib.parseZurlparsezurllib.robotparserZrobotparserc             C   s   d d j  t t |    d S)N(|))joinmapr   )Zmembers r   //usr/lib/python3.4/lib2to3/fixes/fix_imports.py
alternates=   s    r   c             c   sb   d j  d d   |  D  } t |  j    } d | | f Vd | Vd | | f Vd | Vd  S)Nz | c             S   s   g  |  ] } d  |  q S)zmodule_name='%s'r   ).0keyr   r   r   
<listcomp>B   s   	 z!build_pattern.<locals>.<listcomp>zyname_import=import_name< 'import' ((%s) |
               multiple_imports=dotted_as_names< any* (%s) any* >) >
          zimport_from< 'from' (%s) 'import' ['(']
              ( any | import_as_name< any 'as' any > |
                import_as_names< any* >)  [')'] >
          zimport_name< 'import' (dotted_as_name< (%s) 'as' any > |
               multiple_imports=dotted_as_names<
                 any* dotted_as_name< (%s) 'as' any > any* >) >
          z3power< bare_with_attr=(%s) trailer<'.' any > any* >)r   r   keys)mappingZmod_listZ
bare_namesr   r   r   build_patternA   s    	r    c                   sv   e  Z d  Z d Z d Z e Z d Z d d   Z   f d d   Z	   f d d   Z
   f d	 d
   Z d d   Z   S)
FixImportsT   c             C   s   d j  t |  j   S)Nr   )r   r    r   )selfr   r   r   r    `   s    zFixImports.build_patternc                s&   |  j    |  _ t t |   j   d  S)N)r    ZPATTERNsuperr!   compile_pattern)r#   )	__class__r   r   r%   c   s    zFixImports.compile_patternc                sd   t  t |   j     |  } | r` d | k r\ t   f d d   t | d  D  r\ d S| Sd S)Nbare_with_attrc             3   s   |  ] }   |  Vq d  S)Nr   )r   obj)matchr   r   	<genexpr>q   s    z#FixImports.match.<locals>.<genexpr>parentF)r$   r!   r)   anyr   )r#   noderesults)r&   )r)   r   r)   j   s    (zFixImports.matchc                s&   t  t |   j | |  i  |  _ d  S)N)r$   r!   
start_treereplace)r#   Ztreefilename)r&   r   r   r/   v   s    zFixImports.start_treec             C   s   | j  d  } | r | j } |  j | } | j t | d | j  d | k rc | |  j | <n  d | k r |  j |  } | r |  j | |  q q nH | d d } |  j j  | j  } | r | j t | d | j  n  d  S)NZmodule_nameprefixZname_importZmultiple_importsr'       )getvaluer   r0   r   r2   r)   	transform)r#   r-   r.   Z
import_modZmod_namenew_nameZ	bare_namer   r   r   r6   z   s    	zFixImports.transform)__name__
__module____qualname__ZBM_compatibleZkeep_line_orderMAPPINGr   Z	run_orderr    r%   r)   r/   r6   r   r   )r&   r   r!   U   s   r!   N)__doc__ r   Z
fixer_utilr   r   r;   r   r    ZBaseFixr!   r   r   r   r   <module>   sj   

