a
    PfS*                     @   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sNJ t tjddtjgdd}|jttjdks|J |jdksJ t g dtjd}|jttjtjksJ t|jsJ t g dtj	d}|jttj	dksJ |jdksJ t g ddtj	d}|jttj	dks&J |jdks6J t g dd d}|jttj	dks^J |jdksnJ 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   Zfloat64subtypeisnanr
   int64selfarr r   e/var/www/ai-form-bot/venv/lib/python3.9/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sLJ 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sDJ 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s8J t ddtjdgtdd}|jttdksdJ |jdksrJ 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 s8J tj|td}dd t||D }tj|tj	d
 srJ 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       zKTestConstructors.test_constructor_object_dtype_bool_fill.<locals>.<genexpr>)r   r,   r   r   r
   r   arrayzipZfromiterbool_all)r   datar   Zarr_expecteditr   r   r   'test_constructor_object_dtype_bool_fillI   s    z8TestConstructors.test_constructor_object_dtype_bool_fillr   r   c                 C   sF   t jtdd$ tddtjg|d W d    n1 s80    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 sJ0    Y  t|| tt tt 	|}W d    n1 s0    Y  t|| d S )Nz
2016-01-01r   z
US/Pacific)Zperiodstzzdatetime64[ns]r   )
pdZ
date_ranger   r   asarrayr   assert_produces_warningUserWarningr   ZSeries)r   Z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sJJ |jdksXJ t g d	tdg d	tjdd
}t g dtjdd}t|| |jttjksJ |jdksJ 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sJ |jdks J t g d	tdg d	d dd
}t g dd d}t|| |jttjkspJ |jdksJ d S )Nr   r   r   )r9   sparse_indexr   r   r   r   integer)kindr   r   )r9   rH   r   r
   )r   r   r   r   r+   r9   rH   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_dtyperH   Nr   c                 C   s   d}t jt|d td|d d}W d    n1 s60    Y  tdgd d}t || |jttjksnJ |j	dks|J t jt|d& tdt
ddgd d}W d    n1 s0    Y  tdgd d}t || |jttjksJ |j	dksJ d S )Nz7Constructing SparseArray with scalar data is deprecatedr<   r   )r9   rH   r   r   r   )r   rE   FutureWarningr   r   r   r   r   r   r
   r   )r   rH   msgr   rN   r   r   r   %test_constructor_spindex_dtype_scalar   s    ,4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sPJ |jdks^J d S )Nr   r   r   r   rL   rI   r   rM   )r   r   rN   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   s0   t |j}t|r t|s,J n||ks,J d S r.   )r   r
   r   )r   r9   r
   r    r   r   r   $test_constructor_inferred_fill_value   s    

z5TestConstructors.test_constructor_inferred_fill_valueformat)ZcoocscZcsrsize
   c                 C   sL   t d}|j|dd|d}t|}t|}|  }t	
|| d S )Nscipy.sparser         ?ZdensityrV   )r>   importorskiprandomr   from_spmatrixr   rD   toarrayravelr   assert_numpy_array_equal)r   rX   rV   	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 )NrZ   rY   r   r[   r\   r   )r>   r]   r^   r9   r   r_   r   rD   r`   ra   r   rb   )r   rV   rc   rd   r    r!   r   r   r   *test_from_spmatrix_including_explicit_zero   s    



z;TestConstructors.test_from_spmatrix_including_explicit_zeroc                 C   sV   t d}|jdddd}t jtdd t| W d    n1 sH0    Y  d S )NrZ      r   rW   )rV   znot '4'r<   )r>   r]   eyer?   r@   r   r_   )r   rc   rd   r   r   r   test_from_spmatrix_raises   s    
z*TestConstructors.test_from_spmatrix_raisesc                 C   sF   t jtdd$ ttdd W d    n1 s80    Y  d S )Nzexpected dimension <= 1 datar<   rY   )r   rg   )r>   r?   	TypeErrorr   r   ZarangeZ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   rg   r      r   r	   )r   r
   r   Zassert_almost_equalr%   )r   Z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 rbJ t|}d	|jd d< |jd d d	k sJ d S )
Nr   r   r   r   rg   rl   T)copyr   )r   r5   r   r   r%   anyr8   )r   Zarr_datar   cpZ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szJ t|| d S )N)FFTTFFFr   Tr   r   )r   r5   r   boolr   r   r   rb   r%   sp_indexindicesr'   to_denser   r9   r   Z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sTJ |jr^J t g dtjdd}|jttjdksJ |jsJ d S )N)TFTr   Tr+   )r   r   r   r   r7   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sJ t|| d S )NrT   r   r   r   r   r   )r   r5   r   Zfloat32r   r   r   r   rb   r%   rt   ru   r'   rv   rw   r   r   r   test_constructor_float32  s    z)TestConstructors.test_constructor_float32)$__name__
__module____qualname__r   r"   r&   r(   r-   r;   r>   markZparametrizer   r   rA   rG   rO   r   rR   rS   r   r5   r   rC   	TimestampZNaTrU   re   rf   ri   rk   rn   rr   rx   ry   rz   r   r   r   r   r      sD   


(
	
	


r   )numpyr   r>   Zpandas._libs.sparser   ZpandasrC   r   r   Zpandas._testingZ_testingr   Zpandas.core.arrays.sparser   r   r   r   r   r   <module>   s   