o
    Rh
                     @   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                   @   s|   e Zd ZdZeejdefddZejde	d  fddZ
ejde	e fddZejd	edefd
dZedd ZdS )SimpleReaderzQ
    The minimum, low-level interface required from a resource
    provider.
    returnc                 C      dS )zP
        The name of the package for which this reader loads resources.
        N selfr
   r
   \/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/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.resourcesresourcec                 C   r	   )z:
        Obtain a File-like for a named resource.
        Nr
   )r   r   r
   r
   r   open_binary'   r   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def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 N)r!   )r   r!   r
   r
   r   __init__7   s   
zResourceContainer.__init__c                 C   r	   NTr
   r   r
   r
   r   is_dir:      zResourceContainer.is_dirc                 C   r	   NFr
   r   r
   r
   r   is_file=   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"   )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  r"   )IsADirectoryError)r   argskwargsr
   r
   r   openE   s   zResourceContainer.openN)
r   r   r   r   r   r#   r%   r(   r1   r5   r
   r
   r
   r   r    2   s    r    c                   @   sD   e Zd ZdZdedef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"   )r6   r   )r   r6   r   r
   r
   r   r#   N   s   
zResourceHandle.__init__c                 C   r	   r$   r
   r   r
   r
   r   r(   R   r&   zResourceHandle.is_filec                 C   r	   r'   r
   r   r
   r
   r   r%   U   r&   zResourceHandle.is_dirrc                 O   s4   | j j| j}d|vrtj|g|R i |}|S )Nb)r6   r!   r   r   ioTextIOWrapper)r   moder3   r4   streamr
   r
   r   r5   X   s   zResourceHandle.openc                 C   s   t d)NzCannot traverse into a resource)RuntimeError)r   r   r
   r
   r   joinpath^      zResourceHandle.joinpathN)r7   )r   r   r   r   r    r   r#   r(   r%   r5   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   r?   zTraversableReader.filesN)r   r   r   r   r/   r
   r
   r
   r   r@   b   s    r@   )r   r   r9   r-   typingr   r   r   r   ABCr   r    r)   r@   r
   r
   r
   r   <module>   s    %