a
    Pf(                     @   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   a/var/www/ai-form-bot/venv/lib/python3.9/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 ]0\}}t|||  t||  ||   qd S r   )Zto_dense	enumeratetmZ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 s0    Y  tjt	|d$ |dd d d f  W d    n1 s0    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    "2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_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	   )r8   r,   r   r
   r   r   r   )r   r   Zbool_r   r   r   )r   r   Z	spar_boolr5   r4   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   r4   r5   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s2J |d dksBJ |d dksRJ |d dksbJ |d dksrJ d}tjt|d	 |d
  W d    n1 s0    Y  tjt|d	 |d  W d    n1 s0    Y  |d |t|d  ksJ 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   isnanr0   r1   r2   len)r   r   Zzarrerrmsgr   r   r   test_get_itemt   s    &&zTestGetitem.test_get_item)__name__
__module____qualname__r   r   r0   markparametrizer   Zs_r   r*   r7   r9   r:   r;   rA   r   r   r   r   r      s<   ,	r   c                   @   s   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 sN0    Y  tjtdd |  W d    n1 s0    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   rH   r   r   setslice   s    z+TestSetitem.test_set_item.<locals>.setslicezassignment via setitemr-   )r   copyr0   r1   	TypeError)r   r   rI   rJ   r   rH   r   test_set_item   s    $zTestSetitem.test_set_itemN)rB   rC   rD   rM   r   r   r   r   rG      s   rG   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   s@   d}t jt|d |d W d    n1 s20    Y  d S )Nz-'indices' must be an array, not a scalar '2'.r-   r   )r0   r1   
ValueErrortake)r   r   r6   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   rP   r   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   Zint64r8   r   T
allow_fillr,   )pdr   r   rP   r   r   r   r   )r   r3   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        Zfloat64r+   rU   r   r&   TrV   )	rX   r   r   rP   r   r   r8   r   r   )r   r3   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   rP   r   r   )r   datar3   r5   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'   rR   rS   r   r   r   test_take_negative   s    zTestTake.test_take_negativec                 C   s>   t jtdd |dg W d    n1 s00    Y  d S )NZboundsr-   r=   )r0   r1   r2   rP   )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 s0    Y  tjt	|d	( |jtg ddd W d    n1 sB0    Y  d}tjt
|d	$ |tddg W d    n1 s0    Y  tjt
|d	$ |tddg W d    n1 s0    Y  tjt
|d	( |jtddgdd W d    n1 s0    Y  d S )Nr   r   r   r   r&   TrW   FrV   zInvalid value in 'indices'r-   r   r   r'   r   r   r$    out of bounds value in 'indices'r(   r	   r   r   r   rP   r   r   r   r0   r1   rO   r2   r   r3   r   r   r6   r   r   r   test_take_filling   s,    6844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 s0    Y  tjt	|d( |jtg ddd W d    n1 sJ0    Y  d}tjt
|d$ |tddg W d    n1 s0    Y  tjt
|d$ |tddg W d    n1 s0    Y  tjt
|d( |jtddgdd W d    n1 s0    Y  d S )Nr   r   r   r+   r_   Tr`   FrV   zInvalid value in 'indices'.r-   ra   rb   rc   r(   r	   rd   re   r   r   r   test_take_filling_fill_value   s,    8844z%TestTake.test_take_filling_fill_valuekindblockintegerc                 C   sj  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 s0    Y  tjt	|d$ |tdd	g W d    n1 s0    Y  tjt	|d( |jtdd	gdd W d    n1 s\0    Y  d S )
N)rh   r_   Tr+   rc   r-   r   r(   r	   )
r   r   r   rP   r   r   r   r0   r1   r2   )r   rh   r3   r   r   r6   r   r   r   test_take_filling_all_nan  s     24z"TestTake.test_take_filling_all_nanN)rB   rC   rD   rQ   rT   rY   rZ   r\   r]   r^   rf   rg   r0   rE   rF   rk   r   r   r   r   rN      s   
!#rN   c                   @   s   e Zd Zdd ZdS )	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   Z_wherer   r   rX   ZSerieswhereZassert_series_equal)r   r   maskr4   r5   Zserr   r   r   test_where_retain_fill_value"  s    
z&TestWhere.test_where_retain_fill_valueN)rB   rC   rD   ro   r   r   r   r   rl   !  s   rl   )numpyr   r0   ZpandasrX   r   Zpandas._testingZ_testingr   Zpandas.core.arrays.sparser   Zfixturer   r   r   rG   rN   rl   r   r   r   r   <module>   s   

v 