o
    0ή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y9   dd ZY nw zd d	l
mZ W n eyN   e jZY nw G d
d dZdd ZdS )    N)suppress)   
   )Path   )runtime_checkablec                 C   s   | S N )clsr	   r	   X/tmp/pip-target-vg8gfxp4/lib/python/pkg_resources/_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                    s<   t t  | j| jW  d    S 1 sw   Y  d S r   )r   AttributeError	ZipReaderloadernamer   r   r	   r   _zip_reader/   s   
$zCTraversableResourcesLoader.get_resource_reader.<locals>._zip_readerc                    s:   t tt  | jW  d    S 1 sw   Y  d S r   )r   r   
ValueErrorNamespaceReadersubmodule_search_locationsr   r   r	   r   _namespace_reader3   s   
$zITraversableResourcesLoader.get_resource_reader.<locals>._namespace_readerc                 S   s:   t t | j| jW  d    S 1 sw   Y  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y   Y d S w | r S d S r   )pathlibr   r   	TypeErrorexists
FileReader)r   r   )r   r   r	   r   _file_reader?   s   
zDTraversableResourcesLoader.get_resource_reader.<locals>._file_reader) r   r   r   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   SpecLoaderAdapter__spec__r   )packager   r	   r	   r   	wrap_specX   s   r6   )abcsysr'   
contextlibr   version_infozipfiler   ZipPathzipptypingr   ImportErrorr   ABCr   r6   r	   r	   r	   r   <module>   s&   

<