U
    ?h
                     @   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                   @   sz   e Zd ZdZeejedddZeje	d  dddZ
eje	e dddZejeed	d
dZedd ZdS )SimpleReaderzQ
    The minimum, low-level interface required from a resource
    provider.
    )returnc                 C   s   dS )zP
        The name of the package for which this reader loads resources.
        N selfr	   r	   L/var/www/html/venv/lib/python3.8/site-packages/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.resources)resourcer   c                 C   s   dS )z:
        Obtain a File-like for a named resource.
        Nr	   )r   r   r	   r	   r   open_binary'   s    zSimpleReader.open_binaryc                 C   s   | j dd S )N.)r   splitr
   r	   r	   r   name-   s    zSimpleReader.nameN)__name__
__module____qualname____doc__propertyabcabstractmethodstrr   r   r   r   r   r   r   r	   r	   r	   r   r      s   r   c                   @   s>   e Zd ZdZed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.
    readerc                 C   s
   || _ d S Nr   )r   r    r	   r	   r   __init__7   s    zResourceContainer.__init__c                 C   s   dS NTr	   r
   r	   r	   r   is_dir:   s    zResourceContainer.is_dirc                 C   s   dS NFr	   r
   r	   r	   r   is_file=   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!   )ResourceHandle).0r   r
   r	   r   	<genexpr>A   s     z,ResourceContainer.iterdir.<locals>.<genexpr>)r    r   mapr   r   	itertoolschain)r   filesdirsr	   r
   r   iterdir@   s    zResourceContainer.iterdirc                 O   s
   t  d S r!   )IsADirectoryError)r   argskwargsr	   r	   r   openE   s    zResourceContainer.openN)
r   r   r   r   r   r"   r$   r&   r/   r3   r	   r	   r	   r   r   2   s   r   c                   @   sB   e Zd ZdZeedddZdd Zdd Zdd
dZ	dd Z
dS )r'   z9
    Handle to a named resource in a ResourceReader.
    parentr   c                 C   s   || _ || _d S r!   r4   )r   r5   r   r	   r	   r   r"   N   s    zResourceHandle.__init__c                 C   s   dS r#   r	   r
   r	   r	   r   r&   R   s    zResourceHandle.is_filec                 C   s   dS r%   r	   r
   r	   r	   r   r$   U   s    zResourceHandle.is_dirrc                 O   s.   | j j| j}d|kr*tj|f||}|S )Nb)r5   r    r   r   ioTextIOWrapper)r   moder1   r2   streamr	   r	   r   r3   X   s    zResourceHandle.openc                 C   s   t dd S )NzCannot traverse into a resource)RuntimeError)r   r   r	   r	   r   joinpath^   s    zResourceHandle.joinpathN)r6   )r   r   r   r   r   r   r"   r&   r$   r3   r=   r	   r	   r	   r   r'   I   s   
r'   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!   )r   r
   r	   r	   r   r-   i   s    zTraversableReader.filesN)r   r   r   r   r-   r	   r	   r	   r   r>   b   s   r>   )r   r   r8   r+   typingr   r   r   r   ABCr   r   r'   r>   r	   r	   r	   r   <module>   s   %