U
    -ºc  ã                   @   s„   d Z ddlZddlZddlZddlmZmZ ddlmZmZ G dd„ dej	ƒZ
G dd	„ d	eƒZG d
d„ deƒZG dd„ dee
ƒZdS )z+
Interface adapters for low-level readers.
é    N)ÚBinaryIOÚListé   )ÚTraversableÚTraversableResourcesc                   @   sT   e Zd ZdZejdd„ ƒZejdd„ ƒZejdd„ ƒZ	ejdd	„ ƒZ
ed
d„ ƒZdS )ÚSimpleReaderzQ
    The minimum, low-level interface required from a resource
    provider.
    c                 C   s   dS )zP
        The name of the package for which this reader loads resources.
        N© ©Úselfr   r   úT/tmp/pip-unpacked-wheel-izj_87as/pkg_resources/_vendor/importlib_resources/simple.pyÚpackage   s    zSimpleReader.packagec                 C   s   dS )zo
        Obtain an iterable of SimpleReader for available
        child containers (e.g. directories).
        Nr   r	   r   r   r   Úchildren   s    zSimpleReader.childrenc                 C   s   dS )zL
        Obtain available named resources for this virtual package.
        Nr   r	   r   r   r   Ú	resources"   s    zSimpleReader.resourcesc                 C   s   dS )z:
        Obtain a File-like for a named resource.
        Nr   )r
   Úresourcer   r   r   Úopen_binary)   s    zSimpleReader.open_binaryc                 C   s   | j  d¡d S )NÚ.éÿÿÿÿ)r   Úsplitr	   r   r   r   Úname0   s    zSimpleReader.nameN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚabcÚabstractpropertyr   Úabstractmethodr   r   r   Úpropertyr   r   r   r   r   r      s   



r   c                   @   s:   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	d
„Zdd„ ZdS )ÚResourceHandlez9
    Handle to a named resource in a ResourceReader.
    c                 C   s   || _ || _d S ©N)Úparentr   )r
   r   r   r   r   r   Ú__init__:   s    zResourceHandle.__init__c                 C   s   dS ©NTr   r	   r   r   r   Úis_file?   s    zResourceHandle.is_filec                 C   s   dS ©NFr   r	   r   r   r   Úis_dirB   s    zResourceHandle.is_dirÚrc                 O   s(   | j j | j¡}d|kr$tj||Ž}|S )NÚb)r   Úreaderr   r   ÚioÚTextIOWrapper)r
   ÚmodeÚargsÚkwargsÚstreamr   r   r   ÚopenE   s    zResourceHandle.openc                 C   s   t dƒ‚d S )NzCannot traverse into a resource)ÚRuntimeError©r
   r   r   r   r   ÚjoinpathK   s    zResourceHandle.joinpathN)r%   )	r   r   r   r   r    r"   r$   r.   r1   r   r   r   r   r   5   s   
r   c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚResourceContainerzI
    Traversable container for a package's resources via its reader.
    c                 C   s
   || _ d S r   )r'   )r
   r'   r   r   r   r    T   s    zResourceContainer.__init__c                 C   s   dS r!   r   r	   r   r   r   r$   X   s    zResourceContainer.is_dirc                 C   s   dS r#   r   r	   r   r   r   r"   [   s    zResourceContainer.is_filec                    s2   ‡ fdd„ˆ j jD ƒ}ttˆ j  ¡ ƒ}t ||¡S )Nc                 3   s   | ]}t ˆ |ƒV  qd S r   )r   )Ú.0r   r	   r   r   Ú	<genexpr>_   s     z,ResourceContainer.iterdir.<locals>.<genexpr>)r'   r   Úmapr2   r   Ú	itertoolsÚchain)r
   ÚfilesÚdirsr   r	   r   Úiterdir^   s    zResourceContainer.iterdirc                 O   s
   t ƒ ‚d S r   )ÚIsADirectoryError)r
   r+   r,   r   r   r   r.   c   s    zResourceContainer.openc                    s   t ‡ fdd„|  ¡ D ƒƒS )Nc                 3   s   | ]}|j ˆ kr|V  qd S r   ©r   )r3   Ztraversabler<   r   r   r4   g   s    
 z-ResourceContainer.joinpath.<locals>.<genexpr>)Únextr:   r0   r   r<   r   r1   f   s    ÿzResourceContainer.joinpathN)
r   r   r   r   r    r$   r"   r:   r.   r1   r   r   r   r   r2   O   s   r2   c                   @   s   e Zd ZdZdd„ ZdS )ÚTraversableReaderzÄ
    A TraversableResources based on SimpleReader. Resource providers
    may derive from this class to provide the TraversableResources
    interface by supplying the SimpleReader interface.
    c                 C   s   t | ƒS r   )r2   r	   r   r   r   r8   s   s    zTraversableReader.filesN)r   r   r   r   r8   r   r   r   r   r>   l   s   r>   )r   r   r(   r6   Útypingr   r   r   r   ÚABCr   r   r2   r>   r   r   r   r   Ú<module>   s   (