U
    ¾mœdè~  ã                   @   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ÚparamsZidsc                 c   s    t j}| jt _| jV  |t _d S ©N)ÚexprÚ_MIN_ELEMENTSÚparam)Úrequestr   © r   ú\/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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)r/   ZmakeTimeSeriesÚrenameÚgetattrr   ÚoperatorÚassert_almost_equal)Úselfr0   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ÚpropertyrG   r   rE   r   r   rF   U   s   rF   r7   r-   é   Útest©Únameé*   )r   r:   r)   ÚAssertionError)r=   Zall_arithmetic_operatorsr0   r@   ÚmrA   r   rE   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   r7   rM   é   r.   r-   ©Ú
fill_value)r   r    ÚnanÚfillnar1   r/   Úassert_series_equal)r=   ÚserÚexpÚresr   r   r   Útest_flex_add_scalar_fill_valuec   s    z8TestSeriesFlexArithmetic.test_flex_add_scalar_fill_valuer7   )r1   r2   r3   r6   r5   r4   r   r8   c                 C   s   t t|ƒ|| ƒS r   )r:   r;   )r)   Úyr@   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)ÚallrV   )ÚindexÚunionÚreindexr   Úranger#   r    ÚerrstateÚappendrX   r   r/   rZ   )Úmethr@   ÚaÚbrW   Ú	exp_indexZamaskZbmaskÚ
exp_valuesÚirA   rB   r   r   r   Ú_check_fillx   s,    

$
zDTestSeriesFlexArithmetic.test_operators_combine.<locals>._check_fillç      ð?g       @g      @r.   ©rb   r7   rM   ç      @é   rV   ©Úaxis)r   )r   r    rX   Úaranger/   rZ   )	r=   r@   Zequiv_opÚfvrn   ri   rj   rA   r\   r   r   r   Útest_operators_combinev   s    
 $

z/TestSeriesFlexArithmetic.test_operators_combineN)rH   rI   rJ   ÚpytestÚmarkÚparametrizerD   rT   r^   r   Údivr;   r5   Zrdivr   ZrtruedivZpairingsr@   rv   r:   ZlopZlequivrC   Zrequivrg   rw   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©Úfreqrp   r-   r7   z4Input has different freq=D from Period\(freq=A-DEC\)©ÚmatchÚDÚend)Úhow)ÚpdZperiod_ranger   r    r!   Úrandnr#   rX   Úilocr/   rZ   r%   rx   Úraisesr   Zasfreq)r=   Úrngr'   rA   rB   Ú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!rS   ZhellomZworldmc                 C   s(   t |ƒ}|| }t |ƒ}t ||¡ d S r   ©r   r/   rZ   )r=   Z
target_addZinput_valueZexpected_valueri   rA   rB   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 )
Nr7   ri   rj   ÚcÚdrp   r-   Úer   )r   r    rX   Údivmodr/   rZ   Zrdivmod)r=   ri   rj   rA   rB   r   r   r   Útest_divmodÁ   s     



z TestSeriesArithmetic.test_divmodrb   Né	   c              	   C   sD   t tddƒƒ}t d|d�}d}tjt|d�� ||  W 5 Q R X d S )Nr7   é
   Úfoorp   z4not all arguments converted during string formattingr�   )r   re   rx   r‰   Ú	TypeError)r=   rb   Ú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 )Nr7   r-   rp   r–   é   é   )r   r    rX   r/   rZ   )r=   r™   rš   rA   rB   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Ü  r7   r-   rp   r   )r   r   r   Úshiftr   rR   )r=   r[   rA   Ú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)rb   Údtyper   )	r   r
   r    Zfloat64Úisnanra   rR   Úcopyr#   )r=   Údatetime_seriesÚemptyrA   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'   ©rb   rP   )ÚastypeÚintr   Úvaluesrb   r/   rZ   )r=   r¥   Zint_tsÚaddedrB   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        rp   )r   r    Zint32r/   rZ   rX   )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-1rM   rƒ   ©Úperiodsr€   r-   éÿÿÿÿr   rO   )r   r   r    rX   rˆ   r   r†   ZNaTr/   rZ   Úto_frame)r=   ÚdtZdt2rB   rA   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ÚUTCrp   )r   Ú
tz_convertr   rb   rR   )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-   rp   r³   rU   r•   )Ú
categoriesrq   é   )	r	   r   r†   ZCategoricalIndexr½   r    rX   r/   rZ   )r=   ÚcatÚser1Úser2rA   rk   rl   rB   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-   rM   rU   r7   rr   Zint64r¯   rp   r.   z20130101 09:00:00©r²   Z20130101z9 hours)r   r    ru   r/   rZ   r   r   )r=   rb   r[   r?   rA   rB   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¯   r7   ÚInt64ÚFloat64)r   r    rX   r†   ÚNAr/   rZ   ©r=   rÀ   rÁ   rA   rB   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.   rU   rÆ   r¯   ro   rÇ   )r   r†   rÈ   r    rX   r/   rZ   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)rM   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 )Nr7   rM   rÆ   r¯   r-   rŽ   )r=   Úvalr¢   r[   rA   rB   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   r/   Zassert_produces_warningrZ   )r=   r   Úwarningr[   rA   rB   r   r   r   Ú%test_add_list_to_masked_array_booleana  s    ÿÿýz:TestSeriesArithmetic.test_add_list_to_masked_array_boolean)rH   rI   rJ   rŒ   rx   ry   rz   r�   r”   re   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 )ÚTestSeriesFlexComparisonrt   r   Nrb   c                 C   sN   t tj d¡ƒ}t tj d¡ƒ}t||jƒ||d�}|||ƒ}t ||¡ d S )Nr–   rs   )r   r    r!   r‡   r:   rH   r/   rZ   )r=   rt   Úcomparison_opÚleftÚrightrA   rB   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�   r7   rs   )	r   r    r!   r‡   rx   r‰   Ú
ValueErrorr:   rH   )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 )Nr7   rM   r-   Úabcrp   ÚbcdÚabcd©r   Úlistr:   r/   rZ   )r=   r¬   r@   r×   rØ   rA   rB   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 )	Nr7   rM   r-   râ   rp   rã   rV   rä   rå   )r=   r¬   r@   rW   r×   rØ   rA   rB   r   r   r   Ú#test_comparison_flex_alignment_fillš  s
    z<TestSeriesFlexComparison.test_comparison_flex_alignment_fill)
rH   rI   rJ   rx   ry   rz   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 )
Nri   rj   r�   z'only compare identically-labeled Seriesr�   r7   r-   rM   rU   )r   rx   r‰   rÚ   )r=   ri   rj   r‹   r   r   r   Ú test_comparison_different_length®  s    z5TestSeriesComparison.test_comparison_different_lengthr0   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 )Nr7   rM   r-   rp   Úbool)r   re   r:   Údtypesr    r¢   rR   )r=   r0   r[   ÚconstrA   rB   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 )Nr7   rM   r-   rp   r   rë   )r   re   rˆ   r:   rì   r    r¢   rR   )r=   r0   r[   r¦   rí   rA   rB   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²   rP   r7   r-   z
US/CentralZinferr   )Ústartr²   rP   Úcategory)r   r   r9   rP   rR   Útz_localizer†   ZDatetimeIndexrŸ   r;   rÜ   rÝ   Zinterval_rangerª   )
r=   rð   rÖ   r@   rº   r[   rA   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–   rM   r`   )ÚinvalidÚOri   rj   r�   FT)r    r!   r‡   rX   r   Znangtrf   rª   r/   r<   r   rZ   )r=   r×   rØ   rA   rB   Ú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¯   Úobjectri   rj   ÚccZacbr   ú can only compare equality or notr�   )r   ræ   r	   ra   rR   rx   r‰   r˜   )r=   ri   rj   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�   rj   F)ZorderedTz1Invalid comparison between dtype=category and strr‘   )r   r	   ræ   rx   r‰   r˜   r/   rZ   )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)r7   r7   )r7   r-   FT)r   r   rŽ   )r=   rû   rA   rB   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 )Nr7   r-   TF)r   Ú	frozensetr/   rZ   ©r=   r[   rA   rB   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    rX   Zdropnard   rb   r;   rÝ   rY   rª   rë   r/   rZ   )r=   rÖ   r[   rÍ   rA   rB   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 )	NrM   rU   r.   rr   é   r¯   TF)r   rÅ   r/   ZequalContentsrb   rR   )r=   r'   rB   r   r   r   Útest_neš  s    "zTestSeriesComparison.test_nezleft, rightr7   r-   rM   ÚABCr)   r©   ZABDZ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   rH   r´   rx   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)rH   rI   rJ   rê   rx   ry   rz   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/Easternrp   zEurope/Berlin)r   r    r!   r"   r   r‡   r   r¹   rb   r·   r   r  rR   r/   rZ   )	r=   rŠ   ÚpermrÀ   rÁ   rA   Zuts1Zuts2rB   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±   rp   r  z0Cannot join tz-naive with tz-aware DatetimeIndexr�   )
r   r   r    r!   r‡   r#   rö   rx   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-01rM   rÃ   rr   )Údaysz
2011-12-26z
2011-12-27z
2011-12-28)r   r   r†   ÚoffsetsZ
DateOffsetÚto_datetimer/   rZ   )r=   r>   ÚoffsetrA   rB   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Ã   rp   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¤   rb   Z
_with_freqr/   rZ   )r=   rŠ   r'   Zts_sliceZts2rA   r    rB   r   r   r   Ú*test_align_date_objects_with_datetimeindex  s    zCTestTimeSeriesArithmetic.test_align_date_objects_with_datetimeindexN)rH   rI   rJ   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   rO   r7   Ú_)ÚandZrandÚxorZrxorÚorZrorr-   )	r   re   rH   Ústripr:   Ú
isinstancerR   r
   rP   )r=   r!  r   rð   Zall_binary_operatorsr@   r×   rØ   rP   Z
is_logicalrA   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 elser1   r2   r3   r{   r5   r4   Úmodr6   c                 S   s   g | ]}d | ‘qS )r8   r   )r  r@   r   r   r   r  G  s     zGTestNamePreservation.test_binop_maybe_preserve_name.<locals>.<listcomp>Úchanged)rP   rR   r3   r¤   r1   r:   )r=   r¥   rA   Úcpr   r@   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,   )rP   rR   )r=   r¥   rA   r   r   r   Útest_scalarop_preserve_nameT  s    z0TestNamePreservation.test_scalarop_preserve_nameN)rH   rI   rJ   rx   ry   rz   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 )Nr7   r¯   r-   rM   rŽ   )r=   Zdtype1Zdtype2Zdtype_expectedZ	dtype_mulrÀ   rÁ   rB   r   r   r   Útest_series_inplace_opsZ  s    z-TestInplaceOperations.test_series_inplace_opsN)rH   rI   rJ   rx   ry   rz   r2  r   r   r   r   r1  Y  s
   þ	r1  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 )Nr7   z%Test doesn't make sense on empty data)Úreasonr   zInvalid comparisonr�   )r#   rÐ   Z
add_markerrx   ry   Zxfailr    rX   rˆ   ZiatrR   r   r¢   r   r‰   r˜   )r   Zseries_with_simple_indexr>   rA   r‹   r   r   r   Útest_none_comparisonu  s<    ÿr4  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xyr7   r-   Únum)rð   rp   c                 S   s   g | ]}d | ‘qS )éè  r   )r  rm   r   r   r   r  ®  s     z;test_series_varied_multiindex_alignment.<locals>.<listcomp>r.   ri   r8  iÑ  iº  i£  )r)   r7   ri   )r)   r-   ri   )r_   r7   ri   )r_   r-   ri   )r   re   r†   Z
MultiIndexZfrom_productræ   ÚlocZ
IndexSliceÚfrom_tuplesr/   rZ   )r™   rš   rA   rB   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³   r7   )r   Zrmodr/   rZ   )rA   rB   r   r   r   Ú!test_rmod_consistent_large_series¼  s    r<  )0Údatetimer   r   r   Údecimalr   r;   Únumpyr    rx   Zpandas._libs.tslibsr   Zpandas.core.dtypes.commonr   r   Zpandasr†   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingr/   Zpandas.corer   r   Zpandas.core.computationr   r   Zpandas.core.computation.checkr   Zfixturer   r%   r&   r|   rÕ   ré   r  r  r1  r4  r;  r<  r   r   r   r   Ú<module>   s8   $	
m Y6  /=B0