o ,]@sPdZddlmZddlmZmZddlmZmZm Z ddiZ Gddde Z d S) zCFix UserDict. Incomplete! TODO: base this on fix_urllib perhaps? ) fixer_base)Name attr_chain) alternates build_pattern FixImportsUserDict collectionscsTeZdZdZdZeZdZddZfddZ fddZ fd d Z d d Z Z S) FixUserdictTcCsdt|jS)N|)joinrmappingselfr@/usr/lib/python3/dist-packages/libfuturize/fixes/fix_UserDict.pyr5szFixUserdict.build_patterncs||_tt|dSN)rPATTERNsuperrcompile_patternr __class__rrr8s zFixUserdict.compile_patterncsHtt|j|}|r"d|vr tfddt|dDr dS|SdS)Nbare_with_attrc3s|]}|VqdSrr).0objmatchrr Fsz$FixUserdict.match..parentF)rrranyr)rnoderesultsrrrr?s zFixUserdict.matchcstt|||i|_dSr)rr start_treereplace)rtreefilenamerrrr#Ks zFixUserdict.start_treecCs|d}|r;|j}t|j|}|t||jdd|vr$||j|<d|vr7||}|r9|||dSdSdS|dd}|j|j}|rV|t||jddSdS)N module_name)prefix name_importmultiple_importsrr) getvalueunicoderr$rr(r transform)rr!r" import_modmod_namenew_name bare_namerrrr.Os$    zFixUserdict.transform)__name__ __module__ __qualname__ BM_compatiblekeep_line_orderMAPPINGr run_orderrrrr#r. __classcell__rrrrr *s   r N) __doc__lib2to3rlib2to3.fixer_utilrrlib2to3.fixes.fix_importsrrrr8r rrrrs