a
    ij                     @   s   d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZ eeeje f Zg dZG dd de jdZG dd deZeG d	d
 d
eZG dd deZdS )    N)AnyBinaryIOIterableIteratorNoReturnLiteralOptionalProtocolTextTextIOUnionoverloadruntime_checkable)ResourceReaderTraversableTraversableResourcesc                   @   sj   e Zd ZdZejeedddZejeedddZ	ejee
ddd	Zejee d
ddZdS )r   zDAbstract base class for loaders to provide resource reading support.resourcereturnc                 C   s   t dS )zReturn 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   U/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/importlib_resources/abc.pyopen_resource   s    
zResourceReader.open_resourcec                 C   s   t dS )zReturn 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.
        Nr   r   r   r   r   resource_path)   s    zResourceReader.resource_pathpathr   c                 C   s   t dS )zjReturn True if the named 'path' is a resource.

        Files are resources, directories are not.
        Nr   r   r   r   r   r   is_resource6   s    zResourceReader.is_resourcer   c                 C   s   t dS )z+Return an iterable of entries in `package`.Nr   r   r   r   r   contents>   s    zResourceReader.contentsN)__name__
__module____qualname____doc__abcabstractmethodr
   r   r   r   boolr    r   strr#   r   r   r   r   r      s   r   )	metaclassc                   @   s   e Zd ZdS )TraversalErrorN)r$   r%   r&   r   r   r   r   r-   D   s   r-   c                   @   s  e Zd ZdZejed  dddZedddZ	de
e e
e edd	d
ZejedddZejedddZed dddZed dddZeded eeedddZeed eeedddZejd eeeeeef dddZeejedddZdS )!r   z
    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.
    r!   c                 C   s   dS )z3
        Yield Traversable objects in self
        Nr   r"   r   r   r   iterdirR   s    zTraversable.iterdirc                 C   s6   |  d}| W  d   S 1 s(0    Y  dS )z0
        Read contents of self as bytes
        rbNopenread)r   strmr   r   r   
read_bytesX   s    zTraversable.read_bytesN)encodingerrorsr   c                 C   s:   | j ||d}| W  d   S 1 s,0    Y  dS )z/
        Read contents of self as text
        )r5   r6   Nr0   )r   r5   r6   r3   r   r   r   	read_text_   s    zTraversable.read_textc                 C   s   dS )z4
        Return True if self is a directory
        Nr   r"   r   r   r   is_dirh   s    zTraversable.is_dirc                 C   s   dS )z/
        Return True if self is a file
        Nr   r"   r   r   r   is_filen   s    zTraversable.is_file)descendantsr   c                    s~   |s| S t jdd ttj|D }t|  fdd|  D }zt|}W n" tyr   t	d t
|Y n0 |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`` (``/``).
        c                 s   s   | ]}|j V  qd S N)parts).0r   r   r   r   	<genexpr>~   s   z'Traversable.joinpath.<locals>.<genexpr>c                 3   s   | ]}|j  kr|V  qd S r;   name)r=   Ztraversabletargetr   r   r>      s   z"Target not found during traversal.)	itertoolschainfrom_iterablemappathlibPurePosixPathnextr.   StopIterationr-   listjoinpath)r   r:   namesmatchesmatchr   rA   r   rL   t   s     



zTraversable.joinpath)childr   c                 C   s
   |  |S )z2
        Return Traversable child in self
        )rL   )r   rP   r   r   r   __truediv__   s    zTraversable.__truediv__r)modeargskwargsr   c                 O   s   d S r;   r   r   rS   rT   rU   r   r   r   r1      s    zTraversable.openr/   c                 O   s   d S r;   r   rV   r   r   r   r1      s    c                 O   s   dS )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   rV   r   r   r   r1      s    c                 C   s   dS )zM
        The base name of this object without any parent references.
        Nr   r"   r   r   r   r@      s    zTraversable.name)NN)rR   )rR   )r$   r%   r&   r'   r(   r)   r   r.   bytesr4   r   r+   r7   r*   r8   r9   StrPathrL   rQ   r   r   r   r   r1   r   r   propertyr@   r   r   r   r   r   H   s8    	 
r   c                   @   sf   e Zd ZdZejddddZeedddZ	e
edd	d
ZeedddZee dddZdS )r   zI
    The required interface for providing traversable
    resources.
    r   r!   c                 C   s   dS )z3Return a Traversable object for the loaded package.Nr   r"   r   r   r   files   s    zTraversableResources.filesr   c                 C   s   |   |dS )Nr/   )rZ   rL   r1   r   r   r   r   r      s    z"TraversableResources.open_resourcec                 C   s   t |d S r;   r   r   r   r   r   r      s    z"TraversableResources.resource_pathr   c                 C   s   |   | S r;   )rZ   rL   r9   r   r   r   r   r       s    z TraversableResources.is_resourcec                 C   s   dd |    D S )Nc                 s   s   | ]}|j V  qd S r;   r?   )r=   itemr   r   r   r>          z0TraversableResources.contents.<locals>.<genexpr>)rZ   r.   r"   r   r   r   r#      s    zTraversableResources.contentsN)r$   r%   r&   r'   r(   r)   rZ   rX   r   r   r   r   r   r*   r    r   r+   r#   r   r   r   r   r      s   r   )r(   rC   osrG   typingr   r   r   r   r   r   r   r	   r
   r   r   r   r   r+   PathLikerX   __all__ABCMetar   	Exceptionr-   r   r   r   r   r   r   <module>   s   <*d