U
    ÎZj­4  ã                   @   s   d Z ddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ 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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*ƒZ+G d-d.„ d.ej,ƒZ-G d/d0„ d0ej.ƒZ/G d1d2„ d2ej0ƒZ1G d3d4„ d4ej2ƒZ3G d5d6„ d6ej4ƒZ5G d7d8„ d8ej6ƒZ7G d9d:„ d:ej8ƒZ9G d;d<„ d<ej:ƒZ;G d=d>„ d>ej<ƒZ=dS )?aj  
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©ÚBooleanDtype)Úbasec                   C   s0   ddgd t jg ddgd  t jg ddg S )NTFé   é,   )ÚnpÚnan© r	   r	   úf/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/extension/test_boolean.pyÚ	make_data   s    r   c                   C   s   t ƒ S ©Nr   r	   r	   r	   r
   Údtype   s    r   c                 C   s   t jtƒ | d�S )N©r   )ÚpdÚarrayr   r   r	   r	   r
   Údata"   s    r   c                 C   s   t jt d¡| d�S )Néd   r   )r   r   r   Zonesr   r	   r	   r
   Údata_for_twos'   s    r   c                 C   s   t jtjdg| d�S )NTr   ©r   r   r   r   r   r	   r	   r
   Údata_missing,   s    r   c                 C   s   t jdddg| d�S ©NTFr   )r   r   r   r	   r	   r
   Údata_for_sorting1   s    r   c                 C   s   t jdtjdg| d�S r   r   r   r	   r	   r
   Údata_missing_for_sorting6   s    r   c                   C   s   dd„ S )Nc                 S   s   | t jko|t jkS r   ©r   ÚNA)ÚxÚyr	   r	   r
   Ú<lambda>>   ó    zna_cmp.<locals>.<lambda>r	   r	   r	   r	   r
   Úna_cmp;   s    r   c                   C   s   t jS r   r   r	   r	   r	   r
   Úna_valueA   s    r    c                 C   s*   d}d}t j}tj|||||||g| d�S r   )r   r   r   r   )r   ÚbÚaÚnar	   r	   r
   Údata_for_groupingF   s    r$   c                   @   s   e Zd ZdS )Ú	TestDtypeN©Ú__name__Ú
__module__Ú__qualname__r	   r	   r	   r
   r%   N   s   r%   c                   @   s   e Zd ZdS )ÚTestInterfaceNr&   r	   r	   r	   r
   r*   R   s   r*   c                   @   s   e Zd ZdS )ÚTestConstructorsNr&   r	   r	   r	   r
   r+   V   s   r+   c                   @   s   e Zd ZdS )ÚTestGetitemNr&   r	   r	   r	   r
   r,   Z   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 )Ú	TestIndexNr&   r	   r	   r	   r
   r.   b   s   r.   c                   @   s   e Zd ZdS )ÚTestMissingNr&   r	   r	   r	   r
   r/   f   s   r/   c                       sf   e Zd ZddhZd‡ fdd„	Zefdd„Zejj	dd	�‡ fd
d„ƒZ
ejj	dd	�‡ fdd„ƒZ‡  ZS )ÚTestArithmeticOpsÚ__sub__Ú__rsub__Nc                    s4   d }|  d¡ d¡dkrt}tƒ j||||d� d S )NÚ_Úr)ÚpowÚtruedivÚfloordiv©Úexc)ÚstripÚlstripÚNotImplementedErrorÚsuperÚcheck_opname©ÚselfÚsÚop_nameÚotherr9   ©Ú	__class__r	   r
   r>   m   s    zTestArithmeticOps.check_opnamec           	   	   C   sØ   |d kr´|| j kr>d}tjt|d�� |||ƒ W 5 Q R X d S |||ƒ}|  |||¡}|dkrj| d¡}n&|dkr�|  | t¡||¡}| d¡}|dkr¦tj|| 	¡ < |  
||¡ n t |¡� |||ƒ W 5 Q R X d S )Nznumpy boolean subtract©Úmatch)Ú__floordiv__Ú__rfloordiv__Ú__pow__Ú__rpow__Ú__mod__Ú__rmod__ZInt8)Ú__truediv__Ú__rtruediv__ZFloat64rK   )Ú
implementsÚpytestZraisesÚ	TypeErrorZ_combineÚastypeÚfloatr   r   ÚisnaZassert_equal)	r@   ÚobjÚoprC   rB   r9   ÚmsgÚresultÚexpectedr	   r	   r
   Ú	_check_opu   s$    

	
zTestArithmeticOps._check_opz‡Inconsistency between floordiv and divmod; we raise for floordiv but not for divmod. This matches what we do for non-masked bool dtype.)Úreasonc                    s   t ƒ  ||¡ d S r   )r=   Útest_divmod_series_array)r@   r   r   rD   r	   r
   r]   —   s    z*TestArithmeticOps.test_divmod_series_arrayc                    s   t ƒ  |¡ d S r   )r=   Útest_divmod)r@   r   rD   r	   r
   r^   ž   s    zTestArithmeticOps.test_divmod)N)r'   r(   r)   rP   r>   r<   r[   rQ   ÚmarkZxfailr]   r^   Ú__classcell__r	   r	   rD   r
   r0   j   s   "ÿÿr0   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚTestComparisonOpsNc                    s   t ƒ j|||d d� d S )Nr8   )r=   r>   r?   rD   r	   r
   r>   §   s    zTestComparisonOps.check_opname)N)r'   r(   r)   r>   r`   r	   r	   rD   r
   ra   ¦   s   ra   c                   @   s   e Zd ZdS )ÚTestReshapingNr&   r	   r	   r	   r
   rb   ¬   s   rb   c                   @   s>   e Zd Zej dddg¡dd„ ƒZdd„ Zdd	„ Zd
d„ Z	dS )ÚTestMethodsÚna_sentineléÿÿÿÿéþÿÿÿc              	   C   s†   |dkrd}nd}t jt|d�� tj||d�\}}W 5 Q R X tjdd||dddgtjd�}| dd	g¡}t  	||¡ |  
||¡ d S )
Nre   z)Specifying `na_sentinel=-1` is deprecatedzDSpecifying the specific value to use for `na_sentinel` is deprecatedrF   )rd   r   é   r   r   )ÚtmZassert_produces_warningÚFutureWarningr   Ú	factorizer   r   ÚintpÚtakeÚassert_numpy_array_equalÚassert_extension_array_equal)r@   r$   rd   rX   ÚlabelsÚuniquesZexpected_labelsZexpected_uniquesr	   r	   r
   Útest_factorize±   s     ÿzTestMethods.test_factorizec                    s¬   |dƒ\}}t  |¡}t  |¡}| |dd„ ¡}t jdd„ tt|ƒt|ƒƒD ƒdd�}|  ||¡ |jd ‰ | ˆ d	d„ ¡}t j‡ fd
d„t|ƒD ƒdd�}|  ||¡ d S )Né   c                 S   s   | |kS r   r	   ©Úx1Zx2r	   r	   r
   r   Ç   r   z-TestMethods.test_combine_le.<locals>.<lambda>c                 S   s   g | ]\}}||k‘qS r	   r	   )Ú.0r"   r!   r	   r	   r
   Ú
<listcomp>É   s     z/TestMethods.test_combine_le.<locals>.<listcomp>Úbooleanr   r   c                 S   s   | |kS r   r	   rs   r	   r	   r
   r   Ï   r   c                    s   g | ]}|ˆ k‘qS r	   r	   )ru   r"   ©Úvalr	   r
   rv   Ð   s     )r   ÚSeriesÚcombineÚzipÚlistÚassert_series_equalÚiloc)r@   Zdata_repeatedZ
orig_data1Z
orig_data2Ús1Ús2rY   rZ   r	   rx   r
   Útest_combine_leÂ   s    

þ
 zTestMethods.test_combine_lec           	      C   sæ   t jddgdd�}|\}}t|ƒ ||g¡}|r:t  |¡}| |¡dksLt‚|j|dd�dksbt‚| |¡dkstt‚|j|dd�d	ksŠt‚| | ddg¡¡}tjddgtj	d�}t
 ||¡ t ddg¡}|j||d
�dksât‚d S )NTFrw   r   r   Úright)Zsiderg   rr   )Úsorter)r   r   ÚtypeZ_from_sequencerz   ZsearchsortedÚAssertionErrorrl   r   rk   rh   rm   )	r@   r   Z	as_seriesr!   r"   ZarrrY   rZ   r„   r	   r	   r
   Útest_searchsortedÓ   s    
zTestMethods.test_searchsortedc                 C   sz   |  ¡ dkst‚| ¡ dks t‚| ddddddg¡}|  ¡ dksFt‚| ¡ dksVt‚|  ¡ dksft‚| ¡ dksvt‚d S )Nr   rr   rg   )Zargmaxr†   Zargminrl   )r@   r   r   r   r	   r	   r
   Útest_argmin_argmaxê   s    zTestMethods.test_argmin_argmaxN)
r'   r(   r)   rQ   r_   Úparametrizerq   r‚   r‡   rˆ   r	   r	   r	   r
   rc   °   s
   
rc   c                   @   s   e Zd ZdS )ÚTestCastingNr&   r	   r	   r	   r
   rŠ   ü   s   rŠ   c                   @   s|   e Zd ZdZdd„ Zej 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ej dddg¡dd„ ƒZdS )ÚTestGroupbyzw
    Groupby-specific tests are overridden because boolean only has 2
    unique values, base tests uses 3 groups.
    c              	   C   sf   t  ddd d dddg|dœ¡}| d¡jjd }| d¡jjd }t |j|jj	¡ t 
|j|¡ d S )NÚBÚA©r�   rŒ   r   )r   Ú	DataFrameÚgroupbyZgrouperZ	groupingsrh   rm   Zgrouping_vectorr�   Úvaluesrn   )r@   r$   ÚdfZgr1Zgr2r	   r	   r
   Útest_grouping_grouper  s    ÿz!TestGroupby.test_grouping_grouperÚas_indexTFc           	   	   C   sœ   t  dddddddg|dœ¡}|jd|d�j ¡ }t j|dd�\}}|rxt j|dd	�}t jd
dg|dd�}|  ||¡ n t  |d
dgdœ¡}|  	||¡ d S )Nrg   rr   é   rŽ   rŒ   )r”   T©Úsort©Únameç      @ç      ð?r�   ©Úindexr™   )rŒ   r�   )
r   r�   r�   r�   Úmeanrj   ÚIndexrz   r~   Úassert_frame_equal)	r@   r”   r$   r’   rY   r3   rp   r�   rZ   r	   r	   r
   Útest_groupby_extension_agg  s    z&TestGroupby.test_groupby_extension_aggc              	   C   s’   t  dddddddg|dœ¡}|jdddg }| d¡}| d¡ dd	i¡}|  ||¡ | d¡ d	¡}|  ||¡ | d¡ ¡ }|  ||¡ d S )
Nrg   rr   r•   rŽ   r   r   r�   rŒ   Úfirst)r   r�   r   Z	set_indexr�   Zaggr    r¢   )r@   r$   r’   rZ   rY   r	   r	   r
   Útest_groupby_agg_extension  s    
z&TestGroupby.test_groupby_agg_extensionc              	   C   sv   t  dddddddg|dœ¡}|jddd�j ¡ }t j|dd�\}}t j|dd�}t jd	d
g|dd�}|  ||¡ d S )Nrg   rr   r•   rŽ   rŒ   Fr–   r˜   r›   rš   r�   rœ   )	r   r�   r�   r�   rž   rj   rŸ   rz   r~   )r@   r$   r’   rY   r3   r�   rZ   r	   r	   r
   Útest_groupby_extension_no_sort.  s    z*TestGroupby.test_groupby_extension_no_sortc                 C   sb   ||  ¡   }t dddddg|dœ¡}| d¡j t¡}tjdddddgdd�}|  ||¡ d S )Nrg   r•   rŽ   rŒ   rr   r�   r˜   )	rU   r   r�   r�   r�   Z	transformÚlenrz   r~   )r@   r$   Zvalidr’   rY   rZ   r	   r	   r
   Ú test_groupby_extension_transform7  s
    z,TestGroupby.test_groupby_extension_transformc              	   C   sv   t  dddddddg|dœ¡}|jddd� |¡ |jddd�j |¡ |jddd� |¡ |jddd�j |¡ d S )	Nrg   rr   r•   rŽ   rŒ   F)Z
group_keysr�   )r   r�   r�   Úapplyr�   rŒ   )r@   r$   Zgroupby_apply_opr’   r	   r	   r
   Útest_groupby_extension_apply@  s
    z(TestGroupby.test_groupby_extension_applyc              	   C   s–   t  dddddddg|dœ¡}| d¡j dd„ ¡}t j|jjddd	g j|jjddg j|jjd
dg jgt jdddgdd�dd�}|  	||¡ d S )Nrg   rr   r•   rŽ   r�   c                 S   s   | j S r   )r   )r   r	   r	   r
   r   I  r   z9TestGroupby.test_groupby_apply_identity.<locals>.<lambda>r   é   r   é   r˜   rŒ   rœ   )
r   r�   r�   rŒ   r§   rz   r   r   rŸ   r~   ©r@   r$   r’   rY   rZ   r	   r	   r
   Útest_groupby_apply_identityG  s    ýù	z'TestGroupby.test_groupby_apply_identityc                 C   sr   t  dddddddg|dddddddgdœ¡}| d¡ ¡ j}|jjrVt  ddg¡}nt  dg¡}t 	||¡ d S )Nrg   rr   r•   )r�   rŒ   ÚCr�   rŒ   r­   )
r   r�   r�   ÚsumÚcolumnsr   Z_is_numericrŸ   rh   Zassert_index_equalr«   r	   r	   r
   Útest_in_numeric_groupbyU  s    ýÿz#TestGroupby.test_in_numeric_groupbyÚ	min_countr   é
   c              	   C   s¼   t  dddddddg|dœ¡}| d¡j|d�}|dkrxt jdt jdddgd	d
�it jdddgdd�d�}t ||¡ n@t jdt jt jgd d	d
�it jdddgdd�d�}t ||¡ d S )Nrg   rr   r•   rŽ   r�   )r±   r   rŒ   ZInt64r   r˜   )r�   )	r   r�   r�   r®   r   rŸ   rh   r    r   )r@   r$   r±   r’   rY   rZ   r	   r	   r
   Útest_groupby_sum_mincountf  s    þþz%TestGroupby.test_groupby_sum_mincountN)r'   r(   r)   Ú__doc__r“   rQ   r_   r‰   r¡   r£   r¤   r¦   r¨   r¬   r°   r³   r	   r	   r	   r
   r‹      s   

		r‹   c                   @   s   e Zd Zdd„ ZdS )ÚTestNumericReducec                 C   sX   t ||ƒ|d�}t | d¡|ƒ|d�}t |¡r8tj}n|dkrHt|ƒ}t ||¡ d S )N)ÚskipnaZfloat64)ÚminÚmax)	ÚgetattrrS   r   Úisnanr   r   Úboolrh   Zassert_almost_equal)r@   rA   rB   r¶   rY   rZ   r	   r	   r
   Úcheck_reducey  s    
zTestNumericReduce.check_reduceN)r'   r(   r)   r¼   r	   r	   r	   r
   rµ   x  s   rµ   c                   @   s   e Zd ZdS )ÚTestBooleanReduceNr&   r	   r	   r	   r
   r½   „  s   r½   c                   @   s   e Zd ZdS )ÚTestPrintingNr&   r	   r	   r	   r
   r¾   ˆ  s   r¾   c                   @   s   e Zd ZdS )ÚTestUnaryOpsNr&   r	   r	   r	   r
   r¿   Œ  s   r¿   c                   @   s   e Zd ZdS )ÚTestParsingNr&   r	   r	   r	   r
   rÀ   �  s   rÀ   c                   @   s   e Zd ZdS )ÚTest2DCompatNr&   r	   r	   r	   r
   rÁ   ”  s   rÁ   )>r´   Únumpyr   rQ   Zpandasr   Zpandas._testingZ_testingrh   Zpandas.core.arrays.booleanr   Zpandas.tests.extensionr   r   Zfixturer   r   r   r   r   r   r   r    r$   ZBaseDtypeTestsr%   ZBaseInterfaceTestsr*   ZBaseConstructorsTestsr+   ZBaseGetitemTestsr,   ZBaseSetitemTestsr-   ZBaseIndexTestsr.   ZBaseMissingTestsr/   ZBaseArithmeticOpsTestsr0   ZBaseComparisonOpsTestsra   ZBaseReshapingTestsrb   ZBaseMethodsTestsrc   ZBaseCastingTestsrŠ   ZBaseGroupbyTestsr‹   ZBaseNumericReduceTestsrµ   ZBaseBooleanReduceTestsr½   ZBasePrintingTestsr¾   ZBaseUnaryOpsTestsr¿   ZBaseParsingTestsrÀ   ZDim2CompatTestsrÁ   r	   r	   r	   r
   Ú<module>   sX   








<Lx