B
    v9a4              1   @   s   d Z ddlmZ ddlmZmZ ddddddd	d
dddddddddddddddddddddddd d!d"d"d#d$d%d&d'd(d(d(d)d*d*d+d,d-0Zd.d/ Zefd0d1ZG d2d3 d3ej	Z
d4S )5z/Fix incompatible imports and module references.   )
fixer_base)Name
attr_chainiopicklebuiltinscopyregZqueueZsocketserverZconfigparserreprlibztkinter.filedialogztkinter.simpledialogztkinter.colorchooserztkinter.commondialogztkinter.dialogztkinter.dndztkinter.fontztkinter.messageboxztkinter.scrolledtextztkinter.constantsztkinter.tixztkinter.ttkZtkinterZ_markupbasewinreg_threadZ_dummy_threadzdbm.bsdzdbm.dumbzdbm.ndbmzdbm.gnuzxmlrpc.clientzxmlrpc.serverzhttp.clientzhtml.entitieszhtml.parserzhttp.cookieszhttp.cookiejarzhttp.server
subprocesscollectionszurllib.parsezurllib.robotparser)0StringIOZ	cStringIOZcPickleZ__builtin__Zcopy_regZQueueZSocketServerZConfigParserreprZ
FileDialogZtkFileDialogZSimpleDialogZtkSimpleDialogZtkColorChooserZtkCommonDialogZDialogZTkdndZtkFontZtkMessageBoxZScrolledTextZTkconstantsZTixZttkZTkinterZ
markupbase_winregZthreadZdummy_threadZdbhashZdumbdbmZdbmZgdbmZ	xmlrpclibZDocXMLRPCServerZSimpleXMLRPCServerZhttplibZhtmlentitydefsZ
HTMLParserZCookieZ	cookielibZBaseHTTPServerZSimpleHTTPServerZCGIHTTPServerZcommands
UserStringUserListZurlparseZrobotparserc             C   s   dd tt|  d S )N(|))joinmapr   )members r   !/usr/lib/python3.7/fix_imports.py
alternates=   s    r   c             c   sT   d dd | D }t|  }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                   sT   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  ZS )
FixImportsT   c             C   s   d t| jS )Nr   )r   r!   r    )selfr   r   r   r!   `   s    zFixImports.build_patternc                s   |   | _tt|   d S )N)r!   ZPATTERNsuperr"   compile_pattern)r$   )	__class__r   r   r&   c   s    
zFixImports.compile_patternc                sH   t t| j  |}|rDd|kr@t fddt|dD r@dS |S d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| || i | _d S )N)r%   r"   
start_treereplace)r$   Ztreefilename)r'   r   r   r0   v   s    zFixImports.start_treec             C   s   | d}|rh|j}| j| }|t||jd d|krD|| j|< d|kr| |}|r| || n2|d d }| j |j}|r|t||jd d S )NZmodule_name)prefixZname_importZmultiple_importsr(       )getvaluer    r1   r   r3   r*   	transform)r$   r.   r/   Z
import_modZmod_namenew_nameZ	bare_namer   r   r   r7   z   s    



zFixImports.transform)__name__
__module____qualname__ZBM_compatibleZkeep_line_orderMAPPINGr    Z	run_orderr!   r&   r*   r0   r7   __classcell__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   