o
    ^ew                     @   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r(d dl	m
Z nd dlm
Z zd dlmZ W n eyC   dd ZY nw zd d	lmZ W n eyX   e jZY nw G d
d dZdd Zejdkrteeeje f ZdS eedf ZdS )    N)suppress)Union)   
   )Path)runtime_checkablec                 C   s   | S N )clsr	   r	   KD:\Projects\ConvertPro\env\Lib\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w   Y  d S r   )r   AttributeError	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w   Y  d S r   )r   r   
ValueError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w   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 w | r S d S r   )pathlibr   r   	TypeErrorexists
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   SpecLoaderAdapter__spec__r   )packager   r	   r	   r   	wrap_spec\   s   r5   )r   	   zos.PathLike[str])abcossysr'   
contextlibr   typingr   version_infozipfiler   ZZipPathZzippr   ImportErrorr   ABCr   r5   strPathLikeZStrPathr	   r	   r	   r   <module>   s0   

=
