
    x[h                     j    S SK r S SKJrJr  SrSrSr " S S5      r " S S	\5      rS
 r	S r
S rS rg)    N)importer
type_utilszlist()+dict()+str()m_Mergerc                        \ rS rSrS rS rSrg)UnknownMerger   c                     U$ N )self_meth_wantedvalue_merge_withs       </usr/lib/python3/dist-packages/cloudinit/mergers/__init__.py_handle_unknownUnknownMerger._handle_unknown   s        c                     [         R                  " U5      nUR                  5       nSU-  nS nX/n[        X5      (       a  [	        X5      nU(       d  U R
                  nUR                  SU5        U" U6 $ )Nz_on_%sr   )r   obj_namelowerhasattrgetattrr   insert)r   source
merge_with	type_namemethod_namemethargss          r   mergeUnknownMerger.merge   sp    ''/	OO%	),#4%%4-D''DKK;'T{r   r   N)__name__
__module____qualname____firstlineno__r   r!   __static_attributes__r   r   r   r   r      s    r   r   c                   *    \ rS rSrSS jrS rS rSrg)LookupMerger,   Nc                 P    [         R                  U 5        Uc  / U l        g Xl        g r   )r   __init___lookups)r   lookupss     r   r,   LookupMerger.__init__-   s!    t$?DM#Mr   c                 2    S[        U R                  5      -  $ )NzLookupMerger: (%s))lenr-   )r   s    r   __str__LookupMerger.__str__4   s    #s4=='9::r   c                     S nU R                    H   n[        XQ5      (       d  M  [        XQ5      n  O   U(       d  [        R	                  XX#5      $ U" X#5      $ r   )r-   r   r   r   r   )r   meth_wantedr   r   r   mergers         r   r   LookupMerger._handle_unknown<   sY    mmFv++ v3 $  005  E&&r   )r-   r   )r#   r$   r%   r&   r,   r2   r   r'   r   r   r   r)   r)   ,   s    $;'r   r)   c                    / nU R                  SS 5      nUc  U R                  SS 5      nUc  U$ [        U[        5      (       a  [        U5      $ U Hz  n[        U[        5      (       a+  US   nUR                  SS5      R                  5       nUS   nOUS   n[        U5      S:  a  US	S  nO/ nU(       d  Mh  UR                  XE45        M|     U$ )
N	merge_how
merge_typename-_settingsr         )	pop
isinstancestrstring_extract_mergersdictreplacestripr1   append)configparsed_mergersraw_mergersmr;   optss         r   dict_extract_mergersrN   K   s    N**[$/Kjjt4+s##%k22a$  V9D<<S)//1DZ=DQ4D1v{u4!!4,/  r   c                     / nU R                  S5       H  nUR                  5       R                  5       nUR                  SS5      nU(       d  M<  [        R
                  " SU5      nU(       d  SU-  n[        U5      eUR                  5       u  p%UR                  5       R                  S5      nU Vs/ s H7  ofR                  5       (       d  M  UR                  5       R                  5       PM9     nnUR                  X%45        M     U$ s  snf )N+r<   r=   z#(^[a-zA-Z_][A-Za-z0-9_]*)\((.*?)\)$z2Matcher identifier '%s' is not in the right format,)	splitr   rG   rF   rematch
ValueErrorgroupsrH   )r9   rJ   m_namerT   msgm_opsrL   s          r   rD   rD   d   s    N//#& %%'S)?HFC S/!,,.##C(,1?EqWWY""E?vo.! '"  @s   3D"Dc                  2    [        [        [        5      5      $ r   )tuplerD   DEF_MERGE_TYPEr   r   r   default_mergersr]   z   s    '788r   c                    / nU  H  u  p#UR                  [        5      (       d  [        [        U5      -   n[        R                  " U[
        /[        /5      u  pEU(       d  SU< S[        < SU< S3n[        U5      e[        R                  " US   5      n[        U[        5      nUR                  X45        M     / n	[        U	5      n
U H  u  pU	R                  U" X5      5        M     U
$ )Nz$Could not find merger module named 'z' with attribute 'z' (searched )r   )
startswithMERGER_PREFIXrC   r   find_moduler#   MERGER_ATTRImportErrorimport_moduler   rH   r)   )rJ   mergers_to_berW   rY   merger_locslooked_locsrX   modmod_attrmergersrootattrrM   s                r   	constructrn   ~   s    M'  //"S[0F#+#7#7XJ$
   ;5 
 c""((Q8CsK0H  (!23! ($ G D#
tD'( $Kr   )rS   	cloudinitr   r   r\   ra   rc   r   r)   rN   rD   r]   rn   r   r   r   <module>rp      sF    
 *& 8'= '>2,9r   