
    Zi
                         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ej	                  Z
 G d d	e          Z G d
 de          Z G d dee
          ZdS )z+
Interface adapters for low-level readers.
    N)BinaryIOList   )TraversableTraversableResourcesc                       e Zd ZdZeej        defd                        Zej        de	d          fd            Z
ej        de	e         fd            Zej        dedefd            Zed             Zd	S )
SimpleReaderzQ
    The minimum, low-level interface required from a resource
    provider.
    returnc                     dS )zP
        The name of the package for which this reader loads resources.
        N selfs    U/root/projects/butler/venv/lib/python3.11/site-packages/importlib_resources/simple.pypackagezSimpleReader.package             c                     dS )zo
        Obtain an iterable of SimpleReader for available
        child containers (e.g. directories).
        Nr   r   s    r   childrenzSimpleReader.children   r   r   c                     dS )zL
        Obtain available named resources for this virtual package.
        Nr   r   s    r   	resourceszSimpleReader.resources!   r   r   resourcec                     dS )z:
        Obtain a File-like for a named resource.
        Nr   )r   r   s     r   open_binaryzSimpleReader.open_binary'   r   r   c                 B    | j                             d          d         S )N.)r   splitr   s    r   namezSimpleReader.name-   s    |!!#&&r**r   N)__name__
__module____qualname____doc__propertyabcabstractmethodstrr   r   r   r   r   r   r   r   r   r   r	   r	      s         
      X
 	$~.     	49    
 	C H    
 + + X+ + +r   r	   c                   6    e Zd ZdZdefdZd Zd Zd Zd Z	dS )	ResourceContainerzI
    Traversable container for a package's resources via its reader.
    readerc                     || _         d S N)r)   )r   r)   s     r   __init__zResourceContainer.__init__7   s    r   c                     dS NTr   r   s    r   is_dirzResourceContainer.is_dir:       tr   c                     dS NFr   r   s    r   is_filezResourceContainer.is_file=       ur   c                       fd j         j        D             }t          t           j                                                   }t          j        ||          S )Nc              3   8   K   | ]}t          |          V  d S r+   )ResourceHandle).0r   r   s     r   	<genexpr>z,ResourceContainer.iterdir.<locals>.<genexpr>A   s-      NNd++NNNNNNr   )r)   r   mapr(   r   	itertoolschain)r   filesdirss   `  r   iterdirzResourceContainer.iterdir@   sQ    NNNN8MNNN$dk&:&:&<&<==ud+++r   c                     t                      r+   )IsADirectoryError)r   argskwargss      r   openzResourceContainer.openE   s    !!!r   N)
r   r    r!   r"   r	   r,   r/   r3   r?   rD   r   r   r   r(   r(   2   su         |        , , ,
" " " " "r   r(   c                   <    e Zd ZdZdedefdZd Zd ZddZ	d	 Z
d
S )r7   z9
    Handle to a named resource in a ResourceReader.
    parentr   c                 "    || _         || _        d S r+   )rF   r   )r   rF   r   s      r   r,   zResourceHandle.__init__N   s    			r   c                     dS r.   r   r   s    r   r3   zResourceHandle.is_fileR   r0   r   c                     dS r2   r   r   s    r   r/   zResourceHandle.is_dirU   r4   r   rc                     | j         j                            | j                  }d|vrt	          j        |g|R i |}|S )Nb)rF   r)   r   r   ioTextIOWrapper)r   moderB   rC   streams        r   rD   zResourceHandle.openX   sJ    #//	::d??%f>t>>>v>>Fr   c                      t          d          )NzCannot traverse into a resource)RuntimeError)r   r   s     r   joinpathzResourceHandle.joinpath^   s    <===r   N)rJ   )r   r    r!   r"   r(   r&   r,   r3   r/   rD   rS   r   r   r   r7   r7   I   s         0            > > > > >r   r7   c                       e Zd ZdZ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                      t          |           S r+   )r(   r   s    r   r=   zTraversableReader.filesi   s     &&&r   N)r   r    r!   r"   r=   r   r   r   rU   rU   b   s-         ' ' ' ' 'r   rU   )r"   r$   rM   r;   typingr   r   r   r   ABCr	   r(   r7   rU   r   r   r   <module>rY      s    


 				     ! ! ! ! ! ! ! ! 2 2 2 2 2 2 2 2"+ "+ "+ "+ "+37 "+ "+ "+J" " " " " " " ".> > > > >[ > > >2' ' ' ' ',l ' ' ' ' 'r   