
    F\h
                         S r SSKrSSKrSSKrSSKJrJr  SSKJrJr   " S S\R                  5      r
 " S S	\5      r " S
 S\5      r " S S\\
5      rg)z+
Interface adapters for low-level readers.
    N)BinaryIOList   )TraversableTraversableResourcesc                       \ rS rSrSr\\R                  S\4S j5       5       r	\R                  S\
S    4S j5       r\R                  S\
\   4S j5       r\R                  S\S\4S j5       r\S	 5       rS
rg)SimpleReader   zE
The minimum, low-level interface required from a resource
provider.
returnc                     g)z@
The name of the package for which this reader loads resources.
N selfs    1/usr/lib/python3.13/importlib/resources/simple.pypackageSimpleReader.package           c                     g)zW
Obtain an iterable of SimpleReader for available
child containers (e.g. directories).
Nr   r   s    r   childrenSimpleReader.children   r   r   c                     g)z<
Obtain available named resources for this virtual package.
Nr   r   s    r   	resourcesSimpleReader.resources!   r   r   resourcec                     g)z*
Obtain a File-like for a named resource.
Nr   )r   r   s     r   open_binarySimpleReader.open_binary'   r   r   c                 >    U R                   R                  S5      S   $ )N.)r   splitr   s    r   nameSimpleReader.name-   s    ||!!#&r**r   r   N)__name__
__module____qualname____firstlineno____doc__propertyabcabstractmethodstrr   r   r   r   r   r   r#   __static_attributes__r   r   r   r	   r	      s    
    
 	$~.   	49  
 	C H  
 + +r   r	   c                   >    \ rS rSrSrS\4S jrS rS rS r	S r
S	rg
)ResourceContainer2   zA
Traversable container for a package's resources via its reader.
readerc                     Xl         g Nr2   )r   r2   s     r   __init__ResourceContainer.__init__7   s    r   c                     gNTr   r   s    r   is_dirResourceContainer.is_dir:       r   c                     gNFr   r   s    r   is_fileResourceContainer.is_file=       r   c                    ^  U 4S jT R                   R                   5       n[        [        T R                   R	                  5       5      n[
        R                  " X5      $ )Nc              3   <   >#    U  H  n[        TU5      v   M     g 7fr4   )ResourceHandle).0r#   r   s     r   	<genexpr>,ResourceContainer.iterdir.<locals>.<genexpr>A   s     N8Md++8Ms   )r2   r   mapr0   r   	itertoolschain)r   filesdirss   `  r   iterdirResourceContainer.iterdir@   s@    N8M8MN$dkk&:&:&<=u++r   c                     [        5       er4   )IsADirectoryError)r   argskwargss      r   openResourceContainer.openE   s    !!r   r5   N)r%   r&   r'   r(   r)   r	   r6   r:   r?   rM   rS   r.   r   r   r   r0   r0   2   s'    | ,
"r   r0   c                   F    \ rS rSrSrS\S\4S jrS rS r	SS jr
S	 rS
rg)rD   I   z1
Handle to a named resource in a ResourceReader.
parentr#   c                     Xl         X l        g r4   )rW   r#   )r   rW   r#   s      r   r6   ResourceHandle.__init__N   s    	r   c                     gr9   r   r   s    r   r?   ResourceHandle.is_fileR   r<   r   c                     gr>   r   r   s    r   r:   ResourceHandle.is_dirU   rA   r   c                     U R                   R                  R                  U R                  5      nSU;  a  [        R
                  " U/UQ70 UD6nU$ )Nb)rW   r2   r   r#   ioTextIOWrapper)r   moderQ   rR   streams        r   rS   ResourceHandle.openX   sF    ##//		:d?%%f>t>v>Fr   c                     [        S5      e)NzCannot traverse into a resource)RuntimeError)r   r#   s     r   joinpathResourceHandle.joinpath^   s    <==r   )r#   rW   N)r)r%   r&   r'   r(   r)   r0   r-   r6   r?   r:   rS   rg   r.   r   r   r   rD   rD   I   s/    0  >r   rD   c                       \ rS rSrSrS rSrg)TraversableReaderb   z
A TraversableResources based on SimpleReader. Resource providers
may derive from this class to provide the TraversableResources
interface by supplying the SimpleReader interface.
c                     [        U 5      $ r4   )r0   r   s    r   rK   TraversableReader.filesi   s     &&r   r   N)r%   r&   r'   r(   r)   rK   r.   r   r   r   rk   rk   b   s    'r   rk   )r)   r+   r`   rI   typingr   r   r   r   ABCr	   r0   rD   rk   r   r   r   <module>rq      sS     	  ! 2"+377 "+J" ".>[ >2',l 'r   