
    dNJ                        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 dZg dg dg dg dg d	g d
gZd dgddgdgdgdgdggZd gdgd dgddgd dgddggZdgdgd dgddgdgdggZd dgddgddgddgg g gZd gdgg g g g gZg g g g g g gZeeeeeegZg 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_index   )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_emptyc                   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 )TestSparseIndexUnion"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          ||          }|                    |          }	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   TEST_LENGTH
make_union
isinstancetmassert_numpy_array_equalblocsnparrayint32blengthsto_int_indexr   indices)selfxlocxlenylocylenelocelenxindexyindexbresultixindexiyindexiresults                e/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/arrays/sparse/test_libsparse.pytest_index_make_unionz*TestSparseIndexUnion.test_index_make_union[   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T    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   r)   r*   r+   r$   equalspytestraises
ValueError)r/   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__rE   markparametrizer=   rM    r>   r<   r   r   Z   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        ej                            dee	          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 )TestSparseIndexIntersectr   idsc                 F   t          t          ||          }t          t          ||          }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   rA   rB   )r   r#   	intersectrD   r-   rE   rF   	Exception)r/   r0   r1   r2   r3   r4   r5   r6   r7   expectedlonger_indexresultrL   s                r<   test_intersectz'TestSparseIndexIntersect.test_intersect   s    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-0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   r)   r*   r+   rY   rD   to_block_index)r/   r6   r7   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 N)rY   rD   r`   )r/   rb   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)rN   rO   rP   tdskip_if_windowsrE   rQ   rR   CASESIDSr^   ra   r   r)   r*   r+   re   rS   r>   r<   rU   rU      s/       [A5cRRI I SR 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>   rU   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   r)   r*   r+   r%   r   npointsr&   r'   r.   r/   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!   blockro   r   rq   r   r   r
   r   r   r)   r*   r+   r%   r   rs   r&   r'   r(   r,   rt   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>   rp   rn   rz   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!   ro   r   r   r   rq   r{   )r   r)   r*   r+   lookuprange)r/   rp   ru   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!   ro   )r   r   r   )r   r   r   )r   r   r   r
   )r   r   r   r   )r   r   r   r   )r   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   r)   r*   r+   lookup_arrayr&   r'   )r/   rp   ru   rJ   rK   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   r-   )r/   ru   r[   bindexiindexs        r<   test_lookup_basicsz(TestSparseIndexCommon.test_lookup_basicsQ  sn      BB!Q00}}S!!X----$$&&}}S!!X------r>   N)rN   rO   rP   rv   r}   rE   rQ   rR   r   r   r   rS   r>   r<   rk   rk      s       Y Y Y$T T T2 [Vi%9::# # ;:#< [Vi%9:: .  . ;: .D [GFFGGHHGGH	
 . . . . .r>   rk   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 ry   r|   rt   s     r<   r}   z"TestBlockIndex.test_block_internali  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!   rz   ro   )
r   r)   aranger+   r&   r'   r(   r,   oneslen)r/   r   ru   rK   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   rD   r/   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 endrB   r   r   zBlock 0 overlapsr   r
   )r   rE   rF   rG   )r/   locslengthsrL   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   r-   r&   r'   r.   r)   r*   r+   )r/   r   r   exp_indsrz   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   r`   r   s     r<   test_to_block_indexz"TestBlockIndex.test_to_block_index  s>    21v1v..##%%......r>   N)rN   rO   rP   r}   rE   rQ   rR   r   r   r   r   r   rS   r>   r<   r   r   h  s        T T T2 [S"3"3"344U U 54U@ @ @+ + +$W W W/ / / / /r>   r   c                   r    e Zd Zd Zd Zd Zej                            de	e
          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 indicesrB   r   )r   r   r
   )lengthr.   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
   )rE   rF   rG   r   )r/   rL   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 rm   rr   rt   s     r<   rv   zTestIntIndex.test_int_internal  rw   r>   c                     t          dg d          }|                    |          sJ |                    t          dg d                    rJ d S )Nr   r@   rq   )r   rD   r   s     r<   r   zTestIntIndex.test_equals  sY    ___--||E"""""<<\\\ : :;;;;;;;r>   r   rV   c                    t          t          ||          }t          t          ||          }|                                                                }	|                                                                }
t	          |	t                     sJ |	                    |          sJ |
                    |          sJ d S rd   )r   r#   r-   r`   r%   rD   )r/   r0   r1   r2   r3   r4   r5   r6   r7   xbindexybindexs              r<   r   z TestIntIndex.test_to_block_index  s    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   r-   r   s     r<   r   zTestIntIndex.test_to_int_index  s8    ___--!!##u,,,,,,r>   N)rN   rO   rP   r   rv   r   rE   rQ   rR   rh   ri   r   r   rS   r>   r<   r   r     s        #2 #2 #2JY Y Y$< < <
 [A5cRR	& 	& SR	&- - - - -r>   r   c                       e Zd Zej                            dg d          ej                            dee          d                         ZdS )TestSparseOperatorsopname)addsubmultruedivfloordivr   rV   c                 n   t          t          d| d          }t          t          |          }	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                                                  |          }t          ||j                  }|                    t          j        t                                                  |          } |	||          }|                    |j                  }t          j        ||j                   t          j        ||j                   d S )Nsparse__float64g      $@r   g      Y@r   r   )getattrspliboperatorr   r#   r-   r)   r   rs   rD   r&   r'   r   r.   reindexfillnavalues)r/   r   r0   r1   r2   r3   r4   r5   	sparse_op	python_opr6   r7   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    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)	rN   rO   rP   rE   rQ   rR   rh   ri   r   rS   r>   r<   r   r     sq        [X'S'S'STT[A5cRR&K &K SR UT&K &K &Kr>   r   )%r   numpyr)   rE   pandas._libs.sparse_libssparser   pandas.util._test_decoratorsutil_test_decoratorsrf   pandasr   pandas._testing_testingr&   pandas.core.arrays.sparser   r   r   r#   r   r   r   r   r   r   
both_emptyrh   ri   r   rU   rk   r   r   r   rS   r>   r<   <module>r      s!         # # # # # # # # # ) ) ) ) ) ) ) ) )                       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	 
 
]L*lIV  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>   