o
    ŀgS*                     @   s^   d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	m
Z d dlmZ G dd dZdS )    N)IntIndex)SparseDtypeisna)SparseArrayc                	   @   sf  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
deedegdd Zdd Zdd Ze	j
ddeddggdd Zdd Ze	j
deddgdfeddgejfd d!gd!fed"gejfgd#d$ Ze	j
d%g d&e	j
d'dd(gd)d* Ze	j
d%g d&d+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Z d5d6 Z!d7d8 Z"d9d: Z#dS );TestConstructorsc                 C   s  t tjddtjg}|jttjtjksJ |jjtjksJ t|js'J t tjddtjgdd}|jttjdks>J |jdksEJ t g dtjd}|jttjtjksZJ t|jsbJ t g dtj	d}|jttj	dksvJ |jdks}J t g ddtj	d}|jttj	dksJ |jdksJ t g dd d}|jttj	dksJ |jdksJ t g ddd d}|jttj	dksJ |jdksJ d S )N      r   
fill_value)r   r   r      dtyper
   r   )
r   npnanr   r   float64subtypeisnanr
   int64selfarr r   `/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/arrays/sparse/test_constructors.pytest_constructor_dtype   s,   z'TestConstructors.test_constructor_dtypec                 C   s0   t g ddd}t g dtd}t|| d S )Nr   r      intr   )r   r   tmassert_sp_array_equalr   resultexpectedr   r   r   test_constructor_dtype_str.   s   z+TestConstructors.test_constructor_dtype_strc                 C   sP   t g dtddd}t g ddtjd}t|| |jjtdks&J d S )Nr   r   r   r   r   r   r   )r   r   r   r   r   r   	sp_valuesr   r    r   r   r   test_constructor_sparse_dtype3   s   z.TestConstructors.test_constructor_sparse_dtypec                 C   sH   t g ddd}t g dtjd}t|| |jjtdks"J d S )Nr$   zSparse[int32]r   int32)r   r   r(   r   r   r&   r   r    r   r   r   !test_constructor_sparse_dtype_str9   s   z2TestConstructors.test_constructor_sparse_dtype_strc                 C   sv   t ddtjdgtd}|jttksJ t|jsJ t ddtjdgtdd}|jttdks2J |jdks9J d S )NABr   r   r
   )r   r   r   objectr   r   r   r
   r   r   r   r   test_constructor_object_dtype?   s   z.TestConstructors.test_constructor_object_dtypec                 C   sv   g d}t |tdd}|jttdksJ |jdu sJ tj|td}dd t||D }tj|tj	d
 s9J d S )N)Fr   g      Y@g        Fr,   r   c                 s   s,    | ]\}}t |t |ko||kV  qd S N)type).0xyr   r   r   	<genexpr>P   s   * zKTestConstructors.test_constructor_object_dtype_bool_fill.<locals>.<genexpr>)r   r-   r   r   r
   r   arrayzipfromiterbool_all)r   datar   arr_expecteditr   r   r   'test_constructor_object_dtype_bool_fillI   s   z8TestConstructors.test_constructor_object_dtype_bool_fillr   r   c                 C   sH   t jtdd tddtjg|d W d    d S 1 sw   Y  d S )NzCannot convertmatchr   r   r   )pytestraises
ValueErrorr   r   r   )r   r   r   r   r   test_constructor_na_dtypeS   s   "z*TestConstructors.test_constructor_na_dtypec                 C   s   t jdddd}ttj|dd}tt t|}W d    n1 s%w   Y  t|| tt tt 	|}W d    n1 sGw   Y  t|| d S )Nz
2016-01-01r   z
US/Pacific)periodstzzdatetime64[ns]r   )
pd
date_ranger   r   asarrayr   assert_produces_warningUserWarningr   Series)r   dtir"   r!   r   r   r   +test_constructor_warns_when_losing_timezoneX   s   
z<TestConstructors.test_constructor_warns_when_losing_timezonec                 C   s|  t ddgtdddgd}t g ddd}t|| |jttjks%J |jdks,J t g d	tdg d	tjdd
}t g dtjdd}t|| |jttjksVJ |jdks]J t ddgtdddgdtjd}t g ddtjd}t|| |jttjksJ |jdksJ t g d	tdg d	d dd
}t g dd d}t|| |jttjksJ |jdksJ d S )Nr   r   r   )r:   sparse_indexr   r   r   r   integer)kindr   r   )r:   rN   r   r
   )r   r   r   r   r,   r:   rN   r
   r   r   r   	r   r   r   r   r   r   r   r   r
   )r   r   r"   expr   r   r   test_constructor_spindex_dtypeh   s@   z/TestConstructors.test_constructor_spindex_dtyperN   Nr   c                 C   s   d}t jt|d td|d d}W d    n1 sw   Y  tdgd d}t || |jttjks7J |j	dks>J t jt|d tdt
ddgd d}W d    n1 s[w   Y  tdgd d}t || |jttjkswJ |j	dks~J d S )Nz7Constructing SparseArray with scalar data is deprecatedr>   r   )r:   rN   r   r   r   )r   rI   FutureWarningr   r   r   r   r   r   r
   r   )r   rN   msgr   rT   r   r   r   %test_constructor_spindex_dtype_scalar   s   z6TestConstructors.test_constructor_spindex_dtype_scalarc                 C   sb   t ddgtdddgdd d}t g ddd d}t|| |jttjks(J |jdks/J d S )Nr   r   r   r   rR   rO   r   rS   )r   r   rT   r   r   r   0test_constructor_spindex_dtype_scalar_broadcasts   s   zATestConstructors.test_constructor_spindex_dtype_scalar_broadcastszdata, fill_valuer         ?g       @TFz
2017-01-01c                 C   s2   t |j}t|rt|sJ d S ||ksJ d S r/   )r   r
   r   )r   r:   r
   r!   r   r   r   $test_constructor_inferred_fill_value   s   

z5TestConstructors.test_constructor_inferred_fill_valueformat)coocsccsrsize
   c                 C   sL   t d}|j|dd|d}t|}t|}|  }t	
|| d S )Nscipy.sparser         ?densityr\   )r@   importorskiprandomr   from_spmatrixr   rH   toarrayravelr   assert_numpy_array_equal)r   r`   r\   	sp_sparsematr!   r"   r   r   r   test_from_spmatrix   s   


z#TestConstructors.test_from_spmatrixc                 C   sV   t d}|jddd|d}d|jd< t|}t|}| 	 }t
|| d S )Nrb   ra   r   rc   rd   r   )r@   rf   rg   r:   r   rh   r   rH   ri   rj   r   rk   )r   r\   rl   rm   r!   r"   r   r   r   *test_from_spmatrix_including_explicit_zero   s   



z;TestConstructors.test_from_spmatrix_including_explicit_zeroc                 C   sX   t d}|jdddd}t jtdd t| W d    d S 1 s%w   Y  d S )Nrb      r   r^   )r\   znot '4'r>   )r@   rf   eyerA   rB   r   rh   )r   rl   rm   r   r   r   test_from_spmatrix_raises   s
   
"z*TestConstructors.test_from_spmatrix_raisesc                 C   sH   t jtdd ttdd W d    d S 1 sw   Y  d S )Nzexpected dimension <= 1 datar>   ra   )r   rp   )r@   rA   	TypeErrorr   r   arangereshape)r   r   r   r   %test_constructor_from_too_large_array   s   "z6TestConstructors.test_constructor_from_too_large_arrayc                 C   s:   t g ddd}t |}|jdksJ t|j|j d S )N)
r   r   r   r   r   r   r   rp   r      r   r	   )r   r
   r   assert_almost_equalr&   )r   zarrresr   r   r   test_constructor_from_sparse   s   z-TestConstructors.test_constructor_from_sparsec                 C   s   t t jt jdddt jddt jdg
}t|}t|dd}d	|jd d< |jd d d	k r1J t|}d	|jd d< |jd d d	k sIJ d S )
Nr   r   r   r   rp   rw   T)copyr   )r   r5   r   r   r&   anyr9   )r   arr_datar   cpnot_copyr   r   r   test_constructor_copy   s   &z&TestConstructors.test_constructor_copyc                 C   s   t g d}t|dtd}|jttksJ t|jt ddg t|j	j
t ddgt j | }|jtks=J t|| d S )N)FFTTFFFr   Tr   r   )r   r5   r   boolr   r   r   rk   r&   sp_indexindicesr(   to_denser   r:   r   denser   r   r   test_constructor_bool   s   z&TestConstructors.test_constructor_boolc                 C   s   t g dd d}|jttjksJ |jrJ t g dtjd}|jttjks*J |jr/J t g dtjdd}|jttjdksDJ |jsIJ d S )N)TFTr   Tr,   )r   r   r   r   r8   r
   r   r   r   r    test_constructor_bool_fill_value  s   

z1TestConstructors.test_constructor_bool_fill_valuec                 C   s   t jdt jdgt jd}t|t jd}|jtt jksJ t|j	t jddgt jd t|j
jt jddgt jd | }|jt jksHJ t|| d S )NrZ   r   r   r   r   r   )r   r5   r   float32r   r   r   r   rk   r&   r   r   r(   r   r   r   r   r   test_constructor_float32  s   z)TestConstructors.test_constructor_float32)$__name__
__module____qualname__r   r#   r'   r)   r.   r=   r@   markparametrizer   r   rC   rM   rU   r   rX   rY   r   r5   r   rF   	TimestampNaTr[   rn   ro   rr   rv   r{   r   r   r   r   r   r   r   r   r      sF    


(
	

	

r   )numpyr   r@   pandas._libs.sparser   pandasrF   r   r   pandas._testing_testingr   pandas.core.arrays.sparser   r   r   r   r   r   <module>   s    