o
     JAf4                     @   s@  d Z ddlmZ ddlmZmZ i 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"i d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdDdEdFdGdHdIdJdJdJdKdLdLdMdNdOZdPdQ ZefdRdSZG dTdU dUej	Z
dVS )Wz/Fix incompatible imports and module references.   )
fixer_base)Name
attr_chainStringIOio	cStringIOcPicklepickle__builtin__builtinscopy_regcopyregQueuequeueSocketServersocketserverConfigParserconfigparserreprreprlib
FileDialogztkinter.filedialogtkFileDialogSimpleDialogztkinter.simpledialogtkSimpleDialogtkColorChooserztkinter.colorchoosertkCommonDialogztkinter.commondialogDialogztkinter.dialogTkdndztkinter.dndtkFontztkinter.fonttkMessageBoxztkinter.messageboxScrolledTextztkinter.scrolledtextTkconstantsztkinter.constantsTixztkinter.tixttkztkinter.ttkTkintertkinter
markupbase_markupbase_winregwinregthread_threaddummy_thread_dummy_threaddbhashzdbm.bsddumbdbmzdbm.dumbdbmzdbm.ndbmgdbmzdbm.gnu	xmlrpclibzxmlrpc.clientDocXMLRPCServerzxmlrpc.serverzhttp.clientzhtml.entitieszhtml.parserzhttp.cookieszhttp.cookiejarzhttp.server
subprocesscollectionszurllib.parsezurllib.robotparser)SimpleXMLRPCServerhttplibhtmlentitydefs
HTMLParserCookie	cookielibBaseHTTPServerSimpleHTTPServerCGIHTTPServercommands
UserStringUserListurlparserobotparserc                 C   s   dd tt|  d S )N(|))joinmapr   )members rJ   0/usr/lib/python3.10/lib2to3/fixes/fix_imports.py
alternates=   s   rL   c                 c   sV    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'rJ   ).0keyrJ   rJ   rK   
<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* >)rG   rL   keys)mappingZmod_listZ
bare_namesrJ   rJ   rK   build_patternA   s   rR   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 )NrE   )rG   rR   rQ   selfrJ   rJ   rK   rR   `   s   zFixImports.build_patternc                    s   |   | _tt|   d S N)rR   ZPATTERNsuperrS   compile_patternrU   	__class__rJ   rK   rY   c   s   
zFixImports.compile_patternc                    sH   t t| j  |}|r"d|vr t fddt|dD r dS |S dS )Nbare_with_attrc                 3   s    | ]} |V  qd S rW   rJ   )rM   objmatchrJ   rK   	<genexpr>q   s    z#FixImports.match.<locals>.<genexpr>parentF)rX   rS   r_   anyr   )rV   noderesultsrZ   r^   rK   r_   j   s   zFixImports.matchc                    s   t t| || i | _d S rW   )rX   rS   
start_treereplace)rV   ZtreefilenamerZ   rJ   rK   re   v   s   
zFixImports.start_treec                 C   s   | d}|r9|j}| j| }|t||jd d|v r"|| j|< d|v r5| |}|r7| || d S d S d S |d d }| j |j}|rT|t||jd d S d S )Nmodule_name)prefixZname_importZmultiple_importsr\       )getvaluerQ   rf   r   ri   r_   	transform)rV   rc   rd   Z
import_modZmod_namenew_nameZ	bare_namerJ   rJ   rK   rm   z   s$   



zFixImports.transform)__name__
__module____qualname__ZBM_compatibleZkeep_line_orderMAPPINGrQ   Z	run_orderrR   rY   r_   re   rm   __classcell__rJ   rJ   rZ   rK   rS   U   s    rS   N)__doc__ r   Z
fixer_utilr   r   rr   rL   rR   ZBaseFixrS   rJ   rJ   rJ   rK   <module>   s    	
 !"#5