ó
    F\hc  ã                  ó(  • 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	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)Úonlyc                óR   • [        [        R                  R                  U 5      5      $ ©N)ÚiterÚcollectionsÚOrderedDictÚfromkeys)Úitemss    Ú2/usr/lib/python3.13/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   € Ü—L’L §¡Ó-×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   ó   € ô �4—9‘9×%Ñ% hÓ/Ó0Ð0r   c                ó   • U R                   $ r	   ©r   ©r   s    r   ÚfilesÚFileReader.files"   ó   € Ø�y‰yÐ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\   € Ø—m‘m×+Ñ+¨D°#Ó6ˆŒØ×Ñ˜V×$Ñ$Ø×*Ñ*¨3Ó/‰JˆAˆqØ�KŠK˜4 #™:Ñ%�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   rG   ÚZipReader.open_resource.   s;   ø€ ð	1Ü‘7Ñ(¨Ó2Ð2øÜó 	1Ü# C§H¡H¨Q¡KÓ0Ð0ûð	1ús   ƒ ’
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_resource4   s2   € ð
 —‘“×&Ñ& tÓ,ˆØ�~‰~Ó×3 F§M¡M£OÐ3r   c                óX   • [         R                  " U R                  U R                  5      $ r	   )Úzipfiler   r?   r;   r*   s    r   r+   ÚZipReader.files<   s   € Ü�|Š|˜DŸL™L¨$¯+©+Ó6Ð6r   )r?   r;   )
r.   r/   r0   r1   r   rG   rR   r+   r2   Ú__classcell__©rL   s   @r   r5   r5   &   s   ø† ò&õ1ò4÷7ð 7r   r5   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>M   s   é € Ð9ª[ T—;‘;—=�=ª[ùs   ‚z)MultiplexedPath only supports directories)ÚlistÚmapÚ_ensure_traversabler   Ú_pathsrI   ÚallÚNotADirectoryError)r   ÚpathsÚmessages      r   r   ÚMultiplexedPath.__init__H   sY   € Üœ3Ô2Ô4EÀeÓ4LÓMÓNˆŒØ�{�{ØFˆGÜ# GÓ,Ð,ÜÑ9¨T¯[ª[Ó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>Q   s   é € ÐN¢k˜d¿|¹|¿~°e”E¹~‘E¢kùs   ‚%'rB   )Úkeyc              3  ó*   #   • U  H	  u  pUv •  M     g 7fr	   r3   )ra   rB   Úlocss      r   rb   rq   T   s   é € Ð!@º©:¨4¥$ºùs   ‚)rg   ÚoperatorÚ
attrgetterÚ	itertoolsÚgroupbyÚsortedre   Ú_follow)r   ÚchildrenÚby_nameÚgroupss       r   ro   ÚMultiplexedPath.iterdirP   sN   € ÙN d§k¢kÓNˆÜ×%Ò% fÓ-ˆÜ×"Ò"¤6¨(Ñ#@ÀgÑNˆÜ�4—<‘<Ñ!@¹Ó!@ÓAÐAr   c                ó   • [        U  S35      e©Nz is not a file©rI   r*   s    r   Ú
read_bytesÚMultiplexedPath.read_bytesV   ó   € Ü 4 &¨Ð 7Ó8Ð8r   c                ó   • [        U  S35      er€   r�   ©r   rJ   Úkwargss      r   Ú	read_textÚMultiplexedPath.read_textY   r„   r   c                ó   • g)NTr3   r*   s    r   r_   ÚMultiplexedPath.is_dir\   s   € Ør   c                ó   • g)NFr3   r*   s    r   rO   ÚMultiplexedPath.is_file_   s   € Ør   c                óŒ   >•  [         TU ]  " U6 $ ! [        R                   a    U R                  S   R                  " U6 s $ f = frE   )rF   r"   r   ÚTraversalErrorrg   )r   ÚdescendantsrL   s     €r   r"   ÚMultiplexedPath.joinpathb   sH   ø€ ð	9Ü‘7Ò# [Ð1Ð1øÜ×!Ñ!ó 	9ð —;‘;˜q‘>×*Ò*¨KÐ8Ò8ð	9ús   ƒ �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._followj   s_   € ô &/§]¢]°8¸QÓ%?Ñ"ˆ˜(ð	&Ü˜“=Ð øÜó 	&ð&Ù˜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                  $ rE   )rg   rB   r*   s    r   rB   Ú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)Ú'Nr3   r`   s     r   rb   Ú+MultiplexedPath.__repr__.<locals>.<genexpr>…   s   é € Ð>²+¨$˜A˜d˜V 1�+²+ùs   ‚zMultiplexedPath(Ú))Újoinrg   )r   rj   s     r   Ú__repr__ÚMultiplexedPath.__repr__„   s)   € Ø—	‘	Ñ>°$·+²+Ó>Ó>ˆØ! % ¨Ð*Ð*r   )rg   )r.   r/   r0   r1   Ú__doc__r   ro   r‚   rˆ   r_   rO   r"   Úclassmethodrz   r�   ÚpropertyrB   r§   r2   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Ü˜^Ó,Ð,Ü#¤V¬D´#°d·m±mÀ^Ó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Ñ!5°hÔ!?Ó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(   é € ä�lŠl˜8Ó$Ò$Ø×(Ñ(¨Ó2×2Ó2ùs   ‚-7¯5°7c              #  ó°  #   • [        [        [        R                  " SU 5      5      5       H“  n[        R
                  " [        [        [        [        5         XR                  5       S  R                  SS5      S-   n[        R                  " U S UR                  5        UR                  S5      5      v •  S S S 5        M•     g ! , (       d  f       M§  = f7f)Nz[\\/]r8   r9   )Úreversedrd   ÚreÚfinditerÚ
contextlibÚsuppressrI   ÚIsADirectoryErrorri   ÚPermissionErrorÚendr<   rU   r   ÚstartÚlstrip)r»   ÚmatchÚinners      r   r¿   Ú!NamespaceReader._resolve_zip_path¤   sž   é € äœd¤2§;¢;¨x¸Ó#BÓCÖDˆEÜ×$Ò$Ü!Ü!Ü"Üõ	ð !§¡£ Ð/×7Ñ7¸¸cÓBÀSÑH�Ü—l’l 8¨O¨e¯k©k«mÐ#<¸e¿l¹lÈ3Ó>OÓPÒP÷ñ ò E÷ö üs   ‚ACÁACÂ7CÃ
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.   r/   r0   r1   r   rª   r³   rº   Ústaticmethodr¿   r%   r+   r2   r3   r   r   r­   r­   ‰   sP   † òWð
 ó ó ð ð ó3ó ð3ð ó	Qó ð	Qò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<   € ô �dœC× Ñ Øˆä‡M‚MØFÜØòô �<Š<˜ÓÐr   )Ú
__future__r   r   rÅ   rw   r   ru   rÃ   rØ   rU   Úcollections.abcr   Ú r   Ú
_itertoolsr   r   ÚTraversableResourcesr   r5   ÚTraversablerZ   r­   rf   r3   r   r   Ú<module>rá      s}   ðÝ "ã Û Û Û Û Û 	Û Û Ý $å å ò9ô�×)Ñ)ô ô 7�×(Ñ(ô 7ô4F+�c—o‘oô F+ôR0�c×.Ñ.ô 0ófr   