
    @g                        d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZ eeej&                  e   f   Zg dZ G d de j,                        Z G d de      Ze G d	 d
e             Z G d de      Zy)    N)AnyBinaryIOIterableIteratorNoReturnLiteralOptionalProtocolTextTextIOUnionoverloadruntime_checkable)ResourceReaderTraversableTraversableResourcesc                       e Zd ZdZej
                  dedefd       Zej
                  dedefd       Z	ej
                  dede
fd       Zej
                  dee   fd       Zy	)
r   zDAbstract base class for loaders to provide resource reading support.resourcereturnc                     t         )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     L/var/www/openai/venv/lib/python3.12/site-packages/importlib_resources/abc.pyopen_resourcezResourceReader.open_resource   s
          c                     t         )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_pathzResourceReader.resource_path)   s
      r   pathc                     t         )zjReturn True if the named 'path' is a resource.

        Files are resources, directories are not.
        r   r   r    s     r   is_resourcezResourceReader.is_resource6   s
      r   c                     t         )z+Return an iterable of entries in `package`.r   r   s    r   contentszResourceReader.contents>   s
      r   N)__name__
__module____qualname____doc__abcabstractmethodr   r   r   r   boolr#   r   strr&    r   r   r   r      s    N	 d 	 x 	  	  	
 d 
 t 
  
  	        	 (3-    r   r   )	metaclassc                       e Zd Zy)TraversalErrorN)r'   r(   r)   r/   r   r   r2   r2   D   s    r   r2   c                      e Zd ZdZej
                  ded    fd       ZdefdZ		 dde
e   de
e   defdZej
                  defd	       Zej
                  defd
       Zdedd fdZdedd fdZedded   dededefd       Zeded   dededefd       Zej
                  	 ddedededeeef   fd       Zeej
                  defd              Zy)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                      y)z3
        Yield Traversable objects in self
        Nr/   r%   s    r   iterdirzTraversable.iterdirR       r   c                 p    | j                  d      5 }|j                         cddd       S # 1 sw Y   yxY w)z0
        Read contents of self as bytes
        rbNopenread)r   strms     r   
read_byteszTraversable.read_bytesX   s$     YYt_99; __s   ,5Nencodingerrorsc                 t    | j                  ||      5 }|j                         cddd       S # 1 sw Y   yxY w)z/
        Read contents of self as text
        )r>   r?   Nr9   )r   r>   r?   r<   s       r   	read_textzTraversable.read_text_   s+     YYY8D99; 988s   .7c                      y)z4
        Return True if self is a directory
        Nr/   r%   s    r   is_dirzTraversable.is_dirh   r6   r   c                      y)z/
        Return True if self is a file
        Nr/   r%   s    r   is_filezTraversable.is_filen   r6   r   descendantsc                 L   |s| S t         j                  j                  d t        t        j
                  |      D              }t        |      fd| j                         D        }	 t        |      } |j                  | S # t        $ r t        dt        |            w xY w)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   4   K   | ]  }|j                     y wN)parts).0r    s     r   	<genexpr>z'Traversable.joinpath.<locals>.<genexpr>~   s      .
#J4DJJ#J   c              3   B   K   | ]  }|j                   k(  s|  y wrI   name)rK   traversabletargets     r   rL   z'Traversable.joinpath.<locals>.<genexpr>   s#      
+9K[=M=MQW=WK>s   z"Target not found during traversal.)	itertoolschainfrom_iterablemappathlibPurePosixPathnextr5   StopIterationr2   listjoinpath)r   rF   namesmatchesmatchrR   s        @r   r\   zTraversable.joinpatht   s     K-- .
#&w'<'<k#J.
 
 e
+/<<>
	ME
 u~~u%%	  	 4fd5k 	s   )B  B#childc                 $    | j                  |      S )z2
        Return Traversable child in self
        )r\   )r   r`   s     r   __truediv__zTraversable.__truediv__   s     }}U##r   rmodeargskwargsc                      y rI   r/   r   rd   re   rf   s       r   r:   zTraversable.open   s    SVr   r8   c                      y rI   r/   rh   s       r   r:   zTraversable.open   s    PSr   c                      y)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/   rh   s       r   r:   zTraversable.open   r6   r   c                      y)zM
        The base name of this object without any parent references.
        Nr/   r%   s    r   rP   zTraversable.name   r6   r   )NN)rc   )r'   r(   r)   r*   r+   r,   r   r5   bytesr=   r	   r.   rA   r-   rC   rE   StrPathr\   rb   r   r   r   r   r:   r   r   propertyrP   r/   r   r   r   r   H   s    	-0  
E  GK 6>sm	 	  
 	  
&W & &2$ $] $ VVCV3V6V VSSsScShS S		&)	58		vx	 	 	 c   r   r   c                   x    e Zd ZdZej
                  dd       ZdedefdZ	de
defdZdedefdZdee   fd	Zy
)r   zI
    The required interface for providing traversable
    resources.
    r   c                      y)z3Return a Traversable object for the loaded package.Nr/   r%   s    r   fileszTraversableResources.files   r6   r   r   c                 ^    | j                         j                  |      j                  d      S )Nr8   )rq   r\   r:   r   s     r   r   z"TraversableResources.open_resource   s$    zz|$$X.33D99r   c                     t        |      rI   r   r   s     r   r   z"TraversableResources.resource_path   s    ))r   r    c                 \    | j                         j                  |      j                         S rI   )rq   r\   rE   r"   s     r   r#   z TraversableResources.is_resource   s"    zz|$$T*2244r   c                 L    d | j                         j                         D        S )Nc              3   4   K   | ]  }|j                     y wrI   rO   )rK   items     r   rL   z0TraversableResources.contents.<locals>.<genexpr>   s     =&<d		&<rM   )rq   r5   r%   s    r   r&   zTraversableResources.contents   s    =djjl&:&:&<==r   N)r   r   )r'   r(   r)   r*   r+   r,   rq   rm   r   r   r   r   r   r-   r#   r   r.   r&   r/   r   r   r   r      sl    
 	B B:g :( :*c *h *5 5D 5>(3- >r   r   )r+   rS   osrW   typingr   r   r   r   r   r   r	   r
   r   r   r   r   r   r.   PathLikerm   __all__ABCMetar   	Exceptionr2   r   r   r/   r   r   <module>r~      s    
  	      R[[%%
&
C' s{{ ' T	Y 	 a( a aH>> >r   