o
    5c,                     @   sp   d dl Zd dlZd dlmZ d dlm  mZ d dl	Z
d dl	mZ d dlmZ d dlmZmZ G dd dZdS )    N)IntIndex)isna)SparseArraySparseDtypec                
   @   s  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ejd)d* Ze	j
d%g d&ejd+d, Zejd-d. Ze	j
d/d!ee d!fd0ed1dfded2dfd3ed4d3fgd5d6 Z!d7d8 Z"d9d: Z#d;d< Z$d=d> Z%d?d@ Z&dAdB Z'dS )C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   b/var/www/html/gps/gps/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_dtype4   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_str:   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@        Fr,   r   c                 s   s,    | ]\}}t |t |ko||kV  qd S N)type).0xyr   r   r   	<genexpr>Q   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_fillJ   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_dtypeT   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_timezoneY   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;   rO   r   r
   )r   r   r   r   r,   r;   rO   r
   r   r   r   	r   r   r   r   r   r   r   r   r
   )r   r   r"   expr   r   r   test_constructor_spindex_dtypei   s@   z/TestConstructors.test_constructor_spindex_dtyperO   Nr   c                 C   s   t d|d d}t dgd d}t|| |jttjksJ |jdks%J t dtddgd d}t dgd d}t|| |jttjksGJ |jdksNJ d S )Nr   )r;   rO   r   r   r   )	r   r   r   r   r   r   r   r
   r   )r   rO   r   rU   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   rS   rP   r   rT   )r   r   rU   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 r0   )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   dd l }|jj|dd|d}t|}t|}|  }t	
|| d S )Nr   r         ?densityr[   )scipy.sparsesparserandomr   from_spmatrixr   rI   toarrayravelr   assert_numpy_array_equal)r   r_   r[   scipymatr!   r"   r   r   r   test_from_spmatrix   s   

z#TestConstructors.test_from_spmatrixc                 C   sV   dd l }|jjddd|d}d|jd< t|}t|}| 	 }t
|| d S )Nr   r`   r   ra   rb   )rd   re   rf   r;   r   rg   r   rI   rh   ri   r   rj   )r   r[   rk   rl   r!   r"   r   r   r   *test_from_spmatrix_including_explicit_zero   s   


z;TestConstructors.test_from_spmatrix_including_explicit_zeroc                 C   sX   dd l }|jjdddd}tjtdd t| W d    d S 1 s%w   Y  d S )Nr      r   r]   )r[   znot '4'r?   )rd   re   eyerA   rB   rC   r   rg   )r   rk   rl   r   r   r   test_from_spmatrix_raises   s
   "z*TestConstructors.test_from_spmatrix_raiseszscalar,dtyper/   r   r   zr-   c                 C   s~   t jtdd t|g d|d}W d    n1 sw   Y  t|||g|d}t || |j|ks6J |j|ks=J d S )Nz&The index argument has been deprecatedr?   r   )indexr
   r	   )r   rJ   FutureWarningr   r   r   )r   scalarr   r   rU   r   r   r   "test_scalar_with_index_infer_dtype   s   z3TestConstructors.test_scalar_with_index_infer_dtypec                 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?   r`   )r   ro   )rA   rB   	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   ro   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   ro   r{   T)copyr   )r   r6   r   r   r&   anyr:   )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   r6   r   boolr   r   r   rj   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   r9   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 )NrY   r   r   r   r   r   )r   r6   r   float32r   r   r   r   rj   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>   rA   markparametrizer   r   rD   rN   rV   r   rW   rX   r   r6   r   rG   	TimestampNaTrZ   tdskip_if_no_scipyrm   rn   rq   r   rv   rz   r   r   r   r   r   r   r   r   r   r      s^    


(
	

	


	r   )numpyr   rA   pandas._libs.sparser   pandas.util._test_decoratorsutil_test_decoratorsr   pandasrG   r   pandas._testing_testingr   pandas.core.arrays.sparser   r   r   r   r   r   r   <module>   s    