U
    ¾mœdäm ã                   @   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&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z. ej/ddd�Z0ddl1m2Z2 ddl3m4Z4 ej5e$j6e7d�dd„ ƒZ8ej5dd„ ƒZ9ej5dd„ ƒZ:ej5ddgd�dd„ ƒZ;ej5dd„ ƒZ<ej5dd„ ƒZ=ej5d d!„ ƒZ>ej5d"d#„ ƒZ?ej5d$d%„ ƒZ@G d&d'„ d'e.jAƒZBG d(d)„ d)e.jCƒZDG d*d+„ d+e.jEƒZFG d,d-„ d-e.jGƒZHG d.d/„ d/e.jIƒZJG d0d1„ d1e.jKƒZLG d2d3„ d3e.jMƒZNG d4d5„ d5e.jOƒZPG d6d7„ d7e.jQƒZRG d8d9„ d9e.jSƒZTG d:d;„ d;e.jUƒZVG d<d=„ d=e.jWƒZXG d>d?„ d?e.jYƒZZG d@dA„ dAe.j[ƒZ\G dBdC„ dCe.j]ƒZ^G dDdE„ dEe.j_ƒZ`G dFdG„ dGe.jaƒZbG dHdI„ dIe.jcƒZdG dJdK„ dKe.jeƒZfG dLdM„ dMƒZgdNdO„ ZhdPdQ„ Ziejj kdRdSdTdUdVdWg¡ejj kdXdYdYdYgg¡dZd[„ ƒƒZlejjjkd\ddd]d]d^d^gdd^ggdddd]d^d^gdgggd_d`gda�dbdc„ ƒZmddde„ Znejj kdfe0 o¡ epge0 odg¡epge0 q¡ epge0 r¡ e7ge0 se0 t¡ ¡euge0 ve0 t¡ ¡euge0 we0 x¡ e0 t¡ ¡euge0 ydhe0 z¡ fdie0 x¡ fg¡e{ge0 |e0 t¡ e0 t¡ ¡egg	¡djdk„ ƒZ}dldm„ Z~dndo„ Zdpdq„ Z€drds„ Z�dtdu„ Z‚dvdw„ Zƒdxdy„ Z„dzd{„ Z…d|d}„ Z†d~d„ Z‡d€d�„ Zˆd‚dƒ„ Z‰ejj kd„ejŠej‹fd…g¡d†d‡„ ƒZŒdˆd‰„ Z�dŠd‹„ ZŽdŒd�„ Z�ejjj�edŽd��d�d‘„ ƒZ‘ejjj�ed’d��d“d”„ ƒZ’d•d–„ Z“d—d˜„ Z”d™dš„ Z•ejj kd›dœd�g¡dždŸ„ ƒZ–d d¡„ Z—ejj kd¢d£d¤gd¥d¦gd§d¨gg¡d©dª„ ƒZ˜d«d¬„ Z™ejj kd­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jj kd¸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jj kd¿d›e �dº¡gdÀe7gdÁd¯gdÂdÃgg¡dÄdÅ„ ƒZžejj kdÆ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jjj¡edÒe¢dÓ�dÔdÕ„ ƒZ£ejj kdÖ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jj kdÖ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jj kdÜd®ddddge0 ¦¡ gd¼dÃdÝd]dge0 t¡ gg¡dÞdß„ ƒZ§dàdá„ Z¨ejj kdâ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jjj¡dèeªdÓ�dédê„ ƒZ«ejj kdë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jj kdî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jj kdô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jj k�d�d�dg�d�dg�d�dgdT�dg�d�dg�d�dgg¡�d�d„ ƒZ¯�d�d„ Z°ejj k�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jj k�d,�d-dœg¡�d.�d/„ ƒZ²ejj k�d,�d0dœg¡�d1�d2„ ƒZ³ejj k�d3�d4�d5g¡ejj k�d6�d7�d8g�d9�d:gg¡�d;�d<„ ƒƒZ´ejj kdÂddÃg¡�d=�d>„ ƒZµejj k�d?�d@�dAg¡ejj k�dBddgdÃd^gg¡�dC�dD„ ƒƒZ¶ejj k�dE�dF�dGg¡�dH�dI„ ƒZ·ejj k�dBddgdÃd^gg¡�dJ�dK„ ƒZ¸�dL�dM„ Z¹�dN�dO„ Zº�dP�dQ„ Z»�dR�dS„ Z¼�dT�dU„ Z½�dV�dW„ Z¾�dX�dY„ Z¿ejj k�dZ�d[�d\�d]�d^g¡�d_�d`„ ƒZÀ�da�db„ ZÁejj k�dc�dd�deg�dfd]g�dgdg�dhdg�didg�djd]g�dkd]g�dldÝg�dmd^gejÂ�dnd¯ejjj¡ee¢�do�dp��dq��dr�dsg�dtdÃg�du�dvg�dwdÃg�dx�dyg�dze�dedÃd]ƒg�d{edÝd^�dy�dsƒgg¡�d|�d}„ ƒZÃejj k�dZ�d\�d[g¡�d~�d„ ƒZÄejj k�d€d�d��d‚g¡�dƒ�d„„ ƒZÅ�d…�d†„ ZÆ�d‡�dˆ„ ZÇejj k�d?�d‰�dŠ�d‹g¡�dŒ�d�„ ƒZÈejj k�d?�d‰�dŠ�d‹g¡�dŽ�d�„ ƒZÉejjj¡e�d�d��ejj k�d‘�d’�d“�d”�d•�d–�d—�d˜g¡ejj k�d?�d‰�dŠ�d‹g¡�d™�dš„ ƒƒƒZÊ�d›�dœ„ ZËejj k�d��dž�dŸg¡�d �d¡„ ƒZÌ�d¢�d£„ ZÍ�d¤�d¥„ ZÎejj k�dZ�d\�d[g¡�d¦�d§„ ƒZÏejj k�d¨�d©e�dedÝ�dªdÝ�d«�g�d¬e! Ð�d­¡gg¡�d®�d¯„ ƒZÑejj k�d°d°d¯g¡�d±�d²„ ƒZÒejj kd�d³�d´g¡�dµ�d¶„ ƒZÓ�d·�d¸„ ZÔejj k�d¹�dº�d»ge0 q¡ fdÇdºge0 r¡ fg¡�d¼�d½„ ƒZÕejj k�d¾e$jÖe$j× ¡�d¿�dÀ„ ƒZØejj k�d¾e$jÙ¡�dÁ�dÂ„ ƒZÚejj k�d¾e$jÛ¡�dÃ�dÄ„ ƒZÜejjj¡e�dÅe0jÝ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)Úis_bool_dtypeÚis_float_dtypeÚis_integer_dtypeÚis_numeric_dtypeÚis_signed_integer_dtypeÚis_string_dtypeÚis_unsigned_integer_dtype)ÚbaseZpyarrowz7.0.0)Z
minversion)ÚArrowExtensionArray)Ú
ArrowDtype)ÚparamsÚidsc                 C   s   t | jd�S )N)Úpyarrow_dtype)r   Úparam)Úrequest© r#   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/extension/test_arrow.pyÚdtypeB   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$   rV   G   sŒ    0000ÿþýüÿÿþýüÿ*ÿþýüÿÿþýüÿÿþýüÿ..rV   c                 C   s   t | ƒjd| d g| jd�S )zLength-2 array with [NA, Valid]Nr   rD   ©ÚtypeÚ_from_sequencer%   )rV   r#   r#   r$   Údata_missingƒ   s    rZ   )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.
    rV   rZ   N)r!   )r"   rV   rZ   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+   r7   r3   r4   r5   iÚ  r2   r6   r&   r9   r:   Úcr>   r?   ó   cz-1.1r1   z1.1NrD   )r    rE   rF   rG   rH   rI   rJ   rL   r   rM   r   rN   r   rO   r   rP   rQ   rK   r   rR   rS   rT   )r%   rU   ÚAÚBÚCr#   r#   r$   Údata_for_grouping•   s^    	


ra   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&   rD   rW   ©ra   r#   r#   r$   Údata_for_sortingÐ   s    þrd   c                 C   s&   t | ƒj| d | d | d g| jd�S )z{
    Length-3 array with a known sort order.

    This should be three items [B, NA, A] with
    A < B and NA missing.
    r   r/   r&   rD   rW   rc   r#   r#   r$   Údata_missing_for_sortingÞ   s    þre   c                 C   s:   | j j}tj |¡s tj |¡r6tjdgd | j d�S | S )z3Length-100 array in which all the elements are two.r/   éd   rD   )r%   r    rE   rF   Ú
is_integerrH   rS   rT   ©rV   rU   r#   r#   r$   Údata_for_twosì   s    ri   c                   C   s   t jS )z6The scalar missing value for this type. Default 'None')rS   ÚNAr#   r#   r#   r$   Úna_valueö   s    rk   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    rE   rF   rQ   ÚnodeÚ
add_markerÚpytestÚmarkÚxfailÚsuperÚtest_astype_str©ÚselfrV   r"   rU   ©Ú	__class__r#   r$   ru   ý   s    
ÿÿzTestBaseCasting.test_astype_str)Ú__name__Ú
__module__Ú__qualname__ru   Ú__classcell__r#   r#   rx   r$   rl   ü   s   rl   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 rm   )r%   r    rE   rF   rP   rK   ro   rp   rq   rr   rs   rt   Útest_from_dtype)rw   rV   r"   rU   rn   rx   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)
rX   rY   Ú_dataÚtmÚassert_extension_array_equalÚ
isinstancerE   ZChunkedArrayÚAssertionErrorÚcombine_chunks©rw   rV   Ú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-1rD   )rq   ÚraisesrR   r   Ú_from_sequence_of_stringsrE   Zmonth_day_nano_interval)rw   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.rm   z pyarrow doesn't support parsing ©r�   rn   ú_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.rD   )r%   r    rE   rF   Z	is_time64Úequalsr
   ro   rp   rq   rr   rs   r   rN   rK   ÚArrowNotImplementedErrorrM   Útzr   r   ÚArrowInvalidr‚   ÚcastÚstringrX   rŽ   rƒ   r„   r‡   )rw   rV   r"   rU   Zpa_arrayr‰   r#   r#   r$   Ú&test_from_sequence_of_strings_pa_array)  s@    ÿÿ
ÿ
ÿþÿýÿ	z7TestConstructors.test_from_sequence_of_strings_pa_array)rz   r{   r|   r€   rŠ   r�   r˜   r}   r#   r#   rx   r$   r~     s   r~   c                   @   s   e Zd ZdS )ÚTestGetitemTestsN©rz   r{   r|   r#   r#   r#   r$   r™   N  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)rw   ÚserÚop_namer�   r‰   Úexpectedr#   r#   r$   Úcheck_accumulateS  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    rE   rF   rg   rH   rN   r   rq   ÚskiprS   ÚSeriesr�   rR   r¡   )rw   rV   Ú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©rn   r�   z not implemented for )r%   r    rS   r«   rE   rF   rP   rQ   Úis_temporalrN   rq   rª   r   ÚconfigÚoptionZ	skip_slowro   rp   rr   rs   rR   rG   rK   r¨   )	rw   rV   r¬   r�   r"   r­   r¦   r¥   Zdo_skipr#   r#   r$   Útest_accumulate_seriess  sL    
ÿ

þÿ

ÿ
ÿþÿz.TestBaseAccumulateTests.test_accumulate_seriesN)	rz   r{   r|   r¨   rq   rr   Úparametrizer®   r´   r#   r#   r#   r$   r›   R  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¡   rE   rF   rG   rq   rª   rg   rH   r£   rƒ   Zassert_almost_equal)rw   r¥   r¦   r�   rU   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    rS   r«   rE   rF   r±   rN   rP   rQ   rq   r�   Ú	TypeErrorr¡   rr   rs   Ú__version__ro   rp   r   rK   r   rG   rt   Útest_reduce_series)rw   rV   Zall_numeric_reductionsr�   r"   rU   Úopnamer¥   Zshould_workÚmsgÚ
xfail_markrx   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+   r/   ú	[pyarrow]rD   ç      ø?)rS   r«   r¿   r†   )rw   rË   r‰   r#   r#   r$   Útest_median_not_approximateÿ  s    z1TestBaseNumericReduce.test_median_not_approximate)
rz   r{   r|   r¸   rq   rr   rµ   rÇ   rÐ   r}   r#   r#   rx   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    rq   rr   rs   rÅ   rE   rÆ   rF   rP   rQ   ro   rp   rS   r«   r±   rN   r�   r¡   r†   )rw   rV   Úall_boolean_reductionsr�   rk   r"   rU   rÊ   r¦   r¥   r‰   r#   r#   r$   rÇ     s    ý
z(TestBaseBooleanReduce.test_reduce_seriesN)rz   r{   r|   rq   rr   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 valuesrm   )r%   r    rE   rF   rG   ro   rp   rq   rr   rs   rt   Útest_groupby_extension_no_sort©rw   ra   r"   rU   rx   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    rE   rF   rG   ro   rp   rq   rr   rs   rt   Ú test_groupby_extension_transformrØ   rx   r#   r$   rÙ   4  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    rE   rF   rG   ro   rp   rq   rr   rs   Ú
ValueErrorrt   Útest_groupby_extension_agg)rw   rÚ   ra   r"   rU   rx   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+   r/   é   r&   )r^   r_   r`   r`   zdoes not supportr‹   r^   T)Znumeric_only)r   r%   rS   Ú	DataFrameÚIndexrq   r�   rÅ   Úgroupbyr¹   Úcolumnsrƒ   Zassert_index_equalrt   Útest_in_numeric_groupby)rw   ra   Údfr§   r‰   rx   r#   r$   râ   J  s    
ýÿz'TestBaseGroupby.test_in_numeric_groupby)rz   r{   r|   r×   rÙ   rq   rr   rµ   rÜ   râ   r}   r#   r#   rx   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    rE   rF   rK   r   ro   rp   rq   rr   rs   rÛ   rt   Útest_check_dtyperv   rx   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    rE   rF   rK   ro   rp   rq   rr   rs   rR   rP   r�   rÅ   Úconstruct_from_stringÚnamert   Ú#test_construct_from_string_own_name)rw   r%   r"   rU   rÉ   rx   r#   r$   rè   i  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    rE   rF   rP   rX   Zis_dtyperç   r†   rK   ro   rp   rq   rr   rs   rR   rt   Útest_is_dtype_from_name©rw   r%   r"   rU   rx   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)rq   r�   rÅ   rX   ræ   )rw   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_typerm   )r    rE   rF   rL   rO   rM   Úunitr”   rN   rQ   rK   ro   rp   rq   rr   rs   rt   Útest_get_common_dtyperê   rx   r#   r$   rî   ‘  s2    
ÿ
þ
üûû
ùù
ø	
÷þÿz#TestBaseDtype.test_get_common_dtypec                    s0   |j }tj |¡r t|ƒs,t‚ntƒ  |¡ d S r�   )r    rE   rF   rP   r   r†   rt   Útest_is_not_string_type)rw   r%   rU   rx   r#   r$   rï   ¨  s    z%TestBaseDtype.test_is_not_string_type)
rz   r{   r|   rå   rè   ré   rë   rî   rï   r}   r#   r#   rx   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©rn   Úrunc                    s   t ƒ  |¡ d S r�   )rt   Ú	test_view©rw   rV   rx   r#   r$   rô   µ  s    zTestBaseInterface.test_view)rz   r{   r|   rq   rr   rs   rô   r}   r#   r#   rx   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   )rw   rV   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   rt   Útest_fillna_series_method)rw   rZ   Zfillna_methodrx   r#   r$   rú   É  s      ÿz)TestBaseMissing.test_fillna_series_method)rz   r{   r|   rù   rú   r}   r#   r#   rx   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�   )rt   Útest_transposerõ   rx   r#   r$   rþ   Õ  s    z TestBaseReshaping.test_transpose)rz   r{   r|   rq   rr   rs   rþ   r}   r#   r#   rx   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�   )rt   Útest_setitem_preserves_viewsrõ   rx   r#   r$   r   Ý  s    z,TestBaseSetitem.test_setitem_preserves_views)rz   r{   r|   rq   rr   rs   r   r}   r#   r#   rx   r$   rÿ   Ü  s
    ÿrÿ   c                   @   s&   e Zd Zej dddg¡dd„ ƒZdS )ÚTestBaseParsingÚenginer\   Úpythonc           	      C   s(  |j j}tj |¡r.|j tjj	t
dd�¡ n€tj |¡r\|j tjj	td|› d�d�¡ nRtj |¡rŒ|jdkrŒ|j tjj	tdd�¡ n"tj |¡r®|j tjj	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GH 47534r�   zParameterized types z not supported.)Úusrì   z1https://github.com/pandas-dev/pandas/issues/49767z)CSV parsers don't correctly handle binaryrm   Z
with_dtyperD   F)ÚindexZna_rep)r%   r  )r%   r    rE   rF   rG   ro   rp   rq   rr   rs   rÅ   rK   rR   rM   rí   rÛ   rQ   rS   rÞ   r«   ÚstrZto_csvÚnpÚnanr   r   Zread_csvÚassert_frame_equal)	rw   r  rV   r"   rU   rã   Z
csv_outputr‰   r§   r#   r#   r$   Útest_EA_typeså  sF    ÿ
þÿþÿÿ
  ÿzTestBaseParsing.test_EA_typesN)rz   r{   r|   rq   rr   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    rE   rF   rG   ro   rp   rq   rr   rs   r“   rt   Útest_invertrv   rx   r#   r$   r    s    þÿzTestBaseUnaryOps.test_invert)rz   r{   r|   r  r}   r#   r#   rx   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    rE   rF   rJ   ro   rp   rq   rr   rs   r•   rt   Ú	test_diff)rw   rV   r  r"   rU   rx   r#   r$   r    s    ýÿzTestBaseMethods.test_diffc                 C   s.   |d d… }|  ¡ }|jtt ¡ ƒks*t‚d S )Nr7   )Úvalue_countsr%   r   rE   rÌ   r†   rˆ   r#   r#   r$   Ú'test_value_counts_returns_pyarrow_int64'  s    z7TestBaseMethods.test_value_counts_returns_pyarrow_int64c                 C   s‚   |d d…   ¡ }t || ¡   ¡}tj||jd�}|jdd� ¡ }tjdt	|ƒ gt	|ƒ |j
dd�}| d¡}|  ||¡ d S )	Nr7   rD   T)Ú	normalizer+   Z
proportion)r  rç   zdouble[pyarrow])Úuniquer  rT   rø   rS   r«   r%   r  Z
sort_indexÚlenr  r£   r¤   )rw   rV   r"   Úvaluesr¥   r‰   r§   r#   r#   r$   Ú test_value_counts_with_normalize-  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Ö   rm   úNo pyarrow kernel for r°   )r%   r    rE   rF   rG   ro   rp   rq   rr   rs   rK   r   r“   rt   Útest_argmin_argmax)rw   rd   re   rk   r"   rU   rx   r#   r$   r  ;  s    ÿÿþÿz"TestBaseMethods.test_argmin_argmaxzop_name, skipna, expected)ÚidxmaxTr   )ÚidxminTr/   )ÚargmaxTr   )ÚargminTr/   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    rE   rF   rK   r   ro   rp   rq   rr   rs   r“   rt   Útest_argreduce_series)rw   re   r¦   r�   r§   r"   rU   rx   r#   r$   r  N  s    þÿ   ÿz%TestBaseMethods.test_argreduce_seriesc                    s@   |j j}tj |¡r0|j tjj	|› d�d�¡ t
ƒ  |¡ d S rÕ   )r%   r    rE   rF   rG   ro   rp   rq   rr   rs   rt   Útest_factorizerØ   rx   r#   r$   r  j  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�   r/   c                 S   s   | | S r�   r#   )Úx1Zx2r#   r#   r$   Ú<lambda>ˆ  ó    z2TestBaseMethods.test_combine_add.<locals>.<lambda>)Únextr%   r    rE   rF   rN   rq   rr   rs   rÅ   ro   rp   rt   Útest_combine_addr±   rS   r«   r�   Úcombine)	rw   Zdata_repeatedr"   rU   rr   Z
orig_data1Z
orig_data2Ús1Ús2rx   r#   r$   r#  v  s    þ

z TestBaseMethods.test_combine_addc                    sB   |j j}tj |¡r0|j tjj	|› d�d�¡ t
ƒ  ||¡ d S rÕ   )r%   r    rE   rF   rG   ro   rp   rq   rr   rs   rt   Útest_searchsorted)rw   rd   Ú	as_seriesr"   rU   rx   r#   r$   r'  �  s    ÿÿz!TestBaseMethods.test_searchsortedc                 C   s   t  |¡ t  |¡¡st‚d S r�   )rS   r«   r’   r†   rõ   r#   r#   r$   Útest_basic_equals—  s    z!TestBaseMethods.test_basic_equals)rz   r{   r|   rq   rr   rµ   r  r  r  r  r  r  r  r  Z_combine_le_expected_dtyper#  r'  r)  r}   r#   r#   rx   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…   rS   rÞ   Úilocr%   r    rE   rF   rK   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_divider3  r#   r#   r$   r   ´  r!  )Ústriprƒ   Úget_op_from_name)rw   r¦   Zshort_opnamer#   r#   r$   r7  ®  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…   rS   rÞ   r+  r%   rE   rT   Z_valuesrF   rN   rX   r    rí   r   r   r–   r  rá   r«   )rw   Ú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   rE   rF   rN   r±   )rw   rÈ   rU   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>   Ú__rmod__Ú__mod__rA  )
rG  rR   rE   rF   rP   rQ   rH   rg   rK   r“   )rw   rÈ   rU   Ú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 rm   z  not supported betweenpd.NA and z Python scalarr�   Ú__rfloordiv__zdivide by 0Ú__rtruediv__Ú__pow__z'Invalid decimal function: power_checked)rG  rE   rF   rH   rg   rK   r   rq   rr   rs   rÅ   r•   )rw   rÈ   rU   rr   rJ  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 ©NrH  z%Skip testing Python string formattingÚ__floordiv__r<  )r%   r    rE   rF   rP   rQ   rq   rª   rL  Zseries_scalar_excrQ  ro   rp   rg   rN   rM   Úsetattrr*  r@  rt   Útest_arith_series_with_scalar©rw   rV   Úall_arithmetic_operatorsr"   ÚmonkeypatchrU   rr   rx   r#   r$   rU  7  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 rR  )r%   r    rE   rF   rP   rQ   rq   rª   rL  Zframe_scalar_excrQ  ro   rp   rg   rN   rM   rT  r*  r@  rt   Útest_arith_frame_with_scalarrV  rx   r#   r$   rY  V  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 )	NrD  zJImplemented pyarrow.compute.subtract_checked which raises on overflow for r�   r   rD   )Ú__truediv__rO  r<  )rK  )r%   r    rL  Zseries_array_excrE   rF   rJ   r   ro   rp   rq   rr   rs   r•   rQ  rS   r«   rT   r+  r  rH   rg   rN   rM   rT  r*  r@  Zcheck_opname)
rw   rV   rW  r"   rX  rU   rr   r¦   r¥   r>  r#   r#   r$   Útest_arith_series_with_arrayu  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    rE   rF   r±   rN   rS   r«   r   rq   r�   rR   r   rG   ro   rp   rr   rs   r’   r•   rt   Ú$test_add_series_with_extension_array)rw   rV   r"   rU   r¥   rÉ   rx   r#   r$   r^  §  s4    

ÿþÿ
þÿz:TestBaseArithmeticOps.test_add_series_with_extension_array)rz   r{   r|   rR   Z
divmod_excÚclassmethodr,  r7  r@  rG  rL  rQ  rU  rY  r[  r^  r}   r#   r#   rx   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   rD   )ÚeqÚneé   éa   )rS   r«   rT   r+  r  r%   rz   r†   r$  r¤   Ú	Exceptionrq   r�   rX   )
rw   rV   Úcomparison_oprk   r¥   r>  r‰   r§   rK  Ú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‹   )rq   r�   rR   Úobject)rw   rV   rf  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   rD   rÎ   FT)rS   r«   ÚlowerÚoperatorÚltÚgtrb  r   rE   Úbool_rƒ   r¤   )	rw   rk  rf  rV   Ú
ser_maskedÚser_par‰   Úexpr§   r#   r#   r$   Útest_comp_masked_numpyõ  s    


z,TestBaseComparisonOps.test_comp_masked_numpyN)	rz   r{   r|   rh  rj  rq   rr   rµ   ru  r#   r#   r#   r$   r`  Í  s    r`  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]rD   ©rS   r«   rƒ   r¤   ©rw   r9   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 ©NTFrx  rD   ry  ©rw   r>  r§   r9   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 rw  ry  rz  r#   r#   r$   Útest_kleene_and6  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|  ry  r}  r#   r#   r$   Útest_kleene_and_scalarL  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 rw  ry  rz  r#   r#   r$   Útest_kleene_xore  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|  ry  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 )NTFrl  rD   rx  )rS   r«   r¡   r   rE   rq  rƒ   r¤   )rw   r?  rt  rV   rr  rs  r‰   r§   r#   r#   r$   Útest_logical_masked_numpy“  s    

z(TestLogicalOps.test_logical_masked_numpy)rz   r{   r|   Ú__doc__r{  rq   rr   rµ   rS   rj   r  rq  r~  r  r€  r�  r‚  r†  r#   r#   r#   r$   rv    sX   úþ
úþ
ûþ

ýþrv  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]r8  ÚUTCzdecimal(7, 2)[pyarrow])rq   r�   rR   r   ræ   rE   Ú	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Ý   rD   )rq   r�   rR   rS   r«   Úrange)ÚinvalidrÉ   r#   r#   r$   Ú;test_arrowdtype_construct_from_string_type_only_one_pyarrow²  s
    ÿr�  ÚinterpolationZlinearrm  Ú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�   )rm  r�  zM8[z, r:  r*   r  F)Úwarn)r  úfloat64[pyarrow])#r%   r    ÚtakerS   r«   rE   rF   rP   rQ   rG   r   rq   r�   r“   r�  rg   rH   rK   r±   r‚   rX   ro   rp   rr   rs   rM   r”   rí   r£   Úto_pydatetimer†   ÚdtÚfloorrƒ   r¤   )rV   rŽ  r�  r"   rU   r¥   rÉ   r‰   Zpd_dtypeZser_npr§   r#   r#   r$   Útest_quantile½  sz    

ÿ
þ
ý
ÿ
þ
ýýþÿ




ÿ
þ
ý

r˜  ztake_idx, exp_idxr/   r&   Z
multi_modeZsingle_mode)r   c                 C   s@   |   |¡}t |¡}|jdd�}t |   |¡¡}t ||¡ d S )NT©Zdropna)r”  rS   r«   Úmoderƒ   r¤   )ra   Ztake_idxZexp_idxrV   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   rD   Fr™  )rS   r«   r%   rš  rƒ   r¤   )rV   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   rX   r†   )Úarrow_dtypeÚexpected_typer#   r#   r$   Útest_arrow_dtype_type&  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   rE   rT   r   r†   rS   ÚcoreÚcommonZis_bool_indexerr«   r‹  r  r  Zasarrayrƒ   r¤   )rV   r8  r‰   r§   r#   r#   r$   Útest_is_bool_dtype:  s    r¥  c                 C   sJ   | j j}tj |¡s,tj |¡s,tj |¡r:t| ƒsFt‚nt| ƒrFt‚d S r�   )	r%   r    rE   rF   rH   rg   rK   r   r†   ©rV   r­   r#   r#   r$   Útest_is_numeric_dtypeE  s    
ÿ
þ
ýr§  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S r�   )r%   r    rE   rF   rg   r   r†   r¦  r#   r#   r$   Útest_is_integer_dtypeR  s    r¨  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S r�   )r%   r    rE   rF   rg   r   r†   r¦  r#   r#   r$   Útest_is_any_integer_dtype[  s    r©  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S r�   )r%   r    rE   rF   rI   r   r†   r¦  r#   r#   r$   Útest_is_signed_integer_dtyped  s    rª  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S r�   )r%   r    rE   rF   rJ   r   r†   r¦  r#   r#   r$   Útest_is_unsigned_integer_dtypel  s    r«  c                 C   s2   | j j}tj |¡r"t| ƒs.t‚nt| ƒr.t‚d S r�   )r%   r    rE   rF   rH   r   r†   r¦  r#   r#   r$   Útest_is_float_dtypet  s    r¬  c                 C   sl   t  | ¡}| d¡}t |¡}t |¡}t|ƒt|ƒks<t‚t |¡}t 	||¡ t |¡}t 	||¡ d S )Nr/   )
rS   r«   ÚheadÚpickleÚdumpsr  r†   Úloadsrƒ   r¤   )rV   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_pandasrT   r£   r%   r…   r   r†   rƒ   r„   )rV   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(   rD   )rS   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‚   rX   rE   rF   rN   rM   r  rT   ÚlistZ_hasnar£   ri  rS   rj   rø   rƒ   Úassert_numpy_array_equal)rV   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Ÿ   rD   r   )rS   rT   r¶  r  rj   ri  r…   Úintr†   rƒ   r¸  )rV   Ú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]rD   rÍ   )r%   rk   r/   ©rS   rT   rj   r¶  r  rƒ   r¸  )Zna_valrt  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½  rD   r/   ri  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   ©rX   r-   )
Úcopyr   rE   rT   r  r‚   rX   rƒ   r„   Útolist)rV   Ú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‚   rX   rE   rF   rP   rQ   rÅ   rg   rH   rG   r•   rq   r�   )rV   r­   Z
fill_valuerg  rÉ   r#   r#   r$   Útest_setitem_invalid_dtypeß  s&    
ÿ
þ
ýrÈ  zreturns object with 7.0rm   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_mapperrD   )rE   rT   rS   Ú	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É  )
rE   rT   rÍ   rq   r�   r•   r²  r   rÌ   rÌ  )rT   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@rD   r+   g333333ó?gÍÌÌÌÌÌ@gš™™™™Ù^@g¤p=
×cL@r-   g      ^@g      N@)rS   r«   rj   Ú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 )Nr/   r   r+   r-   zOsearchsorted requires array to be sorted, which is impossible with NAs present.r‹   )r”  rS   rj   r«   rq   r�   rÛ   Zsearchsorted)rd   r(  r:   r\   r9   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 )
Nr4  r5  rD   r+   r/   )r9   r:   r9   r:   )Zby)rS   rÞ   r«   r   rE   Ú
dictionaryÚint32r—   rÂ  Zsort_valuesrƒ   r	  )rã   r§   r‰   r#   r#   r$   Útest_sort_values_dictionary+  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×  rD   r+   )
rS   r«   r   rE   r—   r  r·   rÔ  rƒ   r¤   )rÖ  r¥   r‰   r§   r#   r#   r$   Útest_str_count9  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×  rD   z	count notr‹   r+   ©Úflags)
rS   r«   r   rE   r—   rq   r�   rR   r  r·   ©r¥   r#   r#   r$   Ú test_str_count_flags_unsupportedA  s    rÜ  zside, str_funcr.  Úrjustr/  ÚljustZbothÚcenterc                 C   sb   t jdd gtt ¡ ƒd�}|jjd| dd�}t jtd|ƒddƒd gtt ¡ ƒd�}t 	||¡ d S )Nr9   rD   rÝ   r4  )ÚwidthÚsideZfillchar)
rS   r«   r   rE   r—   r  Úpadr¡   rƒ   r¤   )rá  Zstr_funcr¥   r‰   r§   r#   r#   r$   Útest_str_padG  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 )Nr9   rD   zInvalid side: foor‹   rÝ   rÇ  r4  )
rS   r«   r   rE   r—   rq   r�   rÛ   r  râ  rÛ  r#   r#   r$   Útest_str_pad_invalid_sideS  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×  rD   )ÚcaseÚnaÚregex)
rS   r«   r   rE   r—   r  Úcontainsrq  rƒ   r¤   )rÖ  ræ  rç  rè  rt  r¥   r‰   r§   r#   r#   r$   Útest_str_containsY  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×  rD   zcontains notr‹   r9   r+   rÙ  )
rS   r«   r   rE   r—   rq   r�   rR   r  ré  rÛ  r#   r#   r$   Ú#test_str_contains_flags_unsupportedj  s    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 )Nr×  rD   )rç  ©
rS   r«   r   rE   r—   r¡   r  rq  rƒ   r¤   )rá  rÖ  rç  rt  r¥   r‰   r§   r#   r#   r$   Útest_str_start_ends_withp  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×  rD   r:   r4  T)rÖ  rñ  rè  zreplace is not supportedr‹   )
rS   r«   r   rE   r—   rq   r�   rR   r  Úreplace)Zarg_nameÚargr¥   r0  r#   r#   r$   Útest_str_replace_unsupported€  s
    rô  zpat, repl, n, regex, expr9   r4  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abacrD   )Únrè  )	rS   r«   r   rE   r—   r  rò  rƒ   r¤   )rÖ  rñ  rõ  rè  rt  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×  rD   zrepeat is notr‹   r+   r/   )
rS   r«   r   rE   r—   rq   r�   rR   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×  rD   r/   Zabcabc)	rS   r«   r   rE   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×  rD   )ræ  rç  ©
rS   r«   r   rE   r—   r  rŒ   rq  rƒ   r¤   ©rÖ  ræ  rç  rt  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×  rD   )ÚstartÚend)	rS   r«   r   rE   r—   r  Úfindrƒ   r¤   )Úsubrÿ  r   rt  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×  rD   zfind not implementedr‹   rå  r+   )rÿ  )
rS   r«   r   rE   r—   rq   r�   rR   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×  ÚderD   )	rS   r«   r   rE   r—   r  rÌ  rƒ   r¤   )Úirt  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=3rD   )rS   r«   r   rE   rT   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ÚabcdrD   )	rS   r«   r   rE   r—   r  Úslicerƒ   r¤   )rÿ  ÚstopÚsteprt  r¥   r‰   r§   r#   r#   r$   Útest_str_sliceþ  s    	r  zstart, stop, repl, expZaxcdZxcdÚcdc                 C   sP   t jdd gtt ¡ ƒd�}|j | ||¡}t j|tt ¡ ƒd�}t ||¡ d S r  )	rS   r«   r   rE   r—   r  Zslice_replacerƒ   r¤   )rÿ  r  rñ  rt  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 ©NrD   rï  )Úvaluer÷   rt  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 dEFrD   ©	rS   r«   r   rE   r—   r¡   r  rƒ   r¤   )r÷   rt  r¥   r‰   r§   r#   r#   r$   Útest_str_transform_functions:  s    r+  c                  C   sN   t jdd gtt ¡ ƒd�} | j ¡ }t jdd gtt ¡ ƒd�}t 	||¡ d S )Nr  rD   r&   )
rS   r«   r   rE   r—   r  r  rÔ  rƒ   r¤   r´  r#   r#   r$   Útest_str_lenL  s    
r,  zmethod, to_strip, valr6  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 )NrD   )Úto_stripr×  r*  )r÷   r/  Úvalr¥   r‰   r§   r#   r#   r$   Útest_str_stripS  s    r1  r0  Zabc123c                 C   sP   t j| d gtt ¡ ƒd�}|j d¡}t jdd gtt ¡ ƒd�}t ||¡ d S ©NrD   r
  r×  )	rS   r«   r   rE   r—   r  Zremovesuffixrƒ   r¤   ©r0  r¥   r‰   r§   r#   r#   r$   Útest_str_removesuffixe  s    r4  Z123abcc                 C   sP   t j| d gtt ¡ ƒd�}|j d¡}t jdd gtt ¡ ƒd�}t ||¡ d S r2  )	rS   r«   r   rE   r—   r  Zremoveprefixrƒ   r¤   r3  r#   r#   r$   Útest_str_removeprefixm  s    r5  Ú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×  rD   )
rS   r«   r   rE   r—   r  ÚencodeÚbinaryrƒ   r¤   )r6  Úencodingrt  r¥   r‰   r§   r#   r#   r$   Útest_str_encodeu  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efgrD   r:   rÙ  )
rS   r«   r   rE   r—   r  ÚfindallÚlist_rƒ   r¤   )rÚ  r¥   r‰   r§   r#   r#   r$   Útest_str_findall„  s    $rB  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ÚabcbarD   r\   r/   zsubstring not foundr‹   rÇ  )rS   r«   r   rE   r—   r¡   r  rÌ   rƒ   r¤   rq   r�   rÛ   )r÷   rÿ  r   r¥   r‰   r§   r#   r#   r$   Útest_str_r_indexŒ  s    	rE  ÚformÚNFCÚNFKCc                 C   s>   t jdd gtt ¡ ƒd�}|j | ¡}| ¡ }t 	||¡ d S r;  )
rS   r«   r   rE   r—   r  r  rÂ  rƒ   r¤   )rF  r¥   r‰   r§   r#   r#   r$   Útest_str_normalizež  s    rI  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 )NrD  rÇ  rD   r\   r/   r-   )
rS   r«   r   rE   r—   r  ÚrfindrÌ   rƒ   r¤   )rÿ  r   r¥   r‰   r§   r#   r#   r$   Útest_str_rfind¦  s    rK  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 )NrD  rD   rd  r:   Zbbcbb)	rS   r«   r   rE   r—   r  Ú	translaterƒ   r¤   r´  r#   r#   r$   Útest_str_translate´  s    rM  c                  C   sP   t jdd gtt ¡ ƒd�} | j d¡}t jdd gtt ¡ ƒd�}t ||¡ d S )NrD  rD   rÝ   zabc
ba)	rS   r«   r   rE   r—   r  Úwraprƒ   r¤   r´  r#   r#   r$   Útest_str_wrap»  s    rO  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|crD   TFr9   r:   r\   )r%   rá   )rS   r«   r   rE   r—   r  Zget_dummiesrÞ   rq  rƒ   r	  r´  r#   r#   r$   Útest_get_dummiesÂ  s    

ýrP  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 )	NrD  rD   r:   r9   ZcbaF)Úexpandr×  )rS   r«   r   rE   r—   r  Ú	partitionrÞ   rƒ   r	  r   rT   r¤   Ú
rpartitionr´  r#   r#   r$   Útest_str_partitionÍ  s&     
ÿ 
ÿrT  c               	   C   s(  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	 ||¡ d S )NÚa1cbcbÚa2cbcbrD   r\   Úa1r:   Úa2r+   ©rõ  Zbcbz[1-2]T)rè  r9   Zcbcb)rè  rQ  ©r   r+   )rS   r«   r   rE   r—   r  Úsplitr   rT   rƒ   r¤   rÞ   r	  r´  r#   r#   r$   Útest_str_splitä  s.    ÿÿÿþÿr\  c               	   C   sê   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	 ||¡ d S )NrU  rV  rD   r\   rW  r:   rX  r+   rY  Za1cbZa2cbT)rõ  rQ  rZ  )rS   r«   r   rE   r—   r  Úrsplitr   rT   rƒ   r¤   rÞ   r	  r´  r#   r#   r$   Útest_str_rsplit	  s$    ÿÿþÿ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×  rD   z,str.extract not supported with pd.ArrowDtyper‹   z[ab](\d))
rS   r«   r   rE   r—   rq   r�   rR   r  ÚextractrÛ  r#   r#   r$   Útest_str_unsupported_extract	  s     ÿr`  rí   rì   r  r9  r8  c                 C   sF   ddg}t  | ¡}tj||d�}tt jdd g|d�ƒ}t ||¡ d S )NZ1000ÚNaTrD   iè  rÁ  )rE   Údurationr   rŽ   rT   rƒ   r„   )rí   Ústringsr­   r‰   r§   r#   r#   r$   Ú#test_duration_from_strings_with_nat$	  s
    
rd  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    rE   rF   r±   rq   r�   ÚAttributeErrorrS   r«   r–  rh   r#   r#   r$   Útest_unsupported_dt.	  s     ÿrf  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Úmicrosecondr8   ÚmonthÚ
nanosecondé   ZquarterÚsecondrb   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 )Nrh  r+   r/   rÝ   r&   rb   r8   rp  )rg  rn  ri  rk  rl  rq  rm  ro  rì   rD   rÁ  )rS   r«   rÊ  r   rE   r‰  r¡   r–  r…   r   rË  r   Útime64r   rT   rƒ   r¤   )Úpropr§   r¥   r‰   Zexp_typer#   r#   r$   Útest_dt_properties7	  s.    ø
õò



rt  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 )	Nrh  r+   r/   rÝ   ©rg  rn  ri  rk  rD   r   rÁ  )rS   r«   r   r   rE   r‰  r–  r   r   rT   rr  rƒ   r¤   )rí   r¥   r‰   r§   r#   r#   r$   Útest_dt_time_preserve_unitp	  s    þ ÿrv  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 )	Nrh  r+   r/   rÝ   ru  rì   ©r”   rD   )	rS   r«   r   r   rE   r‰  r–  r”   r†   )r”   r¥   r‰   r#   r#   r$   Ú
test_dt_tz}	  s    þry  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 )Nrh  r+   r/   rÝ   ru  rì   rD   r   rg  Úweekri  rŸ   )rá   r%   )rS   r«   r   r   rE   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�   rh  r+   r/   rÝ   ru  rì   rD   z%Y-%m-%dT%H:%M:%Sz2023-01-02T03:00:00.000000000)r   r   ro   rp   rq   rr   rs   rE   r•   rS   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 )Nrh  r+   r/   rÝ   ru  rì   rD   zambiguous is not supported.r‹   Z1Hra  ©Z	ambiguousznonexistent is not supported.©Únonexistent)rS   r«   r   r   rE   r‰  rq   r�   rR   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 )Nrh  r+   r/   rÝ   ru  rì   rD   zfreq='1B' is not supportedr‹   Z1Bz$Must specify a valid frequency: None)rS   r«   r   r   rE   r‰  rq   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 )Nrh  r+   )rg  rn  ri  rì   r0   )rS   r«   r   r   rE   r‰  r¡   r–  r£   rƒ   r¤   )r†  r÷   r¥   rU   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 )	Nr2   r+   rh  rì   rD   c                 s   s   | ]}t |ƒtkV  qd S r�   )rX   r   )Ú.0Úresr#   r#   r$   Ú	<genexpr>Ü	  s     z(test_dt_to_pydatetime.<locals>.<genexpr>zdatetime64[ns])r   rS   r«   r   rE   r‰  r–  r•  r  rT   ri  rƒ   r¸  Úallr†   r£   )rV   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 )Nr2   r4   r5   r   rD   z#to_pydatetime cannot be called withr‹   )rS   r«   r   r   r¡   rE   rq   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 )Nrh  r+   r/   rÝ   ru  rì   rD   z ambiguous='NaT' is not supportedr‹   rˆ  ra  r€  z"nonexistent='NaT' is not supportedr�  )rS   r«   r   r   rE   r‰  rq   r�   rR   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 )
Nrh  r+   r/   rÝ   ru  rì   rw  rx  rD   )
rS   r«   r   r   rE   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�   rh  r+   r/   rÝ   ru  rD   rw  rÁ  ©r   r   ro   rp   rq   rr   rs   rE   r•   rS   r«   r   r   r‰  r–  r˜  rT   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_forwardr4   ru  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�   rh  rÝ   r4   r/   é   )rg  rn  ri  rk  rl  rì   rD   rw  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“  rD   rœ   r’  )rS   r«   r¡   rj   r†   )rÓ   r�   r¥   r‰   r§   r#   r#   r$   Ú#test_boolean_reduce_series_all_null<
  s    
r   r—   zstring[pyarrow]c                 C   s>   t  d ¡ ¡}tj|| d�}tjt|ƒ| d�}t ||¡ d S )Nzthe quick brown foxrD   )rE   rT   r[  rS   r«   r   rƒ   r¤   )r%   r»  r¥   r§   r#   r#   r$   Útest_series_from_string_arrayH
  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 rD   F)
r   rE   Zchunked_arrayr  Zonesrq  rÂ  Zzerosr‚   r†   )r�  r»  r§   r#   r#   r$   Ú/test_setitem_boolean_replace_with_mask_segfaultP
  s
    r¢  zdata, arrow_dtyper>   r?   c                 C   s:   t |ƒ}tjt | ¡|d�}tj| |d�}t ||¡ d S r"  )r   rS   rT   r  rƒ   r„   )rV   r   r%   r‰   r§   r#   r#   r$   Ú-test_conversion_large_dtypes_from_numpy_arrayY
  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+   r/   rÝ   rD   rÏ   g       @rÎ  r·   r¾   rÀ   Úminú25%ú50%ú75%Úmax©r%   r  )rS   r«   r   ÚdescriberE   rÍ   rƒ   r¤   ©r­   rV   r‰   r§   r#   r#   r$   Útest_describe_numeric_datag
  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+   r7   rD   é	   r8   r/   rÝ   rb   )rí   r·   r¾   rÀ   r¤  r¥  r¦  r§  r¨  r©  )rS   r«   r‹  r   rª  Úto_timedeltarí   rÃ  ri  rƒ   r¤   r«  r#   r#   r$   Útest_describe_timedelta_datat
  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+   r7   rD   r­  c                    s    g | ]}t j|ˆ jˆ jd �‘qS ))r”   rí   )rS   rÊ  r”   rí   )r�  Úv©r­   r#   r$   Ú
<listcomp>ˆ
  s   ÿz/test_describe_datetime_data.<locals>.<listcomp>)r8   r+   rÝ   r8   rb   r­  r·   r¾   r¤  r¥  r¦  r§  r¨  r©  )rS   r«   r‹  r   rª  ri  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ì   rD   r/   )
rS   Úto_datetimer®  r«   r   rE   r‰  rb  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   rn  r®  ÚreÚnumpyr  rq   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pandasrS   Zpandas._testingZ_testingrƒ   Zpandas.api.typesr   r   r   r   r   r   r   Zpandas.tests.extensionr   ZimportorskiprE   Zpandas.core.arrays.arrow.arrayr   Zpandas.core.arrays.arrow.dtyper   ZfixtureZALL_PYARROW_DTYPESr  r%   rV   rZ   r[   ra   rd   re   ri   rk   ZBaseCastingTestsrl   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BaseComparisonOpsTestsr`  rv  rŠ  r�  rr   rµ   r˜  r›  rœ  r=  ÚbytesZlarge_binaryZlarge_stringrA  rÌ   r·  Z
large_listZmap_r—   Ústructr]  ÚdictrÓ  r¢  r¥  r§  r¨  r©  rª  r«  r¬  r±  r³  rµ  r¹  r¼  Z
no_defaultr  r¿  rÀ  rÅ  rÈ  ZskipifrÍ  rÏ  rÑ  rÒ  rÕ  rØ  rÜ  rã  rä  rê  rë  rð  Úcompilerô  rö  rø  rs   rR   rù  rý  rþ  rÔ  r  r  r	  re  r  r  r  r$  r+  r,  r1  r4  r5  r?  rB  rE  rI  rK  rM  rO  rP  rT  r\  r^  r`  rd  rf  r!   rt  rv  ry  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'   37 " ÿL,ý



 ÷þ
			




 ÿ
	ûþ

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

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