o
    }¨ÊhU  ã                   @   s¼   d dl mZ d dlZd dlZd dlZd dlZd dlZddlmZm	Z	m
Z
mZ 	 dd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zejddd„ƒZe
ejdd„ ƒƒZe e¡ejdd„ ƒƒZdS )é    )Úabsolute_importNé   )ÚPathÚFileNotFoundErrorÚsingledispatchÚpackage_specF)ÚUnionÚAnyÚOptional)ÚResourceReaderc                 C   s   t t| ƒƒS )z3
    Get a Traversable resource from a package
    )Úfrom_packageÚget_package)Úpackage© r   úM/var/www/html/env/lib/python3.10/site-packages/importlib_resources/_common.pyÚfiles   s   r   c                 C   s.   t | ƒ}tj |¡\}}|rtd | ¡ƒ‚|S )z€Normalize a path by ensuring it is a string.

    If the resulting string contains path separators, an exception is raised.
    z{!r} must be only a file name)ÚstrÚosÚpathÚsplitÚ
ValueErrorÚformat)r   Ústr_pathÚparentÚ	file_namer   r   r   Únormalize_path   s
   r   c                 C   s*   | j }t|jddƒ}|du rdS ||jƒS )z?
    Return the package's loader if it's a ResourceReader.
    Úget_resource_readerN)Ú__spec__ÚgetattrÚloaderÚname©r   ÚspecÚreaderr   r   r   r   (   s
   

r   c                 C   s   t | tjƒr| S t | ¡S )N)Ú
isinstanceÚtypesÚ
ModuleTypeÚ	importlibÚimport_module)Úcandr   r   r   Úresolve9   s   ÿþr*   c                 C   s(   t | ƒ}t|ƒjdu rtd | ¡ƒ‚|S )z�Take a package name or module object and return the module.

    Raise an exception if the resolved module is not a package.
    Nz{!r} is not a package)r*   r   Úsubmodule_search_locationsÚ	TypeErrorr   )r   Úresolvedr   r   r   r   A   s   r   c                 C   s   t | ƒ}|j |j¡}| ¡ S )z=
    Return a Traversable object for the given package.

    )r   r   r   r    r   r!   r   r   r   r   M   s   r   Ú c                 c   s€   � t j|d�\}}z%t || ƒ ¡ t |¡ t|ƒV  W zt |¡ W d S  ty.   Y d S w zt |¡ W w  ty?   Y w w )N©Úsuffix)ÚtempfileÚmkstempr   ÚwriteÚcloser   Úremover   )r#   r0   ÚfdÚraw_pathr   r   r   Ú	_tempfileW   s    €
ÿþÿr8   c                 c   s>   � t | j| jd��}|V  W d  ƒ dS 1 sw   Y  dS )zu
    Given a Traversable object, return that object as a
    path on the local file system in a context manager.
    r/   N)r8   Ú
read_bytesr    )r   Úlocalr   r   r   Úas_fileh   s   €"ÿr;   c                 c   s   � | V  dS )z7
    Degenerate behavior for pathlib.Path objects.
    Nr   )r   r   r   r   Ú_s   s   €
r<   )r.   ) Ú
__future__r   r   r1   Ú
contextlibr%   r'   Ú_compatr   r   r   r   Útypingr   r	   r
   Úabcr   r&   r   ÚPackager   r   r   r*   r   r   Úcontextmanagerr8   r;   Úregisterr<   r   r   r   r   Ú<module>   s,    
	