a
    j=ic                    @   s*  d Z ddlmZmZmZmZ ddlZddlZddlm	Z	m
Z
mZmZmZmZmZmZmZ ddlmZ ddlZddlmZ ddlmZ ejddd	Zdd
lmZ ddlm Z  ej!ej"e#ddd Z$ej!dd Z%ej!dd Z&ej!d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,G d d! d!ej-Z.G d"d# d#ej/Z0G d$d% d%ej1Z2G d&d' d'ej3Z4G d(d) d)ej5Z6G d*d+ d+ej7Z8G d,d- d-ej9Z:G d.d/ d/ej;Z<G d0d1 d1ej=Z>G d2d3 d3ej?Z@G d4d5 d5ejAZBG d6d7 d7ejCZDG d8d9 d9ejEZFG d:d; d;ejGZHG d<d= d=ejIZJG d>d? d?ejKZLG d@dA dAejMZNG dBdC dCejOZPdDdE ZQejRjSeeTdFdGejRUdHg dIejRUdJdKdKdKggdLdM ZVejRjSeeTdNdGejRUdOdPdQgejRjUdRg dSdTdggg dUdgggdVdWgdXdYdZ ZWdS )[ag  
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/`.
    )datedatetimetime	timedeltaN)	is_ci_environmentis_platform_windowspa_version_under2p0pa_version_under3p0pa_version_under4p0pa_version_under6p0pa_version_under7p0pa_version_under8p0pa_version_under9p0)PerformanceWarning)baseZpyarrowz1.0.1)Z
minversion)ArrowExtensionArray)
ArrowDtype)paramsidsc                 C   s   t | jdS )N)pyarrow_dtype)r   param)request r   r/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/extension/test_arrow.pydtype/   s    r   c              	   C   s  | j }tj|rBddgd d g ddgd  d g ddg }n\tj|r~ddgd d g ddgd  d g d	d
g }n tj|rddgd d g ddgd  d g ddg }ntj|rddgd d g ddgd  d g ddg }ntj|rdtdddtdddgd d g tdddtdddgd  d g tdddtdddg }n:tj	|rt
dddddddt
dddddddgd d g t
ddddt
ddddgd  d g t
dddt
dddg }ntj|r:tdtddgd d g tdtdgd  d g tdtdg }ndtj|rtddtddgd d g tddtddgd  d g tddtddg }nttj|| dS )NTF   ,   g      ?        g       g            ?g     X@   r   c                  i
      r   r   patypes
is_booleanis_floatingZis_signed_integeris_unsigned_integeris_dater   is_timestampr   is_durationr   is_timer   NotImplementedErrorpdarray)r   pa_dtypedatar   r   r   r:   4   sn    0000*r:   c                 C   s   t | d| d gS )zLength-2 array with [NA, Valid]Nr   type_from_sequence)r:   r   r   r   data_missingd   s    r>   )r   c                 C   s    | j dkr|S | j dkr|S dS )zParametrized fixture returning 'data' or 'data_missing' integer arrays.

    Used to test dtype conversion with and without missing values.
    r:   r>   N)r   )r   r:   r>   r   r   r   all_dataj   s    

r?   c              	   C   sX  | j }tj|r"d}d}d}ntj|r<d}d}d}ntj|rVd}d}d}ntj|rpd}d}d	}ntj|rtd
dd}tddd}tddd}ntj	|rt
d
dddddd}t
ddd}t
dddd}n\tj|rtd}td}tdd}n2tj|r6tdd}tdd}tdd}nttj||dd||||g| dS )z
    Data for factorization, grouping, and unique tests.

    Expected to be like [B, B, NA, NA, A, A, B, C]

    Where A < B < C and NA is missing
    FTgr   g?r!   r   r   r)   r%   r&   r'   i  r$   r(   r   Nr+   r,   )r   r9   ABCr   r   r   data_for_groupingv   sF    	

rC   c                 C   s    t | | d | d | d gS )zn
    Length-3 array with a known sort order.

    This should be three items [B, C, A] with
    A < B < C
    r      r   r;   rC   r   r   r   data_for_sorting   s    rF   c                 C   s    t | | d | d | d gS )z{
    Length-3 array with a known sort order.

    This should be three items [B, NA, A] with
    A < B and NA missing.
    r   r#   r   r;   rE   r   r   r   data_missing_for_sorting   s    rG   c                 C   s:   | j j}tj|s tj|r6tjdgd | j dS | S )z3Length-100 array in which all the elements are two.r#   d   r+   )r   r   r-   r.   
is_integerr0   r7   r8   )r:   r9   r   r   r   data_for_twos   s    rJ   c                   C   s   t jS )z6The scalar missing value for this type. Default 'None')r7   NAr   r   r   r   na_value   s    rL   c                   @   s   e Zd ZdS )TestBaseCastingN__name__
__module____qualname__r   r   r   r   rM      s   rM   c                       s4   e Zd Z fddZdd Zdd Zdd Z  ZS )	TestConstructorsc                    sn   |j j}tj|r^|jr^tr@|jt	j
jd|j dd n|jt	j
jtd| d t | d S )Nztimestamp data with tz=z( converted to integer when pyarrow < 2.0reason$pyarrow.type_for_alias cannot infer raisesrT   )r   r   r-   r.   r3   tzr   node
add_markerpytestmarkxfailr6   supertest_from_dtypeselfr:   r   r9   	__class__r   r   r_      s    z TestConstructors.test_from_dtypec                 C   s~   t r|jtjjdd t||j}t	
|| t|jtjsHJ t||j }t	
|| t|jtjszJ d S )N,ChunkedArray has no attribute combine_chunksrS   )r	   rY   rZ   r[   r\   r]   r<   r=   _datatmassert_extension_array_equal
isinstancer-   ZChunkedArraycombine_chunks)ra   r:   r   resultr   r   r   test_from_sequence_pa_array   s    z,TestConstructors.test_from_sequence_pa_arrayc                 C   sb   t r|jtjjtdd tjtdd$ t	j
dgt d W d    n1 sT0    Y  d S )Nz3month_day_nano_interval not implemented by pyarrow.rV   zConverting strings tomatchz12-1r+   )r   rY   rZ   r[   r\   r]   AttributeErrorrW   r6   r   _from_sequence_of_stringsr-   Zmonth_day_nano_interval)ra   r   r   r   r   *test_from_sequence_pa_array_notimplemented   s    
z;TestConstructors.test_from_sequence_pa_array_notimplementedc                 C   s  |j j}tr&|jtjjdd n tj	
|rT|drT|jtjjdd ntj	|r|jtjjtjd| d ntj	|r|jtjjdd ntj	|r|jd urtr|jtjjtjd| d n*t rFt rF|jtjjtjd	d n4trFtj	|rF|jtjjtjd| d |jt }t|j||j d
}t|| | }t|j||j d
}t|| d S )Nrd   rS   z
time64[ns]z&Nanosecond time parsing not supported.z pyarrow doesn't support parsing rV   z:Iterating over ChunkedArray[bool] returns PyArrow scalars.z)pyarrow doesn't support string cast from z_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.r+   )r   r   r	   rY   rZ   r[   r\   r]   r-   r.   Z	is_time64equalsr4   ArrowNotImplementedErrorr/   r3   rX   r   r   r   ArrowInvalidr   is_temporalre   caststringr<   ro   rf   rg   ri   )ra   r:   r   r9   pa_arrayrj   r   r   r   &test_from_sequence_of_strings_pa_array  sl    	z7TestConstructors.test_from_sequence_of_strings_pa_array)rO   rP   rQ   r_   rk   rp   rx   __classcell__r   r   rb   r   rR      s   rR   c                       sN   e Zd Zejjdd fddZ fddZ fddZ fd	d
Z	  Z
S )TestGetitemTestsz`data.dtype.type return pyarrow.DataType but this (intentionally) returns Python scalars or pd.NarS   c                    s   t  | d S N)r^   test_getitem_scalarra   r:   rb   r   r   r|   C  s    z$TestGetitemTests.test_getitem_scalarc                    s~   t |jjdd }t |jjdd }dg}tr8|g d trn|dvrn||v rn|jtj	j
d| d| d t | d S 	NrX   unitns)smsusNUTCz3Not supported by pyarrow < 3.0 with timestamp type  and rS   )getattrr   r   r   extendr	   rY   rZ   r[   r\   r]   r^   test_take_series)ra   r   r:   rX   r   	bad_unitsrb   r   r   r   M  s     z!TestGetitemTests.test_take_seriesc                    s   t |jjdd }t |jjdd }dg}tr8|g d trn|dvrn||v rn|jtj	j
d| d| d t || d S r~   )r   r   r   r   r   r	   rY   rZ   r[   r\   r]   r^   test_reindex)ra   r   r:   rL   rX   r   r   rb   r   r   r   ^  s     zTestGetitemTests.test_reindexc                    s   t |jjdd }t |jjdd }dg}tr8|g d trr|sr|dvrr||v rr|jtj	j
d| d| d t | d S r~   )r   r   r   r   r   r	   rY   rZ   r[   r\   r]   r^    test_loc_iloc_frame_single_dtype)ra   r   Zusing_array_managerr:   rX   r   r   rb   r   r   r   o  s.    z1TestGetitemTests.test_loc_iloc_frame_single_dtype)rO   rP   rQ   r[   r\   r]   r|   r   r   r   ry   r   r   rb   r   rz   B  s   rz   c                       s6   e Zd Zdd Zejdddg fddZ  ZS )TestBaseNumericReducec                 C   sr   |j j}t|||d}tj|r0td n"tj|sHtj	|rR|
d}t|||d}t|| d S )NskipnazApandas boolean data with NA does not fully support all reductionsZFloat64)r   r   r   r-   r.   r/   r[   skiprI   r0   astyperf   Zassert_almost_equal)ra   serop_namer   r9   rj   expectedr   r   r   check_reduce  s    
z"TestBaseNumericReduce.check_reducer   TFc                    sj  |j j}tjjt| dtj d| d}|dv rB|j	| n|dv r\t
r\|j	| n|dv rvtrv|j	| n|dv r|du rt
rtj|stj|r|j	tjjt| d| d	| d
tj d ntj|s2tj|s2tj|s2|dv r$tj|r$tj|r2|j	| n$tj|rV|dv rV|j	| t ||| d S )N is not implemented in pyarrow= for rV   >   ZskewZkurt>   prodminmedianmaxstdvar>   meansumFz with skip_nulls=z did not return NA for z with pyarrow=>   r   r   >   r   r   r   )r   r   r[   r\   r]   	TypeErrorr-   __version__rY   rZ   r   r   r.   rI   r0   AssertionErrorr/   rt   r4   r^   test_reduce_series)ra   r:   Zall_numeric_reductionsr   r   r9   
xfail_markrb   r   r   r     sl    







z(TestBaseNumericReduce.test_reduce_series)	rO   rP   rQ   r   r[   r\   parametrizer   ry   r   r   rb   r   r     s   r   c                   @   s&   e Zd Zejdddgdd ZdS )TestBaseBooleanReducer   TFc                 C   s   |j j}tjjt| dtj d| d}tj	|sD|j
| ntrT|j
| |}t|}	t|	||d}
|
|dku sJ d S )Nr   r   rV   r   any)r   r   r[   r\   r]   r   r-   r   r.   r/   rY   rZ   r	   r7   Seriesr   )ra   r:   Zall_boolean_reductionsr   rL   r   r9   r   r   r   rj   r   r   r   r     s"    
z(TestBaseBooleanReduce.test_reduce_seriesN)rO   rP   rQ   r[   r\   r   r   r   r   r   r   r     s   r   c                       sj   e Zd Z fddZ fddZ fddZ fddZ fd	d
Zej	
dddg fddZ  ZS )TestBaseGroupbyc                    sJ   t |jjdd }tr:|dvr:|jtjjd| dd t	 
| d S )NrX   r   3Not supported by pyarrow < 2.0 with timestamp type .rS   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_groupby_agg_extension)ra   rC   r   rX   rb   r   r   r     s    
z*TestBaseGroupby.test_groupby_agg_extensionc                    sn   |j j}tj|r2|jtjj	| dd n,tj
|r^|jtjj	tjd| d t | d S N" only has 2 unique possible valuesrS   $pyarrow doesn't support factorizing rV   )r   r   r-   r.   r/   rY   rZ   r[   r\   r]   r4   rr   r^   test_groupby_extension_no_sortra   rC   r   r9   rb   r   r   r     s    z.TestBaseGroupby.test_groupby_extension_no_sortc                    sn   |j j}tj|r2|jtjj	| dd n,tj
|r^|jtjj	tjd| d t | d S r   )r   r   r-   r.   r/   rY   rZ   r[   r\   r]   r4   rr   r^    test_groupby_extension_transformr   rb   r   r   r     s    z0TestBaseGroupby.test_groupby_extension_transformc                    sv   |j j}tj|r4|jtjj	tj
d| d tjttdd t || W d    n1 sh0    Y  d S )Nr   rV   FZcheck_stacklevel)r   r   r-   r.   r4   rY   rZ   r[   r\   r]   rr   rf   maybe_produces_warningr   r   r^   test_groupby_extension_apply)ra   rC   Zgroupby_apply_opr   r9   rb   r   r   r     s    z,TestBaseGroupby.test_groupby_extension_applyc                    sF   |j j}tj|s tj|r6|jtj	j
dd t | d S )Nz/ArrowExtensionArray doesn't support .sum() yet.rS   )r   r   r-   r.   rI   r0   rY   rZ   r[   r\   r]   r^   test_in_numeric_groupbyr   rb   r   r   r     s    z'TestBaseGroupby.test_in_numeric_groupbyas_indexTFc                    s   |j j}tj|r4|jtjj	t
| dd n,tj|r`|jtjj	tjd| d tjttdd t || W d    n1 s0    Y  d S )Nr   rV   r   Fr   )r   r   r-   r.   r/   rY   rZ   r[   r\   r]   
ValueErrorr4   rr   rf   r   r   r   r^   test_groupby_extension_agg)ra   r   rC   r   r9   rb   r   r   r   &  s&    z*TestBaseGroupby.test_groupby_extension_agg)rO   rP   rQ   r   r   r   r   r   r[   r\   r   r   ry   r   r   rb   r   r     s   

r   c                       sH   e Zd Z fddZ fddZ fddZdd Z fd	d
Z  ZS )TestBaseDtypec                    sJ   |j }tj|r:|jd ur:|jtjj	t
d| d t | d S NrU   rV   )r   r-   r.   r3   rX   rY   rZ   r[   r\   r]   r6   r^   #test_construct_from_string_own_namera   r   r   r9   rb   r   r   r   >  s    z1TestBaseDtype.test_construct_from_string_own_namec                    sJ   |j }tj|r:|jd ur:|jtjj	t
d| d t | d S r   )r   r-   r.   r3   rX   rY   rZ   r[   r\   r]   r6   r^   test_is_dtype_from_namer   rb   r   r   r   I  s    z%TestBaseDtype.test_is_dtype_from_namec                    sJ   |j }tj|r:|jd ur:|jtjj	t
d| d t | d S r   )r   r-   r.   r3   rX   rY   rZ   r[   r\   r]   r6   r^   test_construct_from_stringr   rb   r   r   r   T  s    z(TestBaseDtype.test_construct_from_stringc                 C   sD   d}t jt|d t|d W d    n1 s60    Y  d S )Nz*'another_type' must end with '\[pyarrow\]'rl   Zanother_type)r[   rW   r   r<   construct_from_string)ra   r   msgr   r   r   .test_construct_from_string_another_type_raises_  s    z<TestBaseDtype.test_construct_from_string_another_type_raisesc                    s   |j }tj|sTtj|sTtj|r>|jdksT|jd usTtj|rp|jdkrp|j	
tjj| dd t | d S )Nr   zB does not have associated numpy dtype findable by find_common_typerS   )r   r-   r.   r2   r5   r3   r   rX   r4   rY   rZ   r[   r\   r]   r^   test_get_common_dtyper   rb   r   r   r   d  s*    



	z#TestBaseDtype.test_get_common_dtype)	rO   rP   rQ   r   r   r   r   r   ry   r   r   rb   r   r   =  s
   r   c                   @   s   e Zd ZdS )TestBaseIndexNrN   r   r   r   r   r   z  s   r   c                       s6   e Zd Z fddZejjdd fddZ  ZS )TestBaseInterfacec                    sh   t |jjdd }t |jjdd }trV|dvrV|dkrV|jtjjd| d| d t	 
|| d S )NrX   r   r   r   r   r   rS   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_contains)ra   r:   r>   r   rX   r   rb   r   r   r     s    zTestBaseInterface.test_containsz,pyarrow.ChunkedArray does not support views.rS   c                    s   t  | d S r{   )r^   	test_viewr}   rb   r   r   r     s    zTestBaseInterface.test_view)	rO   rP   rQ   r   r[   r\   r]   r   ry   r   r   rb   r   r   ~  s   r   c                       s(   e Zd Zejd fddZ  ZS )TestBaseMissingz4ignore:Falling back:pandas.errors.PerformanceWarningc                    s   t  | d S r{   )r^   test_dropna_array)ra   r>   rb   r   r   r     s    z!TestBaseMissing.test_dropna_array)rO   rP   rQ   r[   r\   filterwarningsr   ry   r   r   rb   r   r     s   
r   c                   @   s   e Zd ZdS )TestBasePrintingNrN   r   r   r   r   r     s   r   c                       s   e Zd Z fddZ fddZ fddZ fddZ fd	d
Z fddZ fddZ	e
jjdd fddZ fddZ  ZS )TestBaseReshapingc                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S NrX   r   r   rS   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_concat_columnsra   r:   rL   r   rX   rb   r   r   r     s    z%TestBaseReshaping.test_concat_columnsc                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   'test_concat_extension_arrays_copy_falser   rb   r   r   r     s    z9TestBaseReshaping.test_concat_extension_arrays_copy_falsec                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   
test_alignr   rb   r   r   r     s    zTestBaseReshaping.test_alignc                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_align_framer   rb   r   r   r     s    z"TestBaseReshaping.test_align_framec                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_align_series_framer   rb   r   r   r     s    z)TestBaseReshaping.test_align_series_framec                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   
test_merger   rb   r   r   r     s    zTestBaseReshaping.test_mergec                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   
test_ravelra   r:   r   rX   rb   r   r   r     s    zTestBaseReshaping.test_ravel5GH 45419: pyarrow.ChunkedArray does not support viewsrS   c                    s   t  | d S r{   )r^   test_transposer}   rb   r   r   r     s    z TestBaseReshaping.test_transposec                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_transpose_framer   rb   r   r   r     s    z&TestBaseReshaping.test_transpose_frame)rO   rP   rQ   r   r   r   r   r   r   r   r[   r\   r]   r   r   ry   r   r   rb   r   r     s   






r   c                
       s  e Zd Z fddZ fddZ fddZejddd	g fd
dZ	 fddZ
 fddZ fddZ fddZ fddZ fddZejjdeg dejg dddejdddejejgddgg dd fdd Z fd!d"Zejjd#g d$ejg d$d%deg d$gg d&d fd'd(Zejd)dd*gejddd+g fd,d-Zejddd+g fd.d/Z fd0d1Z fd2d3Z fd4d5Z fd6d7Z fd8d9Z fd:d;Z fd<d=Zejj d>d? fd@dAZ!  Z"S )BTestBaseSetitemc                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_scalar_seriesra   r:   box_in_seriesr   rX   rb   r   r   r     s    z*TestBaseSetitem.test_setitem_scalar_seriesc                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_sequencer   rb   r   r   r     s    z%TestBaseSetitem.test_setitem_sequencec                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^    test_setitem_sequence_broadcastsr   rb   r   r   r     s    z0TestBaseSetitem.test_setitem_sequence_broadcastssetterlocilocc                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_scalarra   r:   r   r   rX   rb   r   r   r     s    z#TestBaseSetitem.test_setitem_scalarc                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_loc_scalar_mixedr   rb   r   r   r     s    z-TestBaseSetitem.test_setitem_loc_scalar_mixedc                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_loc_scalar_singler   rb   r   r   r   &  s    z.TestBaseSetitem.test_setitem_loc_scalar_singlec                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   ,test_setitem_loc_scalar_multiple_homogoneousr   rb   r   r   r   0  s    z<TestBaseSetitem.test_setitem_loc_scalar_multiple_homogoneousc                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_iloc_scalar_mixedr   rb   r   r   r   :  s    z.TestBaseSetitem.test_setitem_iloc_scalar_mixedc                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_iloc_scalar_singler   rb   r   r   r   D  s    z/TestBaseSetitem.test_setitem_iloc_scalar_singlec                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   -test_setitem_iloc_scalar_multiple_homogoneousr   rb   r   r   r   N  s    z=TestBaseSetitem.test_setitem_iloc_scalar_multiple_homogoneousmask)TTTFFbooleanr+   T)numpy-arrayzboolean-arrayzboolean-array-nar   c                    sL   t |jjdd }tr8|dvr8|jtjjd| d t	 
||| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_mask)ra   r:   r   r   r   rX   rb   r   r   r   X  s    
z!TestBaseSetitem.test_setitem_maskc                    sb   t |jjdd }t |jjdd }trP|dvrP|dkrP|jtjjd| d t	 
|| d S )NrX   r   r   r   r   rS   )r   r   r   r   rY   rZ   r[   r\   r]   r^   'test_setitem_mask_boolean_array_with_na)ra   r:   r   r   rX   r   rb   r   r   r   k  s    z7TestBaseSetitem.test_setitem_mask_boolean_array_with_naidx)r   r   r#   ZInt64)listzinteger-arrayr   c                    sL   t |jjdd }tr8|dvr8|jtjjd| d t	 
||| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_integer_array)ra   r:   r   r   r   rX   rb   r   r   r   v  s    z*TestBaseSetitem.test_setitem_integer_arrayas_callableFNc                    sL   t |jjdd }tr8|dvr8|jtjjd| d t	 
||| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_mask_aligned)ra   r:   r   r   r   rX   rb   r   r   r     s    z)TestBaseSetitem.test_setitem_mask_alignedc                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_mask_broadcastr   rb   r   r   r     s    z+TestBaseSetitem.test_setitem_mask_broadcastc                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_tuple_indexr   rb   r   r   r     s    z(TestBaseSetitem.test_setitem_tuple_indexc                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_slicer   rb   r   r   r     s    z"TestBaseSetitem.test_setitem_slicec                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_loc_iloc_slicer   rb   r   r   r     s    z+TestBaseSetitem.test_setitem_loc_iloc_slicec                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_slice_arrayr   rb   r   r   r     s    z(TestBaseSetitem.test_setitem_slice_arrayc                    sZ   d|j jv }t|jjdd }trH|dvrH|sH|j tjj	d| d t
 || d S )NZ
null_slicerX   r   r   rS   )rY   nodeidr   r   r   r   rZ   r[   r\   r]   r^   ,test_setitem_with_expansion_dataframe_column)ra   r:   Zfull_indexerr   Zis_null_slicerX   rb   r   r   r     s    z<TestBaseSetitem.test_setitem_with_expansion_dataframe_columnc                    sJ   t |jjdd }tr8|dvr8|jtjjd| d t	 
|| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_with_expansion_rowr   rb   r   r   r     s    z/TestBaseSetitem.test_setitem_with_expansion_rowc                    sH   t |jjdd }tr8|dvr8|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_setitem_frame_2d_valuesr   rb   r   r   r     s    z,TestBaseSetitem.test_setitem_frame_2d_valuesr   rS   c                    s   t  | d S r{   )r^   test_setitem_preserves_viewsr}   rb   r   r   r     s    z,TestBaseSetitem.test_setitem_preserves_views)#rO   rP   rQ   r   r   r   r[   r\   r   r   r   r   r   r   r   r   npr8   r7   rK   r   r   r   r   r   r   r   r   r   r   r   r   r]   r   ry   r   r   rb   r   r     sR   









	
$








r   c                       s.   e Zd Zejdddg fddZ  ZS )TestBaseParsingenginecpythonc                    sx   |j j}tj|r.|jtjj	t
dd n8tj|rf|jd urf|jtjj	td|j dd t || d S )NzGH 47534rV   zParameterized types with tz=z not supported.)r   r   r-   r.   r/   rY   rZ   r[   r\   r]   r   r3   rX   r6   r^   test_EA_types)ra   r  r:   r   r9   rb   r   r   r    s    zTestBaseParsing.test_EA_types)rO   rP   rQ   r[   r\   r   r  ry   r   r   rb   r   r    s   r  c                       s.   e Zd Zejjeedd fddZ  Z	S )TestBaseUnaryOpsz3pyarrow.compute.invert not supported in pyarrow<2.0rV   c                    sD   |j j}tj|s4|jtjj	tj
d| d t | d S )Nz$pyarrow.compute.invert does support rV   )r   r   r-   r.   r/   rY   rZ   r[   r\   r]   rr   r^   test_invertr`   rb   r   r   r    s    zTestBaseUnaryOps.test_invert)
rO   rP   rQ   r[   r\   r]   r   r6   r  ry   r   r   rb   r   r    s   r  c                       s  e Zd Zejdddg fddZejdddg fd	d
Z fddZejj	e
edd fddZejdddddddejfddejfddg fddZejdddg fddZejdddg fdd Zejd!ejd"d# gejd$d%d# ejg fd&d'Zejd(d)dg fd*d+Zejd(d)dg fd,d-Z fd.d/Z fd0d1Zejd2d3dd4g d5g fd6d7Z fd8d9Z fd:d;Zejj	d<d= fd>d?Z fd@dAZ fdBdCZ fdDdEZ   Z!S )FTestBaseMethodsperiodsr   r    c              	      sV   |j j}tj|rD|dkrD|jtjj	tj
d| d| dd t || d S )Nr   z
diff with z and periods=z will overflowrV   )r   r   r-   r.   r1   rY   rZ   r[   r\   r]   rs   r^   	test_diff)ra   r:   r	  r   r9   rb   r   r   r
    s    zTestBaseMethods.test_diffdropnaTFc                    sF   |j j}tj|r4|jtjj	tj
d| d t || d S )Nzvalue_count has no kernel for rV   )r   r   r-   r.   r4   rY   rZ   r[   r\   r]   rr   r^   test_value_counts)ra   r?   r  r   r9   rb   r   r   r    s    z!TestBaseMethods.test_value_countsc                    sD   |j j}tj|r4|jtjj	tj
d| d t | d S )Nz&value_count has no pyarrow kernel for rV   )r   r   r-   r.   r4   rY   rZ   r[   r\   r]   rr   r^    test_value_counts_with_normalizer`   rb   r   r   r  (  s    z0TestBaseMethods.test_value_counts_with_normalizez6argmin/max only implemented for pyarrow version >= 6.0rV   c                    sr   |j j}tj|r2|jtjj	| dd n,tj
|r^|jtjj	tjd| d t ||| d S )Nr   rS   %min_max not supported in pyarrow for rV   )r   r   r-   r.   r/   rY   rZ   r[   r\   r]   r4   rr   r^   test_argmin_argmax)ra   rF   rG   rL   r   r9   rb   r   r   r  3  s    z"TestBaseMethods.test_argmin_argmaxzop_name, skipna, expected)idxmaxTr   )idxminTr#   )argmaxTr   )argminTr#   r  r  )r  Fr!   )r  Fr!   c                    st   |j j}tr*|r*|jtjjtdd n4ts^t	j
|r^|r^|jtjjt	jd| d t |||| d S )Nz min_max not supported in pyarrowrV   r  )r   r   r   rY   rZ   r[   r\   r]   r6   r-   r.   r4   rr   r^   test_argreduce_series)ra   rG   r   r   r   r   r9   rb   r   r   r  K  s$    z%TestBaseMethods.test_argreduce_series	ascendingc                    sV   |j j}tj|rB|sBtsB|jtj	j
tjd| d| d t ||| d S )N!unique has no pyarrow kernel for  when ascending=rV   )r   r   r-   r.   r4   r   rY   rZ   r[   r\   r]   rr   r^   test_sort_values)ra   rF   r  Zsort_by_keyr   r9   rb   r   r   r  n  s    	z TestBaseMethods.test_sort_valuesc                    sL   |j j}tj|r:|jtjj	tj
d| d| d t || d S )N,dictionary_encode has no pyarrow kernel for r  rV   )r   r   r-   r.   r4   rY   rZ   r[   r\   r]   rr   r^   test_sort_values_frame)ra   rF   r  r   r9   rb   r   r   r  }  s    	z&TestBaseMethods.test_sort_values_frameboxc                 C   s   | S r{   r   xr   r   r   <lambda>      zTestBaseMethods.<lambda>methodc                 C   s   |   S r{   )uniquer  r   r   r   r    r  c                    sN   |j j}tj|r:ts:|jtj	j
tjd| dd t ||| d S )Nr  r   rV   )r   r   r-   r.   r4   r   rY   rZ   r[   r\   r]   rr   r^   test_unique)ra   r:   r  r   r   r9   rb   r   r   r"    s    
zTestBaseMethods.test_uniquena_sentinelr!   c                    sp   |j j}tj|r6|jtjj	tj
d| d n(tj|r^|jtjj	| dd t || d S )Nr  rV   r   rS   )r   r   r-   r.   r4   rY   rZ   r[   r\   r]   rr   r/   r^   test_factorizera   rC   r#  r   r9   rb   r   r   r$    s    zTestBaseMethods.test_factorizec                    sF   |j j}tj|r4|jtjj	tj
d| d t || d S Nr  rV   )r   r   r-   r.   r4   rY   rZ   r[   r\   r]   rr   r^   test_factorize_equivalencer%  rb   r   r   r'    s    z*TestBaseMethods.test_factorize_equivalencec                    sD   |j j}tj|r4|jtjj	tj
d| d t | d S r&  )r   r   r-   r.   r4   rY   rZ   r[   r\   r]   rr   r^   test_factorize_emptyr`   rb   r   r   r(    s    z$TestBaseMethods.test_factorize_emptyc                    sL   |j j}t|dd }tr<|dvr<|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_shift_fill_valuera   r:   r   r9   rX   rb   r   r   r)    s    z%TestBaseMethods.test_shift_fill_valuerepeatsr   r#   )r   r#      c                    s`   |j j}t|dd }trJ|dvrJ|dkrJ|jtjjd| d| d t	 
|||| d S )NrX   r   r   r   z when repeats=rS   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_repeat)ra   r:   r+  	as_seriesZ	use_numpyr   r9   rX   rb   r   r   r-    s    zTestBaseMethods.test_repeatc                    sL   |j j}t|dd }tr<|dvr<|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_insertr*  rb   r   r   r/    s    zTestBaseMethods.test_insertc                    sL   |j j}t|dd }tr<|dvr<|jtjjd| d t	 
| d S r   )r   r   r   r   rY   rZ   r[   r\   r]   r^   test_combine_firstr*  rb   r   r   r0    s    z"TestBaseMethods.test_combine_firstz<result dtype pyarrow[bool] better than expected dtype objectrS   c                    s   t  | d S r{   )r^   test_combine_le)ra   data_repeatedrb   r   r   r1    s    zTestBaseMethods.test_combine_lec                    sN   t |djj}tj|r>|jtj	j
t| d| d t | d S )Nr   z cannot be added to rV   )nextr   r   r-   r.   rt   rY   rZ   r[   r\   r]   r   r^   test_combine_add)ra   r2  r   r9   rb   r   r   r4    s    z TestBaseMethods.test_combine_addc                    sB   |j j}tj|r0|jtjj	| dd t
 || d S )Nr   rS   )r   r   r-   r.   r/   rY   rZ   r[   r\   r]   r^   test_searchsorted)ra   rF   r.  r   r9   rb   r   r   r5    s    z!TestBaseMethods.test_searchsortedc                    sH   |j j}tj|r4|jtjj	tj
d| d t ||| d S )Nz Unsupported cast from double to rV   )r   r   r-   r.   rt   rY   rZ   r[   r\   r]   rr   r^   test_where_series)ra   r:   rL   Zas_framer   r9   rb   r   r   r6    s    z!TestBaseMethods.test_where_series)"rO   rP   rQ   r[   r\   r   r
  r  r  r]   r   r6   r  r   nanr  r  r  r7   r   r!  r"  r$  r'  r(  r)  r-  r/  r0  r1  r4  r5  r6  ry   r   r   rb   r   r    s`   


r  c                       sH   e Zd ZeZdd Z fddZ fddZdd Z fd	d
Z	  Z
S )TestBaseArithmeticOpsc           
      C   s   t j| |||}d}t|tjrNd}|jd d df }|jd d df j}n
|}|j}t	|j
|j}t|j
|}	|rtj|	|j|jd}n
t|	}|S )NFTr   )indexcolumns)r   BaseArithmeticOpsTests_combinerh   r7   Z	DataFramer   r   r-   r8   _valuesru   r   r<   r9  r:  r   )
ra   objotheropr   Z	was_frameZexpected_dataZoriginal_dtyperw   Zpd_arrayr   r   r   _patch_combine  s     

z$TestBaseArithmeticOps._patch_combinec                    sn  |j j}t o4|dv r"tj|p4|dv o4tj|}|dv sBtrJt| _	n8|rVd | _	n,tj
|s|tj|s||s|tj| _	nd | _	|dkrtj
|stj|rts|jtjjd| d np|r|jtjjt| d| dd	 nF|d
v r4tj
|stj|r4ts4|jtjjtjdd	 |dkr\tj|r\|td| j t || d S N__add____radd____sub____rsub__>   __rmod____mod____rpow__<GH 29997: 1**pandas.NA == 1 while 1**pyarrow.NA == NULL for rS     not supported betweenpd.NA and  Python scalarrV   >   __rtruediv____rfloordiv__divide by 0__floordiv__r<  )r   r   r   r-   r.   r4   rt   r   r6   Zseries_scalar_excr0   rI   rr   rY   rZ   r[   r\   r]   r   rs   setattrr8  rA  r^   test_arith_series_with_scalarra   r:   all_arithmetic_operatorsr   monkeypatchr9   arrow_temporal_supportedrb   r   r   rT  4  s    









z3TestBaseArithmeticOps.test_arith_series_with_scalarc                    sj  |j j}t o4|dv r"tj|p4|dv o4tj|}|dv sBtrJt| _	n4|rVd | _	n(tj
|sxtj|sxtj| _	nd | _	|dkrtj
|stj|rts|jtjjd| d np|r|jtjjt| d| dd	 nF|d
v r0tj
|stj|r0ts0|jtjjtjdd	 |dkrXtj|rX|td| j t || d S rB  )r   r   r   r-   r.   r4   rt   r   r6   Zframe_scalar_excr0   rI   rr   rY   rZ   r[   r\   r]   r   rs   rS  r8  rA  r^   test_arith_frame_with_scalarrU  rb   r   r   rY  z  sz    







z2TestBaseArithmeticOps.test_arith_frame_with_scalarc           
      C   s  |j j}t o4|dv r"tj|p4|dv o4tj|}|dv sBtrJt| _	n4|rVd | _	n(tj
|sxtj|sxtj| _	nd | _	|dkrtj
|stj|rts|jtjjd| d n|dv rtj|rts|jtjjtjd| d nr|r&|jtjjt| d	| d
d nF|dv rltj
|sLtj|rltsl|jtjjtjdd |}t|}ttj|jd gt| |j d}	tj
|stj|r|dkr|td| j | j|||	| j	d d S )NrC  rF  >   rI  rJ  rK  rL  rS   zJImplemented pyarrow.compute.subtract_checked which raises on overflow for rV   rM  rN  >   rO  rP  rQ  r   r+   __truediv__r<  )exc)r   r   r   r-   r.   r4   rt   r   r6   Zseries_array_excr0   rI   rr   rY   rZ   r[   r\   r]   r1   rs   r   r7   r   r8   r   lenrS  r8  rA  Zcheck_opname)
ra   r:   rV  r   rW  r9   rX  r   r   r?  r   r   r   test_arith_series_with_array  s    




	
		



&
z2TestBaseArithmeticOps.test_arith_series_with_arrayc                    s   |j j}tj|s0tj|s0ts4tj|r4trT|j	
tjjtd| d n*|dr~|j	
tjjtjd| d t | d S )Nz add_checked not implemented for rV   Zint8zraises on overflow for )r   r   r-   r.   rI   r0   r   r4   r   rY   rZ   r[   r\   r]   r6   rq   rs   r^   $test_add_series_with_extension_arrayr`   rb   r   r   r^    s2    



z:TestBaseArithmeticOps.test_add_series_with_extension_array)rO   rP   rQ   r6   Z
divmod_excrA  rT  rY  r]  r^  ry   r   r   rb   r   r8    s   FBYr8  c                       s,   e Zd Z fddZdd Zdd Z  ZS )TestBaseComparisonOpsc                    s4   t j|j dd}t j||g|R i | d S )Nr   r+   )r7   r   r=  Zto_numpyr^   assert_series_equal)ra   leftrightargskwargsrb   r   r   r`  0  s    z)TestBaseComparisonOps.assert_series_equalc              
   C   s  |j j}t|}ttj|jd gt| |j d}|jdv r|||}|d |u s\J |d |u slJ |||}	||	d< ||	d< | 	||	 nd }
z|||}W n( t
y } z|}
W Y d }~n
d }~0 0 |
d u rXtj|r>|d |u sJ |d |u sJ |ddgjdd}|ddg}|ddg}|||}	| 	||	 n<tt|
 ||| W d    n1 s0    Y  d S )Nr   r+   )eqne   a   T)drop)r   r   r7   r   r8   r   r\  rO   combiner`  	Exceptionr-   r.   rt   ri  Zreset_indexr[   rW   r<   )ra   r:   comparison_oprL   r   r9   r   r?  rj   r   r[  errr   r   r   test_compare_array6  s6    
&


z(TestBaseComparisonOps.test_compare_arrayc                 C   s>   t jtdd ||t  W d    n1 s00    Y  d S )Nz'.* not implemented for <class 'object'>rl   )r[   rW   r6   object)ra   r:   rl  r   r   r   test_invalid_other_comp^  s    z-TestBaseComparisonOps.test_invalid_other_comp)rO   rP   rQ   r`  rn  rp  ry   r   r   rb   r   r_  /  s   (r_  c                   C   s<   t jtdd td W d    n1 s.0    Y  d S )NzPassing pyarrow typerl   ztimestamp[s, tz=UTC][pyarrow])r[   rW   r6   r   r   r   r   r   r   Ftest_arrowdtype_construct_from_string_type_with_unsupported_parametersf  s    rq  z2quantile only supported for pyarrow version >= 4.0rV   interpolation)ZlinearlowerZhigherZnearestZmidpointquantiler   c                 C   s   | j j}tj|s@tj|s@|jtj	j
tjd| d | g d} t| }|j||d}|dkr|| d ksJ n8|d}tj| ddgdddgd}t|| d S )	Nz&quantile not supported by pyarrow for rV   )r   r   r   )qrr  r   r   zfloat64[pyarrow])r9  )r   r   r-   r.   rI   r0   rY   rZ   r[   r\   r]   rr   taker7   r   rt  r   rf   r`  )r:   rr  rt  r   r9   r   rj   r   r   r   r   test_quantilek  s$    


rw  z.mode only supported for pyarrow version >= 6.0r  TFztake_idx, exp_idx)r   r   r#   r#   r   r   r   )r   r   r   r#   r   r   
multi_modeZsingle_moder   c           
      C   s   | j j}tj|r6|jtjj	tj
d| d n2tj|rhd|jjv rhtrh|jtjj	dd | |}t|}|j|d}t| |}	t||	 d S )Nz"mode not supported by pyarrow for rV   rx  z1https://issues.apache.org/jira/browse/ARROW-17096rS   )r  )r   r   r-   r.   rt   rY   rZ   r[   r\   r]   rr   r/   r   r   rv  r7   r   moderf   r`  )
rC   r  Ztake_idxZexp_idxr   r9   r:   r   rj   r   r   r   r   	test_mode  s0    



rz  )X__doc__r   r   r   r   numpyr   r[   Zpandas.compatr   r   r   r	   r
   r   r   r   r   Zpandas.errorsr   Zpandasr7   Zpandas._testingZ_testingrf   Zpandas.tests.extensionr   Zimportorskipr-   Zpandas.core.arrays.arrow.arrayr   Zpandas.core.arrays.arrow.dtyper   ZfixtureZALL_PYARROW_DTYPESstrr   r:   r>   r?   rC   rF   rG   rJ   rL   ZBaseCastingTestsrM   ZBaseConstructorsTestsrR   ZBaseGetitemTestsrz   ZBaseNumericReduceTestsr   ZBaseBooleanReduceTestsr   ZBaseGroupbyTestsr   ZBaseDtypeTestsr   ZBaseIndexTestsr   ZBaseInterfaceTestsr   ZBaseMissingTestsr   ZBasePrintingTestsr   ZBaseReshapingTestsr   ZBaseSetitemTestsr   ZBaseParsingTestsr  ZBaseUnaryOpsTestsr  ZBaseMethodsTestsr  r;  r8  ZBaseComparisonOpsTestsr_  rq  r\   r]   r6   r   rw  rz  r   r   r   r   <module>   s   ,

/


.


	
oDB^=V x    7