o
    _~#g(                     @   s   d dl Zd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 ejdd Zejdd ZG dd	 d	ZG d
d dZG dd dZG dd dZdS )    N)SparseDtypeSparseArrayc                   C   s&   t t jt jdddt jddt jdg
S )N                  )nparraynan r   r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/arrays/sparse/test_indexing.pyarr_data
   s   &r   c                 C   s   t | S Nr   )r   r   r   r   arr   s   r   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   sF   |  }t|D ]\}}t|||  t||  ||   qd S r   )to_dense	enumeratetmassert_almost_equal)selfr   denseivaluer   r   r   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   )r   r   r   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   r   r   slicer   r   pytestraises
IndexError)r   r   sparseresexpmsgr   r   r   test_getslice_tupleA   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   r6   r   r   r   test_boolean_slice_emptyV   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jddd	tjg}t|| t ddtjgd tjtjd}|| }t tjddg}t|| d S )
NFTr	   )r:   r.   r   r
   r   r   r   )r   r   bool_r   r   r   )r   r   	spar_boolr7   r6   r   r   r   test_getitem_bool_sparse_array[   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   r6   r7   r   r   r   ,test_getitem_bool_sparse_array_as_comparisonm   s   z8TestGetitem.test_getitem_bool_sparse_array_as_comparisonc                 C   s  t g ddd}t|d sJ |d dksJ |d dks!J |d dks)J |d dks1J |d dks9J d}tjt|d	 |d
  W d    n1 sQw   Y  tjt|d	 |d  W d    n1 slw   Y  |d |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   isnanr2   r3   r4   len)r   r   zarrerrmsgr   r   r   test_get_itemt   s   

 zTestGetitem.test_get_item)__name__
__module____qualname__r   r!   r2   markparametrizer   s_r   r,   r9   r;   r>   r?   rF   r   r   r   r   r      s>    ,	r   c                   @      e Zd Zdd ZdS )TestSetitemc                    s   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   rO   r   r   setslice   s   z+TestSetitem.test_set_item.<locals>.setslicezassignment via setitemr/   )r   copyr2   r3   	TypeError)r   r   rP   rQ   r   rO   r   test_set_item   s   "zTestSetitem.test_set_itemN)rG   rH   rI   rT   r   r   r   r   rN          rN   c                   @   sn   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
dd Zejdddgdd ZdS )TestTakec                 C   sB   d}t jt|d |d W d    d S 1 sw   Y  d S )Nz-'indices' must be an array, not a scalar '2'.r/   r   )r2   r3   
ValueErrortake)r   r   r8   r   r   r   test_take_scalar_raises   s   "z TestTake.test_take_scalar_raisesc                 C   sX   t t|ddg}t|ddg| t t|g d}t|g d| d S )Nr   r   r   r   r   rX   r   r   r   r   r   r7   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r:   r   T
allow_fillr.   )pdr   r   rX   r   r   r   r   )r   r5   r   r   r   r   test_take_all_empty   s   zTestTake.test_take_all_emptyc                 C   sT   t jdgtdddd}|jddgdtjd}t jdtjg|jd}t|| d S )	Ng        float64r-   r^   r   r(   Tr_   )	ra   r   r   rX   r   r   r:   r   r   )r   r5   r   r    r   r   r   test_take_different_fill_value   s   z'TestTake.test_take_different_fill_valuec                 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   rX   r   r   )r   datar5   r7   r   r   r   test_take_fill_value   s   zTestTake.test_take_fill_valuec                 C   sT   t t|dg}t|dg| t t|g d}t|g d| d S )Nr(   )r'   r%   r)   rZ   r[   r   r   r   test_take_negative   s   zTestTake.test_take_negativec                 C   s@   t jtdd |dg W d    d S 1 sw   Y  d S )Nboundsr/   rA   )r2   r3   r4   rX   )r   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   rX   r   r   r   r2   r3   rW   r4   r   r5   r   r    r8   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-   rj   Trk   Fr_   zInvalid value in 'indices'.r/   rl   rm   rn   r*   r	   ro   rp   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)rs   rj   Tr-   rn   r/   r   r*   r	   )
r   r   r   rX   r   r   r   r2   r3   r4   )r   rs   r5   r   r    r8   r   r   r   test_take_filling_all_nan  s"    "z"TestTake.test_take_filling_all_nanN)rG   rH   rI   rY   r\   rb   rd   rf   rg   ri   rq   rr   r2   rJ   rK   rv   r   r   r   r   rV      s    
!#rV   c                   @   rM   )	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   ra   Serieswhereassert_series_equal)r   r   maskr6   r7   serr   r   r   test_where_retain_fill_value"  s   
z&TestWhere.test_where_retain_fill_valueN)rG   rH   rI   r~   r   r   r   r   rw   !  rU   rw   )numpyr   r2   pandasra   r   pandas._testing_testingr   pandas.core.arrays.sparser   fixturer   r   r   rN   rV   rw   r   r   r   r   <module>   s    

v 