Ë
    bQêjj  ã                  ó,  — d dl mZ d dlZd dlZ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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d„ Zy)é    )ÚannotationsN)ÚIteratoré   )Úabc)Úonly)ÚZipPathc                óR   — t        t        j                  j                  | «      «      S ©N)ÚiterÚcollectionsÚOrderedDictÚfromkeys)Úitemss    ú`/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/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_resource3   s2   € ð
 —‘“×&Ñ& tÓ,ˆØ�~‰~ÓÒ3 F§M¡M£OÐ3r   c                óB   — t        | j                  | j                  «      S r
   )r   r9   r5   r(   s    r   r)   zZipReader.files;   s   € Ü�t—|‘| T§[¡[Ó1Ð1r   )r+   r,   r-   r   r@   rJ   r)   Ú__classcell__©rE   s   @r   r0   r0   %   s   ø„ ò&ô1ò4ö2r   r0   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        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>L   s   è ø€ Ò9 T�4—;‘;—=Ñ9ùs   ‚z)MultiplexedPath only supports directories)ÚlistÚmapÚ_ensure_traversabler   Ú_pathsrB   ÚallÚNotADirectoryError)r   ÚpathsÚmessages      r   r   zMultiplexedPath.__init__G   sV   € Üœ3Ô2Ô4EÀeÓ4LÓMÓNˆŒØ�{Š{Ø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)rU   r   Úchilds      r   rV   z*MultiplexedPath.iterdir.<locals>.<genexpr>P   s"   è ø€ ÒN˜d¸t¿|¹|»~ÒN°e”EÐN�EÑNùs   ‚!#r<   )Úkeyc              3  ó&   K  — | ]	  \  }}|–— Œ y ­wr
   r.   )rU   r<   Úlocss      r   rV   z*MultiplexedPath.iterdir.<locals>.<genexpr>S   s   è ø€ Ò!@©:¨4°¤$Ñ!@ùs   ‚)rZ   ÚoperatorÚ
attrgetterÚ	itertoolsÚgroupbyÚsortedrX   Ú_follow)r   ÚchildrenÚby_nameÚgroupss       r   ra   zMultiplexedPath.iterdirO   sP   € ÙN d§k¡kÔNˆÜ×%Ñ% fÓ-ˆÜ×"Ñ"¤6¨(¸Ô#@ÀgÔNˆÜ�4—<‘<Ñ!@¸Ô!@ÓAÐAr   c                ó   — t        | › d�«      ‚©Nz is not a file©rB   r(   s    r   Ú
read_byteszMultiplexedPath.read_bytesU   ó   € Ü 4 &¨Ð 7Ó8Ð8r   c                ó   — t        | › d�«      ‚rp   rq   ©r   rC   Úkwargss      r   Ú	read_textzMultiplexedPath.read_textX   rs   r   c                 ó   — y)NTr.   r(   s    r   rS   zMultiplexedPath.is_dir[   s   € Ør   c                 ó   — y)NFr.   r(   s    r   rG   zMultiplexedPath.is_file^   s   € Ør   c                óˆ   •— 	 t        ‰| �  |Ž S # t        j                  $ r  | j                  d   j                  |Ž cY S w xY wr>   )r?   r!   r   ÚTraversalErrorrZ   )r   ÚdescendantsrE   s     €r   r!   zMultiplexedPath.joinpatha   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.
        é   )rh   Úteer   Ú
ValueErrorr\   Únext)Úclsrl   ÚsubdirsÚone_dirÚone_files        r   rk   zMultiplexedPath._followi   sa   € ô &/§]¡]°8¸QÓ%?Ñ"ˆ�˜(ð	&Ü˜“=Ð øÜò 	&ð&Ù˜G�}Ò$øÜ%ò &Ü˜H“~Ô%ð&úð	&ús)   œ
' §	A±8µA¸AÁAÁAÁAc                ó   — t        | › d�«      ‚rp   rq   ru   s      r   ÚopenzMultiplexedPath.open|   rs   r   c                ó4   — | j                   d   j                  S r>   )rZ   r<   r(   s    r   r<   zMultiplexedPath.name   s   € à�{‰{˜1‰~×"Ñ"Ð"r   c                óR   — dj                  d„ | j                  D «       «      }d|› d�S )Nz, c              3  ó(   K  — | ]
  }d |› d �–— Œ y­w)ú'Nr.   rT   s     r   rV   z+MultiplexedPath.__repr__.<locals>.<genexpr>„   s   è ø€ Ò>¨$˜A˜d˜V 1œ+Ñ>ùs   ‚zMultiplexedPath(ú))ÚjoinrZ   )r   r]   s     r   Ú__repr__zMultiplexedPath.__repr__ƒ   s)   € Ø—	‘	Ñ>°$·+±+Ô>Ó>ˆØ! % ¨Ð*Ð*r   )r+   r,   r-   Ú__doc__r   ra   rr   rw   rS   rG   r!   Úclassmethodrk   r‡   Úpropertyr<   rŽ   rL   rM   s   @r   rO   rO   ?   s_   ø„ ñòRòBò9ò9òòô9ð ñ&ó ð&ò$9ð ñ#ó ð#ö+r   rO   c                  óT   — e Zd Zd„ Zedd„«       Zed	d„«       Zed
d„«       Zd„ Z	d„ Z
y)ÚNamespaceReaderc           	     ó’   — dt        |«      vrt        d«      ‚t        t        t        t        | j                  |«      «      Ž | _        y )NÚNamespacePathzInvalid path)r    r€   rO   ÚfilterÚboolrX   Ú_resolver   )r   Únamespace_paths     r   r   zNamespaceReader.__init__‰   s8   € Ø¤# nÓ"5Ñ5Ü˜^Ó,Ð,Ü#¤V¬D´#°d·m±mÀ^Ó2TÓ%UÐVˆ�	r   c                óJ   — d„ | j                  |«      D «       }t        |d«      S )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  óB   K  — | ]  }|j                  «       sŒ|–— Œ y ­wr
   rR   )rU   Úcands     r   rV   z+NamespaceReader._resolve.<locals>.<genexpr>›   s   è ø€ ÒQ˜À4Ç;Á;Å=”ÑQùs   ‚˜N)Ú_candidate_pathsr�   )r‚   Úpath_strÚdirss      r   r˜   zNamespaceReader._resolveŽ   s'   € ñ R ×!5Ñ!5°hÓ!?ÔQˆÜ�D˜$ÓÐr   c              #  óp   K  — t        j                  |«      –— | j                  |«      E d {  –—†  y 7 Œ­wr
   )r   r   Ú_resolve_zip_path)r‚   rž   s     r   r�   z NamespaceReader._candidate_pathsž   s)   è ø€ ä�l‰l˜8Ó$Ò$Ø×(Ñ(¨Ó2×2Ò2ús   ‚,6®4¯6c              #  óˆ  K  — t        t        t        j                  d| «      «      «      D ]‡  }t	        j
                  t        t        t        t        «      5  | |j                  «       d  j                  dd«      dz   }t        | d |j                  «        |j                  d«      «      –— d d d «       Œ‰ y # 1 sw Y   Œ”xY w­w)Nz[\\/]r2   r3   )ÚreversedrW   ÚreÚfinditerÚ
contextlibÚsuppressrB   ÚIsADirectoryErrorr\   ÚPermissionErrorÚendr6   r   ÚstartÚlstrip)rž   ÚmatchÚinners      r   r¡   z!NamespaceReader._resolve_zip_path£   s­   è ø€ äœd¤2§;¡;¨x¸Ó#BÓCÓDò 	LˆEÜ×$Ñ$Ü!Ü!Ü"Üó	ñ Lð ! §¡£ Ð/×7Ñ7¸¸cÓBÀSÑH�Ü˜h ¨¯©«Ð7¸¿¹ÀcÓ9JÓKÒK÷Lð Lñ	L÷Lð Lüs   ‚ACÁAB6Â+CÂ6B?	Â;C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   N)Úreturnzabc.Traversable | None)rž   r    r±   zIterator[abc.Traversable])rž   r    )r+   r,   r-   r   r�   r˜   r�   Ústaticmethodr¡   r$   r)   r.   r   r   r“   r“   ˆ   sP   „ òWð
 ò ó ð ð ò3ó ð3ð ò	Ló ð	Lò1ór   r“   c                óˆ   — t        | t        «      s| S t        j                  dt        d¬«       t        j                  | «      S )zk
    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   rY   rY   »   s9   € ô �dœCÔ Øˆä‡M�MØFÜØõô �<‰<˜ÓÐr   )Ú
__future__r   r   r¦   rh   rf   r   r¤   r¶   Úcollections.abcr   Ú r   Ú
_itertoolsr   Úcompat.py39r   r   ÚTraversableResourcesr   r0   ÚTraversablerO   r“   rY   r.   r   r   ú<module>rÀ      s}   ðÝ "ã Û Û Û Û Û 	Û Ý $å Ý Ý  ò9ô�×)Ñ)ô ô 2�×(Ñ(ô 2ô4F+�c—o‘oô F+ôR0�c×.Ñ.ô 0ófr   