B
    &]\                 @   s  d Z ddlZddlZddlZdZdZejd dkZerXefZ	e
fZefZeZeZejZn|efZ	e
efZeejfZeZeZejdre
dZnFG dd	 d	eZyee  W n ek
r   e
dZY nX e
d
Z[dd Zdd ZerddlZddl Z e j!Z!ej"Z"ej#Z$n&ddl%Z%ddl&Z&e%Ze%j!Z!e&j'Z"e%j$Z$erXdZ(dZ)dZ*dZ+dZ,dZ-dZ.ndZ(dZ)dZ*dZ+dZ,dZ-dZ.ye/Z0W n e1k
r   dd Z0Y nX e0Z/erdd  Z2eZ3d!d" Z4nd#d  Z2G d$d% d%eZ3e4Z4ee2d& e5e(Z6e5e)Z7e5e*Z8e5e+Z9d'd Z:d(d Z;d)d Z<ervd*d+ Z=d,d- Z>ejd. d.krRd/d0 Z?ne@d1d.d2Z?ddlAZAeAjBZBeAjCZCn&d3d+ Z=d4d- Z>eDZ?ddlBZBeBjB ZBZCee=d5 ee>d6 erddlZeEed7ZFdCd8d9ZGeEed:ZH[ndDd;d<ZFeFd= d>d? ZHeeGd@ efdAdBZIdS )Ez6Utilities for writing code that runs on Python 2 and 3    Nz'Benjamin Peterson <benjamin@python.org>z1.2.0   javaic               @   s   e Zd Zdd ZdS )Xc             C   s   dS )Nl         )selfr   r   -lib/python3.7/site-packages/scipy/_lib/six.py__len__6   s    z	X.__len__N)__name__
__module____qualname__r   r   r   r   r   r   5   s   r   l    c             C   s
   || _ dS )z Add documentation to a function.N)__doc__)funcdocr   r   r   _add_docC   s    r   c             C   s   t |  tj|  S )z7Import module, returning the module after the last dot.)
__import__sysmodules)namer   r   r   _import_moduleH   s    r   __func____self____code____defaults__keysvaluesitemsim_funcZim_selfZ	func_codeZfunc_defaultsiterkeys
itervalues	iteritemsc             C   s   |   S )N)next)itr   r   r   advance_iteratorw   s    r"   c             C   s   | S )Nr   )unboundr   r   r   get_unbound_function}   s    r$   c             C   s   t dd t| jD S )Nc             s   s   | ]}d |j kV  qdS )__call__N)__dict__).0klassr   r   r   	<genexpr>   s    zcallable.<locals>.<genexpr>)anytype__mro__)objr   r   r   callable   s    r.   c             C   s   | j S )N)r   )r#   r   r   r   r$      s    c               @   s   e Zd Zdd ZdS )Iteratorc             C   s   t | | S )N)r+   __next__)r   r   r   r   r       s    zIterator.nextN)r	   r
   r   r    r   r   r   r   r/      s   r/   z3Get the function out of a possibly unbound functionc             C   s   t t| t S )z1Return an iterator over the keys of a dictionary.)itergetattr	_iterkeys)dr   r   r   r      s    c             C   s   t t| t S )z3Return an iterator over the values of a dictionary.)r1   r2   _itervalues)r4   r   r   r   r      s    c             C   s   t t| t S )z?Return an iterator over the (key, value) pairs of a dictionary.)r1   r2   
_iteritems)r4   r   r   r   r      s    c             C   s
   |  dS )Nzlatin-1)encode)sr   r   r   b   s    r9   c             C   s   | S )Nr   )r8   r   r   r   u   s    r:      c             C   s
   t | fS )N)bytes)ir   r   r   int2byte   s    r>   to_bytesZbigc             C   s   | S )Nr   )r8   r   r   r   r9      s    c             C   s
   t | dS )NZunicode_escape)unicode)r8   r   r   r   r:      s    zByte literalzText literalexecc             C   s   |j |k	r|||d S )N)__traceback__with_traceback)tpvaluetbr   r   r   reraise   s    

rG   printc             C   sB   |dkr*t d}|j}|dkr&|j}~n|dkr6|}td dS )zExecute code in a namespace.Nr;   zexec code in globs, locs)r   	_getframe	f_globalsf_localsrA   )codeZglobsZlocsframer   r   r   exec_   s    
rN   z9def reraise(tp, value, tb=None):
    raise tp, value, tb
c        
         s4  | dtj  dkrdS  fdd}d}| dd}|dk	r`t|trNd}nt|ts`td| d	d}|dk	rt|trd}nt|tstd
|rtd|sx| D ]}t|trd}P qW |rtd}td}nd}d}|dkr|}|dkr|}x,t| D ] \}	}|	r|| || qW || dS )zThe new-style print function.fileNc                s    t | tst| }  |  d S )N)
isinstance
basestringstrwrite)data)fpr   r   rS      s    
zprint_.<locals>.writeFsepTzsep must be None or a stringendzend must be None or a stringz$invalid keyword arguments to print()
 )popr   stdoutrP   r@   rR   	TypeError	enumerate)
argskwargsrS   Zwant_unicoderV   rW   argnewlineZspacer=   r   )rU   r   print_   sL    






rb   zReraise an exception.c             C   s   | d|fi S )z%Create a base class with a metaclass.ZNewBaser   )metabaser   r   r   with_metaclass  s    re   )N)NN)Jr   operatorr   types
__author____version__version_infoZPY3rR   Zstring_typesintZinteger_typesr+   Zclass_typesZ	text_typer<   Zbinary_typemaxsizeZMAXSIZErQ   ZlongZ	ClassTyper@   platform
startswithobjectr   lenOverflowErrorr   r   builtins	functoolsreduceziprangeZxrangeZ__builtin__	itertoolsZizipZ
_meth_funcZ
_meth_selfZ
_func_codeZ_func_defaultsr3   r5   r6   r    r"   	NameErrorr$   r/   r.   
attrgetterZget_method_functionZget_method_selfZget_function_codeZget_function_defaultsr   r   r   r9   r:   r>   methodcallerioStringIOBytesIOchrr2   rN   rG   rb   re   r   r   r   r   <module>   s   














.
