
    EgS*                     l    d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	m
Z d dlmZ  G d d          ZdS )    N)IntIndex)SparseDtypeisna)SparseArrayc            	          e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            d eed          eg          d	             Zd
 Zd Ze	j
                            dd eddg          g          d             Zd Ze	j
                            d ej        ddg          df ej        ddg          ej        fddgdf ej        d          gej        fg          d             Ze	j
                            dg d          e	j
                            dddg          d                         Ze	j
                            dg d          d             Zd Zd  Zd! Zd" Z d# Z!d$ Z"d% Z#dS )&TestConstructorsc                    t          t          j        ddt          j        g          }|j        t	          t          j        t          j                  k    sJ |j        j        t          j        k    sJ t          j        |j                  sJ t          t          j        ddt          j        gd          }|j        t	          t          j        d          k    sJ |j        dk    sJ t          g dt          j                  }|j        t	          t          j        t          j                  k    sJ t          j        |j                  sJ t          g dt          j	                  }|j        t	          t          j	        d          k    sJ |j        dk    sJ t          g ddt          j	                  }|j        t	          t          j	        d          k    sJ |j        dk    sJ t          g dd           }|j        t	          t          j	        d          k    sJ |j        dk    sJ t          g ddd           }|j        t	          t          j	        d          k    sJ |j        dk    sJ d S )N      r   
fill_value)r   r
   r      dtyper   r   )
r   npnanr   r   float64subtypeisnanr   int64selfarrs     a/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/arrays/sparse/test_constructors.pytest_constructor_dtypez'TestConstructors.test_constructor_dtype   s=   261a011yK
BF;;;;;;y BJ....x'''''261a0Q???yK
A666666~"""",,,bj999yK
BF;;;;;;x''''',,,bh777yK!444444~"""",,,1BHEEEyK!444444~"""",,,d333yK!444444~"""",,,1DAAAyK!444444~""""""    c                     t          g dd          }t          g dt                    }t          j        ||           d S )Nr
   r      intr   )r   r!   tmassert_sp_array_equalr   resultexpecteds      r   test_constructor_dtype_strz+TestConstructors.test_constructor_dtype_str.   sG    YYYe444yyy444
 22222r   c                     t          g dt          dd                    }t          g ddt          j                  }t	          j        ||           |j        j        t          j        d          k    sJ d S )Nr
   r   r   r
   r   r   r   )r   r   r   r   r"   r#   	sp_valuesr   r$   s      r   test_constructor_sparse_dtypez.TestConstructors.test_constructor_sparse_dtype3   sv    \\\Wb1I1IJJJ|||"(KKK
 222%'):):::::::r   c                     t          g dd          }t          g dt          j                  }t          j        ||           |j        j        t          j        d          k    sJ d S )Nr)   zSparse[int32]r   int32)r   r   r.   r"   r#   r+   r   r$   s      r   !test_constructor_sparse_dtype_strz2TestConstructors.test_constructor_sparse_dtype_str9   sj    \\\AAA|||28<<<
 222%'):):::::::r   c                 f   t          ddt          j        dgt                    }|j        t          t                    k    sJ t          j        |j                  sJ t          ddt          j        dgt          d          }|j        t          t          d          k    sJ |j        dk    sJ d S )NABr   r   r   )r   r   r   objectr   r   r   r   r   s     r   test_constructor_object_dtypez.TestConstructors.test_constructor_object_dtype?   s    3RVS1@@@yK//////x'''''3RVS1CPPPyK444444~$$$$$$r   c                 d   g d}t          |t          d          }|j        t          t          d          k    sJ |j        du sJ t          j        |t                    }d t          ||          D             }t          j        |t
          j	                  
                                sJ d S )N)Fr   g      Y@g        Fr3   r   c              3   h   K   | ]-\  }}t          |          t          |          k    o||k    V  .d S N)type).0xys      r   	<genexpr>zKTestConstructors.test_constructor_object_dtype_bool_fill.<locals>.<genexpr>P   s@      OO1d1gga +Q!VOOOOOOr   )r   r4   r   r   r   r   arrayzipfromiterbool_all)r   datar   arr_expectedits        r   'test_constructor_object_dtype_bool_fillz8TestConstructors.test_constructor_object_dtype_bool_fillI   s    %%%$f???yK666666~&&&&xF333OOC8N8NOOO{2RX...224444444r   r   r   c                     t          j        t          d          5  t          ddt          j        g|           d d d            d S # 1 swxY w Y   d S )NzCannot convertmatchr   r
   r   )pytestraises
ValueErrorr   r   r   )r   r   s     r   test_constructor_na_dtypez*TestConstructors.test_constructor_na_dtypeS   s    ]:-=>>> 	5 	5Arve4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AAAc                    t          j        ddd          }t          t          j        |d                    }t          j        t                    5  t          |          }d d d            n# 1 swxY w Y   t          j        ||           t          j        t                    5  t          t          j	        |                    }d d d            n# 1 swxY w Y   t          j        ||           d S )Nz
2016-01-01r    z
US/Pacific)periodstzzdatetime64[ns]r   )
pd
date_ranger   r   asarrayr"   assert_produces_warningUserWarningr#   Series)r   dtir&   r%   s       r   +test_constructor_warns_when_losing_timezonez<TestConstructors.test_constructor_warns_when_losing_timezoneX   sS   mL!EEErz#5EFFFGG'44 	& 	& %%F	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	 222'44 	1 	1 300F	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	 22222s$   A00A47A4)"CCCc                 F   t          ddgt          dddg                    }t          g dd          }t          j        ||           |j        t          t          j                  k    sJ |j        dk    sJ t          g d	t          dg d	          t          j        d
          }t          g dt          j        d          }t          j        ||           |j        t          t          j                  k    sJ |j        dk    sJ t          ddgt          dddg          dt          j                  }t          g ddt          j                  }t          j        ||           |j        t          t          j                  k    sJ |j        dk    sJ t          g d	t          dg d	          d d
          }t          g dd           }t          j        ||           |j        t          t          j                  k    sJ |j        dk    sJ d S )Nr
   r   r   )rC   sparse_indexr   r
   r   r   integer)kindr   r   )rC   rZ   r   r   )r   r
   r   r    r3   rC   rZ   r   r   r   r   	r   r   r"   r#   r   r   r   r   r   )r   r   r&   exps       r   test_constructor_spindex_dtypez/TestConstructors.test_constructor_spindex_dtypeh   s7   1vHQA4G4GHHH |||)<<<
 h///yK111111~""""!!YYY//(	
 
 
 ,,,bh1EEE
 c***yK111111~""""Qhq1a&&9&9arx
 
 
 ,,,1BHEEE
 c***yK111111~""""!!YYY//	
 
 
 ,,,d333
 c***yK111111~""""""r   rZ   Nr
   c                    d}t          j        t          |          5  t          d|d           }d d d            n# 1 swxY w Y   t          dgd           }t          j        ||           |j        t          t          j                  k    sJ |j	        dk    sJ t          j        t          |          5  t          dt          ddg          d           }d d d            n# 1 swxY w Y   t          dgd           }t          j        ||           |j        t          t          j                  k    sJ |j	        dk    sJ d S )Nz7Constructing SparseArray with scalar data is deprecatedrH   r
   )rC   rZ   r   r   r   )r"   rT   FutureWarningr   r#   r   r   r   r   r   r   )r   rZ   msgr   r`   s        r   %test_constructor_spindex_dtype_scalarz6TestConstructors.test_constructor_spindex_dtype_scalar   s    H'SAAA 	M 	M1<tLLLC	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M1#T***
 c***yK111111~""""'SAAA 	Q 	Q18As3C3C4PPPC	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q1#T***
 c***yK111111~""""""s!   =AA;"C))C-0C-c                    t          ddgt          dddg          dd           }t          g ddd           }t          j        ||           |j        t          t          j                  k    sJ |j        dk    sJ d S )Nr
   r   r   r   r^   r[   r   r_   )r   r   r`   s      r   0test_constructor_spindex_dtype_scalar_broadcastszATestConstructors.test_constructor_spindex_dtype_scalar_broadcasts   s    Qhq1a&&9&9at
 
 
 ,,,1DAAA
 c***yK111111~""""""r   zdata, fill_valuer         ?g       @TFz
2017-01-01c                     t          |          j        }t          |          rt          |          sJ d S ||k    sJ d S r8   )r   r   r   )r   rC   r   r%   s       r   $test_constructor_inferred_fill_valuez5TestConstructors.test_constructor_inferred_fill_value   sS     T""-
 	(<<Z''''''r   format)coocsccsrsize
   c                 &   t          j        d          }|                    |dd|          }t          j        |          }t          j        |          }|                                                                }t          j
        ||           d S )Nscipy.sparser
         ?densityrk   )rJ   importorskiprandomr   from_spmatrixr   rS   toarrayravelr"   assert_numpy_array_equal)r   ro   rk   	sp_sparsematr%   r&   s          r   test_from_spmatrixz#TestConstructors.test_from_spmatrix   s     '77	tQFCC*3//F##;;==&&((
#FH55555r   c                 :   t          j        d          }|                    ddd|          }d|j        d<   t	          j        |          }t          j        |          }|                                	                                }t          j        ||           d S )Nrr   rp   r
   rs   rt   r   )rJ   rv   rw   rC   r   rx   r   rS   ry   rz   r"   r{   )r   rk   r|   r}   r%   r&   s         r   *test_from_spmatrix_including_explicit_zeroz;TestConstructors.test_from_spmatrix_including_explicit_zero   s    '77	r1c&AA*3//F##;;==&&((
#FH55555r   c                     t          j        d          }|                    ddd          }t          j        t          d          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nrr      r   rm   )rk   znot '4'rH   )rJ   rv   eyerK   rL   r   rx   )r   r|   r}   s      r   test_from_spmatrix_raisesz*TestConstructors.test_from_spmatrix_raises   s    '77	mmAqm//]:Y777 	+ 	+%c***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A**A.1A.c                     t          j        t          d          5  t          t	          j        d                              d                     d d d            d S # 1 swxY w Y   d S )Nzexpected dimension <= 1 datarH   rp   )r   r   )rJ   rK   	TypeErrorr   r   arangereshape)r   s    r   %test_constructor_from_too_large_arrayz6TestConstructors.test_constructor_from_too_large_array   s    ]9,JKKK 	7 	7	"--f55666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   5AA"%A"c                     t          g dd          }t          |          }|j        dk    sJ t          j        |j        |j                   d S )N)
r   r   r
   r   r    r   r   r   r      r   r   )r   r   r"   assert_almost_equalr+   )r   zarrress      r   test_constructor_from_sparsez-TestConstructors.test_constructor_from_sparse   sX    999aHHH$~""""
s}dn=====r   c                    t          j        t           j        t           j        dddt           j        ddt           j        dg
          }t          |          }t          |d          }d	|j        d d<   |j        d d         d	k                                    rJ t          |          }d	|j        d d<   |j        d d         d	k                                    sJ d S )
Nr
   r   r    r   r   r   T)copyr   )r   r>   r   r   r+   anyrB   )r   arr_datar   cpnot_copys        r   test_constructor_copyz&TestConstructors.test_constructor_copy   s    8RVRVQ1bfaBFANOO(##4(((RaRM"1"%*//11111s##!"2A2bqb!Q&++-------r   c                    t          j        g d          }t          |dt                    }|j        t          t                    k    sJ t          j        |j        t          j        ddg                     t          j        |j	        j
        t          j        ddgt           j                             |                                }|j        t          k    sJ t          j        ||           d S )N)FFTTFFFr   Tr   r    )r   r>   r   boolr   r   r"   r{   r+   sp_indexindicesr.   to_denser   rC   r   denses       r   test_constructor_boolz&TestConstructors.test_constructor_bool   s    x@@@AA$5===yK------
#CM28T4L3I3IJJJ 	#CL$8"(Aq628:T:TUUU{d""""
#E400000r   c                    t          g dd           }|j        t          t          j                  k    sJ |j        rJ t          g dt          j                  }|j        t          t          j                  k    sJ |j        rJ t          g dt          j        d          }|j        t          t          j        d          k    sJ |j        sJ d S )N)TFTr   Tr3   )r   r   r   r   rA   r   r   s     r    test_constructor_bool_fill_valuez1TestConstructors.test_constructor_bool_fill_value  s    ---T:::yK111111>!!!---RX>>>yK111111>!!!---RX$OOOyK$777777~r   c                 P   t          j        dt           j        dgt           j                  }t	          |t           j                  }|j        t          t           j                  k    sJ t          j        |j	        t          j        ddgt           j                             t          j        |j
        j        t          j        ddgt           j                             |                                }|j        t           j        k    sJ t          j        ||           d S )Nrh   r    r   r
   r   r   )r   r>   r   float32r   r   r   r"   r{   r+   r   r   r.   r   r   s       r   test_constructor_float32z)TestConstructors.test_constructor_float32  s    xbfa(
;;;$bj111yK
333333
#CM28QF"*3U3U3UVVV 	#L "(Aq6"B"B"B	
 	
 	
 {bj((((
#E400000r   )$__name__
__module____qualname__r   r'   r,   r/   r5   rF   rJ   markparametrizer   r!   rM   rX   ra   r   re   rg   r   r>   r   rQ   	TimestampNaTrj   r~   r   r   r   r   r   r   r   r    r   r   r   r      s       # # #<3 3 3
; ; ;; ; ;% % %5 5 5 [W{{3':':C&@AA5 5 BA53 3 3 &# &# &#P [^dHHQ4D4D-EFF# # GF#"# # # [RXq!fq!RXsCj!!26*E]E"bl<(()262		
 ( ( ( [X'<'<'<==[VaW--6 6 .- >=6 [X'<'<'<==	6 	6 >=	6+ + +7 7 7> > >
. 
. 
.1 1 1  1 1 1 1 1r   r   )numpyr   rJ   pandas._libs.sparser   pandasrQ   r   r   pandas._testing_testingr"   pandas.core.arrays.sparser   r   r   r   r   <module>r      s         ( ( ( ( ( (                  1 1 1 1 1 1N1 N1 N1 N1 N1 N1 N1 N1 N1 N1r   