f ddlZddlmZddlmZmZddlmZdedefdZ ddedeeede fd Z d edeefd Z dd ed eedeeede fdZy)N) ModuleType)OptionalSequence)util module_namereturnc,tj|SN) importlib import_module)rs 4/usr/lib/python3/dist-packages/cloudinit/importer.pyr r s  " "; //attrscnd}|s|Stj|}|D]}t||s|dz }|S)Nr)r r hasattr)rr found_attrsmodattrs r _count_attrsrsMK   ! !+ .C 3  1 K rmod_namecd|jk(r|dd}|jdsd|}i}tjj d}|r{|j ro|j D]&}|j tj|(|jD]'}|j|jk(s%|cS|S)zECheck the importable datasource modules for a case-insensitive match.z nocloud-netN DataSourcezcloudinit.sources) lower startswithr r find_specsubmodule_search_locationsupdateget_modules_from_dirvalues)rmodulesspecdirmodules r "match_case_insensitive_module_namer&#s ((CR=   | ,z*G >> # #$7 8D //22 ;C NN444S9 : ;nn& F||~!11   Or base_name search_pathsrequired_attrsc|sg}g}g}|D]z}djtd||g}|j|tjj |sQt ||t|k(sj|j||||fS)zFinds specified modules.N)joinfilterappendr rrrlen)r'r(r) lookup_paths found_pathspath full_paths r find_moduler47s LK*HHVD4*;<= I&~~'' 2   > 2c.6I I   y )*  &&rr )r typesrtypingrr cloudinitrstrr intrr&tupler4rr r<s%0s0z0 8<  %hsm4  #./3''3-'Xc]+' 'r