a '¡Dg«ã@spddlZddlmZmZe d¡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.9/site-packages/cloudinit/mergers/__init__.pyÚ_handle_unknownszUnknownMerger._handle_unknowncCsXt |¡}| ¡}d|}d}||g}t||ƒr:t||ƒ}|sP|j}| d|¡||ŽS)Nz_on_%sr)rZobj_nameÚlowerÚhasattrÚgetattrr Úinsert)rÚsourceÚ merge_withÚ type_nameZ method_nameÚmethÚargsrrr Úmerge s    zUnknownMerger.mergeN)Ú__name__Ú __module__Ú __qualname__r rrrrr rs rc@s&eZdZddd„Zdd„Zdd„ZdS) Ú LookupMergerNcCs$t |¡|durg|_n||_dSr)rÚ__init__Ú_lookups)rZlookupsrrr r/s zLookupMerger.__init__cCsdt|jƒS)NzLookupMerger: (%s))Úlenr)rrrr Ú__str__6szLookupMerger.__str__cCsFd}|jD]}t||ƒr t||ƒ}q(q |ss   ÿzLookupMerger._handle_unknown)N)rrrrrr rrrr r.s rcCs´g}| dd¡}|dur$| dd¡}|dur0|St|tƒrBt|ƒS|D]h}t|tƒrv|d}| dd¡ ¡}|d}n&|d}t|ƒdkr˜|d d…}ng}|rF| ||f¡qF|S) NÚ merge_howZ merge_typeÚnameú-Ú_Zsettingsréé) ÚpopÚ isinstanceÚstrÚstring_extract_mergersÚdictÚreplaceÚstriprÚappend)ZconfigÚparsed_mergersZ raw_mergersÚmrÚoptsrrr Údict_extract_mergersMs(      r.cCsŠg}| d¡D]v}| ¡ ¡}| dd¡}|s0qt |¡}|sNd|}t|ƒ‚| ¡\}}| ¡ d¡}dd„|Dƒ}| ||f¡q|S)Nú+rr z2Matcher identifier '%s' is not in the right formatú,cSs g|]}| ¡r| ¡ ¡‘qSr)r)r )Ú.0r,rrr Ú wóz*string_extract_mergers..) Úsplitr r)r(Ú NAME_MTCHÚmatchÚ ValueErrorÚgroupsr*)rr+Úm_namer6ÚmsgÚm_opsrrr r&fs"   ÿ r&cCs tttƒƒSr)Útupler&ÚDEF_MERGE_TYPErrrr Údefault_mergers|sr>c Cs®g}|D]v\}}| t¡s&tt|ƒ}t |tgtg¡\}}|sXd|t|f}t|ƒ‚qt |d¡}t |tƒ}|  ||f¡qg} t | ƒ} |D]\} } |   | | | ƒ¡q| 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_ber9r;Z merger_locsZ looked_locsr:ÚmodZmod_attrZmergersÚrootÚattrr-rrr Ú construct€s*    ÿþÿ   rH)ÚreZ cloudinitrrÚcompiler5r=r@rBrrr.r&r>rHrrrr Ús