U
    >vf~                     @   sZ  d dl mZmZmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZmZ d dlZd dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZ  d d	l!m"Z" e	j#d
d dgddgddd Z$dd Z%G dd dZ&G dd dZ'G dd dZ(G dd dZ)G dd dZ*G dd dZ+G dd  d Z,d!d" Z-d#d$ Z.d%d& Z/dS )'    )date	timedeltatimezone)DecimalN)IncompatibleFrequency)is_datetime64_dtypeis_datetime64tz_dtype)CategoricalIndexSeries	Timedeltabdate_range
date_rangeisna)nanopsops)expressions)NUMEXPR_INSTALLEDTi@B numexprpython)Zautouseparamsidsc                 c   s    t j}| jt _| jV  |t _d S N)expr_MIN_ELEMENTSparam)requestr    r   G/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/series/test_arithmetic.pyswitch_numexpr_min_elements&   s    r   c                 C   s   |  tjt| S r   )takenprandompermutationlen)objr   r   r   _permute.   s    r&   c                
   @   s  e Zd Zejddd dd dfdd dd dfdd d	d d
fdd dd d
fgejdddddddgdd Zdd Zdd Ze	j
ejdfe	jejdfgZdD ]VZdZee	eZeeeZee	de ZefddZeeeef eeeef qejdedd  Zd!S )"TestSeriesFlexArithmetictsc                 C   s   | S r   r   xr   r   r   <lambda>6       z!TestSeriesFlexArithmetic.<lambda>c                 C   s   | d S N   r   r)   r   r   r   r+   6   r,   Fc                 C   s   | S r   r   r)   r   r   r   r+   7   r,   c                 C   s   | d d d S r-   r   r)   r   r   r   r+   7   r,   c                 C   s   | S r   r   r)   r   r   r   r+   8   r,   c                 C   s   dS )N   r   r)   r   r   r   r+   8   r,   Tc                 C   s   t  S r   )tmZmakeFloatSeriesr)   r   r   r   r+   9   r,   opnameaddsubmulfloordivtruedivpowc                 C   s   t  d}|d |}|d |}|d }tt|}tt|}|||}	|||}
t |	|
 |rttd| }|||}	|||}
t |	|
 d S )Nr(   r      r.   r)r0   ZmakeTimeSeriesrenamegetattrr   operatorassert_almost_equal)selfr1   r(   ZtserseriesotherZcheck_reverseopZaltresultexpectedropr   r   r   test_flex_method_equivalence3   s    





z5TestSeriesFlexArithmetic.test_flex_method_equivalencec                    sV   G  fdddt  |}tt |} dddgdd}d|_||d}|jdksRtd S )	Nc                       s"   e Zd ZdgZe fddZdS )zZTestSeriesFlexArithmetic.test_flex_method_subclass_metadata_preservation.<locals>.MySeriesr*   c                    s    S r   r   )r>   MySeriesr   r   _constructorX   s    zgTestSeriesFlexArithmetic.test_flex_method_subclass_metadata_preservation.<locals>.MySeries._constructorN)__name__
__module____qualname__	_metadatapropertyrH   r   rF   r   r   rG   U   s   rG   r8   r.      testname*   )r   r;   r*   AssertionError)r>   Zall_arithmetic_operatorsr1   rA   mrB   r   rF   r   /test_flex_method_subclass_metadata_preservationS   s    

zHTestSeriesFlexArithmetic.test_flex_method_subclass_metadata_preservationc                 C   sD   t ddtjdddg}|dd}|jddd}t|| d S )Nr   r8   rN      r/   r.   
fill_value)r   r!   nanfillnar2   r0   assert_series_equal)r>   serexpresr   r   r   test_flex_add_scalar_fill_valuec   s    z8TestSeriesFlexArithmetic.test_flex_add_scalar_fill_valuer8   )r2   r3   r4   r7   r6   r5   r   r9   c                 C   s   t t||| S r   )r;   r<   )r*   yrA   r   r   r   r+   r   r,   zop, equiv_op, fvc           	      C   s   ddd}t tjdddtjgtdd}t tjd	tjd
tjdgtdd}|||}|||}t|| ||||||d |||dd d S )Nr   c              
   S   s  |j |j }||}||}t|}t|}g }tt|D ]}	tjdd ||	 r||	 r||tj	 W 5 Q R  qB|||||	  nV||	 r||	 r|tj	 W 5 Q R  qB||||	 | n||||	 ||	  W 5 Q R X qB| |||d}
t
||}t|
| d S )Nignore)allrW   )indexunionreindexr   ranger$   r!   errstateappendrY   r   r0   r[   )methrA   abrX   	exp_indexZamaskZbmask
exp_valuesirB   rC   r   r   r   _check_fillx   s,    

$
zDTestSeriesFlexArithmetic.test_operators_combine.<locals>._check_fill      ?g       @g      @r/   rc   r8   rN         @   rW   axis)r   )r   r!   rY   aranger0   r[   )	r>   rA   Zequiv_opfvro   rj   rk   rB   r]   r   r   r   test_operators_combinev   s    
 $

z/TestSeriesFlexArithmetic.test_operators_combineN)rI   rJ   rK   pytestmarkparametrizerE   rU   r_   r   divr<   r6   Zrdivr   ZrtruedivZpairingsrA   rw   r;   ZlopZlequivrD   Zrequivrh   rx   r   r   r   r   r'   2   s4   	 

r'   c                   @   s   e Zd Zdd Zejddddgddgfd	ddgd
dgfgdd Zdd Zejdde	dgdd Z
dd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zejd+d,d-gd.d/ Zd0d1 ZdS )2TestSeriesArithmeticc              	   C   s   t jdddd}ttjt||d}||d d d  }|| }tj|jdd d< t	
|| |t|d d d  }t	
|| d}tjt|d	 ||jd
dd  W 5 Q R X d S )N1/1/2000z1/1/2010Afreqrq   r.   r8   z4Input has different freq=D from Period\(freq=A-DEC\)matchDend)how)pdZperiod_ranger   r!   r"   randnr$   rY   ilocr0   r[   r&   ry   raisesr   Zasfreq)r>   rngr(   rB   rC   msgr   r   r   !test_add_series_with_period_index   s    z6TestSeriesArithmetic.test_add_series_with_period_indexz%target_add,input_value,expected_value!ZhelloZworldzhello!zworld!rT   ZhellomZworldmc                 C   s(   t |}|| }t |}t|| d S r   r   r0   r[   )r>   Z
target_addZinput_valueZexpected_valuerj   rB   rC   r   r   r   test_string_addition   s    	z)TestSeriesArithmetic.test_string_additionc                 C   s   t dddtjgddddgd}t dtjdtjgddddgd}||}t||}t|d	 |d	  t|d |d  ||}t||}t|d	 |d	  t|d |d  d S )
Nr8   rj   rk   cdrq   r.   er   )r   r!   rY   divmodr0   r[   Zrdivmod)r>   rj   rk   rB   rC   r   r   r   test_divmod   s     



z TestSeriesArithmetic.test_divmodrc   N	   c              	   C   sD   t tdd}t d|d}d}tjt|d ||  W 5 Q R X d S )Nr8   
   foorq   z4not all arguments converted during string formattingr   )r   rf   ry   r   	TypeError)r>   rc   s1s2r   r   r   r   test_series_integer_mod   s
    z,TestSeriesArithmetic.test_series_integer_modc                 C   sZ   t ddgddgd}t ddgddgd}|| }t ddtjgdddgd}t|| d S )Nr8   r.   rq   r         )r   r!   rY   r0   r[   )r>   r   r   rB   rC   r   r   r   test_add_with_duplicate_index   s
    z2TestSeriesArithmetic.test_add_with_duplicate_indexc                 C   sl   t tdtdgtdddtdddgd}||d }|d| }t|d sXtt|d shtd S )Nz1.3z2.3i  r8   r.   rq   r   )r   r   r   shiftr   rS   )r>   r\   rB   result2r   r   r   test_add_na_handling   s     z)TestSeriesArithmetic.test_add_na_handlingc                 C   sN   t g tg tjd}|| }t| s.t||  }t|dksJtd S )N)rc   dtyper   )	r   r
   r!   Zfloat64isnanrb   rS   copyr$   )r>   datetime_seriesemptyrB   r   r   r   test_add_corner_cases   s
    z*TestSeriesArithmetic.test_add_corner_casesc                 C   sZ   | td d }|| }t|jd d |j |jd d dd}t|d d | d S )Nr(   rc   rQ   )astypeintr   valuesrc   r0   r[   )r>   r   Zint_tsaddedrC   r   r   r   test_add_float_plus_int   s    z,TestSeriesArithmetic.test_add_float_plus_intc                 C   s>   t g g tjd}t ddi}t|| t tjgdgd d S )Nr   r*   g        rq   )r   r!   Zint32r0   r[   rY   )r>   r   r   r   r   r   test_mul_empty_int_corner_case  s    z3TestSeriesArithmetic.test_mul_empty_int_corner_casec                 C   s   t tdddd}tj|jd< |d d d }t tdtdtjg}|| }t	|| t |dd}|
 |
  d }t	|| d S )	Nz2012-1-1rN   r   periodsr   r.   r   rP   )r   r   r!   rY   r   r   r   ZNaTr0   r[   to_frame)r>   dtZdt2rC   rB   r   r   r   test_sub_datetimelike_align  s    z0TestSeriesArithmetic.test_sub_datetimelike_alignc                 C   sX   t dddd}|d}td|d}td|d}||  |j|ksFt|j|ksTtd S )Nz
2016-01-01r   ZCET)r   tzUTCrq   )r   
tz_convertr   rc   rS   )r>   dtiZdti_utcr\   ser_utcr   r   r   test_alignment_doesnt_change_tz  s    
z4TestSeriesArithmetic.test_alignment_doesnt_change_tzc                 C   s   t ddddddg}td|d}td|d d d}|| }dgd dgd  dg }tj||jd	}d
gd tjg }t||}t|| d S )NZ3z53ZLoJGZN503r.   rq   r   rV   r   )
categoriesrr      )	r	   r   r   ZCategoricalIndexr   r!   rY   r0   r[   )r>   catser1ser2rB   rl   rm   rC   r   r   r   test_alignment_categorical#  s    
z/TestSeriesArithmetic.test_alignment_categoricalc                 C   s   dddddg}t tjdddd|d}t tjd	dd|d}|| }t ddddddgd}t|| t td
d	d|d}t tdd	d|d}|| }t tddddddgd}t|| d S )Nr.   rN   rV   r8   rs   Zint64r   rq   r/   z20130101 09:00:00r   Z20130101z9 hours)r   r!   rv   r0   r[   r   r   )r>   rc   r\   r@   rB   rC   r   r   r   $test_arithmetic_with_duplicate_index1  s    z9TestSeriesArithmetic.test_arithmetic_with_duplicate_indexc                 C   sL   t dtjgdd}t ddgdd}|| }t dtjgdd}t|| d S )Nr   floatr   r8   Int64Float64)r   r!   rY   r   NAr0   r[   r>   r   r   rB   rC   r   r   r   'test_masked_and_non_masked_propagate_naC  s
    z<TestSeriesArithmetic.test_masked_and_non_masked_propagate_nac                 C   sl   t dtjddgdd}t ddtjdg}|| }t dtjtjdgdd}t|| || }t|| d S )N   r/   rV   r   r   rp   r   )r   r   r   r!   rY   r0   r[   r   r   r   r   +test_mask_div_propagate_na_for_non_na_dtypeK  s    z@TestSeriesArithmetic.test_mask_div_propagate_na_for_non_na_dtypez
val, dtype)rN   r   )g      @r   c                 C   s`   t dd dgdd}|dd |g }t dd d| g|d}t|| dd |g| }t|| d S )Nr8   rN   r   r   r.   r   )r>   valr   r\   rB   rC   r   r   r   test_add_list_to_masked_arrayV  s    z2TestSeriesArithmetic.test_add_list_to_masked_arrayc              	   C   s   |j jjdkrtrtnd }tdd dgdd}t| |dd dg }W 5 Q R X tdd dgdd}t|| t| dd dg| }W 5 Q R X t|| d S )Nr   TFbooleanr   )	nodeZcallspecidr   UserWarningr   r0   Zassert_produces_warningr[   )r>   r   warningr\   rB   rC   r   r   r   %test_add_list_to_masked_array_booleana  s    z:TestSeriesArithmetic.test_add_list_to_masked_array_boolean)rI   rJ   rK   r   ry   rz   r{   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}      s2   



	

r}   c                   @   s  e Zd Zejddddgdd Zdd Zejd	d
d
dd
gdfddd
dgdfd
d
dd
gdfd
d
d
d
gdfd
ddd
gdfd
dd
d
gdfgdd Zejdd
d
ddgddfddd
d
gddfd
d
ddgddfd
d
d
dgddfdddd
gddfddd
d
gddfgdd Z	dS )TestSeriesFlexComparisonru   r   Nrc   c                 C   sN   t tjd}t tjd}t||j||d}|||}t|| d S )Nr   rt   )r   r!   r"   r   r;   rI   r0   r[   )r>   ru   comparison_opleftrightrB   rC   r   r   r   test_comparison_flex_basicx  s
    
z3TestSeriesFlexComparison.test_comparison_flex_basicc              	   C   sV   t tjd}t tjd}d}tjt|d t||j|dd W 5 Q R X d S )Nr   zNo axis named 1 for object typer   r8   rt   )	r   r!   r"   r   ry   r   
ValueErrorr;   rI   )r>   r   r   r   r   r   r   r   test_comparison_bad_axis  s
    z1TestSeriesFlexComparison.test_comparison_bad_axisz
values, opFTeqneleltgegtc                 C   sZ   t dddgtdd}t dddgtdd}t|||}t |tdd}t|| d S )Nr8   rN   r.   abcrq   bcdabcdr   listr;   r0   r[   )r>   r   rA   r   r   rB   rC   r   r   r   test_comparison_flex_alignment  s
    z7TestSeriesFlexComparison.test_comparison_flex_alignmentzvalues, op, fill_valuer.   c                 C   s^   t dddgtdd}t dddgtdd}t||||d}t |tdd}t|| d S )	Nr8   rN   r.   r   rq   r   rW   r   r   )r>   r   rA   rX   r   r   rB   rC   r   r   r   #test_comparison_flex_alignment_fill  s
    z<TestSeriesFlexComparison.test_comparison_flex_alignment_fill)
rI   rJ   rK   ry   rz   r{   r   r   r   r   r   r   r   r   r   w  s2   

r   c                
   @   s(  e Zd Zdd Zejddddddd	gd
d Zejddddddd	gdd Zejddddgdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zd d! Zejd"ed#d$d%ged&d'd(ed$d$d$ged)d'd(fed#d$d%ged&d'd(ed$d$d$d$ged*d'd(fgd+d, Zd-d. Zd/S )0TestSeriesComparisonc              	   C   s   t dddg}t ddg}d}tjt|d ||k  W 5 Q R X t ddg}t ddd	g}tjt|d ||k W 5 Q R X d S )
Nrj   rk   r   z'only compare identically-labeled Seriesr   r8   r.   rN   rV   )r   ry   r   r   )r>   rj   rk   r   r   r   r    test_comparison_different_length  s    z5TestSeriesComparison.test_comparison_different_lengthr1   r   r   r   r   r   r   c                 C   sD   t dddgtdd}d}t|||j}td}||ks@td S )Nr8   rN   r.   rq   bool)r   rf   r;   dtypesr!   r   rS   )r>   r1   r\   constrB   rC   r   r   r   test_ser_flex_cmp_return_dtypes  s
    
z4TestSeriesComparison.test_ser_flex_cmp_return_dtypesc                 C   sR   t dddgtdd}|jd d }d}t|||j}td}||ksNtd S )Nr8   rN   r.   rq   r   r   )r   rf   r   r;   r   r!   r   rS   )r>   r1   r\   r   r   rB   rC   r   r   r   %test_ser_flex_cmp_return_dtypes_empty  s    
z:TestSeriesComparison.test_ser_flex_cmp_return_dtypes_emptynames)NNN)r   barN)bazr   r   c           
      C   sn  |}t ddd|d d}t||d }|||}|j|d ksFt|d}tj|d	d
}t||d }|||}|j|d kst||d }t||d }|||}|j|d kst|t	j
t	jfkrtjdd|d d}t||d }|||}|j|d kst|t	j
t	jfkrj|d}	t|	|d }|||	}|j|d ksjtd S )Nz1949-06-07 03:00:00Hr/   r   )r   r   rQ   r8   r.   z
US/CentralZinferr   )startr   rQ   category)r   r   r:   rQ   rS   tz_localizer   ZDatetimeIndexr   r<   r   r   Zinterval_ranger   )
r>   r   r   rA   r   r\   rB   ZtdiiiZcidxr   r   r   test_ser_cmp_result_names  s0    






z.TestSeriesComparison.test_ser_cmp_result_namesc              	   C   s   t jd}t jd}t j|d d< t||}t jdd ||kd}W 5 Q R X t j|d d< t	|| t
dddg}t
d	d
d	g}t
d	d	d	g}t||k| t||k| d S )Nr   rN   ra   )invalidOrj   rk   r   FT)r!   r"   r   rY   r   Znangtrg   r   r0   r=   r   r[   )r>   r   r   rB   rC   sr   r]   r   r   r   test_comparisons  s    z%TestSeriesComparison.test_comparisonsc              	   C   s  t tddd}t tddd}t dddgdd}t tddd}ttd}ttd}|dk rjt|dk|dk k std|k rt|dkd	 std|kd	 std|kd	 rt||k st||k rt|t|k st||k s
t||k st||k ||kk s8t||k ||kk sTt||k rft||k rxt||k rt||k rt||k st||k st||k rt||k rt||k ||kk s t||k ||kk st||k ||kk s8t||k ||kk sTtd
}tjt|d ||k  W 5 Q R X tjt|d ||k  W 5 Q R X tjt|d ||k W 5 Q R X tjt|d ||k W 5 Q R X d S )Nr   r   r   objectrj   rk   ccZacbr    can only compare equality or notr   )r   r   r	   rb   rS   ry   r   r   )r>   rj   rk   r   r   r   fr   r   r   r   test_categorical_comparisons  sP    z1TestSeriesComparison.test_categorical_comparisonsc              	   C   sD  t ttd}d}tjt|d |dk W 5 Q R X t ttddd}tjt|d |dk W 5 Q R X t ttddd}d}tjt|d |d	k  W 5 Q R X tjt|d |d	k W 5 Q R X tjt|d d	|k  W 5 Q R X tjt|d d	|k W 5 Q R X t|d	kt dddg t|d	kt dddg d S )
Nr   r   r   rk   F)ZorderedTz1Invalid comparison between dtype=category and strr   )r   r	   r   ry   r   r   r0   r[   )r>   r   r   r   r   r   5test_unequal_categorical_comparison_raises_type_errorD  s&    zJTestSeriesComparison.test_unequal_categorical_comparison_raises_type_errorc                 C   s   t ddg}|dk}t ddg}t|| |dk}t ddg}t|| |dk}t ddg}t|| |dk}t ddg}t|| t ddg}|dk}t ddg}t|| |dk}t ddg}t|| d S )N)r8   r8   )r8   r.   FT)r   r   r   )r>   r   rB   rC   r   r   r   test_comparison_tuplesc  s(    z+TestSeriesComparison.test_comparison_tuplesc                 C   sD   t tdgtddgg}|tdgk}t ddg}t|| d S )Nr8   r.   TF)r   	frozensetr0   r[   r>   r\   rB   rC   r   r   r   test_comparison_frozenset  s    z.TestSeriesComparison.test_comparison_frozensetc                 C   s   t tdddtd}tj|d d d< |d }|||}|| ||j}|tj	krh|
dt}n|
dt}t|| d S )	Nr~   r   r   r   r.   r/   TF)r   r   r   r!   rY   Zdropnare   rc   r<   r   rZ   r   r   r0   r[   )r>   r   r\   r   rB   rC   r   r   r   "test_comparison_operators_with_nas  s    

z7TestSeriesComparison.test_comparison_operators_with_nasc                 C   sb   t dddddgdddddgtd}dddddg}t|jdk|sFtt|jdk |s^td S )	NrN   rV   r/   rs      r   TF)r   r   r0   ZequalContentsrc   rS   )r>   r(   rC   r   r   r   test_ne  s    "zTestSeriesComparison.test_nezleft, rightr8   r.   rN   ABCr*   r   ZABDABCDc              	   C   s  |t k	r(d|j d}| }| }nd|j d}tjt|d ||k W 5 Q R X tjt|d ||k W 5 Q R X tjt|d ||k W 5 Q R X tjt|d ||k W 5 Q R X tjt|d ||k  W 5 Q R X tjt|d ||k  W 5 Q R X d S )Nz@Can only compare identically-labeled \(both index and columns\) z objectsz%Can only compare identically-labeled r   )r   rI   r   ry   r   r   )r>   r   r   Zframe_or_seriesr   r   r   r   test_comp_ops_df_compat  s&    
z,TestSeriesComparison.test_comp_ops_df_compatc                 C   s4   t dddg}|dk}t dddg}t|| d S )NZ	IntervalAZ	IntervalBZ	IntervalCTFr   r  r   r   r   $test_compare_series_interval_keyword  s    z9TestSeriesComparison.test_compare_series_interval_keywordN)rI   rJ   rK   r   ry   rz   r{   r   r   r   r   r  r  r  r  r  r
  r   r   r  r  r   r   r   r   r     s:   

	 
%8
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestTimeSeriesArithmeticc           	      C   s   t ddddd}tjdd d }ttjd||dd}tjdd d }ttjd||d	d}|| }|d}|d}|| }|jj	t
jkstt|| d S )
N1/1/2011d   r   utc)r   r   r   Z   z
US/Easternrq   zEurope/Berlin)r   r!   r"   r#   r   r   r    r   rc   r   r   r  rS   r0   r[   )	r>   r   permr   r   rB   Zuts1Zuts2rC   r   r   r   +test_series_add_tz_mismatch_converts_to_utc  s"    
 
 

zDTestTimeSeriesArithmetic.test_series_add_tz_mismatch_converts_to_utcc              	   C   s|   t dddd}ttjt||d}|d}d}tjt	|d ||  W 5 Q R X tjt	|d ||  W 5 Q R X d S )	Nr  r   r   r   rq   r  z0Cannot join tz-naive with tz-aware DatetimeIndexr   )
r   r   r!   r"   r   r$   r   ry   r   	Exception)r>   r   r\   r   r   r   r   r   "test_series_add_aware_naive_raises  s    
z;TestTimeSeriesArithmetic.test_series_add_aware_naive_raisesc                 C   sJ   t tddd}tjjdd}|| }t tdddg}t|| d S )	Nz
2012-01-01rN   r   rs   )daysz
2011-12-26z
2011-12-27z
2011-12-28)r   r   r   offsetsZ
DateOffsetZto_datetimer0   r[   )r>   r?   offsetrB   rC   r   r   r   test_datetime_understood  s
    z1TestTimeSeriesArithmetic.test_datetime_understoodc                 C   s   t ddd}ttjd|d}|dd  }| }dd |jD |_|| }|| }||dd   }|jd |_t	|| t	|| d S )Nr~      r   rq   r/   c                 S   s   g | ]}|  qS r   )r   ).0r*   r   r   r   
<listcomp>  s     zWTestTimeSeriesArithmetic.test_align_date_objects_with_datetimeindex.<locals>.<listcomp>)
r   r   r!   r"   r   r   rc   Z
_with_freqr0   r[   )r>   r   r(   Zts_sliceZts2rB   r   rC   r   r   r   *test_align_date_objects_with_datetimeindex  s    zCTestTimeSeriesArithmetic.test_align_date_objects_with_datetimeindexN)rI   rJ   rK   r  r  r  r  r   r   r   r   r    s   	r  c                	   @   sT   e Zd Zejdeeej	e
eej	gejdddgdd Zdd Zd	d
 ZdS )TestNamePreservationboxflexTFc                 C   s   |}t td|d d}t td|d d}|jd}|dk}	||}|rd|	rTd S t|||}
n
|||}
t|
t s|t|tt fkr|
j|d ks|
j|d kstn |
j|d ks|
j|d kstd S )Nr   r   rP   r8   _)andZrandxorZrxororZrorr.   )	r   rf   rI   stripr;   
isinstancerS   r
   rQ   )r>   r"  r!  r   Zall_binary_operatorsrA   r   r   rQ   Z
is_logicalrB   r   r   r   test_series_ops_name_retention  s    
"z3TestNamePreservation.test_series_ops_name_retentionc                 C   s  || }|j |j kst||}|j |j ks2t||d d  }|j |j ksRt| }d|_ || }|j d ksvt||}|j d kstddddddd	d
g}|dd |D  }|D ]T}| }t|||}|j |j kst| }d|_ t|||}|j d kstqd S )Nzsomething elser2   r3   r4   r|   r6   r5   modr7   c                 S   s   g | ]}d | qS )r9   r   )r  rA   r   r   r   r  G  s     zGTestNamePreservation.test_binop_maybe_preserve_name.<locals>.<listcomp>changed)rQ   rS   r4   r   r2   r;   )r>   r   rB   cpr   rA   r\   r   r   r   test_binop_maybe_preserve_name4  s,    

z3TestNamePreservation.test_binop_maybe_preserve_namec                 C   s   |d }|j |j kstd S r-   )rQ   rS   )r>   r   rB   r   r   r   test_scalarop_preserve_nameT  s    z0TestNamePreservation.test_scalarop_preserve_nameN)rI   rJ   rK   ry   rz   r{   r   tupler!   arrayr
   r   r   r)  r.  r/  r   r   r   r   r     s
    r   c                   @   s"   e Zd Zejdddd ZdS )TestInplaceOperationsz)dtype1, dtype2, dtype_expected, dtype_mul))r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                 C   s   t dg|d}t dg|d}||7 }t dg|d}t|| ||8 }t dg|d}t|| ||9 }t dg|d}t|| d S )Nr8   r   r.   rN   r   )r>   Zdtype1Zdtype2Zdtype_expectedZ	dtype_mulr   r   rC   r   r   r   test_series_inplace_opsZ  s    z-TestInplaceOperations.test_series_inplace_opsN)rI   rJ   rK   ry   rz   r{   r3  r   r   r   r   r2  Y  s
   	r2  c              	   C   sv  |}t |dk r&| jtjjdd tj|jd< |d k}|j	d rHt
|j	d rVt
|d k}|j	d slt
|j	d szt
d |k}|j	d rt
|j	d rt
d |k}|j	d st
|j	d st
t|jst|jr"d}tjt|d d |k W 5 Q R X tjt|d |d k W 5 Q R X nPd |k}|j	d r:t
|j	d rJt
|d k }|j	d rbt
|j	d rrt
d S )Nr8   z%Test doesn't make sense on empty data)reasonr   zInvalid comparisonr   )r$   r   Z
add_markerry   rz   Zxfailr!   rY   r   ZiatrS   r   r   r   r   r   )r   Zseries_with_simple_indexr?   rB   r   r   r   r   test_none_comparisonu  s<    r5  c                  C   s   t tdtjjtdtdddggdddgdd} t d	d
 tddD tjjtdddggddgdd}| jtjdgd d d d f  | }t ddddgtjjddddgdddgdd}t	
|| d S )N   abZxyr8   r.   num)r   rq   c                 S   s   g | ]}d | qS )  r   )r  rn   r   r   r   r    s     z;test_series_varied_multiindex_alignment.<locals>.<listcomp>r/   rj   r9  i  i  i  )r*   r8   rj   )r*   r.   rj   )r`   r8   rj   )r`   r.   rj   )r   rf   r   Z
MultiIndexZfrom_productr   locZ
IndexSlicefrom_tuplesr0   r[   )r   r   rB   rC   r   r   r   'test_series_varied_multiindex_alignment  s(     $

r<  c                  C   s2   t dgd d} t dgd }t| | d S )Nr.   i'  r   r8   )r   Zrmodr0   r[   )rB   rC   r   r   r   !test_rmod_consistent_large_series  s    r=  )0datetimer   r   r   decimalr   r<   Znumpyr!   ry   Zpandas._libs.tslibsr   Zpandas.core.dtypes.commonr   r   Zpandasr   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingr0   Zpandas.corer   r   Zpandas.core.computationr   r   Zpandas.core.computation.checkr   Zfixturer   r&   r'   r}   r   r   r  r   r2  r5  r<  r=  r   r   r   r   <module>   s8   $	
m Y6  /=B0