U
    A`4                  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_winreg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.8/lib2to3/fixes/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_patternr%   	__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 r'   r   )r   objmatchr   r   	<genexpr>q   s     z#FixImports.match.<locals>.<genexpr>parentF)r(   r#   r/   anyr   )r&   noderesultsr*   r.   r   r/   j   s    zFixImports.matchc                    s   t t| || i | _d S r'   )r(   r#   
start_treereplace)r&   Ztreefilenamer*   r   r   r5   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!   r6   r   r8   r/   	transform)r&   r3   r4   Z
import_modZmod_namenew_nameZ	bare_namer   r   r   r<   z   s    



zFixImports.transform)__name__
__module____qualname__ZBM_compatibleZkeep_line_orderMAPPINGr!   Z	run_orderr"   r)   r/   r5   r<   __classcell__r   r   r*   r   r#   U   s   r#   N)__doc__ r   Z
fixer_utilr   r   rA   r   r"   ZBaseFixr#   r   r   r   r   <module>   sl   5