
    JEfN                        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                   j#                  de j$                  e j&                  g      d        Zd Zd Zej                   j#                  dej.                  ej0                  g      ej                   j#                  d eg d       eg d      g      d               Zej                   j#                  d eg d       ej4                  g d      f eg dd       ej4                  g d      f eg dd       ej4                  g d      f eg dd       ej4                  g d      f eg dd       ej4                  g d      fg      ej                   j#                  dej&                  ej6                  g      d               Zd Zd Zej                   j#                  deej4                  eg      d        Z ej                   j#                  dg d       ej                   j#                  d!ejB                  d"g      d#               Z"y)$    N)SparseDtype)SparseArrayintegerblock)paramsc                     | j                   S )z!kind kwarg to pass to SparseArrayparamrequests    d/var/www/VTS_Report/venv/lib/python3.12/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                  j                  dg d      e	j                  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                  j                  d	ddej.                  g      d        Ze	j                  j                  d	ddej.                  g      d        Zd Zd Zd Zy)TestSparseArrayArithmeticsc                 0    t        j                  ||       y 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
                  }nGt        |t        j                        r' ||t        j                  |            j
                  }nt        t        j                  dd      5  |r |||      j                         }n |||      j                         }d d d        | j                  |       y # 1 sw Y   xY w)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    s     grzz*"))G,g6==H,'299W#56==H%%[[(; 	-Aw002Aq**,		- 	VX&	- 	-s    2C--C6c                     t        |t              sJ t        |j                  t              sJ |j                  j                  t
        j                  k(  sJ t        |j                  t              sJ y r   )	r    r   dtyper   subtyper!   bool_
fill_valuebool)r   ress     r   _check_bool_resultz-TestSparseArrayArithmetics._check_bool_result2   sV    #{+++#))[111yy  BHH,,,#..$///r   c                    t        j                  d      5  | j                  ||k(         | j                  ||k(  j	                         ||k(         | j                  ||k7         | j                  ||k7  j	                         ||k7         | j                  ||k\         | j                  ||k\  j	                         ||k\         | j                  ||k         | j                  ||k  j	                         ||k         | j                  ||kD         | j                  ||kD  j	                         ||kD         | j                  ||k         | j                  ||k  j	                         ||k         | j                  ||k(         | j                  ||k(  j	                         ||k(         | j                  ||k7         | j                  ||k7  j	                         ||k7         | j                  ||k\         | j                  ||k\  j	                         ||k\         | j                  ||k         | j                  ||k  j	                         ||k         | j                  ||kD         | j                  ||kD  j	                         ||kD         | j                  ||k         | j                  ||k  j	                         ||k         d d d        y # 1 sw Y   y xY w)Nr   )r   )r!   r'   r6   r   r(   r   r   r   r)   r*   s        r   _check_comparison_opsz0TestSparseArrayArithmetics._check_comparison_ops8   s   [[* (	F
 ##AF+LL!q&**,g.@A##AF+LL!q&**,g.@A##AF+LL!q&**,g.@A##AF+LL!q&**,g.@A##AE*LL!a%))+Ww->?##AE*LL!a%))+Ww->? ##AL1LL!w,002Gw4FG##AL1LL!w,002Gw4FG##AL1LL!w,002Gw4FG##AL1LL!w,002Gw4FG##AK0LL!g+//17W3DE##AK0LL!g+//17W3DEQ(	F (	F (	Fs   J9KK"c                    | j                  ||z         | j                  ||z  j                         ||z         | j                  ||z         | j                  ||z  j                         ||z         | j                  ||z         | j                  ||z  j                         ||z         | j                  ||z         | j                  ||z  j                         ||z         y 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G,a'k++-w/@Ar   scalar)r         r3   )Nr      c                     |}t        j                  t         j                  dddt         j                  ddddt         j                  g
      }t        |||      }	| j	                  |	|||||       y )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   s^    
 &2661aBFFAq!QGHTjA6663Cr   c                 P   t        j                  t         j                  dddt         j                  ddddt         j                  g
      }t        ||      }| j	                  |d|d       | j	                  |d|d       | j	                  |d|d       t        ||d      }| j	                  |d|d       | j	                  |d|d       | j	                  |d|d       t        ||d      }| j	                  |d|d       | j	                  |d|d       | j	                  |d|d       y )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{   s   2661aBFFAq!QGHT*""1a3""1a3""1a3Ta8""1a3""1a3""1a3Ta8""1a3""1a3""1a3r   c                     |}t        j                  g d      }t        j                  g d      }t        ||d      }t        ||d      }| j                  ||||||       y )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   sY    %LM((MNTa8dq9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        ||      }	| j	                  ||	||||       y )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     &2661aBFFAq!QGH((BFFAq!RVVQ1aH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        ||      }| j	                  ||||       t        j                  g d      }t        j                  g d      }t        ||d	      }t        ||d	      }| j	                  ||||       y )
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    2661aBFFAq!QGH((BFFAq!RVVQ1aHIT*d+""1a9LM((MNTa8dq9""1a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        ||      }| j	                  ||||||       | j	                  ||dz  ||dz  ||       t        ||d      }t        ||      }| j	                  ||||||       t        ||d      }t        ||d      }| j	                  ||||||       t        ||d      }t        ||d      }| j	                  ||||||       y Nr=   r?   r   r>      rH   rA   rB   rR   s	            r   test_float_arrayz+TestSparseArrayArithmetics.test_float_array   sO   %2661aBFFAq!QGH((Arvvq!RVVQ1aHIT*d+1fgsB?1q5&'A+sBGTa8d+1fgsB?Ta8dq91fgsB?Ta8dq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      }| j	                  ||||||       | j	                  ||dz  ||dz  ||       t        |dd	      }t        |d      }| j	                  ||||||       t        |dd	      }t        |dd	      }| j	                  ||||||       t        |dd	      }t        |dd	      }| j	                  ||||||       y )
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   sO   %2661aBFFAq!QGH((Arvvq!RVVQ1aHIY/g.1fgsB?1q5&'A+sB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        ||      }| j	                  ||||       | j	                  ||dz  ||dz         t        ||d      }t        ||      }| j	                  ||||       t        ||d      }t        ||d      }| j	                  ||||       t        ||d      }t        ||d      }| j	                  ||||       y r\   rI   rY   s         r   test_float_array_comparisonz6TestSparseArrayArithmetics.test_float_array_comparison   s6   2661aBFFAq!QGH((Arvvq!RVVQ1aHIT*d+""1a9""1a!eVWq[ATa8d+""1a9Ta8dq9""1a9Ta8dq9""1a9r   c                    |}t         j                  }t        j                  g d|      }t        j                  g d|      }t        |||      }|j                  t        |      k(  sJ t        |||      }	|	j                  t        |      k(  sJ | j                  ||	||||       | j                  ||	dz  ||dz  ||       t        |d||      }|j                  t        |      k(  sJ t        |||      }	|	j                  t        |      k(  sJ | j                  ||	||||       t        |d||      }|j                  t        |      k(  sJ t        |d||      }	|	j                  t        |      k(  sJ | j                  ||	||||       t        |d||      }|j                  t        |d      k(  sJ t        |d	||      }	|	j                  t        |d	      k(  sJ | j                  ||	||||       y )
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   s   % 8F((9Ge$7ww+e,,,,u48ww+e,,,,1fgsB?1q5&'A+sBG1EEww+e,,,,u48ww+e,,,,1fgsB?1EEww+e,,,,AUFww+e,,,,1fgsB?1EEww+e::::AUFww+e::::1fgsB?r   c                 *   d}t        j                  g d|      }t        j                  g d|      }t        |||      }t        |||      }| j                  ||||       | j                  ||dz  ||dz         t        |||d      }t        |||      }| j                  ||||       t        |||d      }t        |||d      }| j                  ||||       t        |||d      }t        |||d	      }| j                  ||||       y )
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  s    8F((9Ge$7u48""1a9""1a!eVWq[Ae$1Eu48""1a9e$1Eu4AF""1a9e$1Eu4AF""1a9r   TFc                 <   t        j                  g dt         j                        }t        j                  g dt         j                        }t        ||t         j                  |      }t        ||t         j                  |      }| j	                  ||||       y )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  sj     3288D((4BHHETjQd"((zR1fg6r   c                 <   t        j                  g dt         j                        }t        j                  g dt         j                        }t        ||t         j                  |      }t        ||t         j                  |      }| j	                  ||||       y )N)TFTFTTre   )TFFTFTrn   ro   rp   s          r   test_bool_array_logicalz2TestSparseArrayArithmetics.test_bool_array_logical>  sj     @Q((B"((STjQd"((zR1fg6r   c                 f   |}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 | j                  |	|
||||       | j                  |	|
dz  ||dz  ||       t        ||d      }	t        ||      }
|
j                  t        |      k(  sJ | j                  |	|
||||       t        ||d      }	t        ||d      }
|
j                  t        |      k(  sJ | j                  |	|
||||       t        ||d      }	t        ||d      }
|
j                  t        |d	      k(  sJ | j                  |	|
||||       y 
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   %2661aBFFAq!QGH((9HT*d+ww+f----1fgsB?1q5&'A+sBGTa8d+ww+f----1fgsB?Ta8dq9ww+f----1fgsB?Ta8dq9ww+f;;;;1fgsB?r   c                 N   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 | j                  ||||       | j                  ||dz  ||dz         t        ||d      }t        ||      }|j                  t        |      k(  sJ | j                  ||||       t        ||d      }t        ||d      }|j                  t        |      k(  sJ | j                  ||||       t        ||d      }t        ||d      }|j                  t        |d	      k(  sJ | j                  ||||       y 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}    2661aBFFAq!QGH((9HT*d+ww+f----""1a9""1a!eVWq[ATa8d+ww+f----""1a9Ta8dq9ww+f----""1a9Ta8dq9ww+f;;;;""1a9r   c                 "   t        g d      }t        g d      }||z  }t        j                  j                  j                  j                  dt        j                  g dd            }t        g d|      }t        j                  ||       y )	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  si    2323Q77>>((11!RXXiw5WX2J
  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)FVB [[Xy1[[\<8D 9 2D4$	@
@: @.@.:*"@H:0 [[\D%+@A7 B7 [[\D%+@A7 B7@8::3r   r   r+   c                     t        ddgd      } | |ddg      } | |t        ddg            }t        j                  ||       y )Nr   r=   rh   )r   r   r   )r+   arrr-   r,   s       r   test_with_listr     sF    
q!f
+CaV_F#{Aq6*+HVX.r   c                      t        ddgd      } t        j                  ddgddgg      }| j                  |      }|t        u sJ y )Nr   r=   rh   r?   r>   rV   )r   r#   	DataFrame__add__NotImplemented)r   dfr-   s      r   test_with_dataframer     sH    
q!f
+C	1v1v&	'B[[_F^###r   c                      t        ddgd      } | t        j                  d      z  }| dz  }t        j                  ||       y )Nr   r=   rh   r?   r   r!   rC   r   r   )r   r-   r,   s      r   test_with_zerodim_ndarrayr     s=    
q!f
+C288A;FQwHVX.r   ufuncr   )r   r   r=   )NNr   r=   c                      | |      } | |j                         }t         | t        j                  |            |      }t	        j
                  ||       y )Nrh   )r3   r   r!   asarrayr   r   )r   r   r-   r3   r,   s        r   test_ufuncsr     sD    
 3ZFs~~&J5C1j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                  |      |       y r   )r!   r   r    r   r   r   )r   r   r   r-   r,   s        r   test_binary_ufuncsr     sT     1a[FRZZ]BJJqM2Hfk***

6 2H=r   c                      t        g d      } t        j                  g d      }|| z  }t        j                  g d      }t        j                  ||       y )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     sB    ,'Ghh|$GwGxx%H2r   c                      t        g d      } t        j                  g d      }| |z  } t        g dd      }t        j                  | |       y )Nr   r   r   r   rh   r   r   s      r   test_sparray_inplacer     s@    ,'Ghh|$GwG<A6HWh/r   consc                     t        ddg      } | g d      }t        j                  t        d      5  ||z   d d d        y # 1 sw Y   y xY w)NT)TTTzoperands have mismatched length)match)r   r   raises
ValueError)r   leftrights      r   test_mismatched_length_cmp_opr     sF    d|$D#$E	z)J	K u  s   AA)addsubmultruedivfloordivpowr3   r>   c                    t        t        |       } t        j                  j	                  d      j                  d      }t        j                  j	                  d      j                  d      }||d d d<   ||d d d<   t        ||      }t        ||      }t        j                  d      5   | ||      }t         | |j                         |j                               |j                        }t        |t              sJ t        j                  |j                         |j                                 | ||j                               }t        |t              sJ t        j                  ||        | |j                         |      }	t        |	t              sJ t        j                  ||	        | |d      }
t        |
t              sJ 	  | |j                         d      } | |j                  d      }t        j                  |
j                  |       t        j                  |
j                         |       d d d        y # t        $ r Y w xY w# 1 sw Y   y xY w)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II!!!$44R8EII!!!$44R8EE#A#JE#A#J*5E:6F		" 9u~~!23@P@P
 #{+++
s||~s||~>%*+$,,,
  d+%.."F+$,,,
  d+%|$,,,	9U^^%q)C((!,F ""4??F;""4==?C879 9.  		/9 9s2   -D!I*I9AI	IIIII)#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 	7+, -
 e}% &m3 m3` X\\:;/ </$/ 266266"23	K&4G(HI/ 4/ 
	Y	)!45	Y1	-xrxx	/BC	Y1	-xrxx	/BC	Y1	-xrxx	/BC	Y1	-xrxx	/BC	 2662::"67> 8	>30 $+!>? @ RS{3&9 4 T&9r   