U
    f/e.                     @   s  d Z ddlZddlZddlmZ ddlZddlm	Z	 ddl
mZ ejdgddd	 Zejd
d Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd ZG dd dZG dd deejZG dd deejZG dd deejZG d d! d!eejZG d"d# d#eejZG d$d% d%eej Z!G d&d' d'eej"Z#G d(d) d)eej$Z%G d*d+ d+eej&Z'G d,d- d-eej(Z)G d.d/ d/eej*Z+G d0d1 d1eej,Z-G d2d3 d3eej.Z/G d4d5 d5eej0Z1dS )6aj  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.

The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).

Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.

    N)DatetimeTZDtype)DatetimeArray)basez
US/Central)paramsc                 C   s   t d| jdS )Nns)unittz)r   param)request r   H/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/extension/test_datetime.pydtype   s    r   c                 C   s   t tjdd| jd| d}|S )N2000d   )Zperiodsr   r   )r   pdZ
date_ranger   )r   datar   r   r   r      s    r   c                 C   s   t tjddgdd| dS )NNaT
2000-01-01datetime64[ns]r   )r   nparrayr   r   r   r   data_missing%   s     r   c                 C   s:   t d}t d}t d}ttj|||gdd| dS )Nr   
2000-01-02
2000-01-03r   r   r   Z	Timestampr   r   r   )r   abcr   r   r   data_for_sorting,   s    


r   c                 C   s0   t d}t d}ttj|d|gdd| dS )Nr   r   r   r   r   r   )r   r   r   r   r   r   data_missing_for_sorting4   s    

r    c              
   C   sH   t d}t d}t d}d}ttj||||||||gdd| dS )z_
    Expected to be like [B, B, NA, NA, A, A, B, C]

    Where A < B < C and NA is missing
    r   r   r   r   r   r   r   )r   r   r   r   nar   r   r   data_for_grouping;   s    


 r"   c                  C   s   dd } | S )Nc                 S   s   | t jko| |kS Nr   r   )r   r   r   r   r   cmpM   s    zna_cmp.<locals>.cmpr   )r%   r   r   r   na_cmpK   s    r&   c                   C   s   t jS r#   r$   r   r   r   r   na_valueS   s    r'   c                   @   s   e Zd ZdS )BaseDatetimeTestsN__name__
__module____qualname__r   r   r   r   r(   Y   s   r(   c                   @   s   e Zd ZdS )TestDatetimeDtypeNr)   r   r   r   r   r-   _   s   r-   c                       s   e Zd Z fddZ  ZS )TestConstructorsc                    s   | d }t | d S r#   )Z
_with_freqsupertest_series_constructorselfr   	__class__r   r   r0   d   s    
z(TestConstructors.test_series_constructor)r*   r+   r,   r0   __classcell__r   r   r3   r   r.   c   s   r.   c                   @   s   e Zd ZdS )TestGetitemNr)   r   r   r   r   r6   j   s   r6   c                   @   s*   e Zd Zejjdddd Zdd ZdS )TestMethodszIncorrect expectedreasonc                 C   s   d S r#   r   )r2   Zall_dataZdropnar   r   r   test_value_countso   s    zTestMethods.test_value_countsc                 C   s   d S r#   r   )r2   Zdata_repeatedr   r   r   test_combine_adds   s    zTestMethods.test_combine_addN)r*   r+   r,   pytestmarkskipr:   r;   r   r   r   r   r7   n   s   
r7   c                       s   e Zd Z fddZ  ZS )TestInterfacec                    s"   |j rtd nt | d S )NzGH-23569)r   r<   r>   r/   test_array_interfacer1   r3   r   r   r@   y   s    z"TestInterface.test_array_interface)r*   r+   r,   r@   r5   r   r   r3   r   r?   x   s   r?   c                       sL   e Zd ZddhZ fddZ fddZdd Z fd	d
Zdd Z  Z	S )TestArithmeticOps__sub____rsub__c                    sB   || j kr0td|i}| j|||d d d nt || d S )NAr   exc)
implementsr   Z	DataFramecheck_opnamer/   test_arith_frame_with_scalar)r2   r   all_arithmetic_operatorsZdfr3   r   r   rI      s    
z.TestArithmeticOps.test_arith_frame_with_scalarc                    s@   || j kr.t|}| j|||jd d d nt || d S Nr   rE   rG   r   SeriesrH   Zilocr/   test_arith_series_with_scalarr2   r   rJ   sr3   r   r   rN      s    

z/TestArithmeticOps.test_arith_series_with_scalarc              	   C   s4   t |}d}tjt|d ||  W 5 Q R X d S )Nz*cannot add DatetimeArray and DatetimeArray)match)r   rM   r<   Zraises	TypeError)r2   r   rP   msgr   r   r   $test_add_series_with_extension_array   s    
z6TestArithmeticOps.test_add_series_with_extension_arrayc                    s@   || j kr.t|}| j|||jd d d nt || d S rK   rL   rO   r3   r   r   test_arith_series_with_array   s    

z.TestArithmeticOps.test_arith_series_with_arrayc                 C   s   d S r#   r   )r2   r   r   r   test_divmod_series_array   s    z*TestArithmeticOps.test_divmod_series_array)
r*   r+   r,   rG   rI   rN   rT   rU   rV   r5   r   r   r3   r   rA      s   	rA   c                   @   s   e Zd ZdS )TestCastingNr)   r   r   r   r   rW      s   rW   c                   @   s   e Zd Zdd ZdS )TestComparisonOpsc                 C   s   d S r#   r   )r2   rP   r   Zop_nameotherr   r   r   _compare_other   s    z TestComparisonOps._compare_otherN)r*   r+   r,   rZ   r   r   r   r   rX      s   rX   c                   @   s   e Zd ZdS )TestMissingNr)   r   r   r   r   r[      s   r[   c                       s2   e Zd Zejjdddd Z fddZ  ZS )TestReshapingzWe have DatetimeTZBlockr8   c                 C   s   d S r#   r   )r2   r   Zin_framer   r   r   test_concat   s    zTestReshaping.test_concatc                    s   t  | d S r#   )r/   test_concat_mixed_dtypesr1   r3   r   r   r^      s    z&TestReshaping.test_concat_mixed_dtypes)	r*   r+   r,   r<   r=   r>   r]   r^   r5   r   r   r3   r   r\      s   
r\   c                   @   s   e Zd ZdS )TestSetitemNr)   r   r   r   r   r_      s   r_   c                   @   s   e Zd ZdS )TestGroupbyNr)   r   r   r   r   r`      s   r`   c                   @   s   e Zd ZdS )TestPrintingNr)   r   r   r   r   ra      s   ra   c                   @   s   e Zd ZdS )Test2DCompatNr)   r   r   r   r   rb      s   rb   )2__doc__Znumpyr   r<   Zpandas.core.dtypes.dtypesr   Zpandasr   Zpandas.core.arraysr   Zpandas.tests.extensionr   Zfixturer   r   r   r   r    r"   r&   r'   r(   ZBaseDtypeTestsr-   ZBaseConstructorsTestsr.   ZBaseGetitemTestsr6   ZBaseMethodsTestsr7   ZBaseInterfaceTestsr?   ZBaseArithmeticOpsTestsrA   ZBaseCastingTestsrW   ZBaseComparisonOpsTestsrX   ZBaseMissingTestsr[   ZBaseReshapingTestsr\   ZBaseSetitemTestsr_   ZBaseGroupbyTestsr`   ZBasePrintingTestsra   ZDim2CompatTestsrb   r   r   r   r   <module>   sJ   








	)