
    Kij                    ,   S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  SSKJr  SSKJr  SSKJr  S r " S	 S
\R$                  5      r " S S\R$                  5      r " S S\R*                  5      r " S S\R$                  5      rS rg)    )annotationsN)Iterator   )abc)only)ZipPathc                R    [        [        R                  R                  U 5      5      $ N)itercollectionsOrderedDictfromkeys)itemss    ]/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/importlib_resources/readers.pyremove_duplicatesr      s    ''00788    c                  &    \ rS rSrS rS rS rSrg)
FileReader   c                b    [         R                  " UR                  5      R                  U l        g r
   )pathlibPathpathparent)selfloaders     r   __init__FileReader.__init__   s    LL-44	r   c                J    [        U R                  R                  U5      5      $ z[
Return the file system path to prevent
`resources.path()` from creating a temporary
copy.
strr   joinpathr   resources     r   resource_pathFileReader.resource_path        499%%h/00r   c                    U R                   $ r
   r   r   s    r   filesFileReader.files!       yyr   r*   N)__name__
__module____qualname____firstlineno__r   r&   r,   __static_attributes__ r   r   r   r      s    51r   r   c                  :   ^  \ rS rSrS rU 4S jrS rS rSrU =r	$ )	ZipReader%   c                    UR                   R                  SS5      U l         UR                  U5      (       a,  UR                  S5      u    p4U =R                   US-   -  sl         UR                  U l        g )N\/.)prefixreplace
is_package
rpartitionarchive)r   r   module_names        r   r   ZipReader.__init__&   s\    mm++D#6V$$**3/JAqKK4#:%K~~r   c                x   >  [         TU ]  U5      $ ! [         a  n[        UR                  S   5      eS nAff = fNr   )superopen_resourceKeyErrorFileNotFoundErrorargs)r   r%   exc	__class__s      r   rH   ZipReader.open_resource-   s;    	17(22 	1#CHHQK00	1s    
949c                    U R                  5       R                  U5      nUR                  5       =(       a    UR                  5       $ )zN
Workaround for `zipfile.Path.is_file` returning true
for non-existent paths.
)r,   r#   is_fileexists)r   r   targets      r   is_resourceZipReader.is_resource3   s2    
 &&t,~~3FMMO3r   c                B    [        U R                  U R                  5      $ r
   )r   r@   r<   r+   s    r   r,   ZipReader.files;   s    t||T[[11r   )r@   r<   )
r/   r0   r1   r2   r   rH   rS   r,   r3   __classcell__rM   s   @r   r6   r6   %   s    &142 2r   r6   c                  |   ^  \ rS rSrSrS rS rS rS rS r	S r
U 4S	 jr\S
 5       rS r\S 5       rS rSrU =r$ )MultiplexedPath?   z
Given a series of Traversable objects, implement a merged
version of the interface across all objects. Useful for
namespace packages which may be multihomed at a single
name.
c                    [        [        [        [        U5      5      5      U l        U R                  (       d  Sn[        U5      e[        S U R                   5       5      (       d  [        S5      eg )Nz.MultiplexedPath must contain at least one pathc              3  @   #    U  H  oR                  5       v   M     g 7fr
   is_dir.0r   s     r   	<genexpr>+MultiplexedPath.__init__.<locals>.<genexpr>L   s     9[T;;==[s   z)MultiplexedPath only supports directories)listmap_ensure_traversabler   _pathsrJ   allNotADirectoryError)r   pathsmessages      r   r   MultiplexedPath.__init__G   sY    324Ee4LMN{{FG#G,,9T[[999$%PQQ :r   c                    S U R                    5       n[        R                  " S5      n[        R                  " [        XS9US9n[        U R                  S U 5       5      $ )Nc              3  R   #    U  H  oR                  5         H  o"v   M     M     g 7fr
   )iterdir)ra   r   childs      r   rb   *MultiplexedPath.iterdir.<locals>.<genexpr>P   s     Nkd||~eE~Eks   %'rC   )keyc              3  *   #    U  H	  u  pUv   M     g 7fr
   r4   )ra   rC   locss      r   rb   rq   S   s     !@:4$s   )rg   operator
attrgetter	itertoolsgroupbysortedre   _follow)r   childrenby_namegroupss       r   ro   MultiplexedPath.iterdirO   sN    NdkkN%%f-""6(#@gN4<<!@!@AAr   c                    [        U  S35      eNz is not a filerJ   r+   s    r   
read_bytesMultiplexedPath.read_bytesU       4& 788r   c                    [        U  S35      er   r   r   rK   kwargss      r   	read_textMultiplexedPath.read_textX   r   r   c                    g)NTr4   r+   s    r   r_   MultiplexedPath.is_dir[   s    r   c                    g)NFr4   r+   s    r   rP   MultiplexedPath.is_file^   s    r   c                   >  [         TU ]  " U6 $ ! [        R                   a    U R                  S   R                  " U6 s $ f = frF   )rG   r#   r   TraversalErrorrg   )r   descendantsrM   s     r   r#   MultiplexedPath.joinpatha   sH    	97#[11!! 	9 ;;q>**K88	9s    0AAc                    [         R                  " US5      u  p#n [        U5      $ ! [         a&     U " U6 s $ ! [         a    [        U5      s s $ f = ff = f)z
Construct a MultiplexedPath if needed.

If children contains a sole element, return it.
Otherwise, return a MultiplexedPath of the items.
Unless one of the items is not a Directory, then return the first.
   )rw   teer   
ValueErrorri   next)clsr{   subdirsone_dirone_files        r   rz   MultiplexedPath._followi   s_     &/]]8Q%?"(	&=  	&&G}$% &H~%&	&s)   
' 
A9AAAAAc                    [        U  S35      er   r   r   s      r   openMultiplexedPath.open|   r   r   c                4    U R                   S   R                  $ rF   )rg   rC   r+   s    r   rC   MultiplexedPath.name   s    {{1~"""r   c                R    SR                  S U R                   5       5      nSU S3$ )Nz, c              3  .   #    U  H  nS U S 3v   M     g7f)'Nr4   r`   s     r   rb   +MultiplexedPath.__repr__.<locals>.<genexpr>   s     >+$AdV1++s   zMultiplexedPath())joinrg   )r   rj   s     r   __repr__MultiplexedPath.__repr__   s)    		>$++>>!%**r   )rg   )r/   r0   r1   r2   __doc__r   ro   r   r   r_   rP   r#   classmethodrz   r   propertyrC   r   r3   rW   rX   s   @r   rZ   rZ   ?   sd    RB999 & &$9 # #+ +r   rZ   c                  b    \ rS rSrS r\S
S j5       r\SS j5       r\SS j5       r	S r
S rSrg	)NamespaceReader   c           	         S[        U5      ;  a  [        S5      e[        [        [        [        U R                  U5      5      6 U l        g )NNamespacePathzInvalid path)r"   r   rZ   filterboolre   _resolver   )r   namespace_paths     r   r   NamespaceReader.__init__   s8    #n"55^,,#VD#dmm^2T%UV	r   c                J    S U R                  U5       5       n[        US5      $ )a  
Given an item from a namespace path, resolve it to a Traversable.

path_str might be a directory on the filesystem or a path to a
zipfile plus the path within the zipfile, e.g. ``/foo/bar`` or
``/foo/baz.zip/inner_dir`` or ``foo\baz.zip\inner_dir\sub``.

path_str might also be a sentinel used by editable packages to
trigger other behaviors (see python/importlib_resources#311).
In that case, return None.
c              3  R   #    U  H  oR                  5       (       d  M  Uv   M     g 7fr
   r^   )ra   cands     r   rb   +NamespaceReader._resolve.<locals>.<genexpr>   s     Q!?;;=!?s   '	'N)_candidate_pathsr   )r   path_strdirss      r   r   NamespaceReader._resolve   s'     R!5!5h!?QD$r   c              #  r   #    [         R                  " U5      v   U R                  U5       S h  vN   g  N7fr
   )r   r   _resolve_zip_path)r   r   s     r   r    NamespaceReader._candidate_paths   s(     ll8$$((222s   -757c              #    #    [        [        [        R                  " SU 5      5      5       H  n[        R
                  " [        [        [        [        5         XR                  5       S  R                  SS5      S-   n[        U S UR                  5        UR                  S5      5      v   S S S 5        M     g ! , (       d  f       M  = f7f)Nz[\\/]r9   r:   )reversedrd   refinditer
contextlibsuppressrJ   IsADirectoryErrorri   PermissionErrorendr=   r   startlstrip)r   matchinners      r   r   !NamespaceReader._resolve_zip_path   s     d2;;x#BCDE$$!!"	 !/77cBSHh7c9JKK  E s   ACAB9,C9
C	Cc                J    [        U R                  R                  U5      5      $ r    r!   r$   s     r   r&   NamespaceReader.resource_path   r(   r   c                    U R                   $ r
   r*   r+   s    r   r,   NamespaceReader.files   r.   r   r*   N)returnzabc.Traversable | None)r   r"   r   zIterator[abc.Traversable])r   r"   )r/   r0   r1   r2   r   r   r   r   staticmethodr   r&   r,   r3   r4   r   r   r   r      sP    W
     3 3 	L 	L1r   r   c                    [        U [        5      (       d  U $ [        R                  " S[        SS9  [
        R                  " U 5      $ )z_
Convert deprecated string arguments to traversables (pathlib.Path).

Remove with Python 3.15.
z<String arguments are deprecated. Pass a Traversable instead.r   )
stacklevel)
isinstancer"   warningswarnDeprecationWarningr   r   r*   s    r   rf   rf      s<     dC  MMF <<r   )
__future__r   r   r   rw   ru   r   r   r   collections.abcr    r   
_itertoolsr   compat.py39r   r   TraversableResourcesr   r6   TraversablerZ   r   rf   r4   r   r   <module>r      s}    "      	  $    9))  2(( 24F+coo F+R0c.. 0fr   