
    EgA#                     ~    d dl Z d dlZd dlZd dlZd dlmZ d dlmZ	 d dl
mZ  G d d          Z G d d          ZdS )    N)SparseDtype)SparseArrayc            
           e Zd Zd Zej                            dg d          d             Zd Zej                            ddg dg d	d
ddfdg dg ddddfg          d             Z	d Z
dS )TestSeriesAccessorc                     t          j        g dd          }|j                                        }t          j        g d          }t	          j        ||           d S )N)r      r   
   zSparse[int64]dtype)pdSeriessparseto_densetmassert_series_equal)selfserresultexpecteds       ]/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/arrays/sparse/test_accessor.pytest_to_densez TestSeriesAccessor.test_to_dense   sY    i_===$$&&9]]]++
vx00000    attr)npointsdensity
fill_value	sp_valuesc                     t          ddg          }t          j        |          }t          |j        |          }t          ||          }||k    sJ d S )Nr   r   )r   r   r   getattrr   )r   r   arrr   r   r   s         r   test_get_attributesz&TestSeriesAccessor.test_get_attributes   sW    1a&!!innT**3%%!!!!!!r   c                    t          j        d          }g d}g d}g d}|                    |||ff          }t          j        j                            |          }t          j                            t          j
        g dt          j                  t          j
        g dt          j                  g          }t          j        g d|d	
          }t          j        ||           d S )Nscipy.sparse)r      r   r   )r   r$   r      )         	   )r   r   r   r$   r
   )r   r%   r   r$   )r&   r)   r(   r'   Sparse[int]indexr   )pytestimportorskip
coo_matrixr   r   r   from_coo
MultiIndexfrom_arraysnparrayint32r   r   )	r   scipy_sparserowcoldatasp_arrayr   r,   r   s	            r   test_from_cooz TestSeriesAccessor.test_from_coo   s    *>::llll||**D3*+=>>!**844))RX666RX666
 
 9\\\mLLL
vx00000r   z>sort_labels, expected_rows, expected_cols, expected_values_posF)br%   ar%   r=   r   r?   r   )zr   rC   r%   xr%   rC   r   )r   r   )r$   r$   )r   r$   T)rA   r>   r@   r<   )rE   rG   rB   rD   r   r%   r   r   c                 ,   t          j        d          }t          dt          j        ddd dgd          }t
          j                            g d          }t          j        ||          }t          j	        d          }	|
                                D ]\  }
\  }}|
|	||f<   |j                            d	d
|          \  }}}t          ||j                  sJ t          j        |                                |	           ||k    sJ ||k    sJ d S )Nr#   r   r   r$   r   ))r=   r%   rC   r   )r?   r%   rC   r%   )r?   r%   rC   r   )r?   r%   rF   r%   )r=   r   rC   r   )r?   r   rC   r   r,   )r&   r&   rI   )r%   r$   )
row_levelscolumn_levelssort_labels)r-   r.   r   r3   nanr   r1   from_tuplesr   zerositemsr   to_coo
isinstancer/   r   assert_numpy_array_equaltoarray)r   rO   expected_rowsexpected_colsexpected_values_pos	sp_sparsevaluesr,   ss
expected_Avaluer7   r8   Arowscolss                   r   test_to_coozTestSeriesAccessor.test_to_coo/   s<   ( '77	aAtQ7AFFF))  	
 	
 YvU+++Xf%%
!4!:!:!<!< 	) 	)E:C#(JsCx  	((V ) 
 
4 !Y122222
#AIIKK<<<}$$$$}$$$$$$r   c                     t          j        g d          }t          j        t          d          5  |j        j         d d d            d S # 1 swxY w Y   d S )N)r   r%   r$   z.sparsematch)r   r   r-   raisesAttributeErrorr   r   )r   r   s     r   test_non_sparse_raisesz)TestSeriesAccessor.test_non_sparse_raises^   s    i			""]>;;; 	 	J	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)__name__
__module____qualname__r   r-   markparametrizer!   r;   rc   ri    r   r   r   r      s        1 1 1 [V%V%V%VWW" " XW"1 1 1& [H 888888v&&	 888888v&&		
 "% %# "%<    r   r   c            
       \   e Zd Zd Zej                            dg d          ej                            dd eej	        dd                   g          ej                            ddd	g          d
                                     Z
ej                            dg d          d             Zej                            dddgej                            dgddgg          ddgg          d             Zej                            ddddej        fdddg          d             Zej                            ddej        g          d             Zd Zd Zd Zej                            dd	dg          ej                            ddd g          d!                         Zd" Zd# ZdS )$TestFrameAccessorc                     t          j        dddgi          }t          j        t          d          5  |j         d d d            d S # 1 swxY w Y   d S )Nr`   r   r   r   re   )r   	DataFramer-   rg   rh   r   r   dfs     r   test_accessor_raisesz&TestFrameAccessor.test_accessor_raisese   s    \3A-((]>::: 	 	II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A		AAformat)csccsrcoolabelsNr	   r   float64int64c                    t          j        d          }t          |t          j        d|                                                    }|                    d||          }t          j        j	        
                    |||          }t          j        t          j        d|          ||                              |          }t          j        ||           d S )Nr#   r   r
   r	   rw   r   )r,   columns)r-   r.   r   r3   r4   itemeyer   rs   r   from_spmatrixastyper   assert_frame_equal)	r   rw   r{   r   r[   sp_dtypematr   r   s	            r   test_from_spmatrixz$TestFrameAccessor.test_from_spmatrixj   s     '77	ubhq&>&>&>&C&C&E&EFFmmBvUm;;$223ff2UU<F2U###66
 
 

&

 	 	fh/////r   c                 x   t          j        d          }|                    ddd|          }d|j        d<   t          j        j                            |          }t          dd          }t	          j        |	                                          
                    |          }t          j        ||           d S )	Nr#   r	   r%         ?)r   rw   r   r|           )r-   r.   randomr9   r   rs   r   r   r   todenser   r   r   )r   rw   r[   r   r   r   r   s          r   *test_from_spmatrix_including_explicit_zeroz<TestFrameAccessor.test_from_spmatrix_including_explicit_zeroy   s    '77	r1c&AA$22377Is++<..55e<<
fh/////r   r   r?   r=   r`   c                 j   t          j        d          }t          dd          }|                    ddd          }t          j        j                            ||          }t	          j        |                                |          	                    |          }t          j        ||           d S )	Nr#   r|   r   r	   r%   r   )r   )r   )r-   r.   r   r   r   rs   r   r   rW   r   r   r   )r   r   r[   r   r   r   r   s          r   test_from_spmatrix_columnsz,TestFrameAccessor.test_from_spmatrix_columns   s    
 '77	Is++r1c22$2232HH<w???FFuMM
fh/////r   colnamesr`   BrH   r   )g?g?)rF   rF   )r   r   c                 $   t          j        d          }t          j        |d         g d|d         g did          }|j                                        }|                    t          j        |                    }||k    j	        dk    sJ d S )Nr#   r   )r   r   r   r   )r   r   r   zSparse[int64, 0]r
   )
r-   r.   r   rs   r   rT   r/   r3   asarraynnz)r   r   r[   ru   r   r   s         r   rc   zTestFrameAccessor.test_to_coo   s     '77	\a[)))Xa[)))<DV
 
 
 !!##''
277("'1,,,,,,r   r   c           	      B   t          j        d           t          j        t	          |||dg|          t	          |d||g|          d          }t          j        t          d          5  |j                                         d d d            d S # 1 swxY w Y   d S )Nscipyr%   rK   r   zfill value must be 0re   )	r-   r.   r   rs   r   rg   
ValueErrorr   rT   )r   r   ru   s      r   #test_to_coo_nonzero_fill_val_raisesz5TestFrameAccessor.test_to_coo_nonzero_fill_val_raises   s    G$$$\ Z;
   !J
;
  	 	
 	
 ]:-CDDD 	 	I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   -BBBc                 $   t          j        d          }t          j                            t          j        t          d          d          t          j        ddgd          g          }t          j        d|d	          }|j        	                    dgdg
          d         }|
                    t          j        ddg          t          j        ddg          t          j        ddg          ffd          }||k    j        dk    sJ d S )Nr#   abrF   )namer   r   yr*   r+   )rM   rN   )r%   r%   )shape)r-   r.   r   r1   r2   CategoricalIndexlistr   r   rT   r/   r3   r4   r   )r   r[   midxr   r   r   s         r   test_to_coo_midx_categoricalz.TestFrameAccessor.test_to_coo_midx_categorical   s   '77	}((#DJJS999#QF555
 
 i];;;""seC5"II!L''Xq!f!Q 0 0"(Aq62B2BCDF ( 
 
 ("'1,,,,,,r   c                    t          j        t          ddgt          dd                    t          ddgt          dd                    t          ddgt          dd                    dd	d
g          }|j                                        }t          j        ddgddgddgdd	d
g          }t          j        ||           d S )Nr   r   r}   r
   g      ?r   r|   )r`   r   Cr=   r?   rL   )r   rs   r   r   r   r   r   r   )r   ru   r   r   s       r   r   zTestFrameAccessor.test_to_dense   s    \ !Q{7A/F/FGGG !Q{7A/F/FGGG #s;y#3N3NOOO 
 *
 
 
 ##%%<a&1vS#J77Sz
 
 
 	fh/////r   c                     t          j        t          g dd          t          g dd          d          }|j        j        }d}||k    sJ d S )N)r   r   r%   r   r   rK   )r   r   r   r   r   g      ?)r   rs   r   r   r   )r   ru   resr   s       r   test_densityzTestFrameAccessor.test_density   sg    \ !<<< !<<< 
 
 ihr   dense_indexTFc                    t          j        d          }|                    dd|          }t          j        j                            ||          }t          j                            t          j
        ddgt          j                  t          j
        ddgt          j                  t          j
        d	d	gt          j                  g          }t          j        t          t          j
        g d
|                    |          }|r7|                    t          j                            |j                            }t!          j        ||           d S )Nr#   r$   rz   r   )r   r   r
   r   r%   )r   r   r   rL   )r-   r.   r   r   r   r   r0   r1   rQ   r3   r4   r5   r   reindexfrom_productlevelsr   r   )r   r   r   r[   r`   r   r,   r   s           r   test_series_from_cooz&TestFrameAccessor.test_series_from_coo   s%    '77	MM!EM77!**1+*FF))!Qrx000!Qrx000!Qrx000
 
 9[)))5)I)I)IJJRWXXX 	R''(B(B5<(P(PQQH
vx00000r   c                 8   t          j        d          }|                    t          j        ddgddgg                    }t          j        t          d          5  t          j        j	        
                    |           d d d            d S # 1 swxY w Y   d S )Nr#   r   r   z,Expected coo_matrix. Got csr_matrix instead.re   )r-   r.   
csr_matrixr3   r4   rg   	TypeErrorr   r   r   r0   )r   r[   ms      r   ,test_series_from_coo_incorrect_format_raisesz>TestFrameAccessor.test_series_from_coo_incorrect_format_raises   s    '77	  Aq6Aq6*:!;!;<<]K
 
 
 	) 	) I%%a(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   %BBBc                     t          j        dt           j                            ddg          i          }t	          |j        t           j        j        j        j        j                  sJ d S )Nr   r   r%   )	r   rs   arraysr   rU   r   coreaccessorSparseFrameAccessorrt   s     r   test_with_column_named_sparsez/TestFrameAccessor.test_with_column_named_sparse   sU    \8RY%:%:Aq6%B%BCDD")RW^%:%C%WXXXXXXXr   )rj   rk   rl   rv   r-   rm   rn   r   stringascii_lettersr   r   r   r1   r   r   NArc   r3   rP   r   r   r   r   r   r   r   ro   r   r   rq   rq   d   sh         
 [X'<'<'<==[Xdd63G3L.M.M'NOO[Wy'&:;;
0 
0 <; PO >=
0 [X'<'<'<==0 0 >=0 [
sR]//#c
0CDDsCjQ 0 0	 0 [Z!RUZVT - - - [\Arv;77  87- - -$0 0 0	 	 	 [Ww	&:;;[]T5M::1 1 ;: <;1&) ) )Y Y Y Y Yr   rq   )r   numpyr3   r-   pandasr   r   pandas._testing_testingr   pandas.core.arrays.sparser   r   rq   ro   r   r   <module>r      s                          1 1 1 1 1 1U U U U U U U UpYY YY YY YY YY YY YY YY YY YYr   