Ë
    #´˜j  ã                   óò   — 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    ú-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   € Ü—L‘L §¡Ó-×4Ñ4ˆ�	r   c                 óJ   — t        | j                  j                  |«      «      S ©z{
        Return the file system path to prevent
        `resources.path()` from creating a temporary
        copy.
        ©Ústrr   Újoinpath©r   Úresources     r   Úresource_pathzFileReader.resource_path   ó   € ô �4—9‘9×%Ñ% hÓ/Ó0Ð0r   c                 ó   — | j                   S r   ©r   ©r   s    r   ÚfileszFileReader.files   ó   € Ø�y‰yÐ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[   € Ø—m‘m×+Ñ+¨D°#Ó6ˆŒØ×Ñ˜VÔ$Ø×*Ñ*¨3Ó/‰JˆAˆq�$Ø�KŠK˜4 #™:Ñ%�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Ü# C§H¡H¨Q¡KÓ0Ð0ûð	1ús   ƒ ’	8›3³8c                 ó„   — | j                  «       j                  |«      }|j                  «       xr |j                  «       S )zf
        Workaround for `zipfile.Path.is_file` returning true
        for non-existent paths.
        )r&   r   Úis_fileÚexists)r   r   Útargets      r   Úis_resourcezZipReader.is_resource.   s2   € ð
 —‘“×&Ñ& tÓ,ˆØ�~‰~ÓÒ3 F§M¡M£OÐ3r   c                 óV   — t        j                  | j                  | j                  «      S r   )Úzipfiler   r7   r3   r%   s    r   r&   zZipReader.files6   s   € Ü�|‰|˜DŸL™L¨$¯+©+Ó6Ð6r   )r)   r*   r+   r   r>   rH   r&   Ú__classcell__©rC   s   @r   r.   r.       s   ø„ ò&ô1ò4ö7r   r.   c                   ór   ‡ — e Zd 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 )ÚMultiplexedPathzÄ
    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                 óæ   — 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©[ T�4—;‘;—=©[ùs   ‚z)MultiplexedPath only supports directories)	ÚlistÚmapr   r   r   Ú_pathsr@   ÚallÚNotADirectoryError)r   ÚpathsÚmessages      r   r   zMultiplexedPath.__init__B   sY   € Üœ3œwŸ|™|Ô->¸uÓ-EÓFÓGˆŒØ�{Š{ØFˆGÜ# GÓ,Ð,ÜÑ9¨T¯[ª[Ó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)rS   r   Úchilds      r   rT   z*MultiplexedPath.iterdir.<locals>.<genexpr>K   s   è ø€ ÐN¡k˜d¸t¿|¹|¾~°e”E¸~�E¡kùs   ‚!#r:   )Úkeyc              3   ó&   K  — | ]	  \  }}|–— Œ y ­wr   r,   )rS   r:   Úlocss      r   rT   z*MultiplexedPath.iterdir.<locals>.<genexpr>N   s   è ø€ Ð!@¹©:¨4°¤$¹ùs   ‚)rW   ÚoperatorÚ
attrgetterÚ	itertoolsÚgroupbyÚsortedrV   Ú_follow)r   ÚchildrenÚby_nameÚgroupss       r   r^   zMultiplexedPath.iterdirJ   sP   € ÙN d§k¢kÓ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�«      ‚rm   rn   ©r   rA   Úkwargss      r   Ú	read_textzMultiplexedPath.read_textS   rp   r   c                  ó   — y)NTr,   r%   s    r   rQ   zMultiplexedPath.is_dirV   s   € Ør   c                  ó   — y)NFr,   r%   s    r   rE   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   ÚTraversalErrorrW   )r   ÚdescendantsrC   s     €r   r   zMultiplexedPath.joinpath\   sJ   ø€ ð	9Ü‘7Ñ# [Ð1Ð1øÜ×!Ñ!ò 	9ð +�4—;‘;˜q‘>×*Ñ*¨KÐ8Ò8ð	9ús   ƒ �/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)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.
        é   )re   Úteer   Ú
ValueErrorrY   Únext)Úclsri   ÚsubdirsÚone_dirÚone_files        r   rh   zMultiplexedPath._followd   sa   € ô &/§]¡]°8¸QÓ%?Ñ"ˆ�˜(ð	&Ü˜“=Ð øÜò 	&ð&Ù˜G�}Ò$øÜ%ò &Ü˜H“~Ô%ð&úð	&ús)   œ
' §	A±8µA¸AÁAÁAÁAc                 ó   — t        | › d�«      ‚rm   rn   rr   s      r   ÚopenzMultiplexedPath.openw   rp   r   c                 ó4   — | j                   d   j                  S r<   )rW   r:   r%   s    r   r:   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,   rR   s     r   rT   z+MultiplexedPath.__repr__.<locals>.<genexpr>   s   è ø€ Ð>±+¨$˜A˜d˜V 1œ+±+ùs   ‚zMultiplexedPath(Ú))ÚjoinrW   )r   rZ   s     r   Ú__repr__zMultiplexedPath.__repr__~   s)   € Ø—	‘	Ñ>°$·+²+Ó>Ó>ˆØ! % ¨Ð*Ð*r   )r)   r*   r+   Ú__doc__r   r^   ro   rt   rQ   rE   r   Úclassmethodrh   r„   Úpropertyr:   r‹   rK   rL   s   @r   rN   rN   :   s_   ø„ ñòRòBò9ò9òòô9ð ñ&ó ð&ò$9ð ñ#ó ð#ö+r   rN   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}   rN   rU   r   )r   Únamespace_paths     r   r   zNamespaceReader.__init__„   s+   € Ø¤# nÓ"5Ñ5Ü˜^Ó,Ð,Ü#¤T¨.Ó%9Ð:ˆ�	r   c                 óJ   — 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	   re   r   rc   rJ   Ú r   Ú
_itertoolsr   r   ÚTraversableResourcesr   r.   ÚTraversablerN   r�   r,   r   r   Ú<module>rš      sh   ðÛ Û Û Û Û å å ò9ô�×)Ñ)ô ô 7�×(Ñ(ô 7ô4F+�c—o‘oô F+ôR�c×.Ñ.õ r   