
    F\hS                        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JrJrJ	r	J
r
JrJr  S SKJrJr  S SKJr  \\\R"                  \   4   r/ SQr " S S\ R(                  S9r " S	 S
\5      r\ " S S\5      5       r " S S\5      rg)    N)AnyBinaryIOIterableIteratorNoReturnTextOptional)runtime_checkableProtocol)Union)ResourceReaderTraversableTraversableResourcesc                       \ rS rSrSr\R                  S\S\4S j5       r	\R                  S\S\4S j5       r
\R                  S\S\4S j5       r\R                  S\\   4S	 j5       rS
rg)r      zDAbstract base class for loaders to provide resource reading support.resourcereturnc                     [         e)zReturn an opened, file-like object for binary reading.

The 'resource' argument is expected to represent only a file name.
If the resource cannot be found, FileNotFoundError is raised.
FileNotFoundErrorselfr   s     ./usr/lib/python3.13/importlib/resources/abc.pyopen_resourceResourceReader.open_resource   s
          c                     [         e)zReturn the file system path to the specified resource.

The 'resource' argument is expected to represent only a file name.
If the resource does not exist on the file system, raise
FileNotFoundError.
r   r   s     r   resource_pathResourceReader.resource_path   s
      r   pathc                     [         e)zZReturn True if the named 'path' is a resource.

Files are resources, directories are not.
r   r   r    s     r   is_resourceResourceReader.is_resource,   s
      r   c                     [         e)z+Return an iterable of entries in `package`.r   r   s    r   contentsResourceReader.contents4   s
      r    N)__name__
__module____qualname____firstlineno____doc__abcabstractmethodr   r   r   r   boolr#   r   strr'   __static_attributes__r)   r   r   r   r      s    N	 d 	 x 	  	  	
 d 
 t 
  
  	        	 (3-    r   r   )	metaclassc                       \ rS rSrSrg)TraversalError:   r)   N)r*   r+   r,   r-   r3   r)   r   r   r6   r6   :   s    r   r6   c                   N   \ rS rSrSr\R                  S\S    4S j5       rS\	4S jr
SS\\   S\4S jjr\R                  S\4S	 j5       r\R                  S\4S
 j5       rS\SS 4S jrS\SS 4S jr\R                  SS j5       r\\R                  S\4S j5       5       rSrg)r   >   z
An object with a subset of pathlib.Path methods suitable for
traversing directories and opening files.

Any exceptions that occur when accessing the backing resource
may propagate unaltered.
r   c                     g)z#
Yield Traversable objects in self
Nr)   r&   s    r   iterdirTraversable.iterdirH       r   c                 z    U R                  S5       nUR                  5       sSSS5        $ ! , (       d  f       g= f)z 
Read contents of self as bytes
rbNopenread)r   strms     r   
read_bytesTraversable.read_bytesN   s$     YYt_99; __s   ,
:Nencodingc                 v    U R                  US9 nUR                  5       sSSS5        $ ! , (       d  f       g= f)z
Read contents of self as text
)rF   Nr@   )r   rF   rC   s      r   	read_textTraversable.read_textU   s)     YYY)T99; *))s   *
8c                     g)z$
Return True if self is a directory
Nr)   r&   s    r   is_dirTraversable.is_dir\   r=   r   c                     g)z
Return True if self is a file
Nr)   r&   s    r   is_fileTraversable.is_fileb   r=   r   descendantsc                 Z  ^ U(       d  U $ [         R                  R                  S [        [        R
                  U5       5       5      n[        U5      mU4S jU R                  5        5       n [        U5      nUR                  " U6 $ ! [         a    [        ST[        U5      5      ef = f)z
Return Traversable resolved with any descendants applied.

Each descendant should be a path segment relative to self
and each may contain multiple levels separated by
``posixpath.sep`` (``/``).
c              3   8   #    U  H  oR                   v   M     g 7fN)parts).0r    s     r   	<genexpr>'Traversable.joinpath.<locals>.<genexpr>r   s      .
#J4JJ#J   c              3   J   >#    U  H  oR                   T:X  d  M  Uv   M     g 7frS   name)rU   traversabletargets     r   rV   rW   v   s"      
+9K=M=MQW=WKK>s   #	#z"Target not found during traversal.)	itertoolschainfrom_iterablemappathlibPurePosixPathnextr;   StopIterationr6   listjoinpath)r   rP   namesmatchesmatchr]   s        @r   rg   Traversable.joinpathh   s     K-- .
#&w'<'<k#J.
 
 e
+/<<>
	ME
 ~~u%%	  	 4fd5k 	s   /B	 	!B*childc                 $    U R                  U5      $ )z"
Return Traversable child in self
)rg   )r   rl   s     r   __truediv__Traversable.__truediv__   s     }}U##r   c                     g)z
mode may be 'r' or 'rb' to open as text or binary. Return a handle
suitable for reading (same as pathlib.Path.open).

When opening as text, accepts encoding parameters such as those
accepted by io.TextIOWrapper.
Nr)   )r   modeargskwargss       r   rA   Traversable.open   r=   r   c                     g)z=
The base name of this object without any parent references.
Nr)   r&   s    r   r[   Traversable.name   r=   r   r)   rS   )r)r*   r+   r,   r-   r.   r/   r0   r   r;   bytesrD   r	   r2   rH   r1   rK   rN   StrPathrg   rn   rA   propertyr[   r3   r)   r   r   r   r   >   s     	-0  
E (3- 3  	  
 	  
&W & &2$ $] $ 	  c   r   r   c                       \ rS rSrSr\R                  SS j5       rS\S\	R                  4S jrS\S\4S jrS\S\4S	 jrS\\   4S
 jrSrg)r      z=
The required interface for providing traversable
resources.
r   c                     g)z3Return a Traversable object for the loaded package.Nr)   r&   s    r   filesTraversableResources.files   r=   r   r   c                 ^    U R                  5       R                  U5      R                  S5      $ )Nr?   )r~   rg   rA   r   s     r   r   "TraversableResources.open_resource   s$    zz|$$X.33D99r   c                     [        U5      erS   r   r   s     r   r   "TraversableResources.resource_path   s    ))r   r    c                 \    U R                  5       R                  U5      R                  5       $ rS   )r~   rg   rN   r"   s     r   r#    TraversableResources.is_resource   s"    zz|$$T*2244r   c                 L    S U R                  5       R                  5        5       $ )Nc              3   8   #    U  H  oR                   v   M     g 7frS   rZ   )rU   items     r   rV   0TraversableResources.contents.<locals>.<genexpr>   s     =&<d		&<rX   )r~   r;   r&   s    r   r'   TraversableResources.contents   s    =djjl&:&:&<==r   r)   N)r   r   )r*   r+   r,   r-   r.   r/   r0   r~   ry   ioBufferedReaderr   r   r   r   r1   r#   r   r2   r'   r3   r)   r   r   r   r      sr    
 	B B:g :"2C2C :*c *h *5 5D 5>(3- >r   r   )r/   r   r^   osrb   typingr   r   r   r   r   r   r	   r
   r   r   r2   PathLikery   __all__ABCMetar   	Exceptionr6   r   r   r)   r   r   <module>r      s    
 	  	  N N N .  R[[%%
&
C' s{{ ' T	Y 	 W( W Wt>> >r   