o
    ^+)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                   @   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      dS )zP
        The name of the package for which this reader loads resources.
        N selfr	   r	   lC:\Users\User\Downloads\Proyecto_IoT\venv\Lib\site-packages\setuptools/_vendor/importlib_resources/simple.pypackage       zSimpleReader.packagec                 C   r   )zo
        Obtain an iterable of SimpleReader for available
        child containers (e.g. directories).
        Nr	   r
   r	   r	   r   children   r   zSimpleReader.childrenc                 C   r   )zL
        Obtain available named resources for this virtual package.
        Nr	   r
   r	   r	   r   	resources"   r   zSimpleReader.resourcesc                 C   r   )z:
        Obtain a File-like for a named resource.
        Nr	   )r   resourcer	   r	   r   open_binary)   r   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   r   NTr	   r
   r	   r	   r   is_file?      zResourceHandle.is_filec                 C   r   NFr	   r
   r	   r	   r   is_dirB   r%   zResourceHandle.is_dirrc                 O   s,   | j j| j}d|vrtj|i |}|S )Nb)r!   readerr   r   ioTextIOWrapper)r   modeargskwargsstreamr	   r	   r   openE   s   zResourceHandle.openc                 C   s   t d)NzCannot traverse into a resource)RuntimeErrorr   r   r	   r	   r   joinpathK      zResourceHandle.joinpathN)r(   )	r   r   r   r   r"   r$   r'   r1   r4   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   r   r#   r	   r
   r	   r	   r   r'   X   r%   zResourceContainer.is_dirc                 C   r   r&   r	   r
   r	   r	   r   r$   [   r%   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   mapr6   r   	itertoolschain)r   filesdirsr	   r
   r   iterdir^   s   zResourceContainer.iterdirc                 O   s   t  r    )IsADirectoryError)r   r.   r/   r	   r	   r   r1   c   s   zResourceContainer.openc                    s   t  fdd|  D S )Nc                 3   s    | ]
}|j  kr|V  qd S r    r   )r7   Ztraversabler@   r	   r   r8   g   s    z-ResourceContainer.joinpath.<locals>.<genexpr>)nextr>   r3   r	   r@   r   r4   f   s   zResourceContainer.joinpathN)
r   r   r   r   r"   r'   r$   r>   r1   r4   r	   r	   r	   r   r6   O   s    r6   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    )r6   r
   r	   r	   r   r<   s   r5   zTraversableReader.filesN)r   r   r   r   r<   r	   r	   r	   r   rB   l   s    rB   )r   r   r+   r:   typingr   r   r   r   ABCr   r   r6   rB   r	   r	   r	   r   <module>   s    (