B
    VbC                 @   s*  d Z ddddddddd	d
ddddddddddddgZddlZddlZddlmZ ddlZddlZddlmZ	 yddl
ZW n ek
r   ddlZY nX eZefZeZeZeZdd Zdd Zdd
 Zdd Zd)d dZd!d Zd"Zd#d Zd$d Zd%d	 Zd&d ZG d'd dZd*d(dZ ej!Z"ej#Z$dS )+a  
Python 3.X compatibility tools.

While this file was originally intended for Python 2 -> 3 transition,
it is now used to create a compatibility layer between different
minor versions of Python 3.

While the active version of numpy may not support a given version of python, we
allow downstream libraries to continue to use these shims for forward
compatibility with numpy while they transition their code to newer versions of
Python.
bytesasbytes	isfileobjgetexceptionstrcharunicode	asunicodeasbytes_nestedasunicode_nestedasstropen_latin1long
basestringsixuinteger_typesis_pathlib_pathnpy_load_modulePathpicklecontextlib_nullcontext	os_fspathos_PathLike    N)r   )ABCc             C   s   t | tr| dS t| S )Nlatin1)
isinstancer   decodestr)s r   0lib/python3.7/site-packages/numpy/compat/py3k.pyr   &   s    

c             C   s   t | tr| S t| dS )Nr   )r   r   r   encode)r   r   r   r   r   +   s    
c             C   s   t | tr| dS t| S )Nr   )r   r   r   r   )r   r   r   r   r
   0   s    

c             C   s   t | tjtjtjfS )N)r   ioFileIOBufferedReaderBufferedWriter)fr   r   r   r   5   s    rc             C   s   t | |ddS )Nz
iso-8859-1)modeencoding)open)filenamer'   r   r   r   r   8   s    c             C   s   | S )Nr   )r   r   r   r   r   ;   s    Uc               C   s   t  d S )N   )sysexc_infor   r   r   r   r   @   s    c             C   s2   t | dr&t| ttfs&dd | D S t| S d S )N__iter__c             S   s   g | ]}t |qS r   )r   ).0yr   r   r   
<listcomp>E   s    z"asbytes_nested.<locals>.<listcomp>)hasattrr   r   r   r   )xr   r   r   r   C   s    c             C   s2   t | dr&t| ttfs&dd | D S t| S d S )Nr/   c             S   s   g | ]}t |qS r   )r	   )r0   r1   r   r   r   r2   K   s    z$asunicode_nested.<locals>.<listcomp>)r3   r   r   r   r   )r4   r   r   r   r	   I   s    c             C   s
   t | tS )z
    Check whether obj is a `pathlib.Path` object.

    Prefer using ``isinstance(obj, os.PathLike)`` instead of this function.
    )r   r   )objr   r   r   r   O   s    c               @   s*   e Zd ZdZd	ddZdd Zdd ZdS )
r   a  Context manager that does no additional processing.

    Used as a stand-in for a normal context manager, when a particular
    block of code is only sometimes used with a normal context manager:

    cm = optional_cm if condition else nullcontext()
    with cm:
        # Perform operation, using optional_cm if condition is True

    .. note::
        Prefer using `contextlib.nullcontext` instead of this context manager.
    Nc             C   s
   || _ d S )N)enter_result)selfr6   r   r   r   __init__f   s    zcontextlib_nullcontext.__init__c             C   s   | j S )N)r6   )r7   r   r   r   	__enter__i   s    z contextlib_nullcontext.__enter__c             G   s   d S )Nr   )r7   excinfor   r   r   __exit__l   s    zcontextlib_nullcontext.__exit__)N)__name__
__module____qualname____doc__r8   r9   r;   r   r   r   r   r   X   s   
c             C   s   ddl m} || | S )a  
    Load a module. Uses ``load_module`` which will be deprecated in python
    3.12. An alternative that uses ``exec_module`` is in
    numpy.distutils.misc_util.exec_mod_from_location

    .. versionadded:: 1.11.2

    Parameters
    ----------
    name : str
        Full module name.
    fn : str
        Path to module file.
    info : tuple, optional
        Only here for backward compatibility with Python 2.*.

    Returns
    -------
    mod : module

    r   )SourceFileLoader)importlib.machineryr@   load_module)namefninfor@   r   r   r   r   p   s    )r&   )N)%r?   __all__r-   osZpathlibr   r!   abcr   Zabc_ABCZpickle5r   ImportErrorintr   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r	   r   r   r   fspathr   PathLiker   r   r   r   r   <module>   sF   


	
