
    JEf]K                        d dl Z d dlZd dlZd dlmc mZ d dlm	c m
Z d dlmZ d dlmZ d dlmZmZmZ ej*                  d        Z ej*                  g dg dg dg dg d	g d
gd dgddgdgdgdgdggd gdgd dgddgd dgddggdgdgd dgddgdgdggd dgddgddgddgg g gd gdgg g g g ggg d      d        Z G d d      Z G d d      Z G d d      Z G d d      Z G d  d!      Z G d" d#      Zy)$    N)Series)
BlockIndexIntIndexmake_sparse_indexc                       y)N    r	       b/var/www/VTS_Report/venv/lib/python3.12/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                     | j                   S N)param)requests    r   casesr&      s    z ==r
   c                   R   e Zd Zej                  j                  ddgdgdgdgdgdggddgddgddgddgg d	g d
gdgdgdgdgdgdggddgddgdgdgdgdggddgddgdgdgdgdggddgddgddgddgdgdggdgdgg dg ddgdggddgddgddgddgg dg dgg      d        Zd Zy)TestSparseIndexUnionz"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                    t        |||      }t        |||      }	|j                  |	      }
t        |
t               sJ t        j                  |
j
                  t        j                  |t        j                               t        j                  |
j                  t        j                  |t        j                               |j                         }|	j                         }|j                  |      }t        |t              sJ t        j                  |j                  |
j                         j                         y )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_unionz*TestSparseIndexUnion.test_index_make_unionX   s    X Kt4Kt4##F+':...
##GMM288D3QR
##G$4$4bhht2886TU%%'%%'$$W-'8,,,
##GOOW5I5I5K5S5STr
   c                    t        dt        j                  g dt        j                              }t        dt        j                  ddgt        j                              }|j	                  |      }t        dt        j                  g dt        j                              }|j                  |      sJ t        dt        j                  g t        j                              }t        dt        j                  ddgt        j                              }|j	                  |      }t        dt        j                  ddgt        j                              }|j                  |      sJ t        dt        j                  g t        j                              }t        dt        j                  g t        j                              }|j	                  |      }t        dt        j                  g t        j                              }|j                  |      sJ t        dt        j                  g dt        j                              }t        dt        j                  g dt        j                              }|j	                  |      }t        dt        j                  g dt        j                              }|j                  |      sJ t        dt        j                  ddgt        j                              }t        d	t        j                  ddgt        j                              }d
}t        j                  t        |      5  |j	                  |       d d d        y # 1 sw Y   y xY w)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   r3   r4   r5   r.   equalspytestraises
ValueError)r9   abresexpmsgs         r   test_int_index_make_unionz.TestSparseIndexUnion.test_int_index_make_union   s7   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	 	 	s   M++M4N)__name__
__module____qualname__rM   markparametrizerF   rU   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                      e Zd Zej                  d        Zd Zej                  j                  d e
d ej                  ddgej                               e
d ej                  g dej                               e
d	 ej                  g ej                               e
d ej                  g ej                              g      d
        Zy)TestSparseIndexIntersectc                    |\  }}}}}}t        |||      }	t        |||      }
t        |||      }t        |dz   ||      }|	j                  |
      }|j                  |      sJ |	j                         j                  |
j                               }|j                  |j                               sJ d}t	        j
                  t        |      5  |	j                  |       d d d        t	        j
                  t        |      5  |	j                         j                  |j                                d d d        y # 1 sw Y   [xY w# 1 sw Y   y xY w)Nr   rI   rJ   )r   	intersectrL   r7   rM   rN   	Exception)r9   r&   r   r:   r;   r<   r=   r>   r?   r@   rA   expectedlonger_indexresultrT   s                  r   test_intersectz'TestSparseIndexIntersect.test_intersect   s2   -2*dD$dKt4Kt4k46!+/4>!!&)}}X&&&$$&001D1D1FG}}X224555=]]9C0 	+\*	+]]9C0 	I!++L,E,E,GH	I 	I	+ 	+	I 	Is   D<.E<EEc                    t        dt        j                  g t        j                              }t        dt        j                  ddgt        j                              }|j	                  |      j                  |      sJ |j	                  |      j                  |      sJ |j                         }|j                         }|j	                  |      j                  |      sJ |j	                  |      j                  |      sJ y )Nr   r,   r   r   )r   r3   r4   r5   r^   rL   to_block_index)r9   r@   rA   s      r   test_intersect_emptyz-TestSparseIndexIntersect.test_intersect_empty   s    !RXXb9:!RXXq!fBHH=>'..v666'..v666&&(&&('..v666'..v666r
   caser   r   r   r,   )r   r   r   r   c                     |j                  |      j                  |      sJ |j                         }|j                  |      j                  |      sJ y r#   )r^   rL   re   )r9   rg   s     r   test_intersect_identicalz1TestSparseIndexIntersect.test_intersect_identical   sL     ~~d#**4000""$~~d#**4000r
   N)rV   rW   rX   tdskip_if_windowsrc   rf   rM   rY   rZ   r   r3   r4   r5   ri   r	   r
   r   r\   r\      s    I I$	7 [[ Q!Qrxx89Q"((;<Q28845Q28845	

1
1r
   r\   c                   (   e Zd Zd Zd Zej                  j                  dddg      d        Zej                  j                  dddg      d        Z	ej                  j                  dd	d
gdd	gddgdd
gdd
gdd
gdd
gddgddgdd
gg
      d        Z
y)TestSparseIndexCommonc                    t        dt        j                  ddgt        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  ddgt        j                               t        dt        j                  g t        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  g t        j                               t        dt        j                  g dt        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  g dt        j                               y 	Nr   r   r   r,   integerkindr   r   r   r   r   
r   r3   r4   r5   r/   r   npointsr0   r1   r8   r9   idxs     r   test_int_internalz'TestSparseIndexCommon.test_int_internal   5   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                    t        dt        j                  ddgt        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  dgt        j                               t        j                  |j                  t        j                  dgt        j                               t        dt        j                  g t        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  g t        j                               t        j                  |j                  t        j                  g t        j                               t        dt        j                  g dt        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  dgt        j                               t        j                  |j                  t        j                  dgt        j                               t        dt        j                  g d	t        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  ddgt        j                               t        j                  |j                  t        j                  d
dgt        j                               y Nr   r   r   r,   blockrq   r   rs   r   r   r   r   r   r3   r4   r5   r/   r   ru   r0   r1   r2   r6   rv   s     r   test_block_internalz)TestSparseIndexCommon.test_block_internal   +   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
   rr   rp   r|   c                    t        dt        j                  ddgt        j                        |      }|j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ t        dt        j                  g t        j                        |      }t        dd	      D ]  }|j	                  |      dk(  rJ  t        dt        j                  g d
t        j                        |      }|j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ t        dt        j                  g dt        j                        |      }|j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ y )Nr   r   r   r,   rq   r   r   r   rs   r}   )r   r3   r4   r5   lookuprange)r9   rr   rw   is       r   test_lookupz!TestSparseIndexCommon.test_lookup  s4   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                    t        dt        j                  ddgt        j                        |      }|j	                  t        j                  g dt        j                              }t        j                  g dt        j                        }t        j                  ||       |j	                  t        j                  g dt        j                              }t        j                  g d	t        j                        }t        j                  ||       t        dt        j                  g t        j                        |      }|j	                  t        j                  g d
t        j                              }t        j                  g dt        j                        }t        j                  ||       t        dt        j                  g dt        j                        |      }|j	                  t        j                  g dt        j                              }t        j                  g dt        j                        }t        j                  ||       |j	                  t        j                  g dt        j                              }t        j                  g dt        j                        }t        j                  ||       t        dt        j                  g dt        j                        |      }|j	                  t        j                  g dt        j                              }t        j                  g dt        j                        }t        j                  ||       |j	                  t        j                  g dt        j                              }t        j                  g dt        j                        }t        j                  ||       y )Nr   r   r   r,   rq   )r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   rs   )r   r   r   r   r}   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r3   r4   r5   lookup_arrayr0   r1   )r9   rr   rw   rR   rS   s        r   test_lookup_arrayz'TestSparseIndexCommon.test_lookup_array-  sQ   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                     t        dddgddg      }|j                  |      |k(  sJ |j                         }|j                  |      |k(  sJ y )Nr   r   r   r   r   )r   r   r7   )r9   rw   r`   bindexiindexs        r   test_lookup_basicsz(TestSparseIndexCommon.test_lookup_basicsP  sV      BB!Q0}}S!X---$$&}}S!X---r
   N)rV   rW   rX   rx   r   rM   rY   rZ   r   r   r   r	   r
   r   rm   rm      s    Y$T2 [[Vi%9:# ;#< [[Vi%9: . ; .D [[GFFGGHHGGH	
..r
   rm   c                   r    e Zd Zd Zej
                  j                  dg d      d        Zd Zd Z	d Z
d Zy	)
TestBlockIndexc                    t        dt        j                  ddgt        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  dgt        j                               t        j                  |j                  t        j                  dgt        j                               t        dt        j                  g t        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  g t        j                               t        j                  |j                  t        j                  g t        j                               t        dt        j                  g dt        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  dgt        j                               t        j                  |j                  t        j                  dgt        j                               t        dt        j                  g d	t        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  ddgt        j                               t        j                  |j                  t        j                  d
dgt        j                               y r{   r~   rv   s     r   r   z"TestBlockIndex.test_block_internalh  r   r
   r   )r   r   d   e   c           	         t        |t        j                  d|dt        j                        d      }t        j                  d|dt        j                        }t	        j
                  |j                  |       t	        j
                  |j                  t        j                  t        |      t        j                               y )Nr   r   r,   r|   rq   )
r   r3   aranger5   r0   r1   r2   r6   oneslen)r9   r   rw   rS   s       r   test_make_block_boundaryz'TestBlockIndex.test_make_block_boundary  sv    299Q1BHH#EGTii1arxx0
##CIIs3
##CLL"''#c("((2STr
   c                     t        dddgddg      }|j                  |      sJ |j                  t        dddgddg            rJ y )Nr   r   r   r   r   r   )r   rL   r9   indexs     r   test_equalszTestBlockIndex.test_equals  sP    21v1v.||E"""<<
21v1v >????r
   c                 H   g }g }t        d||       t        d||       d}t        j                  t        |      5  t        ddgdg       d d d        d}t        j                  t        |      5  t        dddgdd	g       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)
Nr   r   zBlock 0 extends beyond endrJ   r   r   zBlock 0 overlapsr   r   )r   rM   rN   rO   )r9   locslengthsrT   s       r   test_check_integrityz#TestBlockIndex.test_check_integrity  s     	1dG$ 	1dG$*]]:S1 	&rA3%	& !]]:S1 	+rAq6Aq6*	+ 	+		& 	&	+ 	+s   B1BBB!c                     ddg}ddg}g d}t        d||      }|j                         }t        j                  |j                  t        j                  |t
        j                               y )Nr   r   r   r   )
r   r   r   r   r   r   r   r*   r   r   r   r,   )r   r7   r0   r1   r8   r3   r4   r5   )r9   r   r   exp_indsr|   denses         r   test_to_int_indexz TestBlockIndex.test_to_int_index  sX    2wa&72tW-""$
##EMM288HBHH3UVr
   c                 N    t        dddgddg      }|j                         |u sJ y )Nr   r   r   r   )r   re   r   s     r   test_to_block_indexz"TestBlockIndex.test_to_block_index  s/    21v1v.##%...r
   N)rV   rW   rX   r   rM   rY   rZ   r   r   r   r   r   r	   r
   r   r   r   g  sF    T2 [[S"34U 5U@+$W/r
   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestIntIndexc                    d}t        j                  t        |      5  t        dg d       d d d        d}t        j                  t        |      5  t        dg d       d d d        d}t        j                  t        |      5  t        dg d       d d d        d	}t        j                  t        |      5  t        dg d
       d d d        t        j                  t        |      5  t        dg d       d d d        d}t        j                  t        |      5  t        dg d       d d d        t        j                  t        |      5  t        dg d       d d d        y # 1 sw Y   ExY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   y xY w)NzToo many indicesrJ   r   )r   r   r   )lengthr8   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   )rM   rN   rO   r   )r9   rT   s     r   r   z!TestIntIndex.test_check_integrity  sg    ]]:S1 	2Ay1	2 /]]:S1 	3Az2	3 /]]:S1 	3Az2	3 9]]:S1 	2Ay1	2 ]]:S1 	2Ay1	2 4]]:S1 	2Ay1	2 ]]:S1 	2Ay1	2 	2=	2 	2	3 	3	3 	3	2 	2	2 	2	2 	2	2 	2sS   E1E>F=F0F#%F/F;1E;>FFF #F,/F8;Gc                    t        dt        j                  ddgt        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  ddgt        j                               t        dt        j                  g t        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  g t        j                               t        dt        j                  g dt        j                        d      }t	        |t
              sJ |j                  dk(  sJ t        j                  |j                  t        j                  g dt        j                               y ro   rt   rv   s     r   rx   zTestIntIndex.test_int_internal  ry   r
   c                     t        dg d      }|j                  |      sJ |j                  t        dg d            rJ y )Nr   rH   rs   )r   rL   r   s     r   r   zTestIntIndex.test_equals  s<    _-||E"""<<\ :;;;;r
   c                 2   |\  }}}}}}t        |||      }t        |||      }	|j                         j                         }
|	j                         j                         }t        |
t               sJ |
j	                  |      sJ |j	                  |	      sJ y r#   )r   r7   re   r/   rL   )r9   r&   r   r:   r;   r<   r=   _r@   rA   xbindexybindexs               r   r   z TestIntIndex.test_to_block_index  s    ',$dD$1Kt4Kt4 %%'668%%'668':...~~f%%%~~f%%%r
   c                 H    t        dg d      }|j                         |u sJ y )Nr   )r   r   r   r   r   )r   r7   r   s     r   r   zTestIntIndex.test_to_int_index  s%    _-!!#u,,,r
   N)rV   rW   rX   r   rx   r   r   r   r	   r
   r   r   r     s    #2JY$<

&-r
   r   c                   T    e Zd Zej                  j                  dg d      d        Zy)TestSparseOperatorsopname)addsubmultruedivfloordivc                    |\  }}}}}}t        t        d| d      }	t        t        |      }
t        |||      }t        |||      }|j	                         }|j	                         }t        j                  |j                        dz  dz   }t        j                  |j                        dz  dz   }d}d} |	||||||      \  }}} |	||||||      \  }}}|j	                         j                  |      sJ t        j                  ||       ||k(  sJ t        ||j                        }|j                  t        j                  |            j                  |      }t        ||j                        }|j                  t        j                  |            j                  |      } |
||      }|j                  |j                        }t        j                  ||j                         t        j                  ||j                         y )Nsparse__float64g      $@r   g      Y@r   r   )getattrspliboperatorr   r7   r3   r   ru   rL   r0   r1   r   r8   reindexfillnavalues)r9   r   r&   r   r:   r;   r<   r=   r   	sparse_op	python_opr@   rA   xdindexydindexxyxfillyfillresult_block_valsrb_indexbfillresult_int_valsri_indexifillxseriesyseriesseries_results                               r   test_opzTestSparseOperators.test_op  s   ',$dD$1EWVHH#=>	Hf-	Kt4Kt4%%'%%'IIfnn%,q0IIfnn%-1-6vua.
*8U ,5wq'5,
(5 $$&--h777
##$5G~~ GOO,//"))K"89@@GGOO,//"))K"89@@G!'73%--h.>.>?
##$5}7K7KL
##O]5I5IJr
   N)rV   rW   rX   rM   rY   rZ   r   r	   r
   r   r   r     s)    [[X'ST'K U'Kr
   r   )r   numpyr3   rM   pandas._libs.sparse_libssparser   pandas.util._test_decoratorsutil_test_decoratorsrj   pandasr   pandas._testing_testingr0   pandas.core.arrays.sparser   r   r   fixturer   r&   r(   r\   rm   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
   