o
    jh:                    @   s  d 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mZmZmZmZmZmZmZ ddlmZ ddlmZ dd	lmZ ddl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+Z+ ej,dddZ-ddl.m/Z/ ddl0m1Z1 ej2e!j3e4ddd Z5ej2dd Z6ej2dd Z7ej2ddgddd Z8ej2dd Z9ej2dd Z:ej2dd  Z;ej2d!d" Z<ej2d#d$ Z=G d%d& d&e+j>Z?G d'd( d(e+j@ZAG d)d* d*e+jBZCG d+d, d,e+jDZEG d-d. d.e+jFZGG d/d0 d0e+jHZIG d1d2 d2e+jJZKG d3d4 d4e+jLZMG d5d6 d6e+jNZOG d7d8 d8e+jPZQG d9d: d:e+jRZSG d;d< d<e+jTZUG d=d> d>e+jVZWG d?d@ d@e+jXZYG dAdB dBe+jZZ[G dCdD dDe+j\Z]G dEdF dFe+j^Z_G dGdH dHe+j`ZaG dIdJ dJe+jbZcG dKdL dLZddMdN ZedOdP ZfejghdQg dRejghdSdTdTdTggdUdV ZiejgjhdWg dXddYggg dZdgggd[d\gd]d^d_ Zjd`da Zkejghdbe-l emge-ldcemge-n emge-o e4ge-pe-q erge-se-q erge-te-u e-q evge-we-q e-q eggddde Zxdfdg Zydhdi Zzdjdk Z{dldm Z|dndo Z}dpdq Z~drds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zejghdddgdd Zdd Zejghdddgddgddggdd Zdd Zejghdddddddggddddddggddddddggddddddggddddddgggdd Zdd Zejghddddddggdddddggdddddggdddddgggdd Zejghddedgde4gddgddggdd Zejghdddddddggddddddggddddddgggdd Zdd Zejgjededdd ZejghddddddggdddddggdddddggdddddggdddddggdddddgggddÄ ZejghddddddggdddddggdddddggdddddggdddddggdddddgggddƄ Zejghddddddge- gdddddge-q ggdd˄ Zdd̈́ Zejghddg dϢgdg dТgdg dѢgdg dӢgdYg dԢggddք Zejgjdedddل Zejghddddddggdddddggdddddgggdd܄ Zejghddddddggdddddggdddddgggdd Zejghdg 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dd Zejghdddgddgddgdd gddggdd Zdd Zejghdg dg d	g d
g dg dg dgdd Zejghdddgdd Zejghdddgddgddgddgddgddgddgd dgd!dgd"dgd#dgd$dgd%dgd&dgd'dgd(dggd)d* Zejghd+g d,d-d. Zd/d0 Zejghd1d2d3gd4dgd5dgd6dgd7dgd8dgd9dgd:dgd;dYgejd<dejgjeed=d>d?d@dAgdBdgdCdDgdEdgdFdGgdHed3ddɃgdIeddYdGdAggdJdK Zejghd+dLdMgdNdO ZejghdPg dQdRdS ZdTdU ZdVdW ZejghdXg dYdZd[ ZejghdXg dYd\d] Zejgjed^d_ejghd`g daejghdXg dYdbdc Zddde Zdfdg Zdhdi Zejghd+dLdMgdjdk Zejghdlddgdmdn Zejghddodpgdqdr Zdsdt ZdS (u  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	timedelta)Decimal)BytesIOStringION)PY311is_ci_environmentis_platform_windowspa_version_under7p0pa_version_under8p0pa_version_under9p0pa_version_under11p0)PerformanceWarning)is_any_int_dtype)CategoricalDtypeType)is_bool_dtypeis_float_dtypeis_integer_dtypeis_numeric_dtypeis_signed_integer_dtypeis_string_dtypeis_unsigned_integer_dtype)basepyarrowz7.0.0)
minversion)ArrowExtensionArray)
ArrowDtype)paramsidsc                 C   s   t | jdS )N)pyarrow_dtype)r   param)request r$   b/var/www/html/smartRegister/venv/lib/python3.10/site-packages/pandas/tests/extension/test_arrow.pydtype@   s   r&   c              	   C   st  | j }tj|r!ddgd d g ddgd  d g ddg }ntj|r?ddgd d g ddgd  d g d	d
g }nttj|r]ddgd d g ddgd  d g ddg }nVtj|r{ddgd d g ddgd  d g ddg }n8tj|rt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 }ntj|rEtdtddgd d g tdtdgd  d g tdtdg }nntj|rut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|rd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 }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   !   >r&   )r!   pa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)r&   pa_dtypedatar$   r$   r%   rW   E   s   0000*..rW   c                 C   s   t | d| d gS )zLength-2 array with [NA, Valid]Nr   type_from_sequence)rW   r$   r$   r%   data_missing   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.
    rW   r[   N)r"   )r#   rW   r[   r$   r$   r%   all_data   s
   

r\   c              	   C   s  | j }tj|rd}d}d}ntj|rd}d}d}ntj|r*d}d}d}ntj|r7d}d}d	}ntj|rPtd
dd}tddd}tddd}nwtj	|rnt
d
dddddd}t
ddd}t
dddd}nYtj|rtd}td}tdd}nEtj|rtdd}tdd}tdd}n/tj|rd}d}d}n"tj|rd}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
    FTgr*   g?r.   r   r,   r8   r4   r5   r6   i  r3   r7   r'   r:   r;   cr?   r@      cz-1.1r2   z1.1NrE   )r!   rF   rG   rH   rI   rJ   rK   rM   r   rN   r   rO   r   rP   r   rQ   rR   rL   r   rS   rT   rU   )r&   rV   ABCr$   r$   r%   data_for_grouping   s^   	


rb   c                 C       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'   rX   rb   r$   r$   r%   data_for_sorting      rf   c                 C   rc   )z{
    Length-3 array with a known sort order.

    This should be three items [B, NA, A] with
    A < B and NA missing.
    r   r0   r'   rX   re   r$   r$   r%   data_missing_for_sorting   rg   rh   c                 C   s:   | j j}tj|stj|rtjdgd | j dS | S )z3Length-100 array in which all the elements are two.r0   d   rE   )r&   r!   rF   rG   
is_integerrI   rT   rU   rW   rV   r$   r$   r%   data_for_twos   s   rl   c                   C   s   t jS )z6The scalar missing value for this type. Default 'None')rT   NAr$   r$   r$   r%   na_value   s   rn   c                          e Zd Z fddZ  ZS )TestBaseCastingc                    sB   |j j}tj|r|jtjj	d| dd t
 | d S )NzFor z .astype(str) decodes.reason)r&   r!   rF   rG   rR   node
add_markerpytestmarkxfailsupertest_astype_strselfrW   r#   rV   	__class__r$   r%   ry      s   
zTestBaseCasting.test_astype_str)__name__
__module____qualname__ry   __classcell__r$   r$   r|   r%   rp          rp   c                       s4   e Zd Z fddZdd Zdd Zdd Z  ZS )	TestConstructorsc                    sb   |j j}tj|stj|r)tj|rd}nd| }|jtj	j
|d t | d S )Nz1ArrowDtype(pa.string()) != StringDtype('pyarrow')$pyarrow.type_for_alias cannot infer rq   )r&   r!   rF   rG   rQ   rL   rs   rt   ru   rv   rw   rx   test_from_dtype)r{   rW   r#   rV   rr   r|   r$   r%   r     s   
z TestConstructors.test_from_dtypec                 C   sd   t ||j}t|| t|jtjsJ t ||j }t|| t|jtjs0J d S N)	rY   rZ   _datatmassert_extension_array_equal
isinstancerF   ChunkedArraycombine_chunksr{   rW   resultr$   r$   r%   test_from_sequence_pa_array  s   z,TestConstructors.test_from_sequence_pa_arrayc                 C   sH   t jtdd tjdgt d W d    d S 1 sw   Y  d S )NzConverting strings tomatchz12-1rE   )ru   raisesrS   r   _from_sequence_of_stringsrF   month_day_nano_interval)r{   r#   r$   r$   r%   *test_from_sequence_pa_array_notimplemented  s
   
"z;TestConstructors.test_from_sequence_pa_array_notimplementedc                 C   s  |j j}tj|r|drts|jt	j
jdd n=tr<tj|s+tj|r<|jt	j
jtjd| d ntj|rZ|jd urZt rZt rZ|jt	j
jtjdd |jt }t|j||j d}t|| | }t|j||j d}t|| d S )Nz
time64[ns]z&Nanosecond time parsing not supported.rq   z pyarrow doesn't support parsing r   rr   _TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.rE   )r&   r!   rF   rG   	is_time64equalsr	   rs   rt   ru   rv   rw   r   rO   rL   ArrowNotImplementedErrorrN   tzr   r
   ArrowInvalidr   caststringrY   r   r   r   r   )r{   rW   r#   rV   pa_arrayr   r$   r$   r%   &test_from_sequence_of_strings_pa_array%  s@   

	z7TestConstructors.test_from_sequence_of_strings_pa_array)r~   r   r   r   r   r   r   r   r$   r$   r|   r%   r     s
    r   c                   @      e Zd ZdS )TestGetitemTestsNr~   r   r   r$   r$   r$   r%   r   J      r   c                   @   sH   e Zd Zdd Zejdddgdd Zejdddgdd	 Zd
S )TestBaseAccumulateTestsc                 C   sd   t |||d}|jjdkr|d}|d}|d}t |d||d}| j||dd d S )Nskipnamint64[pyarrow]Float64F)check_dtype)getattrr&   kindastypeassert_series_equal)r{   serop_namer   r   expectedr$   r$   r%   check_accumulateO  s   


z(TestBaseAccumulateTests.check_accumulater   TFc                 C   s   |j j}tj|stj|stj|r!|dkr!ts!t	d |}t
|}tt t|||d W d    d S 1 sAw   Y  d S )Ncumsumz1These work, are tested by test_accumulate_series.r   )r&   r!   rF   rG   rj   rI   rO   r   ru   skiprT   Seriesr   rS   r   )r{   rW   all_numeric_accumulationsr   pa_typer   r   r$   r$   r%   test_accumulate_series_raises[  s    




"z5TestBaseAccumulateTests.test_accumulate_series_raisesc           	      C   s   |j j}|}t|}d}tj|stj|r |dv rd}ntj|r3tj	|s3|dv r2d}ntj	|r?|dkr?d}|rFt
d |dksLtrf|jjjrVt
d |jt
jj| dtd	 n!|dkrtj|svtj|r|jt
jj| d
| td	 | ||| d S )NF)r   cumprodTr   z]These should *not* work, we test in test_accumulate_series_raises that these correctly raise.r   zpyarrow xfail slowz not implementedrr   r   z not implemented for )r&   r!   rT   r   rF   rG   rQ   rR   is_temporalrO   ru   r   r   configoption	skip_slowrs   rt   rv   rw   rS   rH   rL   r   )	r{   rW   r   r   r#   r   r   r   do_skipr$   r$   r%   test_accumulate_serieso  sP   




z.TestBaseAccumulateTests.test_accumulate_seriesN)	r~   r   r   r   ru   rv   parametrizer   r   r$   r$   r$   r%   r   N  s    
r   c                       s6   e Zd Zdd Zejdddg fddZ  ZS )TestBaseNumericReducec                 C   s   |j j}|dkrt|| }nt|||d}tj|r#td ntj|s/tj	|r4|
d}|dkr?t|| }nt|||d}t|| d S )Ncountr   zApandas boolean data with NA does not fully support all reductionsr   )r&   r!   r   rF   rG   rH   ru   r   rj   rI   r   r   assert_almost_equal)r{   r   r   r   rV   r   r   r$   r$   r%   check_reduce  s   
z"TestBaseNumericReduce.check_reducer   TFc                    sn  |j j}|}t|}d}tj|r%|dv r%tj|r"|dv r"nd}ntj|s1tj	|r7|dv r7d}|sad| d}	t
jt|	d t|||d	 W d    d S 1 sZw   Y  d S t
jjt| d
tj d| d}
|dv r}|j|
 n0|dv rtrtj|r|j|
 n|dkrtr|j|
 ntj|r|dv r|j|
 t ||| d S )NT)sumvarskewkurtprod)r   F)	r   meanmedianr   stdsemr   r   r   zdoes not support reduction ''r   r    is not implemented in pyarrow= for r   >   r   r   >   r   r   r   r   >   r   r   r   r   )r&   r!   rT   r   rF   rG   r   rO   rQ   rR   ru   r   	TypeErrorr   rv   rw   __version__rs   rt   r   rL   r   rH   rx   test_reduce_series)r{   rW   all_numeric_reductionsr   r#   rV   opnamer   should_workmsg
xfail_markr|   r$   r%   r     sV   




z(TestBaseNumericReduce.test_reduce_series)	r~   r   r   r   ru   rv   r   r   r   r$   r$   r|   r%   r     s    r   c                   @   &   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	|s!tj
|r'|j| |}t|}	tj|r\tj|s\tjtdd t|	||d W d    d S 1 sUw   Y  d S t|	||d}
|
|dku slJ d S )Nr   r   r   zdoes not support reductionr   r   any)r&   r!   ru   rv   rw   r   rF   r   rG   rQ   rR   rs   rt   rT   r   r   rO   r   r   )r{   rW   all_boolean_reductionsr   rn   r#   rV   r   r   r   r   r$   r$   r%   r     s,   

z(TestBaseBooleanReduce.test_reduce_seriesN)r~   r   r   ru   rv   r   r   r$   r$   r$   r%   r         r   c                       sR   e Zd Z fddZ fddZejdddg fdd	Z fd
dZ	  Z
S )TestBaseGroupbyc                    @   |j j}tj|r|jtjj	| dd t
 | d S N" only has 2 unique possible valuesrq   )r&   r!   rF   rG   rH   rs   rt   ru   rv   rw   rx   test_groupby_extension_no_sortr{   rb   r#   rV   r|   r$   r%   r         z.TestBaseGroupby.test_groupby_extension_no_sortc                    r   r   )r&   r!   rF   rG   rH   rs   rt   ru   rv   rw   rx    test_groupby_extension_transformr   r|   r$   r%   r   *  r   z0TestBaseGroupby.test_groupby_extension_transformas_indexTFc                    sD   |j j}tj|r|jtjj	t
| dd t || d S )Nr   r   )r&   r!   rF   rG   rH   rs   rt   ru   rv   rw   
ValueErrorrx   test_groupby_extension_agg)r{   r   rb   r#   rV   r|   r$   r%   r   4  s   z*TestBaseGroupby.test_groupby_extension_aggc                    s   t |jrItg d|g dd}tdg}tjtdd |d	 j
 W d    n1 s2w   Y  |dj	dd	j
}t|| d S t | d S )
N)r,   r,   r0   r0      r   r,   r'   )r,   r,   r,   r,   r,   r,   r,   r,   )r_   r`   ra   ra   zdoes not supportr   r_   T)numeric_only)r   r&   rT   	DataFrameIndexru   r   r   groupbyr   columnsr   assert_index_equalrx   test_in_numeric_groupby)r{   rb   dfr   r   r|   r$   r%   r   @  s   
z'TestBaseGroupby.test_in_numeric_groupby)r~   r   r   r   r   ru   rv   r   r   r   r   r$   r$   r|   r%   r     s    

r   c                       sT   e Zd Z fddZ fddZ fddZdd Z fd	d
Z fddZ  Z	S )TestBaseDtypec                    s@   |j j}tj|rtr|jtj	j
tdd t | d S )Nz,decimal string repr affects numpy comparisonr   )r&   r!   rF   rG   rL   r   rs   rt   ru   rv   rw   r   rx   test_check_dtyperz   r|   r$   r%   r   T  s   zTestBaseDtype.test_check_dtypec                    s   |j }tj|r|jtjjt	d| d tj
|r@d}tjt|d ||j W d    d S 1 s9w   Y  d S t | d S )Nr   r   z6string\[pyarrow\] should be constructed by StringDtyper   )r!   rF   rG   rL   rs   rt   ru   rv   rw   rS   rQ   r   r   construct_from_stringnamerx   #test_construct_from_string_own_name)r{   r&   r#   rV   r   r|   r$   r%   r   _  s"   
z1TestBaseDtype.test_construct_from_string_own_namec                    sd   |j }tj|rt||jrJ d S tj|r*|j	t
jjtd| d t | d S )Nr   r   )r!   rF   rG   rQ   rY   is_dtyper   rL   rs   rt   ru   rv   rw   rS   rx   test_is_dtype_from_namer{   r&   r#   rV   r|   r$   r%   r   s  s   z%TestBaseDtype.test_is_dtype_from_namec                 C   sF   d}t jt|d t|d W d    d S 1 sw   Y  d S )Nz*'another_type' must end with '\[pyarrow\]'r   another_type)ru   r   r   rY   r   )r{   r&   r   r$   r$   r%   .test_construct_from_string_another_type_raises  s   "z<TestBaseDtype.test_construct_from_string_another_type_raisesc                    s   |j }tj|s6tj|s6tj|r|jdks6|jd us6tj|r*|jdks6tj	|s6tj
|rD|jtjj| dd t | d S )NnszB does not have associated numpy dtype findable by find_common_typerq   )r!   rF   rG   rM   rP   rN   unitr   rO   rR   rL   rs   rt   ru   rv   rw   rx   test_get_common_dtyper   r|   r$   r%   r     s*   






z#TestBaseDtype.test_get_common_dtypec                    s2   |j }tj|rt|sJ d S t | d S r   )r!   rF   rG   rQ   r   rx   test_is_not_string_type)r{   r&   rV   r|   r$   r%   r    s   z%TestBaseDtype.test_is_not_string_type)
r~   r   r   r   r   r   r   r   r  r   r$   r$   r|   r%   r   S  s    r   c                   @   r   )TestBaseIndexNr   r$   r$   r$   r%   r    r   r  c                       ,   e Zd Zejjddd fddZ  ZS )TestBaseInterfacez6GH 45419: pyarrow.ChunkedArray does not support views.Frr   runc                       t  | d S r   )rx   	test_viewr{   rW   r|   r$   r%   r       zTestBaseInterface.test_view)r~   r   r   ru   rv   rw   r  r   r$   r$   r|   r%   r    
    r  c                       s$   e Zd Zdd Z fddZ  ZS )TestBaseMissingc                 C   s   ||    }|d }||}||usJ | || tt |jdd}W d    n1 s2w   Y  ||us=J | || d S )Nr   backfill)method)isnafillnar   r   assert_produces_warningr   )r{   rW   validr   r$   r$   r%   test_fillna_no_op_returns_copy  s   
z.TestBaseMissing.test_fillna_no_op_returns_copyc                    sH   t jt|d udd t || W d    d S 1 sw   Y  d S )NF)check_stacklevel)r   maybe_produces_warningr   rx   test_fillna_series_method)r{   r[   fillna_methodr|   r$   r%   r    s
   
"z)TestBaseMissing.test_fillna_series_method)r~   r   r   r  r  r   r$   r$   r|   r%   r    s    r  c                   @   r   )TestBasePrintingNr   r$   r$   r$   r%   r    r   r  c                       r  )TestBaseReshaping5GH 45419: pyarrow.ChunkedArray does not support viewsFr  c                    r  r   )rx   test_transposer	  r|   r$   r%   r    r
  z TestBaseReshaping.test_transpose)r~   r   r   ru   rv   rw   r  r   r$   r$   r|   r%   r    r  r  c                       r  )TestBaseSetitemr  Fr  c                    r  r   )rx   test_setitem_preserves_viewsr	  r|   r$   r%   r    r
  z,TestBaseSetitem.test_setitem_preserves_views)r~   r   r   ru   rv   rw   r  r   r$   r$   r|   r%   r    r  r  c                   @   r   )TestBaseParsingenginer]   pythonc           	      C   s(  |j j}tj|r|jtjj	t
dd n@tj|r.|jtjj	td| dd n)tj|rF|jdv rF|jtjj	tdd ntj|rW|jtjj	dd td	tj|t|j d
i}|jdtjd}tj|ryt|}nt|}tj|d	t|j i|d}|}| || d S )NzGH 47534r   zParameterized types z not supported.)usr   z1https://github.com/pandas-dev/pandas/issues/49767z)CSV parsers don't correctly handle binaryrq   
with_dtyperE   F)indexna_rep)r&   r  )r&   r!   rF   rG   rH   rs   rt   ru   rv   rw   r   rL   rS   rN   r   r   rR   rT   r   r   strto_csvnpnanr   r   read_csvassert_frame_equal)	r{   r  rW   r#   rV   r   
csv_outputr   r   r$   r$   r%   test_EA_types  sB   

zTestBaseParsing.test_EA_typesN)r~   r   r   ru   rv   r   r,  r$   r$   r$   r%   r    r   r  c                       ro   )TestBaseUnaryOpsc                    sD   |j j}tj|s|jtjj	tj
d| d t | d S )Nz$pyarrow.compute.invert does support r   )r&   r!   rF   rG   rH   rs   rt   ru   rv   rw   r   rx   test_invertrz   r|   r$   r%   r.    s   zTestBaseUnaryOps.test_invert)r~   r   r   r.  r   r$   r$   r|   r%   r-    r   r-  c                       s   e Zd Zejdddg fddZdd Zdd	 Z 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 fddZdZ fddZ fddZdd  Z  ZS )!TestBaseMethodsperiodsr,   r-   c              	      sV   |j j}tj|r"|dkr"|jtjj	tj
d| d| dd t || d S )Nr,   z
diff with z and periods=z will overflowr   )r&   r!   rF   rG   rK   rs   rt   ru   rv   rw   r   rx   	test_diff)r{   rW   r0  r#   rV   r|   r$   r%   r1    s   zTestBaseMethods.test_diffc                 C   s.   |d d }|  }|jtt ksJ d S )Nr8   )value_countsr&   r   rF   int64r   r$   r$   r%   'test_value_counts_returns_pyarrow_int64  s   z7TestBaseMethods.test_value_counts_returns_pyarrow_int64c                 C   s   |d d   }t||   }tj||jd}|jdd }tjdt	| gt	| |j
dd}|d}| || d S )	Nr8   rE   T)	normalizer,   
proportion)r#  r   zdouble[pyarrow])uniquer'  rU   r  rT   r   r&   r2  
sort_indexlenr#  r   r   )r{   rW   r#   valuesr   r   r   r$   r$   r%    test_value_counts_with_normalize#  s   
z0TestBaseMethods.test_value_counts_with_normalizec                    sv   |j j}tj|r|jtjj	| dd ntj
|r1tr1|jtjj	d| tjd t ||| d S )Nr   rq   No pyarrow kernel for r   )r&   r!   rF   rG   rH   rs   rt   ru   rv   rw   rL   r   r   rx   test_argmin_argmax)r{   rf   rh   rn   r#   rV   r|   r$   r%   r=  1  s   z"TestBaseMethods.test_argmin_argmaxzop_name, skipna, expected)idxmaxTr   )idxminTr0   )argmaxTr   )argminTr0   r>  Fr?  )r@  Fr.   )rA  Fr.   c                    sR   |j j}tj|rtr|r|jtj	j
d| tjd t |||| d S )Nr<  r   )r&   r!   rF   rG   rL   r   rs   rt   ru   rv   rw   r   rx   test_argreduce_series)r{   rh   r   r   r   r#   rV   r|   r$   r%   rB  D  s   z%TestBaseMethods.test_argreduce_seriesc                    r   r   )r&   r!   rF   rG   rH   rs   rt   ru   rv   rw   rx   test_factorizer   r|   r$   r%   rC  `  r   zTestBaseMethods.test_factorizezbool[pyarrow]c           	         s   t |djj}tj|r)tjjt	| d| d}|j
| t | d S tj|r_|d\}}t|}t|}tt	 ||dd  W d    d S 1 sXw   Y  d S t | d S )Nr,   z cannot be added to r   r0   c                 S   s   | | S r   r$   )x1x2r$   r$   r%   <lambda>~  s    z2TestBaseMethods.test_combine_add.<locals>.<lambda>)nextr&   r!   rF   rG   rO   ru   rv   rw   r   rs   rt   rx   test_combine_addr   rT   r   r   combine)	r{   data_repeatedr#   rV   rv   
orig_data1
orig_data2s1s2r|   r$   r%   rH  l  s    

"z TestBaseMethods.test_combine_addc                    sB   |j j}tj|r|jtjj	| dd t
 || d S r   )r&   r!   rF   rG   rH   rs   rt   ru   rv   rw   rx   test_searchsorted)r{   rf   	as_seriesr#   rV   r|   r$   r%   rO    s   z!TestBaseMethods.test_searchsortedc                 C   s   t |t |sJ d S r   )rT   r   r   r	  r$   r$   r%   test_basic_equals  s   z!TestBaseMethods.test_basic_equals)r~   r   r   ru   rv   r   r1  r4  r;  r=  r'  r(  rB  rC  _combine_le_expected_dtyperH  rO  rQ  r   r$   r$   r|   r%   r/    s0    



r/  c                       st   e Zd ZeZedd Zdd Zdd Zdd Z	d	d
 Z
dd Z fddZ fddZdd Z fddZ  ZS )TestBaseArithmeticOpsc                 K   s   t |tjr|jd d df jj}|jd d df jj}n|jj}|jj}tj|s1tj|r;|	d}|	d}t
j||fi | d S )Nr   zfloat[pyarrow])r   rT   r   ilocr&   r!   rF   rG   rL   r   r   assert_equal)clsleftrightkwargsleft_pa_typeright_pa_typer$   r$   r%   rU    s   

z"TestBaseArithmeticOps.assert_equalc                 C   s4   | d}|dkrdd S |dkrdd S t|S )N_rtruedivc                 S      t || S r   )r'  dividexyr$   r$   r%   rF        z8TestBaseArithmeticOps.get_op_from_name.<locals>.<lambda>	rfloordivc                 S   r^  r   )r'  floor_divider`  r$   r$   r%   rF    rc  )stripr   get_op_from_name)r{   r   short_opnamer$   r$   r%   rg    s   

z&TestBaseArithmeticOps.get_op_from_namec                 C   s   t j| |||}d}t|tjr'd}|jd d df }|jd d df j}n|}|j}t	|j
}tj|jrU|jj}	t|ttfv rK|	dv rKd}	|d|	 d}n||j}t|j
|}
|rptj|
|j|jd}|S t|
}|S )	NFTr   )smsr!  z	duration[])r#  r   )r   BaseArithmeticOpsTests_combiner   rT   r   rT  r&   rF   rU   _valuesrG   rO   rY   r!   r   r   r   r   r#  r   r   )r{   objotheropr   	was_frameexpected_dataoriginal_dtypepa_expectedr   pd_expectedr$   r$   r%   _patch_combine  s.   

z$TestBaseArithmeticOps._patch_combinec                 C   s.   t  o|dv rtj|p|dv otj|S )N__add____radd____sub____rsub__)r   rF   rG   rO   r   )r{   r   rV   r$   r$   r%   _is_temporal_supported  s   

z,TestBaseArithmeticOps._is_temporal_supportedc                 C   s   |  ||}|dv rt}|S |rd }|S |dv r(tj|s$tj|r(d }|S tj|s?tj|s?tj|s?tj	}|S d }|S )N>   __mod____rmod__rx  )
r~  rS   rF   rG   rQ   rR   rI   rj   rL   r   )r{   r   rV   arrow_temporal_supportedexcr$   r$   r%   _get_scalar_exception  s0   

	


z+TestBaseArithmeticOps._get_scalar_exceptionc                 C   s  d }|  ||}|dkr,tj|stj|stj|r,ts,tjj	d| d}|S |r>tjj	t
| d| dd}|S |dkr[tj|sNtj|r[ts[tjj	tjdd}|S |d	krrtj|rrtsrtjj	tjdd}|S |d
krtj|rtrtjj	tjdd}|S )N__rpow__z<GH#29997: 1**pandas.NA == 1 while 1**pyarrow.NA == NULL for rq   z  not supported betweenpd.NA and z Python scalarr   __rfloordiv__zdivide by 0__rtruediv____pow__z'Invalid decimal function: power_checked)r~  rF   rG   rI   rj   rL   r   ru   rv   rw   r   r   )r{   r   rV   rv   r  r$   r$   r%   _get_arith_xfail_marker  sr   


*#



z-TestBaseArithmeticOps._get_arith_xfail_markerc                       |j j}|dkrtj|stj|rtd | ||| _	| 
||}|d ur0|j| |dkr:tj|sFtj|sFtj|rN|td| j t || d S Nr  z%Skip testing Python string formatting__floordiv__rm  )r&   r!   rF   rG   rQ   rR   ru   r   r  series_scalar_excr  rs   rt   rj   rO   rN   setattrrS  rw  rx   test_arith_series_with_scalarr{   rW   all_arithmetic_operatorsr#   monkeypatchrV   rv   r|   r$   r%   r  -  ,   





z3TestBaseArithmeticOps.test_arith_series_with_scalarc                    r  r  )r&   r!   rF   rG   rQ   rR   ru   r   r  frame_scalar_excr  rs   rt   rj   rO   rN   r  rS  rw  rx   test_arith_frame_with_scalarr  r|   r$   r%   r  L  r  z2TestBaseArithmeticOps.test_arith_frame_with_scalarc           
      C   s  |j j}| ||| _|dv r'tj|r'ts'|j	t
jjtjd| d | ||}|d ur7|j	| |}t|}ttj|jd gt| |j d}	tj|smtj|ra|dvsmtj|smtj|ru|td| j | j|||	| jd d S )	Nr{  zJImplemented pyarrow.compute.subtract_checked which raises on overflow for r   r   rE   )__truediv__r  rm  )r  )r&   r!   r  series_array_excrF   rG   rK   r   rs   rt   ru   rv   rw   r   r  rT   r   rU   rT  r9  rI   rj   rO   rN   r  rS  rw  check_opname)
r{   rW   r  r#   r  rV   rv   r   r   rp  r$   r$   r%   test_arith_series_with_arrayk  sH   


&



z2TestBaseArithmeticOps.test_arith_series_with_arrayc                    s   |j j}tj|r:tj|s:t|}trd}nd}t	j
t|d ||  W d    d S 1 s3w   Y  d S trBtj|sHtj|rX|jt	jjtd| d n|drm|jt	jjtjd| d t | d S )Nz7Function add_checked has no kernel matching input typesz9Function 'add_checked' has no kernel matching input typesr   z add_checked not implemented for r   int8zraises on overflow for )r&   r!   rF   rG   r   rO   rT   r   r   ru   r   rS   r   rH   rs   rt   rv   rw   r   r   rx   $test_add_series_with_extension_array)r{   rW   r#   rV   r   r   r|   r$   r%   r    s:   




z:TestBaseArithmeticOps.test_add_series_with_extension_array)r~   r   r   rS   
divmod_excclassmethodrU  rg  rw  r~  r  r  r  r  r  r  r   r$   r$   r|   r%   rS    s    

&:2rS  c                   @   s   e Zd Zdd Zdd ZdS )TestBaseComparisonOpsc              
   C   s0  t |}t t j|jd gt| |jd}|jdv rH|||}|d |u s*J |d |u s2J |||}||d< ||d< | || d S d }	z|||}W n t	ye }
 z|
}	W Y d }
~
nd }
~
ww |	d u rx|||}| || d S t
t|	 ||| W d    d S 1 sw   Y  d S )Nr   rE   )eqne   a   )rT   r   rU   rT  r9  r&   r~   rI  r   	Exceptionru   r   rY   )r{   rW   comparison_oprn   r#   r   rp  r   r   r  errr$   r$   r%   test_compare_array  s.   
&

"z(TestBaseComparisonOps.test_compare_arrayc                 C   s@   t jtdd ||t  W d    d S 1 sw   Y  d S )Nz'.* not implemented for <class 'object'>r   )ru   r   rS   object)r{   rW   r  r$   r$   r%   test_invalid_other_comp  s
   "z-TestBaseComparisonOps.test_invalid_other_compN)r~   r   r   r  r  r$   r$   r$   r%   r    s     r  c                   @   s>  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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   Fboolean[pyarrow]rE   TFN)	TTTTFNTNNrT   r   r   r   r{   r:   r;   r   r   r$   r$   r%   test_kleene_or  "   (&zTestLogicalOps.test_kleene_orzother, expectedN)TNNT)TTTFr  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 Nr  r  rE   r  r{   rp  r   r:   r   r$   r$   r%   test_kleene_or_scalar     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  rE   r  )	TFNFFFNFNr  r  r$   r$   r%   test_kleene_and  r  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 r  r  r  r$   r$   r%   test_kleene_and_scalar4  r  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  rE   r  )	FTNTFNNNNr  r  r$   r$   r%   test_kleene_xorM  r  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 r  r  r  r$   r$   r%   test_kleene_xor_scalarc  s   z%TestLogicalOps.test_kleene_xor_scalar)r~   r   r   __doc__r  ru   rv   r   rT   rm   r'  bool_r  r  r  r  r  r$   r$   r$   r%   r    sJ    










r  c                  C   s   t jtdd td W d    n1 sw   Y  td} ttdd}| |ks/J t jtdd td W d    d S 1 sGw   Y  d S )NzPassing pyarrow typer   z#not_a_real_dype[s, tz=UTC][pyarrow]ztimestamp[s, tz=UTC][pyarrow]ri  UTCzdecimal(7, 2)[pyarrow])ru   r   rS   r   r   rF   	timestamp)r&   r   r$   r$   r%   Ftest_arrowdtype_construct_from_string_type_with_unsupported_parameters|  s   
"r  c                  C   sN   d} d}t jt|d tjtd| d W d    d S 1 s w   Y  d S )Nzint64[pyarrow]foobar[pyarrow]zYPassing pyarrow type specific parameters \(\[pyarrow\]\) in the string is not supported\.r   r   rE   )ru   r   rS   rT   r   range)invalidr   r$   r$   r%   ;test_arrowdtype_construct_from_string_type_only_one_pyarrow  s   "r  interpolation)linearlowerhighernearestmidpointquantiler+   c                 C   sR  | j j}| g d} t| }tj|s"tj|s"tj	|rKt
r'd}nd}tjtj|d |j||d W d    d S 1 sDw   Y  d S tj|s_tj|s_tj|r`t
s`ntj| jjrin|jtjjtjd| d | g d} t| }|j||d}tj|r|dvr|jrd	|j d
|j d}nd	|j d}||}	|	j||d}
|dkr|jdkr|
jdd}
||
ksJ d S |jdkr|
jd}
t !||
| j  d S |dkr|| d ksJ d S t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 \(.*\)z=Function 'quantile' has no kernel matching input types \(.*\)r   )qr  z&quantile not supported by pyarrow for r   )r  r  zM8[z, rk  r+   r!  F)warnr   )r#  float64[pyarrow])"r&   r!   takerT   r   rF   rG   rQ   rR   rH   r   ru   r   r   r  rj   rI   rL   r   r   rY   rs   rt   rv   rw   rN   r   r   r   to_pydatetimedtfloorr   r   )rW   r  r  r#   rV   r   r   r   pd_dtypeser_npr   r$   r$   r%   test_quantile  s   
















r  ztake_idx, exp_idx)r   r   r0   r0   r'   r'   r'   )r   r   r   r0   r'   r'   
multi_modesingle_mode)r    c                 C   s@   |  |}t|}|jdd}t|  |}t|| d S )NTdropna)r  rT   r   moder   r   )rb   take_idxexp_idxrW   r   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   rE   Fr  )rT   r   r&   r  r   r   )rW   	more_nansr   r   r$   r$   r%   test_mode_dropna_false_mode_na  s   r  zarrow_dtype, expected_type   c                 C   s   t | j|ks	J d S r   )r   rY   )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| sJ tt	t
| }||  }|t|  }t|| d S )N)TFT)r   rF   rU   r   rT   corecommonis_bool_indexerr   r  r9  r'  asarrayr   r   )rW   ri  r   r   r$   r$   r%   test_is_bool_dtype  s   r  c                 C   sL   | j j}tj|stj|stj|rt| sJ d S t| r$J d S r   )r&   r!   rF   rG   rI   rj   rL   r   rW   r   r$   r$   r%   test_is_numeric_dtype  s   


r  c                 C   4   | j j}tj|rt| sJ d S t| rJ d S r   )r&   r!   rF   rG   rj   r   r  r$   r$   r%   test_is_integer_dtype(     r  c                 C   r  r   )r&   r!   rF   rG   rj   r   r  r$   r$   r%   test_is_any_integer_dtype1  r  r  c                 C   r  r   )r&   r!   rF   rG   rJ   r   r  r$   r$   r%   test_is_signed_integer_dtype:     r  c                 C   r  r   )r&   r!   rF   rG   rK   r   r  r$   r$   r%   test_is_unsigned_integer_dtypeB  r  r  c                 C   r  r   )r&   r!   rF   rG   rI   r   r  r$   r$   r%   test_is_float_dtypeJ  r  r  c                 C   sl   t | }|d}t|}t|}t|t|ksJ t|}t|| t|}t|| d S )Nr0   )	rT   r   headpickledumpsr9  loadsr   r   )rW   r   expected_slicedfull_pickledsliced_pickledr   result_slicedr$   r$   r%   test_pickle_roundtripR  s   





r  c                 C   sH   | j  j}|| j}t|jtrJ t|jtsJ t||  d S r   )	r   	to_pandasrU   r   r&   r   r   r   r   )rW   pd_arrayr   r$   r$   r%   test_astype_from_non_pyarrowb  s
   r  c                  C   s6   t dg} | d}t jdgdd}t|| d S )Nz1.0r  r)   rE   )rT   r   r   r   r   r   r   r   r$   r$   r%   &test_astype_float_from_non_pyarrow_strk  s   
r  c                 C   st   |   }| jj}tj|stj|rtt	| }nt| j}| j
r2|t}tj|t| < t|| d S r   )to_numpyr   rY   rF   rG   rO   rN   r'  rU   list_hasnar   r  rT   rm   r  r   assert_numpy_array_equal)rW   r   r   r   r$   r$   r%   test_to_numpy_with_defaultss  s   
r  c                  C   sT   dd g} t j| dd}| }tjdt jgtd}t|d ts"J t	|| d S )Nr,   r   rE   r   )
rT   rU   r  r'  rm   r  r   intr   r   )rW   arrr   r   r$   r$   r%   test_to_numpy_int_with_na  s   r  c                 C   s   |   }|  }| d |d d < ttj| d gt|  | jjd}t|| |  }| d d d |d d < | d d d }t|| |  }| 	 |d d < | }t|| d S )Nr   rY   r.   )
copyr   rF   rU   r9  r   rY   r   r   tolist)rW   origr   r   r$   r$   r%   test_setitem_null_slice  s   r	  c                 C   s   | j j}tj|stj|rd}t}d}n tj|s)tj|s)tj	|r1d}tj
}d}nd}t}d}tj||d || d d < W d    d S 1 sPw   Y  d S )N{   zInvalid value '123' for dtypefoozCould not convertzInvalid value 'foo' for dtyper   )r   rY   rF   rG   rQ   rR   r   rj   rI   rH   r   ru   r   )rW   r   
fill_valuer  r   r$   r$   r%   test_setitem_invalid_dtype  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  r*   gGz?g{Gz@rE   r,   g333333?g@g^@gp=
cL@r.   g      ^@g      N@)rT   r   rm   roundr   r   )r&   r   r   r   r$   r$   r%   
test_round  s   

r  c                 C   sr   | \}}}|  g d}tj|d< |rt|}d}tjt|d || W d    d S 1 s2w   Y  d S )N)r0   r   r,   r.   zOsearchsorted requires array to be sorted, which is impossible with NAs present.r   )r  rT   rm   r   ru   r   r   searchsorted)rf   rP  r;   r]   r:   r  r   r$   r$   r%    test_searchsorted_with_na_raises  s   


"r  patabcz	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  rE   r,   )
rT   r   r   rF   r   r%  r   int32r   r   )r  r   r   r   r$   r$   r%   test_str_count     r  c                  C   s^   t jdd gtt d} tjtdd | jj	ddd W d    d S 1 s(w   Y  d S )Nr  rE   z	count notr   r,   flags)
rT   r   r   rF   r   ru   r   rS   r%  r   r   r$   r$   r%    test_str_count_flags_unsupported     "r  zside, str_funcrW  rjustrX  ljust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 )Nr:   rE   r   ra  )widthsidefillchar)
rT   r   r   rF   r   r%  padr   r   r   )r!  str_funcr   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    d S 1 s(w   Y  d S )Nr:   rE   zInvalid side: foor   r   r  ra  )
rT   r   r   rF   r   ru   r   r   r%  r#  r  r$   r$   r%   test_str_pad_invalid_side  r  r&  zpat, case, na, regex, expabFT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  rE   )casenaregex)
rT   r   r   rF   r   r%  containsr  r   r   )r  r)  r*  r+  expr   r   r   r$   r$   r%   test_str_contains  s   r.  c                  C   ^   t jdd gtt d} tjtdd | jj	ddd W d    d S 1 s(w   Y  d S )Nr  rE   zcontains notr   r:   r,   r  )
rT   r   r   rF   r   ru   r   rS   r%  r,  r  r$   r$   r%   #test_str_contains_flags_unsupported  r  r0  zside, pat, na, exp
startswithr;   endswithbcc                 C   sT   t jdd gtt d}t|j| ||d}t j|tt d}t	|| d S )Nr  rE   )r*  
rT   r   r   rF   r   r   r%  r  r   r   )r!  r  r*  r-  r   r   r   r$   r$   r%   test_str_start_ends_with  s   
r5  zarg_name, argreplr)  r  r,   c                 C   st   t jdd gtt d}dddd}||| < tjtdd |jj	d	i | W d    d S 1 s3w   Y  d S )
Nr  rE   r;   ra  T)r  r6  r+  zreplace is not supportedr   r$   )
rT   r   r   rF   r   ru   r   rS   r%  replace)arg_nameargr   rY  r$   r$   r%   test_str_replace_unsupported!  s   "r:  zpat, repl, n, regex, expr:   ra  r.   xbxcxbacz[a-b]xxxcc                 C   sT   t jdd gtt d}|jj| |||d}t j|tt d}t|| d S )NabacrE   )nr+  )	rT   r   r   rF   r   r%  r7  r   r   )r  r6  r?  r+  r-  r   r   r   r$   r$   r%   test_str_replace-  s   	r@  c                  C   s^   t jdd gtt d} tjtdd | j	ddg W d    d S 1 s(w   Y  d S )Nr  rE   zrepeat is notr   r,   r0   )
rT   r   r   rF   r   ru   r   rS   r%  repeatr  r$   r$   r%   test_str_repeat_unsupported<  r  rB  zUnsupported for pyarrow < 7r   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  rE   r0   abcabc)	rT   r   r   rF   r   r%  rA  r   r   r  r$   r$   r%   test_str_repeatB  s   rD  zpat, case, na, expc                 C   R   t jdd gtt d}|jj| ||d}t j|tt d}t	|| d S Nr  rE   )r)  r*  
rT   r   r   rF   r   r%  r   r  r   r   r  r)  r*  r-  r   r   r   r$   r$   r%   test_str_matchN     rI  Abcc                 C   rE  rF  rG  rH  r$   r$   r%   test_str_fullmatch`  rJ  rL  zsub, start, end, exp, exp_typr   r0   c                 C   sN   t jdd gtt d}|jj| ||d}t j|t|d}t|| d S )Nr  rE   )startend)	rT   r   r   rF   r   r%  findr   r   )subrM  rN  r-  exp_typr   r   r   r$   r$   r%   test_str_findr  s   rR  c                  C   r/  )Nr  rE   zfind not implementedr   r'  r,   )rM  )
rT   r   r   rF   r   ru   r   rS   r%  rO  r  r$   r$   r%   test_str_find_notimplemented}  r  rS  zi, exp)r;   eN)r]   rT  N)r]   NN)r:   NNr  c                 C   sL   t jg dtt d}|j| }t j|tt d}t|| d S )N)r  deNrE   )	rT   r   r   rF   r   r%  getr   r   )ir-  r   r   r   r$   r$   r%   test_str_get  s   rY  z=TODO: StringMethods._validate should support Arrow list typesc                  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=3NrE   )rT   r   r   rF   rU   r  r%  joinr   r   r   r   r  r$   r$   r%   test_str_join  s   "r]  zstart, stop, step, expc                 C   P   t jdd gtt d}|j| ||}t j|tt d}t|| d S NabcdrE   )	rT   r   r   rF   r   r%  slicer   r   )rM  stopstepr-  r   r   r   r$   r$   r%   test_str_slice     	rd  zstart, stop, repl, expaxcdxcdcdc                 C   r^  r_  )	rT   r   r   rF   r   r%  slice_replacer   r   )rM  rb  r6  r-  r   r   r   r$   r$   r%   test_str_slice_replace  re  rj  zvalue, method, exp)a1cisalnumT)z!|,rl  F)aaaisalphaT)z!!!rn  F)u   ٠	isdecimalT)z~!ro  F)r<   isdigitT)~rp  F)rm  islowerT)aaArr  F)rZ  	isnumericT)11Irt  F) isspaceT) rw  F)zThe ThatistitleT)zthe Thatry  F)AAAisupperT)AAcr{  Fc                 C   sR   t j| d gtt d}t|j| }t j|d gtt d}t	|| d S )NrE   r4  )valuer  r-  r   r   r   r$   r$   r%   test_str_is_functions  s   r~  zmethod, exp
capitalizezAbc deftitlezAbc DefswapcasezAbC Defr  zabc defupperzABC DEFc                 C   sR   t jdd gtt d}t|j|  }t j|d gtt d}t|| d S )NzaBc dEFrE   	rT   r   r   rF   r   r   r%  r   r   )r  r-  r   r   r   r$   r$   r%   test_str_transform_functions  s   r  c                  C   sN   t jdd gtt d} | j }t jdd gtt d}t	|| d S )Nr`  rE   r'   )
rT   r   r   rF   r   r%  r9  r  r   r   r  r$   r$   r%   test_str_len  s   
r  zmethod, to_strip, val)rf  Nz abc )rf  ra  xabcx)lstripNz abc)r  ra  xabc)rstripNzabc )r  ra  abcxc                 C   sV   t j|d gtt d}t|j| |d}t jdd gtt d}t|| d S )NrE   )to_stripr  r  )r  r  valr   r   r   r$   r$   r%   test_str_strip  s   r  r  abc123c                 C   sP   t j| d gtt d}|jd}t jdd gtt d}t|| d S )NrE   rZ  r  )	rT   r   r   rF   r   r%  removesuffixr   r   )r  r   r   r   r$   r$   r%   test_str_removesuffix  r  r  zmethod, args	partition)r  F
rpartitionremoveprefix)r  casefoldr$   encodeextract)z[ab](\d)findallget_dummiesr#  rindexr5  rfindsplitrsplit	translatewrapc                 C   sf   t jdd gtt d}tjtd|  dd t|j	| |  W d    d S 1 s,w   Y  d S )Nr  rE   zstr.z! not supported with pd.ArrowDtyper   )
rT   r   r   rF   r   ru   r   rS   r   r%  )r  argsr   r$   r$   r%   test_str_unsupported_methods  s   "r  r   )r   r!  rj  ri  c                 C   sF   ddg}t | }tj||d}tt jdd g|d}t|| d S )N1000NaTrE   i  r  )rF   durationr   r   rU   r   r   )r   stringsr   r   r   r$   r$   r%   #test_duration_from_strings_with_nat*  s
   
r  c                 C   sX   | j j}tj|s*tjtdd t	| j
 W d    d S 1 s#w   Y  d S d S )Nz2Can only use .dt accessor with datetimelike valuesr   )r&   r!   rF   rG   r   ru   r   AttributeErrorrT   r   r  rk   r$   r$   r%   test_unsupported_dt4  s   "r  zprop, expectedyear  dayday_of_week	dayofweekweekdayday_of_year	dayofyearhourminuteis_leap_yearz.is_leap_year not implemented for pyarrow < 8.0r   )marksmicrosecondr9   month
nanosecond   quartersecondrd   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	r+t
 }n
t|tr5td
}t ttj|d g|d}t|| d S )Nr  r,   r0   r   r'   rd   r9   r  )r  r  r  r  r  r  r  r  r   rE   r  )rT   r   	Timestampr   rF   r  r   r  r   r   date32r   time64r   rU   r   r   )propr   r   r   exp_typer$   r$   r%   test_dt_properties=  s.   




r  r!  r   c                 C   sh   t jtdddddd gtt| d}|jj}t ttj	tddd gt
| d}t|| d S )	Nr  r,   r0   r   r  r  r  r  rE   r   r  )rT   r   r   r   rF   r  r  r   r   rU   r  r   r   r   r   r   r   r$   r$   r%   test_dt_time_preserve_unitv  s    r  r   )Nr  
US/Pacificc                 C   sD   t jtdddddd gttjd| dd}|jj}|| ks J d S )	Nr  r,   r0   r   r  r   r   rE   )rT   r   r   r   rF   r  r  r   )r   r   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  r,   r0   r   r  r   rE   )r  r,   r,   r  )r  weekr  r   )r   r&   )rT   r   r   r   rF   r  r  isocalendarr   r   r*  r  r$   r$   r%   test_dt_isocalendar  s   
r  c                 C   s   t  rt r| jtjjtjdd 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   r   r  r,   r0   r   r  r   rE   z%Y-%m-%dT%H:%M:%Sz2023-01-02T03:00:00.000000000)r   r
   rs   rt   ru   rv   rw   rF   r   rT   r   r   r   r  r  strftimer   r   r   )r#   r   r   r   r$   r$   r%   test_dt_strftime  s    	r  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 s0w   Y  tjtdd	 t	|j
| d
dd W d    d S 1 sRw   Y  d S )Nr  r,   r0   r   r  r   rE   zambiguous is not supported.r   1Hr  	ambiguousznonexistent is not supported.nonexistent)rT   r   r   r   rF   r  ru   r   rS   r   r  r  r   r$   r$   r%   *test_dt_roundlike_tz_options_not_supported  s   "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.w   Y  tjtdd	 t	|j
| d  W d    d S 1 sNw   Y  d S )Nr  r,   r0   r   r  r   rE   zfreq='1B' is not supportedr   1Bz$Must specify a valid frequency: None)rT   r   r   r   rF   r  ru   r   r   r   r  r  r$   r$   r%   "test_dt_roundlike_unsupported_freq  s   "r  z'Methods not supported for pyarrow < 7.0rq   freq)DHTSLUNc                 C   sn   t tddddd g}ttd}t|j|d|  |}t||j|d|  }t	
|| d S )Nr  r,   )r  r  r  r   r1   )rT   r   r   r   rF   r  r   r  r   r   r   )r  r  r   rV   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}|j }tj	| t
d}t|| tdd |D s5J |dj }t|| d S )	Nr3   r,   r  r   rE   c                 s   s    | ]	}t |tu V  qd S r   )rY   r   ).0resr$   r$   r%   	<genexpr>  s    z(test_dt_to_pydatetime.<locals>.<genexpr>zdatetime64[ns])r   rT   r   r   rF   r  r  r  r'  rU   r  r   r   allr   )rW   r   r   r   r$   r$   r%   test_dt_to_pydatetime  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.w   Y  tjtdd	 | j	j
d
dd W d    d S 1 sNw   Y  d S )Nr  r,   r0   r   r  r   rE   z ambiguous='NaT' is not supportedr   r  r  r  z"nonexistent='NaT' is not supportedr  )rT   r   r   r   rF   r  ru   r   rS   r  tz_localizer  r$   r$   r%   *test_dt_tz_localize_unsupported_tz_options  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  r,   r0   r   r  r   r  r  rE   
rT   r   r   r   rF   r  r  r  r   r   r  r$   r$   r%   test_dt_tz_localize_none  s   r  c                 C   sn   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t| dd}t	|| d S )Nr  r,   r0   r   r  rE   r  r  r  r$   r$   r%   test_dt_tz_localize	  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  rE   r   r  )rT   r   r   rm   )r   r   r   r   r   r$   r$   r%   #test_boolean_reduce_series_all_null	  s   
r  r   zstring[pyarrow]c                 C   s>   t d }tj|| d}tjt|| d}t|| d S )Nzthe quick brown foxrE   )rF   rU   r  rT   r   r   r   r   )r&   r  r   r   r$   r$   r%   test_series_from_string_array	  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s(J d S )Nih6 rE   F)	r   rF   chunked_arrayr'  onesr  r  zerosr   )r  r  r   r$   r$   r%   /test_setitem_boolean_replace_with_mask_segfault#	  s
   r  )r  r   r   r   r   decimalr   ior   r   r  renumpyr'  ru   pandas.compatr	   r
   r   r   r   r   r   pandas.errorsr   pandas.core.dtypes.commonr   pandas.core.dtypes.dtypesr   pandasrT   pandas._testing_testingr   pandas.api.typesr   r   r   r   r   r   r   pandas.tests.extensionr   importorskiprF   pandas.core.arrays.arrow.arrayr   pandas.core.arrays.arrow.dtyper   fixtureALL_PYARROW_DTYPESr%  r&   rW   r[   r\   rb   rf   rh   rl   rn   BaseCastingTestsrp   BaseConstructorsTestsr   BaseGetitemTestsr   BaseAccumulateTestsr   BaseNumericReduceTestsr   BaseBooleanReduceTestsr   BaseGroupbyTestsr   BaseDtypeTestsr   BaseIndexTestsr  BaseInterfaceTestsr  BaseMissingTestsr  BasePrintingTestsr  BaseReshapingTestsr  BaseSetitemTestsr  BaseParsingTestsr  BaseUnaryOpsTestsr-  BaseMethodsTestsr/  rl  rS  BaseComparisonOpsTestsr  r  r  r  rv   r   r  r  r  binarybyteslarge_binarylarge_stringlist_r3  r  
large_listmap_r   dict
dictionaryr  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r%  r&  r.  r0  r5  compiler:  r@  rB  rw   rS   rD  rI  rL  r  rR  rS  rY  r  r]  rd  rj  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%   <module>   s   $	$	

;


:


	
FR\#4S'   3) L




			


	

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























		

	

	
