
    bMh(                         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             Zej        d             Z G d d          Z G d d	          Z G d
 d          Z G d d          ZdS )    N)SparseDtypeSparseArrayc                      t          j        t           j        t           j        dddt           j        ddt           j        dg
          S )N                  )nparraynan     h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/arrays/sparse/test_indexing.pyarr_datar   
   s/    8RVRVQ1bfaBFAFGGGr   c                      t          |           S Nr   )r   s    r   arrr      s    x   r   c                      e Zd Zd Z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z  dgdz  ej
        gdz  dgdz  z   g g          d                         Zd Zd Zd Zd Zd ZdS )TestGetitemc                     |                                 }t          |          D ]C\  }}t          j        |||                    t          j        ||          ||                     Dd S r   )to_dense	enumeratetmassert_almost_equal)selfr   denseivalues        r   test_getitemzTestGetitem.test_getitem   sk    !# 	7 	7HAu"5%(333"3r7E1"I6666	7 	7r   c                     t          g d          }|g d         }t          ddg          }t          j        ||           d S )Nr   r   r   )TFTr   r   )r   r   assert_sp_array_equal)r   r   resultexpecteds       r   test_getitem_arraylike_maskz'TestGetitem.test_getitem_arraylike_mask   sN    )))$$((()1v&&
 22222r   slcNr   
   d   ir   r	   r   as_denser   c                     t          j        |          }t          |          }||         }t          ||                   }t          j        ||           d S r   )r   r   r   r   r%   )r   r)   r2   r   r&   r'   s         r   test_getslicezTestGetitem.test_getslice!   sS    0 8H%%(##Sx}--
 22222r   c                    t          j        t           j        dddddt           j        t           j        dg	          }t          |          }|t	          dd           f         }t          |dd                    }t          j        ||           t          |d          }|t	          dd           f         }t          |dd          d          }t          j        ||           d}t          j        t          |          5  |dd d d f          d d d            n# 1 swxY w Y   t          j        t          |          5  |dd d d f          d d d            d S # 1 swxY w 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msgs         r   test_getslice_tuplezTestGetitem.test_getslice_tupleA   s   "&!Q1aCDDU##eAtnn&'%)$$
 c***Uq111eAtnn&'%)222
 c****]:S111 	 	122qqq5MM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	 	!""aaa%LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   DD #D EE"%E"c                 `    t          g d          }|g d         }|j        |j        k    sJ d S )Nr$   )FFF)r   dtype)r   r   r?   s      r   test_boolean_slice_emptyz$TestGetitem.test_boolean_slice_emptyV   s?    )))$$'''(yCI%%%%%%r   c                 <   t          ddgdz  t          j        d          }t          t          j        dt          j        ddg          }t	          j        ||         |           | }||         }t          t          j        ddd	t          j        g          }t	          j        ||           t          ddt          j        gdz  t          j        t          j                  }||         }t          t          j        ddg          }t	          j        ||           d S )
NFTr   )rD   r7   r   r   r   r	   r
   )r   r   bool_r   r   r%   )r   r   	spar_boolr@   r?   s        r   test_getitem_bool_sparse_arrayz*TestGetitem.test_getitem_bool_sparse_array[   s     1dSSS	261bfa344
 Y555J	)n261aBF344
 c***D"&!A%RX"&
 
 
	 )n261a.))
 c*****r   c                     t          ddddt          j        t          j        gt          j                  }||dk             }t          ddgt          j                  }t          j        ||           d S )Nr   r   r	   r
   r6   g      @g      @)r   r   r   r   r%   )r   r   r?   r@   s       r   ,test_getitem_bool_sparse_array_as_comparisonz8TestGetitem.test_getitem_bool_sparse_array_as_comparisonm   se    1aArvrv626JJJ#'l3*888
 c*****r   c                 (   t          g dd          }t          j        |d                   sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ d}t          j        t
          |	          5  |d
          d d d            n# 1 swxY w Y   t          j        t
          |	          5  |d          d d d            n# 1 swxY w Y   |d         |t          |          dz
           k    sJ d S )N)
r   r   r   r   r	   r   r
   r   r   r   r   r6   r   r      r   z%must be an integer between -10 and 10r8      ir/   )r   r   isnanr;   r<   r=   len)r   r   zarrerrmsgs       r   test_get_itemzTestGetitem.test_get_itemt   s   999aHHHxA1v{{{{1v{{{{Aw!||||Aw!||||Aw!||||8]:V444 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:V444 	 	HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 2w#c#hhl+++++++s$   	B((B,/B,	C##C'*C')__name__
__module____qualname__r"   r(   r;   markparametrizer   s_r   r4   rB   rE   rI   rK   rS   r   r   r   r   r      s       7 7 73 3 3 [E!!!HE!B$KE!C%LE"Q$KE#2#JE"R%LE$3$KE#$$KE!""IE!$Q$KE##A#JE$$B$KE$$B$KE!Aa%LE&2b&M	
 ( [bfX]QC"HrvhlaS1W.DbI 3 3 ) .3  *& & &
+ + +$+ + +, , , , ,r   r   c                       e Zd Zd ZdS )TestSetitemc                 T   t          |                                          fd}fd}t          j        t          d          5   |             d d d            n# 1 swxY w Y   t          j        t          d          5   |             d d d            d S # 1 swxY w Y   d S )Nc                      d d<   d S )Nr	   r   r   r   s   r   setitemz*TestSetitem.test_set_item.<locals>.setitem   s    CFFFr   c                      d dd<   d S )Nr   r   r   r   r^   s   r   setslicez+TestSetitem.test_set_item.<locals>.setslice   s    C!HHHr   zassignment via setitemr8   )r   copyr;   r<   	TypeError)r   r   r_   ra   r   s       @r   test_set_itemzTestSetitem.test_set_item   sM   (##((**	 	 	 	 		 	 	 	 	 ]9,DEEE 	 	GIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]9,DEEE 	 	HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   AA#&A#BB!$B!N)rT   rU   rV   rd   r   r   r   r[   r[      s#            r   r[   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                            d
ddg          d             ZdS )TestTakec                     d}t          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nz-'indices' must be an array, not a scalar '2'.r8   r   )r;   r<   
ValueErrortake)r   r   rA   s      r   test_take_scalar_raisesz TestTake.test_take_scalar_raises   s    =]:S111 	 	HHQKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                 >   t          t          j        |ddg                    }t          j        |                    ddg          |           t          t          j        |g d                    }t          j        |                    g d          |           d S )Nr   r	   r$   r   r   ri   r   r%   r   r   r   r@   s       r   	test_takezTestTake.test_take   s    "'(QF3344
 1a&!1!13777"'(III6677
 )))!4!4c:::::r   c                     t          j        ddgt          d                    }|                    ddgdt          j                  }t          j        ||           d S )Nr   int64rD   r   T
allow_fillr7   )pdr   r   ri   r   r   r   r%   )r   r>   r&   s      r   test_take_all_emptyzTestTake.test_take_all_empty   sX    1a&G(<(<===aVHH
 00000r   c                    t          j        dgt          dd                    }|                    ddgdt          j                  }t          j        dt          j        g|j                  }t          j        ||           d S )	Ng        float64r6   rq   r   r/   Trr   )	rt   r   r   ri   r   r   rD   r   r%   )r   r>   r&   r'   s       r   test_take_different_fill_valuez'TestTake.test_take_different_fill_value   sw    3%{9'M'M'MNNNaW"&II8QKv|<<<
 622222r   c                    t          j        dt           j        dddg          }t          |d          }t          t          j        |dg          d          }t          j        |                    dg          |           t          t          j        |g d          d          }t          j        |                    g d          |           d S )Nr   r   r	   r6   )r   r	   r
   )r   r   r   r   ri   r   r%   )r   datar>   r@   s       r   test_take_fill_valuezTestTake.test_take_fill_value   s    xBFAq!,--Ta000"'$,,;;;
 aS!1!13777"'$			22qAAA
 YYY!7!7=====r   c                 :   t          t          j        |dg                    }t          j        |                    dg          |           t          t          j        |g d                    }t          j        |                    g d          |           d S )Nr/   )r.   r,   r0   rl   rm   s       r   test_take_negativezTestTake.test_take_negative   s    "'(RD1122
 2$555"'(LLL99::
 ,,,!7!7=====r   c                     t          j        t          d          5  |                    dg           d d d            d S # 1 swxY w Y   d S )Nboundsr8   rN   )r;   r<   r=   ri   )r   r   s     r   test_bad_takezTestTake.test_bad_take   s    ]:X666 	 	HHbTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A  AAc                    t          t          j        t          j        dt          j        dg          }|                    t          j        g d                    }t          t          j        t          j        dg          }t          j        ||           |                    t          j        g d          d          }t          t          j        t          j        t          j        g          }t          j        ||           |                    t          j        g d          dd          }t          t          j        t          j        dg          }t          j        ||           d}t          j        t          |	          5  |                    t          j        g d
          d           d d d            n# 1 swxY w Y   t          j        t          |	          5  |                    t          j        g d          d           d d d            n# 1 swxY w Y   d}t          j        t          |	          5  |                    t          j        ddg                     d d d            n# 1 swxY w Y   t          j        t          |	          5  |                    t          j        ddg                     d d d            n# 1 swxY w Y   t          j        t          |	          5  |                    t          j        ddg          d           d d d            d S # 1 swxY w Y   d S )Nr   r
   r   r   r/   Trs   Frr   zInvalid value in 'indices'r8   r   r   r0   r   r   r-    out of bounds value in 'indices'r1   r   r   r   r   ri   r   r   r%   r;   r<   rh   r=   r   r>   r&   r'   rA   s        r   test_take_fillingzTestTake.test_take_filling   s   bfbfa;<<RXjjj1122233
 222 RXjjj11dCC788
 222 RXjjj11ePTUU233
 222*]:S111 	? 	?KK,,K>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? ]:S111 	? 	?KK,,K>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 1]:S111 	+ 	+KK!R))***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]:S111 	* 	*KK!Q(()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*]:S111 	; 	;KK!Q((TK:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;sZ   ,GG
G),H!!H%(H%	*I??JJ%*KK"K,L::L>L>c                 :   t          t          j        ddddgd          }|                    t          j        g d                    }t          dt          j        dgd          }t          j        ||           |                    t          j        g d          d          }t          dt          j        t          j        gd          }t          j        ||           |                    t          j        g d          dd	          }t          dt          j        dgd          }t          j        ||           d
}t          j        t          |          5  |                    t          j        g d          d           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    t          j        g d          d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    t          j        ddg                     d d d            n# 1 swxY w Y   t          j        t          |          5  |                    t          j        ddg                     d d d            n# 1 swxY w Y   t          j        t          |          5  |                    t          j        ddg          d           d d d            d S # 1 swxY w Y   d S )Nr   r   r
   r6   r   Tr   Frr   zInvalid value in 'indices'.r8   r   r   r   r1   r   r   r   s        r   test_take_filling_fill_valuez%TestTake.test_take_filling_fill_value   s   bfaAq1a@@@RXjjj1122261~!<<<
 222 RXjjj11dCC
 26262qAAA
 222 RXjjj11ePTUU261~!<<<
 222+]:S111 	? 	?KK,,K>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?]:S111 	? 	?KK,,K>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 1]:S111 	+ 	+KK!R))***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]:S111 	* 	*KK!Q(()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*]:S111 	; 	;KK!Q((TK:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;sZ   !,FF F?,G77G;>G;*III;*J11J58J5,LLLkindblockintegerc                    t          t          j        t          j        t          j        t          j        t          j        g|          }|                    t          j        g d                    }t          t          j        t          j        t          j        g|          }t          j        ||           |                    t          j        g d          d          }t          t          j        t          j        t          j        g|          }t          j        ||           d}t          j        t          |          5  |                    t          j        ddg                     d d d            n# 1 swxY w Y   t          j        t          |          5  |                    t          j        dd	g                     d d d            n# 1 swxY w Y   t          j        t          |          5  |                    t          j        dd	g          d           d d d            d S # 1 swxY w Y   d S )
N)r   r   Tr6   r   r8   r   r1   r   )
r   r   r   ri   r   r   r%   r;   r<   r=   )r   r   r>   r&   r'   rA   s         r   test_take_filling_all_nanz"TestTake.test_take_filling_all_nan  s   bfbfbfbfbfEDQQQRXjjj11227dCCC
 222RXjjj11dCC7dCCC
 2220]:S111 	+ 	+KK!R))***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]:S111 	* 	*KK!Q(()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*]:S111 	; 	;KK!Q((TK:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s6   *E>>FF$*GG!G ,H99H= H=N)rT   rU   rV   rj   rn   ru   rx   r{   r}   r   r   r   r;   rW   rX   r   r   r   r   rf   rf      s          
; ; ;1 1 1
3 3 3> > >> > >  ; ; ;B!; !; !;F [Vgy%9::; ; ;:; ; ;r   rf   c                       e Zd Zd ZdS )	TestWherec                    t          t          j        dgd          }t          j        ddg          }|                    | d          }t          ddgd          }t          j        ||           t          j        |          }|	                    | d          }t          j
        |t          j        |                     d S )Ng      ?r   r6   TFr   )r   r   r   r   _wherer   r%   rt   Serieswhereassert_series_equal)r   r   maskr?   r@   sers         r   test_where_retain_fill_valuez&TestWhere.test_where_retain_fill_value"  s    263-A666xu&&jj$""1c(q111
 c***inniiq!!
sBIcNN33333r   N)rT   rU   rV   r   r   r   r   r   r   !  s#        4 4 4 4 4r   r   )numpyr   r;   pandasrt   r   pandas._testing_testingr   pandas.core.arrays.sparser   fixturer   r   r   r[   rf   r   r   r   r   <module>r      sU                        1 1 1 1 1 1 H H H ! ! !s, s, s, s, s, s, s, s,l       "C; C; C; C; C; C; C; C;L4 4 4 4 4 4 4 4 4 4r   