
    }f	              	           d dl Z d dlmZ d dlmZmZ d dlmZ dedefdZ		 ddedeee      de
fd	Zd
edee   fdZ	 ddedee   deee      defdZy)    N)
ModuleType)OptionalSequence)utilmodule_namereturnc                 ,    t        j                  |       S N)	importlibimport_module)r   s    4/usr/lib/python3/dist-packages/cloudinit/importer.pyr   r      s    "";//    attrsc                 n    d}|s|S t        j                  |       }|D ]  }t        ||      s|dz  } |S )Nr      )r   r   hasattr)r   r   found_attrsmodattrs        r   _count_attrsr      sM     K

!
!+
.C 31K r   mod_namec                    d| j                         k(  r| dd } | j                  d      sd|  } i }t        j                  j	                  d      }|r{|j
                  ro|j
                  D ]&  }|j                  t        j                  |             ( |j                         D ]'  }|j                         | j                         k(  s%|c S  | S )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2 	;CNN444S9:	;nn& 	F||~!11	 Or   	base_namesearch_pathsrequired_attrsc                    |sg }g }g }|D ]z  }dj                  t        d|| g            }|j                  |       t        j                  j                  |      sQt        ||      t        |      k(  sj|j                  |       | ||fS )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	>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   