B
    Y/                 @   s^   d dl Zd dlZejejejejgZdddZ	dd Z
efddZd	d
 Zdd Zdd ZdS )    NFc             C   s^   | dkr>g }t  }x4|D ] }x|| D ]}|| q&W qW n
t  |  }|rZdd |D }|S )z@Returns a list of functions, optionally as string function namesallc             S   s   g | ]
}|j qS  )__name__).0fr   r   4lib/python3.7/site-packages/bottleneck/tests/util.py
<listcomp>   s    z!get_functions.<locals>.<listcomp>)	func_dictappend)Zmodule_nameZ	as_stringZfuncsZfuncs_in_dictkeyfuncr   r   r   get_functions   s    

r   c              C   s   i } t jt jt jt jt jt jt jt jt j	t j
t jt jt jg| d< t jt jt jt jt jt jt jt jt jt jg
| d< t jg| d< t jt jt jt jt jg| d< | S )NreducemoveZ	nonreduceZnonreduce_axis)bnZnansumZnanmeanZnanstdZnanvarZnanminZnanmaxZmedianZ	nanmedianss	nanargmin	nanargmaxZanynanZallnanmove_sum	move_meanmove_stdmove_varZmove_minZmove_maxZmove_argminZmove_argmaxZmove_medianZ	move_rankreplace	partitionargpartitionZrankdataZnanrankdatapush)dr   r   r   r	      s>    r	   c             C   s   t t| |S )N)
array_iterarray_generator)	func_namedtypesr   r   r   arrays=   s    r!   c             g   s6   x0| | D ]$}|j dk r |V  q
|V  |jV  q
W d S )N   )ndimT)Zarrays_funcargsar   r   r   r   A   s
    
r   c          	   c   s  | dkrd}nt j}| dkr"d}nt j}t ||gV  t || gV  t |ddgV  t | ddgV  | dkrt ||gV  t jdddgd	d
V  t jdddgdd
V  t jdddgt jd
V  t dddgd V  t dddgV  t d||dgV  t jdgt jd
V  t dddgV  t jdddgt jd
V  t jdddgt jd
V  | dst dV  t dV  t dV  t dV  t dV  t dV  t | V  t |V  t |V  i }dddddgd|d< ddgd|d< dddgd|d< ddgd|d< dd gd|d!< xd"D ]}t j	|}x|D ]}|| d# }|| d$ }	x|D ]}
t j
||
d
}t|jjt jr| d%kr|j|j d&k }|||< |j|j d&k }|||< |j|j d&k }||  d'9  < || x|	D ]}||V  q W qrW qPW q:W t ddgdd!ggd(d(dgf V  xX|D ]P}
t 
d|
}x8tdD ],}x$tddD ]}||d(| V  qW qrW qTW xp|D ]h}
t 
dd!d|
}|d(d(d V  |d(d(d(d(df V  |d(d(d d(d(d(d(df V  qW x|D ]}
t 
dddd!|
}xtdD ]}xtddD ]}||d(| V  |d(d(|d(|f V  |d(d(d(d(|d(|f V  ||d(| d(d(d V  ||d(| d(d(d d(d(d(d(df V  qXW qHW q W d(S ))z4Iterator that yields arrays to use for unit testing.)r   r   r   )r   r   r   r      r"      r      z>f4)dtypez<f4g    eAl        r   i	   g      "g        g      "@)r   )r   r   )r"   r   )r"   r   r)   )sizeshapes)r'      )r"      )r(         )r"   r"   r0      )r)   r"   r(   r0   r0   )r)   r"   r,   r-   )r   r   g?N)npnaninfZarrayZfloat16int64float64
startswithZrandomZRandomStateZarange
issubclassr*   typeZinexactZrandshapeZshuffleZreshapeZastyperange)r   r    r5   r6   r   ZseedZrsr#   r,   r-   r*   r&   idxr<   startstepr   r   r   r   O   s    





$&
"
(
r   c             C   sJ   | j }g }|jr|d |jr*|d t|dkr@|d d|S )NCFr   N,)flagsc_contiguousr
   f_contiguouslenjoin)r&   r   stringr   r   r   array_order   s    


rK   )F)Znumpyr4   Z
bottleneckr   r8   Zfloat32r7   Zint32ZDTYPESr   r	   r!   r   r   rK   r   r   r   r   <module>   s   
'i