3 \¼me¢ã@spddlZddlmZmZejdƒZdZdZdZGdd„dƒZ Gd d „d e ƒZ d d „Z d d„Z dd„Z dd„ZdS)éN)ÚimporterÚ type_utilsz#(^[a-zA-Z_][A-Za-z0-9_]*)\((.*?)\)$zlist()+dict()+str()Zm_ZMergerc@seZdZdd„Zdd„ZdS)Ú UnknownMergercCs|S)N©)ÚselfZ _meth_wantedÚvalueZ _merge_withrrú/usr/lib/python3.6/__init__.pyÚ_handle_unknownszUnknownMerger._handle_unknowncCsXtj|ƒ}|jƒ}d|}d}||g}t||ƒr:t||ƒ}|sP|j}|jd|ƒ||ŽS)Nz_on_%sr)rZobj_nameÚlowerÚhasattrÚgetattrr Úinsert)rÚsourceÚ merge_withZ type_nameZ method_nameÚmethÚargsrrrÚmerge s    zUnknownMerger.mergeN)Ú__name__Ú __module__Ú __qualname__r rrrrrrs rc@s&eZdZddd„Zdd„Zdd„ZdS) Ú LookupMergerNcCs$tj|ƒ|dkrg|_n||_dS)N)rÚ__init__Ú_lookups)rZlookupsrrrr/s zLookupMerger.__init__cCsdt|jƒS)NzLookupMerger: (%s))Úlenr)rrrrÚ__str__6szLookupMerger.__str__cCsHd}x$|jD]}t||ƒr t||ƒ}Pq W|s>tj||||ƒS|||ƒS)N)rr r rr )rZ meth_wantedrrrZmergerrrrr >s    zLookupMerger._handle_unknown)N)rrrrrr rrrrr.s rcCs¸g}|jddƒ}|dkr$|jddƒ}|dkr0|St|tƒrBt|ƒSxp|D]h}t|tƒrx|d}|jddƒjƒ}|d}n&|d}t|ƒdkrš|d d…}ng}|rH|j||fƒqHW|S) NÚ merge_howZ merge_typeÚnameú-Ú_Zsettingsréé) ÚpopÚ isinstanceÚstrÚstring_extract_mergersÚdictÚreplaceÚstriprÚappend)ÚconfigÚparsed_mergersZ raw_mergersÚmrÚoptsrrrÚdict_extract_mergersMs(       r-cCsŽg}x„|jdƒD]v}|jƒjƒ}|jddƒ}|s2qtj|ƒ}|sPd|}t|ƒ‚|jƒ\}}|jƒjdƒ}dd„|Dƒ}|j||fƒqW|S)Nú+rrz1Matcher identifer '%s' is not in the right formatú,cSs g|]}|jƒr|jƒjƒ‘qSr)r'r )Ú.0r+rrrú wsz*string_extract_mergers..) Úsplitr r'r&Ú NAME_MTCHÚmatchÚ ValueErrorÚgroupsr()rr*Úm_namer4ÚmsgÚm_opsrrrr$fs     r$cCs tttƒƒS)N)Útupler$ÚDEF_MERGE_TYPErrrrÚdefault_mergers|sr<c Cs¶g}x~|D]v\}}|jtƒs(tt|ƒ}tj|tgtgƒ\}}|sZd|t|f}t|ƒ‚q tj|dƒ}t |tƒ}|j ||fƒq Wg} t | ƒ} x |D]\} } | j | | | ƒƒq–W| S)NzICould not find merger module named '%s' with attribute '%s' (searched %s)r) Ú startswithÚ MERGER_PREFIXr#rÚ find_modulerÚ MERGER_ATTRÚ ImportErrorÚ import_moduler r(r) r*Z mergers_to_ber7r9Z merger_locsZ looked_locsr8ÚmodZmod_attrZmergersÚrootÚattrr,rrrÚ construct€s$     rF)ÚreZ cloudinitrrÚcompiler3r;r>r@rrr-r$r<rFrrrrÚs