o
    3Ih                     @   sf   d dl Z d dlZd dlmZ d dlmZ ddlmZmZ dd Z	dd	 Z
G d
d dejZdd ZdS )    N)suppress)SimpleNamespace   )	_adaptersreadersc                    s   t   fdd}|S )zw
    Wrap _adapters.TraversableResourcesLoader.get_resource_reader
    and intercept any standard library readers.
    c               
      s   z	 | i |}W n# t y   Y dS  ty, } zdt|vr! W Y d}~dS d}~ww |jj}|dr=|dr=dS t|tj	rW|j
jjjdsU|j
jjjdrWdS |S )z
        If the reader is from the standard library, return None to allow
        allow likely newer implementations in this library to take precedence.
        Nznot enough values to unpackz
importlib.r   	zipimport_frozen_importlib_external)NotADirectoryError
ValueErrorstr	__class__
__module__
startswithendswith
isinstancer   CompatibilityFilesspecloader)argskwargsreaderexcmod_namereader_getter c/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/importlib_resources/future/adapters.pywrapper   s,   z _block_standard.<locals>.wrapper)	functoolswraps)r   r   r   r   r   _block_standard	   s   r    c                 C   s    t | tjo	| j }|s| S dS )z/
    Mask any degenerate reader. Ref #298.
    N)r   r   r   _reader)r   is_degenerater   r   r   _skip_degenerate2   s   r#   c                       s@   e Zd ZdZ fddZdd Zdd Zdd	 Zd
d Z  Z	S )TraversableResourcesLoaderz
    Adapt loaders to provide TraversableResources and other
    compatibility.

    Ensures the readers from importlib_resources are preferred
    over stdlib readers.
    c                    s(   t tt j|p|  pt |S N)r#   r    superget_resource_reader_standard_reader)selfnamer   r   r   r'   E   s
   
z.TraversableResourcesLoader.get_resource_readerc                 C   s   |   p|  p|  S r%   )_zip_reader_namespace_reader_file_readerr)   r   r   r   r(   L   s   z+TraversableResourcesLoader._standard_readerc                 C   s@   t t t| jj| jjW  d    S 1 sw   Y  d S r%   )r   AttributeErrorr   	ZipReaderr   r   r*   r/   r   r   r   r,   O   s   
$z&TraversableResourcesLoader._zip_readerc                 C   s<   t tt t| jjW  d    S 1 sw   Y  d S r%   )r   r0   r
   r   NamespaceReaderr   submodule_search_locationsr/   r   r   r   r-   S   s   $z,TraversableResourcesLoader._namespace_readerc                 C   sD   z	t | jj}W n
 ty   Y d S w | r tt|dS d S )N)path)	pathlibPathr   origin	TypeErrorexistsr   
FileReaderr   )r)   r4   r   r   r   r.   W   s   z'TraversableResourcesLoader._file_reader)
__name__r   __qualname____doc__r'   r(   r,   r-   r.   __classcell__r   r   r+   r   r$   <   s    r$   c                 C   s   t | jtS )z
    Override _adapters.wrap_spec to use TraversableResourcesLoader
    from above. Ensures that future behavior is always available on older
    Pythons.
    )r   SpecLoaderAdapter__spec__r$   )packager   r   r   	wrap_spec`   s   rB   )r   r5   
contextlibr   typesr    r   r   r    r#   r$   rB   r   r   r   r   <module>   s    )
$