§
    (¶Õi+  ã                   ó¾   — d Z ddlZddlZddlZddlmZmZ ddlmZmZ  G d„ dej	        ¦  «        Z
 G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ dee
¦  «        ZdS )z+
Interface adapters for low-level readers.
é    N)ÚBinaryIOÚListé   )ÚTraversableÚTraversableResourcesc                   ó¨   — e Zd ZdZej        d„ ¦   «         Zej        d„ ¦   «         Zej        d„ ¦   «         Z	ej        d„ ¦   «         Z
ed„ ¦   «         ZdS )ÚSimpleReaderzQ
    The minimum, low-level interface required from a resource
    provider.
    c                 ó   — dS )zP
        The name of the package for which this reader loads resources.
        N© ©Úselfs    ú1/usr/lib/python3.11/importlib/resources/simple.pyÚpackagezSimpleReader.package   ó   € € € ó    c                 ó   — dS )zo
        Obtain an iterable of SimpleReader for available
        child containers (e.g. directories).
        Nr   r   s    r   ÚchildrenzSimpleReader.children   r   r   c                 ó   — dS )zL
        Obtain available named resources for this virtual package.
        Nr   r   s    r   Ú	resourceszSimpleReader.resources"   r   r   c                 ó   — dS )z:
        Obtain a File-like for a named resource.
        Nr   )r   Úresources     r   Úopen_binaryzSimpleReader.open_binary)   r   r   c                 óB   — | j                              d¦  «        d         S )Nú.éÿÿÿÿ)r   Úsplitr   s    r   ÚnamezSimpleReader.name0   s   € àŒ|×!Ò! #Ñ&Ô& rÔ*Ð*r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚabcÚabstractpropertyr   Úabstractmethodr   r   r   Úpropertyr   r   r   r   r	   r	      sµ   € € € € € ðð ð
 	Ôðð ñ Ôðð 	Ôðð ñ Ôðð 	Ôðð ñ Ôðð 	Ôðð ñ Ôðð ð+ð +ñ „Xð+ð +ð +r   r	   c                   ó2   — e Zd ZdZd„ Zd„ Zd„ Zd	d„Zd„ ZdS )
ÚResourceHandlez9
    Handle to a named resource in a ResourceReader.
    c                 ó"   — || _         || _        d S ©N)Úparentr   )r   r*   r   s      r   Ú__init__zResourceHandle.__init__:   s   € àˆŒØˆŒ	ˆ	ˆ	r   c                 ó   — dS ©NTr   r   s    r   Úis_filezResourceHandle.is_file?   ó   € Øˆtr   c                 ó   — dS ©NFr   r   s    r   Úis_dirzResourceHandle.is_dirB   ó   € Øˆur   Úrc                 óx   — | j         j                             | j        ¦  «        }d|vrt	          j        |i |¤Ž}|S )NÚb)r*   Úreaderr   r   ÚioÚTextIOWrapper)r   ÚmodeÚargsÚkwargsÚstreams        r   ÚopenzResourceHandle.openE   s?   € Ø”Ô#×/Ò/°´	Ñ:Ô:ˆØ�dˆ?ˆ?ÝÔ% tÐ6¨vÐ6Ð6ˆFØˆr   c                 ó    — t          d¦  «        ‚)NzCannot traverse into a resource)ÚRuntimeError)r   r   s     r   ÚjoinpathzResourceHandle.joinpathK   s   € ÝÐ<Ñ=Ô=Ð=r   N)r4   )	r   r   r    r!   r+   r.   r2   r>   rA   r   r   r   r'   r'   5   sn   € € € € € ðð ðð ð ð
ð ð ðð ð ðð ð ð ð>ð >ð >ð >ð >r   r'   c                   óL   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Ze	d„ ¦   «         Z
d„ Zd	S )
ÚResourceContainerzI
    Traversable container for a package's resources via its reader.
    c                 ó   — || _         d S r)   )r7   )r   r7   s     r   r+   zResourceContainer.__init__T   s   € àˆŒˆˆr   c                 ó   — dS r-   r   r   s    r   r2   zResourceContainer.is_dirX   r/   r   c                 ó   — dS r1   r   r   s    r   r.   zResourceContainer.is_file[   r3   r   c                 ó¶   ‡ — ˆ fd„‰ j         j        D ¦   «         }t          t          ‰ j                              ¦   «         ¦  «        }t          j        ||¦  «        S )Nc              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r)   )r'   )Ú.0r   r   s     €r   ú	<genexpr>z,ResourceContainer.iterdir.<locals>.<genexpr>_   s-   øè è € ÐNÐN°•  dÑ+Ô+ÐNÐNÐNÐNÐNÐNr   )r7   r   ÚmaprC   r   Ú	itertoolsÚchain)r   ÚfilesÚdirss   `  r   ÚiterdirzResourceContainer.iterdir^   sQ   ø€ ØNÐNÐNÐN¸¼Ô8MÐNÑNÔNˆÝÕ$ d¤k×&:Ò&:Ñ&<Ô&<Ñ=Ô=ˆÝŒ˜u dÑ+Ô+Ð+r   c                 ó   — t          ¦   «         ‚r)   )ÚIsADirectoryError)r   r;   r<   s      r   r>   zResourceContainer.openc   s   € ÝÑ!Ô!Ð!r   c              #   óJ   K  — | D ]}|                      d¦  «        E d {V —† Œd S )Nú/)r   )Úcompound_namesr   s     r   Ú_flattenzResourceContainer._flattenf   sD   è è € à"ð 	'ð 	'ˆDØ—z’z #‘”Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð	'ð 	'r   c                 ó¾   ‡— |s| S |                       |¦  «        }t          |¦  «        Š t          ˆfd„|                      ¦   «         D ¦   «         ¦  «        j        |Ž S )Nc              3   ó2   •K  — | ]}|j         ‰k    ¯|V — Œd S r)   )r   )rI   ÚtraversableÚtargets     €r   rJ   z-ResourceContainer.joinpath.<locals>.<genexpr>p   s:   øè è € ð 
ð 
Ø'¸[Ô=MÐQWÒ=WÐ=WˆKÐ=WÐ=WÐ=WÐ=Wð
ð 
r   )rV   ÚnextrP   rA   )r   ÚdescendantsÚnamesrZ   s      @r   rA   zResourceContainer.joinpathk   sz   ø€ Øð 	ØˆKØ—’˜kÑ*Ô*ˆÝ�e‘”ˆð�tð 
ð 
ð 
ð 
Ø+/¯<ª<©>¬>ð
ñ 
ô 
ñ 
ô 
ä
�Eðð 	r   N)r   r   r    r!   r+   r2   r.   rP   r>   ÚstaticmethodrV   rA   r   r   r   rC   rC   O   s“   € € € € € ðð ðð ð ðð ð ðð ð ð,ð ,ð ,ð
"ð "ð "ð ð'ð 'ñ „\ð'ðð ð ð ð r   rC   c                   ó   — e Zd ZdZd„ ZdS )ÚTraversableReaderzÄ
    A TraversableResources based on SimpleReader. Resource providers
    may derive from this class to provide the TraversableResources
    interface by supplying the SimpleReader interface.
    c                 ó    — t          | ¦  «        S r)   )rC   r   s    r   rN   zTraversableReader.files|   s   € Ý  Ñ&Ô&Ð&r   N)r   r   r    r!   rN   r   r   r   r`   r`   u   s-   € € € € € ðð ð'ð 'ð 'ð 'ð 'r   r`   )r!   r"   r8   rL   Útypingr   r   r   r   ÚABCr	   r'   rC   r`   r   r   r   ú<module>rd      s  ððð ð €
€
€
Ø 	€	€	€	Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2ð%+ð %+ð %+ð %+ð %+�3”7ñ %+ô %+ð %+ðP>ð >ð >ð >ð >�[ñ >ô >ð >ð4#ð #ð #ð #ð #˜ñ #ô #ð #ðL'ð 'ð 'ð 'ð 'Ð,¨lñ 'ô 'ð 'ð 'ð 'r   