
    bMhN                        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  ej        ddg          d             Z ej        dd	g          d
             Z G d d          Zej                            de j        e j        g          d             Zd Zd Zej                            dej        ej        g          ej                            d eg d           eg d          g          d                         Zej                            d eg d           ej        g d          f eg dd           ej        g d          f eg dd           ej        g d          f eg dd           ej        g d          f eg dd           ej        g d          fg          ej                            dej        ej        g          d                         Zd Zd Zej                            deej        eg          d             Z ej                            dg d           ej                            d!ej!        d"g          d#                         Z"dS )$    N)SparseDtype)SparseArrayintegerblock)paramsc                     | j         S )z!kind kwarg to pass to SparseArrayparamrequests    k/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/arrays/sparse/test_arithmetics.pykindr      s     =    TFc                     | j         S )z}
    Fixture returning True or False, determining whether to operate
    op(sparse, dense) instead of op(sparse, sparse)
    r	   r   s    r   mixr      s     =r   c                      e Zd Zd ZdefdZd Zd Zd Ze	j
                            dg d          e	j
                            d	g d
          d                         Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze	j
                            d	ddej        g          d             Ze	j
                            d	ddej        g          d             Zd Zd Zd ZdS )TestSparseArrayArithmeticsc                 0    t          j        ||           d S N)tmassert_numpy_array_equal)selfabs      r   _assertz"TestSparseArrayArithmetics._assert   s    
#Aq)))))r   r   c                    t          |t          j                  r$ |t          j        |          |          j        }nEt          |t          j                  r$ ||t          j        |                    j        }nt          t          j        dd          5  |r |||                                          }n |||                                          }d d d            n# 1 swxY w Y   | 	                    ||           d S )Nignore)invaliddivide)

isinstancenpndarraypdSeriesvaluesNotImplementedErrorerrstateto_denser   )	r   r   r   a_denseb_denser   opexpectedresults	            r   _check_numeric_opsz-TestSparseArrayArithmetics._check_numeric_ops    s8    grz** 	&r")G,,g66=HH,, 	&r'29W#5#566=HH%%[(;;; 	- 	- -Aw0022Aq**,,		- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	VX&&&&&s   A C&&C*-C*c                     t          |t                    sJ t          |j        t                    sJ |j        j        t
          j        k    sJ t          |j        t                    sJ d S r   )	r    r   dtyper   subtyper!   bool_
fill_valuebool)r   ress     r   _check_bool_resultz-TestSparseArrayArithmetics._check_bool_result2   sf    #{+++++#)[11111y BH,,,,#.$///////r   c                 :   t          j        d          5  |                     ||k               |                     ||k                                    ||k               |                     ||k               |                     ||k                                    ||k               |                     ||k               |                     ||k                                    ||k               |                     ||k               |                     ||k                                    ||k               |                     ||k               |                     ||k                                    ||k               |                     ||k                |                     ||k                                     ||k                |                     ||k               |                     ||k                                    ||k               |                     ||k               |                     ||k                                    ||k               |                     ||k               |                     ||k                                    ||k               |                     ||k               |                     ||k                                    ||k               |                     ||k               |                     ||k                                    ||k               |                     ||k                |                     ||k                                     ||k                d d d            d S # 1 swxY w Y   d S )Nr   )r   )r!   r'   r6   r   r(   r   r   r   r)   r*   s        r   _check_comparison_opsz0TestSparseArrayArithmetics._check_comparison_ops8   s   [*** (	F (	F
 ##AF+++LL!q&**,,g.@AAA##AF+++LL!q&**,,g.@AAA##AF+++LL!q&**,,g.@AAA##AF+++LL!q&**,,g.@AAA##AE***LL!a%))++Ww->???##AE***LL!a%))++Ww->??? ##AL111LL!w,0022Gw4FGGG##AL111LL!w,0022Gw4FGGG##AL111LL!w,0022Gw4FGGG##AL111LL!w,0022Gw4FGGG##AK000LL!g+//117W3DEEE##AK000LL!g+//117W3DEEEQ(	F (	F (	F (	F (	F (	F (	F (	F (	F (	F (	F (	F (	F (	F (	F (	F (	F (	Fs   M-NNNc                 6   |                      ||z             |                     ||z                                  ||z             |                      ||z             |                     ||z                                  ||z             |                      ||z             |                     ||z                                  ||z             |                      ||z             |                     ||z                                  ||z             d S r   )r6   r   r(   r8   s        r   _check_logical_opsz-TestSparseArrayArithmetics._check_logical_opsc   s   A&&&a!e%%''7):;;;A&&&a!e%%''7):;;;G,,,a'k++--w/@AAAG,,,a'k++--w/@AAAAAr   scalar)r         r3   )Nr      c                     |}t          j        t           j        dddt           j        ddddt           j        g
          }t          |||          }	|                     |	|||||           d S )Nr=   r?   r   r   r3   r!   arraynanr   r.   )
r   r   r   all_arithmetic_functionsr3   r<   r   r+   r%   r   s
             r   test_float_scalarz,TestSparseArrayArithmetics.test_float_scalarq   sk    
 &261aBFAq!QGHHTjAAA6663CCCCCr   c                    t          j        t           j        dddt           j        ddddt           j        g
          }t          ||          }|                     |d|d           |                     |d|d           |                     |d|d           t          ||d          }|                     |d|d           |                     |d|d           |                     |d|d           t          ||d          }|                     |d|d           |                     |d|d           |                     |d|d           d S )Nr=   r?   r   r   r>   rA   r!   rC   rD   r   r9   )r   r   r%   r   s       r   test_float_scalar_comparisonz7TestSparseArrayArithmetics.test_float_scalar_comparison{   sV   261aBFAq!QGHHT***""1a333""1a333""1a333Ta888""1a333""1a333""1a333Ta888""1a333""1a333""1a33333r   c                     |}t          j        g d          }t          j        g d          }t          ||d          }t          ||d          }|                     ||||||           d S )N
              ?       @g      @rM   rM   rN   rO   rN   rM   
rM   rO         @g      @rM   rM   rN   rQ   rO   rM   r   rA   )r!   rC   r   r.   	r   r   r   rE   r+   r%   rvaluesr   r   s	            r   "test_float_same_index_without_nansz=TestSparseArrayArithmetics.test_float_same_index_without_nans   s    %LLLMM(MMMNNTa888dq9991fgsB?????r   c                 r   |}t          j        t           j        dddt           j        ddddt           j        g
          }t          j        t           j        dddt           j        ddddt           j        g
          }t          ||          }t          ||          }	|                     ||	||||           d S )Nr=   r?   r   r>      rH   rB   )
r   r   r   rE   r   r+   r%   rS   r   r   s
             r   test_float_same_index_with_nansz:TestSparseArrayArithmetics.test_float_same_index_with_nans   s     &261aBFAq!QGHH(BFAq!RVQ1aHIIT***d+++1fgsB?????r   c                 :   t          j        t           j        dddt           j        ddddt           j        g
          }t          j        t           j        dddt           j        ddddt           j        g
          }t          ||          }t          ||          }|                     ||||           t          j        g d          }t          j        g d          }t          ||d	          }t          ||d	          }|                     ||||           d S )
Nr=   r?   r   r>   rV   rH   rL   rP   rA   rI   r   r   r%   rS   r   r   s         r    test_float_same_index_comparisonz;TestSparseArrayArithmetics.test_float_same_index_comparison   s   261aBFAq!QGHH(BFAq!RVQ1aHIIT***d+++""1a999LLLMM(MMMNNTa888dq999""1a99999r   c                 $   |}t          j        t           j        dddt           j        ddddt           j        g
          }t          j        dt           j        ddt           j        ddddt           j        g
          }t          ||          }t          ||          }|                     ||||||           |                     ||dz  ||dz  ||           t          ||d          }t          ||          }|                     ||||||           t          ||d          }t          ||d          }|                     ||||||           t          ||d          }t          ||d          }|                     ||||||           d S Nr=   r?   r   r>      rH   rA   rB   rR   s	            r   test_float_arrayz+TestSparseArrayArithmetics.test_float_array   s   %261aBFAq!QGHH(Arvq!RVQ1aHIIT***d+++1fgsB???1q5&'A+sBGGGTa888d+++1fgsB???Ta888dq9991fgsB???Ta888dq9991fgsB?????r   c                 $   |}t          j        t           j        dddt           j        ddddt           j        g
          }t          j        dt           j        ddt           j        ddddt           j        g
          }t          |d          }t          |d          }|                     ||||||           |                     ||dz  ||dz  ||           t          |dd	          }t          |d          }|                     ||||||           t          |dd	          }t          |dd	          }|                     ||||||           t          |dd	          }t          |dd	          }|                     ||||||           d S )
Nr=   r?   r   r>   r]   r   rH   r   rA   rB   )r   r   rE   r+   r%   rS   r   r   s           r   test_float_array_different_kindz:TestSparseArrayArithmetics.test_float_array_different_kind   s   %261aBFAq!QGHH(Arvq!RVQ1aHIIY///g...1fgsB???1q5&'A+sBGGGY1===g...1fgsB???Y1===g!<<<1fgsB???Y1===g!<<<1fgsB?????r   c                    t          j        t           j        dddt           j        ddddt           j        g
          }t          j        dt           j        ddt           j        ddddt           j        g
          }t          ||          }t          ||          }|                     ||||           |                     ||dz  ||dz             t          ||d          }t          ||          }|                     ||||           t          ||d          }t          ||d          }|                     ||||           t          ||d          }t          ||d          }|                     ||||           d S r\   rI   rY   s         r   test_float_array_comparisonz6TestSparseArrayArithmetics.test_float_array_comparison   s   261aBFAq!QGHH(Arvq!RVQ1aHIIT***d+++""1a999""1a!eVWq[AAATa888d+++""1a999Ta888dq999""1a999Ta888dq999""1a99999r   c                 d   |}t           j        }t          j        g d|          }t          j        g d|          }t          |||          }|j        t          |          k    sJ t          |||          }	|	j        t          |          k    sJ |                     ||	||||           |                     ||	dz  ||dz  ||           t          |d||          }|j        t          |          k    sJ t          |||          }	|	j        t          |          k    sJ |                     ||	||||           t          |d||          }|j        t          |          k    sJ t          |d||          }	|	j        t          |          k    sJ |                     ||	||||           t          |d||          }|j        t          |d          k    sJ t          |d	||          }	|	j        t          |d	          k    sJ |                     ||	||||           d S )
N
r   r=   r?   r   r   r   r=   r?   r=   r   r0   
r?   r   r?   r>   r   r   r=   r]   r?   r   r0   r   r   )r3   r0   r   r=   r3   r?   )r!   int64rC   r   r0   r   r.   )
r   r   r   rE   r+   r0   r%   rS   r   r   s
             r   test_int_arrayz)TestSparseArrayArithmetics.test_int_array   sv   % 888FFF(999GGGe$777w+e,,,,,,u4888w+e,,,,,,1fgsB???1q5&'A+sBGGG1EEEEw+e,,,,,,u4888w+e,,,,,,1fgsB???1EEEEw+e,,,,,,AUFFFw+e,,,,,,1fgsB???1EEEEw+e:::::::AUFFFw+e:::::::1fgsB?????r   c                    d}t          j        g d|          }t          j        g d|          }t          |||          }t          |||          }|                     ||||           |                     ||dz  ||dz             t          |||d          }t          |||          }|                     ||||           t          |||d          }t          |||d          }|                     ||||           t          |||d          }t          |||d	          }|                     ||||           d S )
Nri   rd   re   rf   rg   r   )r0   r   r3   r=   r?   )r!   rC   r   r9   )r   r   r0   r%   rS   r   r   s          r   test_int_array_comparisonz4TestSparseArrayArithmetics.test_int_array_comparison  sy    888FFF(999GGGe$777u4888""1a999""1a!eVWq[AAAe$1EEEu4888""1a999e$1EEEu4AFFF""1a999e$1EEEu4AFFF""1a99999r   TFc                 2   t          j        g dt           j                  }t          j        g dt           j                  }t          ||t           j        |          }t          ||t           j        |          }|                     ||||           d S )N)TFTTre   r   r0   r3   r!   rC   r2   r   r;   r   r   r3   r%   rS   r   r   s          r   test_bool_same_indexz/TestSparseArrayArithmetics.test_bool_same_index3  s     33328DDD(444BHEEETjQQQd"(zRRR1fg66666r   c                 2   t          j        g dt           j                  }t          j        g dt           j                  }t          ||t           j        |          }t          ||t           j        |          }|                     ||||           d S )N)TFTFTTre   )TFFTFTrn   ro   rp   s          r   test_bool_array_logicalz2TestSparseArrayArithmetics.test_bool_array_logical>  s     @@@QQQ(BBB"(SSSTjQQQd"(zRRR1fg66666r   c                    |}d}t          j        t           j        dddt           j        ddddt           j        g
          }t          j        g d|          }t          ||          }	t          ||          }
|
j        t          |          k    sJ |                     |	|
||||           |                     |	|
dz  ||dz  ||           t          ||d          }	t          ||          }
|
j        t          |          k    sJ |                     |	|
||||           t          ||d          }	t          ||d          }
|
j        t          |          k    sJ |                     |	|
||||           t          ||d          }	t          ||d          }
|
j        t          |d	          k    sJ |                     |	|
||||           d S 
Nri   r=   r?   r   rf   re   rH   rA   rh   )r!   rC   rD   r   r0   r   r.   )r   r   r   rE   r   r+   rdtyper%   rS   r   r   s              r   test_mixed_array_float_intz5TestSparseArrayArithmetics.test_mixed_array_float_intI  s    %261aBFAq!QGHH(999HHHT***d+++w+f------1fgsB???1q5&'A+sBGGGTa888d+++w+f------1fgsB???Ta888dq999w+f------1fgsB???Ta888dq999w+f;;;;;;;1fgsB?????r   c                    d}t          j        t           j        dddt           j        ddddt           j        g
          }t          j        g d|          }t          ||          }t          ||          }|j        t          |          k    sJ |                     ||||           |                     ||dz  ||dz             t          ||d          }t          ||          }|j        t          |          k    sJ |                     ||||           t          ||d          }t          ||d          }|j        t          |          k    sJ |                     ||||           t          ||d          }t          ||d          }|j        t          |d	          k    sJ |                     ||||           d S ru   )r!   rC   rD   r   r0   r   r9   )r   r   rv   r%   rS   r   r   s          r   test_mixed_array_comparisonz6TestSparseArrayArithmetics.test_mixed_array_comparisone  s    261aBFAq!QGHH(999HHHT***d+++w+f------""1a999""1a!eVWq[AAATa888d+++w+f------""1a999Ta888dq999w+f------""1a999Ta888dq999w+f;;;;;;;""1a99999r   c                 $   t          g d          }t          g d          }||z  }t          j        j        j                            dt          j        g dd                    }t          g d|          }t          j	        ||           d S )	N)TTFF)TFTFrV   r   r=   r?   int32re   )FTT)sparse_index)
r   r#   corearrayssparseIntIndexr!   rC   r   assert_sp_array_equal)r   str-   sp_indexr,   s         r   test_xorz#TestSparseArrayArithmetics.test_xor  s    2223322233Q7>(11!RXiiiw5W5W5WXX222JJJ
 22222r   N)__name__
__module____qualname__r   r4   r.   r6   r9   r;   pytestmarkparametrizerF   rJ   rT   rW   rZ   r^   r`   rb   rj   rl   r!   rD   rq   rs   rw   ry   r    r   r   r   r      s       * * *'d ' ' ' '$0 0 0)F )F )FVB B B [Xyyy11[\<<<88D D 98 21D4 4 4$	@ 	@ 	@
@ 
@ 
@: : : @ @ @.@ @ @.: : :*"@ "@ "@H: : :0 [\D%+@AA7 7 BA7 [\D%+@AA7 7 BA7@ @ @8: : ::3 3 3 3 3r   r   r+   c                     t          ddgd          } | |ddg          } | |t          ddg                    }t          j        ||           d S )Nr   r=   rh   )r   r   r   )r+   arrr-   r,   s       r   test_with_listr     sa    
q!f
+
+
+CRaV__Fr#{Aq6**++HVX.....r   c                      t          ddgd          } t          j        ddgddgg          }|                     |          }|t          u sJ d S )Nr   r=   rh   r?   r>   rV   )r   r#   	DataFrame__add__NotImplemented)r   dfr-   s      r   test_with_dataframer     sZ    
q!f
+
+
+C	1v1v&	'	'B[[__F^######r   c                      t          ddgd          } | t          j        d          z  }| dz  }t          j        ||           d S )Nr   r=   rh   r?   r   r!   rC   r   r   )r   r-   r,   s      r   test_with_zerodim_ndarrayr     sL    
q!f
+
+
+C28A;;FQwHVX.....r   ufuncr   )r   r   r=   )NNr   r=   c                      | |          } | |j                   }t           | t          j        |                    |          }t	          j        ||           d S )Nrh   )r3   r   r!   asarrayr   r   )r   r   r-   r3   r,   s        r   test_ufuncsr     s_    
 U3ZZFs~&&J55C11jIIIHVX.....r   za, b)r   r   r   r{   r=   rh   c                      | ||          } | t          j        |          t          j        |                    }t          |t                    sJ t	          j        t          j        |          |           d S r   )r!   r   r    r   r   r   )r   r   r   r-   r,   s        r   test_binary_ufuncsr     sm     U1a[[FuRZ]]BJqMM22Hfk*****
6 2 2H=====r   c                      t          g d          } t          j        g d          }|| z  }t          j        g d          }t          j        ||           d S )Nr   r?   r   r   r   r=   r?   r>   r   r>   r?   r>   )r   r!   rC   r   r   sparrayr"   r,   s      r   test_ndarray_inplacer     s\    ,,,''Gh|||$$GwGx%%H22222r   c                      t          g d          } t          j        g d          }| |z  } t          g dd          }t          j        | |           d S )Nr   r   r   r   rh   r   r   s      r   test_sparray_inplacer     s_    ,,,''Gh|||$$GwG<<<A666HWh/////r   consc                     t          ddg          } | g d          }t          j        t          d          5  ||z   d d d            d S # 1 swxY w Y   d S )NT)TTTzoperands have mismatched length)match)r   r   raises
ValueError)r   leftrights      r   test_mismatched_length_cmp_opr     s    d|$$DD###$$E	z)J	K	K	K  u                 s   AAA)addsubmultruedivfloordivpowr3   r>   c                 j   t          t          |           } t          j                            d                              d          }t          j                            d                              d          }||d d d<   ||d d d<   t          ||          }t          ||          }t          j        d          5   | ||          }t           | |                                |                                          |j	                  }t          |t                    sJ t          j        |                                |                                            | ||                                          }t          |t                    sJ t          j        ||            | |                                |          }	t          |	t                    sJ t          j        ||	            | |d          }
t          |
t                    sJ 	  | |                                d          } | |j	        d          }t          j        |
j	        |           t          j        |
                                |           n# t          $ r Y nw xY wd d d            d S # 1 swxY w Y   d S )Nr?      r>   rh   r   )allrV   )getattroperatorr!   randomdefault_rngstandard_normalr   r'   r(   r3   r    r   assert_almost_equalr   r   )r+   r3   data1data2firstsecondr5   expres2res3res4exp_fvs               r   test_binary_operatorsr     s    
2		BI!!!$$44R88EI!!!$$44R88EE##A#JE##A#J*555E:666F		"	"	" 9 9bBu~~!2!233@P
 
 
 #{+++++
s||~~s||~~>>>r%**++$,,,,,
 d+++r%..""F++$,,,,,
 d+++r%||$,,,,,	9"U^^%%q))CR(!,,F "4?F;;;"4==??C8888	  	 	 	D	/9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s8   EJ(/J	AJ(
JJ(JJ((J,/J,)#r   numpyr!   r   pandasr#   r   pandas._testing_testingr   pandas.core.arrays.sparser   fixturer   r   r   r   r   eqr   r   r   r   absr   r   rC   greaterr   r   r   listr   rD   r   r   r   r   <module>r      s                         1 1 1 1 1 1 	7+,,,  -,
 e}%%%  &%m3 m3 m3 m3 m3 m3 m3 m3` X\:;;/ / <;/$ $ $/ / / 2626"233	KK&&4G4G4G(H(HI / /  43/ 
	YYY		)))!4!45	YYY1	-	-	-xrx			/B/BC	YYY1	-	-	-xrx			/B/BC	YYY1	-	-	-xrx			/B/BC	YYY1	-	-	-xrx			/B/BC	 	 262:"677> > 87	 	>3 3 30 0 0 $+!>??  @? RRRSS{33&9 &9 43 TS&9 &9 &9r   