a
XC?h @ s d Z ddlmZmZ ddlmZmZmZmZm Z m
Z
mZ dg dfdg dfdd gfgdg d
fdddgfgd
Zed
ed d dd ZG dd deZdS )zFix changes imports of urllib which are now incompatible.
This is rather similar to fix_imports, but because of the more
complex nature of the fixing for urllib, it has its own fixer.
)
alternates
FixImports)NameComma
FromImportNewlinefind_indentationNodesymszurllib.request) Z URLopenerZFancyURLopenerZurlretrieveZ
_urlopenerurlopenZ
urlcleanupZpathname2urlZurl2pathnameZ
getproxieszurllib.parse)ZquoteZ
quote_plusZunquoteZunquote_plusZ urlencodeZ splitattrZ splithostZ
splitnportZsplitpasswdZ splitportZ
splitqueryZsplittagZ splittypeZ splituserZ
splitvaluezurllib.errorZContentTooShortError)r Zinstall_openerZbuild_openerZRequestZOpenerDirectorZBaseHandlerZHTTPDefaultErrorHandlerZHTTPRedirectHandlerZHTTPCookieProcessorZProxyHandlerZHTTPPasswordMgrZHTTPPasswordMgrWithDefaultRealmZAbstractBasicAuthHandlerZHTTPBasicAuthHandlerZProxyBasicAuthHandlerZAbstractDigestAuthHandlerZHTTPDigestAuthHandlerZProxyDigestAuthHandlerZHTTPHandlerZHTTPSHandlerZFileHandlerZ
FTPHandlerZCacheFTPHandlerZUnknownHandlerZURLErrorZ HTTPError)urlliburllib2r
r c c sv t } t D ]b\}}|D ]T}|\}}t|}d||f V d|||f V d| V d| V d||f V qqd S )Nzimport_name< 'import' (module=%r
| dotted_as_names< any* module=%r any* >) >
zimport_from< 'from' mod_member=%r 'import'
( member=%s | import_as_name< member=%s 'as' any > |
import_as_names< members=any* >) >
zIimport_from< 'from' module_star=%r 'import' star='*' >
ztimport_name< 'import'
dotted_as_name< module_as=%r 'as' any > >
zKpower< bare_with_attr=%r trailer< '.' member=%s > any* >
)setMAPPINGitemsr )ZbareZ
old_moduleZchangeschangeZ
new_modulemembers r =/opt/alt/python39/lib64/python3.9/lib2to3/fixes/fix_urllib.py
build_pattern0 s( r c @ s4 e Zd Zdd Zdd Zdd Zdd Zd d
ZdS ) FixUrllibc C s d t S )N|)joinr )selfr r r r I s zFixUrllib.build_patternc C sv | d}|j}g }t|j dd D ] }|t|d |dt g q&|tt|j d d |d || dS )zTransform for the basic import case. Replaces the old
import name with a comma separated list of its
replacements.
moduleNr prefix) getr r valueextendr r appendreplace)r noderesultsZ
import_modprefnamesnamer r r transform_importL s
zFixUrllib.transform_importc C s& | d}|j}| d}|rt|tr0|d }d}t|j D ]}|j|d v r>|d } q^q>|rv|t||d n| |d ng }i } |d }
|
D ]}|j t
jkr|jd j}|jd j}n
|j}d}|d
krt|j D ]B}||d v r|d | vr|
|d | |d g
| qqg }
t|}d}dd
}|D ]}| | }g }|dd D ]"}|||| |
t q^|||d | t||}|r|jj|r||_|
| d}qB|
rg }|
dd D ]}||t g q|
|
d || n| |d dS )zTransform for imports of specific module elements. Replaces
the module to be imported from with the appropriate new
module.
mod_membermemberr Nr r !This is an invalid module elementr ,Tc S sX | j tjkrHt| jd j|d| jd | jd g}ttj|gS t| j|dgS )Nr r r r- )typer
import_as_namer childrenr Zcloner )r( r Zkidsr r r handle_name s z/FixUrllib.transform_member.