U
    >vf                     @   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 ddlmZmZ ddlmZ dd Zejee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ejdd ZG dd dejZG dd dejZ G d d! d!ej!Z"G d"d# d#ej#Z$G d$d% d%ej%Z&G d&d' d'ej'Z(G d(d) d)ej)Z*G d*d+ d+ej+Z,G d,d- d-ej-Z.G d.d/ d/ej/Z0G d0d1 d1ej1Z2G d2d3 d3ej3Z4G d4d5 d5ej5Z6G d6d7 d7ej7Z8ej9j:d8d9G d:d; d;ej;Z<G d<d= d=ej=Z>G d>d? d?ej?Z@ej9Ad@G dAdB dBejBZCG dCdD dDejDZEdS )Eaj  
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)is_extension_array_dtype)is_float_dtype)Float32DtypeFloat64Dtype)basec                   C   s<   t tdddtjg t tddd tjg ddg S )N皙?g?   g#@g#@g      $@)listnpZarangepdNA r   r   H/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/extension/test_floating.py	make_data   s    r   )paramsc                 C   s   |   S N)param)requestr   r   r   dtype)   s    r   c                 C   s   t jt | dS )Nr   )r   arrayr   r   r   r   r   data.   s    r   c                 C   s   t jtdd | dS )Nd      r   )r   r   r
   Zonesr   r   r   r   data_for_twos3   s    r   c                 C   s   t jt jdg| dS )Nr   r   r   r   r   r   r   r   r   data_missing8   s    r   c                 C   s   t jdddg| dS )Nr   皙?        r   )r   r   r   r   r   r   data_for_sorting=   s    r   c                 C   s   t jdt jdg| dS )Nr   r   r   r   r   r   r   r   data_missing_for_sortingB   s    r    c                   C   s   dd S )Nc                 S   s   | t jko|t jkS r   r   r   )xyr   r   r   <lambda>J       zna_cmp.<locals>.<lambda>r   r   r   r   r   na_cmpG   s    r&   c                   C   s   t jS r   r!   r   r   r   r   na_valueM   s    r'   c              	   C   s0   d}d}d}t j}t j||||||||g| dS )Nr   r   r   r   )r   r   r   )r   bacnar   r   r   data_for_groupingR   s
    r,   c                   @   s   e Zd ZdS )	TestDtypeN__name__
__module____qualname__r   r   r   r   r-   [   s   r-   c                       s8   e Zd Zd fdd	ZefddZd	 fdd	Z  ZS )
TestArithmeticOpsNc                    s   t  j|||d d d S N)excsupercheck_opnameselfsop_nameotherr4   	__class__r   r   r7   `   s    zTestArithmeticOps.check_opnamec           	   	   C   s   |d krlt |}t|dr<t|js<t|jr<||j}|||}| |||}||}| 	|| n t
| ||| W 5 Q R X d S )Nr   )tmZ	get_dtypehasattrr   r   r   astypenumpy_dtypeZ_combineZassert_equalpytestraises)	r9   r:   opr<   r;   r4   Zsdtyperesultexpectedr   r   r   	_check_opd   s    


zTestArithmeticOps._check_opc                    s   t  |||d  d S r   )r6   _check_divmod_op)r9   r:   rE   r<   r4   r=   r   r   rI   {   s    z"TestArithmeticOps._check_divmod_op)N)N)r/   r0   r1   r7   NotImplementedErrorrH   rI   __classcell__r   r   r=   r   r2   _   s   r2   c                       s2   e Zd ZefddZd fdd	Zdd Z  ZS )	TestComparisonOpsc              	   C   sV   |d kr2|||}| ||d}| || n t| ||| W 5 Q R X d S )Nboolean)combinerA   Zassert_series_equalrC   rD   )r9   r:   rE   r<   r;   r4   rF   rG   r   r   r   rH      s    
zTestComparisonOps._check_opNc                    s   t  j|||d d d S r3   r5   r8   r=   r   r   r7      s    zTestComparisonOps.check_opnamec                 C   s    d|j  d}| ||| d S )N__)r/   r7   )r9   r:   r   rE   r<   r;   r   r   r   _compare_other   s    z TestComparisonOps._compare_other)N)r/   r0   r1   rJ   rH   r7   rP   rK   r   r   r=   r   rL      s   
rL   c                   @   s   e Zd ZdS )TestInterfaceNr.   r   r   r   r   rQ      s   rQ   c                   @   s   e Zd ZdS )TestConstructorsNr.   r   r   r   r   rR      s   rR   c                   @   s   e Zd ZdS )TestReshapingNr.   r   r   r   r   rS      s   rS   c                   @   s   e Zd ZdS )TestGetitemNr.   r   r   r   r   rT      s   rT   c                   @   s   e Zd ZdS )TestSetitemNr.   r   r   r   r   rU      s   rU   c                   @   s   e Zd ZdS )	TestIndexNr.   r   r   r   r   rV      s   rV   c                   @   s   e Zd ZdS )TestMissingNr.   r   r   r   r   rW      s   rW   c                   @   s   e Zd ZeZdS )TestMethodsN)r/   r0   r1   objectZ_combine_le_expected_dtyper   r   r   r   rX      s   rX   c                   @   s   e Zd ZdS )TestCastingNr.   r   r   r   r   rZ      s   rZ   c                   @   s   e Zd ZdS )TestGroupbyNr.   r   r   r   r   r[      s   r[   c                   @   s   e Zd Zdd ZdS )TestNumericReducec                 C   s   |dkr0t || }t | |jj| }nDt |||d}t | |jj||d}|st|  rttj}t	
|| d S )Ncount)skipna)getattrZdropnarA   r   rB   Zisnaanyr   r   r?   Zassert_almost_equal)r9   r:   r;   r^   rF   rG   r   r   r   check_reduce   s    zTestNumericReduce.check_reduceN)r/   r0   r1   ra   r   r   r   r   r\      s   r\   z-Tested in tests/reductions/test_reductions.py)reasonc                   @   s   e Zd ZdS )TestBooleanReduceNr.   r   r   r   r   rc      s   rc   c                   @   s   e Zd ZdS )TestPrintingNr.   r   r   r   r   rd      s   rd   c                   @   s   e Zd ZdS )TestParsingNr.   r   r   r   r   re      s   re   z4ignore:overflow encountered in reduce:RuntimeWarningc                   @   s   e Zd ZdS )Test2DCompatNr.   r   r   r   r   rf      s   rf   c                   @   s&   e Zd Zejdddgdd ZdS )TestAccumulationr^   TFc                 C   s   d S r   r   )r9   r   Zall_numeric_accumulationsr^   r   r   r   test_accumulate_series_raises   s    z.TestAccumulation.test_accumulate_series_raisesN)r/   r0   r1   rC   markZparametrizerh   r   r   r   r   rg      s   rg   )F__doc__Znumpyr
   rC   Zpandas.core.dtypes.commonr   Zpandasr   Zpandas._testingZ_testingr?   Zpandas.api.typesr   Zpandas.core.arrays.floatingr   r   Zpandas.tests.extensionr   r   Zfixturer   r   r   r   r   r    r&   r'   r,   ZBaseDtypeTestsr-   ZBaseArithmeticOpsTestsr2   ZBaseComparisonOpsTestsrL   ZBaseInterfaceTestsrQ   ZBaseConstructorsTestsrR   ZBaseReshapingTestsrS   ZBaseGetitemTestsrT   ZBaseSetitemTestsrU   ZBaseIndexTestsrV   ZBaseMissingTestsrW   ZBaseMethodsTestsrX   ZBaseCastingTestsrZ   ZBaseGroupbyTestsr[   ZBaseNumericReduceTestsr\   ri   skipZBaseBooleanReduceTestsrc   ZBasePrintingTestsrd   ZBaseParsingTestsre   filterwarningsZDim2CompatTestsrf   ZBaseAccumulateTestsrg   r   r   r   r   <module>   s`   









 
