U
    NZf9!                     @   s  d Z ddlZddlZddlmZ ddlZddlm	Z
 ddlmZ ejejddgedejddgedejddgedejdd	gedejd
dgedejddgddejddgddgddd Zejdddddddddddg
dd Zejddddd d!dddddg
d"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Z d4d5 Z!d6d7 Z"d8d9 Z#d:d; Z$d<d= Z%d>d? Z&d@dA Z'dBdC Z(ejdDej)ej*ej+gdEdF Z,dGdH Z-dIdJ Z.ejdKdegdLdM Z/dNdO Z0dPdQ Z1ejdKej2ej3gdRdS Z4dTdU Z5dS )VzN
Additional tests for PandasArray that aren't covered by
the interface tests.
    N)PandasDtype)PandasArrayabdtype   y      ?       @TFdatetime64[ns]ztimedelta64[ns])paramsc                 C   s   | j S )zk
    Parametrized fixture for NumPy arrays with different dtypes.

    This excludes string and bytes.
    )param)request r   I/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/arrays/numpy_/test_numpy.pyany_numpy_array   s    r   zdtype, expected)boolT)intT)uintT)floatT)complexT)strF)bytesF)r	   F)objectF)voidFc                 C   s   t | } | j|kstd S N)r   Z_is_numericAssertionErrorr   expectedr   r   r   test_is_numeric'   s    r   )r   F)r   F)r   F)r   Fc                 C   s   t | } | j|kstd S r   )r   Z_is_booleanr   r   r   r   r   test_is_boolean;   s    r   c                  C   s"   t td} t| dkstd S )Nint64zPandasDtype('int64'))r   npr   reprr   r   r   r   r   	test_reprO   s    r"   c                  C   s(   t d} t td}| |ks$td S )Nr   )r   Zconstruct_from_stringr    r   r   )resultr   r   r   r   test_constructor_from_stringT   s    
r$   c                 C   s    t | }t |}||kstd S r   )r   r   )Zany_numpy_dtyper   r#   r   r   r   test_dtype_univalentZ   s    r%   c                	   C   s,   t jtdd tdddg W 5 Q R X d S )NzNumPy arraymatchr         )pytestraises
ValueErrorr   r   r   r   r   test_constructor_no_coercione   s    r-   c                  C   s4   t dddg} tjt| dd}|j| k	s0td S )Nr   r(   r)   Tcopy)r    arraypdSeriesr   valuesr   )ndarrayserr   r   r   !test_series_constructor_with_copyj   s    r6   c                  C   sF   t dddg} tjt| dd}tjdddgdd}t|| d S )	Nr   r(   r)   Zfloat64r         ?g       @g      @)r    r0   r1   r2   r   tmassert_series_equal)r4   r#   r   r   r   r   #test_series_constructor_with_astypeq   s    r:   c                  C   sJ   t jdddgdd} tj| dd}tt jdddgdd}t|| d S )Nr   r(   r)   r   r   uint64)r    r0   r   Z_from_sequencer8   assert_extension_array_equalarrr#   r   r   r   r   test_from_sequence_dtypex   s    r?   c                  C   s.   t ddg} t| dd}t|| r*td S )Nr   r   Tr.   )r    r0   r   r8   Zshares_memoryr   )r>   r#   r   r   r   test_constructor_copy   s    r@   c                 C   s"   | }t |}|jj|jkstd S r   )r   r   Znumpy_dtyper   r   Znparrr>   r   r   r   test_constructor_with_data   s    rB   c                  C   st   t tdddg} |  }|| jks*t| jdd}|| jk	sDt| jdd}tjdddgdd}t|| d S )Nr   r(   r)   Tr.   Zf8r   )r   r    r0   to_numpy_ndarrayr   r8   assert_numpy_array_equalr=   r   r   r   test_to_numpy   s    rF   c                  C   s:   t dddg} d| jd< t dddg}t| | d S )Nr   r(   r)   
   r   )r1   r2   r0   r8   r9   )r5   r   r   r   r   test_setitem_series   s    
rH   c                 C   s<   | }t |dd}|d |d< |d |d< t| | d S )NTr.   r   r   )r   r8   rE   rC   rA   r   r   r   test_setitem   s
    rI   c               	   C   sH   t jdddgdd} t| } d}tjt|d | | W 5 Q R X d S )Nr   r(   r)   r   r   z)cannot perform not_a_method with type intr&   )r    r0   r   r*   r+   	TypeErrorZ_reducer>   msgr   r   r   test_bad_reduce_raises   s
    rM   c               	   C   sB   t tdddg} d}tjt|d | jdd W 5 Q R X d S )Nr   r(   r)   z/the 'keepdims' parameter is not supported .*allr&   T)Zkeepdims)r   r    r0   r*   r+   r,   allrK   r   r   r   $test_validate_reduction_keyword_args   s    rO   c                  C   s~   dddg} t | }|j}| |d ks.t| |d ksBttj|}||d ks^ttj|}||d ksztd S )N)jklm)rS   op)rV   rP   r(   )r1   r2   r0   maxr   r    maximumreduce)valsr5   r>   r#   r   r   r   test_np_max_nested_tuples   s    
r]   c                  C   sZ   t ddd} t| }t jj|dd}t||d  |jdd}t||d  d S )N      r)   r   )Zaxis)	r    ZarangeZreshaper   rZ   r[   r8   r<   rY   )rawr>   resZaltr   r   r   test_np_reduce_2d   s    rc   ufuncc                 C   sf   t tdddg}| |}t | |j}t|| t tdddg}| ||d t|| d S )N              r7   g      ")out)r   r    r0   rD   r8   r<   )rd   r>   r#   r   rg   r   r   r   test_ufunc_unary   s    rh   c                  C   st   t tdddg} t| t| d\}}t| jt| jd\}}t |}t |}t|| t|| d S )Nre   rf   r7   r(   )r   r    r0   divmodaddrD   r8   r<   )r>   Zr1Zr2e1e2r   r   r   
test_ufunc   s    rm   c                  C   s@   t tdddg} | |  }t tdddg}t|| d S )Nr   r(   r)   r_      r   r    r0   r8   r<   )xr#   r   r   r   r   test_basic_binop  s    rq   r   c                 C   sH   t tjdddg| d}d|d< t tjdddg| d}t|| d S )Nr   r   cr   tr   ro   )r   r>   r   r   r   r   test_setitem_object_typecode
  s    rt   c               	   C   sf   t tdddg} tjtdd d| d< W 5 Q R X d| d< t| d ttjfsbt	t
| d d S )	Nr   r(   r)   r   r&   r   r         @)r   r    r0   r*   r+   r,   
isinstancer   integerr   type)r>   r   r   r   test_setitem_no_coercion  s
    ry   c                  C   s   t tdddg} |  }| d d  }t| }d| d< |d dksJt|d dksZt|d dksjtd| d< d|d< | d dkstd S )	Nr   r(   r)   	   r   ru   r`      )r   r    r0   viewZasarrayr   )r>   Zview1Zview2Zview3r   r   r   test_setitem_preserves_views  s    
r}   c                 C   sT   t tjg | d}tddg}|j|dd}t ttjtjg}t|| d S )Nr   rf   g      ?Zlinear)interpolation)	r   r    r0   r1   ZIndexZ	_quantilenanr8   r<   )r   r>   idxr#   r   r   r   r   test_quantile_empty/  s
    r   c                  C   sX   t jdddgt jd} t| }| \}}t| \}}t|| t|t| d S )Nr   r(   r)   r   )	r    r0   r;   r   Z	factorizer1   r8   rE   r<   )r>   objZ	res_codesZ
res_uniqueZ	exp_codesZ
exp_uniquer   r   r   test_factorize_unsigned:  s    r   )6__doc__Znumpyr    r*   Zpandas.core.dtypes.dtypesr   Zpandasr1   Zpandas._testingZ_testingr8   Zpandas.arraysr   Zfixturer0   r   r   r   r   r   r   markZparametrizer   r   r"   r$   r%   r-   r6   r:   r?   r@   rB   rF   rH   rI   rM   rO   r]   rc   absnegativeZpositiverh   rm   rq   rt   ry   r}   r   r;   r   r   r   r   r   r   <module>   s   




	


