U  e| @sfddlZddlZddlmZddlmZddlmZmZddZ dd Z Gd d d ej Z d d Z dS)N)suppress)SimpleNamespace)readers _adapterscstfdd}|S)zw Wrap _adapters.TraversableResourcesLoader.get_resource_reader and intercept any standard library readers. cs~z||}Wntk r$YdSX|jj}|drF|drFdSt|tjrz|jj jjdsv|jj jjdrzdS|S)z If the reader is from the standard library, return None to allow allow likely newer implementations in this library to take precedence. Nz importlib.r zipimport_frozen_importlib_external) NotADirectoryError __class__ __module__ startswithendswith isinstancerCompatibilityFilesspecloader)argskwargsreadermod_name reader_getterQ/opt/hc_python/lib/python3.8/site-packages/importlib_resources/future/adapters.pywrappers   z _block_standard..wrapper) functoolswraps)rrrrr_block_standard srcCs t|tjo|j }|s|SdS)z/ Mask any degenerate reader. Ref #298. N)rrr_reader)rZ is_degeneraterrr_skip_degenerate+srcs@eZdZdZfddZddZddZdd Zd d ZZ S) TraversableResourcesLoaderz Adapt loaders to provide TraversableResources and other compatibility. Ensures the readers from importlib_resources are preferred over stdlib readers. cs(tttj|p&|p&t|SN)rrsuperget_resource_reader_standard_reader)selfnamer rrr#>s  z.TraversableResourcesLoader.get_resource_readercCs|p|p|Sr!) _zip_reader_namespace_reader _file_readerr%rrrr$Esz+TraversableResourcesLoader._standard_readerc Cs4tt"t|jj|jjW5QRSQRXdSr!)rAttributeErrorrZ ZipReaderrrr&r+rrrr(Hs z&TraversableResourcesLoader._zip_readerc Cs0tttt|jjW5QRSQRXdSr!)rr, ValueErrorrZNamespaceReaderrsubmodule_search_locationsr+rrrr)Ls z,TraversableResourcesLoader._namespace_readercCsFzt|jj}Wntk r(YdSX|rBtt|dSdS)N)path) pathlibPathrorigin TypeErrorexistsrZ FileReaderr)r%r/rrrr*Ps z'TraversableResourcesLoader._file_reader) __name__r __qualname____doc__r#r$r(r)r* __classcell__rrr'rr 5s  r cCst|jtS)z Override _adapters.wrap_spec to use TraversableResourcesLoader from above. Ensures that future behavior is always available on older Pythons. )rZSpecLoaderAdapter__spec__r )packagerrr wrap_specYsr;) rr0 contextlibrtypesrrrrrr r;rrrrs  " $