o
    dq                    @   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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 dd	lmZ dd
l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*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0 ej1dddZ2ddl3m4Z4 ddl5m6Z6 ej7e$j8e9ddd Z:ej7dd Z;ej7dd Z<ej7ddgddd Z=ej7dd Z>ej7dd  Z?ej7d!d" Z@ej7d#d$ ZAej7d%d& ZBG d'd( d(e0jCZDG d)d* d*e0jEZFG d+d, d,e0jGZHG d-d. d.e0jIZJG d/d0 d0e0jKZLG d1d2 d2e0jMZNG d3d4 d4e0jOZPG d5d6 d6e0jQZRG d7d8 d8e0jSZTG d9d: d:e0jUZVG d;d< d<e0jWZXG d=d> d>e0jYZZG d?d@ d@e0j[Z\G dAdB dBe0j]Z^G dCdD dDe0j_Z`G dEdF dFe0jaZbG dGdH dHe0jcZdG dIdJ dJe0jeZfG dKdL dLe0jgZhG dMdN dNZidOdP ZjdQdR ZkejlmdSg dTejlmdUdVdVdVggdWdX ZnejljmdYg dZdd[ggg d\dgggd]d^gd_d`da Zodbdc Zpejlmdde2q erge2qdeerge2s erge2t e9ge2ue2v ewge2xe2v ewge2ye2z e2v ewge2{dfe2| fdge2z fge}ge2~e2v e2v egg	dhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zejlmdej&ejfdgdd Zdd Zdd Zdd Zejljedddd Zejljedddd Zdd Zdd Zdd Zejlmdddgdd Zdd Zejlmdddgddgddggdd Zdd Zejlmdddddddggddddddggddddddggddddddggddddddgggdd Zdd Zejlmddddddggdddddggdddddggdddddgggdd Zejlmddedgde9gddgddggddÄ Zejlmdddddddggddddddggddddddgggdd̈́ Zddτ Zejljededэddӄ Zejlmddddddggdddddggdddddggdddddggdddddggdddddgggddք Zejlmddddddggdddddggdddddggdddddggdddddggdddddgggddل Zejlmddddddge2 gdddddge2v ggddބ Zdd Zejlmddg dgdg dgdg dgdg dgd[g dggdd Zejljdedэdd Zejlmddddddggdddddggdddddgggdd Zejlmddddddggdddddggdddddgggdd Zejlmdg 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jlm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jlmdg dg dg dg dg d g d!gd"d# Zejlmd$d%dgd&d' Zejlmd$d(dgd)d* Zejlmd+d,d-gejlmd.d/d0gd1d2ggd3d4 Zejlmdddgd5d6 Zejlmd7d8d9gejlmd:ddgdd[ggd;d< Zejlmd=d>d?gd@dA Zejlmd:ddgdd[ggdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZejlmdRg dSdTdU ZdVdW ZejlmdXdYdZgd[dgd\dgd]dgd^dgd_dgd`dgdadgdbd[gejÐdcdejljeedddedfdgdhgdidgdjdkgdldgdmdngdoedZdd܃gdpedd[dndhggdqdr ZejlmdRdsdtgdudv Zejlmdwg dxdydz ZƐd{d| Zǐd}d~ Zejlmd7g ddd Zejlmd7g ddd Zejljeddejlmdg dejlmd7g ddd Zːdd Zejlmdddgdd Z͐dd Zΐdd ZejlmdRdsdtgdd ZejlmddedZdېddېdgde!ѐdggdd Zejlmdddgdd Zejlmdddgdd ZԐdd Zejlmdddge2s fddge2t fgdd Zejlmde$je$j dd Zejlmde$jڡdd Zejlmde$jܡdd Zejljede2jdэdd ZdS (  ag  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.
The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).
Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.
    )datedatetimetime	timedelta)Decimal)BytesIOStringION)lib)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)
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pyarrowz7.0.0)
minversion)ArrowExtensionArray)
ArrowDtype)paramsidsc                 C   s   t | jdS )N)pyarrow_dtype)r    param)request r&   f/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/extension/test_arrow.pydtypeC   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'   rY   H   s   0000*..rY   c                 C   s   t | jd| d g| jdS )zLength-2 array with [NA, Valid]Nr   rG   type_from_sequencer(   )rY   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.
    rY   r]   N)r$   )r%   rY   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?r0   r   r.   r:   r6   r7   r8   i  r5   r9   r)   r<   r=   crA   rB      cz-1.1r4   z1.1NrG   )r#   rH   rI   rJ   rK   rL   rM   rO   r   rP   r   rQ   r   rR   r   rS   rT   rN   r   rU   rV   rW   )r(   rX   ABCr&   r&   r'   data_for_grouping   s^   	


rd   c                 C   &   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      r)   rG   rZ   rd   r&   r&   r'   data_for_sorting      rh   c                 C   re   )z{
    Length-3 array with a known sort order.

    This should be three items [B, NA, A] with
    A < B and NA missing.
    r   r2   r)   rG   rZ   rg   r&   r&   r'   data_missing_for_sorting   ri   rj   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.r2   d   rG   )r(   r#   rH   rI   
is_integerrK   rV   rW   rY   rX   r&   r&   r'   data_for_twos   s   rn   c                   C   s   t jS )z6The scalar missing value for this type. Default 'None')rV   NAr&   r&   r&   r'   na_value   s   rp   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#   rH   rI   rT   node
add_markerpytestmarkxfailsupertest_astype_strselfrY   r%   rX   	__class__r&   r'   r{      s   
zTestBaseCasting.test_astype_str)__name__
__module____qualname__r{   __classcell__r&   r&   r~   r'   rr          rr   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 rs   )r(   r#   rH   rI   rS   rN   ru   rv   rw   rx   ry   rz   test_from_dtype)r}   rY   r%   rX   rt   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)	r[   r\   _datatmassert_extension_array_equal
isinstancerH   ChunkedArraycombine_chunksr}   rY   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-1rG   )rw   raisesrU   r   _from_sequence_of_stringsrH   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.rs   z pyarrow doesn't support parsing r   rt   _TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.rG   )r(   r#   rH   rI   	is_time64equalsr
   ru   rv   rw   rx   ry   r   rQ   rN   ArrowNotImplementedErrorrP   tzr   r   ArrowInvalidr   caststringr[   r   r   r   r   )r}   rY   r%   rX   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   O      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_accumulateT  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#   rH   rI   rl   rK   rQ   r   rw   skiprV   Seriesr   rU   r   )r}   rY   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rt   r   z not implemented for )r(   r#   rV   r   rH   rI   rS   rT   is_temporalrQ   rw   r   r   configoption	skip_slowru   rv   rx   ry   rU   rJ   rN   r   )	r}   rY   r   r   r%   r   r   r   do_skipr&   r&   r'   test_accumulate_seriest  sP   




z.TestBaseAccumulateTests.test_accumulate_seriesN)	r   r   r   r   rw   rx   parametrizer   r   r&   r&   r&   r'   r   S  s    
r   c                       sP   e Zd Zdd Zejdddg fddZejdg d	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   rH   rI   rJ   rw   r   rl   rK   r   r   assert_almost_equal)r}   r   r   r   rX   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#   rV   r   rH   rI   r   rQ   rS   rT   rw   r   	TypeErrorr   rx   ry   __version__ru   rv   r   rN   r   rJ   rz   test_reduce_series)r}   rY   all_numeric_reductionsr   r%   rX   opnamer   should_workmsg
xfail_markr~   r&   r'   r     sZ   




z(TestBaseNumericReduce.test_reduce_seriestyp)int64uint64float64c                 C   s,   t jddg| dd }|dksJ d S )Nr.   r2   	[pyarrow]rG         ?)rV   r   r   )r}   r   r   r&   r&   r'   test_median_not_approximate   s   z1TestBaseNumericReduce.test_median_not_approximate)
r   r   r   r   rw   rx   r   r   r   r   r&   r&   r~   r'   r     s    Fr   c                   @   s&   e Zd Zejdddgdd ZdS )TestBaseBooleanReducer   TFc                 C   s   |j j}tjjt| dtj d| d}tj	|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#   rw   rx   ry   r   rH   r   rI   rS   rT   ru   rv   rV   r   r   rQ   r   r   )r}   rY   all_boolean_reductionsr   rp   r%   rX   r   r   r   r   r&   r&   r'   r     s,   

z(TestBaseBooleanReduce.test_reduce_seriesN)r   r   r   rw   rx   r   r   r&   r&   r&   r'   r     s    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 valuesrs   )r(   r#   rH   rI   rJ   ru   rv   rw   rx   ry   rz   test_groupby_extension_no_sortr}   rd   r%   rX   r~   r&   r'   r   +     z.TestBaseGroupby.test_groupby_extension_no_sortc                    r   r   )r(   r#   rH   rI   rJ   ru   rv   rw   rx   ry   rz    test_groupby_extension_transformr   r~   r&   r'   r   5  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#   rH   rI   rJ   ru   rv   rw   rx   ry   
ValueErrorrz   test_groupby_extension_agg)r}   r   rd   r%   rX   r~   r&   r'   r   ?  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.   r2   r2      r   r.   r)   )r.   r.   r.   r.   r.   r.   r.   r.   )ra   rb   rc   rc   zdoes not supportr   ra   T)numeric_only)r   r(   rV   	DataFrameIndexrw   r   r   groupbyr   columnsr   assert_index_equalrz   test_in_numeric_groupby)r}   rd   dfr   r   r~   r&   r'   r   K  s   
z'TestBaseGroupby.test_in_numeric_groupby)r   r   r   r   r   rw   rx   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#   rH   rI   rN   r   ru   rv   rw   rx   ry   r   rz   test_check_dtyper|   r~   r&   r'   r   _  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#   rH   rI   rN   ru   rv   rw   rx   ry   rU   rS   r   r   construct_from_stringnamerz   #test_construct_from_string_own_name)r}   r(   r%   rX   r   r~   r&   r'   r   j  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#   rH   rI   rS   r[   is_dtyper   rN   ru   rv   rw   rx   ry   rU   rz   test_is_dtype_from_namer}   r(   r%   rX   r~   r&   r'   r  ~  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)rw   r   r   r[   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_typers   )r#   rH   rI   rO   rR   rP   unitr   rQ   rT   rN   ru   rv   rw   rx   ry   rz   test_get_common_dtyper  r~   r&   r'   r    s2   





	z#TestBaseDtype.test_get_common_dtypec                    s2   |j }tj|rt|sJ d S t | d S r   )r#   rH   rI   rS   r   rz   test_is_not_string_type)r}   r(   rX   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    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rt   runc                       t  | d S r   )rz   	test_viewr}   rY   r~   r&   r'   r       zTestBaseInterface.test_view)r   r   r   rw   rx   ry   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}   rY   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   rz   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   )rz   test_transposer  r~   r&   r'   r"    r  z TestBaseReshaping.test_transpose)r   r   r   rw   rx   ry   r"  r   r&   r&   r~   r'   r     r  r   c                       r
  )TestBaseSetitemr!  Fr  c                    r  r   )rz   test_setitem_preserves_viewsr  r~   r&   r'   r$    r  z,TestBaseSetitem.test_setitem_preserves_views)r   r   r   rw   rx   ry   r$  r   r&   r&   r~   r'   r#    r  r#  c                   @   s8   e Zd Zejddegejdddgdd ZdS )	TestBaseParsingdtype_backendr   enginer_   pythonc           
      C   s:  |j j}tj|r|jtjj	t
d| dd nDtj|r3|jdv r3|jtjj	tdd n,tj|rE|jtjj	dd ntj|r_|dkr_|d	kr_|jtjj	t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}|}	| ||	 d S )NzParameterized types z not supported.r   )usr  z1https://github.com/pandas-dev/pandas/issues/49767z)CSV parsers don't correctly handle binaryrs   r   r(  z)Invalid type for timedelta scalar: NAType
with_dtyperG   F)indexna_rep)r(   r'  r&  )r(   r#   rH   rI   rN   ru   rv   rw   rx   ry   rU   rP   r  r   rT   rQ   r   rV   r   r   strto_csvnpnanr   r   read_csvassert_frame_equal)
r}   r'  rY   r&  r%   rX   r   
csv_outputr   r   r&   r&   r'   test_EA_types  sX   


zTestBaseParsing.test_EA_typesN)r   r   r   rw   rx   r   r   r4  r&   r&   r&   r'   r%    s    r%  c                       rq   )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#   rH   rI   rJ   ru   rv   rw   rx   ry   r   rz   test_invertr|   r~   r&   r'   r6    s   zTestBaseUnaryOps.test_invert)r   r   r   r6  r   r&   r&   r~   r'   r5    r   r5  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#   rH   rI   rM   ru   rv   rw   rx   ry   r   rz   	test_diff)r}   rY   r8  r%   rX   r~   r&   r'   r9  %  s   zTestBaseMethods.test_diffc                 C   s.   |d d }|  }|jtt ksJ d S )Nr:   )value_countsr(   r    rH   r   r   r&   r&   r'   'test_value_counts_returns_pyarrow_int643  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 )	Nr:   rG   T)	normalizer.   
proportion)r+  r   zdouble[pyarrow])uniquer/  rW   r  rV   r   r(   r:  
sort_indexlenr+  r   r   )r}   rY   r%   valuesr   r   r   r&   r&   r'    test_value_counts_with_normalize9  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   rs   No pyarrow kernel for r   )r(   r#   rH   rI   rJ   ru   rv   rw   rx   ry   rN   r   r   rz   test_argmin_argmax)r}   rh   rj   rp   r%   rX   r~   r&   r'   rD  G  s   z"TestBaseMethods.test_argmin_argmaxzop_name, skipna, expected)idxmaxTr   )idxminTr2   )argmaxTr   )argminTr2   rE  FrF  )rG  Fr0   )rH  Fr0   c                    sR   |j j}tj|rtr|r|jtj	j
d| tjd t |||| d S )NrC  r   )r(   r#   rH   rI   rN   r   ru   rv   rw   rx   ry   r   rz   test_argreduce_series)r}   rj   r   r   r   r%   rX   r~   r&   r'   rI  Z  s   z%TestBaseMethods.test_argreduce_seriesc                    r   r   )r(   r#   rH   rI   rJ   ru   rv   rw   rx   ry   rz   test_factorizer   r~   r&   r'   rJ  v  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   r2   c                 S   s   | | S r   r&   )x1x2r&   r&   r'   <lambda>  s    z2TestBaseMethods.test_combine_add.<locals>.<lambda>)nextr(   r#   rH   rI   rQ   rw   rx   ry   r   ru   rv   rz   test_combine_addr   rV   r   r   combine)	r}   data_repeatedr%   rX   rx   
orig_data1
orig_data2s1s2r~   r&   r'   rO    s    

"z TestBaseMethods.test_combine_addc                    sB   |j j}tj|r|jtjj	| dd t
 || d S r   )r(   r#   rH   rI   rJ   ru   rv   rw   rx   ry   rz   test_searchsorted)r}   rh   	as_seriesr%   rX   r~   r&   r'   rV    s   z!TestBaseMethods.test_searchsortedc                 C   s   t |t |sJ d S r   )rV   r   r   r  r&   r&   r'   test_basic_equals  s   z!TestBaseMethods.test_basic_equals)r   r   r   rw   rx   r   r9  r;  rB  rD  r/  r0  rI  rJ  _combine_le_expected_dtyperO  rV  rX  r   r&   r&   r~   r'   r7  $  s0    



r7  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   rV   r   ilocr(   r#   rH   rI   rN   r   r   assert_equal)clsleftrightkwargsleft_pa_typeright_pa_typer&   r&   r'   r\    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'   rM        z8TestBaseArithmeticOps.get_op_from_name.<locals>.<lambda>	rfloordivc                 S   re  r   )r/  floor_dividerg  r&   r&   r'   rM    rj  )stripr   get_op_from_name)r}   r   short_opnamer&   r&   r'   rn    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   rV   r   r[  r(   rH   rW   _valuesrI   rQ   r[   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   rH   rI   rQ   r   )r}   r   rX   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__r  )
r  rU   rH   rI   rS   rT   rK   rl   rN   r   )r}   r   rX   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 rs   z  not supported betweenpd.NA and z Python scalarr   __rfloordiv__zdivide by 0__rtruediv____pow__z'Invalid decimal function: power_checked)r  rH   rI   rK   rl   rN   r   rw   rx   ry   r   r   )r}   r   rX   rx   r  r&   r&   r'   _get_arith_xfail_marker	  sz   


	*#



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__rt  )r(   r#   rH   rI   rS   rT   rw   r   r  series_scalar_excr  ru   rv   rl   rQ   rP   setattrrZ  r~  rz   test_arith_series_with_scalarr}   rY   all_arithmetic_operatorsr%   monkeypatchrX   rx   r~   r&   r'   r  C  .   






z3TestBaseArithmeticOps.test_arith_series_with_scalarc                    r  r  )r(   r#   rH   rI   rS   rT   rw   r   r  frame_scalar_excr  ru   rv   rl   rQ   rP   r  rZ  r~  rz   test_arith_frame_with_scalarr  r~   r&   r'   r  b  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   rG   )__truediv__r  rt  )r  )r(   r#   r  series_array_excrH   rI   rM   r   ru   rv   rw   rx   ry   r   r  rV   r   rW   r[  r@  rK   rl   rQ   rP   r  rZ  r~  check_opname)
r}   rY   r  r%   r  rX   rx   r   r   rw  r&   r&   r'   test_arith_series_with_array  sL   
	

&



	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 types9Function 'add_checked' has no kernel matching input typesr   z add_checked not implemented for r   int8zraises on overflow for )r(   r#   rH   rI   r   rQ   rV   r   r   rw   r   rU   r   rJ   ru   rv   rx   ry   r   r   rz   $test_add_series_with_extension_array)r}   rY   r%   rX   r   r   r~   r&   r'   r    s:   




z:TestBaseArithmeticOps.test_add_series_with_extension_array)r   r   r   rU   
divmod_excclassmethodr\  rn  r~  r  r  r  r  r  r  r  r   r&   r&   r~   r'   rZ    s    

&:2rZ  c                   @   s6   e Zd Zdd Zdd Zejdg d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   rG   )eqne   a   )rV   r   rW   r[  r@  r(   r   rP  r   	Exceptionrw   r   r[   )
r}   rY   comparison_oprp   r   rw  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   )rw   r   rU   object)r}   rY   r  r&   r&   r'   test_invalid_other_comp  s
   "z-TestBaseComparisonOps.test_invalid_other_compmasked_dtype)booleanInt64r   c           	      C   s   g d}t j||d}t j||  dd}|||}|tjtjtjfv r+g d}ng d}t j|tt	 d}t
|| d S )N)r.   r   NrG   r   )FFN)TTN)rV   r   loweroperatorltgtr  r    rH   bool_r   r   )	r}   r  r  rY   
ser_maskedser_par   expr   r&   r&   r'   test_comp_masked_numpy  s   

z,TestBaseComparisonOps.test_comp_masked_numpyN)	r   r   r   r  r  rw   rx   r   r  r&   r&   r&   r'   r    s
     r  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   Fboolean[pyarrow]rG   TFN)	TTTTFNTNNrV   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  rG   r  r}   rw  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  rG   r  )	TFNFFFNFNr  r  r&   r&   r'   test_kleene_andB  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_scalarX  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  rG   r  )	FTNTFNNNNr  r  r&   r&   r'   test_kleene_xorq  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_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 )Nr  r  rG   r  F)rV   r   r   r    rH   r  r   r   )r}   rx  r  rY   r  r  r   r   r&   r&   r'   test_logical_masked_numpy  s   
z(TestLogicalOps.test_logical_masked_numpy)r   r   r   __doc__r  rw   rx   r   rV   ro   r/  r  r  r  r  r  r  r  r&   r&   r&   r'   r    sZ    











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]rp  UTCzdecimal(7, 2)[pyarrow])rw   r   rU   r    r   rH   	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   rG   )rw   r   rU   rV   r   range)invalidr   r&   r&   r'   ;test_arrowdtype_construct_from_string_type_only_one_pyarrow  s   "r  interpolation)linearr  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, rr  r-   r)  F)warnr   )r+  float64[pyarrow])"r(   r#   takerV   r   rH   rI   rS   rT   rJ   r   rw   r   r   r  rl   rK   rN   r   r   r[   ru   rv   rx   ry   rP   r   r  r   to_pydatetimedtfloorr   r   )rY   r  r  r%   rX   r   r   r   pd_dtypeser_npr   r&   r&   r'   test_quantile  s   
















r  ztake_idx, exp_idx)r   r   r2   r2   r)   r)   r)   )r   r   r   r2   r)   r)   
multi_modesingle_mode)r"   c                 C   s@   |  |}t|}|jdd}t|  |}t|| d S )NTdropna)r  rV   r   moder   r   )rd   take_idxexp_idxrY   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   rG   Fr  )rV   r   r(   r  r   r   )rY   	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    r[   )arrow_dtypeexpected_typer&   r&   r'   test_arrow_dtype_type2  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   rH   rW   r   rV   corecommonis_bool_indexerr   r  r@  r/  asarrayr   r   )rY   rp  r   r   r&   r&   r'   test_is_bool_dtypeF  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#   rH   rI   rK   rl   rN   r   rY   r   r&   r&   r'   test_is_numeric_dtypeQ  s   


r   c                 C   4   | j j}tj|rt| sJ d S t| rJ d S r   )r(   r#   rH   rI   rl   r   r  r&   r&   r'   test_is_integer_dtype^     r  c                 C   r  r   )r(   r#   rH   rI   rl   r   r  r&   r&   r'   test_is_any_integer_dtypeg  r  r  c                 C   r  r   )r(   r#   rH   rI   rL   r   r  r&   r&   r'   test_is_signed_integer_dtypep     r  c                 C   r  r   )r(   r#   rH   rI   rM   r   r  r&   r&   r'   test_is_unsigned_integer_dtypex  r  r  c                 C   r  r   )r(   r#   rH   rI   rK   r   r  r&   r&   r'   test_is_float_dtype  r  r  c                 C   sl   t | }|d}t|}t|}t|t|ksJ t|}t|| t|}t|| d S )Nr2   )	rV   r   headpickledumpsr@  loadsr   r   )rY   r   expected_slicedfull_pickledsliced_pickledr   result_slicedr&   r&   r'   test_pickle_roundtrip  s   





r  c                 C   sH   | j  j}|| j}t|jtrJ t|jtsJ t||  d S r   )	r   	to_pandasrW   r   r(   r   r    r   r   )rY   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 )Nz1.0r  r+   rG   )rV   r   r   r   r   r   r   r   r&   r&   r'   &test_astype_float_from_non_pyarrow_str  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   r[   rH   rI   rQ   rP   r/  rW   list_hasnar   r  rV   ro   r  r   assert_numpy_array_equal)rY   r   r   r   r&   r&   r'   test_to_numpy_with_defaults  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   rG   r   )
rV   rW   r  r/  ro   r  r   intr   r  )rY   arrr   r   r&   r&   r'   test_to_numpy_int_with_na  s   r  zna_val, exp)r.   r.   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]rG   r   )r(   rp   r2   rV   rW   ro   r  r/  r   r  )na_valr  r  r   r   r&   r&   r'   test_to_numpy_null_array  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  rG   r2   r  r   )r  r   r   r&   r&   r'   !test_to_numpy_null_array_no_dtype  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   r[   r0   )
copyr   rH   rW   r@  r   r[   r   r   tolist)rY   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   r[   rH   rI   rS   rT   r   rl   rK   rJ   r   rw   r   )rY   r   
fill_valuer  r   r&   r&   r'   test_setitem_invalid_dtype  s(   


"r,  zreturns object with 7.0rs   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-31r$  types_mapperrG   )rH   rW   rV   	Timestampdate32r  r    date64getr   r   r   )
date_arrayr   r   r&   r&   r'   &test_from_arrow_respecting_given_dtype  s   
r4  zdoesn't raise with 7c                  C   sj   t jddgt  d} tjt jdd | jt  tt  ij	d W d    d S 1 s.w   Y  d S )Nr         @r$  zFloat value 1.5 was truncatedr   r-  )
rH   rW   r   rw   r   r   r  r    r   r2  )rW   r&   r&   r'   -test_from_arrow_respecting_given_dtype_unsafe  s    "r6  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@rG   r.   g333333?g@g^@gp=
cL@r0   g      ^@g      N@)rV   r   ro   roundr   r   )r(   r   r   r   r&   r&   r'   
test_round  s   

r8  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)r2   r   r.   r0   zOsearchsorted requires array to be sorted, which is impossible with NAs present.r   )r  rV   ro   r   rw   r   r   searchsorted)rh   rW  r=   r_   r<   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 )
Nrh  ri  rG   r.   r2   )r<   r=   r<   r=   )by)rV   r   r   r    rH   
dictionaryint32r   r%  sort_valuesr   r2  )r   r   r   r&   r&   r'   test_sort_values_dictionary7  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 )NrA  rG   r.   )
rV   r   r    rH   r   r-  r   r=  r   r   )r@  r   r   r   r&   r&   r'   test_str_countE     rB  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 )NrA  rG   z	count notr   r.   flags)
rV   r   r    rH   r   rw   r   rU   r-  r   r   r&   r&   r'    test_str_count_flags_unsupportedM     "rG  zside, str_funcr^  rjustr_  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<   rG   r   rh  )widthsidefillchar)
rV   r   r    rH   r   r-  padr   r   r   )rN  str_funcr   r   r   r&   r&   r'   test_str_padS  s   rR  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<   rG   zInvalid side: foor   r   r*  rh  )
rV   r   r    rH   r   rw   r   r   r-  rP  rF  r&   r&   r'   test_str_pad_invalid_side_  rH  rS  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 )NrA  rG   )casenaregex)
rV   r   r    rH   r   r-  containsr  r   r   )r@  rV  rW  rX  r  r   r   r   r&   r&   r'   test_str_containse  s   rZ  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 )NrA  rG   zcontains notr   r<   r.   rD  )
rV   r   r    rH   r   rw   r   rU   r-  rY  rF  r&   r&   r'   #test_str_contains_flags_unsupportedv  rH  r\  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 )NrA  rG   )rW  
rV   r   r    rH   r   r   r-  r  r   r   )rN  r@  rW  r  r   r   r   r&   r&   r'   test_str_start_ends_with|  s   
ra  zarg_name, argreplrV  rE  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 )
NrA  rG   r=   rh  T)r@  rb  rX  zreplace is not supportedr   r&   )
rV   r   r    rH   r   rw   r   rU   r-  replace)arg_nameargr   r`  r&   r&   r'   test_str_replace_unsupported  s   "rf  zpat, repl, n, regex, expr<   rh  r0   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abacrG   )nrX  )	rV   r   r    rH   r   r-  rc  r   r   )r@  rb  rk  rX  r  r   r   r   r&   r&   r'   test_str_replace  s   	rl  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 )NrA  rG   zrepeat is notr   r.   r2   )
rV   r   r    rH   r   rw   r   rU   r-  repeatrF  r&   r&   r'   test_str_repeat_unsupported  rH  rn  zUnsupported for pyarrow < 7r   c                  C   P   t jdd gtt d} | jd}t jdd gtt d}t|| d S )NrA  rG   r2   abcabc)	rV   r   r    rH   r   r-  rm  r   r   r  r&   r&   r'   test_str_repeat  s   rq  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 NrA  rG   )rV  rW  
rV   r   r    rH   r   r-  r   r  r   r   r@  rV  rW  r  r   r   r   r&   r&   r'   test_str_match     rv  Abcc                 C   rr  rs  rt  ru  r&   r&   r'   test_str_fullmatch  rw  ry  zsub, start, end, exp, exp_typr   r2   c                 C   sN   t jdd gtt d}|jj| ||d}t j|t|d}t|| d S )NrA  rG   )startend)	rV   r   r    rH   r   r-  findr   r   )subrz  r{  r  exp_typr   r   r   r&   r&   r'   test_str_find  s   r  c                  C   r[  )NrA  rG   zfind not implementedr   rT  r.   )rz  )
rV   r   r    rH   r   rw   r   rU   r-  r|  rF  r&   r&   r'   test_str_find_notimplemented  rH  r  zi, exp)r=   eN)r_   r  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)rA  deNrG   )	rV   r   r    rH   r   r-  r2  r   r   )ir  r   r   r   r&   r&   r'   test_str_get  s   r  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 )NrA  123=)za=b=cz1=2=3NrG   )rV   r   r   rH   rW   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abcdrG   )	rV   r   r    rH   r   r-  slicer   r   )rz  stopstepr  r   r   r   r&   r&   r'   test_str_slice
     	r  zstart, stop, repl, expaxcdxcdcdc                 C   r  r  )	rV   r   r    rH   r   r-  slice_replacer   r   )rz  r  rb  r  r   r   r   r&   r&   r'   test_str_slice_replace  r  r  zvalue, method, exp)a1cisalnumT)z!|,r  F)aaaisalphaT)z!!!r  F)u   ٠	isdecimalT)z~!r  F)r>   isdigitT)~r  F)r  islowerT)aaAr  F)r  	isnumericT)11Ir  F) isspaceT) r  F)zThe ThatistitleT)zthe Thatr  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 NrG   r`  )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 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 dEFrG   	rV   r   r    rH   r   r   r-  r   r   )r  r  r   r   r   r&   r&   r'   test_str_transform_functionsF  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  rG   r)   )
rV   r   r    rH   r   r-  r@  r=  r   r   r  r&   r&   r'   test_str_lenX  s   
r  zmethod, to_strip, val)rm  Nz abc )rm  rh  xabcx)lstripNz abc)r  rh  xabc)rstripNzabc )r  rh  abcxc                 C   sV   t j|d gtt d}t|j| |d}t jdd gtt d}t|| d S )NrG   )to_striprA  r  )r  r  valr   r   r   r&   r&   r'   test_str_strip_  s   r  r  abc123c                 C   P   t j| d gtt d}|jd}t jdd gtt d}t|| d S NrG   r  rA  )	rV   r   r    rH   r   r-  removesuffixr   r   r  r   r   r   r&   r&   r'   test_str_removesuffixq  rC  r  123abcc                 C   r  r  )	rV   r   r    rH   r   r-  removeprefixr   r   r  r&   r&   r'   test_str_removeprefixy  rC  r  errorsignore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 NrA  rG   )
rV   r   r    rH   r   r-  encodebinaryr   r   )r  encodingr  r   r   r   r&   r&   r'   test_str_encode  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)rA  efgNrG   r=   rD  )
rV   r   r    rH   r   r-  findalllist_r   r   )rE  r   r   r   r&   r&   r'   test_str_findall  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    d S 1 sGw   Y  d S )NabcbarG   r_   r2   zsubstring not foundr   r*  )rV   r   r    rH   r   r   r-  r   r   r   rw   r   r   )r  rz  r{  r   r   r   r&   r&   r'   test_str_r_index  s   	"r  formNFCNFKCc                 C   s>   t jdd gtt d}|j| }| }t	|| d S r  )
rV   r   r    rH   r   r-  r<  r%  r   r   )r  r   r   r   r&   r&   r'   test_str_normalize  s   r  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*  NrG   r_   )r2   r0   N)
rV   r   r    rH   r   r-  rfindr   r   r   )rz  r{  r   r   r   r&   r&   r'   test_str_rfind  s   r  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  rG   r  r=   bbcbb)	rV   r   r    rH   r   r-  	translater   r   r  r&   r&   r'   test_str_translate  s   r  c                  C   ro  )Nr  rG   r   zabc
ba)	rV   r   r    rH   r   r-  wrapr   r   r  r&   r&   r'   test_str_wrap  s   r  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|crG   )TTFr  r  )r<   r=   r_   )r(   r   )rV   r   r    rH   r   r-  get_dummiesr   r  r   r2  r  r&   r&   r'   test_get_dummies  s   

r  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  rG   r=   )r<   r=   cbar  Fexpand)rA  r=   r<   )rV   r   r    rH   r   r-  	partitionr   r   r2  r   rW   r   
rpartitionr  r&   r&   r'   test_str_partition  s"   r  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a1cbcba2cbcbNrG   r_   a1r=   r=   a2r=   r=   r.   rk  r  bcbr  z[1-2]T)rX  r<   cbcb)rX  r  )r<   r<   N)r  r  Nr   r.   r3   r  r<   r  Nr  NN)rV   r   r    rH   r   r-  splitr   rW   r   r   r   r2  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 )Nr  rG   r_   r  r  r.   r  a1cbr=   a2cbT)rk  r  )r  r  N)r=   r=   Nr  r3   r  r  r  )rV   r   r    rH   r   r-  rsplitr   rW   r   r   r   r2  r  r&   r&   r'   test_str_rsplit	  s2   r  c                  C   sZ   t jdd gtt d} tjtdd | j	d W d    d S 1 s&w   Y  d S )NrA  rG   z,str.extract not supported with pd.ArrowDtyper   z[ab](\d))
rV   r   r    rH   r   rw   r   rU   r-  extractrF  r&   r&   r'   test_str_unsupported_extract:	  s   "r  r  )r  r)  rq  rp  c                 C   sF   ddg}t | }tj||d}tt jdd g|d}t|| d S )N1000NaTrG   i  r$  )rH   durationr   r   rW   r   r   )r  stringsr   r   r   r&   r&   r'   #test_duration_from_strings_with_natB	  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#   rH   rI   r   rw   r   AttributeErrorrV   r   r  rm   r&   r&   r'   test_unsupported_dtL	  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microsecondr;   month
nanosecond   quartersecondrf   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.   r2   r   r)   rf   r;   r  )r  r  r  r  r  r  r  r  r  rG   r$  )rV   r   r/  r    rH   r  r   r  r   r   r0  r   time64r   rW   r   r   )propr   r   r   exp_typer&   r&   r'   test_dt_propertiesU	  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.   r2   r   r  r  r  r  rG   r   r$  )rV   r   r   r    rH   r  r  r   r   rW   r  r   r   )r  r   r   r   r&   r&   r'   test_dt_time_preserve_unit	  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.   r2   r   r  r  r   rG   )rV   r   r   r    rH   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.   r2   r   r  r  rG   )r  r.   r.   r  )r  weekr  r   )r   r(   )rV   r   r   r    rH   r  r  isocalendarr   r   r2  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.   r2   r   r  r  rG   z%Y-%m-%dT%H:%M:%Sz2023-01-02T03:00:00.000000000)r   r   ru   rv   rw   rx   ry   rH   r   rV   r   r   r    r  r  strftimer   r   r   )r%   r   r   r   r&   r&   r'   test_dt_strftime	  s    	r$  )ceilr  r7  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.   r2   r   r  r  rG   zambiguous is not supported.r   1Hr  	ambiguousznonexistent is not supported.nonexistent)rV   r   r   r    rH   r  rw   r   rU   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.   r2   r   r  r  rG   zfreq='1B' is not supportedr   1Bz$Must specify a valid frequency: None)rV   r   r   r    rH   r  rw   r   r   r   r  r+  r&   r&   r'   "test_dt_roundlike_unsupported_freq	  s   "r.  z'Methods not supported for pyarrow < 7.0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  r3   )rV   r   r   r    rH   r  r   r  r   r   r   )r/  r  r   rX   r   r   r&   r&   r'   test_dt_ceil_year_floor	  s   r7  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 )	Nr5   r.   r  r  rG   c                 s   s    | ]	}t |tu V  qd S r   )r[   r   ).0resr&   r&   r'   	<genexpr>	  s    z(test_dt_to_pydatetime.<locals>.<genexpr>zdatetime64[ns])r   rV   r   r    rH   r  r  r  r/  rW   r  r   r  allr   )rY   r   r   r   r&   r&   r'   test_dt_to_pydatetime	  s   
r<  	date_type    @   c                 C   sh   t jtdddgtttd|   d}tjtdd |j	
  W d    d S 1 s-w   Y  d S )Nr5   r7   r8   r   rG   z#to_pydatetime cannot be called withr   )rV   r   r   r    r   rH   rw   r   r   r  r  )r=  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.w   Y  tjtdd	 | j	j
d
dd W d    d S 1 sNw   Y  d S )Nr  r.   r2   r   r  r  rG   z ambiguous='NaT' is not supportedr   r  r  r'  z"nonexistent='NaT' is not supportedr)  )rV   r   r   r    rH   r  rw   r   rU   r  tz_localizerF  r&   r&   r'   *test_dt_tz_localize_unsupported_tz_options
  s   "rB  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.   r2   r   r  r  r  r  rG   )
rV   r   r   r    rH   r  r  rA  r   r   r  r&   r&   r'   test_dt_tz_localize_none
  s   rC  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}|jd	}tjtdddddd gt| d
}tj|d	}t	
t|}t|| d S )Nr   r   r  r.   r2   r   r  rG   r  r$  r   r   ru   rv   rw   rx   ry   rH   r   rV   r   r   r    r  r  rA  rW   computeassume_timezoner   r   r   )r  r%   r   r   exp_datar   r&   r&   r'   test_dt_tz_localize$
  s$   	rH  znonexistent, exp_dateshift_forwardr7   r  shift_backwardz2023-03-12 01:59:59.999999999c                 C   s   t  rt r|jtjjtjdd 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   r  r   r7   r2      )r  r  r  r  r  r  rG   r  r)  r$  rD  )r*  exp_dater%   r   r   rG  r   r&   r&   r'   test_dt_tz_localize_nonexistent=
  s    	rM  r   c                 C   sD   t jd gdd}t|| |d}|r| dk}nt j}||u s J d S )Nr  rG   r   r;  )rV   r   r   ro   )r   r   r   r   r   r&   r&   r'   #test_boolean_reduce_series_all_nullZ
  s   
rN  r   zstring[pyarrow]c                 C   s>   t d }tj|| d}tjt|| d}t|| d S )Nzthe quick brown foxrG   )rH   rW   r  rV   r   r   r   r   )r(   r  r   r   r&   r&   r'   test_series_from_string_arrayf
  s   rO  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 rG   F)	r   rH   chunked_arrayr/  onesr  r%  zerosr   )r6  r  r   r&   r&   r'   /test_setitem_boolean_replace_with_mask_segfaultn
  s
   rS  zdata, arrow_dtyperA   rB   c                 C   s:   t |}tjt| |d}tj| |d}t|| d S r  )r    rV   rW   r/  r   r   )rY   r  r(   r   r   r&   r&   r'   -test_conversion_large_dtypes_from_numpy_arrayw
  s   rT  r   c                 C   sN   t jg dt| d}| }t jg dtt g dd}t|| d S )N)r.   r2   r   rG   )r   r2   r.   r.   r   g       @r5  r   r   r   r   min25%50%75%maxr(   r+  )rV   r   r    describerH   r   r   r   r   rY   r   r   r&   r&   r'   test_describe_numeric_data
  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 )	Nr.   r:   rG   	   )r;   r2   r.   r   r;   rf   r_  )r  rU  r[  )rV   r   r  r    r\  to_timedeltar  r&  r  r   r   r]  r&   r&   r'   test_describe_timedelta_data
  s   ra  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 )
Nr.   r:   rG   r_  c                    s    g | ]}t j| j jd qS ))r   r  )rV   r/  r   r  )r8  vr   r&   r'   
<listcomp>
  s    z/test_describe_datetime_data.<locals>.<listcomp>)r;   r.   r   r;   rf   r_  )r   r   rV  rW  rX  rY  rZ  r[  )rV   r   r  r    r\  r  r   r   r]  r&   rc  r'   test_describe_datetime_data
  s   
	re  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 )Nr.   r  rG   r2   )
rV   to_datetimer`  r   r    rH   r  r   r   r   )data_tsdata_tdser_tsser_tdr   r   r&   r&   r'   2test_duration_overflow_from_ndarray_containing_nat
  s   rk  )r  r   r   r   r   decimalr   ior   r   r  r
  renumpyr/  rw   pandas._libsr	   pandas.compatr
   r   r   r   r   r   r   pandas.errorsr   pandas.core.dtypes.commonr   pandas.core.dtypes.dtypesr   pandasrV   pandas._testing_testingr   pandas.api.extensionsr   pandas.api.typesr   r   r   r   r   r   r   pandas.tests.extensionr   importorskiprH   pandas.core.arrays.arrow.arrayr   pandas.core.arrays.arrow.dtyper    fixtureALL_PYARROW_DTYPESr-  r(   rY   r]   r^   rd   rh   rj   rn   rp   BaseCastingTestsrr   BaseConstructorsTestsr   BaseGetitemTestsr   BaseAccumulateTestsr   BaseNumericReduceTestsr   BaseBooleanReduceTestsr   BaseGroupbyTestsr   BaseDtypeTestsr   BaseIndexTestsr	  BaseInterfaceTestsr  BaseMissingTestsr  BasePrintingTestsr  BaseReshapingTestsr   BaseSetitemTestsr#  BaseParsingTestsr%  BaseUnaryOpsTestsr5  BaseMethodsTestsr7  rs  rZ  BaseComparisonOpsTestsr  r  r  r  rx   r   r  r  r  r  byteslarge_binarylarge_stringr  r   r  
large_listmap_r   structr  dictr<  r  r  r   r  r  r  r  r  r  r  r  r  r  r0  r"  r#  r(  r,  skipifr4  r6  r8  r:  r?  rB  rG  rR  rS  rZ  r\  ra  compilerf  rl  rn  ry   rU   rq  rv  ry  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.  r7  r<  r@  rB  rC  rH  r/  rM  rN  rO  rS  rT  ALL_INT_PYARROW_DTYPESFLOAT_PYARROW_DTYPESr^  TIMEDELTA_PYARROW_DTYPESra  DATETIME_PYARROW_DTYPESre  r   rk  r&   r&   r&   r'   <module>   s   $	$	

;


:


	
FRb#4S2   37 "L



 
			





	

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













("		

	

	

	