U
    -c
                     @   s   d dl Z d dlZd dlZd dlmZ ejdkr<d dlmZ nddl	mZ zd dl
mZ W n ek
rt   dd ZY nX zd d	l
mZ W n ek
r   e jZY nX G d
d dZdd ZdS )    N)suppress)   
   )Path   )runtime_checkablec                 C   s   | S N )clsr	   r	   R/tmp/pip-unpacked-wheel-izj_87as/setuptools/_vendor/importlib_resources/_compat.pyr      s    r   )Protocolc                   @   s,   e Zd ZdZdd Zedd Zdd ZdS )	TraversableResourcesLoaderz
    Adapt loaders to provide TraversableResources and other
    compatibility.

    Used primarily for Python 3.9 and earlier where the native
    loaders do not yet implement TraversableResources.
    c                 C   s
   || _ d S r   spec)selfr   r	   r	   r   __init__%   s    z#TraversableResourcesLoader.__init__c                 C   s   | j jS r   )r   origin)r   r	   r	   r   path(   s    zTraversableResourcesLoader.pathc                    s~   ddl mm} fdd}fdd}dd   fd	d
}fdd}|jp||jp||jp||jp||jS )N   )readers	_adaptersc              
      s0   t t  | j| jW  5 Q R  S Q R X d S r   )r   AttributeErrorZ	ZipReaderloadernamer   r   r	   r   _zip_reader/   s    
zCTraversableResourcesLoader.get_resource_reader.<locals>._zip_readerc              
      s.   t tt  | jW  5 Q R  S Q R X d S r   )r   r   
ValueErrorZNamespaceReadersubmodule_search_locationsr   r   r	   r   _namespace_reader3   s    zITraversableResourcesLoader.get_resource_reader.<locals>._namespace_readerc              
   S   s.   t t | j| jW  5 Q R  S Q R X d S r   )r   r   r   get_resource_readerr   r   r	   r	   r   _available_reader7   s    
zITraversableResourcesLoader.get_resource_reader.<locals>._available_readerc                    s    | }t |dr|S d S )Nfiles)hasattr)r   reader)r    r	   r   _native_reader;   s    zFTraversableResourcesLoader.get_resource_reader.<locals>._native_readerc                    s>   zt j}W n tk
r&   Y d S X | r: S d S r   )pathlibr   r   	TypeErrorexistsZ
FileReader)r   r   )r   r   r	   r   _file_reader?   s    zDTraversableResourcesLoader.get_resource_reader.<locals>._file_reader) r   r   r   ZCompatibilityFiles)r   r   r   r   r   r$   r(   r	   )r    r   r   r   r   ,   s    

	
z.TraversableResourcesLoader.get_resource_readerN)__name__
__module____qualname____doc__r   propertyr   r   r	   r	   r	   r   r      s
   
r   c                 C   s   ddl m} || jtS )z
    Construct a package spec with traversable compatibility
    on the spec/loader/reader.

    Supersedes _adapters.wrap_spec to use TraversableResourcesLoader
    from above for older Python compatibility (<3.10).
    r   )r   )r)   r   ZSpecLoaderAdapter__spec__r   )packager   r	   r	   r   	wrap_specX   s    r1   )abcsysr%   
contextlibr   version_infozipfiler   ZZipPathZzipptypingr   ImportErrorr   ABCr   r1   r	   r	   r	   r   <module>   s    
<