a „oeã@s¬ddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z ddl m Z mZmZgd¢ZGdd„dejd�ZGd d „d eƒZe Gd d „d eƒƒZGd d„deƒZdS)éN)ÚAnyÚBinaryIOÚIterableÚIteratorÚNoReturnÚTextÚOptionalé)Úruntime_checkableÚProtocolÚStrPath)ÚResourceReaderÚ TraversableÚTraversableResourcesc@sjeZdZdZejeedœdd„ƒZejeedœdd„ƒZ ejee dœdd „ƒZ eje e d œd d „ƒZd S)r zDAbstract base class for loaders to provide resource reading support.©ÚresourceÚreturncCst‚dS)zÑReturn an opened, file-like object for binary reading. The 'resource' argument is expected to represent only a file name. If the resource cannot be found, FileNotFoundError is raised. N©ÚFileNotFoundError©Úselfr©rúKC:\Program Files\Certbot\pkgs\setuptools\_vendor\importlib_resources\abc.pyÚ open_resources zResourceReader.open_resourcecCst‚dS)zçReturn the file system path to the specified resource. The 'resource' argument is expected to represent only a file name. If the resource does not exist on the file system, raise FileNotFoundError. NrrrrrÚ resource_paths zResourceReader.resource_path©ÚpathrcCst‚dS)zjReturn True if the named 'path' is a resource. Files are resources, directories are not. Nr©rrrrrÚ is_resource)szResourceReader.is_resource©rcCst‚dS)z+Return an iterable of entries in `package`.Nr©rrrrÚcontents1szResourceReader.contentsN)Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚabcÚabstractmethodrrrrÚboolrrÚstrr!rrrrr s  r )Ú metaclassc@s eZdZdS)ÚTraversalErrorN)r"r#r$rrrrr+7sr+c@s¼eZdZdZejeddœdd„ƒZedœdd„Z de e e dœd d „Z eje dœd d „ƒZeje dœd d„ƒZeddœdd„Zeddœdd„Zejddd„ƒZeeje dœdd„ƒƒZdS)rzÔ An object with a subset of pathlib.Path methods suitable for traversing directories and opening files. Any exceptions that occur when accessing the backing resource may propagate unaltered. rcCsdS)z3 Yield Traversable objects in self Nrr rrrÚiterdirEszTraversable.iterdircCs6| d¡�}| ¡WdƒS1s(0YdS)z0 Read contents of self as bytes ÚrbN©ÚopenÚread)rÚstrmrrrÚ read_bytesKs zTraversable.read_bytesN)ÚencodingrcCs8|j|d��}| ¡WdƒS1s*0YdS)z/ Read contents of self as text )r3Nr.)rr3r1rrrÚ read_textRszTraversable.read_textcCsdS)z4 Return True if self is a directory Nrr rrrÚis_dirYszTraversable.is_dircCsdS)z/ Return True if self is a file Nrr rrrÚis_file_szTraversable.is_file)Ú descendantsrcs~|s|Stj dd„ttj|ƒDƒ¡}t|ƒ‰‡fdd„| ¡Dƒ}z t|ƒ}Wn"tyrt dˆt |ƒƒ‚Yn0|j |ŽS)zë Return Traversable resolved with any descendants applied. Each descendant should be a path segment relative to self and each may contain multiple levels separated by ``posixpath.sep`` (``/``). css|] }|jVqdS©N)Úparts)Ú.0rrrrÚ osz'Traversable.joinpath..c3s|]}|jˆkr|VqdSr8©Úname)r:Z traversable©Útargetrrr;ssz"Target not found during traversal.) Ú itertoolsÚchainÚ from_iterableÚmapÚpathlibÚ PurePosixPathÚnextr,Ú StopIterationr+ÚlistÚjoinpath)rr7ÚnamesÚmatchesÚmatchrr>rrIes   ÿ ÿ   ÿ zTraversable.joinpath)ÚchildrcCs | |¡S)z2 Return Traversable child in self )rI)rrMrrrÚ __truediv__~szTraversable.__truediv__ÚrcOsdS)zý mode may be 'r' or 'rb' to open as text or binary. Return a handle suitable for reading (same as pathlib.Path.open). When opening as text, accepts encoding parameters such as those accepted by io.TextIOWrapper. Nr)rÚmodeÚargsÚkwargsrrrr/„szTraversable.opencCsdS)zM The base name of this object without any parent references. Nrr rrrr=ŽszTraversable.name)N)rO)r"r#r$r%r&r'rr,Úbytesr2rr)r4r(r5r6r rIrNr/Úpropertyr=rrrrr;s  rc@sheZdZdZejddœdd„ƒZeej dœdd„Z e e dœd d „Z eed œd d „Zeedœdd„ZdS)rzI The required interface for providing traversable resources. rrcCsdS)z3Return a Traversable object for the loaded package.Nrr rrrÚfilesœszTraversableResources.filesrcCs| ¡ |¡ d¡S)Nr-)rUrIr/rrrrr sz"TraversableResources.open_resourcecCs t|ƒ‚dSr8rrrrrr£sz"TraversableResources.resource_pathrcCs| ¡ |¡ ¡Sr8)rUrIr6rrrrr¦sz TraversableResources.is_resourcecCsdd„| ¡ ¡DƒS)Ncss|] }|jVqdSr8r<)r:Úitemrrrr;ªóz0TraversableResources.contents..)rUr,r rrrr!©szTraversableResources.contentsN)r"r#r$r%r&r'rUr ÚioÚBufferedReaderrrrrr(rrr)r!rrrrr–sr)r&rXr@rDÚtypingrrrrrrrZ_compatr r r Ú__all__ÚABCMetar Ú Exceptionr+rrrrrrÚs$*Z