o
    �¨ÊhS*  ã                   @   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s’J ‚|jdks™J ‚t g d¢d d�}|jttj	dƒks¬J ‚|jdks³J ‚t g d¢dd d�}|jttj	dƒksÇJ ‚|jdksÎJ ‚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/env/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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sµJ ‚|jdks¼J ‚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    