o
    g3                     @   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Z9d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	   a/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/extension/test_boolean.py	make_data   s   0r   c                   C   s   t  S Nr   r	   r	   r	   r
   dtype      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 )Nd   r   )r   r   r   onesr   r	   r	   r
   data_for_twos'      r   c                 C   s   t jtjdg| dS )NTr   r   r   r   r   r   r	   r	   r
   data_missing,   r   r   c                 C   s   t jg d| dS )N)TTFr   )r   r   r   r	   r	   r
   data_for_sorting1   s   r   c                 C   s   t jdtjdg| dS NTFr   r   r   r	   r	   r
   data_missing_for_sorting6      r   c                   C   s   dd S )Nc                 S   s   | t ju o	|t ju 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   r   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                   @      e Zd ZdS )	TestDtypeN__name__
__module____qualname__r	   r	   r	   r
   r*   N       r*   c                   @   r)   )TestInterfaceNr+   r	   r	   r	   r
   r0   R   r/   r0   c                   @   r)   )TestConstructorsNr+   r	   r	   r	   r
   r1   V   r/   r1   c                   @   r)   )TestGetitemNr+   r	   r	   r	   r
   r2   Z   r/   r2   c                   @   r)   )TestSetitemNr+   r	   r	   r	   r
   r3   ^   r/   r3   c                   @   r)   )TestMissingNr+   r	   r	   r	   r
   r4   b   r/   r4   c                       s@   e Zd ZddhZd
 fdd	ZefddZd
 fdd		Z  ZS )TestArithmeticOps__sub____rsub__Nc                       t  j|||d d d S N)excsupercheck_opnameselfsop_nameotherr:   	__class__r	   r
   r=   i      zTestArithmeticOps.check_opnamec           	      C   s  |d u rf|| j v r*d}tjt|d ||| W d    d S 1 s#w   Y  d S |||}| |||}|dv r@|d}n|dv rS| |t||}|d}|dkr^tj||	 < | 
|| d S t| ||| W d    d S 1 s|w   Y  d S )Nznumpy boolean subtract)match)__floordiv____rfloordiv____pow____rpow____mod____rmod__Int8)__truediv____rtruediv__Float64rJ   )
implementspytestraises	TypeError_combineastypefloatr   r   isnaassert_equal)	r?   objoprB   rA   r:   msgresultexpectedr	   r	   r
   	_check_opm   s,   


	
"zTestArithmeticOps._check_opc                    s   t  |||d  d S r   )r<   _check_divmod_op)r?   r@   r[   rB   r:   rC   r	   r
   r`      r   z"TestArithmeticOps._check_divmod_opr   )	r,   r-   r.   rQ   r=   NotImplementedErrorr_   r`   __classcell__r	   r	   rC   r
   r5   f   s
    "r5   c                       sR   e Zd Zd fdd	Zdd Zejjdddd	 Zejjddd
d Z	  Z
S )TestComparisonOpsNc                    r8   r9   r;   r>   rC   r	   r
   r=      rE   zTestComparisonOps.check_opnamec                 C   s   |  ||| d S r   )r=   )r?   r@   r   rA   rB   r	   r	   r
   _compare_other   s   z TestComparisonOps._compare_otherz&Tested in tests/arrays/test_boolean.pyreasonc                 C      d S r   r	   r?   r   all_compare_operatorsr	   r	   r
   test_compare_scalar      z%TestComparisonOps.test_compare_scalarc                 C   rg   r   r	   rh   r	   r	   r
   test_compare_array   rk   z$TestComparisonOps.test_compare_arrayr   )r,   r-   r.   r=   rd   rR   markskiprj   rl   rb   r	   r	   rC   r
   rc      s    
rc   c                   @   r)   )TestReshapingNr+   r	   r	   r	   r
   ro      r/   ro   c                       sr   e Zd Zejdddgdd Zdd Zdd	 Zejj	d
d fddZ
ejj	d
ddd Zdd Z  ZS )TestMethodsna_sentinelc                 C   sZ   t j||d\}}tjdd||dddgtjd}|ddg}t|| | || d S )N)rq   r      r   r   )	r   	factorizer   r   intptaketmassert_numpy_array_equalassert_extension_array_equal)r?   r(   rq   labelsuniquesexpected_labels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      | |kS r   r	   x1x2r	   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   r   r   r	   r   r	   r	   r
   r!      r   c                    s   g | ]}| kqS r	   r	   )r   r&   valr	   r
   r      r"   )r   Seriescombineziplistassert_series_equaliloc)r?   data_repeated
orig_data1
orig_data2s1s2r]   r^   r	   r   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s&J |j|dddks1J ||dks:J |j|ddd	ksEJ ||ddg}tjddgtjd}t	
|| tddg}|j||d
dksqJ d S )NTFr   r   r   right)sidert   r   )sorter)r   r   type_from_sequencer   searchsortedrw   r   rv   rx   ry   )	r?   r   	as_seriesr%   r&   arrr]   r^   r   r	   r	   r
   test_searchsorted   s   
zTestMethods.test_searchsortedzuses nullable integerre   c                    s   t  ||S r   )r<   test_value_counts)r?   all_datadropnarC   r	   r
   r      s   zTestMethods.test_value_countsc                 C   rg   r   r	   )r?   r   r	   r	   r
    test_value_counts_with_normalize   rk   z,TestMethods.test_value_counts_with_normalizec                 C   sr   |  dksJ | dksJ |g d}|  dksJ | dks'J |  dks/J | dks7J d S )Nr   r   )r   r   r   rt   rt   r   rt   )argmaxargminrw   )r?   r   r   r   r	   r	   r
   test_argmin_argmax   s   zTestMethods.test_argmin_argmax)r,   r-   r.   rR   rm   parametrizer   r   r   rn   r   r   r   rb   r	   r	   rC   r
   rp      s    

rp   c                   @   r)   )TestCastingNr+   r	   r	   r	   r
   r      r/   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   s\   t g d|d}|djjd }|djjd }t|j|jj	 t
|j| d S )N)Br   NNAr   r   r   r   r   r   r   )r   	DataFramegroupbygrouper	groupingsrx   ry   grouping_vectorr   valuesrz   )r?   r(   dfgr1gr2r	   r	   r
   test_grouping_grouper  s   z!TestGroupby.test_grouping_grouperas_indexTFc                 C   s   t g d|d}|jd|dj }t j|dd\}}t j|dd}t jdd	g|d
d}|r8| || d S |	 }| 
|| d S )Nrt   rt   r   r      r   rt   r   r   )r   Tsortname      @      ?r   indexr   )r   r   r   r   meanru   Indexr   r   reset_indexassert_frame_equal)r?   r   r(   r   r]   _r   r^   r	   r	   r
   test_groupby_extension_agg  s   z&TestGroupby.test_groupby_extension_aggc                 C   s   t g d|d}|jg d }|d}|dddi}| || |dd}| || |d }| || d S )Nr   r   )r   r   r   r   r   first)r   r   r   	set_indexr   aggr   r   )r?   r(   r   r^   r]   r	   r	   r
   test_groupby_agg_extension  s   
z&TestGroupby.test_groupby_agg_extensionc                 C   sl   t g d|d}|jdddj }t j|dd\}}t j|dd}t jddg|d	d
}| || d S )Nr   r   r   Fr   r   r   r   r   r   )	r   r   r   r   r   ru   r   r   r   )r?   r(   r   r]   r   r   r^   r	   r	   r
   test_groupby_extension_no_sort*  s   z*TestGroupby.test_groupby_extension_no_sortc                 C   sV   ||    }tg d|d}|djt}tjg ddd}| || d S )N)rt   rt   r   r   rt   r   r   )r   r   r   r   r   r   r   )	rX   r   r   r   r   	transformlenr   r   )r?   r(   validr   r]   r^   r	   r	   r
    test_groupby_extension_transform3  s
   z,TestGroupby.test_groupby_extension_transformc                 C   s\   t g d|d}|d| |dj| |d| |dj| d S )Nr   r   r   r   )r   r   r   applyr   r   )r?   r(   groupby_apply_opr   r	   r	   r
   test_groupby_extension_apply<  s
   z(TestGroupby.test_groupby_extension_applyc                 C   s   t g d|d}|djdd }t j|jjg d j|jjddg j|jjd	d
g jgt jg ddddd}| 	|| d S )Nr   r   r   c                 S   s   | j S r   )r   )r   r	   r	   r
   r!   E  s    z9TestGroupby.test_groupby_apply_identity.<locals>.<lambda>)r   rt      r   r   r      rt   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r?   r(   r   r]   r^   r	   r	   r
   test_groupby_apply_identityC  s   	z'TestGroupby.test_groupby_apply_identityc                 C   s^   t g d|g dd}|d j}|jjr!t ddg}nt dg}t	|| d S )Nr   )rt   rt   rt   rt   rt   rt   rt   )r   r   Cr   r   r   )
r   r   r   sumcolumnsr   _is_numericr   rx   assert_index_equalr   r	   r	   r
   test_in_numeric_groupbyQ  s   z#TestGroupby.test_in_numeric_groupby	min_countr   
   c                 C   s   t g d|d}|dj|d}|dkr6t jdt jg ddd	it jg d
ddd}t|| d S t jdt jt jgd dd	it jg d
ddd}t|| d S )Nr   r   r   )r   r   r   )r   r   r   Int64r   r   r   )r   r   )	r   r   r   r   r   r   rx   r   r   )r?   r(   r   r   r]   r^   r	   r	   r
   test_groupby_sum_mincountb  s   z%TestGroupby.test_groupby_sum_mincountN)r,   r-   r.   __doc__r   rR   rm   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|rtj}n|dv r$t|}t|| d S )N)skipnafloat64)minmax)	getattrrV   r   isnanr   r   boolrx   assert_almost_equal)r?   r@   rA   r   r]   r^   r	   r	   r
   check_reduceu  s   
zTestNumericReduce.check_reduceN)r,   r-   r.   r   r	   r	   r	   r
   r   t  s    r   c                   @   r)   )TestBooleanReduceNr+   r	   r	   r	   r
   r     r/   r   c                   @   r)   )TestPrintingNr+   r	   r	   r	   r
   r     r/   r   c                   @   r)   )TestUnaryOpsNr+   r	   r	   r	   r
   r     r/   r   c                   @   r)   )TestParsingNr+   r	   r	   r	   r
   r     r/   r   ):r   numpyr   rR   pandasr   pandas._testing_testingrx   pandas.core.arrays.booleanr   pandas.tests.extensionr   r   fixturer   r   r   r   r   r   r#   r$   r(   BaseDtypeTestsr*   BaseInterfaceTestsr0   BaseConstructorsTestsr1   BaseGetitemTestsr2   BaseSetitemTestsr3   BaseMissingTestsr4   BaseArithmeticOpsTestsr5   BaseComparisonOpsTestsrc   BaseReshapingTestsro   BaseMethodsTestsrp   BaseCastingTestsr   BaseGroupbyTestsr   BaseNumericReduceTestsr   BaseBooleanReduceTestsr   BasePrintingTestsr   BaseUnaryOpsTestsr   BaseParsingTestsr   r	   r	   r	   r
   <module>   sV    








.Ox