o
    ,º]„!  ã                   @   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)TÚACTIVEÚALLÚANCHORÚARCÚBASELINEÚBEVELÚBOTHÚBOTTOMÚBROWSEÚBUTTÚCASCADEÚCENTERÚCHARÚCHECKBUTTONÚCHORDÚCOMMANDÚCURRENTÚDISABLEDÚDOTBOXÚEÚENDÚEWÚ	EXCEPTIONÚEXTENDEDÚFALSEÚFIRSTÚFLATÚGROOVEÚHIDDENÚ
HORIZONTALÚINSERTÚINSIDEÚLASTÚLEFTÚMITERÚMOVETOÚMULTIPLEÚNÚNEÚNOÚNONEÚNORMALÚNSÚNSEWÚNUMERICÚNWÚOFFÚONÚOUTSIDEÚPAGESÚPIESLICEÚ
PROJECTINGÚRADIOBUTTONÚRAISEDÚREADABLEÚRIDGEÚRIGHTÚROUNDÚSÚSCROLLÚSEÚSELÚ	SEL_FIRSTÚSEL_LASTÚ	SEPARATORÚSINGLEÚSOLIDÚSUNKENÚSWÚStringTypesÚTOPÚTRUEÚ
TclVersionÚ	TkVersionÚ	UNDERLINEÚUNITSÚVERTICALÚWÚWORDÚWRITABLEÚXÚYÚYESÚwantobjects)"ÚAbstractBasicAuthHandlerÚAbstractDigestAuthHandlerÚAbstractHTTPHandlerÚBaseHandlerÚCacheFTPHandlerÚ
FTPHandlerÚFileHandlerÚHTTPBasicAuthHandlerÚHTTPCookieProcessorÚHTTPDefaultErrorHandlerÚHTTPDigestAuthHandlerÚ	HTTPErrorÚHTTPErrorProcessorÚHTTPHandlerÚHTTPPasswordMgrÚHTTPPasswordMgrWithDefaultRealmÚHTTPRedirectHandlerÚHTTPSHandlerÚOpenerDirectorÚProxyBasicAuthHandlerÚProxyDigestAuthHandlerÚProxyHandlerÚRequestÚStringIOÚURLErrorÚUnknownHandlerÚ
addinfourlÚbuild_openerÚinstall_openerÚparse_http_listÚparse_keqv_listÚrandombytesÚrequest_hostÚurlopen)ÚContentTooShortErrorÚFancyURLopenerÚ	URLopenerÚbasejoinÚ	ftperrorsÚ
getproxiesÚgetproxies_environmentÚ	localhostÚpathname2urlÚquoteÚ
quote_plusÚ	splitattrÚ	splithostÚ
splitnportÚsplitpasswdÚ	splitportÚ
splitqueryÚsplittagÚ	splittypeÚ	splituserÚ
splitvalueÚthishostÚunquoteÚunquote_plusÚunwrapÚurl2pathnameÚ
urlcleanupÚ	urlencoder   Úurlretrieve)Úparse_qsÚ	parse_qslÚ	urldefragÚurljoinÚurlparseÚurlsplitÚ
urlunparseÚ
urlunsplit)ÚndbmÚgnuÚdumb)ÚerrorÚopen)Úwhichdb)ÚBaseHTTPRequestHandlerÚ
HTTPServer)ÚCGIHTTPRequestHandler)ÚSimpleHTTPRequestHandler)Ú
FileDialogÚLoadFileDialogÚSaveFileDialogÚdialogstatesÚtest)Ú	DirectoryÚOpenÚSaveAsÚ_DialogÚaskdirectoryÚaskopenfileÚaskopenfilenameÚaskopenfilenamesÚaskopenfilesÚasksaveasfileÚasksaveasfilename)ÚSimpleDialog)ÚaskfloatÚ
askintegerÚ	askstringÚDialog)ÚCGIXMLRPCRequestHandlerÚSimpleXMLRPCDispatcherÚSimpleXMLRPCRequestHandlerÚSimpleXMLRPCServerÚlist_public_methodsÚremove_duplicatesÚresolve_dotted_attribute)ÚDocCGIXMLRPCRequestHandlerÚDocXMLRPCRequestHandlerÚDocXMLRPCServerÚServerHTMLDocÚXMLRPCDocGenerator)Úurllib2Úurllibr¡   Ú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* >zœfrom_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 >zµfrom_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Þ   ú]/var/www/html/myproject/venv/lib/python3.10/site-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)Únames_dot_attrsÚretrÞ   rÞ   rß   Úall_modules_subpattern„   s   
ÿrê   c           	      c   s    � t tƒ  V  |  ¡ D ]B\}}| d¡\}}t| }t| }t||f }t| V  t||f V  |dkr>t| 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_importrê   ÚitemsrÚ   rã   rä   râ   Úname_importÚpower_twonameÚpower_onenameÚname_import_renameÚfrom_import_rename)	Úmapping1Úmapping2Úpy3kÚpy2kÚnameÚattrÚs_nameÚs_attrÚ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 )NÚfutureÚstandard_libraryr   )ÚselfÚnodeÚresultsrÞ   rÞ   rß   Ú	transform­   s   zFixImports2.transformN)
Ú__name__Ú
__module__Ú__qualname__Ú	run_orderrç   rû   ræ   Ú
PY2MODULESÚPATTERNr  rÞ   rÞ   rÞ   rß   rü   §   s    rü   N)Ú__doc__Úlib2to3r   Úlib2to3.fixer_utilr   r   r   r   r   Úlibfuturize.fixer_utilr	   ÚTK_BASE_NAMESr  ræ   rã   rä   Úsimple_usingrâ   rî   rï   rë   rí   rð   rñ   rê   rû   ÚBaseFixrü   rÞ   rÞ   rÞ   rß   Ú<module>   sV    
É=ñ