
    x[h	              	           S SK r S SKJr  S SKJrJr  S SKJr  S\S\4S jr	 SS\S\\\      S\
4S	 jjrS
\S\\   4S jr SS\S\\   S\\\      S\4S jjrg)    N)
ModuleType)OptionalSequence)utilmodule_namereturnc                 .    [         R                  " U 5      $ N)	importlibimport_module)r   s    4/usr/lib/python3/dist-packages/cloudinit/importer.pyr   r      s    "";//    attrsc                     SnU(       d  U$ [         R                  " U 5      nU H  n[        X45      (       d  M  US-  nM     U$ )Nr      )r   r   hasattr)r   r   found_attrsmodattrs        r   _count_attrsr      sI     K

!
!+
.C31K  r   mod_namec                    SU R                  5       :X  a  U SS n U R                  S5      (       d  SU  3n 0 n[        R                  R	                  S5      nU(       a  UR
                  (       au  UR
                   H(  nUR                  [        R                  " U5      5        M*     UR                  5        H)  nUR                  5       U R                  5       :X  d  M'  Us  $    U $ )zECheck the importable datasource modules for a case-insensitive match.znocloud-netN
DataSourcezcloudinit.sources)	lower
startswithr   r   	find_specsubmodule_search_locationsupdateget_modules_from_dirvalues)r   modulesspecdirmodules        r   "match_case_insensitive_module_namer&   #   s    
 ((CR=|,,z*G>>##$78D//22CNN444S9: 3nn&F||~!11 ' Or   	base_namesearch_pathsrequired_attrsc                 0   U(       d  / n/ n/ nU H  nSR                  [        SXP/5      5      nUR                  U5        [        R                  R                  U5      (       d  MV  [        Xb5      [        U5      :X  d  Mp  UR                  U5        M     XC4$ )zFinds specified modules.N)joinfilterappendr   r   r   r   len)r'   r(   r)   lookup_pathsfound_pathspath	full_paths          r   find_moduler4   7   s     LKHHVD4*;<=	I&~~''	22	2c.6IIy)  &&r   r
   )r   typesr   typingr   r   	cloudinitr   strr   intr   r&   tupler4    r   r   <module>r<      s      % 0s 0z 0
 8<

%hsm4

 # . /3''3-' Xc]+' 	'r   