U
    ùQ”i¡q ã                   @   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jl mdSdTdUdVdWdXg¡ejl mdYdZdZdZgg¡d[d\„ ƒƒZnejljmd]ddd^d^d_d_gdd_ggdddd^d_d_gdgggd`dagdb�dcdd„ ƒZodedf„ Zpejl mdge2 q¡ erge2 qdh¡erge2 s¡ erge2 t¡ e9ge2 ue2 v¡ ¡ewge2 xe2 v¡ ¡ewge2 ye2 z¡ e2 v¡ ¡ewge2 {die2 |¡ fdje2 z¡ fg¡e}ge2 ~e2 v¡ e2 v¡ ¡egg	¡dkdl„ ƒZdmdn„ Z€dodp„ Z�dqdr„ Z‚dsdt„ Zƒdudv„ Z„dwdx„ Z…dydz„ Z†d{d|„ Z‡d}d~„ Zˆdd€„ Z‰d�d‚„ ZŠdƒd„„ Z‹ejl md…ej&ejŒfd†g¡d‡dˆ„ ƒZ�d‰dŠ„ ZŽd‹dŒ„ Z�d�dŽ„ Z�ejlj‘ed�d��d‘d’„ ƒZ’ejlj‘ed“d��d”d•„ ƒZ“d–d—„ Z”d˜d™„ Z•dšd›„ Z–ejl mdœd�džg¡dŸd „ ƒZ—d¡d¢„ Z˜ejl md£d¤d¥gd¦d§gd¨d©gg¡dªd«„ ƒZ™d¬d­„ Zšejl md®d¯d°dd°d±dggd²d±dd°d°dggd¯d°d±d°d±d±ggd³d°dd±d±dggd´d±dd±d°dggg¡dµd¶„ ƒZ›d·d¸„ Zœejl md¹dºd¯dd±dggdºd»d°d°d°ggd¼d»d±d°d±ggd¼d½dd±dggg¡d¾d¿„ ƒZ�ejl mdÀdœe žd»¡gdÁe9gdÂd°gdÃdÄgg¡dÅdÆ„ ƒZŸejl mdÇdÈdÉdÊd°dËdggdÈdÉdÄd°dÌdggdÍdÉdÊd±dÎdggg¡dÏdÐ„ ƒZ dÑdÒ„ Z¡ejlj¢edÓe£dÔ�dÕdÖ„ ƒZ¤ejl md×d¯d°dd±dggd²d±dd°dggd½d±dd°dggd¯d°d±d±d±ggd³d°dd±dggd´d±dd°dggg¡dØdÙ„ ƒZ¥ejl md×d�d°dd±dggdÚd±dd°dggd½d±dd°dggd¯d°d±d±d±ggdžd°dd±dggd´d±dd°dggg¡dÛdÜ„ ƒZ¦ejl mdÝd¯ddddge2 §¡ gd½dÄdÞd^dge2 v¡ gg¡dßdà„ ƒZ¨dádâ„ Z©ejl mdãdÄd»dädggdÊdådädggd^dåddggdædÈddggd_dddggg¡dçdè„ ƒZªejlj¢dée«dÔ�dêdë„ ƒZ¬ejl mdìdd^dd¯dggdd^dÄd¯dggdÄdÞdÄd½dggg¡dídî„ ƒZ­ejl mdïdÄd^dÉdðdggdd^dÉdñdggdd^ddòdggg¡dódô„ ƒZ®ejl mdõdöd÷d±gdød÷d°gdùdúd±gdûdúd°gdüdýd±gdþdýd°gdÿ�d d±g�d�d d°gdù�dd±g�d�dd°g�d�dd±g�d�dd°g�d�dd±g�d	�dd°g�d
�dd±g�d�dd°g�d�dd±g�d�dd°gg¡�d�d„ ƒZ¯ejl m�d�d�dg�d�dg�d�dgdU�dg�d�dg�d�dgg¡�d�d„ ƒZ°�d�d „ Z±ejl m�d!�d"d�d#g�d"dÉ�d$g�d%d�d&g�d%dÉ�d'g�d(d�d)g�d(dÉ�d*gg¡�d+�d,„ ƒZ²ejl m�d-�d.d�g¡�d/�d0„ ƒZ³ejl m�d-�d1d�g¡�d2�d3„ ƒZ´ejl m�d4�d5�d6g¡ejl m�d7�d8�d9g�d:�d;gg¡�d<�d=„ ƒƒZµejl mdÃddÄg¡�d>�d?„ ƒZ¶ejl m�d@�dA�dBg¡ejl m�dCddgdÄd_gg¡�dD�dE„ ƒƒZ·ejl m�dF�dG�dHg¡�dI�dJ„ ƒZ¸ejl m�dCddgdÄd_gg¡�dK�dL„ ƒZ¹�dM�dN„ Zº�dO�dP„ Z»�dQ�dR„ Z¼�dS�dT„ Z½�dU�dV„ Z¾�dW�dX„ Z¿�dY�dZ„ ZÀejl m�d[�d\�d]�d^�d_g¡�d`�da„ ƒZÁ�db�dc„ ZÂejl m�dd�de�dfg�dgd^g�dhdg�didg�djdg�dkd^g�dld^g�dmdÞg�dnd_gejÃ�dod°ejlj¢ee£�dp�dq��dr��ds�dtg�dudÄg�dv�dwg�dxdÄg�dy�dzg�d{e�dfdÄd^ƒg�d|edÞd_�dz�dtƒgg¡�d}�d~„ ƒZÄejl m�d[�d]�d\g¡�d�d€„ ƒZÅejl m�d�d�d‚�dƒg¡�d„�d…„ ƒZÆ�d†�d‡„ ZÇ�dˆ�d‰„ ZÈejl m�d@�dŠ�d‹�dŒg¡�d��dŽ„ ƒZÉejl m�d@�dŠ�d‹�dŒg¡�d��d�„ ƒZÊejlj¢e�d‘d��ejl m�d’�d“�d”�d•�d–�d—�d˜�d™g¡ejl m�d@�dŠ�d‹�dŒg¡�dš�d›„ ƒƒƒZË�dœ�d�„ ZÌejl m�dž�dŸ�d g¡�d¡�d¢„ ƒZÍ�d£�d¤„ ZÎ�d¥�d¦„ ZÏejl m�d[�d]�d\g¡�d§�d¨„ ƒZÐejl m�d©�dªe�dfdÞ�d«dÞ�d¬�g�d­e! Ñ�d®¡gg¡�d¯�d°„ ƒZÒejl m�d±d±d°g¡�d²�d³„ ƒZÓejl md�d´�dµg¡�d¶�d·„ ƒZÔ�d¸�d¹„ ZÕejl m�dº�d»�d¼ge2 s¡ fdÈd»ge2 t¡ fg¡�d½�d¾„ ƒZÖejl m�d¿e$j×e$jØ ¡�dÀ�dÁ„ ƒZÙejl m�d¿e$jÚ¡�dÂ�dÃ„ ƒZÛejl m�d¿e$jÜ¡�dÄ�dÅ„ ƒZÝejlj¢e�dÆe2jÞdÔ��dÇ�dÈ„ ƒZßdS (É  ag  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.
The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).
Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.
é    )Ú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)Z
minversion)ÚArrowExtensionArray)Ú
ArrowDtype)ÚparamsÚidsc                 C   s   t | jd�S )N)Úpyarrow_dtype)r   Úparam)Úrequest© r%   úE/tmp/pip-unpacked-wheel-58ppya8e/pandas/tests/extension/test_arrow.pyÚdtypeC   s    r'   c              	   C   s|  | j }tj |¡rBddgd d g ddgd  d g ddg }�n,tj |¡r~ddgd d g ddgd  d g d	d
g }�nðtj |¡rºddgd d g ddgd  d g ddg }�n´tj |¡röddgd d g ddgd  d g ddg }�nxtj |¡�rLtdƒtdƒgd d g tdƒtdƒgd  d g tdƒtdƒg }�n"tj 	|¡�rºt
dddƒt
dddƒgd d g t
dddƒt
dddƒgd  d g t
dddƒt
dddƒg }�n´tj |¡�r<tdddddddƒtdddddddƒgd d g tddddƒtddddƒgd  d g tdddƒtdddƒg }�n2tj |¡�r’tdƒtddƒgd d g tdƒtdƒgd  d g tdƒtdƒg }nÜtj |¡�ròtddƒtddƒgd d g tddƒtddƒgd  d g tddƒtddƒg }n|tj |¡�r.dd gd d g dd!gd  d g d"d#g }n@tj |¡�rjd$d%gd d g d&d'gd  d g d(d)g }nt‚tj|| d*�S )+NTFé   é,   ç      ð?ç        g       Àg      ð¿ç      à?g     àX@é   r   éþÿÿÿéÿÿÿÿéc   é   Ú1ú0.0z-2.0z-1.0z0.5z33.123éæ  éÏ  é   é   éä  iöÿÿÿé
   é   ÚaÚbÚ2ú!ú>ó   aó   bó   1ó   2ó   !ó   >©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&   rX   H   sŒ    0000ÿþýüÿÿþýüÿ*ÿþýüÿÿþýüÿÿþýüÿ..rX   c                 C   s   t | ƒjd| d g| jd�S )zLength-2 array with [NA, Valid]Nr   rF   ©ÚtypeÚ_from_sequencer'   )rX   r%   r%   r&   Údata_missing„   s    r\   )r    c                 C   s    | j dkr|S | j dkr|S dS )z�Parametrized fixture returning 'data' or 'data_missing' integer arrays.

    Used to test dtype conversion with and without missing values.
    rX   r\   N)r#   )r$   rX   r\   r%   r%   r&   Úall_dataŠ   s    

r]   c              	   C   s¾  | j }tj |¡r"d}d}d}�n~tj |¡r>d}d}d}�nbtj |¡rZd}d}d}�nFtj |¡rvd}d}d	}�n*tj |¡r¨td
ddƒ}tdddƒ}tdddƒ}nøtj 	|¡rät
d
ddddddƒ}t
dddƒ}t
ddddƒ}n¼tj |¡�rtdƒ}tdƒ}tddƒ}n’tj |¡�r<tddƒ}tddƒ}tddƒ}ndtj |¡�rXd}d}d}nHtj |¡�rtd}d}d}n,tj |¡�rœt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
    FTgš™™™™™ñ¿r+   gš™™™™™ñ?r/   r   r-   r9   r5   r6   r7   iÚ  r4   r8   r(   r;   r<   Úcr@   rA   ó   cz-1.1r3   z1.1NrF   )r"   rG   rH   rI   rJ   rK   rL   rN   r   rO   r   rP   r   rQ   r   rR   rS   rM   r   rT   rU   rV   )r'   rW   ÚAÚBÚCr%   r%   r&   Údata_for_grouping–   s^    	


rc   c                 C   s&   t | ƒj| d | d | d g| jd�S )zn
    Length-3 array with a known sort order.

    This should be three items [B, C, A] with
    A < B < C
    r   é   r(   rF   rY   ©rc   r%   r%   r&   Údata_for_sortingÑ   s    þrf   c                 C   s&   t | ƒj| d | d | d g| jd�S )z{
    Length-3 array with a known sort order.

    This should be three items [B, NA, A] with
    A < B and NA missing.
    r   r1   r(   rF   rY   re   r%   r%   r&   Údata_missing_for_sortingß   s    þrg   c                 C   s:   | j j}tj |¡s tj |¡r6tjdgd | j d�S | S )z3Length-100 array in which all the elements are two.r1   éd   rF   )r'   r"   rG   rH   Ú
is_integerrJ   rU   rV   ©rX   rW   r%   r%   r&   Údata_for_twosí   s    rk   c                   C   s   t jS )z6The scalar missing value for this type. Default 'None')rU   ÚNAr%   r%   r%   r&   Úna_value÷   s    rm   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚTestBaseCastingc                    sB   |j j}tj |¡r2|j tjj	d|› d�d�¡ t
ƒ  |¡ d S )NzFor z .astype(str) decodes.©Úreason)r'   r"   rG   rH   rS   ÚnodeÚ
add_markerÚpytestÚmarkÚxfailÚsuperÚtest_astype_str©ÚselfrX   r$   rW   ©Ú	__class__r%   r&   rw   þ   s    
ÿÿzTestBaseCasting.test_astype_str)Ú__name__Ú
__module__Ú__qualname__rw   Ú__classcell__r%   r%   rz   r&   rn   ý   s   rn   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 |¡rRtj |¡r2d}n
d|› �}|j tj	j
|d�¡ tƒ  |¡ d S )Nz1ArrowDtype(pa.string()) != StringDtype('pyarrow')ú$pyarrow.type_for_alias cannot infer ro   )r'   r"   rG   rH   rR   rM   rq   rr   rs   rt   ru   rv   Útest_from_dtype)ry   rX   r$   rW   rp   rz   r%   r&   r‚   
  s    
ÿÿz TestConstructors.test_from_dtypec                 C   sd   t |ƒ |j¡}t ||¡ t|jtjƒs.t‚t |ƒ |j 	¡ ¡}t ||¡ t|jtjƒs`t‚d S ©N)
rZ   r[   Ú_dataÚtmÚassert_extension_array_equalÚ
isinstancerG   ZChunkedArrayÚAssertionErrorÚcombine_chunks©ry   rX   Úresultr%   r%   r&   Útest_from_sequence_pa_array  s    z,TestConstructors.test_from_sequence_pa_arrayc              	   C   s2   t jtdd�� tjdgt ¡ d� W 5 Q R X d S )NzConverting strings to©Úmatchz12-1rF   )rs   ÚraisesrT   r   Ú_from_sequence_of_stringsrG   Zmonth_day_nano_interval)ry   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�¡ nztrxtj |¡sVtj |¡rx|j t	j
jtjd|› �d�¡ n<tj |¡r´|jd k	r´tƒ r´tƒ r´|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.ro   z pyarrow doesn't support parsing ©r�   rp   ú_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.rF   )r'   r"   rG   rH   Z	is_time64Úequalsr
   rq   rr   rs   rt   ru   r   rP   rM   ÚArrowNotImplementedErrorrO   Útzr   r   ÚArrowInvalidr„   ÚcastÚstringrZ   r�   r…   r†   r‰   )ry   rX   r$   rW   Z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%   rz   r&   r€   	  s   r€   c                   @   s   e Zd ZdS )ÚTestGetitemTestsN©r|   r}   r~   r%   r%   r%   r&   r›   O  s   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r0| d¡}| d¡}| d¡}t | d¡|ƒ|d�}| j||dd� d S )N©ÚskipnaÚmúint64[pyarrow]ÚFloat64F)Zcheck_dtype)Úgetattrr'   ÚkindÚastypeÚassert_series_equal)ry   ÚserÚop_namerŸ   r‹   Úexpectedr%   r%   r&   Úcheck_accumulateT  s    


z(TestBaseAccumulateTests.check_accumulaterŸ   TFc              	   C   sz   |j j}tj |¡s,tj |¡s,tj |¡rB|dkrBtsBt 	d¡ |}t
 |¡}t t¡� t||ƒ|d� W 5 Q R X d S )NÚcumsumz1These work, are tested by test_accumulate_series.rž   )r'   r"   rG   rH   ri   rJ   rP   r   rs   ÚskiprU   ÚSeriesr�   rT   r£   )ry   rX   Ú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 |¡s2tj |¡r@|dkr~d}n>tj |¡rftj 	|¡sf|dkr~d}ntj 	|¡r~|dkr~d}|rŒt
 d¡ |dks˜trÌ|jjjr¬t
 d¡ |j t
jj|› d�td	�¡ nF|dk�rtj |¡sðt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©rp   r�   z not implemented for )r'   r"   rU   r­   rG   rH   rR   rS   Úis_temporalrP   rs   r¬   r   ÚconfigÚoptionZ	skip_slowrq   rr   rt   ru   rT   rI   rM   rª   )	ry   rX   r®   rŸ   r$   r¯   r¨   r§   Zdo_skipr%   r%   r&   Útest_accumulate_seriest  sL    
ÿ

þÿ

ÿ
ÿþÿz.TestBaseAccumulateTests.test_accumulate_seriesN)	r|   r}   r~   rª   rs   rt   Úparametrizer°   r¶   r%   r%   r%   r&   r�   S  s
   
r�   c                       sR   e Zd Zdd„ Zej dddg¡‡ fdd„ƒZej dd	d
dg¡dd„ ƒZ‡  Z	S )ÚTestBaseNumericReducec                 C   sž   |j j}|dkrt||ƒƒ }nt||ƒ|d�}tj |¡rFt d¡ n"tj |¡s^tj 	|¡rh| 
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£   rG   rH   rI   rs   r¬   ri   rJ   r¥   r…   Zassert_almost_equal)ry   r§   r¨   rŸ   rW   r‹   r©   r%   r%   r&   Úcheck_reduce¦  s    ÿ
z"TestBaseNumericReduce.check_reducerŸ   TFc              	      sf  |j j}|}t |¡}d}tj |¡rJ|dkrJtj |¡rD|dkrDqnd}n$tj |¡sbtj 	|¡rn|dkrnd}|s¬d|› d�}	t
jt|	d�� t||ƒ|d	� W 5 Q R X d S t
jjt|› d
tj› d|› �d�}
|dkrä|j |
¡ nn|dk�rt�rtj |¡�r|j |
¡ nB|dk�r.t�r.|j |
¡ n$tj |¡�rR|dk�rR|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"   rU   r­   rG   rH   r³   rP   rR   rS   rs   r�   Ú	TypeErrorr£   rt   ru   Ú__version__rq   rr   r   rM   r   rI   rv   Útest_reduce_series)ry   rX   Zall_numeric_reductionsrŸ   r$   rW   Úopnamer§   Zshould_workÚmsgÚ
xfail_markrz   r%   r&   rÉ   ¹  sL    

ÿ
ÿþýÿþ
ýz(TestBaseNumericReduce.test_reduce_seriesÚtypÚint64Zuint64Úfloat64c                 C   s,   t jddg|› d�d� ¡ }|dks(t‚d S )Nr-   r1   ú	[pyarrow]rF   ç      ø?)rU   r­   rÁ   rˆ   )ry   rÍ   r‹   r%   r%   r&   Útest_median_not_approximate   s    z1TestBaseNumericReduce.test_median_not_approximate)
r|   r}   r~   rº   rs   rt   r·   rÉ   rÒ   r   r%   r%   rz   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 	|¡sBtj 
|¡rN|j |¡ |}t |¡}	tj |¡r¢tj |¡s¢tjtdd�� t|	|ƒ|d� W 5 Q R X d S t|	|ƒ|d�}
|
|dkksÂt‚d S )NrÅ   rÆ   r’   zdoes not support reductionr�   rž   Úany)r'   r"   rs   rt   ru   rÇ   rG   rÈ   rH   rR   rS   rq   rr   rU   r­   r³   rP   r�   r£   rˆ   )ry   rX   Úall_boolean_reductionsrŸ   rm   r$   rW   rÌ   r¨   r§   r‹   r%   r%   r&   rÉ     s    ý
z(TestBaseBooleanReduce.test_reduce_seriesN)r|   r}   r~   rs   rt   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                    s@   |j j}tj |¡r0|j tjj	|› d�d�¡ t
ƒ  |¡ d S ©Nú" only has 2 unique possible valuesro   )r'   r"   rG   rH   rI   rq   rr   rs   rt   ru   rv   Útest_groupby_extension_no_sort©ry   rc   r$   rW   rz   r%   r&   rÙ   +  s    ÿÿz.TestBaseGroupby.test_groupby_extension_no_sortc                    s@   |j j}tj |¡r0|j tjj	|› d�d�¡ t
ƒ  |¡ d S r×   )r'   r"   rG   rH   rI   rq   rr   rs   rt   ru   rv   Ú test_groupby_extension_transformrÚ   rz   r%   r&   rÛ   5  s    ÿÿz0TestBaseGroupby.test_groupby_extension_transformÚas_indexTFc                    sD   |j j}tj |¡r2|j tjj	t
|› d�d�¡ tƒ  ||¡ d S )NrØ   r’   )r'   r"   rG   rH   rI   rq   rr   rs   rt   ru   Ú
ValueErrorrv   Útest_groupby_extension_agg)ry   rÜ   rc   r$   rW   rz   r%   r&   rÞ   ?  s    þÿz*TestBaseGroupby.test_groupby_extension_aggc                    s¤   t |jƒr”t ddddddddg|ddddddddgdœ¡}t dg¡}tjtdd�� | d	¡ 	¡ j
 W 5 Q R X | d	¡j	d
d�j
}t ||¡ ntƒ  |¡ d S )Nr-   r1   é   r(   )r`   ra   rb   rb   zdoes not supportr�   r`   T)Znumeric_only)r   r'   rU   Ú	DataFrameZIndexrs   r�   rÇ   Úgroupbyr»   Úcolumnsr…   Zassert_index_equalrv   Útest_in_numeric_groupby)ry   rc   Údfr©   r‹   rz   r%   r&   rã   K  s    
ýÿz'TestBaseGroupby.test_in_numeric_groupby)r|   r}   r~   rÙ   rÛ   rs   rt   r·   rÞ   rã   r   r%   r%   rz   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 |¡r0tr0|j tj	j
tdd�¡ tƒ  |¡ d S )Nz,decimal string repr affects numpy comparisonr’   )r'   r"   rG   rH   rM   r   rq   rr   rs   rt   ru   rÝ   rv   Útest_check_dtyperx   rz   r%   r&   ræ   _  s    þÿzTestBaseDtype.test_check_dtypec              	      sz   |j }tj |¡r0|j tjjt	d|› �d�¡ tj 
|¡rjd}tjt|d�� | |j¡ W 5 Q R X d S tƒ  |¡ d S )Nr�   r’   z6string\[pyarrow\] should be constructed by StringDtyper�   )r"   rG   rH   rM   rq   rr   rs   rt   ru   rT   rR   r�   rÇ   Úconstruct_from_stringÚnamerv   Ú#test_construct_from_string_own_name)ry   r'   r$   rW   rË   rz   r%   r&   ré   j  s    þÿz1TestBaseDtype.test_construct_from_string_own_namec                    sb   |j }tj |¡r(t|ƒ |j¡r^t‚n6tj |¡rR|j	 
tjjtd|› �d�¡ tƒ  |¡ d S )Nr�   r’   )r"   rG   rH   rR   rZ   Zis_dtyperè   rˆ   rM   rq   rr   rs   rt   ru   rT   rv   Útest_is_dtype_from_name©ry   r'   r$   rW   rz   r%   r&   rê   ~  s    þÿz%TestBaseDtype.test_is_dtype_from_namec              	   C   s0   d}t jt|d�� t|ƒ d¡ W 5 Q R X d S )Nz*'another_type' must end with '\[pyarrow\]'r�   Zanother_type)rs   r�   rÇ   rZ   rç   )ry   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 |¡sltj |¡sltj |¡r>|jdksl|jd k	sltj |¡rT|jdksltj 	|¡sltj 
|¡rˆ|j tjj|› d�d�¡ tƒ  |¡ d S )NÚnszB does not have associated numpy dtype findable by find_common_typero   )r"   rG   rH   rN   rQ   rO   Úunitr–   rP   rS   rM   rq   rr   rs   rt   ru   rv   Útest_get_common_dtyperë   rz   r%   r&   rï   ’  s2    
ÿ
þ
üûû
ùù
ø	
÷þÿz#TestBaseDtype.test_get_common_dtypec                    s0   |j }tj |¡r t|ƒs,t‚ntƒ  |¡ d S rƒ   )r"   rG   rH   rR   r   rˆ   rv   Útest_is_not_string_type)ry   r'   rW   rz   r%   r&   rð   ©  s    z%TestBaseDtype.test_is_not_string_type)
r|   r}   r~   ræ   ré   rê   rì   rï   rð   r   r%   r%   rz   r&   rå   ^  s   rå   c                   @   s   e Zd ZdS )ÚTestBaseIndexNrœ   r%   r%   r%   r&   rñ   ±  s   rñ   c                       s,   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©rp   Úrunc                    s   t ƒ  |¡ d S rƒ   )rv   Ú	test_view©ry   rX   rz   r%   r&   rõ   ¶  s    zTestBaseInterface.test_view)r|   r}   r~   rs   rt   ru   rõ   r   r%   r%   rz   r&   rò   µ  s
    ÿrò   c                       s$   e Zd Zdd„ Z‡ fdd„Z‡  ZS )ÚTestBaseMissingc              	   C   sv   ||  ¡   }|d }| |¡}||k	s,t‚|  ||¡ t t¡� |jdd�}W 5 Q R X ||k	sft‚|  ||¡ d S )Nr   Zbackfill)Úmethod)ÚisnaZfillnarˆ   r†   r…   Zassert_produces_warningr   )ry   rX   Zvalidr‹   r%   r%   r&   Útest_fillna_no_op_returns_copy¾  s    
z.TestBaseMissing.test_fillna_no_op_returns_copyc              	      s2   t jt|d k	dd�� tƒ  ||¡ W 5 Q R X d S )NF)Zcheck_stacklevel)r…   Zmaybe_produces_warningr   rv   Útest_fillna_series_method)ry   r\   Zfillna_methodrz   r%   r&   rû   Ê  s      ÿz)TestBaseMissing.test_fillna_series_method)r|   r}   r~   rú   rû   r   r%   r%   rz   r&   r÷   ½  s   r÷   c                   @   s   e Zd ZdS )ÚTestBasePrintingNrœ   r%   r%   r%   r&   rü   Ñ  s   rü   c                       s,   e Zd Zejjddd�‡ fdd„ƒZ‡  ZS )ÚTestBaseReshapingú5GH 45419: pyarrow.ChunkedArray does not support viewsFró   c                    s   t ƒ  |¡ d S rƒ   )rv   Útest_transposerö   rz   r%   r&   rÿ   Ö  s    z TestBaseReshaping.test_transpose)r|   r}   r~   rs   rt   ru   rÿ   r   r%   r%   rz   r&   rý   Õ  s
    ÿrý   c                       s,   e Zd Zejjddd�‡ fdd„ƒZ‡  ZS )ÚTestBaseSetitemrþ   Fró   c                    s   t ƒ  |¡ d S rƒ   )rv   Útest_setitem_preserves_viewsrö   rz   r%   r&   r  Þ  s    z,TestBaseSetitem.test_setitem_preserves_views)r|   r}   r~   rs   rt   ru   r  r   r%   r%   rz   r&   r   Ý  s
    ÿ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 |¡r6|j tjj	t
d|› d�d�¡ nˆtj |¡rf|jdkrf|j tjj	tdd�¡ nXtj |¡rŠ|j tjj	dd�¡ n4t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 |¡�rt|ƒ}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 binaryro   r   r  z)Invalid type for timedelta scalar: NATypeZ
with_dtyperF   F)ÚindexZna_rep)r'   r  r  )r'   r"   rG   rH   rM   rq   rr   rs   rt   ru   rT   rO   rî   rÝ   rS   rP   rÇ   rU   rà   r­   ÚstrZto_csvÚnpÚnanr   r   Zread_csvÚassert_frame_equal)
ry   r  rX   r  r$   rW   rä   Z
csv_outputr‹   r©   r%   r%   r&   Útest_EA_typesæ  sX    
þÿþÿÿ
ÿþýþÿ
üzTestBaseParsing.test_EA_typesN)r|   r}   r~   rs   rt   r·   r   r  r%   r%   r%   r&   r  å  s   r  c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚTestBaseUnaryOpsc                    sD   |j j}tj |¡s4|j tjj	tj
d|› �d�¡ tƒ  |¡ d S )Nz$pyarrow.compute.invert does support r’   )r'   r"   rG   rH   rI   rq   rr   rs   rt   ru   r•   rv   Útest_invertrx   rz   r%   r&   r    s    þÿzTestBaseUnaryOps.test_invert)r|   r}   r~   r  r   r%   r%   rz   r&   r    s   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 |¡rD|dkrD|j tjj	tj
d|› d|› d�d�¡ tƒ  ||¡ d S )Nr-   z
diff with z and periods=z will overflowr’   )r'   r"   rG   rH   rL   rq   rr   rs   rt   ru   r—   rv   Ú	test_diff)ry   rX   r  r$   rW   rz   r%   r&   r  %  s    ýÿzTestBaseMethods.test_diffc                 C   s.   |d d… }|  ¡ }|jtt ¡ ƒks*t‚d S )Nr9   )Úvalue_countsr'   r   rG   rÎ   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 )	Nr9   rF   T)Ú	normalizer-   Z
proportion)r  rè   zdouble[pyarrow])Úuniquer	  rV   rù   rU   r­   r'   r  Z
sort_indexÚlenr  r¥   r¦   )ry   rX   r$   Úvaluesr§   r‹   r©   r%   r%   r&   Ú test_value_counts_with_normalize9  s      ÿ
z0TestBaseMethods.test_value_counts_with_normalizec                    sv   |j j}tj |¡r2|j tjj	|› d�d�¡ n0tj 
|¡rbtrb|j tjj	d|› �tjd�¡ tƒ  |||¡ d S )NrØ   ro   úNo pyarrow kernel for r²   )r'   r"   rG   rH   rI   rq   rr   rs   rt   ru   rM   r   r•   rv   Útest_argmin_argmax)ry   rf   rg   rm   r$   rW   rz   r%   r&   r  G  s    ÿÿþÿz"TestBaseMethods.test_argmin_argmaxzop_name, skipna, expected)ÚidxmaxTr   )ÚidxminTr1   )ÚargmaxTr   )ÚargminTr1   r  Fr  )r  Fr/   )r  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"   rG   rH   rM   r   rq   rr   rs   rt   ru   r•   rv   Útest_argreduce_series)ry   rg   r¨   rŸ   r©   r$   rW   rz   r%   r&   r  Z  s    þÿ   ÿz%TestBaseMethods.test_argreduce_seriesc                    s@   |j j}tj |¡r0|j tjj	|› d�d�¡ t
ƒ  |¡ d S r×   )r'   r"   rG   rH   rI   rq   rr   rs   rt   ru   rv   Útest_factorizerÚ   rz   r%   r&   r   v  s    ÿÿzTestBaseMethods.test_factorizezbool[pyarrow]c           	   	      s´   t |dƒƒjj}tj |¡rPtjjt	|› d|› �d�}|j
 |¡ tƒ  |¡ n`tj |¡r¤|dƒ\}}t |¡}t |¡}t t	¡� | |dd„ ¡ W 5 Q R X ntƒ  |¡ d S )Nr-   z cannot be added to r’   r1   c                 S   s   | | S rƒ   r%   )Úx1Zx2r%   r%   r&   Ú<lambda>”  ó    z2TestBaseMethods.test_combine_add.<locals>.<lambda>)Únextr'   r"   rG   rH   rP   rs   rt   ru   rÇ   rq   rr   rv   Útest_combine_addr³   rU   r­   r�   Úcombine)	ry   Zdata_repeatedr$   rW   rt   Z
orig_data1Z
orig_data2Ús1Ús2rz   r%   r&   r%  ‚  s    þ

z TestBaseMethods.test_combine_addc                    sB   |j j}tj |¡r0|j tjj	|› d�d�¡ t
ƒ  ||¡ d S r×   )r'   r"   rG   rH   rI   rq   rr   rs   rt   ru   rv   Útest_searchsorted)ry   rf   Ú	as_seriesr$   rW   rz   r%   r&   r)  ™  s    ÿÿz!TestBaseMethods.test_searchsortedc                 C   s   t  |¡ t  |¡¡st‚d S rƒ   )rU   r­   r”   rˆ   rö   r%   r%   r&   Útest_basic_equals£  s    z!TestBaseMethods.test_basic_equals)r|   r}   r~   rs   rt   r·   r  r  r  r  r	  r
  r  r   Z_combine_le_expected_dtyper%  r)  r+  r   r%   r%   rz   r&   r  $  s.   

øþ

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 |¡sbtj |¡rv| 	d¡}| 	d¡}t
j||f|Ž d S )Nr   zfloat[pyarrow])r‡   rU   rà   Úilocr'   r"   rG   rH   rM   r¥   r…   Úassert_equal)ÚclsÚleftÚrightÚkwargsZleft_pa_typeZ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Ú_Zrtruedivc                 S   s   t  || ¡S rƒ   )r	  Údivide©ÚxÚyr%   r%   r&   r"  ¾  r#  z8TestBaseArithmeticOps.get_op_from_name.<locals>.<lambda>Z	rfloordivc                 S   s   t  || ¡S rƒ   )r	  Zfloor_divider5  r%   r%   r&   r"  À  r#  )Ústripr…   Úget_op_from_name)ry   r¨   Zshort_opnamer%   r%   r&   r9  º  s    
z&TestBaseArithmeticOps.get_op_from_namec                 C   sì   t j | |||¡}d}t|tjƒrNd}|jd d …df }|jd d …df j}n
|}|j}t 	|j
¡}tj |j¡rª|jj}	t|ƒttfkr–|	dkr–d}	| d|	› d�¡}n| |j¡}t|j
ƒ|ƒ}
|rÞtj|
|j|jd�}n
t |
¡}|S )	NFTr   )ÚsÚmsr  z	duration[ú])r  râ   )r   ÚBaseArithmeticOpsTestsÚ_combiner‡   rU   rà   r-  r'   rG   rV   Z_valuesrH   rP   rZ   r"   rî   r   r   r˜   r  râ   r­   )ry   ÚobjÚotherÚopr©   Z	was_frameZexpected_dataZoriginal_dtypeZpa_expectedrî   Zpd_expectedr%   r%   r&   Ú_patch_combineÄ  s0      ÿ
z$TestBaseArithmeticOps._patch_combinec                 C   s.   t  o,|dkrtj |¡p,|dko,tj |¡S )N©Ú__add__Ú__radd__©Ú__sub__Ú__rsub__)r   rG   rH   rP   r³   )ry   rÊ   rW   r%   r%   r&   Ú_is_temporal_supportedê  s    
ÿ
üz,TestBaseArithmeticOps._is_temporal_supportedc                 C   s~   |   ||¡}|dkrt}n`|r$d }nV|dkrJtj |¡sDtj |¡rJd }n0tj |¡svtj |¡svtj |¡svtj	}nd }|S )N>   Ú__mod__Ú__rmod__rC  )
rI  rT   rG   rH   rR   rS   rJ   ri   rM   r•   )ry   rÊ   rW   Úarrow_temporal_supportedÚexcr%   r%   r&   Ú_get_scalar_exceptionò  s(    
ÿ
ÿ
ÿ
þ
ýz+TestBaseArithmeticOps._get_scalar_exceptionc                 C   s  d }|   ||¡}|dkrVtj |¡s<tj |¡s<tj |¡rVtsVtjj	d|› �d�}n¶|rxtjj	t
|› d|› d�d�}n”|dkr°tj |¡s˜tj |¡r°ts°tjj	tjdd�}n\|d	krÜtj |¡rÜtsÜtjj	tjdd�}n0|d
k�rtj |¡�rt�rtjj	tjdd�}|S )NÚ__rpow__z<GH#29997: 1**pandas.NA == 1 while 1**pyarrow.NA == NULL for ro   z  not supported betweenpd.NA and z Python scalarr’   Ú__rfloordiv__zdivide by 0Ú__rtruediv__Ú__pow__z'Invalid decimal function: power_checked)rI  rG   rH   rJ   ri   rM   r   rs   rt   ru   rÇ   r—   )ry   rÊ   rW   rt   rL  r%   r%   r&   Ú_get_arith_xfail_marker	  sj    ÿ
ý
ü
ûù	þýÿ
þ
þýþÿ
þýþÿ
þýþz-TestBaseArithmeticOps._get_arith_xfail_markerc                    s®   |j j}|dkr2tj |¡s(tj |¡r2t d¡ |  ||¡| _	|  
||¡}|d k	r`|j |¡ |dkrttj |¡sŒtj |¡sŒtj |¡rœ| td| j¡ tƒ  ||¡ d S ©NrK  z%Skip testing Python string formattingÚ__floordiv__r>  )r'   r"   rG   rH   rR   rS   rs   r¬   rN  Zseries_scalar_excrS  rq   rr   ri   rP   rO   Úsetattrr,  rB  rv   Útest_arith_series_with_scalar©ry   rX   Úall_arithmetic_operatorsr$   ÚmonkeypatchrW   rt   rz   r%   r&   rW  C  s0    
ÿ
ÿ
 ÿþ
ý
û
ú
z3TestBaseArithmeticOps.test_arith_series_with_scalarc                    s®   |j j}|dkr2tj |¡s(tj |¡r2t d¡ |  ||¡| _	|  
||¡}|d k	r`|j |¡ |dkrttj |¡sŒtj |¡sŒtj |¡rœ| td| j¡ tƒ  ||¡ d S rT  )r'   r"   rG   rH   rR   rS   rs   r¬   rN  Zframe_scalar_excrS  rq   rr   ri   rP   rO   rV  r,  rB  rv   Útest_arith_frame_with_scalarrX  rz   r%   r&   r[  b  s0    
ÿ
ÿ
 ÿþ
ý
û
ú
z2TestBaseArithmeticOps.test_arith_frame_with_scalarc           
      C   s  |j j}|  ||¡| _|dkrNtj |¡rNtsN|j 	t
jjtjd|› �d�¡ |  ||¡}|d k	rn|j 	|¡ |}t |¡}t tj|jd gt|ƒ |j d�¡}	tj |¡sÚtj |¡rÂ|dksÚtj |¡sÚtj |¡rê| td| j¡ | j|||	| jd� d S )	NrF  zJImplemented pyarrow.compute.subtract_checked which raises on overflow for r’   r   rF   )Ú__truediv__rQ  r>  )rM  )r'   r"   rN  Zseries_array_excrG   rH   rL   r   rq   rr   rs   rt   ru   r—   rS  rU   r­   rV   r-  r  rJ   ri   rP   rO   rV  r,  rB  Zcheck_opname)
ry   rX   rY  r$   rZ  rW   rt   r¨   r§   r@  r%   r%   r&   Útest_arith_series_with_array�  sJ     ÿÿÿ
úù	ýÿ

&
ÿ
ýü
ú
ù	z2TestBaseArithmeticOps.test_arith_series_with_arrayc              	      sÔ   |j j}tj |¡r^tj |¡s^t |¡}tr4d}nd}t	j
t|d�� ||  W 5 Q R X d S trntj |¡sztj |¡rš|j t	jjtd|› �d�¡ n*| d¡rÄ|j t	jjtjd|› �d�¡ tƒ  |¡ d S )Nz7Function add_checked has no kernel matching input typesú9Function 'add_checked' has no kernel matching input typesr�   z add_checked not implemented for r’   Úint8zraises on overflow for )r'   r"   rG   rH   r³   rP   rU   r­   r   rs   r�   rT   r   rI   rq   rr   rt   ru   r”   r—   rv   Ú$test_add_series_with_extension_array)ry   rX   r$   rW   r§   rË   rz   r%   r&   r`  ³  s4    

ÿþÿ
þÿz:TestBaseArithmeticOps.test_add_series_with_extension_array)r|   r}   r~   rT   Z
divmod_excÚclassmethodr.  r9  rB  rI  rN  rS  rW  r[  r]  r`  r   r%   r%   rz   r&   r,  ¨  s   

&:2r,  c                   @   s8   e Zd Zdd„ Zdd„ Zej ddddg¡d	d
„ ƒZdS )ÚTestBaseComparisonOpsc           
   
   C   s  t  |¡}t  t j|jd gt|ƒ |jd�¡}|jdkrŽ|||ƒ}|d |ksTt‚|d |ksdt‚| ||¡}||d< ||d< |  	||¡ n‚d }z|||ƒ}W n& t
k
rÆ }	 z|	}W 5 d }	~	X Y nX |d krê| ||¡}|  	||¡ n&t t|ƒ¡� | ||¡ W 5 Q R X d S )Nr   rF   )ÚeqÚneé   éa   )rU   r­   rV   r-  r  r'   r|   rˆ   r&  r¦   Ú	Exceptionrs   r�   rZ   )
ry   rX   Úcomparison_oprm   r§   r@  r‹   r©   rM  Úerrr%   r%   r&   Útest_compare_arrayÚ  s(    
&

z(TestBaseComparisonOps.test_compare_arrayc              	   C   s*   t jtdd�� ||tƒ ƒ W 5 Q R X d S )Nz'.* not implemented for <class 'object'>r�   )rs   r�   rT   Úobject)ry   rX   rh  r%   r%   r&   Útest_invalid_other_compú  s
     ÿz-TestBaseComparisonOps.test_invalid_other_compÚmasked_dtypeÚbooleanZInt64r¢   c           	      C   sŠ   ddd g}t j||d�}t j|| ¡ › d�d�}|||ƒ}|tjtjtjfkrZddd g}n
ddd g}t j|tt 	¡ ƒd�}t
 ||¡ d S )Nr-   r   rF   rÐ   FT)rU   r­   ÚlowerÚoperatorÚltÚgtrd  r   rG   Úbool_r…   r¦   )	ry   rm  rh  rX   Ú
ser_maskedÚser_par‹   Úexpr©   r%   r%   r&   Útest_comp_masked_numpy  s    


z,TestBaseComparisonOps.test_comp_masked_numpyN)	r|   r}   r~   rj  rl  rs   rt   r·   rw  r%   r%   r%   r&   rb  Ù  s    rb  c                   @   sˆ  e Zd ZdZdd„ Zej dddddgfej	dddgfddddgfe
 d¡dddgfddddgfe
 d¡dddgfg¡dd	„ ƒZd
d„ Zej dddddgfej	dddgfddddgfddddgfe
 d¡dddgfe
 d¡dddgfg¡dd„ ƒZdd„ Zej dddddgfej	dddgfddddgfe
 d¡dddgfe
 d¡dddg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ddd gd dd�}||B }t jdddddd dd d g	dd�}t ||¡ ||B }t ||¡ t |t jdgd dgd  d gd  dd�¡ t |t jddd gd dd�¡ d S ©NTrß   Fúboolean[pyarrow]rF   ©rU   r­   r…   r¦   ©ry   r;   r<   r‹   r©   r%   r%   r&   Útest_kleene_or  s$    (þ&þ ÿzTestLogicalOps.test_kleene_orzother, expectedNTFc                 C   sj   t jddd gdd�}||B }t j|dd�}t ||¡ ||B }t ||¡ t |t jddd gdd�¡ d S ©NTFrz  rF   r{  ©ry   r@  r©   r;   r‹   r%   r%   r&   Útest_kleene_or_scalar)  s     ÿz$TestLogicalOps.test_kleene_or_scalarc              
   C   sÜ   t jdgd dgd  d gd  dd�}t jddd gd dd�}||@ }t jddd dddd dd g	dd�}t ||¡ ||@ }t ||¡ t |t jdgd dgd  d gd  dd�¡ t |t jddd gd dd�¡ d S ry  r{  r|  r%   r%   r&   Útest_kleene_andB  s$    (þ&þ ÿzTestLogicalOps.test_kleene_andc                 C   sj   t jddd gdd�}||@ }t j|dd�}t ||¡ ||@ }t ||¡ t |t jddd gdd�¡ d S r~  r{  r  r%   r%   r&   Útest_kleene_and_scalarX  s     ÿz%TestLogicalOps.test_kleene_and_scalarc              
   C   sÜ   t jdgd dgd  d gd  dd�}t jddd gd dd�}||A }t jddd ddd d d d g	dd�}t ||¡ ||A }t ||¡ t |t jdgd dgd  d gd  dd�¡ t |t jddd gd dd�¡ d S ry  r{  r|  r%   r%   r&   Útest_kleene_xorq  s$    (þ&þ ÿzTestLogicalOps.test_kleene_xorc                 C   sj   t jddd gdd�}||A }t j|dd�}t ||¡ ||A }t ||¡ t |t jddd g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`   ddd g}t j|dd�}t j|dd�}t||ƒ|ƒ}t j|dd gtt ¡ ƒd�}t ||¡ d S )NTFrn  rF   rz  )rU   r­   r£   r   rG   rs  r…   r¦   )ry   rA  rv  rX   rt  ru  r‹   r©   r%   r%   r&   Útest_logical_masked_numpyŸ  s    

z(TestLogicalOps.test_logical_masked_numpy)r|   r}   r~   Ú__doc__r}  rs   rt   r·   rU   rl   r	  rs  r€  r�  r‚  rƒ  r„  rˆ  r%   r%   r%   r&   rx    sX   úþ
úþ
ûþ

ýþrx  c               	   C   sr   t jtdd�� t d¡ W 5 Q R X t d¡} tt dd¡ƒ}| |ksJt‚t jtdd�� t d¡ W 5 Q R X d S )NzPassing pyarrow typer�   z#not_a_real_dype[s, tz=UTC][pyarrow]ztimestamp[s, tz=UTC][pyarrow]r:  ÚUTCzdecimal(7, 2)[pyarrow])rs   r�   rT   r   rç   rG   Ú	timestamprˆ   )r'   r©   r%   r%   r&   ÚFtest_arrowdtype_construct_from_string_type_with_unsupported_parameters±  s    
rŒ  c               	   C   s8   d} d}t jt|d�� tjtdƒ| d� W 5 Q R X d S )Nzint64[pyarrow]foobar[pyarrow]zYPassing pyarrow type specific parameters \(\[pyarrow\]\) in the string is not supported\.r�   rß   rF   )rs   r�   rT   rU   r­   Úrange)ÚinvalidrË   r%   r%   r&   Ú;test_arrowdtype_construct_from_string_type_only_one_pyarrow¾  s
    ÿr�  ÚinterpolationZlinearro  ÚhigherZnearestZmidpointÚquantiler,   c              	   C   sN  | j j}|  dddg¡} t | ¡}tj |¡sFtj |¡sFtj 	|¡r‚t
rPd}nd}tjtj|d�� |j||d� W 5 Q R X d S tj |¡sÞtj |¡sÞtj |¡r¬t
s¬n2tj | jj¡r¾n |j tjjtjd|› �d�¡ |  dddg¡} t | ¡}|j||d�}tj |¡�rÆ|dk�rÆ|j�r>d	|j› d
|j› d�}nd	|j› d�}| |¡}	|	j||d�}
|dk�r–|jdk�r†|
jdd�}
||
k�sÂt‚n,|jdk�r®|
j  d¡}
t! "||
 | j ¡¡ d S |dk�rä|| d k�sJt‚nftj|  ddg¡ddgd�}
tj |¡�s*tj |¡�s*tj |¡�r>|
 d¡}
| d¡}t! "||
¡ d S )Nr   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’   )ro  r‘  zM8[z, r<  r,   r  F)Úwarn)r  úfloat64[pyarrow])#r'   r"   ÚtakerU   r­   rG   rH   rR   rS   rI   r   rs   r�   r•   r’  ri   rJ   rM   r³   r„   rZ   rq   rr   rt   ru   rO   r–   rî   r¥   Úto_pydatetimerˆ   ÚdtÚfloorr…   r¦   )rX   r�  r’  r$   rW   r§   rË   r‹   Zpd_dtypeZser_npr©   r%   r%   r&   Útest_quantileÉ  sz    

ÿ
þ
ý
ÿ
þ
ýýþÿ




ÿ
þ
ý

rš  ztake_idx, exp_idxr1   r(   Z
multi_modeZsingle_mode)r!   c                 C   s@   |   |¡}t |¡}|jdd�}t |   |¡¡}t ||¡ d S )NT©Zdropna)r–  rU   r­   Úmoder…   r¦   )rc   Ztake_idxZexp_idxrX   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   rF   Fr›  )rU   r­   r'   rœ  r…   r¦   )rX   Z	more_nansr‹   r©   r%   r%   r&   Útest_mode_dropna_false_mode_na&  s    rž  zarrow_dtype, expected_typeé   Úf1Úf2c                 C   s   t | ƒj|kst‚d S rƒ   )r   rZ   rˆ   )Úarrow_dtypeZexpected_typer%   r%   r&   Útest_arrow_dtype_type2  s    r£  c                  C   sj   t t dddg¡ƒ} t| ƒs t‚tjj | ¡s2t‚t 	t
t| ƒƒ¡}||  }|t | ¡ }t ||¡ d S )NTF)r   rG   rV   r   rˆ   rU   ÚcoreÚcommonZis_bool_indexerr­   r�  r  r	  Zasarrayr…   r¦   )rX   r:  r‹   r©   r%   r%   r&   Útest_is_bool_dtypeF  s    r¦  c                 C   sJ   | j j}tj |¡s,tj |¡s,tj |¡r:t| ƒsFt‚nt| ƒrFt‚d S rƒ   )	r'   r"   rG   rH   rJ   ri   rM   r   rˆ   ©rX   r¯   r%   r%   r&   Útest_is_numeric_dtypeQ  s    
ÿ
þ
ýr¨  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S rƒ   )r'   r"   rG   rH   ri   r   rˆ   r§  r%   r%   r&   Útest_is_integer_dtype^  s    r©  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S rƒ   )r'   r"   rG   rH   ri   r   rˆ   r§  r%   r%   r&   Útest_is_any_integer_dtypeg  s    rª  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S rƒ   )r'   r"   rG   rH   rK   r   rˆ   r§  r%   r%   r&   Útest_is_signed_integer_dtypep  s    r«  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S rƒ   )r'   r"   rG   rH   rL   r   rˆ   r§  r%   r%   r&   Útest_is_unsigned_integer_dtypex  s    r¬  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S rƒ   )r'   r"   rG   rH   rJ   r   rˆ   r§  r%   r%   r&   Útest_is_float_dtype€  s    r­  c                 C   sl   t  | ¡}| d¡}t |¡}t |¡}t|ƒt|ƒks<t‚t |¡}t 	||¡ t |¡}t 	||¡ d S )Nr1   )
rU   r­   ÚheadÚpickleÚdumpsr  rˆ   Úloadsr…   r¦   )rX   r©   Zexpected_slicedZfull_pickledZsliced_pickledr‹   Zresult_slicedr%   r%   r&   Útest_pickle_roundtripˆ  s    





r²  c                 C   sH   | j  ¡ j}| | j¡}t|jtƒr(t‚t|jtƒs8t‚t 	|| ¡ d S rƒ   )
r„   Ú	to_pandasrV   r¥   r'   r‡   r   rˆ   r…   r†   )rX   Zpd_arrayr‹   r%   r%   r&   Útest_astype_from_non_pyarrow˜  s
    r´  c                  C   s6   t  dg¡} |  d¡}t jdgdd�}t ||¡ d S )Nz1.0r•  r*   rF   )rU   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 |¡r8t t	| ƒ¡}nt | j¡}| j
rd| t¡}tj|t | ¡< t ||¡ d S rƒ   )Úto_numpyr„   rZ   rG   rH   rP   rO   r	  rV   ÚlistZ_hasnar¥   rk  rU   rl   rù   r…   Úassert_numpy_array_equal)rX   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ƒsDt‚t	 
||¡ d S )Nr-   r¡   rF   r   )rU   rV   r·  r	  rl   rk  r‡   Úintrˆ   r…   r¹  )rX   Ú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]rF   rÏ   )r'   rm   r1   ©rU   rV   rl   r·  r	  r…   r¹  )Zna_valrv  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¾  rF   r1   rk  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   ©rZ   r/   )
Úcopyr   rG   rV   r  r„   rZ   r…   r†   Útolist)rX   Ú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 |¡sRtj |¡sRtj 	|¡rbd}tj
}d}nd}t}d}tj||d�� || d d …< W 5 Q R X d S )Né{   zInvalid value '123' for dtypeÚfoozCould not convertzInvalid value 'foo' for dtyper�   )r„   rZ   rG   rH   rR   rS   rÇ   ri   rJ   rI   r—   rs   r�   )rX   r¯   Z
fill_valueri  rË   r%   r%   r&   Útest_setitem_invalid_dtypeë  s&    
ÿ
þ
ýrÉ  zreturns object with 7.0ro   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Â  ©Ztypes_mapperrF   )rG   rV   rU   Ú	TimestampÚdate32r³  r   Zdate64Úgetr­   r…   r¦   )Z
date_arrayr‹   r©   r%   r%   r&   Ú&test_from_arrow_respecting_given_dtype  s     ÿÿ
þrÎ  zdoesn't raise with 7c               	   C   sT   t jddgt  ¡ d�} tjt jdd��$ | jt  ¡ tt  ¡ ƒij	d� W 5 Q R X d S )NrÑ   ç      @rÂ  zFloat value 1.5 was truncatedr�   rÊ  )
rG   rV   rÏ   rs   r�   r—   r³  r   rÎ   rÍ  )rV   r%   r%   r&   Ú-test_from_arrow_respecting_given_dtype_unsafe  s    rÐ  c                  C   s�   d} t jdddt jg| d�}| d¡}t jdddt jg| d�}t ||¡ t jd	t jd
g| d�}| d¡}t jdt jdg| d�}t ||¡ d S )Nr•  r+   g®Gáz®ó?g{®Gáz@rF   r-   g333333ó?gÍÌÌÌÌÌ@gš™™™™Ù^@g¤p=
×cL@r/   g      ^@g      N@)rU   r­   rl   Úroundr…   r¦   )r'   r§   r‹   r©   r%   r%   r&   Ú
test_round  s    

rÒ  c              	   C   s^   | \}}}|   dddg¡}tj|d< |r2t |¡}d}tjt|d�� | |¡ W 5 Q R X d S )Nr1   r   r-   r/   zOsearchsorted requires array to be sorted, which is impossible with NAs present.r�   )r–  rU   rl   r­   rs   r�   rÝ   Zsearchsorted)rf   r*  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 )
Nr6  r7  rF   r-   r1   )r;   r<   r;   r<   )Zby)rU   rà   r­   r   rG   Ú
dictionaryÚint32r™   rÃ  Zsort_valuesr…   r  )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 )NrØ  rF   r-   )
rU   r­   r   rG   r™   r  r¹   rÕ  r…   r¦   )r×  r§   r‹   r©   r%   r%   r&   Útest_str_countE  s    rÙ  c               	   C   sH   t jdd gtt ¡ ƒd�} tjtdd�� | jj	ddd� W 5 Q R X d S )NrØ  rF   z	count notr�   r-   ©Úflags)
rU   r­   r   rG   r™   rs   r�   rT   r  r¹   ©r§   r%   r%   r&   Ú test_str_count_flags_unsupportedM  s    rÝ  zside, str_funcr0  Úrjustr1  ÚljustZbothÚcenterc                 C   sb   t jdd gtt ¡ ƒd�}|jjd| dd�}t jtd|ƒddƒd gtt ¡ ƒd�}t 	||¡ d S )Nr;   rF   rß   r6  )ÚwidthÚsideZfillchar)
rU   r­   r   rG   r™   r  Úpadr£   r…   r¦   )râ  Zstr_funcr§   r‹   r©   r%   r%   r&   Útest_str_padS  s     
ÿrä  c               	   C   sH   t jdd gtt ¡ ƒd�} tjtdd�� | j 	ddd¡ W 5 Q R X d S )Nr;   rF   zInvalid side: foor�   rß   rÈ  r6  )
rU   r­   r   rG   r™   rs   r�   rÝ   r  rã  rÜ  r%   r%   r&   Útest_str_pad_invalid_side_  s    rå  zpat, case, na, regex, expÚabFTZAbz	a[a-z]{1}z	A[a-z]{1}c                 C   sT   t jdd gtt ¡ ƒd�}|jj| |||d�}t j|tt ¡ ƒd�}t 	||¡ d S )NrØ  rF   )ÚcaseÚnaÚregex)
rU   r­   r   rG   r™   r  Úcontainsrs  r…   r¦   )r×  rç  rè  ré  rv  r§   r‹   r©   r%   r%   r&   Útest_str_containse  s    rë  c               	   C   sH   t jdd gtt ¡ ƒd�} tjtdd�� | jj	ddd� W 5 Q R X d S )NrØ  rF   zcontains notr�   r;   r-   rÚ  )
rU   r­   r   rG   r™   rs   r�   rT   r  rê  rÜ  r%   r%   r&   Ú#test_str_contains_flags_unsupportedv  s    rì  zside, pat, na, expÚ
startswithr<   ÚendswithZbcc                 C   sT   t jdd gtt ¡ ƒd�}t|j| ƒ||d�}t j|tt ¡ ƒd�}t 	||¡ d S )NrØ  rF   )rè  ©
rU   r­   r   rG   r™   r£   r  rs  r…   r¦   )râ  r×  rè  rv  r§   r‹   r©   r%   r%   r&   Útest_str_start_ends_with|  s    
rð  zarg_name, argÚreplrç  rÛ  r-   c              	   C   sZ   t jdd gtt ¡ ƒd�}ddddœ}||| < tjtdd�� |jj	f |Ž W 5 Q R X d S )	NrØ  rF   r<   r6  T)r×  rñ  ré  zreplace is not supportedr�   )
rU   r­   r   rG   r™   rs   r�   rT   r  Úreplace)Zarg_nameÚargr§   r2  r%   r%   r&   Útest_str_replace_unsupportedŒ  s
    rô  zpat, repl, n, regex, expr;   r6  r/   ZxbxcZxbacz[a-b]Zxxxcc                 C   sT   t jdd gtt ¡ ƒd�}|jj| |||d�}t j|tt ¡ ƒd�}t ||¡ d S )NZabacrF   )Únré  )	rU   r­   r   rG   r™   r  rò  r…   r¦   )r×  rñ  rõ  ré  rv  r§   r‹   r©   r%   r%   r&   Útest_str_replace˜  s    	rö  c               	   C   sH   t jdd gtt ¡ ƒd�} tjtdd�� | j 	ddg¡ W 5 Q R X d S )NrØ  rF   zrepeat is notr�   r-   r1   )
rU   r­   r   rG   r™   rs   r�   rT   r  ÚrepeatrÜ  r%   r%   r&   Útest_str_repeat_unsupported§  s    rø  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Ø  rF   r1   Zabcabc)	rU   r­   r   rG   r™   r  r÷  r…   r¦   rµ  r%   r%   r&   Útest_str_repeat­  s    rù  zpat, case, na, expc                 C   sR   t jdd gtt ¡ ƒd�}|jj| ||d�}t j|tt ¡ ƒd�}t 	||¡ d S ©NrØ  rF   )rç  rè  ©
rU   r­   r   rG   r™   r  rŽ   rs  r…   r¦   ©r×  rç  rè  rv  r§   r‹   r©   r%   r%   r&   Útest_str_match¹  s    rý  ZAbcc                 C   sR   t jdd gtt ¡ ƒd�}|jj| ||d�}t j|tt ¡ ƒd�}t 	||¡ d S rú  rû  rü  r%   r%   r&   Útest_str_fullmatchË  s    rþ  zsub, start, end, exp, exp_typrß   c                 C   sN   t jdd gtt ¡ ƒd�}|jj| ||d�}t j|t|ƒd�}t ||¡ d S )NrØ  rF   )ÚstartÚend)	rU   r­   r   rG   r™   r  Úfindr…   r¦   )Úsubrÿ  r   rv  Zexp_typr§   r‹   r©   r%   r%   r&   Útest_str_findÝ  s    r  c               	   C   sH   t jdd gtt ¡ ƒd�} tjtdd�� | jj	ddd� W 5 Q R X d S )NrØ  rF   zfind not implementedr�   ræ  r-   )rÿ  )
rU   r­   r   rG   r™   rs   r�   rT   r  r  rÜ  r%   r%   r&   Útest_str_find_notimplementedè  s    r  zi, expÚer^   éýÿÿÿc                 C   sN   t jddd gtt ¡ ƒd�}|j | ¡}t j|tt ¡ ƒd�}t ||¡ d S )NrØ  ÚderF   )	rU   r­   r   rG   r™   r  rÍ  r…   r¦   )Úirv  r§   r‹   r©   r%   r%   r&   Útest_str_getî  s    r	  z=TODO: StringMethods._validate should support Arrow list typesc                  C   sZ   t  tt tdƒtdƒd g¡ƒ¡} | j d¡}t jddd gtt 	¡ ƒd�}t
 ||¡ d S )NrØ  Ú123ú=za=b=cz1=2=3rF   )rU   r­   r   rG   rV   r¸  r  Újoinr   r™   r…   r¦   rµ  r%   r%   r&   Útest_str_joinÿ  s    "r  zstart, stop, step, expc                 C   sP   t jdd gtt ¡ ƒd�}|j | ||¡}t j|tt ¡ ƒd�}t ||¡ d S ©NÚabcdrF   )	rU   r­   r   rG   r™   r  Úslicer…   r¦   )rÿ  ÚstopÚsteprv  r§   r‹   r©   r%   r%   r&   Útest_str_slice
  s    	r  zstart, stop, repl, expZaxcdZxcdZcdc                 C   sP   t jdd gtt ¡ ƒd�}|j | ||¡}t j|tt ¡ ƒd�}t ||¡ d S r  )	rU   r­   r   rG   r™   r  Zslice_replacer…   r¦   )rÿ  r  rñ  rv  r§   r‹   r©   r%   r%   r&   Útest_str_slice_replace  s    	r  zvalue, method, expZa1cÚisalnumz!|,ZaaaÚisalphaz!!!u   Ù Ú	isdecimalz~!r=   Úisdigitú~ÚislowerZaaAr
  Ú	isnumericZ11Iú ÚisspaceÚ zThe ThatÚistitlezthe ThatZAAAÚisupperZAAcc                 C   sR   t j| d gtt ¡ ƒd�}t|j|ƒƒ }t j|d gtt ¡ ƒd�}t 	||¡ d S ©NrF   rï  )Úvaluerø   rv  r§   r‹   r©   r%   r%   r&   Útest_str_is_functions(  s    r#  zmethod, expÚ
capitalizezAbc defÚtitlezAbc DefÚswapcasezAbC Defz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 dEFrF   ©	rU   r­   r   rG   r™   r£   r  r…   r¦   )rø   rv  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  rF   r(   )
rU   r­   r   rG   r™   r  r  rÕ  r…   r¦   rµ  r%   r%   r&   Útest_str_lenX  s    
r+  zmethod, to_strip, valr8  z abc ZxabcxÚlstripz abcZxabcÚrstripzabc Zabcxc                 C   sV   t j|d gtt ¡ ƒd�}t|j| ƒ|d�}t jdd gtt ¡ ƒd�}t ||¡ d S )NrF   )Úto_striprØ  r)  )rø   r.  Úvalr§   r‹   r©   r%   r%   r&   Útest_str_strip_  s    r0  r/  Zabc123c                 C   sP   t j| d gtt ¡ ƒd�}|j d¡}t jdd gtt ¡ ƒd�}t ||¡ d S ©NrF   r
  rØ  )	rU   r­   r   rG   r™   r  Zremovesuffixr…   r¦   ©r/  r§   r‹   r©   r%   r%   r&   Útest_str_removesuffixq  s    r3  Z123abcc                 C   sP   t j| d gtt ¡ ƒd�}|j d¡}t jdd gtt ¡ ƒd�}t ||¡ d S r1  )	rU   r­   r   rG   r™   r  Zremoveprefixr…   r¦   r2  r%   r%   r&   Útest_str_removeprefixy  s    r4  Ú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 ©NrØ  rF   )
rU   r­   r   rG   r™   r  ÚencodeÚbinaryr…   r¦   )r5  Úencodingrv  r§   r‹   r©   r%   r%   r&   Útest_str_encode�  s    	r>  c                 C   s`   t jddd gtt ¡ ƒd�}|jjd| d�}t jdgg d gtt t ¡ ¡ƒd�}t 	||¡ d S )NrØ  ZefgrF   r<   rÚ  )
rU   r­   r   rG   r™   r  ÚfindallÚlist_r…   r¦   )rÛ  r§   r‹   r©   r%   r%   r&   Útest_str_findall�  s    $rA  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 5 Q R X d S )NÚabcbarF   r^   r1   zsubstring not foundr�   rÈ  )rU   r­   r   rG   r™   r£   r  rÎ   r…   r¦   rs   r�   rÝ   )rø   rÿ  r   r§   r‹   r©   r%   r%   r&   Útest_str_r_index˜  s    	rD  ÚformÚNFCÚNFKCc                 C   s>   t jdd gtt ¡ ƒd�}|j | ¡}| ¡ }t 	||¡ d S r:  )
rU   r­   r   rG   r™   r  r  rÃ  r…   r¦   )rE  r§   r‹   r©   r%   r%   r&   Útest_str_normalizeª  s    rH  c                 C   sX   t jddd gtt ¡ ƒd�}|j d| |¡}t jddd gtt ¡ ƒd�}t 	||¡ d S )NrC  rÈ  rF   r^   r1   r/   )
rU   r­   r   rG   r™   r  ÚrfindrÎ   r…   r¦   )rÿ  r   r§   r‹   r©   r%   r%   r&   Útest_str_rfind²  s    rJ  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 )NrC  rF   rf  r<   Zbbcbb)	rU   r­   r   rG   r™   r  Ú	translater…   r¦   rµ  r%   r%   r&   Útest_str_translateÀ  s    rL  c                  C   sP   t jdd gtt ¡ ƒd�} | j d¡}t jdd gtt ¡ ƒd�}t ||¡ d S )NrC  rF   rß   zabc
ba)	rU   r­   r   rG   r™   r  Úwrapr…   r¦   rµ  r%   r%   r&   Útest_str_wrapÇ  s    rN  c                  C   sl   t jdd dgtt ¡ ƒd�} | j ¡ }t jdddgdddgdddggtt ¡ ƒdddgd	�}t	 
||¡ d S )
Nza|bza|crF   TFr;   r<   r^   )r'   râ   )rU   r­   r   rG   r™   r  Zget_dummiesrà   rs  r…   r  rµ  r%   r%   r&   Útest_get_dummiesÎ  s    

ýrO  c                  C   s  t jdd gtt ¡ ƒd�} | j d¡}t jdddgd d d ggtt ¡ ƒd�}t 	||¡ | jjddd�}t  t
t dddgd g¡ƒ¡}t ||¡ | j d¡}t jdddgd d d ggtt ¡ ƒd�}t 	||¡ | jjddd�}t  t
t dddgd g¡ƒ¡}t ||¡ d S )	NrC  rF   r<   r;   ZcbaF©ÚexpandrØ  )rU   r­   r   rG   r™   r  Ú	partitionrà   r…   r  r   rV   r¦   Ú
rpartitionrµ  r%   r%   r&   Útest_str_partitionÙ  s&     
ÿ 
ÿrT  c               	   C   st  t jddd gtt ¡ ƒd�} | j d¡}t  tt dddgd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�}t  tt ddgddgd g¡ƒ¡}t	 
||¡ | jjdddd�}t  tt ddd g¡ƒtt ddd g¡ƒdœ¡}t	 ||¡ | jjddd�}t  tt ddd g¡ƒtt dd d g¡ƒdœ¡}t	 ||¡ d S )NÚa1cbcbÚa2cbcbrF   r^   Úa1r<   Úa2r-   ©rõ  Zbcbz[1-2]T)ré  r;   Úcbcb)ré  rQ  ©r   r-   r2   rP  )rU   r­   r   rG   r™   r  Úsplitr   rV   r…   r¦   rà   r  rµ  r%   r%   r&   Útest_str_splitð  s<    ÿÿÿþÿþÿr]  c               	   C   s6  t jddd gtt ¡ ƒd�} | j d¡}t  tt dddgd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 d
dd g¡ƒtt ddd g¡ƒdœ¡}t	 ||¡ | jjddd�}t  tt ddd g¡ƒtt dd d g¡ƒdœ¡}t	 ||¡ d S )NrU  rV  rF   r^   rW  r<   rX  r-   rY  Za1cbZa2cbT)rõ  rQ  r[  r2   rP  r;   rZ  )rU   r­   r   rG   r™   r  Úrsplitr   rV   r…   r¦   rà   r  rµ  r%   r%   r&   Útest_str_rsplit	  s2    ÿÿþÿþÿr_  c               	   C   sD   t jdd gtt ¡ ƒd�} tjtdd�� | j 	d¡ W 5 Q R X d S )NrØ  rF   z,str.extract not supported with pd.ArrowDtyper�   z[ab](\d))
rU   r­   r   rG   r™   rs   r�   rT   r  ÚextractrÜ  r%   r%   r&   Útest_str_unsupported_extract:	  s     ÿra  rî   rí   r  r;  r:  c                 C   sF   ddg}t  | ¡}tj||d�}tt jdd g|d�ƒ}t ||¡ d S )NZ1000ÚNaTrF   iè  rÂ  )rG   Údurationr   r�   rV   r…   r†   )rî   Ústringsr¯   r‹   r©   r%   r%   r&   Ú#test_duration_from_strings_with_natB	  s
    
re  c              	   C   s>   | j j}tj |¡s:tjtdd�� t 	| ¡j
 W 5 Q R X d S )Nz2Can only use .dt accessor with datetimelike valuesr�   )r'   r"   rG   rH   r³   rs   r�   ÚAttributeErrorrU   r­   r˜  rj   r%   r%   r&   Útest_unsupported_dtL	  s     ÿrg  zprop, expectedÚyearéç  ÚdayZday_of_weekZ	dayofweekÚweekdayZday_of_yearZ	dayofyearÚhourÚminuteZis_leap_yearz.is_leap_year not implemented for pyarrow < 8.0r’   )ZmarksÚmicrosecondr:   ÚmonthÚ
nanosecondé   Z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	ƒrVt 
¡ }nt|tƒrjt d
¡}t  ttj|d g|d�ƒ¡}t ||¡ d S )Nri  r-   r1   rß   r(   rd   r:   rq  )rh  ro  rj  rl  rm  rr  rn  rp  rí   rF   rÂ  )rU   r­   rË  r   rG   r‹  r£   r˜  r‡   r   rÌ  r   Útime64r   rV   r…   r¦   )Úpropr©   r§   r‹   Zexp_typer%   r%   r&   Útest_dt_propertiesU	  s.    ø
õò



ru  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 )	Nri  r-   r1   rß   ©rh  ro  rj  rl  rF   r   rÂ  )rU   r­   r   r   rG   r‹  r˜  r   r   rV   rs  r…   r¦   )rî   r§   r‹   r©   r%   r%   r&   Útest_dt_time_preserve_unitŽ	  s    þ ÿrw  r–   rŠ  ú
US/Pacificc                 C   sD   t jtddddd�d gttjd| d�ƒd�}|jj}|| ks@t‚d S )	Nri  r-   r1   rß   rv  rí   ©r–   rF   )	rU   r­   r   r   rG   r‹  r˜  r–   rˆ   )r–   r§   r‹   r%   r%   r&   Ú
test_dt_tz›	  s    þrz  c                  C   sh   t jtddddd�d gtt d¡ƒd�} | j ¡ }t jdddgdddggd	d
dgdd�}t	 
||¡ d S )Nri  r-   r1   rß   rv  rí   rF   r   rh  Úweekrj  r¡   )râ   r'   )rU   r­   r   r   rG   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’   ri  r-   r1   rß   rv  rí   rF   z%Y-%m-%dT%H:%M:%Sz2023-01-02T03:00:00.000000000)r   r   rq   rr   rs   rt   ru   rG   r—   rU   r­   r   r   r‹  r˜  Ústrftimer™   r…   r¦   )r$   r§   r‹   r©   r%   r%   r&   Útest_dt_strftime³	  s"    ýÿ	þ 
ÿr  Úceilr™  rÑ  c              	   C   sˆ   t jtddddd�d gtt d¡ƒd�}tjtdd	�� t	|j
| ƒd
dd� W 5 Q R X tjtdd	�� t	|j
| ƒd
dd� W 5 Q R X d S )Nri  r-   r1   rß   rv  rí   rF   zambiguous is not supported.r�   Z1Hrb  ©Z	ambiguousznonexistent is not supported.©Únonexistent)rU   r­   r   r   rG   r‹  rs   r�   rT   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 5 Q R X tjtdd	�� t	|j
| ƒd ƒ W 5 Q R X d S )Nri  r-   r1   rß   rv  rí   rF   zfreq='1B' is not supportedr�   Z1Bz$Must specify a valid frequency: None)rU   r­   r   r   rG   r‹  rs   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 )Nri  r-   )rh  ro  rj  rí   r2   )rU   r­   r   r   rG   r‹  r£   r˜  r¥   r…   r¦   )r‡  rø   r§   rW   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 ƒƒsjt‚| d¡j ¡ }t ||¡ d S )	Nr4   r-   ri  rí   rF   c                 s   s   | ]}t |ƒtkV  qd S rƒ   )rZ   r   )Ú.0Úresr%   r%   r&   Ú	<genexpr>ú	  s     z(test_dt_to_pydatetime.<locals>.<genexpr>zdatetime64[ns])r   rU   r­   r   rG   r‹  r˜  r—  r	  rV   rk  r…   r¹  Úallrˆ   r¥   )rX   r§   r‹   r©   r%   r%   r&   Útest_dt_to_pydatetimeò	  s    
r”  Ú	date_typeé    é@   c              	   C   sR   t jtdddƒgtttd| › �ƒƒ ƒd�}tjtdd�� |j	 
¡  W 5 Q R X d S )Nr4   r6   r7   r   rF   z#to_pydatetime cannot be called withr�   )rU   r­   r   r   r£   rG   rs   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 5 Q R X tjtdd	�� | j	j
d
dd� W 5 Q R X d S )Nri  r-   r1   rß   rv  rí   rF   z ambiguous='NaT' is not supportedr�   rŠ  rb  r�  z"nonexistent='NaT' is not supportedr‚  )rU   r­   r   r   rG   r‹  rs   r�   rT   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 )
Nri  r-   r1   rß   rv  rí   rx  ry  rF   )
rU   r­   r   r   rG   r‹  r˜  r™  r…   r¦   rµ  r%   r%   r&   Útest_dt_tz_localize_none
  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�}|j d	¡}tjtddddd�d gt | ¡d
�}tj |d	¡}t	 
t|ƒ¡}t ||¡ d S )Nr“   r’   ri  r-   r1   rß   rv  rF   rx  rÂ  ©r   r   rq   rr   rs   rt   ru   rG   r—   rU   r­   r   r   r‹  r˜  r™  rV   ZcomputeZassume_timezoner   r…   r¦   )rî   r$   r§   r‹   Úexp_datar©   r%   r%   r&   Útest_dt_tz_localize$
  s&    ýÿ	þ ÿrž  znonexistent, exp_dateZshift_forwardr6   rv  Z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’   ri  rß   r6   r1   é   )rh  ro  rj  rl  rm  rí   rF   rx  r‚  rÂ  rœ  )rƒ  Zexp_dater$   r§   r‹   r�  r©   r%   r%   r&   Útest_dt_tz_localize_nonexistent=
  s     ýÿ	þr   rŸ   c                 C   sD   t jd gdd�}t|| ƒ|d�}|r.| dk}nt j}||ks@t‚d S )Nr•  rF   rž   r“  )rU   r­   r£   rl   rˆ   )rÕ   rŸ   r§   r‹   r©   r%   r%   r&   Ú#test_boolean_reduce_series_all_nullZ
  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 foxrF   )rG   rV   r\  rU   r­   r   r…   r¦   )r'   r¼  r§   r©   r%   r%   r&   Útest_series_from_string_arrayf
  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sPt	‚d S )Nih6 rF   F)
r   rG   Zchunked_arrayr	  Zonesrs  rÃ  Úzerosr„   rˆ   )rŽ  r¼  r©   r%   r%   r&   Ú/test_setitem_boolean_replace_with_mask_segfaultn
  s
    r¤  zdata, arrow_dtyper@   rA   c                 C   s:   t |ƒ}tjt | ¡|d�}tj| |d�}t ||¡ d S r!  )r   rU   rV   r	  r…   r†   )rX   r¢  r'   r‹   r©   r%   r%   r&   Ú-test_conversion_large_dtypes_from_numpy_arrayw
  s    r¥  r¯   c                 C   sh   t jdddgt| ƒd�}| ¡ }t jddddddddgtt ¡ ƒdd	d
dddddgd�}t ||¡ d S )Nr-   r1   rß   rF   rÑ   g       @rÏ  r¹   rÀ   rÂ   Úminú25%ú50%ú75%Úmax©r'   r  )rU   r­   r   ÚdescriberG   rÏ   r…   r¦   ©r¯   rX   r‹   r©   r%   r%   r&   Útest_describe_numeric_data…
  s    
ýr®  c                 C   st   t jtddƒt| ƒd�}| ¡ }t jdgt jdddddddg| jd	� ¡  td
dddddddgd�}t	 
||¡ d S )Nr-   r9   rF   é	   r:   r1   rß   rd   )rî   r¹   rÀ   rÂ   r¦  r§  r¨  r©  rª  r«  )rU   r­   r�  r   r¬  Úto_timedeltarî   rÄ  rk  r…   r¦   r­  r%   r%   r&   Útest_describe_timedelta_data’
  s    &ýr±  c              
      sb   t jtddƒtˆ ƒd�}| ¡ }t jdg‡ fdd„dD ƒ tdd	d
ddddgd�}t ||¡ d S )Nr-   r9   rF   r¯  c                    s    g | ]}t j|ˆ jˆ jd �‘qS ))r–   rî   )rU   rË  r–   rî   )r�  Úv©r¯   r%   r&   Ú
<listcomp>¦
  s   ÿz/test_describe_datetime_data.<locals>.<listcomp>)r:   r-   rß   r:   rd   r¯  r¹   rÀ   r¦  r§  r¨  r©  rª  r«  )rU   r­   r�  r   r¬  rk  r…   r¦   r­  r%   r³  r&   Útest_describe_datetime_dataŸ
  s    
þÿù	rµ  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í   rF   r1   )
rU   Zto_datetimer°  r­   r   rG   r‹  rc  r…   r¦   )Zdata_tsZdata_tdZser_tsZser_tdr‹   r©   r%   r%   r&   Ú2test_duration_overflow_from_ndarray_containing_nat°
  s    r¶  )àr‰  r   r   r   r   Údecimalr   Úior   r   rp  r¯  ÚreZnumpyr	  rs   Zpandas._libsr	   Zpandas.compatr
   r   r   r   r   r   r   Zpandas.errorsr   Zpandas.core.dtypes.commonr   Zpandas.core.dtypes.dtypesr   ZpandasrU   Zpandas._testingZ_testingr…   Zpandas.api.extensionsr   Zpandas.api.typesr   r   r   r   r   r   r   Zpandas.tests.extensionr   ZimportorskiprG   Zpandas.core.arrays.arrow.arrayr   Zpandas.core.arrays.arrow.dtyper   ZfixtureZALL_PYARROW_DTYPESr  r'   rX   r\   r]   rc   rf   rg   rk   rm   ZBaseCastingTestsrn   ZBaseConstructorsTestsr€   ZBaseGetitemTestsr›   ZBaseAccumulateTestsr�   ZBaseNumericReduceTestsr¸   ZBaseBooleanReduceTestsrÓ   ZBaseGroupbyTestsrÖ   ZBaseDtypeTestsrå   ZBaseIndexTestsrñ   ZBaseInterfaceTestsrò   ZBaseMissingTestsr÷   ZBasePrintingTestsrü   ZBaseReshapingTestsrý   ZBaseSetitemTestsr   ZBaseParsingTestsr  ZBaseUnaryOpsTestsr  ZBaseMethodsTestsr  r=  r,  ZBaseComparisonOpsTestsrb  rx  rŒ  r�  rt   r·   rš  r�  rž  r<  ÚbytesZlarge_binaryZlarge_stringr@  rÎ   r¸  Z
large_listZmap_r™   Ústructr_  ÚdictrÔ  r£  r¦  r¨  r©  rª  r«  r¬  r­  r²  r´  r¶  rº  r½  r
  rÀ  rÁ  rÆ  rÉ  ZskipifrÎ  rÐ  rÒ  rÓ  rÖ  rÙ  rÝ  rä  rå  rë  rì  rð  Úcompilerô  rö  rø  ru   rT   rù  rý  rþ  rÕ  r  r  r	  rf  r  r  r  r#  r*  r+  r0  r3  r4  r>  rA  rD  rH  rJ  rL  rN  rO  rT  r]  r_  ra  re  rg  r#   ru  rw  rz  r}  r  r…  r†  r�  r”  r˜  rš  r›  rž  rË  r   r¡  r¢  r¤  r¥  ZALL_INT_PYARROW_DTYPESZFLOAT_PYARROW_DTYPESr®  ZTIMEDELTA_PYARROW_DTYPESr±  ZDATETIME_PYARROW_DTYPESrµ  r•   r¶  r%   r%   r%   r&   Ú<module>   s  $	$	

;


:


	
FRb#4S2   37 " ÿL,ý



 ÷þ
			




 ÿ
	ûþ

üþ	
 þ
ýþ
ý
úþ
úþ
*þ
ûþ

þ
ýþ
ýþ


îþ




úþúþ

þþþþ
þþ("		
ýý	


çþ	 ÿ*

þþ	þþý