
    bMh]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dS )$    N)Series)
BlockIndexIntIndexmake_sparse_indexc                      dS )N    r	       i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/arrays/sparse/test_libsparse.pytest_lengthr      s    2r
   )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                   X   e Zd Ze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dS )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          |||          }	|                    |	          }
t          |
t                     sJ t          j        |
j        t          j        |t          j                             t          j        |
j	        t          j        |t          j                             |
                                }|	
                                }|                    |          }t          |t                    sJ t          j        |j        |

                                j                   d S )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4Kt44##F++':.....
#GM28D3Q3Q3QRRR
#G$4bht286T6T6TUUU%%''%%''$$W--'8,,,,,
#GOW5I5I5K5K5STTTTTr
   c                 $   t          dt          j        g dt          j                            }t          dt          j        ddgt          j                            }|                    |          }t          dt          j        g dt          j                            }|                    |          sJ t          dt          j        g t          j                            }t          dt          j        ddgt          j                            }|                    |          }t          dt          j        ddgt          j                            }|                    |          sJ t          dt          j        g t          j                            }t          dt          j        g t          j                            }|                    |          }t          dt          j        g t          j                            }|                    |          sJ t          dt          j        g dt          j                            }t          dt          j        g dt          j                            }|                    |          }t          dt          j        g dt          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  |                    |           d d d            d S # 1 swxY w Y   d S )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   s   Q"(;;;<<Q!Qrx88899ll1ooq"(<<<::;;zz#Q2844455Q!Qrx88899ll1ooq"(Aq6284455zz#Q2844455Q2844455ll1ooq"(2rx0011zz#QAAABBQAAABBll1ooq"(???BH==>>zz#Q!Qrx88899Q!Qrx88899=]:S111 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   "NN	N	N)__name__
__module____qualname__rM   markparametrizerF   rU   r	   r
   r   r(   r(   W   si       [,S1#sQC!qc*Wq!fq"g1v{{{IIIFS1#sQC!qc*Wq!fqcA3bT2VaVaS1#sRD1Wq!fq"g1vsRD9S2$


IIIsRD9Wq!fq"g1v~~~|||L		
 *U *U *UX    r
   r(   c                      e Zd Zej        d             Zd Ze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dS )TestSparseIndexIntersectc                 0   |\  }}}}}}t          |||          }	t          |||          }
t          |||          }t          |dz   ||          }|	                    |
          }|                    |          sJ |	                                                    |
                                          }|                    |                                          sJ d}t	          j        t          |          5  |	                    |           d d d            n# 1 swxY w Y   t	          j        t          |          5  |	                                                    |                                           d d d            d S # 1 swxY w Y   d S )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   s   -2*dD$dKt44Kt44k466!+/4>>!!&))}}X&&&&&$$&&001D1D1F1FGG}}X224455555=]9C000 	+ 	+\***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]9C000 	I 	I!!++L,E,E,G,GHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is$   <DD"%D":FFFc                 b   t          dt          j        g t          j                            }t          dt          j        ddgt          j                            }|                    |                              |          sJ |                    |                              |          sJ |                                }|                                }|                    |                              |          sJ |                    |                              |          sJ d S )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   !RXb999::!RXq!fBH===>>''..v66666''..v66666&&((&&((''..v66666''..v6666666r
   caser   r   r   r,   )r   r   r   r   c                     |                     |                              |          sJ |                                }|                     |                              |          sJ d S r#   )r^   rL   re   )r9   rg   s     r   test_intersect_identicalz1TestSparseIndexIntersect.test_intersect_identical   sg     ~~d##**400000""$$~~d##**40000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 I$	7 	7 	7 [ HQ!Qrx88899HQ"(;;;<<HQ2844455HQ2844455	

 
1 1
 
1 1 1r
   r\   c                   6   e Zd Zd Zd Zej                            dddg          d             Zej                            dddg          d             Z	e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
dS )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                             d S 	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   }   28QF"(#C#C#C)TTT#x((((({a
#CK1a&1Q1Q1QRRR28Bbh#?#?#?iPPP#x((((({a
#CK"BH1M1M1MNNNrxBH555I
 
 
 #x((((({a
#CK,,,bh1W1W1WXXXXXr
   c                 B   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                             d S 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      28QF"(#C#C#C'RRR#z*****{a
#CIrx28/L/L/LMMM
#CL"(A3bh2O2O2OPPP28Bbh#?#?#?gNNN#z*****{a
#CIrx"(/K/K/KLLL
#CL"(2RX2N2N2NOOO28LLL#I#I#IPWXXX#z*****{a
#CIrx28/L/L/LMMM
#CL"(A3bh2O2O2OPPP28IIIRX#F#F#FWUUU#z*****{a
#CIrxAbh/O/O/OPPP
#CL"(Aq62R2R2RSSSSSr
   rr   rp   r|   c                    t          dt          j        ddgt          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          dk    sJ t          dt          j        g t          j                  |          }t          dd	          D ]}|                    |          dk    sJ t          dt          j        g d
t          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          dk    sJ t          dt          j        g dt          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          dk    sJ d S )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  s   28QF"(#C#C#C$OOOzz"~~####zz!}}""""zz!}}""""zz!}}!!!!zz!}}!!!!zz!}}""""28Bbh#?#?#?dKKKr1 	' 	'A::a==B&&&&&28LLL#I#I#IPTUUUzz"~~####zz!}}!!!!zz!}}!!!!zz!}}!!!!zz!}}!!!!zz!}}""""28IIIRX#F#F#FTRRRzz"~~####zz!}}!!!!zz!}}""""zz!}}!!!!zz!}}!!!!zz!}}""""""r
   c                 z   t          dt          j        ddgt          j                  |          }|                    t          j        g dt          j                            }t          j        g dt          j                  }t          j        ||           |                    t          j        g dt          j                            }t          j        g d	t          j                  }t          j        ||           t          dt          j        g t          j                  |          }|                    t          j        g d
t          j                            }t          j        g dt          j                  }t          j        ||           t          dt          j        g dt          j                  |          }|                    t          j        g dt          j                            }t          j        g dt          j                  }t          j        ||           |                    t          j        g dt          j                            }t          j        g dt          j                  }t          j        ||           t          dt          j        g dt          j                  |          }|                    t          j        g dt          j                            }t          j        g dt          j                  }t          j        ||           |                    t          j        g dt          j                            }t          j        g dt          j                  }t          j        ||           d S )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-  s   28QF"(#C#C#C$OOOrx


"(CCCDDh{{{"(333
#C---rxBHEEEFFh~~~RX666
#C---28Bbh#?#?#?dKKKrxRXFFFGGh'''rx888
#C---28LLL#I#I#IPTUUUrx


"(CCCDDhzzz222
#C---rxBHEEEFFh}}}BH555
#C---28IIIRX#F#F#FTRRRrxBHEEEFFh}}}BH555
#C---rxBHEEEFFhbh77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          }|                    |          |k    sJ |                                }|                    |          |k    sJ d S )Nr   r   r   r   r   )r   r   r7   )r9   rw   r`   bindexiindexs        r   test_lookup_basicsz(TestSparseIndexCommon.test_lookup_basicsP  sn      BB!Q0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 Y Y$T T T2 [Vi%9::# # ;:#< [Vi%9:: .  . ;: .D [GFFGGHHGGH	
 . . . . .r
   rm   c                   x    e Zd Zd Zej                            dg d          d             Zd Zd Z	d Z
d Zd	S )
TestBlockIndexc                 B   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                             d S r{   r~   rv   s     r   r   z"TestBlockIndex.test_block_internalh  r   r
   r   )r   r   d   e   c           	      l   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                             d S )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  s    29Q1BH#E#E#EGTTTi1arx000
#CIs333
#CL"'#c(("(2S2S2STTTTTr
   c                     t          dddgddg          }|                    |          sJ |                    t          dddgddg                    rJ d S )Nr   r   r   r   r   r   )r   rL   r9   indexs     r   test_equalszTestBlockIndex.test_equals  se    21v1v..||E"""""<<
21v1v > >???????r
   c                 x   g }g }t          d||           t          d||           d}t          j        t          |          5  t          ddgdg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dddgdd	g           d d d            d S # 1 swxY w Y   d S )
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  sS    	1dG$$$ 	1dG$$$*]:S111 	& 	&rA3%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& !]:S111 	+ 	+rAq6Aq6***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s$   A$$A(+A(B//B36B3c                     ddg}ddg}g d}t          d||          }|                                }t          j        |j        t          j        |t
          j                             d S )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  sm    2wa&7772tW--""$$
#EM28HBH3U3U3UVVVVVr
   c                 `    t          dddgddg          }|                                |u sJ d S )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  s        T T T2 [S"3"3"344U U 54U@ @ @+ + +$W W W/ / / / /r
   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestIntIndexc                    d}t          j        t          |          5  t          dg d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dg d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dg d           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  t          dg d
           d d d            n# 1 swxY w Y   t          j        t          |          5  t          dg d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          dg d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          dg d           d d d            d S # 1 swxY w Y   d S )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  s    ]:S111 	2 	2Ayyy1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 /]:S111 	3 	3Azzz2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 /]:S111 	3 	3Azzz2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 9]:S111 	2 	2Ayyy1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 ]:S111 	2 	2Ayyy1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 4]:S111 	2 	2Ayyy1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 ]:S111 	2 	2Ayyy1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s{   >AA&BB
B
.CCC6DDD<EE #E F$$F(+F(
G++G/2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                             d S ro   rt   rv   s     r   rx   zTestIntIndex.test_int_internal  ry   r
   c                     t          dg d          }|                    |          sJ |                    t          dg d                    rJ d S )Nr   rH   rs   )r   rL   r   s     r   r   zTestIntIndex.test_equals  sY    ___--||E"""""<<\\\ : :;;;;;;;r
   c                 ~   |\  }}}}}}t          |||          }t          |||          }	|                                                                }
|	                                                                }t          |
t                     sJ |
                    |          sJ |                    |	          sJ d S 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4Kt44 %%''6688%%''6688':.....~~f%%%%%~~f%%%%%%%r
   c                 Z    t          dg d          }|                                |u sJ d S )Nr   )r   r   r   r   r   )r   r7   r   s     r   r   zTestIntIndex.test_to_int_index  s8    ___--!!##u,,,,,,r
   N)rV   rW   rX   r   rx   r   r   r   r	   r
   r   r   r     sc        #2 #2 #2JY Y Y$< < <

& 
& 
&- - - - -r
   r   c                   Z    e Zd Zej                            dg d          d             ZdS )TestSparseOperatorsopname)addsubmultruedivfloordivc                 X   |\  }}}}}}t          t          d| d          }	t          t          |          }
t          |||          }t          |||          }|                                }|                                }t          j        |j                  dz  dz   }t          j        |j                  dz  dz   }d}d} |	||||||          \  }}} |	||||||          \  }}}|                                                    |          sJ t          j
        ||           ||k    sJ t          ||j                  }|                    t          j        |                                        |          }t          ||j                  }|                    t          j        |                                        |          } |
||          }|                    |j                  }t          j
        ||j                   t          j
        ||j                   d S )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E#=V#=#=#=>>	Hf--	Kt44Kt44%%''%%''Ifn%%,q0Ifn%%-1-6Yvua.
 .
*8U ,59wq'5,
 ,
(5 $$&&--h77777
#$5GGG~~~~ GO,,//")K"8"899@@GGGO,,//")K"8"899@@GG!	'733%--h.>??
#$5}7KLLL
#O]5IJJJJJr
   N)rV   rW   rX   rM   rY   rZ   r   r	   r
   r   r   r     sM        [X'S'S'STT'K 'K UT'K 'K '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      s6         # # # # # # # # # ) ) ) ) ) ) ) ) )                          JJIIJJIIJJII	
 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 X X X X X Xv-1 -1 -1 -1 -1 -1 -1 -1`B. B. B. B. B. B. B. B.JF/ F/ F/ F/ F/ F/ F/ F/RK- K- K- K- K- K- K- K-\)K )K )K )K )K )K )K )K )K )Kr
   