U
    -c
                     @   s   d dl Z d dl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	 ddl
mZmZ ddlmZ eejef Zdd Zdd	 Zd
d Zdd Zdd ZejdddZejdd Zeejejdd ZdS )    N)UnionOptional   )ResourceReaderTraversable)	wrap_specc                 C   s   t t| S )z3
    Get a Traversable resource from a package
    )from_packageget_package)package r   U/tmp/pip-unpacked-wheel-izj_87as/pkg_resources/_vendor/importlib_resources/_common.pyfiles   s    r   c                 C   s*   | j }t|jdd}|dk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)Zcandr   r   r   resolve*   s    r   c                 C   s(   t | }t|jdkr$t| d|S )zTake a package name or module object and return the module.

    Raise an exception if the resolved module is not a package.
    Nz is not a package)r   r   submodule_search_locations	TypeError)r
   Zresolvedr   r   r   r	   /   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   ;   s    r    c                 c   sn   t j|d\}}z2zt||   W 5 t| X ~ t|V  W 5 zt| W n tk
rf   Y nX X d S )Nsuffix)	tempfilemkstemposremoveFileNotFoundErrorclosewritepathlibPath)r   r    fdraw_pathr   r   r   	_tempfileE   s    r,   c                 C   s   t | j| jdS )zu
    Given a Traversable object, return that object as a
    path on the local file system in a context manager.
    r   )r,   
read_bytesr   pathr   r   r   as_fileY   s    r0   c                 c   s
   | V  dS )z7
    Degenerate behavior for pathlib.Path objects.
    Nr   r.   r   r   r   _b   s    r1   )r   )r#   r(   r!   	functools
contextlibr   r   typingr   r   abcr   r   _compatr   r   strPackager   r   r   r	   r   contextmanagerr,   singledispatchr0   registerr)   r1   r   r   r   r   <module>   s,   


