
    MhN                        S SK r S SKrS SKrS SKrS SKJr  S SKJr	  S SK
Jr  \R                  " SS/S9S 5       r\R                  " SS	/S9S
 5       r " S S5      r\R                   R#                  S\ R$                  \ R&                  /5      S 5       rS rS r\R                   R#                  S\R.                  \R0                  /5      \R                   R#                  S\" / SQ5      \" / SQ5      /5      S 5       5       r\R                   R#                  S\" / SQ5      \R4                  " / SQ5      4\" / SQSS9\R4                  " / SQ5      4\" / SQSS9\R4                  " / SQ5      4\" / SQSS9\R4                  " / SQ5      4\" / SQSS9\R4                  " / SQ5      4/5      \R                   R#                  S\R&                  \R6                  /5      S 5       5       rS rS r\R                   R#                  S\\R4                  \/5      S 5       r \R                   R#                  S/ S Q5      \R                   R#                  S!\RB                  S"/5      S# 5       5       r"g)$    N)SparseDtype)SparseArrayintegerblock)paramsc                     U R                   $ )z!kind kwarg to pass to SparseArrayparamrequests    ]/var/www/html/env/lib/python3.13/site-packages/pandas/tests/arrays/sparse/test_arithmetics.pykindr      s     ==    TFc                     U R                   $ )zq
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                      \ rS rSrS rS\4S jrS rS rS r	\
R                  R                  S/ S	Q5      \
R                  R                  S
/ SQ5      S 5       5       rS rS rS rS rS rS rS rS rS r\
R                  R                  S
SS\R0                  /5      S 5       r\
R                  R                  S
SS\R0                  /5      S 5       rS rS rS rSrg)TestSparseArrayArithmetics   c                 0    [         R                  " X5        g N)tmassert_numpy_array_equal)selfabs      r   _assert"TestSparseArrayArithmetics._assert   s    
##A)r   r   c                    [        U[        R                  5      (       a(  U" [        R                  " U5      U5      R
                  nOM[        U[        R                  5      (       a(  U" U[        R                  " U5      5      R
                  nO[        e[        R                  " SSS9   U(       a  U" X5      R                  5       nOU" X5      R                  5       nS S S 5        U R                  WU5        g ! , (       d  f       N!= f)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_ops-TestSparseArrayArithmetics._check_numeric_ops    s     grzz**"))G,g6==H,,'299W#56==H%%[[(;A002A**,	 < 	VX& <;s   *5C::
Dc                 
   [        U[        5      (       d   e[        UR                  [        5      (       d   eUR                  R                  [
        R                  :X  d   e[        UR                  [        5      (       d   eg r   )	r"   r   dtyper   subtyper#   bool_
fill_valuebool)r   ress     r   _check_bool_result-TestSparseArrayArithmetics._check_bool_result2   s_    #{++++#))[1111yy  BHH,,,#..$////r   c                    [         R                  " SS9   U R                  X:H  5        U R                  X:H  R	                  5       X4:H  5        U R                  X:g  5        U R                  X:g  R	                  5       X4:g  5        U R                  X:  5        U R                  X:  R	                  5       X4:  5        U R                  X:*  5        U R                  X:*  R	                  5       X4:*  5        U R                  X:  5        U R                  X:  R	                  5       X4:  5        U R                  X:  5        U R                  X:  R	                  5       X4:  5        U R                  X:H  5        U R                  X:H  R	                  5       X4:H  5        U R                  X:g  5        U R                  X:g  R	                  5       X4:g  5        U R                  X:  5        U R                  X:  R	                  5       X4:  5        U R                  X:*  5        U R                  X:*  R	                  5       X4:*  5        U R                  X:  5        U R                  X:  R	                  5       X4:  5        U R                  X:  5        U R                  X:  R	                  5       X4:  5        S S S 5        g ! , (       d  f       g = f)Nr   )r    )r#   r)   r9   r   r*   r   r   r   r+   r,   s        r   _check_comparison_ops0TestSparseArrayArithmetics._check_comparison_ops8   s/   [[*
 ##AF+LL!&**,g.@A##AF+LL!&**,g.@A##AF+LL!&**,g.@A##AF+LL!&**,g.@A##AE*LL!%))+W->?##AE*LL!%))+W->? ##AL1LL!,002G4FG##AL1LL!,002G4FG##AL1LL!,002G4FG##AL1LL!,002G4FG##AK0LL!+//173DE##AK0LL!+//173DEQ +**s   JJ33
Kc                    U R                  X-  5        U R                  X-  R                  5       X4-  5        U R                  X-  5        U R                  X-  R                  5       X4-  5        U R                  X-  5        U R                  X-  R                  5       X4-  5        U R                  X-  5        U R                  X-  R                  5       X4-  5        g r   )r9   r   r*   r<   s        r   _check_logical_ops-TestSparseArrayArithmetics._check_logical_opsc   s    &ae%%'):;&ae%%'):;,ak++-w/@A,ak++-w/@Ar   scalar)r         r6   )Nr      c                     Un[         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[        XUS9n	U R	                  XXX'5        g )NrC   rE   r   r   r6   r#   arraynanr   r0   )
r   r   r   all_arithmetic_functionsr6   rB   r   r-   r'   r   s
             r   test_float_scalar,TestSparseArrayArithmetics.test_float_scalarq   sV    
 &2661aBFFAq!QGHjA63Cr   c                 :   [         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[        X!S9nU R	                  USUS5        U R	                  USUS5        U R	                  USUS5        [        X!SS9nU R	                  USUS5        U R	                  USUS5        U R	                  USUS5        [        X!SS9nU R	                  USUS5        U R	                  USUS5        U R	                  USUS5        g )NrC   rE   r   r   rD   rG   r#   rI   rJ   r   r=   )r   r   r'   r   s       r   test_float_scalar_comparison7TestSparseArrayArithmetics.test_float_scalar_comparison{   s   2661aBFFAq!QGH*""1a3""1a3""1a3a8""1a3""1a3""1a3a8""1a3""1a3""1a3r   c                     Un[         R                  " / SQ5      n[         R                  " / SQ5      n[        XQSS9n[        XaSS9nU R                  XxXVX$5        g )N
              ?       @g      @rU   rU   rV   rW   rV   rU   
rU   rW         @g      @rU   rU   rV   rY   rW   rU   r   rG   )r#   rI   r   r0   	r   r   r   rK   r-   r'   rvaluesr   r   s	            r   "test_float_same_index_without_nans=TestSparseArrayArithmetics.test_float_same_index_without_nans   sO    %LM((MNa8q9fs?r   c                 z   Un[         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[        XaS9n[        XqS9n	U R	                  XXgX%5        g )NrC   rE   r   rD      rO   rH   )
r   r   r   rK   r   r-   r'   r[   r   r   s
             r   test_float_same_index_with_nans:TestSparseArrayArithmetics.test_float_same_index_with_nans   s     &2661aBFFAq!QGH((BFFAq!RVVQ1aHI*+fs?r   c                     [         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[        X!S9n[        X1S9nU R	                  XEX#5        [         R                  " / SQ5      n[         R                  " / SQ5      n[        X!SS	9n[        X1SS	9nU R	                  XEX#5        g )
NrC   rE   r   rD   r_   rO   rT   rX   rG   rP   r   r   r'   r[   r   r   s         r    test_float_same_index_comparison;TestSparseArrayArithmetics.test_float_same_index_comparison   s    2661aBFFAq!QGH((BFFAq!RVVQ1aHI*+""19LM((MNa8q9""19r   c                    Un[         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[         R                  " S[         R                  SS[         R                  SSSS[         R                  /
5      n[        XQS9n[        XaS9nU R	                  XxXVX$5        U R	                  XxS-  XVS-  X$5        [        XQSS9n[        XaS9nU R	                  XxXVX$5        [        XQSS9n[        XaSS9nU R	                  XxXVX$5        [        XQSS9n[        XaSS9nU R	                  XxXVX$5        g NrC   rE   r   rD      rO   rG   rH   rZ   s	            r   test_float_array+TestSparseArrayArithmetics.test_float_array   s!   %2661aBFFAq!QGH((Arvvq!RVVQ1aHI*+fs?q5&A+sGa8+fs?a8q9fs?a8q9fs?r   c                    Un[         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[         R                  " S[         R                  SS[         R                  SSSS[         R                  /
5      n[        USS9n[        USS9nU R	                  XgXEX5        U R	                  XgS-  XES-  X5        [        USSS	9n[        USS9nU R	                  XgXEX5        [        USSS	9n[        USSS	9nU R	                  XgXEX5        [        USSS	9n[        USSS	9nU R	                  XgXEX5        g )
NrC   rE   r   rD   rh   r   rO   r   rG   rH   )r   r   rK   r-   r'   r[   r   r   s           r   test_float_array_different_kind:TestSparseArrayArithmetics.test_float_array_different_kind   s1   %2661aBFFAq!QGH((Arvvq!RVVQ1aHIY/g.fs?q5&A+sGY1=g.fs?Y1=g!<fs?Y1=g!<fs?r   c                    [         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[         R                  " S[         R                  SS[         R                  SSSS[         R                  /
5      n[        X!S9n[        X1S9nU R	                  XEX#5        U R	                  XES-  X#S-  5        [        X!SS9n[        X1S9nU R	                  XEX#5        [        X!SS9n[        X1SS9nU R	                  XEX#5        [        X!SS9n[        X1SS9nU R	                  XEX#5        g rg   rP   rc   s         r   test_float_array_comparison6TestSparseArrayArithmetics.test_float_array_comparison   s   2661aBFFAq!QGH((Arvvq!RVVQ1aHI*+""19""1!eVq[Aa8+""19a8q9""19a8q9""19r   c                    Un[         R                  n[         R                  " / SQUS9n[         R                  " / SQUS9n[        XeUS9nUR                  [        U5      :X  d   e[        XuUS9n	U	R                  [        U5      :X  d   eU R                  XXgX$5        U R                  XS-  XgS-  X$5        [        USXQS9nUR                  [        U5      :X  d   e[        XuUS9n	U	R                  [        U5      :X  d   eU R                  XXgX$5        [        USXQS9nUR                  [        U5      :X  d   e[        USXQS9n	U	R                  [        U5      :X  d   eU R                  XXgX$5        [        USXQS9nUR                  [        USS9:X  d   e[        US	XQS9n	U	R                  [        US	S9:X  d   eU R                  XXgX$5        g )
N
r   rC   rE   r   r   r   rC   rE   rC   r   r3   
rE   r   rE   rD   r   r   rC   rh   rE   r   r3   r   r   )r6   r3   r   rC   r6   rE   )r#   int64rI   r   r3   r   r0   )
r   r   r   rK   r-   r3   r'   r[   r   r   s
             r   test_int_array)TestSparseArrayArithmetics.test_int_array   s   % 8F((9G$7ww+e,,,,48ww+e,,,,fs?q5&A+sG1EEww+e,,,,48ww+e,,,,fs?1EEww+e,,,,AUFww+e,,,,fs?1EEww+e::::AUFww+e::::fs?r   c                    Sn[         R                  " / SQUS9n[         R                  " / SQUS9n[        X2US9n[        XBUS9nU R                  XVX45        U R                  XVS-  X4S-  5        [        X2USS9n[        XBUS9nU R                  XVX45        [        X2USS9n[        XBUSS9nU R                  XVX45        [        X2USS9n[        XBUS	S9nU R                  XVX45        g )
Nrw   rr   rs   rt   ru   r   )r3   r   r6   rC   rE   )r#   rI   r   r=   )r   r   r3   r'   r[   r   r   s          r   test_int_array_comparison4TestSparseArrayArithmetics.test_int_array_comparison  s     8F((9G$748""19""1!eVq[A$1E48""19$1E4AF""19$1E4AF""19r   TFc                     [         R                  " / SQ[         R                  S9n[         R                  " / SQ[         R                  S9n[        X1[         R                  US9n[        XA[         R                  US9nU R	                  XVX45        g )N)TFTTrs   r   r3   r6   r#   rI   r5   r   r@   r   r   r6   r'   r[   r   r   s          r   test_bool_same_index/TestSparseArrayArithmetics.test_bool_same_index3  sb     3288D((4BHHEjQ"((zRf6r   c                     [         R                  " / SQ[         R                  S9n[         R                  " / SQ[         R                  S9n[        X1[         R                  US9n[        XA[         R                  US9nU R	                  XVX45        g )N)TFTFTTrs   )TFFTFTr~   r   r   s          r   test_bool_array_logical2TestSparseArrayArithmetics.test_bool_array_logical>  sb     @Q((B"((SjQ"((zRf6r   c                    UnSn[         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[         R                  " / SQUS9n[        XqS9n	[        XS9n
U
R                  [        U5      :X  d   eU R                  XXxX%5        U R                  XS-  XxS-  X%5        [        XqSS9n	[        XS9n
U
R                  [        U5      :X  d   eU R                  XXxX%5        [        XqSS9n	[        XSS9n
U
R                  [        U5      :X  d   eU R                  XXxX%5        [        XqSS9n	[        XSS9n
U
R                  [        USS	9:X  d   eU R                  XXxX%5        g 
Nrw   rC   rE   r   rt   rs   rO   rG   rv   )r#   rI   rJ   r   r3   r   r0   )r   r   r   rK   r   r-   rdtyper'   r[   r   r   s              r   test_mixed_array_float_int5TestSparseArrayArithmetics.test_mixed_array_float_intI  sf   %2661aBFFAq!QGH((9H*+ww+f----fs?q5&A+sGa8+ww+f----fs?a8q9ww+f----fs?a8q9ww+f;;;;fs?r   c                    Sn[         R                  " [         R                  SSS[         R                  SSSS[         R                  /
5      n[         R                  " / SQUS9n[        X1S9n[        XAS9nUR                  [        U5      :X  d   eU R                  XVX45        U R                  XVS-  X4S-  5        [        X1SS9n[        XAS9nUR                  [        U5      :X  d   eU R                  XVX45        [        X1SS9n[        XASS9nUR                  [        U5      :X  d   eU R                  XVX45        [        X1SS9n[        XASS9nUR                  [        USS	9:X  d   eU R                  XVX45        g r   )r#   rI   rJ   r   r3   r   r=   )r   r   r   r'   r[   r   r   s          r   test_mixed_array_comparison6TestSparseArrayArithmetics.test_mixed_array_comparisone  sY    2661aBFFAq!QGH((9H*+ww+f----""19""1!eVq[Aa8+ww+f----""19a8q9ww+f----""19a8q9ww+f;;;;""19r   c                    [        / SQ5      n[        / SQ5      nX-  n[        R                  R                  R                  R                  S[        R                  " / SQSS95      n[        / SQUS9n[        R                  " X55        g )	N)TTFF)TFTFr_   r   rC   rE   int32rs   )FTT)sparse_index)
r   r%   corearrayssparseIntIndexr#   rI   r   assert_sp_array_equal)r   str/   sp_indexr.   s         r   test_xor#TestSparseArrayArithmetics.test_xor  se    232377>>((11!RXXiw5WX2J
  2r    N)__name__
__module____qualname____firstlineno__r   r7   r0   r9   r=   r@   pytestmarkparametrizerL   rQ   r\   r`   rd   ri   rl   ro   rx   r{   r#   rJ   r   r   r   r   r   __static_attributes__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                     [        SS/SS9nU " USS/5      nU " U[        SS/5      5      n[        R                  " X#5        g )Nr   rC   rv   )r   r   r   )r-   arrr/   r.   s       r   test_with_listr     sD    
q!f
+CaV_F#{Aq6*+HV.r   c                      [        SS/SS9n [        R                  " SS/SS//5      nU R                  U5      nU[        L d   eg )Nr   rC   rv   rE   rD   r_   )r   r%   	DataFrame__add__NotImplemented)r   dfr/   s      r   test_with_dataframer     sH    
q!f
+C	1v1v&	'B[[_F^###r   c                      [        SS/SS9n U [        R                  " S5      -  nU S-  n[        R                  " X5        g )Nr   rC   rv   rE   r   r#   rI   r   r   )r   r/   r.   s      r   test_with_zerodim_ndarrayr     s;    
q!f
+C288A;FQwHV.r   ufuncr   )r   r   rC   )NNr   rC   c                     U " U5      nU " UR                   5      n[        U " [        R                  " U5      5      US9n[        R
                  " X$5        g )Nrv   )r6   r   r#   asarrayr   r   )r   r   r/   r6   r.   s        r   test_ufuncsr     sB    
 3ZFs~~&J5C1jIHV.r   za, b)r   r   r   r   rC   rv   c                     U " X5      nU " [         R                  " U5      [         R                  " U5      5      n[        U[        5      (       d   e[        R
                  " [         R                  " U5      U5        g r   )r#   r   r"   r   r   r   )r   r   r   r/   r.   s        r   test_binary_ufuncsr     sU     1[FRZZ]BJJqM2Hfk****

6 2H=r   c                      [        / SQ5      n [        R                  " / SQ5      nX-  n[        R                  " / SQ5      n[        R                  " X5        g )Nr   rE   r   r   r   rC   rE   rD   r   rD   rE   rD   )r   r#   rI   r   r   sparrayr$   r.   s      r   test_ndarray_inplacer     s>    ,'Ghh|$GGxx%H2r   c                      [        / SQ5      n [        R                  " / SQ5      nX-  n [        / SQSS9n[        R                  " X5        g )Nr   r   r   r   rv   r   r   s      r   test_sparray_inplacer     s<    ,'Ghh|$GG<A6HW/r   consc                     [        SS/5      nU " / SQ5      n[        R                  " [        SS9   X-    S S S 5        g ! , (       d  f       g = f)NT)TTTzoperands have mismatched length)match)r   r   raises
ValueError)r   leftrights      r   test_mismatched_length_cmp_opr     s<    d|$D#$E	z)J	K 
L	K	Ks	   ?
A)addsubmultruedivfloordivpowr6   rD   c                    [        [        U 5      n [        R                  R	                  S5      R                  S5      n[        R                  R	                  S5      R                  S5      nXS S S2'   XS S S2'   [        X!S9n[        X1S9n[        R                  " SS9   U " XE5      n[        U " UR                  5       UR                  5       5      UR                  S9n[        U[        5      (       d   e[        R                  " UR                  5       UR                  5       5        U " XER                  5       5      n[        U[        5      (       d   e[        R                  " Xh5        U " UR                  5       U5      n	[        U	[        5      (       d   e[        R                  " Xi5        U " US5      n
[        U
[        5      (       d   e U " UR                  5       S5      nU " UR                  S5      n[        R                  " U
R                  U5        [        R                  " U
R                  5       U5        S S S 5        g ! [         a     Nf = f! , (       d  f       g = f)NrE      rD   rv   r   )allr_   )getattroperatorr#   randomdefault_rngstandard_normalr   r)   r*   r6   r"   r   assert_almost_equalr   r   )r-   r6   data1data2firstsecondr8   expres2res3res4exp_fvs               r   test_binary_operatorsr     s    
2	BII!!!$44R8EII!!!$44R8E#A#J#A#J5E6F		"u~~!23@P@P
 #{++++
s||~s||~>%*+$,,,,
  +%.."F+$,,,,
  +%|$,,,,	9U^^%q)C((!,F ""4??F;""4==?C87 
#	".  		/ 
#	"s2   !D1I*I=A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   rI   greaterr   r   r   listr   rJ   r   r   r   r   <module>r      sP         1 	7+, -
 e}% &m3 m3` X\\:;/ </$/ 266266"23	K&4G(HI/ 4/ 
	Y	)!45	Y1	-rxx	/BC	Y1	-rxx	/BC	Y1	-rxx	/BC	Y1	-rxx	/BC	 2662::"67> 8	>30 $+!>? @ RS{3&9 4 T&9r   