a
    xdw                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ejdkrPd dl	m
Z nd dlm
Z zd dlmZ W n ey   dd ZY n0 zd d	lmZ W n ey   e jZY n0 G d
d dZdd Zejdkreeeje f Zneedf ZdS )    N)suppress)Union)   
   )Path)runtime_checkablec                 C   s   | S N )clsr	   r	   S/var/www/html/Ranjet/env/lib/python3.9/site-packages/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.0    Y  d S r   )r   AttributeErrorZ	ZipReaderloadernamer   r   r	   r   _zip_reader2   s    
zCTraversableResourcesLoader.get_resource_reader.<locals>._zip_readerc                    s:   t tt  | jW  d    S 1 s,0    Y  d S r   )r   r   
ValueErrorZNamespaceReadersubmodule_search_locationsr   r   r	   r   _namespace_reader6   s    zITraversableResourcesLoader.get_resource_reader.<locals>._namespace_readerc                 S   s:   t t | j| jW  d    S 1 s,0    Y  d S r   )r   r   r   get_resource_readerr   r   r	   r	   r   _available_reader:   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 0 | r8 S d S r   )pathlibr   r   	TypeErrorexistsZ
FileReader)r   r   )r   r   r	   r   _file_readerB   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_spec\   s    r1   )r   	   zos.PathLike[str])abcossysr%   
contextlibr   typingr   version_infozipfiler   ZZipPathZzippr   ImportErrorr   ABCr   r1   strPathLikeZStrPathr	   r	   r	   r   <module>   s*   
=
