
    d&                        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j        ej        ej        dddej        ddej        dg
          Z e	e          Z G d	 d
          Z G d d          Z G d d          Z G d d          ZdS )    N)SparseArraySparseDtype                  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                                           }t          t                     D ]H\  }}t          j        |||                    t          j        t           |          ||                     Id S N)arrto_dense	enumeratetmassert_almost_equal)selfdenseivalues       d/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/arrays/sparse/test_indexing.pytest_getitemzTestGetitem.test_getitem   sk    !# 	7 	7HAu"5%(333"3r7E1"I6666	7 	7    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   )nparrayr   r   r   )r   r!   r*   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-   nanr   slicer   r   pytestraises
IndexError)r   r   sparseresexpmsgs         r   test_getslice_tuplezTestGetitem.test_getslice_tuple<   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_emptyQ   s?    )))$$'''(yCI%%%%%%r   c                 Z   t          ddgdz  t          j        d          }t          t          j        dt          j        ddg          }t	          j        t          |         |           | }t          |         }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          t          j        ddg          }t	          j        ||           d S )
NFTr	   )r?   r1   r   r
   r   r   r   )r   r,   bool_r4   r   r   r   )r   	spar_boolr;   r:   s       r   test_getitem_bool_sparse_arrayz*TestGetitem.test_getitem_bool_sparse_arrayV   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   r0   g      @g      @)r   r,   r4   r   r   )r   r   r:   r;   s       r   ,test_getitem_bool_sparse_array_as_comparisonz8TestGetitem.test_getitem_bool_sparse_array_as_comparisonh   se    1aArvrv626JJJ#'l3*888
 c*****r   c                 x   t          g dd          }t          j        t          d                   sJ t          d         dk    sJ t          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  t          d
          d d d            n# 1 swxY w Y   t	          j        t          |	          5  t          d          d d d            n# 1 swxY w Y   t          d         t          t          t                    dz
           k    sJ d S )N)
r   r   r   r   r   r   r   r	   r   r
   r   r0   r   r      r	   z%must be an integer between -10 and 10r2      ir'   )r   r,   isnanr   r6   r7   r8   len)r   zarrerrmsgs      r   test_get_itemzTestGetitem.test_get_itemo   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<<C C "C<<D D )__name__
__module____qualname__r   r    r6   markparametrizer,   s_r4   r.   r=   r@   rD   rF   rN    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	   rU   r   s   r   setitemz*TestSetitem.test_set_item.<locals>.setitem   s    CFFFr   c                      d dd<   d S )Nr   r   r	   rU   rZ   s   r   setslicez+TestSetitem.test_set_item.<locals>.setslice   s    C!HHHr   zassignment via setitemr2   )r   arr_datacopyr6   r7   	TypeError)r   r[   r]   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)rO   rP   rQ   ra   rU   r   r   rW   rW      s#            r   rW   c                       e 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  t                              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'.r2   r   )r6   r7   
ValueErrorr   take)r   r<   s     r   test_take_scalar_raisesz TestTake.test_take_scalar_raises   s    =]:S111 	 	HHQKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA
A
c                 f   t          t          j        t          ddg                    }t	          j        t                              ddg          |           t          t          j        t          g d                    }t	          j        t                              g d          |           d S )Nr   r   r   r   r,   rf   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)r?   r   T
allow_fillr1   )pdr-   r   rf   r,   r4   r   r   )r   ar   s      r   test_take_all_emptyzTestTake.test_take_all_empty   sX    HaV;w#7#7888A4BFCC
 F+++++r   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   r0   )r   r   r   )r,   r-   r4   r   rf   r   r   )r   datar9   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                 b   t          t          j        t          dg                    }t	          j        t                              dg          |           t          t          j        t          g d                    }t	          j        t                              g d          |           d S )Nr'   )r&   r$   r(   ri   rj   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  t                              dg           d d d            d S # 1 swxY w Y   d S )Nboundsr2   rI   )r6   r7   r8   r   rf   )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ro   Frn   zInvalid value in 'indices'r2   r   r   r(   r   r   r%    out of bounds value in 'indices'r)   r	   r   r,   r4   rf   r-   r   r   r6   r7   re   r8   r   r9   r   r   r<   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   r0   r|   Tr}   Frn   zInvalid value in 'indices'.r2   r~   r   r   r)   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|   Tr0   r   r2   r   r)   r	   )
r   r,   r4   rf   r-   r   r   r6   r7   r8   )r   r   r9   r   r   r<   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)rO   rP   rQ   rg   rk   rr   ru   rw   rz   r   r   r6   rR   rS   r   rU   r   r   rc   rc      s          
; ; ;, , ,
> > >> > >  ; ; ;B!; !; !;F [Vgy%9::; ; ;:; ; ;r   rc   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   r0   TFr   )r   r,   r4   r-   _wherer   r   rp   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)rO   rP   rQ   r   rU   r   r   r   r     s#        4 4 4 4 4r   r   )numpyr,   r6   pandasrp   pandas._testing_testingr   pandas.core.arrays.sparser   r   r-   r4   r^   r   r   rW   rc   r   rU   r   r   <module>r      s[                        
 28RVRVQ1bfaBFAFGGk(s, s, s, s, s, s, s, s,l       "|; |; |; |; |; |; |; |;~4 4 4 4 4 4 4 4 4 4r   