a
    ij                     @   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 nF t y&   Y dS  tyX } zdt|vrB W Y d}~dS d}~0 0 |jj}|drz|drzdS t|tj	r|j
jjjds|j
jjjdrd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 a/home/ghrups/robot-bench/.venv/lib/python3.9/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   Z_reader)r   Z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 s20    Y  d S r#   )r   AttributeErrorr   Z	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.0    Y  d S r#   )r   r.   r
   r   Z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 0 | r@tt|dS d S )N)path)	pathlibPathr   origin	TypeErrorexistsr   Z
FileReaderr   )r'   r0   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   ZSpecLoaderAdapter__spec__r"   )packager   r   r   	wrap_spec`   s    r<   )r   r1   
contextlibr   typesr    r   r   r    r!   r"   r<   r   r   r   r   <module>   s   )
$