U
    U‚gè~  ã                   @   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-u1j4u1ka/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¡ q¨e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  |	|
¡ |r”t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 )Néûÿÿÿr(   ©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sŒt‚|| d¡ }t|ƒ |d ¡}|||ƒ}|j|d ksÈt‚|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 ¡ s„t‚d|k ¡ r”t‚|dkd	 s¤t‚d|kd	 s´t‚d|kd	 rÄt‚||k ¡ sÔt‚||k ¡ rät‚|t|ƒk ¡ søt‚||k ¡ �s
t‚||k ¡ �st‚||k ||kk ¡ �s8t‚||k ||kk ¡ �sTt‚||k ¡ �rft‚||k ¡ �rxt‚||k ¡ �rŠt‚||k ¡ �rœt‚||k ¡ �s®t‚||k ¡ �sÀt‚||k ¡ �rÒt‚||k ¡ �rät‚||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s®t‚t ||¡ d S )
Nú1/1/2011éd   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sÊt‚n |
j|d ksÊ|
j|d ksÊt‚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sŽt‚ddddddd	d
g}|dd„ |D ƒ }|D ]T}| ¡ }t||ƒ|ƒ}|j |j ksât‚| ¡ }d|_ t||ƒ|ƒ}|j d ks¸t‚q¸d S )Néþÿÿÿz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 r�t
‚|j	d ržt
‚d |k}|j	d s´t
‚|j	d sÂt
‚t|jƒsØt|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