
    Mh]K                        S SK r S SKrS SKrS SKJs  Jr  S SKJ	s  J
r  S SKJr  S SKJr  S SKJrJrJr  \R*                  S 5       r\R*                  " / SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/S S/SS/S/S/S/S//S /S/S S/SS/S S/SS//S/S/S S/SS/S/S//S S/SS/SS/SS// / /S /S// / / / /// SQS9S 5       r " S S5      r " S S5      r " S S5      r " S S5      r " S  S!5      r " S" S#5      rg)$    N)Series)
BlockIndexIntIndexmake_sparse_indexc                      g)N    r	       [/var/www/html/env/lib/python3.13/site-packages/pandas/tests/arrays/sparse/test_libsparse.pytest_lengthr      s    r
   )r         )      r   )   	      )r   r   r   )r   r   r   )   r      r   r   r   r   
   r            r   )
plain_casedelete_blockssplit_blocks
skip_blockno_intersect	one_empty)paramsidsc                     U R                   $ N)param)requests    r   casesr&      s    z ==r
   c                   Z   \ rS rSr\R
                  R                  SS/S/S/S/S/S//SS/SS/SS	/SS// S
Q/ SQ/S/S/S/S/S/S//SS/SS/S/S/S/S//SS/SS/S/S/S/S//SS/SS/SS/SS/S/S//S/S// SQ/ SQS/S//SS/SS/SS/SS// SQ/ SQ//5      S 5       rS rSr	g)TestSparseIndexUnionW   z"xloc, xlen, yloc, ylen, eloc, elenr   r   r   r   r   r   r   )r   r   r   )r   r   r   r   r   r      r      r   )r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   c                    [        XqU5      n[        XsU5      n	UR                  U	5      n
[        U
[         5      (       d   e[        R                  " U
R
                  [        R                  " U[        R                  S95        [        R                  " U
R                  [        R                  " U[        R                  S95        UR                  5       nU	R                  5       nUR                  U5      n[        U[        5      (       d   e[        R                  " UR                  U
R                  5       R                  5        g )Ndtype)r   
make_union
isinstancetmassert_numpy_array_equalblocsnparrayint32blengthsto_int_indexr   indices)selfxlocxlenylocylenelocelenr   xindexyindexbresultixindexiyindexiresults                 r   test_index_make_union*TestSparseIndexUnion.test_index_make_unionX   s    X Kt4Kt4##F+':....
##GMM288D3QR
##G$4$4bhht2886TU%%'%%'$$W-'8,,,,
##GOOW5I5I5K5S5STr
   c                    [        S[        R                  " / SQ[        R                  S95      n[        S[        R                  " SS/[        R                  S95      nUR	                  U5      n[        S[        R                  " / SQ[        R                  5      5      nUR                  U5      (       d   e[        S[        R                  " / [        R                  S95      n[        S[        R                  " SS/[        R                  S95      nUR	                  U5      n[        S[        R                  " SS/[        R                  5      5      nUR                  U5      (       d   e[        S[        R                  " / [        R                  S95      n[        S[        R                  " / [        R                  S95      nUR	                  U5      n[        S[        R                  " / [        R                  5      5      nUR                  U5      (       d   e[        S[        R                  " / SQ[        R                  S95      n[        S[        R                  " / SQ[        R                  S95      nUR	                  U5      n[        S[        R                  " / SQ[        R                  5      5      nUR                  U5      (       d   e[        S[        R                  " SS/[        R                  S95      n[        S	[        R                  " SS/[        R                  S95      nS
n[        R                  " [        US9   UR	                  U5        S S S 5        g ! , (       d  f       g = f)Nr   )r   r   r   r-   r   r   )r   r   r   r   r   r   r   r   r   r   r   -Indices must reference same underlying lengthmatch)	r   r4   r5   r6   r/   equalspytestraises
ValueError)r:   abresexpmsgs         r   test_int_index_make_union.TestSparseIndexUnion.test_int_index_make_union   s6   Q"((;<Q!Qrxx89ll1oq"((<:;zz#Q28845Q!Qrxx89ll1oq"((Aq628845zz#Q28845Q28845ll1oq"((2rxx01zz#QABQABll1oq"((?BHH=>zz#Q!Qrxx89Q!Qrxx89=]]:S1LLO 211s   M--
M;r	   N)
__name__
__module____qualname____firstlineno__rO   markparametrizerG   rW   __static_attributes__r	   r
   r   r(   r(   W   s'   [[,S1#sQC!qc*Wq!fq"g1v{IFS1#sQC!qc*Wq!fqcA3bT2VaVaS1#sRD1Wq!fq"g1vsRD9S2$
IsRD9Wq!fq"g1v~|L		
*U*UXr
   r(   c                      \ rS rSr\R
                  S 5       rS r\R                  R                  S\" S\R                  " SS/\R                  S95      \" S\R                  " / S	Q\R                  S95      \" S
\R                  " / \R                  S95      \" S\R                  " / \R                  S95      /5      S 5       rSrg)TestSparseIndexIntersect   c                    Uu  p4pVpx[        X#U5      n	[        X%U5      n
[        X'U5      n[        US-   XV5      nU	R                  U
5      nUR                  U5      (       d   eU	R                  5       R                  U
R                  5       5      nUR                  UR                  5       5      (       d   eSn[        R
                  " [        US9   U	R                  U5        S S S 5        [        R
                  " [        US9   U	R                  5       R                  UR                  5       5        S S S 5        g ! , (       d  f       N^= f! , (       d  f       g = f)Nr   rK   rL   )r   	intersectrN   r8   rO   rP   	Exception)r:   r&   r   r;   r<   r=   r>   r?   r@   rA   rB   expectedlonger_indexresultrV   s                  r   test_intersect'TestSparseIndexIntersect.test_intersect   s   -2*DKt4Kt4k6!+/4>!!&)}}X&&&&$$&001D1D1FG}}X2245555=]]9C0\* 1]]9C0!++L,E,E,GH 10 1000s   D;.E;
E	
Ec                 4   [        S[        R                  " / [        R                  S95      n[        S[        R                  " SS/[        R                  S95      nUR	                  U5      R                  U5      (       d   eUR	                  U5      R                  U5      (       d   eUR                  5       nUR                  5       nUR	                  U5      R                  U5      (       d   eUR	                  U5      R                  U5      (       d   eg )Nr   r-   r   r   )r   r4   r5   r6   rd   rN   to_block_index)r:   rA   rB   s      r   test_intersect_empty-TestSparseIndexIntersect.test_intersect_empty   s    !RXXb9:!RXXq!fBHH=>'..v6666'..v6666&&(&&('..v6666'..v6666r
   caser   r   r   r-   )r   r   r   r   c                     UR                  U5      R                  U5      (       d   eUR                  5       nUR                  U5      R                  U5      (       d   eg r#   )rd   rN   rl   )r:   ro   s     r   test_intersect_identical1TestSparseIndexIntersect.test_intersect_identical   sR     ~~d#**40000""$~~d#**40000r
   r	   N)rY   rZ   r[   r\   tdskip_if_windowsri   rm   rO   r]   r^   r   r4   r5   r6   rq   r_   r	   r
   r   ra   ra      s    I I$	7 [[ Q!Qrxx89Q"((;<Q28845Q28845	

1
1r
   ra   c                   0   \ rS rSrS rS r\R                  R                  SSS/5      S 5       r	\R                  R                  SSS/5      S 5       r
\R                  R                  S	S
S/SS
/SS/SS/SS/SS/SS/SS/SS/SS//
5      S 5       rSrg)TestSparseIndexCommon   c                    [        S[        R                  " SS/[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " SS/[        R                  S95        [        S[        R                  " / [        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " / [        R                  S95        [        S[        R                  " / SQ[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " / SQ[        R                  S95        g 	Nr   r   r   r-   integerkindr   r   r   r   r   
r   r4   r5   r6   r0   r   npointsr1   r2   r9   r:   idxs     r   test_int_internal'TestSparseIndexCommon.test_int_internal   >   288QF"((#C)T#x(((({{a
##CKK1a&1QR288Bbhh#?iP#x(((({{a
##CKK"BHH1MNrxxBHH5I
 #x(((({{a
##CKK,bhh1WXr
   c                    [        S[        R                  " SS/[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " S/[        R                  S95        [        R                  " UR                  [        R                  " S/[        R                  S95        [        S[        R                  " / [        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " / [        R                  S95        [        R                  " UR                  [        R                  " / [        R                  S95        [        S[        R                  " / SQ[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " S/[        R                  S95        [        R                  " UR                  [        R                  " S/[        R                  S95        [        S[        R                  " / S	Q[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " SS/[        R                  S95        [        R                  " UR                  [        R                  " S
S/[        R                  S95        g Nr   r   r   r-   blockr{   r   r}   r   r   r   r   r   r4   r5   r6   r0   r   r   r1   r2   r3   r7   r   s     r   test_block_internal)TestSparseIndexCommon.test_block_internal   7   288QF"((#C'R#z****{{a
##CIIrxx288/LM
##CLL"((A3bhh2OP288Bbhh#?gN#z****{{a
##CIIrxx"((/KL
##CLL"((2RXX2NO288L#IPWX#z****{{a
##CIIrxx288/LM
##CLL"((A3bhh2OP288IRXX#FWU#z****{{a
##CIIrxxAbhh/OP
##CLL"((Aq62RSr
   r|   rz   r   c                     [        S[        R                  " SS/[        R                  S9US9nUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   e[        S[        R                  " / [        R                  S9US9n[        SS	5       H  nUR	                  U5      S:X  a  M   e   [        S[        R                  " / S
Q[        R                  S9US9nUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   e[        S[        R                  " / SQ[        R                  S9US9nUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eUR	                  S5      S:X  d   eg )Nr   r   r   r-   r{   r   r   r   r}   r   )r   r4   r5   r6   lookuprange)r:   r|   r   is       r   test_lookup!TestSparseIndexCommon.test_lookup  s/   288QF"((#C$Ozz"~###zz!}"""zz!}"""zz!}!!!zz!}!!!zz!}"""288Bbhh#?dKr1A::a=B&&&   288L#IPTUzz"~###zz!}!!!zz!}!!!zz!}!!!zz!}!!!zz!}"""288IRXX#FTRzz"~###zz!}!!!zz!}"""zz!}!!!zz!}!!!zz!}"""r
   c                    [        S[        R                  " SS/[        R                  S9US9nUR	                  [        R                  " / SQ[        R                  S95      n[        R                  " / SQ[        R                  S9n[
        R                  " X45        UR	                  [        R                  " / SQ[        R                  S95      n[        R                  " / S	Q[        R                  S9n[
        R                  " X45        [        S[        R                  " / [        R                  S9US9nUR	                  [        R                  " / S
Q[        R                  S95      n[        R                  " / SQ[        R                  S9n[
        R                  " X45        [        S[        R                  " / SQ[        R                  S9US9nUR	                  [        R                  " / SQ[        R                  S95      n[        R                  " / SQ[        R                  S9n[
        R                  " X45        UR	                  [        R                  " / SQ[        R                  S95      n[        R                  " / SQ[        R                  S9n[
        R                  " X45        [        S[        R                  " / SQ[        R                  S9US9nUR	                  [        R                  " / SQ[        R                  S95      n[        R                  " / SQ[        R                  S9n[
        R                  " X45        UR	                  [        R                  " / SQ[        R                  S95      n[        R                  " / SQ[        R                  S9n[
        R                  " X45        g )Nr   r   r   r-   r{   )r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r}   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r4   r5   r6   lookup_arrayr1   r2   )r:   r|   r   rT   rU   s        r   test_lookup_array'TestSparseIndexCommon.test_lookup_array-  sC   288QF"((#C$Orxx
"((CDhh{"((3
##C-rxxBHHEFhh~RXX6
##C-288Bbhh#?dKrxxRXXFGhh'rxx8
##C-288L#IPTUrxx
"((CDhhz2
##C-rxxBHHEFhh}BHH5
##C-288IRXX#FTRrxxBHHEFhh}BHH5
##C-rxxBHHEFhhbhh7
##C-r
   zidx, expectedr   r   r   r   r   r*   r   r      r   r   r      c                     [        SSS/SS/5      nUR                  U5      U:X  d   eUR                  5       nUR                  U5      U:X  d   eg )Nr   r   r   r   r   )r   r   r8   )r:   r   rf   bindexiindexs        r   test_lookup_basics(TestSparseIndexCommon.test_lookup_basicsP  sV      BB!Q0}}S!X---$$&}}S!X---r
   r	   N)rY   rZ   r[   r\   r   r   rO   r]   r^   r   r   r   r_   r	   r
   r   rv   rv      s    Y$T2 [[Vi%9:# ;#< [[Vi%9: . ; .D [[GFFGGHHGGH	
..r
   rv   c                   z    \ rS rSrS r\R                  R                  S/ SQ5      S 5       rS r	S r
S rS	 rS
rg)TestBlockIndexig  c                    [        S[        R                  " SS/[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " S/[        R                  S95        [        R                  " UR                  [        R                  " S/[        R                  S95        [        S[        R                  " / [        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " / [        R                  S95        [        R                  " UR                  [        R                  " / [        R                  S95        [        S[        R                  " / SQ[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " S/[        R                  S95        [        R                  " UR                  [        R                  " S/[        R                  S95        [        S[        R                  " / S	Q[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " SS/[        R                  S95        [        R                  " UR                  [        R                  " S
S/[        R                  S95        g r   r   r   s     r   r   "TestBlockIndex.test_block_internalh  r   r
   r   )r   r   d   e   c           
         [        U[        R                  " SUS[        R                  S9SS9n[        R                  " SUS[        R                  S9n[        R
                  " UR                  U5        [        R
                  " UR                  [        R                  " [        U5      [        R                  S95        g )Nr   r   r-   r   r{   )
r   r4   aranger6   r1   r2   r3   r7   oneslen)r:   r   r   rU   s       r   test_make_block_boundary'TestBlockIndex.test_make_block_boundary  sv    299Q1BHH#EGTii1arxx0
##CIIs3
##CLL"''#c("((2STr
   c                     [        SSS/SS/5      nUR                  U5      (       d   eUR                  [        SSS/SS/5      5      (       a   eg )Nr   r   r   r   r   r   )r   rN   r:   indexs     r   test_equalsTestBlockIndex.test_equals  sV    21v1v.||E""""<<
21v1v >?????r
   c                 P   / n/ n[        SX5        [        SX5        Sn[        R                  " [        US9   [        SS/S/5        S S S 5        Sn[        R                  " [        US9   [        SSS/SS	/5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)
Nr   r   zBlock 0 extends beyond endrL   r   r   zBlock 0 overlapsr   r   )r   rO   rP   rQ   )r:   locslengthsrV   s       r   test_check_integrity#TestBlockIndex.test_check_integrity  s     	1d$ 	1d$*]]:S1rA3% 2 !]]:S1rAq6Aq6* 21	 21 21s   B+B
B
B%c                     SS/nSS/n/ SQn[        SX5      nUR                  5       n[        R                  " UR                  [
        R                  " U[
        R                  S95        g )Nr   r   r   r   )
r   r   r   r   r   r   r   r+   r   r   r   r-   )r   r8   r1   r2   r9   r4   r5   r6   )r:   r   r   exp_indsr   denses         r   test_to_int_index TestBlockIndex.test_to_int_index  sV    2wa&72t-""$
##EMM288HBHH3UVr
   c                 P    [        SSS/SS/5      nUR                  5       UL d   eg )Nr   r   r   r   )r   rl   r   s     r   test_to_block_index"TestBlockIndex.test_to_block_index  s/    21v1v.##%...r
   r	   N)rY   rZ   r[   r\   r   rO   r]   r^   r   r   r   r   r   r_   r	   r
   r   r   r   g  sF    T2 [[S"34U 5U@+$W/r
   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestIntIndexi  c                    Sn[         R                  " [        US9   [        S/ SQS9  S S S 5        Sn[         R                  " [        US9   [        S/ SQS9  S S S 5        Sn[         R                  " [        US9   [        S/ SQS9  S S S 5        S	n[         R                  " [        US9   [        S/ S
QS9  S S S 5        [         R                  " [        US9   [        S/ SQS9  S S S 5        Sn[         R                  " [        US9   [        S/ SQS9  S S S 5        [         R                  " [        US9   [        S/ SQS9  S S S 5        g ! , (       d  f       GN,= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NzToo many indicesrL   r   )r   r   r   )lengthr9   zNo index can be less than zeror   )r   r   z(All indices must be less than the length)r   r   r   )r   r   r   z#Indices must be strictly increasing)r   r   r   )r   r   r   )rO   rP   rQ   r   )r:   rV   s     r   r   !TestIntIndex.test_check_integrity  s4    ]]:S1Ay1 2 /]]:S1Az2 2 /]]:S1Az2 2 9]]:S1Ay1 2 ]]:S1Ay1 2 4]]:S1Ay1 2 ]]:S1Ay1 21= 21 21 21 21 21 21 21sS   EE <E2,FF
F%8F6
E 
E/2
F 
F
F"%
F36
Gc                    [        S[        R                  " SS/[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " SS/[        R                  S95        [        S[        R                  " / [        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " / [        R                  S95        [        S[        R                  " / SQ[        R                  S9SS9n[	        U[
        5      (       d   eUR                  S:X  d   e[        R                  " UR                  [        R                  " / SQ[        R                  S95        g ry   r~   r   s     r   r   TestIntIndex.test_int_internal  r   r
   c                     [        S/ SQ5      nUR                  U5      (       d   eUR                  [        S/ SQ5      5      (       a   eg )Nr   rJ   r}   )r   rN   r   s     r   r   TestIntIndex.test_equals  sB    _-||E""""<<\ :;;;;;r
   c                 H   Uu  p4pV  n[        X#U5      n[        X%U5      n	UR                  5       R                  5       n
U	R                  5       R                  5       n[        U
[         5      (       d   eU
R	                  U5      (       d   eUR	                  U	5      (       d   eg r#   )r   r8   rl   r0   rN   )r:   r&   r   r;   r<   r=   r>   _rA   rB   xbindexybindexs               r   r    TestIntIndex.test_to_block_index  s    ',$D1Kt4Kt4 %%'668%%'668':....~~f%%%%~~f%%%%r
   c                 J    [        S/ SQ5      nUR                  5       UL d   eg )Nr   )r   r   r   r   r   )r   r8   r   s     r   r   TestIntIndex.test_to_int_index  s%    _-!!#u,,,r
   r	   N)
rY   rZ   r[   r\   r   r   r   r   r   r_   r	   r
   r   r   r     s    #2JY$<

&-r
   r   c                   \    \ rS rSr\R
                  R                  S/ SQ5      S 5       rSrg)TestSparseOperatorsi  opname)addsubmultruedivfloordivc                 &   Uu  pEpg  n[        [        SU S35      n	[        [        U5      n
[        X4U5      n[        X6U5      nUR	                  5       nUR	                  5       n[
        R                  " UR                  5      S-  S-   n[
        R                  " UR                  5      S-  S-   nSnSnU	" XUUUU5      u  nnnU	" XUUUU5      u  nnnUR	                  5       R                  U5      (       d   e[        R                  " UU5        UU:X  d   e[        XR                  5      nUR                  [
        R                  " U5      5      R                  U5      n[        UUR                  5      nUR                  [
        R                  " U5      5      R                  U5      nU
" UU5      nUR                  UR                  5      n[        R                  " UUR                  5        [        R                  " UUR                  5        g )Nsparse__float64g      $@r   g      Y@r   r   )getattrspliboperatorr   r8   r4   r   r   rN   r1   r2   r   r9   reindexfillnavalues)r:   r   r&   r   r;   r<   r=   r>   r   	sparse_op	python_oprA   rB   xdindexydindexxyxfillyfillresult_block_valsrb_indexbfillresult_int_valsri_indexifillxseriesyseriesseries_results                               r   test_opTestSparseOperators.test_op  s   ',$D1EWVHH#=>	Hf-	Kt4Kt4%%'%%'IIfnn%,q0IIfnn%-1-6ua.
*8U ,5q'5,
(5 $$&--h7777
##$5G~~ OO,//"))K"89@@GGOO,//"))K"89@@G!'73%--h.>.>?
##$5}7K7KL
##O]5I5IJr
   r	   N)	rY   rZ   r[   r\   rO   r]   r^   r   r_   r	   r
   r   r   r     s)    [[X'ST'K U'Kr
   r   )r   numpyr4   rO   pandas._libs.sparse_libssparser   pandas.util._test_decoratorsutil_test_decoratorsrs   pandasr   pandas._testing_testingr1   pandas.core.arrays.sparser   r   r   fixturer   r&   r(   ra   rv   r   r   r   r	   r
   r   <module>r      s      # # ) )       	
 FFCCCC	
 CDFFFF	
 DCGFDC	
 GFGF	
 CC	
S1d	g;xy;xX Xv-1 -1`B. B.JF/ F/RK- K-\)K )Kr
   