zyMa c@svdZddlmZmZddlmZddlmZmZm Z m Z m Z m Z m Z iddddd d d d d gfddddddddddddddddgfddgfgd 6dd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7gfdd8d9gfgd:6Zed:jed d;d<d=ZGd>d?d?eZd@S(AuFix 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. i(u alternatesu FixImports(u fixer_base(uNameuCommau FromImportuNewlineufind_indentationuNodeusymsuurllib.requestu URLopeneruFancyURLopeneru urlretrieveu _urlopeneruurlopenu urlcleanupu pathname2urlu url2pathnameu urllib.parseuquoteu quote_plusuunquoteu unquote_plusu urlencodeu splitattru splithostu splitnportu splitpasswdu splitportu splitqueryusplittagu splittypeu splituseru splitvalueu urllib.erroruContentTooShortErroruurllibuinstall_openeru build_openeruRequestuOpenerDirectoru BaseHandleruHTTPDefaultErrorHandleruHTTPRedirectHandleruHTTPCookieProcessoru ProxyHandleruHTTPPasswordMgruHTTPPasswordMgrWithDefaultRealmuAbstractBasicAuthHandleruHTTPBasicAuthHandleruProxyBasicAuthHandleruAbstractDigestAuthHandleruHTTPDigestAuthHandleruProxyDigestAuthHandleru HTTPHandleru HTTPSHandleru FileHandleru FTPHandleruCacheFTPHandleruUnknownHandleruURLErroru HTTPErroruurllib2iccst}xtjD]w\}}xh|D]`}|\}}t|}d||fVd|||fVd|Vd|Vd||fVq)WqWdS(Nuimport_name< 'import' (module=%r | dotted_as_names< any* module=%r any* >) > uimport_from< 'from' mod_member=%r 'import' ( member=%s | import_as_name< member=%s 'as' any > | import_as_names< members=any* >) > uIimport_from< 'from' module_star=%r 'import' star='*' > utimport_name< 'import' dotted_as_name< module_as=%r 'as' any > > uKpower< bare_with_attr=%r trailer< '.' member=%s > any* > (usetuMAPPINGuitemsu alternates(ubareu old_moduleuchangesuchangeu new_moduleumembers((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_urllib.pyu build_pattern1s      u build_patterncBsP|EeZdZddZddZddZddZd d Zd S( u FixUrllibcCsdjtS(Nu|(ujoinu build_pattern(uself((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_urllib.pyu build_patternJsuFixUrllib.build_patterncCs|jd}|j}g}xEt|jddD],}|jt|dd|tgq6W|jtt|jddd||j|dS(uTransform for the basic import case. Replaces the old import name with a comma separated list of its replacements. umoduleNiiuprefixii( ugetuprefixuMAPPINGuvalueuextenduNameuCommauappendureplace(uselfunodeuresultsu import_moduprefunamesuname((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_urllib.pyutransform_importMs *(uFixUrllib.transform_importcCs|jd}|j}|jd}|rt|trI|d}nd }x6t|jD]'}|j|dkr]|d}Pq]q]W|r|jt|d|q|j |dn>g}i} |d} x| D]}|j t j kr|j dj} |j dj} n|j} d } | d krxlt|jD]Z}| |dkr>|d| krx|j|dn| j|dgj|q>q>WqqWg} t|}d}d d }x|D]}| |}g}x>|d dD],}|j||||jtqW|j||d|t||}| sj|jjj|rv||_n| j|d}qW| rg}x.| d dD]}|j|tgqW|j| d|j|n|j |d d S(uTransform for imports of specific module elements. Replaces the module to be imported from with the appropriate new module. u mod_memberumemberiiuprefixu!This is an invalid module elementumembersiu,cSsz|jtjkrdt|jdjd||jdj|jdjg}ttj|gSt|jd|gS(Niuprefixii(utypeusymsuimport_as_nameuNameuchildrenuvalueucloneuNode(unameuprefixukids((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_urllib.pyu handle_names u/FixUrllib.transform_member..handle_nameNuAll module elements are invalidTiiFii(ugetuprefixu isinstanceulistuNoneuMAPPINGuvalueureplaceuNameucannot_convertutypeusymsuimport_as_nameuchildrenuappendu setdefaultufind_indentationuTrueuextenduCommau FromImportuparentuendswithuFalseuNewline(uselfunodeuresultsu mod_memberuprefumemberunew_nameuchangeumodulesumod_dictumembersuas_nameu member_nameu new_nodesu indentationufirstu handle_nameumoduleueltsunamesueltunewunodesunew_node((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_urllib.pyutransform_member]sh       +       uFixUrllib.transform_membercCs|jd}|jd}d}t|tr@|d}nx6t|jD]'}|j|dkrN|d}PqNqNW|r|jt|d|jn|j |ddS(u.Transform for calls to module members in code.ubare_with_attrumemberiiuprefixu!This is an invalid module elementN( ugetuNoneu isinstanceulistuMAPPINGuvalueureplaceuNameuprefixucannot_convert(uselfunodeuresultsu module_dotumemberunew_nameuchange((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_urllib.pyu transform_dots  uFixUrllib.transform_dotcCs|jdr"|j||n|jdrD|j||nf|jdrf|j||nD|jdr|j|dn"|jdr|j|dndS(Numoduleu mod_memberubare_with_attru module_staruCannot handle star imports.u module_asu#This module is now multiple modules(ugetutransform_importutransform_memberu transform_dotucannot_convert(uselfunodeuresults((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_urllib.pyu transformsuFixUrllib.transformN(u__name__u __module__u __qualname__u build_patternutransform_importutransform_memberu transform_dotu transform(u __locals__((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_urllib.pyu FixUrllibHs    L u FixUrllibN(u__doc__ulib2to3.fixes.fix_importsu alternatesu FixImportsulib2to3u fixer_baseulib2to3.fixer_utiluNameuCommau FromImportuNewlineufind_indentationuNodeusymsuMAPPINGuappendu build_patternu FixUrllib(((u=/opt/alt/python33/lib64/python3.3/lib2to3/fixes/fix_urllib.pyusD4