o ?Ogt@sNddlmZddlmZGdddZGdddZGdd d Zd d Zd S) )suppress)abcc@s(eZdZdZddfddZddZdS) SpecLoaderAdapterz> Adapt a package spec to adapt the underlying loader. cCs|jSN)loaderspecr :/opt/alt/python310/lib64/python3.10/importlib/_adapters.py szSpecLoaderAdapter.cCs||_|||_dSr)r r)selfr Zadapterr r r __init__ szSpecLoaderAdapter.__init__cC t|j|Sr)getattrr r namer r r __getattr__ zSpecLoaderAdapter.__getattr__N)__name__ __module__ __qualname____doc__rrr r r r rs rc@s eZdZdZddZddZdS)TraversableResourcesLoaderz9 Adapt a loader to provide TraversableResources. cC ||_dSrrr r r r r r z#TraversableResourcesLoader.__init__cCst|jSr)DegenerateFilesr _nativerr r r get_resource_readersz.TraversableResourcesLoader.get_resource_readerN)rrrrrrr r r r rs rc@sNeZdZdZGdddejZddZeddZ dd Z d d Z d d Z dS)rzg Adapter for an existing or non-existant resource reader to provide a degenerate .files(). c@sBeZdZddZddZeZZddZeddZ d d d Z d S)zDegenerateFiles.PathcCstdS)Nr )iterr r r r iterdir&zDegenerateFiles.Path.iterdircCdS)NFr r!r r r is_dir)szDegenerateFiles.Path.is_dircCtSrrPath)r otherr r r joinpath.r#zDegenerateFiles.Path.joinpathcCr$)Nr r!r r r r1szDegenerateFiles.Path.namerbcOstr) ValueError)r modeargskwargsr r r open5szDegenerateFiles.Path.openN)r,) rrrr"r%is_fileexistsr*propertyrr1r r r r r(%s r(cCrrrrr r r r8rzDegenerateFiles.__init__cCs>tt|jj|jjWdS1swYdSr)rAttributeErrorr rrrr!r r r _reader;s $zDegenerateFiles._readercCs|j}t|dr |S|S)zB Return the native reader if it supports files(). files)r6hasattr)r readerr r r r@szDegenerateFiles._nativecCrr)rr6)r attrr r r rGrzDegenerateFiles.__getattr__cCr&rr'r!r r r r7Jr#zDegenerateFiles.filesN) rrrrrZ Traversabler(rr4r6rrr7r r r r rs  rcCs t|jtS)z` Construct a package spec with traversable compatibility on the spec/loader/reader. )r__spec__r)packager r r wrap_specNs r=N) contextlibrr+rrrrr=r r r r s   /