a
    Pf                    @  sX  d Z ddlmZ ddlmZmZmZmZ ddlmZ ddl	m
Z
mZ ddlZddl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mZmZmZmZmZmZ ddlm  m Z! dd
l"m#Z#m$Z$ ddl%Z&ddl'm(Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 e6dZ7ddl8m9Z9 ddl:m;Z; dd Z<ej=e)j>e?ddd Z@ej=dd ZAej=dd ZBej=ddgddd ZCej=dd ZDej=dd  ZEej=d!d" ZFej=d#d$ ZGG d%d& d&e5jHZIG d'd( d(ZJejKLd)e)jMd*d+ ZNd,d- ZOd.d/ ZPd0d1 ZQd2d3 ZRd4d5 ZSejKLd6g d7ejKLd8d9d9d9ggd:d; ZTejKjLd<g d=d>dggg d?dgggd@dAgdBdCdD ZUdEdF ZVejKLdGe7W eXge7WdHeXge7Y eXge7Z e?ge7[e7\ e]ge7^e7\ e]ge7_e7` e7\ e]ge7adIe7b fdJe7` fgecge7de7\ e7\ e$gg	dKdL ZedMdN ZfdOdP ZgdQdR ZhdSdT ZidUdV ZjdWdX ZkdYdZ Zld[d\ Zmd]d^ Znd_d` Zodadb Zpdcdd ZqejKLdeej+ejrfdfgdgdh Zsdidj Ztdkdl Zudmdn Zvdodp Zwdqdr Zxdsdt Zydudv Zzdwdx Z{dydz Z|ejKLd{d|d}gd~d Z}dd Z~ejKLdddgddgddggdd Zdd ZejKLdddddddggddddddggddddddggddddddggddddddgggdd Zdd ZejKLddddg dgdddg dgdddg dgdddg dgdddg dgdddg dgdddg dgdddg dggdd ZejKLdddd ZejKLdd{edgde?gddgddggdd ZejKLdddddddggddddddggddddddgggdd Zdd Zdd Zdd ZejKLddddddggdddddggdddddggdddddggdddddggdddddgggddĄ ZejKLdd|ddg dŢgdddg dǢgdddg dǢgdddg dŢgd}ddg dŢgdddg dǢgdddg dɢgdddg dˢgdddg dǢgdddg dǢgg
ddτ ZejKLddddddge7 gdddddge7\ ggddӄ ZddՄ Zddׄ ZejKLddg d٢gdg dڢgdg dܢgdg dޢgd>g dߢggdd ZejKjdeddd Zdd ZejKLddddddggdddddggdddddgggdd ZejKLddddddggdddddggdddddgggdd ZejKLdg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g dg dg dgdd ZejKLdddgd	d
gddgddgddgddggdd Zdd ZejKLdg dg dg dg dg dg dgdd ZejKLdd d|gd!d" ZejKLdd#d|gd$d% ZejKLd&d'd(gejKLd)d*d+gd,d-ggd.d/ ZejKLdddgd0d1 ZejKLd2d3d4gejKLd5ddgdd>ggd6d7 ZejKLd8d9d:gd;d< ZejKLd5ddgdd>ggd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZejKLd2dGdHgdIdJ ZdKdL ZdMdN ZdOdP ZejKLdQddgdRdS ZdTdU ZejKLdVg dWdXdY ZdZd[ ZejKLd\d]d^gd_dgd`dgdadgdbdgdcdgdddgdedgdfd>gdgdgdhdigdjdgdkdlgdmdgdndogdped^ddۃgdqedd>dodiggdrds Zdtdu Zdvdw Zdxdy ZejKLd2dzd{gd|d} Zd~d ZejKLdVddgdd ZejKLdg ddd Zdd ZejKLdddgddggdd Zdd ZejKLd2g ddd ZejKLd2g ddd ZejKLdg dejKLd2g ddd Zdd ZejKLdddgdd Zdd Zdd ZejKLdVddgdd ZejKLdded^dѐddѐdgde&dggdd ZÐdd ZĐdd ZejKLdVddgdd ZejKLdddgdd ZejKLd\ddgddgddgdd>ggdd ZȐdd ZɐddÄ ZʐdĐdń ZejKLdddgdǐdȄ Z̐dɐdʄ Z͐dːd̄ ZejKLdd͐dgdϐdЄ ZG dѐd҄ de9ZАdӐdԄ ZѐdՐdք ZejKLdאdؐdge7Y fddge7Z fgdڐdۄ ZӐdܐd݄ ZejKLd)e)jMe)j dސd߄ ZejKLd)e)jסdd ZejKLd)e)j١dd ZejKLd)e)je)j dd Zېdd Zܐdd Zݐdd ZejKLd)e)je)j dd ZejKLd)e)je)j dd ZejKLd)e)je)j dd ZejKLd)e)je)j dd ZejKLd)e)je)j dd ZejKLd)e)je)j dd Zdd ZejKjLd)e)je)j edBejKLddegdd Zdd Zdd Zd d Zdd ZejKLd)e)jסdd Zdd Zdd	 Zd
d Zdd Zdd ZejKLdddgdd ZejKLd)e)jdd ZejKLd)e)jdd ZejKLde)jdd ZejKLdg ddd ZejKLd)e)jMdd ZejKLdddgdd  ZejKLdddgd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Z d+d, Zd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/`.
    )annotations)datedatetimetime	timedelta)Decimal)BytesIOStringION)lib)	timezones)PY311PY312is_ci_environmentis_platform_windowspa_version_under11p0pa_version_under13p0pa_version_under14p0)
ArrowDtypeCategoricalDtypeType)
no_default)is_bool_dtypeis_float_dtypeis_integer_dtypeis_numeric_dtypeis_signed_integer_dtypeis_string_dtypeis_unsigned_integer_dtype)basepyarrow)ArrowExtensionArray)ArrowPeriodTypec                 C  s,   t  r(t r(tjjtjdd}| | d S )Nz_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.raisesreason)r   r   pytestmarkxfailpaArrowInvalidapplymarker)requestr%    r+   Z/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/extension/test_arrow.py_require_timezone_databaseG   s    r-   )paramsidsc                 C  s   t | jdS )N)pyarrow_dtype)r   param)r*   r+   r+   r,   dtypeS   s    r2   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 }nt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 }nxtj|rLtdtdgd d g tdtdgd  d g tdtdg }n"tj	|rt
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 }ntj|r<t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 }n2tj|rtdtddgd d g tdtdgd  d g tdtdg }nt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j|r.dd gd d g dd!gd  d g d"d#g }n@tj|rjd$d%gd d g d&d'gd  d g d(d)g }nttj|| d*S )+NTF   ,         ?        g       g            ?g     X@   r   c      10.0z-2.0z-1.0z0.5z33.123            i
      ab2!>   a   b   1   2   !   >r2   )r0   r'   types
is_booleanis_floatingis_signed_integeris_unsigned_integer
is_decimalr   is_dater   is_timestampr   is_durationr   is_timer   	is_string	is_binaryNotImplementedErrorpdarray)r2   pa_dtypedatar+   r+   r,   rb   X   s    0000*..rb   c                 C  s   t | jd| d g| jdS )zLength-2 array with [NA, Valid]Nr   rQ   type_from_sequencer2   )rb   r+   r+   r,   data_missing   s    rf   )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.
    rb   rf   N)r1   )r*   rb   rf   r+   r+   r,   all_data   s    

rg   c              	   C  s  | j }tj|r"d}d}d}n~tj|r>d}d}d}nbtj|rZd}d}d}nFtj|rvd}d}d	}n*t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}ntj|rtd}td}tdd}ntj|r<tdd}tdd}tdd}ndtj|rXd}d}d}nHtj|rtd}d}d}n,tj|rtd}td}t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
    FTgr6   g?r:   r   r8   rD   r@   rA   rB   i  r?   rC   r3   rF   rG   crK   rL      cz-1.1r>   z1.1NrQ   )r0   r'   rR   rS   rT   rU   rV   rX   r   rY   r   rZ   r   r[   r   r\   r]   rW   r   r^   r_   r`   )r2   ra   ABCr+   r+   r,   data_for_grouping   s^    	


rm   c                 C  s&   t | j| d | d | d g| jdS )zn
    Length-3 array with a known sort order.

    This should be three items [B, C, A] with
    A < B < C
    r      r3   rQ   rc   rm   r+   r+   r,   data_for_sorting   s    rp   c                 C  s&   t | j| d | d | d g| jd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<   r3   rQ   rc   ro   r+   r+   r,   data_missing_for_sorting   s    rq   c                 C  sR   | j j}tj|s8tj|s8tj|s8tj|rNtj	dgd | j dS | S )z3Length-100 array in which all the elements are two.r<   d   rQ   )
r2   r0   r'   rR   
is_integerrT   rW   rZ   r_   r`   rb   ra   r+   r+   r,   data_for_twos   s    



ru   c                	      s  e Zd Zdd Zejdddgdd Z fdd	Zejd
dej	de
ddg fddZ fddZdd Zdd Zdd Zdd Zdddddd Zejd!d"d#g fd$d%Zddddd&d'Zdddd(d)d*Zejd!d"d#g fd+d,Zejd!d"d#g fd-d.Zddd/d0d1Zejd!d"d#g fd2d3Zejd4g d5d6d7 Z fd8d9Z fd:d;Z fd<d=Zd>d? Z fd@dAZ fdBdCZ ejj!dDd#dE fdFdGZ"dHdI Z#ejj!dJd#dE fdKdLZ$ejj!dJd#dE fdMdNZ%ejdOde&gejdPdQdRgdSdT Z' fdUdVZ(ejdWdXdYg fdZd[Z)d\d] Z*d^Z+e,Z-d_d` Z.ddadbdcZ/ddde Z0ddfdgdhdiZ1djdk Z2 fdldmZ3 fdndoZ4dpdq Z5 fdrdsZ6dtdu Z7ejdvg dwdxdy Z8  Z9S )zTestArrowArrayc                 C  s"   t |}| ||||d  d S )Nr   )r_   SeriesZ_compare_other)selfrb   comparison_opserr+   r+   r,   test_compare_scalar  s    
z"TestArrowArray.test_compare_scalar	na_actionNignorec                 C  s~   |j jdv r8|jdd |d}|jtd}t|| nB|jdd |d}|j dkrf|jdtjd	}n| }t|| d S )
NZmMc                 S  s   | S Nr+   xr+   r+   r,   <lambda>      z)TestArrowArray.test_map.<locals>.<lambda>r|   rQ   c                 S  s   | S r~   r+   r   r+   r+   r,   r     r   float32[pyarrow]float64r2   na_value)	r2   kindmapto_numpyobjecttmassert_numpy_array_equalnpnan)rx   rf   r|   resultexpectedr+   r+   r,   test_map  s    
zTestArrowArray.test_mapc                   sx   |j j}tj|r2|tjjd| dd n6tj	|rH|j
d u sTtj|rh|tjjdd t | d S )NzFor z .astype(str) decodes.r#   8pd.Timestamp/pd.Timedelta repr different from numpy repr)r2   r0   r'   rR   r]   r)   r$   r%   r&   rY   tzrZ   supertest_astype_strrx   rb   r*   ra   	__class__r+   r,   r   !  s&    


zTestArrowArray.test_astype_strnullable_string_dtypezstring[python]string[pyarrow]r   )Zmarksc                   sP   |j j}tj|r|jd u s*tj|r>|tj	j
dd t || d S )Nr   r   )r2   r0   r'   rR   rY   r   rZ   r)   r$   r%   r&   r   test_astype_string)rx   rb   r   r*   ra   r   r+   r,   r   3  s    

z!TestArrowArray.test_astype_stringc                   s`   |j j}tj|s tj|rPtj|r2d}n
d| }|tjj	|d t
 | d S )Nz1ArrowDtype(pa.string()) != StringDtype('pyarrow')$pyarrow.type_for_alias cannot infer r   )r2   r0   r'   rR   r\   rW   r)   r$   r%   r&   r   test_from_dtype)rx   rb   r*   ra   r#   r   r+   r,   r   F  s    
zTestArrowArray.test_from_dtypec                 C  sp   t |j|j|jd}t|| t|jtjs4J t |j|j	 |jd}t|| t|jtjslJ d S NrQ   )
rd   re   	_pa_arrayr2   r   assert_extension_array_equal
isinstancer'   ZChunkedArraycombine_chunksrx   rb   r   r+   r+   r,   test_from_sequence_pa_arrayU  s    z*TestArrowArray.test_from_sequence_pa_arrayc                 C  sF   t jtdd$ tjdgt d W d    n1 s80    Y  d S )NzConverting strings tomatchz12-1rQ   )r$   r"   r^   r   _from_sequence_of_stringsr'   Zmonth_day_nano_interval)rx   r*   r+   r+   r,   *test_from_sequence_pa_array_notimplementedb  s    
z9TestArrowArray.test_from_sequence_pa_array_notimplementedc                 C  s   |j j}tj|r8|dr8ts8|tj	j
dd nZtrttj|sTtj|rt|tj	j
tjd| d ntj|r|jd urt| |jt }t|j||j d}t|| | }t|j||j d}t|| d S )Nz
time64[ns]z&Nanosecond time parsing not supported.r   z pyarrow doesn't support parsing r!   rQ   )r2   r0   r'   rR   Z	is_time64equalsr   r)   r$   r%   r&   r   rZ   rW   ArrowNotImplementedErrorrY   r   r-   r   caststringrd   r   r   r   r   )rx   rb   r*   ra   pa_arrayr   r+   r+   r,   &test_from_sequence_of_strings_pa_arrayh  s4    

z5TestArrowArray.test_from_sequence_of_strings_pa_arrayc                 C  s   t |||d}|jj}tj|rL|jdkr4d}nd}||}||}|d}t |d||d}tj	||dd d S )Nskipna    int32[pyarrow]int64[pyarrow]Float64F)Zcheck_dtype)
getattrr2   r0   r'   rR   is_temporalZ	bit_widthastyper   assert_series_equal)rx   rz   op_namer   r   pa_typeZint_typer   r+   r+   r,   check_accumulate  s    



zTestArrowArray.check_accumulatez	pd.Seriesstrbool)rz   r   returnc                 C  s   |j j}tj|s,tj|s,tj|r:|dv rdS nJtj|rT|dv rdS n0tj|r|dkrxtj	|sxdS |dkrdS dS )N)cumsumcumprodcummaxcumminF)r   r   r   r   r   T)
r2   r0   r'   rR   r\   r]   rW   rS   r   rZ   )rx   rz   r   r   r+   r+   r,   _supports_accumulation  s$    


z%TestArrowArray._supports_accumulationr   TFc           
        s   |j j}|}t|}| ||s2t |||S tr|dkr|jj	}|j
rfd|j
v rft| d tjj| dd}	||	 n@|dkrtj|stj|r|tjj| d| td | ||| d S )Nr   znot slowz  not implemented for pyarrow < 9r   z not implemented for r#   r"   )r2   r0   r_   rw   r   r   test_accumulate_seriesr   configoptionZmarkexprr$   skipr%   r&   r)   r'   rR   rS   rW   r^   r   )
rx   rb   Zall_numeric_accumulationsr   r*   r   r   rz   optr%   r   r+   r,   r     s:    


z%TestArrowArray.test_accumulate_seriesc                 C  s   |j }|j}tj|r<|dv r<tj|r6|dv r6q`dS n$tj|sTtj|r`|dv r`dS tj|rtj|s|dv rdS dS )N)sumvarskewkurtprod)r   F)	r   meanmedianr   stdsemr   r   r   )anyallT)r2   r0   r'   rR   r   rZ   r\   r]   )rx   rz   r   r2   ra   r+   r+   r,   _supports_reduction  s*    



z"TestArrowArray._supports_reduction)rz   r   r   c                 C  s   |j j}tj|s tj|r,|d}n|}|dkrRt|| }t|| }n t|||d}t|||d}t	|| d S )Nr   countr   )
r2   r0   r'   rR   rs   rT   r   r   r   Zassert_almost_equal)rx   rz   r   r   ra   altr   r   r+   r+   r,   check_reduce  s    zTestArrowArray.check_reducec                   s   |j }|j}tjjt| dtj d| d}|dv rR|jsF|j	dkrR|
| ntj|rp|dv rp|
| t ||| d S )N is not implemented in pyarrow= for r!   >   r   r   rG   >   r   r   r   r   )r2   r0   r$   r%   r&   	TypeErrorr'   __version___is_numericr   r)   rR   rS   r   test_reduce_series_numeric)rx   rb   all_numeric_reductionsr   r*   r2   ra   
xfail_markr   r+   r,   r     s&    
z)TestArrowArray.test_reduce_series_numericc                   s\   |j j}tjjt| dtj d| d}tj	|sBtj
|rL|| t |||S )Nr   r   r!   )r2   r0   r$   r%   r&   r   r'   r   rR   r\   r]   r)   r   test_reduce_series_boolean)rx   rb   all_boolean_reductionsr   r   r*   ra   r   r   r+   r,   r   +  s    
z)TestArrowArray.test_reduce_series_boolean)r   r   c                 C  sX   |dv r|j }nD|j jdkr2|dvr,|j }qTd}n"|dv r@d}ndddd|j j }|S )	N)maxminzdecimal128(7, 3)[pyarrow])r   r   r   float64[pyarrow])r   r   r   r   r   r   uint64[pyarrow])iuf)r2   namer   )rx   arrr   r   Z	cmp_dtyper+   r+   r,   _get_expected_reduction_dtype>  s    z,TestArrowArray._get_expected_reduction_dtypec                   s<   |}|dkr,|j jr,tjjdd}|| t |||S )Nr   zskew not implementedr   )r2   r   r$   r%   r&   r)   r   test_reduce_frame)rx   rb   r   r   r*   r   r%   r   r+   r,   r   P  s    
z TestArrowArray.test_reduce_frametyp)int64Zuint64r   c                 C  s,   t jddg| dd }|dks(J d S )Nr8   r<   	[pyarrow]rQ         ?)r_   rw   r   )rx   r   r   r+   r+   r,   test_median_not_approximateY  s    z*TestArrowArray.test_median_not_approximatec                   s   |j }t|rtg d|g dd}tdg}td| }tjt	|d |
d  W d    n1 sv0    Y  |
djdd	j}t|| nt | d S )
N)r8   r8   r<   r<      r   r8   r3   )r8   r8   r8   r8   r8   r8   r8   r8   rj   rk   rl   rl   z%agg function failed [how->sum,dtype->r   rj   T)Znumeric_only)r2   r   r_   	DataFrameIndexreescaper$   r"   r   groupbyr   columnsr   assert_index_equalr   test_in_numeric_groupby)rx   rm   r2   dfr   msgr   r   r+   r,   r   _  s    ,z&TestArrowArray.test_in_numeric_groupbyc                   s   |j }tj|r.|tjjtd| d tj	|r|d}tj
t|d ||j W d    n1 sn0    Y  d S t | d S )Nr   r!   z6string\[pyarrow\] should be constructed by StringDtyper   )r0   r'   rR   rW   r)   r$   r%   r&   r^   r\   r"   r   construct_from_stringr   r   #test_construct_from_string_own_name)rx   r2   r*   ra   r   r   r+   r,   r  s  s    *z2TestArrowArray.test_construct_from_string_own_namec                   s`   |j }tj|r(t||jr\J n4tj|rP|t	j
jtd| d t | d S )Nr   r!   )r0   r'   rR   r\   rd   Zis_dtyper   rW   r)   r$   r%   r&   r^   r   test_is_dtype_from_namerx   r2   r*   ra   r   r+   r,   r    s    z&TestArrowArray.test_is_dtype_from_namec                 C  sD   d}t jt|d t|d W d    n1 s60    Y  d S )Nz*'another_type' must end with '\[pyarrow\]'r   Zanother_type)r$   r"   r   rd   r  )rx   r2   r   r+   r+   r,   .test_construct_from_string_another_type_raises  s    z=TestArrowArray.test_construct_from_string_another_type_raisesc                   sv   |j }tj|sLtj|sLtj|r4|jd usLtj|sLtj|rf|	t
jj| dd t | d S )NzB does not have associated numpy dtype findable by find_common_typer   )r0   r'   rR   rX   r[   rY   r   r]   rW   r)   r$   r%   r&   r   test_get_common_dtyper  r   r+   r,   r    s&    




z$TestArrowArray.test_get_common_dtypec                   s0   |j }tj|r t|s,J nt | d S r~   )r0   r'   rR   r\   r   r   test_is_not_string_type)rx   r2   ra   r   r+   r,   r    s    z&TestArrowArray.test_is_not_string_typez6GH 45419: pyarrow.ChunkedArray does not support views.)r#   runc                   s   t  | d S r~   )r   	test_viewrx   rb   r   r+   r,   r	    s    zTestArrowArray.test_viewc                 C  s`   ||    }|d }||}||us,J t|| |jdd}||usPJ t|| d S )Nr   Zbackfill)method)isnafillnar   r   )rx   rb   Zvalidr   r+   r+   r,   test_fillna_no_op_returns_copy  s    
z-TestArrowArray.test_fillna_no_op_returns_copyz5GH 45419: pyarrow.ChunkedArray does not support viewsc                   s   t  | d S r~   )r   test_transposer
  r   r+   r,   r    s    zTestArrowArray.test_transposec                   s   t  | d S r~   )r   test_setitem_preserves_viewsr
  r   r+   r,   r    s    z+TestArrowArray.test_setitem_preserves_viewsdtype_backendenginerh   pythonc           
      C  s   |j j}tj|r4|tjjt	d| dd nNtj
|rb|jdv rb|tjjtdd n tj|r|tjjdd tdtj|t|j d	i}|jd
tjd}tj|rt|}nt|}tj|dt|j i||d}|}	t||	 d S )NzParameterized types z not supported.r!   )usnsz1https://github.com/pandas-dev/pandas/issues/49767z)CSV parsers don't correctly handle binaryr   Z
with_dtyperQ   F)indexZna_rep)r2   r  r  )r2   r0   r'   rR   rW   r)   r$   r%   r&   r^   rY   unit
ValueErrorr]   r_   r   rw   r   Zto_csvr   r   r   r	   Zread_csvr   assert_frame_equal)
rx   r  rb   r  r*   ra   r   Z
csv_outputr   r   r+   r+   r,   test_EA_types  s@    

zTestArrowArray.test_EA_typesc                   s   |j j}tj|sJtj|sJtj|sJ|tj	j
tjd| d trtj|rtjtddd t | W d    q1 s0    Y  nt | d S )Nz$pyarrow.compute.invert does support r!   zBitwise inversionF)r   Zcheck_stacklevel)r2   r0   r'   rR   rS   rs   r\   r)   r$   r%   r&   r   r   r   assert_produces_warningDeprecationWarningr   test_invertr   r   r+   r,   r    s&    


,zTestArrowArray.test_invertperiodsr8   r9   c              	     sT   |j j}tj|rB|dkrB|tjjtj	d| d| dd t
 || d S )Nr8   z
diff with z and periods=z will overflowr!   )r2   r0   r'   rR   rV   r)   r$   r%   r&   r(   r   	test_diff)rx   rb   r  r*   ra   r   r+   r,   r    s    zTestArrowArray.test_diffc                 C  s.   |d d }|  }|jtt ks*J d S )NrD   )Zvalue_countsr2   r   r'   r   r   r+   r+   r,   'test_value_counts_returns_pyarrow_int64  s    z6TestArrowArray.test_value_counts_returns_pyarrow_int64zbool[pyarrow]c                 C  s8   | d}|dkrdd }|S |dkr.dd S t|S )N_rtruedivc                 S  s   t || S r~   )r   divider   yr+   r+   r,   r"  *  s    z1TestArrowArray.get_op_from_name.<locals>.rtruedivZ	rfloordivc                 S  s   t || S r~   )r   Zfloor_divider$  r+   r+   r,   r   /  r   z1TestArrowArray.get_op_from_name.<locals>.<lambda>)stripr   get_op_from_name)rx   r   Zshort_opnamer"  r+   r+   r,   r'  %  s    
zTestArrowArray.get_op_from_name)r   c                 C  s  |}|dv r| dS d}t|tjrRd}|jd d df }|jd d df j}n
|}|j}|j}	|st|tjrtj	
|	stj	|	r|dvstj	|	stj	|	stj	|	stj	|	s|S nR|dkrtj	|	stj	|	stj	|	stj	|	stj	|	s|S t|j}
tj	|
jrtj	|	r^tj	|	rXd}nd	}n&|	j}t|ttfv r|d
v rd}|
d| d}
ntj	|
jrRtj	|	rRt|||}t|}t|tsJ |dkrt|trtt }nF|dkr4t|tjr4|j|kr4tt }ntj	|jsHJ | |S |
|	}
t|j|
}|rtj||j|jd}n
t|}|S )N)eqneltlegtgeboolean[pyarrow]FTr   )__truediv____rtruediv____floordiv__mss)r3  r2  r  z	duration[]__pow__)r  r   ) r   r   r_   r   ilocr2   r0   rw   r'   rR   rT   rs   rZ   rY   rX   rW   r`   Z_valuesrd   Z	is_date64r  r   r   r   r   r   	get_dtyper   r   r   r  r   )rx   r   objotherZpointwise_resultr   Z	was_frameZexpected_dataZoriginal_dtypeZorig_pa_typeZpa_expectedr  r   Z	alt_dtypeZpd_expectedr+   r+   r,   _cast_pointwise_result3  s    





	





	





z%TestArrowArray._cast_pointwise_resultc                 C  s6   |dv s|dv r"t  r"tj|p4|dv o4tj|S )N__add____radd__r/  r0  r1  __rfloordiv____sub____rsub__)r   r'   rR   rZ   r   )rx   opnamera   r+   r+   r,   _is_temporal_supported  s    
	
z%TestArrowArray._is_temporal_supportedztype[Exception] | None)r   r   c                 C  s   |dv r| j S t|}|j}| ||}|dv r8t}n`|rBd }nV|dv rhtj|sbtj	|rhd }n0tj
|stj|stj|stj}nd }|S )N)
__divmod____rdivmod__>   __mod____rmod__r;  )
divmod_excr   r7  r0   rD  r^   r'   rR   r\   r]   rT   rs   rW   r   )rx   r   r8  r9  r2   ra   arrow_temporal_supportedexcr+   r+   r,   _get_expected_exception  s0    





z&TestArrowArray._get_expected_exceptionc                 C  s   d }|  ||}|dkrRtj|s<tj|s<tj|rRtjjd| d}n|rtj	|sv|dv rtj
|rtjjt| d| dd}nZ|dkrtj|stj|rtjjtjd	d}n&|d
krtj|rtjjtjd	d}|S )N__rpow__z<GH#29997: 1**pandas.NA == 1 while 1**pyarrow.NA == NULL for r   r>  z  not supported betweenpd.NA and z Python scalarr!   r?  zdivide by 0r0  )rD  r'   rR   rT   rs   rW   r$   r%   r&   r[   rZ   r   r(   )rx   rC  ra   r%   rJ  r+   r+   r,   _get_arith_xfail_marker  sX    






z&TestArrowArray._get_arith_xfail_markerc                   s   |j j}|dkr(tj|r(td n6|dv r^tj|sHtj|r^|tj	j
tdd | ||}|d ur||| t || d S NrH  z%Skip testing Python string formatting__rmul____mul__'Can only string multiply by an integer.r!   )r2   r0   r'   rR   r]   r$   r   r\   r)   r%   r&   r   rN  r   test_arith_series_with_scalarrx   rb   all_arithmetic_operatorsr*   ra   r%   r   r+   r,   rT    s"    


z,TestArrowArray.test_arith_series_with_scalarc                   s   |j j}|dkr4tj|s(tj|r4td n6|dv rjtj|sTtj|rj|tj	j
tdd | ||}|d ur|| t || d S rO  )r2   r0   r'   rR   r\   r]   r$   r   r)   r%   r&   r   rN  r   test_arith_frame_with_scalarrU  r   r+   r,   rW    s*    




z+TestArrowArray.test_arith_frame_with_scalarc           	      C  s   |j j}|dv r<tj|r<|tjjtj	d| d n6|dv rrtj
|s\tj|rr|tjjtdd | ||}|d ur|| |}t|}ttj|jd gt| |j d}| ||| d S )Nr@  zJImplemented pyarrow.compute.subtract_checked which raises on overflow for r!   rP  rS  r   rQ   )r2   r0   r'   rR   rV   r)   r$   r%   r&   r(   r]   r\   r   rN  r_   rw   r`   r6  lenZcheck_opname)	rx   rb   rV  r*   ra   r%   r   rz   r9  r+   r+   r,   test_arith_series_with_array$  s:    
	



&z+TestArrowArray.test_arith_series_with_arrayc                   s@   |j j}|dr0|tjjtjd| d t	 
| d S )Nint8zraises on overflow for r!   )r2   r0   r   r)   r$   r%   r&   r'   r(   r   $test_add_series_with_extension_arrayr   r   r+   r,   r[  I  s    
z3TestArrowArray.test_add_series_with_extension_arrayc                 C  s>   t jtdd ||t  W d    n1 s00    Y  d S )Nz'.* not implemented for <class 'object'>r   )r$   r"   r^   r   )rx   rb   ry   r+   r+   r,   test_invalid_other_compU  s    z&TestArrowArray.test_invalid_other_compmasked_dtype)booleanZInt64r   c           	      C  s   g d}t j||d}t j||  dd}|||}|tjtjtjfv rVg d}ng d}t j|tt	 d}t
|| d S )N)r8   r   NrQ   r   )FFN)TTN)r_   rw   loweroperatorr*  r,  r)  r   r'   bool_r   r   )	rx   r]  ry   rb   
ser_maskedser_par   expr   r+   r+   r,   test_comp_masked_numpy\  s    

z%TestArrowArray.test_comp_masked_numpy):__name__
__module____qualname__r{   r$   r%   parametrizer   r   r1   tdZ
skip_if_nor   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r&   r	  r  r  r  r   r  r  r  r   Z_combine_le_expected_dtyper^   rI  r'  r:  rD  rL  rN  rT  rW  rY  r[  r\  re  __classcell__r+   r+   r   r,   rv     s   
$,
#f$.%rv   c                   @  sf  e Zd ZdZdd Zejddg dfej	g dfdg dfe
dg dfd	g d
fe
d	g d
fgdd Zdd Zejddg dfej	g dfdg d
fd	g dfe
dg d
fe
d	g dfgdd Zdd Zejddg dfej	g dfdg dfe
dg dfe
d	g d
fgdd Zejdddgddgdd	ggdd ZdS )TestLogicalOpsz1Various Series and DataFrame logical ops methods.c                 C  s   t jdgd dgd  d gd  dd}t jg dd dd}||B }t jg ddd}t|| ||B }t|| t|t jdgd dgd  d gd  dd t|t jg dd dd d S )NTr   Fr.  rQ   TFN)	TTTTFNTNNr_   rw   r   r   rx   rF   rG   r   r   r+   r+   r,   test_kleene_orn  s"    (&zTestLogicalOps.test_kleene_orzother, expectedN)TNNT)TTTFrm  c                 C  sf   t jg ddd}||B }t j|dd}t|| ||B }t|| t|t jg ddd d S Nrm  r.  rQ   rn  rx   r9  r   rF   r   r+   r+   r,   test_kleene_or_scalar  s    z$TestLogicalOps.test_kleene_or_scalarc                 C  s   t jdgd dgd  d gd  dd}t jg dd dd}||@ }t jg ddd}t|| ||@ }t|| t|t jdgd dgd  d gd  dd t|t jg dd dd d S )NTr   Fr.  rQ   rm  )	TFNFFFNFNrn  ro  r+   r+   r,   test_kleene_and  s"    (&zTestLogicalOps.test_kleene_and)NFNFFFc                 C  sf   t jg ddd}||@ }t j|dd}t|| ||@ }t|| t|t jg ddd d S rq  rn  rr  r+   r+   r,   test_kleene_and_scalar  s    z%TestLogicalOps.test_kleene_and_scalarc                 C  s   t jdgd dgd  d gd  dd}t jg dd dd}||A }t jg ddd}t|| ||A }t|| t|t jdgd dgd  d gd  dd t|t jg dd dd d S )NTr   Fr.  rQ   rm  )	FTNTFNNNNrn  ro  r+   r+   r,   test_kleene_xor  s"    (&zTestLogicalOps.test_kleene_xorNNN)FTNc                 C  sf   t jg ddd}||A }t j|dd}t|| ||A }t|| t|t jg ddd d S rq  rn  rr  r+   r+   r,   test_kleene_xor_scalar  s    z%TestLogicalOps.test_kleene_xor_scalarzop, exp__and____or____xor__c                 C  s^   g d}t j|dd}t j|dd}t|||}t j|dd gtt d}t|| d S )Nrm  r^  rQ   r.  F)r_   rw   r   r   r'   ra  r   r   )rx   oprd  rb   rb  rc  r   r   r+   r+   r,   test_logical_masked_numpy  s    
z(TestLogicalOps.test_logical_masked_numpy)rf  rg  rh  __doc__rp  r$   r%   ri  r_   NAr   ra  rs  rt  rv  rw  ry  r~  r+   r+   r+   r,   rl  k  sX   











rl  r   c                 C  s   t | }tjg d|d}tjg d|d}||B }tjg d|d}t|| ||@ }tjg d|d}t|| ||A }tjg d|d}t|| | }|d  }tj||d| }t|| d S )N)r8   Nr   r3   rQ   )Nr   rE   r3   )NNrn   r3   )NNr8   r3   )NN   r   r   )	r   r_   rw   r   r   r  r   maskZisnull)r   r2   leftrightr   r   r+   r+   r,   test_bitwise  s     r  c                   C  st   t jtdd td W d    n1 s.0    Y  t jtdd td W d    n1 sf0    Y  d S )NzPassing pyarrow typer   z#not_a_real_dype[s, tz=UTC][pyarrow]zdecimal(7, 2)[pyarrow])r$   r"   r^   r   r  r+   r+   r+   r,   Ftest_arrowdtype_construct_from_string_type_with_unsupported_parameters%  s    (r  c                  C  s*   t d} t tdd}| |ks&J d S )Nztimestamp[s, tz=UTC][pyarrow]r3  UTC)r   r  r'   	timestamp)r2   r   r+   r+   r,   5test_arrowdtype_construct_from_string_supports_dt64tz-  s    
r  c                  C  sL   d} d}t jt|d" tjtd| d W d    n1 s>0    Y  d S )Nzint64[pyarrow]foobar[pyarrow]zYPassing pyarrow type specific parameters \(\[pyarrow\]\) in the string is not supported\.r   r   rQ   )r$   r"   r^   r_   rw   range)invalidr   r+   r+   r,   ;test_arrowdtype_construct_from_string_type_only_one_pyarrow4  s
    r  c                  C  sr   t jddgtt d} t jddgdd}| | }t jddgtt d}t|| ||  }t|| d S )	NabcdefgrQ   r<   r9   r   abcabc r_   rw   r   r'   r   r   r   )binaryrepeatr   r   reflected_resultr+   r+   r,    test_arrow_string_multiplication?  s    r  c                  C  s`   t jddgtt d} | d }t jddgtt d}t|| d|  }t|| d S )Nr  r  rQ   r<   r  Zdefgdefgr  )r  r   r   r  r+   r+   r,   .test_arrow_string_multiplication_scalar_repeatJ  s    r  interpolation)Zlinearr_  higherZnearestZmidpointquantiler7   c                 C  sN  | j j}| g d} t| }tj|sDtj|sDtj	|rd}t
jtj|d |j||d W d    n1 s|0    Y  d S tj|stj|stj|rn0tj| jjrn|t
jjtjd| d | g d} t| }|j||d}tj|r|dvr|jr>d|j d	|j d
}nd|j d
}||}	|	j||d}
|dkr|jdkr|
jdd}
||
ksJ n,|jdkr|
jd}
t||
| j  d S |dkr|| d ksJJ nftj| ddgddgd}
tj|s*tj|s*tj|r>|
d}
|d}t||
 d S )Nr   r   r   z=Function 'quantile' has no kernel matching input types \(.*\)r   )qr  z&quantile not supported by pyarrow for r!   )r_  r  zM8[z, r4  r7   r  F)warnr   r  r   ) r2   r0   taker_   rw   r'   rR   r\   r]   rS   r$   r"   r   r  rs   rT   rW   r   r   rd   r)   r%   r&   rY   r   r  r   to_pydatetimedtfloorr   r   )rb   r  r  r*   ra   rz   r   r   Zpd_dtypeZser_npr   r+   r+   r,   test_quantileS  sr    



,











r  ztake_idx, exp_idx)r   r   r<   r<   r3   r3   r3   )r   r   r   r<   r3   r3   Z
multi_modeZsingle_mode)r/   c                 C  s@   |  |}t|}|jdd}t|  |}t|| d S )NTZdropna)r  r_   rw   moder   r   )rm   Ztake_idxZexp_idxrb   rz   r   r   r+   r+   r,   test_mode_dropna_true  s
    

r  c                 C  sx   t jd d | d g| jd}|jdd}t jd g| jd}t|| t j| d d g| jd}|jdd}t|| d S )Nr   rQ   Fr  )r_   rw   r2   r  r   r   )rb   Z	more_nansr   r   r+   r+   r,   test_mode_dropna_false_mode_na  s    r  zarrow_dtype, expected_type   f1f2c                 C  s   t | j|ksJ d S r~   )r   rd   )arrow_dtypeexpected_typer+   r+   r,   test_arrow_dtype_type  s    r  c                  C  sh   t tg d} t| sJ tjj| s0J tt	t
| }||  }|t|  }t|| d S )NTFT)r   r'   r`   r   r_   corecommonZis_bool_indexerrw   r  rX  r   Zasarrayr   r   )rb   r3  r   r   r+   r+   r,   test_is_bool_dtype  s    r  c                 C  sJ   | j j}tj|s,tj|s,tj|r:t| sFJ nt| rFJ d S r~   )r2   r0   r'   rR   rT   rs   rW   r   rb   r   r+   r+   r,   test_is_numeric_dtype  s    


r  c                 C  s2   | j j}tj|r"t| s.J nt| r.J d S r~   )r2   r0   r'   rR   rs   r   r  r+   r+   r,   test_is_integer_dtype  s    r  c                 C  s2   | j j}tj|r"t| s.J nt| r.J d S r~   )r2   r0   r'   rR   rU   r   r  r+   r+   r,   test_is_signed_integer_dtype  s    r  c                 C  s2   | j j}tj|r"t| s.J nt| r.J d S r~   )r2   r0   r'   rR   rV   r   r  r+   r+   r,   test_is_unsigned_integer_dtype  s    r  c                 C  s2   | j j}tj|r"t| s.J nt| r.J d S r~   )r2   r0   r'   rR   rT   r   r  r+   r+   r,   test_is_float_dtype  s    r  c                 C  sl   t | }|d}t|}t|}t|t|ks<J t|}t|| t|}t|| d S )Nr<   )	r_   rw   headpickledumpsrX  loadsr   r   )rb   r   Zexpected_slicedZfull_pickledZsliced_pickledr   Zresult_slicedr+   r+   r,   test_pickle_roundtrip  s    





r  c                 C  sH   | j  j}|| j}t|jtr(J t|jts8J t||  d S r~   )	r   	to_pandasr`   r   r2   r   r   r   r   )rb   Zpd_arrayr   r+   r+   r,   test_astype_from_non_pyarrow  s
    r  c                  C  s6   t dg} | d}t jdgdd}t|| d S )N1.0r   r5   rQ   r_   rw   r   r   r   rz   r   r   r+   r+   r,   &test_astype_float_from_non_pyarrow_str  s    
r  c                  C  s2   t jddgidd} | jddd}t||  d S )Ncoli@fr   rQ   float[pyarrow]r}   )errors)r_   r   r   r   r  )r   r   r+   r+   r,   test_astype_errors_ignore'  s    r  c                 C  s   |   }| jj}tj|s(tj|r4td n(tj	|rPt
t| }nt
| j}| jrt| js|t}tj|t| < t|| d S )Nz Tested in test_to_numpy_temporal)r   r   rd   r'   rR   rZ   rY   r$   r   rX   r   r`   list_hasnar   r2   r   r   r_   r  r  r   r   )rb   r   r   r   r+   r+   r,   test_to_numpy_with_defaults.  s    
r  c                  C  sP   dd g} t j| dd}| }tdtjg}t|d ts@J t|| d S )Nr8   r   rQ   r   )	r_   r`   r   r   r   r   floatr   r   )rb   r   r   r   r+   r+   r,   test_to_numpy_int_with_naA  s    r  zna_val, exp)r8   r8   c                 C  sH   t jt jt jgdd}|jd| d}tj|gd dd}t|| d S )Nnull[pyarrow]rQ   r   r   r<   r_   r`   r  r   r   r   r   )Zna_valrd  r   r   r   r+   r+   r,   test_to_numpy_null_arrayK  s    r  c                  C  sH   t jt jt jgdd} | jd d}tjt jgd dd}t|| d S )Nr  rQ   r<   r   r  r   r   r   r+   r+   r,   !test_to_numpy_null_array_no_dtypeT  s    r  c                  C  s   t jdt jgdd} | jdd}tjddgtjd}t|| t jdt jgdd} | jdd}tjddgtjd}t|| d S )	NTr.  rQ   F)r   r5   r   r6   )	r_   r`   r  r   r   ra  r   r   Zfloat32r  r+   r+   r,   test_to_numpy_without_dtype\  s    r  c                 C  s   |   }|  }| d |d d < tj| d gt|  | jd}t|| |  }| d d d |d d < | d d d }t|| |  }|  |d d < | }t|| d S )Nr   rQ   r:   )copyr   re   rX  r2   r   r   tolist)rb   origr   r   r+   r+   r,   test_setitem_null_slicei  s     r  c                 C  s   | j j}tj|s tj|r.d}t}d}n@tj|sRtj|sRtj	|rbd}tj
}d}nd}t}d}tj||d || d d < W d    n1 s0    Y  d S )N{   zInvalid value '123' for dtypefoozCould not convertzInvalid value 'foo' for dtyper   )r   rd   r'   rR   r\   r]   r   rs   rT   rS   r(   r$   r"   )rb   r   
fill_valueerrr   r+   r+   r,   test_setitem_invalid_dtype  s&    


r  c                  C  sv   t jtdtdgt  d} | jt  tt  ijd}tj	tdtdgtt  d}t
|| d S )Nz
2019-12-31rd   Ztypes_mapperrQ   )r'   r`   r_   	Timestampdate32r  r   Zdate64getrw   r   r   )Z
date_arrayr   r   r+   r+   r,   &test_from_arrow_respecting_given_dtype  s    
r  c                  C  sh   t jddgt  d} tjt jdd. | jt  tt  ij	d W d    n1 sZ0    Y  d S )Nr         @r  zFloat value 1.5 was truncatedr   r  )
r'   r`   r   r$   r"   r(   r  r   r   r  )r`   r+   r+   r,   -test_from_arrow_respecting_given_dtype_unsafe  s    r  c                  C  s   d} t jdddt jg| d}|d}t jdddt jg| d}t|| t jd	t jd
g| d}|d}t jdt jdg| d}t|| d S )Nr   r6   gGz?g{Gz@rQ   r8   g333333?g@g^@gp=
cL@r:   g      ^@g      N@)r_   rw   r  roundr   r   r2   rz   r   r   r+   r+   r,   
test_round  s    

r  c                 C  sp   | \}}}|  g d}tj|d< |r0t|}d}tjt|d || W d    n1 sb0    Y  d S )N)r<   r   r8   r:   zOsearchsorted requires array to be sorted, which is impossible with NAs present.r   )r  r_   r  rw   r$   r"   r  Zsearchsorted)rp   Z	as_seriesrG   rh   rF   r   r   r+   r+   r,    test_searchsorted_with_na_raises  s    


r  c               
   C  s^   t t jddgttt t dddgd} |  }| j	ddgd	}t
|| d S )
Nr   r%  rQ   r8   r<   rF   rG   rF   rG   )Zby)r_   r   rw   r   r'   
dictionaryint32r   r  Zsort_valuesr   r  )r   r   r   r+   r+   r,   test_sort_values_dictionary  s    r  patr  z	a[a-z]{2}c                 C  sP   t jdd gtt d}|j| }t jdd gtt d}t	|| d S )Nr  rQ   r8   )
r_   rw   r   r'   r   r   r   r  r   r   )r  rz   r   r   r+   r+   r,   test_str_count  s    r  c                  C  s\   t jdd gtt d} tjtdd  | jj	ddd W d    n1 sN0    Y  d S )Nr  rQ   z	count notr   r8   flags)
r_   rw   r   r'   r   r$   r"   r^   r   r   rz   r+   r+   r,    test_str_count_flags_unsupported  s    r  zside, str_funcr  rjustr  ljustZbothcenterc                 C  sb   t jdd gtt d}|jjd| dd}t jtd|ddd gtt d}t	|| d S )NrF   rQ   r   r   )widthsideZfillchar)
r_   rw   r   r'   r   r   padr   r   r   )r  Zstr_funcrz   r   r   r+   r+   r,   test_str_pad  s    r  c                  C  s\   t jdd gtt d} tjtdd  | j	ddd W d    n1 sN0    Y  d S )NrF   rQ   zInvalid side: foor   r   r  r   )
r_   rw   r   r'   r   r$   r"   r  r   r  r  r+   r+   r,   test_str_pad_invalid_side  s    r  zpat, case, na, regex, expabFTZAbz	a[a-z]{1}z	A[a-z]{1}c                 C  sT   t jdd gtt d}|jj| |||d}t j|tt d}t	|| d S )Nr  rQ   )casenaregex)
r_   rw   r   r'   r   r   containsra  r   r   )r  r  r  r  rd  rz   r   r   r+   r+   r,   test_str_contains  s    r  c                  C  s\   t jdd gtt d} tjtdd  | jj	ddd W d    n1 sN0    Y  d S )Nr  rQ   zcontains notr   rF   r8   r  )
r_   rw   r   r'   r   r$   r"   r^   r   r  r  r+   r+   r,   #test_str_contains_flags_unsupported	  s    r  zside, pat, na, exp
startswith)TNFrG   ru  endswith)FTFbc)rF   eg)TNT)rF   rh   r  r+   )FNFc                 C  sT   t jg dtt d}t|j| ||d}t j|tt d}t	|| d S )N)r  NefgrQ   )r  
r_   rw   r   r'   r   r   r   ra  r   r   )r  r  r  rd  rz   r   r   r+   r+   r,   test_str_start_ends_with  s    r  r  )r  r   c                 C  sT   t jd d gtt d}t|j| d}t jd d gtt d}t	|| d S )NrQ   r+   r  )r  rz   r   r   r+   r+   r,   /test_str_starts_ends_with_all_nulls_empty_tuple#  s    r  zarg_name, argreplr  r  r8   c                 C  sr   t jdd gtt d}dddd}||| < tjtdd" |jj	f i | W d    n1 sd0    Y  d S )	Nr  rQ   rG   r   T)r  r  r  zreplace is not supportedr   )
r_   rw   r   r'   r   r$   r"   r^   r   replace)Zarg_nameargrz   kwargsr+   r+   r,   test_str_replace_unsupported-  s
    r  zpat, repl, n, regex, exprF   r   r:   ZxbxcZxbacz[a-b]Zxxxcc                 C  sT   t jdd gtt d}|jj| |||d}t j|tt d}t|| d S )NZabacrQ   )nr  	r_   rw   r   r'   r   r   r	  r   r   )r  r  r  r  rd  rz   r   r   r+   r+   r,   test_str_replace9  s    	r  c                  C  sV   t jddgtt d} | jdddd}t jddgtt d}t|| d S )	Nr  ZaaaaaarQ   rF   r  Tr  r  )rz   actualr   r+   r+   r,   test_str_replace_negative_nH  s    r  c                  C  s\   t jdd gtt d} tjtdd  | j	ddg W d    n1 sN0    Y  d S )Nr  rQ   zrepeat is notr   r8   r<   )
r_   rw   r   r'   r   r$   r"   r^   r   r  r  r+   r+   r,   test_str_repeat_unsupportedP  s    r  c                  C  sP   t jdd gtt d} | jd}t jdd gtt d}t|| d S )Nr  rQ   r<   r  )	r_   rw   r   r'   r   r   r  r   r   r  r+   r+   r,   test_str_repeatV  s    r  zpat, case, na, expc                 C  sR   t jdd gtt d}|jj| ||d}t j|tt d}t	|| d S )Nr  rQ   r  r  
r_   rw   r   r'   r   r   r   ra  r   r   r  r  r  rd  rz   r   r   r+   r+   r,   test_str_match]  s    r  )TTFNZAbc)FFFNabc$TFFNzabc\$FTFNzAbc$zAbc\$c                 C  sR   t jg dtt d}|jj| ||d}t j|tt d}t	|| d S )N)r  r  z$abcNrQ   r  r  r  r+   r+   r,   test_str_fullmatcho  s    r  zsub, start, end, exp, exp_typr   c                 C  sN   t jdd gtt d}|jj| ||d}t j|t|d}t|| d S )Nr  rQ   )startend)	r_   rw   r   r'   r   r   findr   r   )subr  r  rd  Zexp_typrz   r   r   r+   r+   r,   test_str_find  s    r!  c                  C  sV   t jdd gtt d} | jjdddd}t jdd gtt d}t	|| d S )Nr  rQ   rG   ir   )r   r  r  r8   )
r_   rw   r   r'   r   r   r  r   r   r   r  r+   r+   r,   test_str_find_negative_start  s    r"  c                  C  s\   t jdd gtt d} tjtdd  | jj	ddd W d    n1 sN0    Y  d S )Nr  rQ   zfind not implementedr   r  r8   )r  )
r_   rw   r   r'   r   r$   r"   r^   r   r  r  r+   r+   r,   test_str_find_notimplemented  s    r#  zi, exp)rG   r  N)rh   r  Nr<   )rh   NNr  )rF   NNrx  c                 C  sL   t jg dtt d}|j| }t j|tt d}t|| d S )N)r  deNrQ   )	r_   rw   r   r'   r   r   r  r   r   )r   rd  rz   r   r   r+   r+   r,   test_str_get  s    r%  z=TODO: StringMethods._validate should support Arrow list typesr   c                  C  sX   t tttdtdd g} | jd}t jg dtt	 d}t
|| d S )Nr  123=za=b=cz1=2=3NrQ   )r_   rw   r   r'   r`   r  r   joinr   r   r   r   r  r+   r+   r,   test_str_join  s    "r*  c                  C  sN   t ttg d} | jd}t jg dtt d}t	
|| d S )N)r  r&  Nr'  r(  rQ   )r_   rw   r   r'   r`   r   r)  r   r   r   r   r  r+   r+   r,   test_str_join_string_type  s    r+  zstart, stop, step, expc                 C  sP   t jdd gtt d}|j| ||}t j|tt d}t|| d S NabcdrQ   )	r_   rw   r   r'   r   r   slicer   r   )r  stopsteprd  rz   r   r   r+   r+   r,   test_str_slice  s    	r1  zstart, stop, repl, expZaxcdZxcdcdc                 C  sP   t jdd gtt d}|j| ||}t j|tt d}t|| d S r,  )	r_   rw   r   r'   r   r   Zslice_replacer   r   )r  r/  r  rd  rz   r   r   r+   r+   r,   test_str_slice_replace  s    	r3  zvalue, method, exp)Za1cisalnumT)z!|,r4  F)aaaisalphaT)z!!!r6  F)u   ٠	isdecimalT)z~!r7  F)rH   isdigitT)~r8  F)r5  islowerT)ZaaAr:  F)r&  	isnumericT)Z11Ir;  F) isspaceT)r  r=  F)zThe ThatistitleT)zthe Thatr>  F)ZAAAisupperT)ZAAcr?  Fc                 C  sR   t j| d gtt d}t|j| }t j|d gtt d}t	|| d S r   r  )valuer  rd  rz   r   r   r+   r+   r,   test_str_is_functions  s    rA  zmethod, exp
capitalizezAbc deftitlezAbc DefswapcasezAbC Defr_  zabc defupperzABC DEFcasefoldc                 C  sR   t jdd gtt d}t|j|  }t j|d gtt d}t|| d S )NzaBc dEFrQ   	r_   rw   r   r'   r   r   r   r   r   )r  rd  rz   r   r   r+   r+   r,   test_str_transform_functions  s    rH  c                  C  sN   t jdd gtt d} | j }t jdd gtt d}t	|| d S )Nr-  rQ   r3   )
r_   rw   r   r'   r   r   rX  r  r   r   r  r+   r+   r,   test_str_len  s    
rI  zmethod, to_strip, val)r&  Nz abc )r&  r   Zxabcx)lstripNz abc)rJ  r   Zxabc)rstripNzabc )rK  r   Zabcxc                 C  sV   t j|d gtt d}t|j| |d}t jdd gtt d}t|| d S )NrQ   )to_stripr  rG  )r  rL  valrz   r   r   r+   r+   r,   test_str_strip  s    rN  rM  Zabc123c                 C  sP   t j| d gtt d}|jd}t jdd gtt d}t|| d S NrQ   r&  r  )	r_   rw   r   r'   r   r   removesuffixr   r   rM  rz   r   r   r+   r+   r,   test_str_removesuffix)  s    rR  Z123abcc                 C  sP   t j| d gtt d}|jd}t jdd gtt d}t|| d S rO  )	r_   rw   r   r'   r   r   removeprefixr   r   rQ  r+   r+   r,   test_str_removeprefix1  s    rT  r  r}   strictzencoding, exputf8s   abcutf32s     a   b   c   c                 C  sR   t jdd gtt d}|j|| }t j|d gtt d}t	|| d S Nr  rQ   )
r_   rw   r   r'   r   r   encoder  r   r   )r  encodingrd  rz   r   r   r+   r+   r,   test_str_encode9  s    	r[  c                 C  s^   t jg dtt d}|jjd| d}t jdgg d gttt d}t	|| d S )N)r  r  NrQ   rG   r  )
r_   rw   r   r'   r   r   findalllist_r   r   )r  rz   r   r   r+   r+   r,   test_str_findallH  s    $r^  r  r  rindexz
start, endc                 C  s   t jdd gtt d}t|j| d||}t jdd gtt d}t	|| t
jtdd$ t|j| d|| W d    n1 s0    Y  d S )NabcbarQ   rh   r<   zsubstring not foundr   r  )r_   rw   r   r'   r   r   r   r   r   r   r$   r"   r  )r  r  r  rz   r   r   r+   r+   r,   test_str_r_indexP  s    	ra  formNFCNFKCc                 C  s>   t jdd gtt d}|j| }| }t	|| d S rX  )
r_   rw   r   r'   r   r   	normalizer  r   r   )rb  rz   r   r   r+   r+   r,   test_str_normalizeb  s    rf  c                 C  sT   t jg dtt d}|jd| |}t jg dtt d}t	|| d S )N)r`  r  NrQ   rh   )r<   r:   N)
r_   rw   r   r'   r   r   rfindr   r   r   )r  r  rz   r   r   r+   r+   r,   test_str_rfindj  s    rh  c                  C  sT   t jdd gtt d} | jddi}t jdd gtt d}t|| d S )Nr`  rQ   a   rG   Zbbcbb)	r_   rw   r   r'   r   r   	translater   r   r  r+   r+   r,   test_str_translatex  s    rk  c                  C  sP   t jdd gtt d} | jd}t jdd gtt d}t|| d S )Nr`  rQ   r   zabc
ba)	r_   rw   r   r'   r   r   wrapr   r   r  r+   r+   r,   test_str_wrap  s    rm  c                  C  sb   t jg dtt d} | j }t jg dg dg dgtt g dd}t	
|| d S )N)za|bNza|crQ   )TTFru  r  )rF   rG   rh   )r2   r   )r_   rw   r   r'   r   r   Zget_dummiesr   ra  r   r  r  r+   r+   r,   test_get_dummies  s    

rn  c                  C  s  t jdd gtt d} | jd}t jg dg dgtt d}t	|| | jjddd}t t
tg dd g}t|| | jd}t jg dg dgtt d}t	|| | jjddd}t t
tg dd g}t|| d S )	Nr`  rQ   rG   )rF   rG   Zcbarx  Fexpand)r  rG   rF   )r_   rw   r   r'   r   r   	partitionr   r   r  r   r`   r   
rpartitionr  r+   r+   r,   test_str_partition  s"    rs  rsplitsplitc                 C  sT   t jdd gtt d}t|j|  }t ttg dd g}t	
|| d S )Nza1 cbc
brQ   )a1ZcbcrG   )r_   rw   r   r'   r   r   r   r   r`   r   r   r  rz   r   r   r+   r+   r,   test_str_split_pat_none  s    rx  c                  C  sf  t jg dtt d} | jd}t ttg dg dd g}t	
|| | jjddd}t ttdd	gd
d	gd g}t	
|| | jjddd}t ttddgddgd g}t	
|| | jjdddd}t ttg dttg dd}t	|| | jjddd}t ttg dttg dd}t	|| d S )NZa1cbcba2cbcbNrQ   rh   rv  rG   rG   a2rG   rG   r8   r  rv  Zbcbr}  z[1-2]T)r  rF   cbcb)r  rp  )rF   rF   N)r  r  Nr   r8   r=   ro  rF   rz  Nr  NN)r_   rw   r   r'   r   r   ru  r   r`   r   r   r   r  r  r+   r+   r,   test_str_split  s<    r  c                  C  s(  t jg dtt d} | jd}t ttg dg dd g}t	
|| | jjddd}t ttdd	gd
d	gd g}t	
|| | jjdddd}t ttg dttg dd}t	|| | jjddd}t ttg dttg dd}t	|| d S )Nry  rQ   rh   r{  r|  r8   r~  a1cbrG   a2cbT)r  rp  )r  r  N)rG   rG   Nr  r=   ro  r  r  )r_   rw   r   r'   r   r   rt  r   r`   r   r   r   r  r  r+   r+   r,   test_str_rsplit  s2    r  c                  C  sX   t jg dtt d} tjtdd | j	d W d    n1 sJ0    Y  d S )Nrv  b2c3rQ   z*pat=.* must contain a symbolic group name.r   z[ab](\d))
r_   rw   r   r'   r   r$   r"   r  r   extractr  r+   r+   r,   test_str_extract_non_symbolic  s    r  rp  c                 C  sf   t jg dtt d}|jjd| d}t tt	g dtt	g dd}t
|| d S )Nr  rQ   z(?P<letter>[ab])(?P<digit>\d)ro  )rF   rG   Nr=   rH   N)letterdigit)r_   rw   r   r'   r   r   r  r   r   r`   r   r  )rp  rz   r   r   r+   r+   r,   test_str_extract	  s    r  c                  C  s   t jg dtt d} | jjddd}t dtt	g di}t
|| | jjddd}t jtt	g ddd	}t
|| d S )
Nr  rQ   z[ab](?P<digit>\d)Tro  r  r  Fr   )r_   rw   r   r'   r   r   r  r   r   r`   r   r  r   r  r+   r+   r,   test_str_extract_expand	  s    r  r  )r  r  r2  r3  c                 C  sF   ddg}t | }tj||d}tt jdd g|d}t|| d S )NZ1000NaTrQ     r  )r'   durationr   r   r`   r   r   )r  stringsr   r   r   r+   r+   r,   #test_duration_from_strings_with_nat	  s
    
r  c                 C  sR   | j j}tj|sNtjtdd t	| j
 W d    n1 sD0    Y  d S )Nz2Can only use .dt accessor with datetimelike valuesr   )r2   r0   r'   rR   r   r$   r"   AttributeErrorr_   rw   r  rt   r+   r+   r,   test_unsupported_dt'	  s    r  zprop, expectedyear  dayZday_of_weekZ	dayofweekweekdayZday_of_yearZ	dayofyearhourminuteZis_leap_yearmicrosecondrE   month
nanosecondr  Zquartersecondrn   r   r   c                 C  s   t jt jddddddddd	d gttd
d}t|j| }d }t|t	rVt
 }nt|trjtd
}t ttj|d g|d}t|| d S )Nr  r8   r<   r   r3   rn   rE   r  )r  r  r  r  r  r  r  r  r  rQ   r  )r_   rw   r  r   r'   r  r   r  r   r   r  r   time64r   r`   r   r   )propr   rz   r   Zexp_typer+   r+   r,   test_dt_properties0	  s.    




r  c               	   C  s   t jtdddddtdddddtdddddd gttdd	} | jj}t jg d
tt d	}t	
|| | jj}t jg dtt d	}t	
|| d S )Nr  rA   r<   r   r  r  r  r  r8   rB   r  rQ   r  FFTN)r_   rw   r   r   r'   r  r  Zis_month_startra  r   r   Zis_month_endr  r+   r+   r,   test_dt_is_month_start_enda	  s    	r  c               	   C  s   t jtdddddtdddddtdddddd gttdd} | jj}t jg d	tt d}t	
|| | jj}t jg d
tt d}t	
|| d S )Nr  rA   rB   r   r  r8   r  rQ   r  r  )r_   rw   r   r   r'   r  r  Zis_year_startra  r   r   Zis_year_endr  r+   r+   r,   test_dt_is_year_start_endt	  s    	r  c               	   C  s   t jtdddddtdddddtdddddd gttdd	} | jj}t jg d
tt d	}t	
|| | jj}t jg dtt d	}t	
|| d S )Nr        r   r  r8   rB   r  rQ   r  r  )r_   rw   r   r   r'   r  r  Zis_quarter_startra  r   r   Zis_quarter_endr  r+   r+   r,   test_dt_is_quarter_start_end	  s    	r  Zdays_in_monthZdaysinmonthc              	   C  sz   t jtdddddtdddddtdddddd gttdd	}t|j| }t jg d
tt d	}t	
|| d S )Nr  r   r  r  r3   r8   r<   r  rQ   )rB   r     N)r_   rw   r   r   r'   r  r   r  r   r   r   rw  r+   r+   r,   test_dt_days_in_month	  s    	r  c                  C  s   t jtddddtdddddtdddd	d
d
dd gttdd} | j }t jtddddtddddtddddd gttdd}t	|| d S )Nr  r   r  r  r  r  r3   r8   r  r<      ;   )r  r  r  r  r  r  r  rQ   )
r_   rw   r   r   r'   r  r  re  r   r   r  r+   r+   r,   test_dt_normalize	  s$    	
	r  r  r  c                 C  sx   t jtdddddd gtt| d}|jj| ks8J |jj}t t	tj
tddd gt| d}t|| d S )	Nr  r8   r<   r   r  rQ   r   r  )r_   rw   r   r   r'   r  r  r  r   r   r`   r  r   r   r  rz   r   r   r+   r+   r,   test_dt_time_preserve_unit	  s     r  r   )Nr  
US/Pacificc                 C  sJ   t jtdddddd gttjd| dd}|jj}|t	| ksFJ d S )	Nr  r8   r<   r   r  r  r   rQ   )
r_   rw   r   r   r'   r  r  r   r   Zmaybe_get_tz)r   rz   r   r+   r+   r,   
test_dt_tz	  s    r  c                  C  sb   t jtdddddd gttdd} | j }t jg dg d	gg d
dd}t	
|| d S )Nr  r8   r<   r   r  r  rQ   )r  r8   r8   r  )r  weekr  r   r   r2   )r_   rw   r   r   r'   r  r  isocalendarr   r   r  r  r+   r+   r,   test_dt_isocalendar	  s    
r  day_nameZSunday
month_nameJanuaryc                 C  sd   t | tjtdddd gttdd}t|j|  }tj|d gtt	 d}t
|| d S )Nr  r8   r2  rQ   )r-   r_   rw   r   r   r'   r  r   r  r   r   r   )r  rd  r*   rz   r   r   r+   r+   r,   test_dt_day_month_name	  s
    $r  c                 C  sf   t |  tjtdddddd gttdd}|jd}tjd	d gtt	 d}t
|| d S )
Nr  r8   r<   r   r  r  rQ   z%Y-%m-%dT%H:%M:%Sz2023-01-02T03:00:00.000000000)r-   r_   rw   r   r   r'   r  r  strftimer   r   r   )r*   rz   r   r   r+   r+   r,   test_dt_strftime	  s    r  )ceilr  r  c                 C  s   t jtdddddd gttdd}tjtdd	$ t	|j
| d
dd W d    n1 s`0    Y  tjtdd	$ t	|j
| d
dd W d    n1 s0    Y  d S )Nr  r8   r<   r   r  r  rQ   zambiguous is not supported.r   Z1hr  Z	ambiguousznonexistent is not supported.nonexistent)r_   rw   r   r   r'   r  r$   r"   r^   r   r  r  rz   r+   r+   r,   *test_dt_roundlike_tz_options_not_supported
  s    2r  c                 C  s   t jtdddddd gttdd}tjtdd	  t	|j
| d
 W d    n1 s\0    Y  tjtdd	  t	|j
| d  W d    n1 s0    Y  d S )Nr  r8   r<   r   r  r  rQ   zfreq='1B' is not supportedr   Z1Bz$Must specify a valid frequency: None)r_   rw   r   r   r'   r  r$   r"   r  r   r  r  r+   r+   r,   "test_dt_roundlike_unsupported_freq
  s    .r  freq)Dhr   r3  r2  r  r  c                 C  sn   t tddddd g}ttd}t|j|d|  |}t||j|d|  }t	
|| d S )Nr  r8   r  r  r=   )r_   rw   r   r   r'   r  r   r  r   r   r   )r  r  rz   ra   r   r   r+   r+   r,   test_dt_ceil_year_floor
  s    r  c                  C  s   t dddt dddg} tj| ttdd}d}tjt|d |j	
 }W d    n1 sb0    Y  tj| td}t|| tdd	 |D sJ d
}tjt|d  |dj	
 }W d    n1 s0    Y  t|| d S )Nr?   r8   r  r  rQ   CThe behavior of ArrowTemporalProperties.to_pydatetime is deprecatedr   c                 s  s   | ]}t |tu V  qd S r~   )rd   r   .0resr+   r+   r,   	<genexpr>3
  r   z(test_dt_to_pydatetime.<locals>.<genexpr>z>The behavior of DatetimeProperties.to_pydatetime is deprecateddatetime64[ns])r   r_   rw   r   r'   r  r   r  FutureWarningr  r  r   r`   r   r   r   r   )rb   rz   r   r   r   r+   r+   r,   test_dt_to_pydatetime)
  s    (.r  	date_typer   @   c              	   C  s   t jtdddgtttd|   d}d}tjt|dH t	j
tdd |j  W d    n1 sl0    Y  W d    n1 s0    Y  d S )	Nr?   rA   rB   r   rQ   r  r   z#to_pydatetime cannot be called with)r_   rw   r   r   r   r'   r   r  r  r$   r"   r  r  r  )r  rz   r   r+   r+   r,    test_dt_to_pydatetime_date_error;
  s    r  c                  C  s   t jtdddddd gttdd} tjtdd	  | j	j
d
dd W d    n1 s\0    Y  tjtdd	  | j	j
d
dd W d    n1 s0    Y  d S )Nr  r8   r<   r   r  r  rQ   z ambiguous='NaT' is not supportedr   r  r  r  z"nonexistent='NaT' is not supportedr  )r_   rw   r   r   r'   r  r$   r"   r^   r  tz_localizer  r+   r+   r,   *test_dt_tz_localize_unsupported_tz_optionsH
  s    .r  c                  C  sp   t jtdddddd gttjdddd	} | jd }t jtdddddd gttdd	}t	|| d S )
Nr  r8   r<   r   r  r  r  r  rQ   )
r_   rw   r   r   r'   r  r  r  r   r   r  r+   r+   r,   test_dt_tz_localize_noneT
  s    r  c                 C  s   t | tjtdddddd gtt| d}|jd}tj	tdddddd gt| d}tj
|d}tt|}t|| d S )	Nr  r8   r<   r   r  rQ   r  r  r-   r_   rw   r   r   r'   r  r  r  r`   ZcomputeZassume_timezoner   r   r   )r  r*   rz   r   exp_datar   r+   r+   r,   test_dt_tz_localizea
  s    r  znonexistent, exp_dateZshift_forwardrA   r  Zshift_backwardz2023-03-12 01:59:59.999999999c                 C  s   t | tjtddddddd gttdd}|jjd	| d
}tj	|d gtdd}tj
|d	}tt|}t|| d S )Nr  r   rA   r<   r  )r  r  r  r  r  r  rQ   r  r  r  r  )r  Zexp_dater*   rz   r   r  r   r+   r+   r,   test_dt_tz_localize_nonexistentr
  s    r  c                  C  sf   t jtdddddd gttdd} tjtdd	 | j	
d
 W d    n1 sX0    Y  d S )Nr  r8   r<   r   r  r  rQ   z"Cannot convert tz-naive timestampsr   r  )r_   rw   r   r   r'   r  r$   r"   r   r  
tz_convertr  r+   r+   r,    test_dt_tz_convert_not_tz_raises
  s    r  c                  C  sn   t jtdddddd gttddd} | jd }t jtdddddd gttdd}t	|| d S )	Nr  r8   r<   r   r  r  r  rQ   
r_   rw   r   r   r'   r  r  r  r   r   r  r+   r+   r,   test_dt_tz_convert_none
  s    r  c                 C  sp   t jtdddddd gtt| dd}|jd}t jtdddddd gtt| dd}t	|| d S )	Nr  r8   r<   r   r  r  rQ   z
US/Easternr  r  r+   r+   r,   test_dt_tz_convert
  s    r  ztimestamp[ms][pyarrow]zduration[ms][pyarrow]c                 C  s@   t jdd g| d}|jd}|| dd}t|| d S )Nr  rQ   r  r2  )r_   rw   r  as_unitr   r	  r   r   r  r+   r+   r,   test_as_unit
  s    r  dayssecondsmicrosecondsnanosecondsc                 C  sf   t jt jdddddd gttdd}t|j| }t ttj	|d gt
 d}t|| d S )	Nr8   r<   r   r3   r  r  r  r  r  rQ   r  )r_   rw   	Timedeltar   r'   r  r   r  r   r`   r  r   r   )r  r   rz   r   r+   r+   r,   test_dt_timedelta_properties
  s     	r  c                  C  sd   t jt jdddddd gttdd} | j }t ttj	dd gt
 d	}t|| d S )
Nr8   r<   r   r3   r  r  rQ   gN%  @r  )r_   rw   r  r   r'   r  r  total_secondsr   r`   r   r   r   r  r+   r+   r,   test_dt_timedelta_total_seconds
  s     	
r  c                  C  s   t dddt dddg} tj| ttdd}|j }tj	| t
d}t|| tdd |D sjJ |d	j }t|| d S )
Nr8   r<   r   r3   r  rQ   c                 s  s   | ]}t |tu V  qd S r~   )rd   r   r  r+   r+   r,   r  
  r   z)test_dt_to_pytimedelta.<locals>.<genexpr>timedelta64[ns])r   r_   rw   r   r'   r  r  Zto_pytimedeltar   r`   r   r   r   r   r   rb   rz   r   r   r+   r+   r,   test_dt_to_pytimedelta
  s    
r  c                  C  sb   t jt jdddddd gttdd} | jj}t jg dg d	gg d
dd}t	
|| d S )Nr8   r<   r   r3   r  r  rQ   )r8   r   r   r<   r   r   r3   )NNNNNNN)r  hoursminutesr  Zmillisecondsr  r  r   r  )r_   rw   r  r   r'   r  r  
componentsr   r   r  r  r+   r+   r,   test_dt_components
  s$    		r  r   c                 C  sD   t jd gdd}t|| |d}|r.| dk}nt j}||u s@J d S )Nr   rQ   r   r   )r_   rw   r   r  )r   r   rz   r   r   r+   r+   r,   #test_boolean_reduce_series_all_null  s    
r  c                  C  s   g d} g d}d g}| | | }dgt |  dgt |  d gt |  }tj|t d}tj|dd}t|| ddg}t	j
tjd	d
" tj|t d W d    n1 s0    Y  d S )N)trueTRUETruer=   r  )falseFALSEFalse0r>   TFrQ   r.  r  r  zFailed to parser   )rX  r   r   r'   ra  r_   r`   r   r   r$   r"   r(   )Ztrue_stringsZfalse_stringsZnullsr  Zboolsr   r   r+   r+   r,   %test_from_sequence_of_strings_boolean   s    (r  c                 C  sB   t jg | d}| }t |tjg tjd g}t|| d S r   )	r_   rw   r  concatr   r`   ra  r   r   )r2   rz   r   r   r+   r+   r,   %test_concat_empty_arrow_backed_series2  s    r   r   r   c                 C  s>   t d }tj|| d}tjt|| d}t|| d S )Nzthe quick brown foxrQ   )r'   r`   ru  r_   rw   r   r   r   )r2   r   rz   r   r+   r+   r,   test_series_from_string_array:  s    r  c                      s   e Zd Z fddZ  ZS )OldArrowExtensionArrayc                   s   t   }|d|d< |S )Nr   _data)r   __getstate__pop)rx   stater   r+   r,   r  D  s    
z#OldArrowExtensionArray.__getstate__)rf  rg  rh  r  rk  r+   r+   r   r,   r  C  s   r  c                  C  sV   t dg} t| }tt|}t|| |jt 	| ksDJ t
|drRJ d S )Nr8   r  )r'   r`   r  r  r  r  r   r   r   chunked_arrayhasattr)rb   r   r   r+   r+   r,   #test_pickle_old_arrowextensionarrayJ  s    r	  c                  C  sT   d} t ttj| ftjdg}| }d|tj| ftjd< |j|jksPJ d S )Nih6 rQ   F)	r   r'   r  r   Zonesra  r  Zzerosr   )Nr   r   r+   r+   r,   /test_setitem_boolean_replace_with_mask_segfaultS  s
    r  zdata, arrow_dtyperK   rL   c                 C  s:   t |}tjt| |d}tj| |d}t|| d S r   )r   r_   r`   r   r   r   )rb   r  r2   r   r   r+   r+   r,   -test_conversion_large_dtypes_from_numpy_array\  s    r  c                  C  sl   t jdd d gitt d} t jdddgidd}t j| |gdd}t jdg didd}t|| d S )	NrF   rQ   r   r8   r   T)Zignore_index)NNr   r8   )r_   r   r   r'   nullr  r   r  )r   Zdf2r   r   r+   r+   r,   test_concat_null_arrayj  s
    r  c                 C  sN   t jg dt| d}| }t jg dtt g dd}t|| d S )Nr8   r<   r   rQ   )r   r<   r8   r8   r   g       @r  r   r   r   r   r   25%50%75%r   r2   r  )r_   rw   r   describer'   r   r   r   r   rb   r   r   r+   r+   r,   test_describe_numeric_datas  s    
r  c                 C  s^   t jtddt| d}| }t jdgt jg d| jd  tg dd}t	
|| d S )	Nr8   rD   rQ   	   )rE   r<   r8   r   rE   rn   r  r  r  r  )r_   rw   r  r   r  to_timedeltar  r  r   r   r   r  r+   r+   r,   test_describe_timedelta_data  s    r  c                   sX   t jtddt d}| }t jdg fdddD  tg dd	}t|| d S )
Nr8   rD   rQ   r  c                   s    g | ]}t j| j jd qS ))r   r  )r_   r  r   r  )r  vr   r+   r,   
<listcomp>  s   z/test_describe_datetime_data.<locals>.<listcomp>)rE   r8   r   rE   rn   r  )r   r   r   r  r  r  r   r  )r_   rw   r  r   r  r   r   r   r  r+   r  r,   test_describe_datetime_data  s    
	r  c                 C  s<   g d}t j|t| d}|d}|d }||ks8J d S )Nr  rQ   g?r   )r_   rw   r   r  )r   rb   rz   r   r   r+   r+   r,   test_quantile_temporal  s
    
r   c                  C  sB   t jtdgt  d} tj| t| jd}t	|dks>J d S )Nz
2020-01-01r  rQ   z+0    2020-01-01
dtype: date32[day][pyarrow])
r'   r`   r   fromisoformatr  r_   rw   r   rd   repr)Zarrow_dtrz   r+   r+   r,   test_date32_repr  s    r#  c                  C  s   t dd g} t dd g}t j| ttdd}t j|ttdd}|| }t jdd gttdd}t	|| d S )Nr8   r  rQ   r<   )
r_   to_datetimer  rw   r   r'   r  r  r   r   )Zdata_tsZdata_tdZser_tsZser_tdr   r   r+   r+   r,   2test_duration_overflow_from_ndarray_containing_nat  s    r%  c                 C  sZ   t | }|dksJ | jr<|dv r<tjjdd}|| |t jt| ddksVJ d S )Nzunknown-array)ZfloatingZ
datetime64Ztimedelta64zfin infer_dtype pd.NA is not ignored in these cases even with skipna=True in the list(data) check belowr   Tr   )r
   Zinfer_dtyper  r$   r%   r&   r)   r  )rb   r*   r  r%   r+   r+   r,   test_infer_dtype_pyarrow_dtype  s    

r&  c                 C  sz   d}| j }tj| r.tj||d|g}ntj||| jd|g}t	j
|| d}t	tj|g| d}t|| d S )Nr   r  r  r   rQ   r  )r  r'   rR   rZ   r_   r  r  r  r   r   re   r`   r   r   )r   rM  r  seqr   r   r+   r+   r,   test_from_sequence_temporal  s    r)  c                 C  s   | j }tj| r(tjd|d|}ntjd|| jd|}t	tj
g d| d}| }||d d < t	tj
g d| d}t|| d S )Nr8   r  r'  r  r  )r8   r8   r8   )r  r'   rR   rZ   r_   r  r  r  r   r   r`   r  r   r   r   r  rM  r   r   r   r+   r+   r,   test_setitem_temporal  s    r+  c                 C  sZ   t tjg d| d}| j}|tjd|d| }t tjg d| d}t|| d S )Nr  r  r8   r  )r   r8   r<   )	r   r'   r`   r  r_   r  r  r   r   )r   r*   r   r  r   r   r+   r+   r,   test_arithmetic_temporal  s
    r,  c                 C  s   | j }tj| r(tjd|d|}ntjd|| jd|}t	tj
g d| d}||k}t	tj
g dt d}t|| d S )Nr8   r  r'  r  r  )FTT)r  r'   rR   rZ   r_   r  r  r  r   r   r`   ra  r   r   r*  r+   r+   r,   test_comparison_temporal  s    r-  c                 C  s   t tjg d| d}|d }tj| rTtjd| jd| j}t	|tjsJ n,tj
d| j| jd| j}t	|tj
sJ |j|jksJ ||ksJ d S )Nr  r  r8   r<   r  r'  )r   r'   r`   rR   rZ   r_   r  r  r  r   r  r   r   r   r   r   r+   r+   r,   test_getitem_temporal  s    r/  c                 C  s   t tjdd g| d}t|}tj| r^tjd| jd	| jtj
g}t|d tjsJ n6tjd| j| jd	| jtj
g}t|d tjsJ |d j|d jksJ ||ksJ d S )Nr8   r  r  r   r'  )r   r'   r`   r  rR   rZ   r_   r  r  r  r  r   r  r   r.  r+   r+   r,   test_iter_temporal  s    r0  c                 C  sR   t j| d d g dd}|jdd }t jddgdd	d
gd}t|| d S )Nr   )rF   rF   rG   r  r   )levelr<   r8   r   rF   rG   r  )r_   rw   r   sizer   r   r  r+   r+   r,   'test_groupby_series_size_returns_pa_int6  s    r3  c                 C  s  t tjdd g| d}|j|d}tj| rHtjd| jd	| j}ntj
d| j| jd	| j}|tkstj| r| jd ur|tkrtj}ntj}tj||gtd}|d j|jksJ nF|  d| j}| }t||g}t|d d | jksJ t|| d S )Nr8   r  rQ   r  r'  r   Znat)r   r'   r`   r   rR   rZ   r_   r  r  r  r  r   r   rY   r  r  r   to_pandas_dtyperd   Zdatetime_datar   r   )r   r2   r   r   r@  r  r   r+   r+   r,   test_to_numpy_temporal>  s     r5  c                 C  s\   t ddg| | d}|d }t jddggt jdgddddgdd}t|| d S )	Nr8   r   rj   r  rk   rl   r   )r  r   r2   )r_   r   r   r   r   r   r  )rf   r   r   r   r+   r+   r,   %test_groupby_count_return_arrow_dtype[  s    r6  c                  C  sD   t jddgddggttjt ddd} | jj}|tks@J d S )Nr8   r<   r   r3   )Z	list_sizerQ   )	r_   rw   r   r'   r]  r   r2   rd   r  )rz   r   r+   r+   r,   test_fixed_size_listg  s
    "r7  c                  C  s@   t jt jddddgttdd} t| }d}||ks<J d S )NZ2012r   )r  r  r  r  z#     col
0  15340
1  15341
2  15342)r_   r   Zperiod_ranger   r    r"  )r   r   r   r+   r+   r,   'test_arrowextensiondtype_dataframe_reprp  s    
r8  c                  C  sB   t jdd gdd} | jd dd}t jdd gdd}t|| d S )Nr<   r   rQ   r   )r     )r_   rw   powr   r   )kr   r   r+   r+   r,   test_pow_missing_operand~  s    r<  c                 C  sh   t jd dgt| d}t tjddgd| j dd}||}t jddgt| d}t|| d S )Nr<   rQ   r8   r   zm8[r4  )	r_   rw   r   r   r`   r  r  r   r   )r   Zser1Zser2r   r   r+   r+   r,   test_duration_fillna_numpy  s
    "
r=  c                  C  s^   t jdgdd} t jd gdd}tjtjjdd | |k  W d    n1 sP0    Y  d S )Nl            r   rQ   r   zInteger valuer   )r_   rw   r$   r"   r'   r
   r(   r  r+   r+   r,   +test_comparison_not_propagating_arrow_error  s    r>  c                  C  s   t t dg t dg g} tt| }| \}}tjddgtj	d}t
t|  }t|| t|| d S )NrF   rG   r   r8   rQ   )r'   r  r`   dictionary_encoder_   rw   r   Z	factorizer   Zintpr   r   r   r   r   )r   rz   Zres_indicesZres_uniquesZexp_indiciesZexp_uniquesr+   r+   r,   !test_factorize_chunked_dictionary  s    r@  c                  C  s   t tg d t tg d g} ttt | }|d}tj	g dt
t  d}tjg dtj|dd}t|| d S )N)rF   r   rh   rF   )rF   drh   category)rF   r   rh   rA  rQ   )rF   r   rh   rF   rF   rA  rh   )
categories)r'   r`   r   r?  r_   rw   r   r  r   r   r   r   ZCategoricalDtyper   r   )Zarrsrz   r   rC  r   r+   r+   r,   "test_dictionary_astype_categorical  s    

rD  c                  C  sH   t jdgdd} t jdgdd}t jdgdd}| | }t|| d S )Nir   rQ   r3   r9   rn  )rF   rG   r   r   r+   r+   r,   test_arrow_floordiv  s
    rE  c                  C  s8   t jdgdd} t jdgdd}| d }t|| d S )Nl     ^ \K r   rQ   l    \p/i@B rn  )rF   r   r   r+   r+   r,    test_arrow_floordiv_large_values  s    rF  r   r   c                 C  s(   t jdg| d}|d }t|| d S )N   rQ   r8   rn  )r2   rF   r   r+   r+   r,   )test_arrow_floordiv_large_integral_result  s    rH  c                 C  s@   t | }tjdg|d}|d }tjdg|d}t|| d S )NirQ      r:   )r   r_   rw   r   r   )r   r2   rF   r   r   r+   r+   r,   "test_arrow_floordiv_larger_divisor  s
    rJ  c                 C  s   t |  j}tj|gt| d}tjt	j
jdd |d  W d    n1 sT0    Y  tjt	j
jdd |d  W d    n1 s0    Y  d S )NrQ   zoverflow|not in ranger   r:   zdivide by zeror   )r   iinfor4  r   r_   rw   r   r$   r"   r'   r
   r(   )r   Z	min_valuerF   r+   r+   r,   $test_arrow_floordiv_integral_invalid  s    &rL  c                 C  s<   t jdg| d}|d }t jtdg| d}t|| d S )Nr<   rQ   r   inf)r_   rw   r  r   r   )r2   rF   r   r   r+   r+   r,   &test_arrow_floordiv_floating_0_divisor  s    rN  )r   r  r  c                 C  s>   t jdd gdd}|| }t jdd g| d}t|| d S )Nr8   r   rQ   r  r  r+   r+   r,   (test_astype_int_with_null_to_numpy_dtype  s    
rO  c                 C  sP   t |  j}t| }tj|g|d}tjdg|d}|| }t|| d S )NrQ   r8   )	r   rK  r4  r   r   r_   rw   r   r   )r   Z	max_valuer2   rF   rG   r   r+   r+   r,   )test_arrow_integral_floordiv_large_values  s    rP  c                 C  sH   t jdg| d}t jdg| d}t jdgdd}|| }t|| d S )Nr   rQ   rG  r   rn  r2   rF   rG   r   r   r+   r+   r,   &test_arrow_true_division_large_divisor   s
    rR  c                 C  sH   t jdg| d}t jdg| d}t jdg| d}|| }t|| d S )Nr   rQ   rG  rn  rQ  r+   r+   r,   'test_arrow_floor_division_large_divisor
  s
    rS  c                  C  sD   g d} t j| dd}t ttjt | dd}t|| d S )N)2020-01-01 04:30:00z2020-01-02 00:00:00z2020-01-03 00:00:00timestamp[ns][pyarrow]rQ   TZfrom_pandas)r_   rw   r   r'   r`   r$  r   r   )Zstring_datesr   r   r+   r+   r,   $test_string_to_datetime_parsing_cast  s    rW  c               	   C  sH   dg} t j| dd}t ttjtddddgdd	}t|| d S )
Nz11:41:43.076160ztime64[us][pyarrow]rQ   r  )   +   i) TrV  )r_   rw   r   r'   r`   r   r   r   )Zstring_timesr   r   r+   r+   r,    test_string_to_time_parsing_cast  s    rZ  c                  C  sB   t jg ddd} | d}t jddtjgdd}t|| d S )Nr   (   Nr  rQ   r   r   r\  )r_   rw   r   r   r   r   r   r  r+   r+   r,   test_to_numpy_float(  s    
r]  c                  C  s:   t jdgdd} | jtjd}tdg}t|| d S )NrT  rU  rQ   l    P)#-/ )r_   rw   r   r   r   r`   r   r   r  r+   r+   r,   test_to_numpy_timestamp_to_int0  s    r^  c                  C  sJ   t jg ddd} | jdd dd}t jddtjgd	d}t|| d S )
Nr[  r   rQ   c                 S  s   dS )N*   r+   r   r+   r+   r,   r   :  r   z,test_map_numeric_na_action.<locals>.<lambda>r}   r   g      E@r   )r_   rw   r   r   r   r   r   r  r+   r+   r,   test_map_numeric_na_action8  s    r`  (  r  
__future__r   r   r   r   r   decimalr   ior   r	   r`  r  r   numpyr   r$   Zpandas._libsr
   Zpandas._libs.tslibsr   Zpandas.compatr   r   r   r   r   r   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsrj  Zpandas.core.dtypes.dtypesr   r   Zpandasr_   Zpandas._testingZ_testingr   Zpandas.api.extensionsr   Zpandas.api.typesr   r   r   r   r   r   r   Zpandas.tests.extensionr   Zimportorskipr'   Zpandas.core.arrays.arrow.arrayr   Z(pandas.core.arrays.arrow.extension_typesr    r-   ZfixtureZALL_PYARROW_DTYPESr   r2   rb   rf   rg   rm   rp   rq   ru   ZExtensionTestsrv   rl  r%   ri  ZALL_INT_PYARROW_DTYPESr  r  r  r  r  r  r  r  r  r  bytesZlarge_binaryZlarge_stringr]  r   r  Z
large_listZmap_r   structrZ  dictr  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  compiler  r  r  r  r  r  r  r  r!  r"  r#  r%  r&   r  r*  r+  r1  r3  rA  rH  rI  rN  rR  rT  r[  r^  ra  rf  rh  rk  rm  rn  rs  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  ZFLOAT_PYARROW_DTYPESr  ZTIMEDELTA_PYARROW_DTYPESr  ZDATETIME_PYARROW_DTYPESr  r   r#  r%  r&  r)  r+  r,  r-  r/  r0  r3  r"  r   r5  r6  r7  r8  r<  r=  r>  r@  rD  rE  rF  rH  ZSIGNED_INT_PYARROW_DTYPESrJ  rL  ZFLOAT_PYARROW_DTYPES_STR_REPRrN  rO  rP  rR  rS  rW  rZ  r]  r^  r`  r+   r+   r+   r,   <module>   s  $	$	


;


:


      d "
	I



 
		



	



	 



*



















("		



	

											

		

