
    .i              	          d dl mZmZmZ d dlmZ d dlmZmZ d dl	Z	d dl
Zd dlZd dlmZ d dlZd dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ   ejB                  d	d d
gddg      d        Z"d Z# G d d      Z$ G d d      Z% G d d      Z& G d d      Z' G d d      Z( G d d      Z) G d d      Z*d Z+d Z,d  Z-ej\                  j_                  d! ed"d#$       ed"d%d#&       ej`                  d'd#$      g      d(        Z1y))    )date	timedeltatimezone)Decimal)EnumautoN)lib)CategoricalDatetimeTZDtypeIndexSeries	Timedeltabdate_range
date_rangeisna)ops)expressionsTi@B numexprpython)autouseparamsidsc              #      K   |j                         5 }|j                  t        d| j                         d  d d d        y # 1 sw Y   y xY ww)N_MIN_ELEMENTS)contextsetattrexprparam)requestmonkeypatchms      a/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/series/test_arithmetic.pyswitch_numexpr_min_elementsr#   "   s?     				 !			$7  s   A&A	AAAc                     | j                  t        j                  j                  d      j	                  t        |                   S N   )takenprandomdefault_rngpermutationlen)objs    r"   _permuter.   )   s/    88BII))!,88SBCC    c            	       l   e Zd Zej                  j                  dd d dfd d dfd d d	fd
 d d	fg      ej                  j                  dg d      d               Zd Zd Ze	j                  ej                  dfe	j                  ej                  dfgZdD ]O  ZdZ ee	e      Z eee      Z ee	dez         ZefdZej1                  eeef       ej1                  eeef       Q ej                  j                  de      d        Zej                  j                  dddg      d        Zd Zy)TestSeriesFlexArithmetictsc                     | S N xs    r"   <lambda>z!TestSeriesFlexArithmetic.<lambda>1       q r/   c                     | dz  S r%   r5   r6   s    r"   r8   z!TestSeriesFlexArithmetic.<lambda>1   s
    AE r/   Fc                     | S r4   r5   r6   s    r"   r8   z!TestSeriesFlexArithmetic.<lambda>2   r9   r/   c                     | d d d   S r%   r5   r6   s    r"   r8   z!TestSeriesFlexArithmetic.<lambda>2   s    AccF r/   c                     | S r4   r5   r6   s    r"   r8   z!TestSeriesFlexArithmetic.<lambda>3   r9   r/   c                      y)N   r5   r6   s    r"   r8   z!TestSeriesFlexArithmetic.<lambda>3   s    r/   Tc                 J    t        t        d      t        j                        S N
   dtyper   ranger(   float64r6   s    r"   r8   z!TestSeriesFlexArithmetic.<lambda>5       &r"**= r/   c                 J    t        t        d      t        j                        S rA   rE   r6   s    r"   r8   z!TestSeriesFlexArithmetic.<lambda>6   rH   r/   opname)addsubmulfloordivtruedivpowc                    t        t        j                  dt        j                        t	        dd      d      } |d   |      } |d   |      }|d	   }t        t         |      }t        t        |      } |||      }	 |||      }
t        j                  |	|
       |r<t        t         d
|z         } |||      }	 |||      }
t        j                  |	|
       y y )N   rC   z
2020-01-01periodsr2   indexnamer      r&   r)	r   r(   arangerG   r   getattroperatortmassert_almost_equal)selfrJ   r2   tserseriesothercheck_reverseopaltresultexpectedrops               r"   test_flex_method_equivalencez5TestSeriesFlexArithmetic.test_flex_method_equivalence.   s    $ IIb

+\26
 At1d1VV$h'FE"vu%
vx0&#,/C'F5&)H""684	 r/   c                      G fddt               |}t        t         |      } g dd      }d|_         ||d      }|j                  dk(  sJ y )Nc                   (    e Zd ZdgZe fd       Zy)ZTestSeriesFlexArithmetic.test_flex_method_subclass_metadata_preservation.<locals>.MySeriesr7   c                     S r4   r5   )r_   MySeriess    r"   _constructorzgTestSeriesFlexArithmetic.test_flex_method_subclass_metadata_preservation.<locals>.MySeries._constructor[   s    r/   N)__name__
__module____qualname__	_metadatapropertyro   )rn   s   r"   rn   rl   X   s    I   r/   rn   rX   r&      testrW   *   rX   )r   r[   r7   )r_   all_arithmetic_operatorsrJ   rd   r!   rf   rn   s         @r"   /test_flex_method_subclass_metadata_preservationzHTestSeriesFlexArithmetic.test_flex_method_subclass_metadata_preservationV   sP    	 v 	  *VV$YV,Aqxx2~~r/   c                     t        ddt        j                  dddg      }|j                  d      j	                  d      }|j	                  dd      }t        j                  ||       y )Nr   rX   rv      r?   r&   
fill_value)r   r(   nanfillnarK   r]   assert_series_equal)r_   serexpress       r"   test_flex_add_scalar_fill_valuez8TestSeriesFlexArithmetic.test_flex_add_scalar_fill_valuef   sW    aBFFAq!,-jjm"ggaAg&
sC(r/   rX   )rK   rL   rM   rP   rO   rN   r   rY   c                 0     t        t        |      ||       S r4   )r[   r\   )r7   yrd   s      r"   r8   z!TestSeriesFlexArithmetic.<lambda>u   s    %:WXr%:1a%@ r/   zop, equiv_op, fvc                    dd}t        t        j                  dddt        j                  gt        j                  d            }t        t        j                  dt        j                  d	t        j                  d
gt        j                  d            } |||      } |||      }t	        j
                  ||        ||||||        |||d       y )Nr   c           	         |j                   j                  |j                         }|j                  |      }|j                  |      }t        |      }t        |      }g }t	        t        |            D ]  }	t        j                  d      5  ||	   rJ||	   r)|j                  t        j                         	 d d d        M|j                   ||||	                nm||	   rJ||	   r)|j                  t        j                         	 d d d        |j                   |||	   |             n|j                   |||	   ||	                d d d          | |||      }
t        ||      }t        j                  |
|       y # 1 sw Y   xY w)Nignore)allr~   )rV   unionreindexr   rF   r,   r(   errstateappendr   r   r]   r   )methrd   abr   	exp_indexamaskbmask
exp_valuesirf   rg   s               r"   _check_fillzDTestSeriesFlexArithmetic.test_operators_combine.<locals>._check_fill{   sa   agg.I		)$A		)$AGEGEJ3y>* :[[X. :Qx 8&--bff5$	: :
 #))"Z1*>?q 8&--bff5$: : #))"QqT:*>?"))"QqT1Q4.9: :: !Q:6Fj)4H""684!: :s   +FAF:FF	      ?g       @g      @r?   rV   rX   rv         @   r~   axis)r   )r   r(   r   rZ   r]   r   )	r_   rd   equiv_opfvr   r   r   rf   r   s	            r"   test_operators_combinez/TestSeriesFlexArithmetic.test_operators_combiney   s    	58 BFFCc2662"))A,GBFFArvvq"&&#6biilKAqq!n
vs+B!Q26
1aar/   kinddatetimer   c                    |dk(  rIt        t        j                  d      t        j                  d      gt        j                  d            }n6t        t        d      t        d      gt        j                  d	            }|j                  }|j                  ||j                  d
         }t        t        j                  t        |      t        j                  d	                  }t        j                  ||       y )Nr   z
2025-08-20z
2025-08-21zdatetime64[ns]rC   rX   daysr&   ztimedelta64[ns]r   r~   )r   pd	Timestampr(   rD   r   _valuesrL   iloczerosr,   r]   r   )r_   r   leftrightrf   rg   s         r"   ,test_rhs_extension_array_sub_with_fill_valuezETestSeriesFlexArithmetic.test_rhs_extension_array_sub_with_fill_value   s     :l+R\\,-GHhh/0D
 "I1$56hh01D LL 	 %DIIaL9"((3t9BHH=N4OPQ
vx0r/   c           	      ~   t        j                  dgdgdt         j                  j                  dgdggddg      	      }t	        g d
t         j                  j                  dgdgg dgg d      	      }d}t        j                  t        |      5  |j                  |d       d d d        y # 1 sw Y   y xY w)NrX   rv   )i  i  r   r   scenmodnamesr   )g      $@g      4@g      >@)r   rX   r&   )r   r   idz/Series.add does not support a DataFrame `other`matchr   r   )	r   	DataFrame
MultiIndexfrom_productr   pytestraises	TypeErrorrK   )r_   dfr   msgs       r"   test_flex_disallows_dataframez6TestSeriesFlexArithmetic.test_flex_disallows_dataframe   s    \\3qc"--,,secU^FE?,S

 --,,y)1F - 
 @]]9C0 	 GGBQG	  	  	 s   B33B<N)rp   rq   rr   r   markparametrizeri   r{   r   r   divr\   rO   rdivr   rtruedivpairingsrd   r   r[   loplequivrh   requivr   r   r   r   r5   r/   r"   r1   r1   -   sn   [[/51*E2+t,==			
 [[E5 50 ) X--q1FKKq3QRHA +fb!2&fcBh'!#@fb)*fb)*+ [[/:% ;%N [[Vj+%>?1 @1* r/   r1   c                   `   e Zd Zd Zej
                  j                  ddddgddgfdddgd	d
gfg      d        Zd Zej
                  j                  dd e	d      g      d        Z
d Z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g      d        Zd  Zy)!TestSeriesArithmeticc                    t        j                  ddd      }t        t        j                  j                  d      j                  t        |            |      }||d d d   z   }||z   }t        j                  |j                  dd d<   t        j                  ||       |t        |d d d         z   }t        j                  ||       y )N1/1/2000z1/1/2010Yfreqr&   r   rX   )r   period_ranger   r(   r)   r*   standard_normalr,   r   r   r]   r   r.   )r_   rngr2   rf   rg   s        r"   !test_add_series_with_period_indexz6TestSeriesArithmetic.test_add_series_with_period_index   s    ooj*3?BII))!,<<SXFcRb1g7 ffadd
vx0hr#A#w''
vx0r/   z%target_add,input_value,expected_value!helloworldzhello!zworld!r!   hellomworldmc                 f    t        |      }||z   }t        |      }t        j                  ||       y r4   r   r]   r   )r_   
target_addinput_valueexpected_valuer   rf   rg   s          r"   test_string_additionz)TestSeriesArithmetic.test_string_addition   s1     ;Z.)
vx0r/   c                    t        dddt        j                  gg d      }t        dt        j                  dt        j                  gg d      }|j                  |      }t        ||      }t	        j
                  |d   |d          t	        j
                  |d   |d          |j                  |      }t        ||      }t	        j
                  |d   |d          t	        j
                  |d   |d          y )NrX   )r   r   cdr   r&   )r   r   r   er   )r   r(   r   divmodr]   r   rdivmod)r_   r   r   rf   rg   s        r"   test_divmodz TestSeriesArithmetic.test_divmod   s    Aq!RVV$,@AArvvq"&&)1EF!!Q<
vay(1+6
vay(1+61!Q<
vay(1+6
vay(1+6r/   rV   N	   c                     t        t        dd            }t        d|      }d}t        j                  t        |      5  ||z   d d d        y # 1 sw Y   y xY w)NrX   rB   foor   zHnot all arguments converted during string formatting|'mod' not supportedr   )r   rF   r   r   r   )r_   rV   s1s2r   s        r"   test_series_integer_modz,TestSeriesArithmetic.test_series_integer_mod   sO     E!RL!E'X]]9C0 	G	 	 	s    AAc                     t        ddgddg      }t        ddgddg      }||z   }t        ddt        j                  gg d      }t        j                  ||       y )NrX   r&   r   rB         )rX   rX   r&   )r   r(   r   r]   r   )r_   r   r   rf   rg   s        r"   test_add_with_duplicate_indexz2TestSeriesArithmetic.test_add_with_duplicate_index  sZ    QF1a&)RHQF+b2r266*)<
vx0r/   c           	      .   t        t        d      t        d      gt        ddd      t        ddd      g      }||j                  d      z   }|j                  d      |z   }t	        |j
                  d         sJ t	        |j
                  d         sJ y )Nz1.3z2.3i  rX   r&   r   r   )r   r   r   shiftr   r   )r_   r   rf   result2s       r"   test_add_na_handlingz)TestSeriesArithmetic.test_add_na_handling
  s    U^WU^,T$15EtDRSUVGW4X
 syy|#))A,$FKKN###GLLO$$$r/   c                     t        g t        g       t        j                        }||z   }t        j                  |      j                         sJ ||z   }t        |      dk(  sJ y )NrV   rD   r   )r   r   r(   rG   isnanr   r,   )r_   datetime_seriesemptyrf   s       r"   test_add_corner_casesz*TestSeriesArithmetic.test_add_corner_cases  sX    rr"**= 5(xx##%%%6{ar/   c                     |j                  t              d d }||z   }t        |j                  d d |j                  z   |j                  d d d      }t        j                  |d d |       y )Nr2   rU   )astypeintr   valuesrV   r]   r   )r_   r   int_tsaddedrg   s        r"   test_add_float_plus_intz,TestSeriesArithmetic.test_add_float_plus_int  sq     '',Sb1&(""3B'&--7!'',

 	uSbz84r/   c                     t        g g t        j                        }t        ddi      }t        j                  ||z  t        t        j
                  gdg             y )NrC   r7   g        r   )r   r(   int32r]   r   r   )r_   r   r   s      r"   test_mul_empty_int_corner_casez3TestSeriesArithmetic.test_mul_empty_int_corner_case(  sE    B"((+S#J
rBwxu(EFr/   c                    t        t        dddd            }t        j                  |j                  d<   |d d d   }t        t        d      t        d      t        j                  gd	
      }||z
  }t        j                  ||       t        |d      }|j                         |j                         z
  d   }t        j                  ||       y )Nz2012-1-1rv   Dns)rT   r   unitr&   r   m8[ns]rC   rx   )r   r   r(   r   r   r   r   NaTr]   r   to_frame)r_   dtdt2rg   rf   s        r"   test_sub_datetimelike_alignz0TestSeriesArithmetic.test_sub_datetimelike_align-  s     Jz13TJKVV
2h9Q<1rvv>hOr
vx0(+,,.2;;=0!4
vx0r/   c                     t        ddd      }|j                  d      }t        d|      }t        d|      }||z   |j                  |u sJ |j                  |u sJ y )N
2016-01-01rB   CET)rT   tzUTCr   )r   
tz_convertr   rV   )r_   dtidti_utcr   ser_utcs        r"   test_alignment_doesnt_change_tzz4TestSeriesArithmetic.test_alignment_doesnt_change_tz=  sc    re<..'Rs#7+ 	gyyC}}'''r/   c                 :   t        g d      }t        d|      }t        d|d d       }||z  }dgdz  dgdz  z   d	gz   }t        j                  ||j                  
      }dgdz  t
        j                  gz   }t        ||      }t        j                  ||       y )N)3z53r  LoJGr  r  N503r&   r   r
  r  r}   r  r   r  )
categoriesr      )	r
   r   r   CategoricalIndexr  r(   r   r]   r   )r_   catser1ser2rf   r   r   rg   s           r"   test_alignment_categoricalz/TestSeriesArithmetic.test_alignment_categoricalJ  s    JKas#as3Bx(HqLF8a</6(:	''	cnnM	URZ266(*
*i0
vx0r/   c                    g d}t        t        j                  ddd      |      }t        t        j                  dd      |      }||z
  }t        dg d      }t        j                  ||       t        t        ddd	
      |      }t        t        ddd	
      |      }||z
  }t        t        d      g dd      }t        j                  ||       y )N)r&   r&   rv   rv   r}   rX   r   int64rC   r   r?   z20130101 09:00:00r  rT   r	  20130101z9 hoursr  r   )r   r(   rZ   r]   r   r   r   )r_   rV   r   rb   rf   rg   s         r"   $test_arithmetic_with_duplicate_indexz9TestSeriesArithmetic.test_arithmetic_with_duplicate_indexX  s      RYYq!735Aryy'2%@u!?3
vx0 Z 3QTJRWXz*adC5Qu)I.oXV
vx0r/   c                     t        dt        j                  gd      }t        ddgd      }||z  }t        dt        j                  gd      }t        j                  ||       y )Nr   floatrC   rX   Int64Float64)r   r(   r   r   NAr]   r   r_   r#  r$  rf   rg   s        r"   'test_masked_and_non_masked_propagate_naz<TestSeriesArithmetic.test_masked_and_non_masked_propagate_naj  sS    q"&&k1q!fG,1bee*I6
vx0r/   c                 B   t        dt        j                  ddgd      }t        ddt        j                  dg      }||z  }t        dt        j                  t        j                  dgd      }t        j                  ||       ||z  }t        j                  ||       y )N   r?   r}   r-  rC   r   r.  )r   r   r/  r(   r   r]   r   r0  s        r"   +test_mask_div_propagate_na_for_non_na_dtypez@TestSeriesArithmetic.test_mask_div_propagate_na_for_non_na_dtyper  s    r255!Q'w7r1bffa()3ruuc2)D
vx0
vx0r/   valrv   g      @c                     t        g dd      }|dd |gz   }t        dt        j                  d|z   gd      }t        j                  ||       dd |g|z   }t        j                  ||       y )N)rX   Nrv   r-  rC   rX   r&   rv   r.  )r   r   r/  r]   r   )r_   r5  r   rf   rg   s        r"   test_add_list_to_masked_arrayz2TestSeriesArithmetic.test_add_list_to_masked_array}  sk     \14~%1beeQW-Y?
vx0T3#%
vx0r/   c                     t        g dd      }|g dz   }t        dt        j                  dgt              }t	        j
                  ||       g d|z   }t	        j
                  ||       y )N)TNFbooleanrC   )TNTr&   rX   )r   r   r/  objectr]   r   r_   r   rf   rg   s       r"   %test_add_list_to_masked_array_booleanz:TestSeriesArithmetic.test_add_list_to_masked_array_boolean  sZ    (	:))1beeQ-v6
vx0#c)
vx0r/   )rp   rq   rr   r   r   r   r   r   r   rF   r   r   r   r   r  r  r  r  r%  r*  r1  r4  r7  r<  r5   r/   r"   r   r      s    
1 [[/7G$x&:;7G$x&:;	
117 [[WtU1X&67 81% 	5G
1 (11$1	1 [[UQH-1 .11r/   r   c                      e Zd Zej                  j                  dg d      d        Zd Zej                  j                  dg ddfg dd	fg dd
fg ddfg ddfg ddfg      d        Zej                  j                  d e	 e
g d             e	 ej                  ddd            gddg      d        Zej                  j                  dg dddfg dd	dfg dd
d fg d!dd fg d"dd fg ddd fg      d#        Zd'd%Zd'd&Zy$)(TestSeriesFlexComparisonr   )r   NrV   c                 Z   t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j	                  d            } t        ||j                        ||      } |||      }t        j                  ||       y )Nr&   rB   r   )	r   r(   r)   r*   r   r[   rp   r]   r   )r_   r   comparison_opr   r   rf   rg   s          r"   test_comparison_flex_basicz3TestSeriesFlexComparison.test_comparison_flex_basic  s    bii++A.>>rBCryy,,Q/??CD6}556u4H u-
vx0r/   c                    t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j	                  d            }d}t        j                  t        |      5   t        ||j                        |d       d d d        y # 1 sw Y   y xY w)Nr&   rB   zNo axis named 1 for object typer   rX   r   )
r   r(   r)   r*   r   r   r   
ValueErrorr[   rp   )r_   r@  r   r   r   s        r"   test_comparison_bad_axisz1TestSeriesFlexComparison.test_comparison_bad_axis  s    bii++A.>>rBCryy,,Q/??CD/]]:S1 	A1GD-001%a@	A 	A 	As   B44B=z
values, op)FFTFeq)TTFTnele)FFFFlt)FTTFge)FTFFgtc                     t        g dt        d            }t        g dt        d            } t        ||      |      }t        |t        d            }t        j                  ||       y )NrX   rv   r&   abcr   r&   r&   r&   bcdabcdr   listr[   r]   r   )r_   r   rd   r   r   rf   rg   s          r"   test_comparison_flex_alignmentz7TestSeriesFlexComparison.test_comparison_flex_alignment  sW     itE{3yU4"r"5)&V5
vx0r/   r   )r   r   r   2020Q1rv   QrT   r   categoricalperiod)r   c                     |j                   }|j                  ||j                  d         }t        g d      }t	        j
                  ||       y )Nr   r~   TTT)r   rE  r   r   r]   r   )r_   r   r   rf   rg   s        r"   +test_rhs_extension_array_eq_with_fill_valuezDTestSeriesFlexComparison.test_rhs_extension_array_eq_with_fill_value  sB     499Q<8,-
vx0r/   zvalues, op, fill_value)FFTTr&   )TTFFr   )FFFT)TTTFc                     t        g dt        d            }t        g dt        d            } t        ||      ||      }t        |t        d            }t        j                  ||       y )NrL  rM  r   rN  rO  r~   rP  rQ  )r_   r   rd   r   r   r   rf   rg   s           r"   #test_comparison_flex_alignment_fillz<TestSeriesFlexComparison.test_comparison_flex_alignment_fill  sY     itE{3yU4"r"5Z@&V5
vx0r/   Nc                     G d dt               }t        |j                  |j                  g      }|j                  |j                  g}|j	                  |j                        }t        ddg      }t        j                  ||       |j	                  |      }t        ddg      }t        j                  ||       |j	                  t        j                  |            }t        ddg      }t        j                  ||       |j	                  t        |            }t        ddg      }t        j                  ||       t        ddgddgg      j	                  ddg      }t        ddg      }t        j                  t              5  t        j                  ||       d d d        t        ddg      }t        j                  ||       y # 1 sw Y   -xY w)	Nc                   (    e Zd Z e       Z e       Zy)7TestSeriesFlexComparison.test_eq_objects.<locals>.ThingN)rp   rq   rr   r   FIRSTSECONDr5   r/   r"   Thingr`    s    FEVFr/   rc  TFrX   r&   rv   r}   )r   r   ra  rb  rE  r]   r   r(   asarrayr   r   AssertionError)r_   rc  r   py_lrf   rg   s         r"   test_eq_objectsz(TestSeriesFlexComparison.test_eq_objects  s|   	D 	 u{{ELL12U\\*%4-(
vx04,'
vx0D)*4,'
vx0&4,'
vx0!Q!Q(),,aV44-(]]>* 	5""684	55%.)
vx0	5 	5s   G

Gc                 ,   t        ddgddg      }ddg}|j                  |      }t        ddgddg      }t        j                  ||       |j                  t	        j
                  |            }t        ddgddg      }t        j                  ||       |j                  t        |            }t        ddg      }t        j                  ||       |j                  t        ddg            }t        ddg      }t        j                  ||       y )NrX   r&   r   r   TF)r   rE  r]   r   r(   rd  )r_   r   rf  rf   rg   s        r"   test_eq_with_indexz+TestSeriesFlexComparison.test_eq_with_index  s    q!fQF+1v 4,q!f5
vx0 D)*4,q!f5
vx0&5%.)
vx0A(4,'
vx0r/   )returnN)rp   rq   rr   r   r   r   rA  rD  rS  r   r
   r   r   r[  r]  rg  ri  r5   r/   r"   r>  r>    sW   [[V%781 91A [[($/&-($/)40'.($/	

1
1 [[;/0?2??8QSAB	
 H%  11 [[ 'q1'q1'q1($2&a0'q1	

1
11B1r/   r>  c                   j   e Zd Zd Zej
                  j                  dg d      d        Zej
                  j                  dg d      d        Zej
                  j                  dg d      d        Z	d	 Z
d
 Zd Zd Zd Zd Zd Zej
                  j                  dg dg dg      d        Zd Zy)TestSeriesComparisonc                 D   t        g d      }t        ddg      }d}t        j                  t        |      5  ||k   d d d        t        ddg      }t        g d      }t        j                  t        |      5  ||k(   d d d        y # 1 sw Y   MxY w# 1 sw Y   y xY w)	Nr   r   r   r   r   z'only compare identically-labeled Seriesr   rX   r&   )r&   rv   r}   )r   r   r   rC  )r_   r   r   r   s       r"    test_comparison_different_lengthz5TestSeriesComparison.test_comparison_different_length  s    ?#C:7]]:S1 	E	 Aq6N9]]:S1 	F	 		 	
	 	s   B
;B
BBrJ   )rE  rF  rJ  rH  rI  rG  c                     t        g dt        d            }d} t        ||      |      j                  }t	        j
                  d      }||k(  sJ y )NrL  rv   r   r&   bool)r   rF   r[   dtypesr(   rD   )r_   rJ   r   constrf   rg   s         r"   test_ser_flex_cmp_return_dtypesz4TestSeriesComparison.test_ser_flex_cmp_return_dtypes"  sN     YeAh/%f%e,3388F#!!!r/   c                     t        g dt        d            }|j                  d d }d} t        ||      |      j                  }t        j                  d      }||k(  sJ y )NrL  rv   r   r   r&   rq  )r   rF   r   r[   rr  r(   rD   )r_   rJ   r   r   rs  rf   rg   s          r"   %test_ser_flex_cmp_return_dtypes_emptyz:TestSeriesComparison.test_ser_flex_cmp_return_dtypes_empty+  s]     YeAh/!''.5588F#!!!r/   r   ))NNN)r   barN)bazrx  rx  c                    |}t        ddd|d         }t        |      j                  |d         } |||      }|j                  |d   k(  sJ |j	                  d      }t        j                  |d	
      }t        |      j                  |d         } |||      }|j                  |d   k(  sJ ||j                  d      z
  }t        |      j                  |d         } |||      }|j                  |d   k(  sJ |t        j                  t        j                  fv rUt        j                  dd|d         }t        |      j                  |d         } |||      }|j                  |d   k(  sJ |t        j                  t        j                  fv rL|j                  d      }	t        |	      j                  |d         } |||	      }|j                  |d   k(  sJ y y )Nz1949-06-07 03:00:00hr?   r   )r   rT   rW   rX   r&   z
US/Centralinferr   )startrT   rW   category)r   r   renamerW   tz_localizer   DatetimeIndexr   r\   rE  rF  interval_ranger   )
r_   r   r@  rd   r  r   rf   tdiiicidxs
             r"   test_ser_cmp_result_namesz.TestSeriesComparison.test_ser_cmp_result_names5  s   
 .S!%PQ(SSk  q*C{{eAh&&& ool+s1Sk  q*C{{eAh&&& CIIaL Sk  q*C{{eAh&&& (++x{{++""AE!HEB*##E!H-CR[F;;%(*** (++x{{++::j)D,%%eAh/CT]F;;%(*** ,r/   c                     t        g d      }t        g d      }t        g d      }t        j                  ||k(  |       t        j                  ||k(  |       y )Nrn  )FTFFFFr   )r_   sr   r   s       r"   test_comparisonsz%TestSeriesComparison.test_comparisons]  sL    ?#() *+
qBw,
rQw,r/   c                    t        t        d      d      }t        t        d      d      }t        g dd      }t        t        d      d      }t        t        d            }t        t        d            }|dk(  j                         rJ |dk7  |dk(   k(  j                         sJ d|k(  j                         rJ |dk(  d   sJ d|k(  d   sJ d|k7  d   rJ ||k(  j                         sJ ||k7  j                         rJ |t        |      k(  j                         sJ ||k(  j                         sJ ||k(  j                         sJ ||k(   ||k7  k(  j                         sJ ||k(   ||k7  k(  j                         sJ ||k(  j                         rJ ||k(  j                         rJ ||k(  j                         rJ ||k(  j                         rJ ||k(  j                         sJ ||k(  j                         sJ ||k(  j                         rJ ||k(  j                         rJ ||k(   ||k7  k(  j                         sJ ||k(   ||k7  k(  j                         sJ ||k(   ||k7  k(  j                         sJ ||k(   ||k7  k(  j                         sJ d	}t	        j
                  t        |
      5  ||k   d d d        t	        j
                  t        |
      5  ||k   d d d        t	        j
                  t        |
      5  ||kD   d d d        t	        j
                  t        |
      5  ||kD   d d d        y # 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   KxY w# 1 sw Y   y xY w)NrM  r}  rC   r:  )r   r   ccacbr   r    can only compare equality or notr   )r   rR  r
   r   r   r   r   )r_   r   r   r   r   r   fr   s           r"   test_categorical_comparisonsz1TestSeriesComparison.test_categorical_comparisonsi  sP    4;j14;h/#844;h/U$U$ H>>###cSk)..0001H>>###S!}}q!}}1Ha=   Q||~~F<<>!!T!W!!###Q||~~Q||~~6Q',,...6Q',,...F<<>!!F<<>!!F<<>!!F<<>!! Q||~~Q||~~F<<>!!F<<>!!q&	a1f%**,,,q&	a1f%**,,,q&	a1f%**,,,q&	a1f%**,,, 1]]9C0 	E	]]9C0 	E	]]9C0 	E	]]9C0 	E	 		 		 		 		 	s0   =M&MM8M+MMM(+M4c                    t        t        t        d                  }d}t        j                  t
        |      5  |dkD   d d d        t        t        t        d      d            }t        j                  t
        |      5  |dkD   d d d        t        t        t        d      d            }d}t        j                  t
        |      5  |d	k   d d d        t        j                  t
        |      5  |d	kD   d d d        t        j                  t
        |      5  d	|k   d d d        t        j                  t
        |      5  d	|kD   d d d        t        j                  |d	k(  t        g d
             t        j                  |d	k7  t        g d             y # 1 sw Y   `xY w# 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)NrM  r  r   r   F)orderedTz1Invalid comparison between dtype=category and strr   r  rZ  )r   r
   rR  r   r   r   r]   r   )r_   r"  r   s      r"   5test_unequal_categorical_comparison_raises_type_errorzJTestSeriesComparison.test_unequal_categorical_comparison_raises_type_error  s   [e-.0]]9C0 	#I	 [ee<=]]9C0 	#I	 [ed;<A]]9C0 	#I	]]9C0 	#I	]]9C0 	#I	]]9C0 	#I	 	scz62G+HI
scz62D+EF/	 		 		 		 		 		 	sG   FF,F96GGGF),F69GGGG&c                    t        ddg      }|dk(  }t        ddg      }t        j                  ||       |dk7  }t        ddg      }t        j                  ||       |dk(  }t        ddg      }t        j                  ||       |dk7  }t        ddg      }t        j                  ||       t        ddg      }|dk(  }t        ddg      }t        j                  ||       |dk7  }t        ddg      }t        j                  ||       y )N)rX   rX   )rX   r&   FT)r   r   r   )r_   r  rf   rg   s       r"   test_comparison_tuplesz+TestSeriesComparison.test_comparison_tuples  s    FF#$f5$-(
vx0f4-(
vx0f5%.)
vx0f4,'
vx0FF#$f4,'
vx0f5%.)
vx0r/   c                     t        t        dg      t        ddg      g      }|t        dg      k(  }t        ddg      }t        j                  ||       y )NrX   r&   TF)r   	frozensetr]   r   r;  s       r"   test_comparison_frozensetz.TestSeriesComparison.test_comparison_frozenset  sN    iniA&789	1#&4-(
vx0r/   c                    t        t        dd      t              }t        j                  |d d d<   |d   } |||      } ||j                         |      j                  |j                        }|t        j                  u r%|j                  d      j                  t              }n$|j                  d      j                  t              }t        j                  ||       y )	Nr   rB   rS   rC   r&   r?   TF)r   r   r:  r(   r   dropnar   rV   r\   rF  r   r   rq  r]   r   )r_   r@  r   r5  rf   rg   s         r"   "test_comparison_operators_with_nasz7TestSeriesComparison.test_comparison_operators_with_nas  s    [R8G66CaC !fsC( s3;;CIIFHKK't,33D9Hu-44T:H
vx0r/   c                     t        g dg dt              }t        j                  g d      }t	        j
                  |j                  dk7  |       t	        j
                  |j                  dk(   |       y )N)rv   r}   r?   r      rC   )TTFTTr?   )r   r,  r(   arrayr]   assert_numpy_array_equalrV   )r_   r2   rg   s      r"   test_nezTestSeriesComparison.test_ne  sR    O_EB88;<
##BHHM8<
##bhh!m$4h?r/   
right_datarN  )r&   r&   r&   r&   c                    t        g dt        d      d      }t        |t        d      d t        |       d      }|t         ur1d|j                   d}|j	                         }|j	                         }nd|j                   d}t        j                  t        |	      5  ||k(   d d d        t        j                  t        |	      5  ||k(   d d d        t        j                  t        |	      5  ||k7   d d d        t        j                  t        |	      5  ||k7   d d d        t        j                  t        |	      5  ||k   d d d        t        j                  t        |	      5  ||k   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   y xY w)
Nru   ABCr7   rU   ABDCz@Can only compare identically-labeled \(both index and columns\) z objectsz%Can only compare identically-labeled r   )r   rR  r,   rp   r  r   r   rC  )r_   r  frame_or_seriesr   r   r   s         r"   test_comp_ops_df_compatz,TestSeriesComparison.test_comp_ops_df_compat  s    itE{=zf6GJ)HsS&(S"++,H6  ==?DNN$E 88P8P7Q R  
 ]]:S1 	EM	]]:S1 	TM	 ]]:S1 	EM	]]:S1 	TM	 ]]:S1 	5L	]]:S1 	DL	 		 		 		 		 		 		 	sH   !E=
F	3FF!F-.F9=F	FF!F*-F69Gc                 n    t        g d      }|dk(  }t        g d      }t        j                  ||       y )N)	IntervalA	IntervalB	IntervalCr  )TFFr   r;  s       r"   $test_compare_series_interval_keywordz9TestSeriesComparison.test_compare_series_interval_keyword  s2    <=#./
vx0r/   N)rp   rq   rr   ro  r   r   r   rt  rv  r  r  r  r  r  r  r  r  r  r  r5   r/   r"   rl  rl    s    
 [[X'KL" M" [[X'KL" M" [[R#+#+J-6pG>1>11"@ [[\I|+DE FB1r/   rl  c                   $    e Zd Zd Zd Zd Zd Zy)TestTimeSeriesArithmeticc                 6   t        dddd      }t        j                  j                  d      j	                  d      d d }t        t        j                  j                  d      j                  d      |j                  |      j                  d      	      }t        j                  j                  d      j	                  d      d d }t        t        j                  j                  d      j                  d      |j                  |      j                  d
      	      }||z   }|j                  d      }|j                  d      }||z   }|j                         }|j                  j                  t        j                  u sJ t        j                  ||       y )N1/1/2011d   rz  utc)rT   r   r  r&   Z   z
US/Easternr   zEurope/Berlin)r   r(   r)   r*   r+   r   r   r'   r  
sort_indexrV   r  r   r  r]   r   )	r_   r   permr#  r$  rf   uts1uts2rg   s	            r"   +test_series_add_tz_mismatch_converts_to_utczDTestTimeSeriesArithmetic.test_series_add_tz_mismatch_converts_to_utc.  sD   SsuEyy$$Q'33C8"=II!!!$44R8((4.++L9

 yy$$Q'33C8"=II!!!$44R8((4.++O<

 u%u%$; &&(||(,,...
vx0r/   c                    t        ddd      }t        t        j                  j	                  d      j                  t        |            |      }|j                  d      }d}t        j                  t        |	      5  ||z    d d d        t        j                  t        |	      5  ||z    d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)
Nr  rB   rz  rV  r&   r   r  z0Cannot join tz-naive with tz-aware DatetimeIndexr   )r   r   r(   r)   r*   r   r,   r  r   r   	Exception)r_   r   r   r  r   s        r"   "test_series_add_aware_naive_raisesz;TestTimeSeriesArithmetic.test_series_add_aware_naive_raisesI  s    Rc:RYY**1-==c#hGsS//%(@]]9C0 	'M	 ]]9C0 	cM	 		 		 	s   ?B7(C7C Cc                 
   t        t        dd|            }t        j                  j	                  d      }||z
  }t        j
                  g d      j                  |      }t        |      }t        j                  ||       y )Nz
2012-01-01rv   r(  r   r   )z
2011-12-26z
2011-12-27z
2011-12-28)	r   r   r   offsets
DateOffsetto_datetimeas_unitr]   r   )r_   r	  ra   offsetrf   exp_dtirg   s          r"   test_datetime_understoodz1TestTimeSeriesArithmetic.test_datetime_understoodW  so     
<FG&&A&.&..!KLTT
 '?
vx0r/   c                    t        dd      }t        t        j                  j	                  d      j                  d      |      }|dd  }|j                         }|j                  D cg c]  }|j                          c}|_        ||z   }||z   }||dd  z   }|j                  j                  d       |_        t        j                  ||       t        j                  ||       y c c}w )Nr   rR   rS   r&   r   r?   )r   r   r(   r)   r*   r   copyrV   r   
_with_freqr]   r   )	r_   r   r2   ts_slicets2r7   rf   r   rg   s	            r"   *test_align_date_objects_with_datetimeindexzCTestTimeSeriesArithmetic.test_align_date_objects_with_datetimeindexc  s    R0BII))!,<<R@Lab6mmo'*yy1!QVVX1	c(12;!2248
vx0
w1 2s   *C(N)rp   rq   rr   r  r  r  r  r5   r/   r"   r  r  -  s    16
12r/   r  c            	           e Zd Zej                  j                  deeej                  e
eej                  g      ej                  j                  dddg      d               Zd Zd Zy)	TestNamePreservationboxflexTFc                 n   |}t        t        d      |d         }t        t        d      |d         }|j                  j                  d      }|dv }	d}
 ||      }|r|	ry  t	        ||      |      }nG|	r<|t
        t        fv r.t        j                  t        |
      5   |||       d d d        y  |||      }t        |t               sJ |t        t         fv r'|j                  |d	   u s|j                  |d	   k(  sJ y y |j                  |d   u s|j                  |d   k(  sJ y y # 1 sw Y   y xY w)
NrB   r   rx   rX   _)andrandxorrxororrorzLLogical ops \(and, or, xor\) between Pandas objects and dtype-less sequencesr   r&   )r   rF   rp   stripr[   rR  tupler   r   r   
isinstancer   rW   )r_   r  r  r   all_binary_operatorsrd   r   r   rW   
is_logicalr   rf   s               r"   test_series_ops_name_retentionz3TestNamePreservation.test_series_ops_name_retentiont  s=    "eBieAh/uRyuQx0{{  %HH
# 	
 E
(WT4(/FcdE]2]]9C8 $tUO$ e_F&&)))5&/!;;%(*fkkU1X.EEE.E*;;%(*fkkU1X.EEE.E*$ s   !
D++D4c                    ||z  }|j                   |j                   k(  sJ |j                  |      }|j                   |j                   k(  sJ ||d d z  }|j                   |j                   k(  sJ |j                         }d|_         ||z   }|j                   J |j                  |      }|j                   J g d}||D cg c]  }d|z   	 c}z   }|D ]v  }|j                         } t	        ||      |      }|j                   |j                   k(  sJ |j                         }d|_          t	        ||      |      }|j                   vJ  y c c}w )Nzsomething else)rK   rL   rM   r   rO   rN   r   rP   rY   changed)rW   rM   r  rK   r[   )r_   r   rf   cpr   rd   r   s          r"   test_binop_maybe_preserve_namez3TestNamePreservation.test_binop_maybe_preserve_name  sk    ?2{{o22222 $$_5{{o22222 ?3B#77{{o22222 !!#" 2%{{""" $$R({{"""O,"S2X,, 
	'B!&&(C%WS"%c*F;;/"6"6666 !%%'BBG%WS"%b)F;;&&&
	' -s   Ec                 D    |dz  }|j                   |j                   k(  sJ y r%   rx   )r_   r   rf   s      r"   test_scalarop_preserve_namez0TestNamePreservation.test_scalarop_preserve_name  s$     1${{o22222r/   N)rp   rq   rr   r   r   r   rR  r  r(   r  r   r   r   r  r  r  r5   r/   r"   r  r  s  sf    [[UT5"((E6288$TU[[VdE]3!F 4 V!FF'@3r/   r  c                   P    e Zd Zej                  j                  dd      d        Zy)TestInplaceOperationsz)dtype1, dtype2, dtype_expected, dtype_mul))r-  r-  r-  r-  )r,  r,  r,  r,  )r-  r,  r.  r.  )r-  r.  r.  r.  c                 2   t        dg|      }t        dg|      }||z  }t        dg|      }t        j                  ||       ||z  }t        dg|      }t        j                  ||       ||z  }t        dg|      }t        j                  ||       y )NrX   rC   r&   rv   r   )r_   dtype1dtype2dtype_expected	dtype_mulr#  r$  rg   s           r"   test_series_inplace_opsz-TestInplaceOperations.test_series_inplace_ops  s     qc(qc(1#^4
tX.1#^4
tX.1#Y/
tX.r/   N)rp   rq   rr   r   r   r   r  r5   r/   r"   r  r    s+    [[3	
//r/   r  c                    |}t        |      dk  r/| j                  t        j                  j	                  d             t
        j                  |j                  d<   |d k(  }|j                  d   rJ |j                  d   rJ |d k7  }|j                  d   sJ |j                  d   sJ d |k(  }|j                  d   rJ |j                  d   rJ d |k7  }|j                  d   sJ |j                  d   sJ t        j                  |j                  d      st        |j                  t              rUd}t        j                  t        |      5  d |kD   d d d        t        j                  t        |      5  |d kD   d d d        y d |kD  }|j                  d   rJ |j                  d   rJ |d k  }|j                  d   rJ |j                  d   rJ y # 1 sw Y   xY w# 1 sw Y   y xY w)NrX   z%Test doesn't make sense on empty data)reasonr   MzInvalid comparisonr   )r,   applymarkerr   r   xfailr(   r   r   iatr	   is_np_dtyperD   r  r   r   r   )r   series_with_simple_indexra   rf   r   s        r"   test_none_comparisonr    s   %F
6{QKK%LM	
 VVFKKN t^Fzz!}zz!} t^F::a==::a==V^Fzz!}zz!}V^F::a==::a==
v||S)Zo-V #]]9C0 	6M	]]9C0 	TM	 	 ::a=  ::a=  $::a=  ::a=  =	 		 	s   G9G#G #G,c            	      <   t        t        d      t        j                  j	                  t        d      t        d      ddggg d            } t        t        dd	      D cg c]  }d
|z  	 c}t        j                  j	                  t        d      ddggddg            }| j                  t        j                  dgd d d d f      |z   }t        g dt        j                  j                  g dg d            }t        j                  ||       y c c}w )N   abxyrX   r&   )r  r  numr   r   r?     r  r   )r  i  i  i  ))r   r7   rX   )r   r7   r&   )r   r   rX   )r   r   r&   )r   rF   r   r   r   rR  loc
IndexSlicefrom_tuplesr]   r   )r   r   r   rf   rg   s        r"   'test_series_varied_multiindex_alignmentr  
  s    	amm(($ZdaV,4G ) 

B 
 A;'a'mm(($t*q!f)=dE](S
B VVBMM3%A+./"4F mm''H% ( 
H 68, 	(s   "Dc                      t        dgdz        j                  d      } t        dgdz        }t        j                  | |       y )Nr&   i'  r
  rX   )r   rmodr]   r   )rf   rg   s     r"   !test_rmod_consistent_large_seriesr  !  s=    QC%K %%b)FqcEk"H68,r/   rV   r  rv   rS   z
US/Pacific)r  rT   z1 Dayc                 &   t        d|       }t        d| j                  d            }||k(  }t        g d|j                        }t        j                  ||       ||k  }t        g d|j                        }t        j                  ||       y )NrX   r   r  rZ  r  )r   r  rV   r]   r   )rV   r   r$  rf   rg   r   	expected2s          r"   )test_comparison_mismatched_datetime_unitsr  )  sy     %
 C!5==./DD[F(		:H68,SjG,DJJ?I7I.r/   )2r   r   r   r   decimalr   enumr   r   r\   numpyr(   r   pandas._libsr	   pandasr   r
   r   r   r   r   r   r   r   pandas._testing_testingr]   pandas.corer   pandas.core.computationr   r   fixturer#   r.   r1   r   r>  rl  r  r  r  r  r  r  r   r   timedelta_ranger  r5   r/   r"   <module>r     s2   
      	 	 	   7 a\	87LM NDZ  Z zF1 F1Z{1 {1|O1 O1pC2 C2LH3 H3V/ /8-!`-.- <+<L!<7A.//r/   