o
    5c&                     @   s   d dl Zd dlZd dlZd dlmZ d dlm	Z	m
Z
 eejejdddejddejdg
Ze	eZG d	d
 d
ZG dd dZG dd dZG dd dZdS )    N)SparseArraySparseDtype                  c                   @   sP  e Zd Zdd Zdd Zejdej	dd ej	dd ej	dd	 ej	dd ej	dd
 ej	dd ej	dd ej	dd ej	dd ej	ddd ej	ddd ej	ddd ej	ddd ej	ddd ej	ddd gejdej
gd dgd ej
gd dgd  g gdd Zdd Zdd Zdd Zdd Zd d! ZdS )"TestGetitemc                 C   sJ   t  }ttt D ]}tt | ||  tt |  ||   q
d S N)arrto_denserangelentmassert_almost_equal)selfdensei r   ^/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/arrays/sparse/test_indexing.pytest_getitem   s
   zTestGetitem.test_getitemc                 C   s4   t g d}|g d }t ddg}t|| d S )Nr   r   r   )TFTr   r   )r   r   assert_sp_array_equal)r   r   resultexpectedr   r   r   test_getitem_arraylike_mask   s   z'TestGetitem.test_getitem_arraylike_maskslcNr   
   d   ir   r   r	   as_denser   c                 C   s6   t |}t|}|| }t|| }t|| d S r   )nparrayr   r   r   )r   r   r&   r   r   r   r   r   r   test_getslice   s
   
zTestGetitem.test_getslicec                 C   s   t t jdddddt jt jdg	}t|}|tdd f }t|dd  }t|| t|dd}|tdd f }t|dd  dd}t|| d}tjt	|d |dd d d f  W d    n1 sgw   Y  tjt	|d |dd d d f  W d    d S 1 sw   Y  d S )Nr   r   r   r   
fill_valueztoo many indices for arraymatch)
r'   r(   nanr   slicer   r   pytestraises
IndexError)r   r   sparseresexpmsgr   r   r   test_getslice_tuple<   s    ""zTestGetitem.test_getslice_tuplec                 C   s,   t g d}|g d }|j|jksJ d S )Nr   )FFF)r   dtype)r   r   r4   r   r   r   test_boolean_slice_emptyQ   s   z$TestGetitem.test_boolean_slice_emptyc                 C   s   t ddgd tjdd}t tjdtjddg}tt| | | }t| }t tjddd	tjg}t|| t ddtjgd tjtjd}t| }t tjddg}t|| d S )
NFTr   )r8   r+   r   r	   r   r   r   )r   r'   bool8r.   r   r   r   )r   	spar_boolr5   r4   r   r   r   test_getitem_bool_sparse_arrayV   s   z*TestGetitem.test_getitem_bool_sparse_arrayc                 C   sL   t ddddtjtjgtjd}||dk }t ddgtjd}t|| d S )Nr   r   r   r   r*   g      @g      @)r   r'   r.   r   r   )r   r   r4   r5   r   r   r   ,test_getitem_bool_sparse_array_as_comparisonh   s   z8TestGetitem.test_getitem_bool_sparse_array_as_comparisonc                 C   s  t g ddd}ttd sJ td dksJ td dks!J |d dks)J |d dks1J |d dks9J d}tjt|d	 td
  W d    n1 sQw   Y  tjt|d	 td  W d    n1 slw   Y  td tttd  ksJ d S )N)
r   r   r   r   r   r   r   r   r   r	   r   r*   r   r      r   z%must be an integer between -10 and 10r,      ir#   )r   r'   isnanr   r0   r1   r2   r   )r   zarrerrmsgr   r   r   test_get_itemo   s   

 zTestGetitem.test_get_item)__name__
__module____qualname__r   r   r0   markparametrizer'   s_r.   r)   r7   r9   r<   r=   rC   r   r   r   r   r
      s>    ,	r
   c                   @      e Zd Zdd ZdS )TestSetitemc                    s   t t   fdd} fdd}tjtdd |  W d    n1 s'w   Y  tjtdd |  W d    d S 1 sBw   Y  d S )Nc                      s   d d< d S )Nr   r   r   r   r   r   r   setitem   s   z*TestSetitem.test_set_item.<locals>.setitemc                      s   d dd< d S )Nr   r   r   r   r   rL   r   r   setslice   s   z+TestSetitem.test_set_item.<locals>.setslicezassignment via setitemr,   )r   arr_datacopyr0   r1   	TypeError)r   rM   rN   r   rL   r   test_set_item   s   "zTestSetitem.test_set_itemN)rD   rE   rF   rR   r   r   r   r   rK          rK   c                   @   sf   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
ejdddgdd ZdS )TestTakec                 C   sB   d}t jt|d td W d    d S 1 sw   Y  d S )Nz-'indices' must be an array, not a scalar '2'.r,   r   )r0   r1   
ValueErrorr   take)r   r6   r   r   r   test_take_scalar_raises   s   "z TestTake.test_take_scalar_raisesc                 C   sX   t ttddg}ttddg| t ttg d}ttg d| d S )Nr   r   r   r   r'   rV   rO   r   r   r   r   r5   r   r   r   	test_take   s   zTestTake.test_takec                 C   s<   t jddgtdd}|jddgdtjd}t|| d S )Nr   int64)r8   r   T
allow_fillr+   )pdr(   r   rV   r'   r.   r   r   )r   ar   r   r   r   test_take_all_empty   s   zTestTake.test_take_all_emptyc                 C   s~   t dt jdddg}t|dd}tt |dgdd}t|dg| tt |g ddd}t|g d| d S )Nr   r   r   r*   )r   r   r   )r'   r(   r.   r   rV   r   r   )r   datar3   r5   r   r   r   test_take_fill_value   s   zTestTake.test_take_fill_valuec                 C   sT   t ttdg}ttdg| t ttg d}ttg d| d S )Nr#   )r"   r    r$   rX   rY   r   r   r   test_take_negative   s   zTestTake.test_take_negativec                 C   s@   t jtdd tdg W d    d S 1 sw   Y  d S )Nboundsr,   r?   )r0   r1   r2   r   rV   )r   r   r   r   test_bad_take   s   "zTestTake.test_bad_takec                 C   s   t tjtjdtjdg}|tg d}t tjtjdg}t|| |jtg ddd}t tjtjtjg}t|| |jtg dddd}t tjtjdg}t|| d}tjt	|d	 |jtg d
dd W d    n1 s}w   Y  tjt	|d	 |jtg ddd W d    n1 sw   Y  d}tjt
|d	 |tddg W d    n1 sw   Y  tjt
|d	 |tddg W d    n1 sw   Y  tjt
|d	 |jtddgdd W d    d S 1 s	w   Y  d S )Nr   r   r   r   r#   Tr]   Fr\   zInvalid value in 'indices'r,   r   r   r$   r   r   r!    out of bounds value in 'indices'r%   r   r   r'   r.   rV   r(   r   r   r0   r1   rU   r2   r   r3   r   r   r6   r   r   r   test_take_filling   s6   $zTestTake.test_take_fillingc                 C   s&  t tjddddgdd}|tg d}t dtjdgdd}t|| |jtg ddd}t dtjtjgdd}t|| |jtg dddd	}t dtjdgdd}t|| d
}tjt	|d |jtg ddd W d    n1 sw   Y  tjt	|d |jtg ddd W d    n1 sw   Y  d}tjt
|d |tddg W d    n1 sw   Y  tjt
|d |tddg W d    n1 sw   Y  tjt
|d |jtddgdd W d    d S 1 sw   Y  d S )Nr   r   r   r*   rf   Trg   Fr\   zInvalid value in 'indices'.r,   rh   ri   rj   r%   r   rk   rl   r   r   r   test_take_filling_fill_value   s6   $z%TestTake.test_take_filling_fill_valuekindblockintegerc                 C   sh  t tjtjtjtjtjg|d}|tg d}t tjtjtjg|d}t|| |jtg ddd}t tjtjtjg|d}t|| d}tjt	|d |tddg W d    n1 shw   Y  tjt	|d |tdd	g W d    n1 sw   Y  tjt	|d |jtdd	gdd W d    d S 1 sw   Y  d S )
N)ro   rf   Tr*   rj   r,   r   r%   r   )
r   r'   r.   rV   r(   r   r   r0   r1   r2   )r   ro   r3   r   r   r6   r   r   r   test_take_filling_all_nan  s"    "z"TestTake.test_take_filling_all_nanN)rD   rE   rF   rW   rZ   r`   rb   rc   re   rm   rn   r0   rG   rH   rr   r   r   r   r   rT      s    
!#rT   c                   @   rJ   )	TestWherec                 C   sx   t tjdgdd}tddg}|| d}t ddgdd}t|| t|}|	| d}t
|t| d S )Ng      ?r   r*   TFr   )r   r'   r.   r(   _wherer   r   r^   Serieswhereassert_series_equal)r   r   maskr4   r5   serr   r   r   test_where_retain_fill_value  s   
z&TestWhere.test_where_retain_fill_valueN)rD   rE   rF   rz   r   r   r   r   rs     rS   rs   )numpyr'   r0   pandasr^   pandas._testing_testingr   pandas.core.arrays.sparser   r   r(   r.   rO   r   r
   rK   rT   rs   r   r   r   r   <module>   s    &v