
    5bh                         d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ d Z	 G d dej                        Z G d d	ej                        Z G d
 dej                        Z G d dej                        Zy)    N   )abc)onlyc                 R    t        t        j                  j                  |             S N)itercollectionsOrderedDictfromkeys)itemss    E/opt/python-3.12.12/usr/lib/python3.12/importlib/resources/readers.pyremove_duplicatesr      s    ''00788    c                       e Zd Zd Zd Zd Zy)
FileReaderc                 `    t        j                  |j                        j                  | _        y r   )pathlibPathpathparent)selfloaders     r   __init__zFileReader.__init__   s    LL-44	r   c                 L    	 t        | j                  j                  |            S r   strr   joinpathr   resources     r   resource_pathzFileReader.resource_path   #    	
 499%%h/00r   c                     | j                   S r   r   r   s    r   fileszFileReader.files       yyr   N__name__
__module____qualname__r   r    r%    r   r   r   r      s    51r   r   c                   0     e Zd Zd Z fdZd Zd Z xZS )	ZipReaderc                     |j                   j                  dd      | _         |j                  |      r-|j                  d      \  }}}| xj                   |dz   z  c_         |j                  | _        y )N\/.)prefixreplace
is_package
rpartitionarchive)r   r   module_names        r   r   zZipReader.__init__!   s[    mm++D#6V$**3/JAq$KK4#:%K~~r   c                 v    	 t         |   |      S # t        $ r}t        |j                  d         d }~ww xY wNr   )superopen_resourceKeyErrorFileNotFoundErrorargs)r   r   exc	__class__s      r   r=   zZipReader.open_resource(   s;    	17(22 	1#CHHQK00	1s    	838c                     	 | j                         j                  |      }|j                         xr |j                         S r   )r%   r   is_fileexists)r   r   targets      r   is_resourcezZipReader.is_resource.   s7    	 &&t,~~3FMMO3r   c                 V    t        j                  | j                  | j                        S r   )zipfiler   r6   r2   r$   s    r   r%   zZipReader.files6   s    ||DLL$++66r   )r(   r)   r*   r   r=   rG   r%   __classcell__rB   s   @r   r-   r-       s    &147r   r-   c                   p     e Zd Z	 d Zd Zd Zd Zd Zd Z fdZ	e
d        Zd	 Zed
        Zd Z xZS )MultiplexedPathc                     t        t        t        j                  t	        |                  | _        | j
                  sd}t        |      t        d | j
                  D              st        d      y )Nz.MultiplexedPath must contain at least one pathc              3   <   K   | ]  }|j                           y wr   )is_dir.0r   s     r   	<genexpr>z+MultiplexedPath.__init__.<locals>.<genexpr>G   s     9[T4;;=[s   z)MultiplexedPath only supports directories)	listmapr   r   r   _pathsr?   allNotADirectoryError)r   pathsmessages      r   r   zMultiplexedPath.__init__B   sY    3w||->u-EFG{{FG#G,,9T[[99$%PQQ :r   c                     d | j                   D        }t        j                  d      }t        j                  t        ||      |      }t        | j                  d |D              S )Nc              3   J   K   | ]  }|j                         D ]  }|   y wr   )iterdir)rR   r   childs      r   rS   z*MultiplexedPath.iterdir.<locals>.<genexpr>K   s     Nkdt||~eE~Eks   !#r9   )keyc              3   &   K   | ]	  \  }}|  y wr   r+   )rR   r9   locss      r   rS   z*MultiplexedPath.iterdir.<locals>.<genexpr>N   s     !@:4$s   )rV   operator
attrgetter	itertoolsgroupbysortedrU   _follow)r   childrenby_namegroupss       r   r]   zMultiplexedPath.iterdirJ   sP    NdkkN%%f-""6(#@gN4<<!@!@AAr   c                     t        |  d      Nz is not a filer?   r$   s    r   
read_byteszMultiplexedPath.read_bytesP       4& 788r   c                     t        |  d      rl   rm   r   r@   kwargss      r   	read_textzMultiplexedPath.read_textS   ro   r   c                      y)NTr+   r$   s    r   rP   zMultiplexedPath.is_dirV   s    r   c                      y)NFr+   r$   s    r   rD   zMultiplexedPath.is_fileY   s    r   c                     	 t        |   | S # t        j                  $ r  | j                  d   j                  | cY S w xY wr;   )r<   r   r   TraversalErrorrV   )r   descendantsrB   s     r   r   zMultiplexedPath.joinpath\   sJ    	97#[11!! 	9 +4;;q>**K88	9s    /A Ac                     	 t        j                  |d      \  }}}	 t        |      S # t        $ r% 	  | | cY S # t        $ r t        |      cY cY S w xY ww xY w)N   )rd   teer   
ValueErrorrX   next)clsrh   subdirsone_dirone_files        r   rg   zMultiplexedPath._followd   sf    	 &/]]8Q%?"(	&=  	&&G}$% &H~%&	&s)   
( 	A9AAAAAc                     t        |  d      rl   rm   rq   s      r   openzMultiplexedPath.openw   ro   r   c                 4    | j                   d   j                  S r;   )rV   r9   r$   s    r   r9   zMultiplexedPath.namez   s    {{1~"""r   c                 R    dj                  d | j                  D              }d| dS )Nz, c              3   (   K   | ]
  }d | d   yw)'Nr+   rQ   s     r   rS   z+MultiplexedPath.__repr__.<locals>.<genexpr>   s     >+$AdV1++s   zMultiplexedPath())joinrV   )r   rY   s     r   __repr__zMultiplexedPath.__repr__~   s)    		>$++>>!%**r   )r(   r)   r*   r   r]   rn   rs   rP   rD   r   classmethodrg   r   propertyr9   r   rJ   rK   s   @r   rM   rM   :   s_    RB999 & &$9 # #+r   rM   c                       e Zd Zd Zd Zd Zy)NamespaceReaderc                 `    dt        |      vrt        d      t        t        |       | _        y )NNamespacePathzInvalid path)r   r|   rM   rT   r   )r   namespace_paths     r   r   zNamespaceReader.__init__   s+    #n"55^,,#T.%9:	r   c                 L    	 t        | j                  j                  |            S r   r   r   s     r   r    zNamespaceReader.resource_path   r!   r   c                     | j                   S r   r#   r$   s    r   r%   zNamespaceReader.files   r&   r   Nr'   r+   r   r   r   r      s    ;
1r   r   )r	   rd   r   rb   rI    r   
_itertoolsr   r   TraversableResourcesr   r-   TraversablerM   r   r+   r   r   <module>r      sh          9))  7(( 74F+coo F+Rc.. r   