U
    ,]!                     @   s   d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
 dZdddd	d
dddded ded ed dddZdddddddddZdZdZd Zd!Zd"Zd#Zd$Zd%Zd&Zd'Zd(d) Zd*d+ ZG d,d- d-ejZd.S )/z
Fixer for complicated imports
    )
fixer_base)NameString
FromImportNewlineCommatouch_import_top)TZACTIVEZALLZANCHORZARCZBASELINEZBEVELZBOTHZBOTTOMZBROWSEZBUTTZCASCADEZCENTERZCHARZCHECKBUTTONZCHORDZCOMMANDZCURRENTZDISABLEDZDOTBOXEZENDZEWZ	EXCEPTIONZEXTENDEDZFALSEZFIRSTZFLATZGROOVEZHIDDENZ
HORIZONTALZINSERTZINSIDEZLASTZLEFTZMITERZMOVETOZMULTIPLENZNEZNOZNONEZNORMALZNSZNSEWZNUMERICZNWZOFFZONZOUTSIDEZPAGESZPIESLICEZ
PROJECTINGZRADIOBUTTONZRAISEDZREADABLEZRIDGEZRIGHTZROUNDSZSCROLLZSEZSELZ	SEL_FIRSTZSEL_LASTZ	SEPARATORZSINGLEZSOLIDZSUNKENZSWZStringTypesZTOPZTRUEZ
TclVersionZ	TkVersionZ	UNDERLINEZUNITSZVERTICALWZWORDZWRITABLEXYZYESZwantobjects)"ZAbstractBasicAuthHandlerZAbstractDigestAuthHandlerZAbstractHTTPHandlerZBaseHandlerZCacheFTPHandlerZ
FTPHandlerZFileHandlerZHTTPBasicAuthHandlerZHTTPCookieProcessorZHTTPDefaultErrorHandlerZHTTPDigestAuthHandlerZ	HTTPErrorZHTTPErrorProcessorZHTTPHandlerZHTTPPasswordMgrZHTTPPasswordMgrWithDefaultRealmZHTTPRedirectHandlerZHTTPSHandlerZOpenerDirectorZProxyBasicAuthHandlerZProxyDigestAuthHandlerZProxyHandlerZRequestStringIOZURLErrorZUnknownHandlerZ
addinfourlZbuild_openerZinstall_openerZparse_http_listZparse_keqv_listZrandombytesZrequest_hosturlopen)ZContentTooShortErrorZFancyURLopenerZ	URLopenerZbasejoinZ	ftperrorsZ
getproxiesZgetproxies_environmentZ	localhostZpathname2urlZquoteZ
quote_plusZ	splitattrZ	splithostZ
splitnportZsplitpasswdZ	splitportZ
splitqueryZsplittagZ	splittypeZ	splituserZ
splitvalueZthishostZunquoteZunquote_plusZunwrapZurl2pathnameZ
urlcleanupZ	urlencoder   Zurlretrieve)Zparse_qsZ	parse_qslZ	urldefragZurljoinurlparseZurlsplitZ
urlunparseZ
urlunsplit)ZndbmZgnuZdumb)erroropen)whichdb)ZBaseHTTPRequestHandlerZ
HTTPServer)ZCGIHTTPRequestHandler)ZSimpleHTTPRequestHandler)
FileDialogZLoadFileDialogZSaveFileDialogZdialogstatesZtest)Z	DirectoryZOpenZSaveAsZ_DialogZaskdirectoryZaskopenfileZaskopenfilenameZaskopenfilenamesZaskopenfilesZasksaveasfileZasksaveasfilename)SimpleDialog)ZaskfloatZ
askintegerZ	askstringZDialog)ZCGIXMLRPCRequestHandlerZSimpleXMLRPCDispatcherZSimpleXMLRPCRequestHandlerSimpleXMLRPCServerZlist_public_methodsZremove_duplicatesZresolve_dotted_attribute)ZDocCGIXMLRPCRequestHandlerZDocXMLRPCRequestHandlerDocXMLRPCServerZServerHTMLDocZXMLRPCDocGenerator)urllib2urllibr   Zdbmanydbmr   BaseHTTPServerCGIHTTPServerSimpleHTTPServerr   tkFileDialogr   tkSimpleDialogr   r   )r   r   )r   r   r   )r   r   )r   r   r   )r    r   )r!   r   )r   r   )zurllib.requestzurllib.errorzurllib.parsezdbm.__init__zhttp.serverztkinter.filedialogztkinter.simpledialogzxmlrpc.serverz	name='%s'z	attr='%s'z
using='%s'z$dotted_name=dotted_name< %s '.' %s >z?pow=power< %s trailer< '.' %s > trailer< '.' using=any > any* >z-pow=power< %s trailer< '.' using=any > any* >zfrom_import=import_from< 'from' %s 'import' (import_as_name< using=any 'as' renamed=any> | in_list=import_as_names< using=any* > | using='*' | using=NAME) >zSname_import=import_name< 'import' (%s | in_list=dotted_as_names< imp_list=any* >) >z8name_import_rename=dotted_as_name< %s 'as' renamed=any >zfrom_import_rename=import_from< 'from' %s 'import' (%s | import_as_name< %s 'as' renamed=any > | in_list=import_as_names< any* (%s | import_as_name< %s 'as' renamed=any >) any* >) >c                  C   sN   dd t D } dddd | D  }|d7 }|ddd | D d 7 }|S )zI
    Builds a pattern for all toplevel names
    (urllib, http, etc)
    c                 S   s   g | ]}| d qS ).)split.0mod r'   B/usr/lib/python3/dist-packages/libpasteurize/fixes/fix_imports2.py
<listcomp>   s     z*all_modules_subpattern.<locals>.<listcomp>z( z | c                 S   s(   g | ] }t t|d   t|d  f qS )r      )dotted_namesimple_namesimple_attrr$   r'   r'   r(   r)      s   
c                 S   s$   g | ]}|d  dkrt |d  qS )r*   __init__r   )r,   r$   r'   r'   r(   r)      s      z ))MAPPINGjoin)Znames_dot_attrsZretr'   r'   r(   all_modules_subpattern   s    
r1   c           	      c   s   t t  V  |  D ]\}}|d\}}t| }t| }t||f }t| V  t||f V  |dkrzt| V  t	| V  t
| V  t|||||f V  qdS )z
    mapping1: A dict mapping py3k modules to all possible py2k replacements
    mapping2: A dict mapping py2k modules to the things they do
    This builds a HUGE pattern to match all ways that things can be imported
    r"   r.   N)from_importr1   itemsr#   r,   r-   r+   name_importpower_twonamepower_onenamename_import_renamefrom_import_rename)	Zmapping1Zmapping2Zpy3kZpy2knameattrZs_nameZs_attrZd_namer'   r'   r(   build_import_pattern   s    



r;   c                   @   s(   e Zd ZdZdeeeZdd Z	dS )FixImports2   z | 
c                 C   s   t dd| d S )NZfutureZstandard_libraryr   )selfZnodeZresultsr'   r'   r(   	transform   s    zFixImports2.transformN)
__name__
__module____qualname__Z	run_orderr0   r;   r/   
PY2MODULESZPATTERNr?   r'   r'   r'   r(   r<      s   r<   N)__doc__Zlib2to3r   Zlib2to3.fixer_utilr   r   r   r   r   Zlibfuturize.fixer_utilr	   ZTK_BASE_NAMESrC   r/   r,   r-   Zsimple_usingr+   r5   r6   r2   r4   r7   r8   r1   r;   ZBaseFixr<   r'   r'   r'   r(   <module>   sT   
=