o
    �¨ÊhçÅ ã                   @  sX  d Z ddlmZ ddlmZmZmZmZ ddlmZ ddl	m
Z
mZ ddlZddlZddlZddlZddlZddlmZ ddlmZ dd	lmZmZmZmZmZmZmZ ddlm  m Z! dd
l"m#Z#m$Z$ ddl%Z&ddl'm(Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 e 6d¡Z7ddl8m9Z9 ddl:m;Z; dd„ Z<ej=e)j>e?d�dd„ ƒZ@ej=dd„ ƒZAej=dd„ ƒZBej=ddgd�dd„ ƒZCej=dd„ ƒZDej=dd „ ƒZEej=d!d"„ ƒZFej=d#d$„ ƒZGG d%d&„ d&e5jHƒZIG d'd(„ d(ƒZJejK Ld)e)jM¡d*d+„ ƒZNd,d-„ ZOd.d/„ ZPd0d1„ ZQd2d3„ ZRd4d5„ ZSejK Ld6g d7¢¡ejK Ld8d9d9d9gg¡d:d;„ ƒƒZTejKjLd<g d=¢d>dggg d?¢dgggd@dAgdB�dCdD„ ƒZUdEdF„ ZVejK LdGe7 W¡ eXge7 WdH¡eXge7 Y¡ eXge7 Z¡ e?ge7 [e7 \¡ ¡e]ge7 ^e7 \¡ ¡e]ge7 _e7 `¡ e7 \¡ ¡e]ge7 adIe7 b¡ fdJe7 `¡ fg¡ecge7 de7 \¡ e7 \¡ ¡e$gg	¡dKdL„ ƒZedMdN„ ZfdOdP„ ZgdQdR„ ZhdSdT„ ZidUdV„ ZjdWdX„ ZkdYdZ„ Zld[d\„ Zmd]d^„ Znd_d`„ Zodadb„ Zpdcdd„ ZqejK Ldeej+ejrfdfg¡dgdh„ ƒZsdidj„ Ztdkdl„ Zudmdn„ Zvdodp„ Zwdqdr„ Zxdsdt„ Zydudv„ Zzdwdx„ Z{dydz„ Z|ejK Ld{d|d}g¡d~d„ ƒZ}d€d�„ Z~ejK Ld‚dƒd„gd…d†gd‡dˆgg¡d‰dŠ„ ƒZd‹dŒ„ Z€ejK Ld�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jK Ld˜d™dŽdg dš¢gd™d›d�g dœ¢gd�d›d�g dž¢gd�dŸdg dš¢gd™d dg d¡¢gd�d¢dg d¡¢gd™d£dg d¤¢gd�d£dg d¤¢gg¡d¥d¦„ ƒZƒejK Ld§d¨¡d©dª„ ƒZ„ejK Ld«d{e …d›¡gd¬e?gd­d�gd®d¯gg¡d°d±„ ƒZ†ejK Ld²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ˆd¾d¿„ Z‰dÀdÁ„ ZŠejK LdÂ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jK LdÂd|d�dg dÅ¢gdÆd�dg dÇ¢gdŸd�dg dÇ¢gdŽd�dg dÅ¢gd}d�dg dÅ¢gd“d�dg dÇ¢gdÈd�dg dÉ¢gdÊd�dg dË¢gdÌd�dg dÇ¢gdÍd�dg dÇ¢gg
¡dÎdÏ„ ƒZŒejK LdÐdŽddddge7 �¡ gdŸd¯dÑd¯dge7 \¡ gg¡dÒdÓ„ ƒZŽdÔdÕ„ Z�dÖd×„ Z�ejK LdØd¯g dÙ¢gdµg dÚ¢gdÛg dÜ¢gdÝg dÞ¢gd>g dß¢gg¡dàdá„ ƒZ‘ejKj’dâe“dã�dädå„ ƒZ”dædç„ Z•ejK Ldè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jK Ldë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jK Ldñg dò¢g dó¢g dô¢g dõ¢g dö¢g d÷¢g dø¢g dù¢g dú¢g dû¢g dü¢g dý¢g dþ¢g dÿ¢g �d ¢g �d¢g �d¢g �d¢g¡�d�d„ ƒZ˜ejK L�d�d�dg�d	�d
g�d�dg�d�dg�d�dg�d�dgg¡�d�d„ ƒZ™�d�d„ ZšejK L�dg �d¢g �d¢g �d¢g �d¢g �d¢g �d¢g¡�d�d„ ƒZ›ejK L�d�d d|g¡�d!�d"„ ƒZœejK L�d�d#d|g¡�d$�d%„ ƒZ�ejK L�d&�d'�d(g¡ejK L�d)�d*�d+g�d,�d-gg¡�d.�d/„ ƒƒZžejK Ld®ddÛg¡�d0�d1„ ƒZŸejK L�d2�d3�d4g¡ejK L�d5ddgd¯d>gg¡�d6�d7„ ƒƒZ ejK L�d8�d9�d:g¡�d;�d<„ ƒZ¡ejK L�d5ddgd¯d>gg¡�d=�d>„ ƒZ¢�d?�d@„ Z£�dA�dB„ Z¤�dC�dD„ Z¥�dE�dF„ Z¦ejK L�d2�dG�dHg¡�dI�dJ„ ƒZ§�dK�dL„ Z¨�dM�dN„ Z©�dO�dP„ ZªejK L�dQd�d�g¡�dR�dS„ ƒZ«�dT�dU„ Z¬ejK L�dVg �dW¢¡�dX�dY„ ƒZ­�dZ�d[„ Z®ejK L�d\�d]�d^g�d_dÛg�d`dg�dadg�dbdg�dcdÛg�dddÛg�dedÑg�dfd>g�dgd�g�dh�dig�djd¯g�dk�dlg�dmd¯g�dn�dog�dpe�d^d¯dÛƒg�dqedÑd>�do�diƒgg¡�dr�ds„ ƒZ¯�dt�du„ Z°�dv�dw„ Z±�dx�dy„ Z²ejK L�d2�dz�d{g¡�d|�d}„ ƒZ³�d~�d„ Z´ejK L�dV�d€�d�g¡�d‚�dƒ„ ƒZµejK L�d„g �d…¢¡�d†�d‡„ ƒZ¶�dˆ�d‰„ Z·ejK L�d�dŠ�d‹g�dŒ�d�gg¡�dŽ�d�„ ƒZ¸�d��d‘„ Z¹ejK L�d2g �d’¢¡�d“�d”„ ƒZºejK L�d2g �d’¢¡�d•�d–„ ƒZ»ejK L�d—g �d˜¢¡ejK L�d2g �d’¢¡�d™�dš„ ƒƒZ¼�d›�dœ„ Z½ejK L�d��dž�dŸg¡�d �d¡„ ƒZ¾�d¢�d£„ Z¿�d¤�d¥„ ZÀejK L�dV�d€�d�g¡�d¦�d§„ ƒZÁejK L�d¨�d©e�d^dÑ�dªdÑ�d«�g�d¬e& Â�d­¡gg¡�d®�d¯„ ƒZÃ�d°�d±„ ZÄ�d²�d³„ ZÅejK L�dV�d€�d�g¡�d´�dµ„ ƒZÆejK Ld�d¶�d·g¡�d¸�d¹„ ƒZÇejK L�d\�dºd¯g�d»dÛg�d¼dÑg�d½d>gg¡�d¾�d¿„ ƒZÈ�dÀ�dÁ„ ZÉ�dÂ�dÃ„ ZÊ�dÄ�dÅ„ ZËejK L�dÆd�d�g¡�dÇ�dÈ„ ƒZÌ�dÉ�dÊ„ ZÍ�dË�dÌ„ ZÎejK Ld�dÍ�dÎg¡�dÏ�dÐ„ ƒZÏG �dÑ�dÒ„ �dÒe9ƒZÐ�dÓ�dÔ„ ZÑ�dÕ�dÖ„ ZÒejK L�d×�dØ�dÙge7 Y¡ fd³d›ge7 Z¡ fg¡�dÚ�dÛ„ ƒZÓ�dÜ�dÝ„ ZÔejK Ld)e)jMe)jÕ ¡�dÞ�dß„ ƒZÖejK Ld)e)j×¡�dà�dá„ ƒZØejK Ld)e)jÙ¡�dâ�dã„ ƒZÚejK Ld)e)jÙe)j× ¡�dä�då„ ƒZÛ�dæ�dç„ ZÜ�dè�dé„ ZÝ�dê�dë„ ZÞejK Ld)e)jÙe)j× ¡�dì�dí„ ƒZßejK Ld)e)jÙe)j× ¡�dî�dï„ ƒZàejK Ld)e)jÙe)j× ¡�dð�dñ„ ƒZáejK Ld)e)jÙe)j× ¡�dò�dó„ ƒZâejK Ld)e)jÙe)j× ¡�dô�dõ„ ƒZãejK Ld)e)jÙe)j× ¡�dö�d÷„ ƒZä�dø�dù„ ZåejKjLd)e)jÙe)j× eædB�ejK Lddeçg¡�dú�dû„ ƒƒZè�dü�dý„ Zé�dþ�dÿ„ Zê�d �d„ Zë�d�d„ ZìejK Ld)e)j×¡�d�d„ ƒZí�d�d„ Zî�d�d	„ Zï�d
�d„ Zð�d�d„ Zñ�d�d„ ZòejK Ld�d�dg¡�d�d„ ƒZóejK Ld)e)jô¡�d�d„ ƒZõejK Ld)e)jô¡�d�d„ ƒZöejK Lde)j÷¡�d�d„ ƒZøejK Ldg �d¢¡�d�d„ ƒZùejK Ld)e)jM¡�d�d„ ƒZúejK Ld�d�dg¡�d�d „ ƒZûejK Ld�d�dg¡�d!�d"„ ƒZü�d#�d$„ Zý�d%�d&„ Zþ�d'�d(„ Zÿ�d)�d*„ �Z �d+�d,„ �ZdS (-  ag  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.
The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).
Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.
é    )Úannotations)ÚdateÚdatetimeÚtimeÚ	timedelta)ÚDecimal)ÚBytesIOÚStringION)Úlib)Ú	timezones)ÚPY311ÚPY312Úis_ci_environmentÚis_platform_windowsÚpa_version_under11p0Úpa_version_under13p0Úpa_version_under14p0)Ú
ArrowDtypeÚCategoricalDtypeType)Ú
no_default)Úis_bool_dtypeÚis_float_dtypeÚis_integer_dtypeÚis_numeric_dtypeÚis_signed_integer_dtypeÚis_string_dtypeÚis_unsigned_integer_dtype)ÚbaseÚpyarrow)ÚArrowExtensionArray)ÚArrowPeriodTypec                 C  s4   t ƒ rtƒ rtjjtjdd�}|  |¡ d S d S d S )Nz_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.©ÚraisesÚreason)r   r   ÚpytestÚmarkÚxfailÚpaÚArrowInvalidÚapplymarker)Úrequestr%   © r+   úS/var/www/html/env/lib/python3.10/site-packages/pandas/tests/extension/test_arrow.pyÚ_require_timezone_databaseG   s   ýør-   )ÚparamsÚidsc                 C  s   t | jd�S )N)Úpyarrow_dtype)r   Úparam)r*   r+   r+   r,   ÚdtypeS   s   r2   c              	   C  st  | j }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 }�nttj |¡r]ddgd d g ddgd  d g ddg }�nVtj |¡r{ddgd d g ddgd  d g ddg }�n8tj |¡r¥t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 }n™tj |¡�rEtdƒtddƒgd d g tdƒtdƒgd  d g tdƒtdƒg }nntj |¡�rutddƒtddƒgd d g tddƒtddƒgd  d g tddƒtddƒg }n>tj |¡�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‚tj|| d*�S )+NTFé   é,   ç      ð?ç        g       Àg      ð¿ç      à?g     àX@é   r   éþÿÿÿéÿÿÿÿéc   é   Ú1ú0.0z-2.0z-1.0z0.5z33.123éæ  éÏ  é   é   éä  iöÿÿÿé
   é   ÚaÚbÚ2ú!ú>ó   aó   bó   1ó   2ó   !ó   >©r2   )r0   r'   ÚtypesÚ
is_booleanÚis_floatingÚis_signed_integerÚis_unsigned_integerÚ
is_decimalr   Úis_dater   Úis_timestampr   Úis_durationr   Úis_timer   Ú	is_stringÚ	is_binaryÚNotImplementedErrorÚpdÚarray)r2   Úpa_dtypeÚdatar+   r+   r,   rb   X   sŒ   0000ÿþýüÿÿþýüÿ*ÿþýüÿÿþýüÿÿþýüÿ..rb   c                 C  s   t | ƒjd| d g| jd�S )zLength-2 array with [NA, Valid]Nr   rQ   ©ÚtypeÚ_from_sequencer2   )rb   r+   r+   r,   Údata_missing”   s   rf   )r.   c                 C  s    | j dkr|S | j dkr|S dS )z�Parametrized fixture returning 'data' or 'data_missing' integer arrays.

    Used to test dtype conversion with and without missing values.
    rb   rf   N)r1   )r*   rb   rf   r+   r+   r,   Úall_dataš   s
   

ÿrg   c              	   C  s¬  | j }tj |¡rd}d}d}n·tj |¡rd}d}d}nªtj |¡r*d}d}d}n�tj |¡r7d}d}d	}n�tj |¡rPtd
ddƒ}tdddƒ}tdddƒ}nwtj 	|¡rnt
d
ddddddƒ}t
dddƒ}t
ddddƒ}nYtj |¡r‚tdƒ}tdƒ}tddƒ}nEtj |¡r˜tddƒ}tddƒ}tddƒ}n/tj |¡r¥d}d}d}n"tj |¡r²d}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š™™™™™ñ¿r6   gš™™™™™ñ?r:   r   r8   rD   r@   rA   rB   iÚ  r?   rC   r3   rF   rG   ÚcrK   rL   ó   cz-1.1r>   z1.1NrQ   )r0   r'   rR   rS   rT   rU   rV   rX   r   rY   r   rZ   r   r[   r   r\   r]   rW   r   r^   r_   r`   )r2   ra   ÚAÚBÚCr+   r+   r,   Údata_for_grouping¦   s^   	


rm   c                 C  ó&   t | ƒj| d | d | d g| jd�S )zn
    Length-3 array with a known sort order.

    This should be three items [B, C, A] with
    A < B < C
    r   é   r3   rQ   rc   ©rm   r+   r+   r,   Údata_for_sortingá   ó   þrq   c                 C  rn   )z{
    Length-3 array with a known sort order.

    This should be three items [B, NA, A] with
    A < B and NA missing.
    r   r<   r3   rQ   rc   rp   r+   r+   r,   Údata_missing_for_sortingï   rr   rs   c                 C  sR   | j j}tj |¡stj |¡stj |¡stj |¡r'tj	dgd | j d�S | S )z3Length-100 array in which all the elements are two.r<   éd   rQ   )
r2   r0   r'   rR   Ú
is_integerrT   rW   rZ   r_   r`   ©rb   ra   r+   r+   r,   Údata_for_twosý   s   
ÿ
þ
ý
ürw   c                	      sÒ  e Zd Zdd„ Zej dddg¡dd„ ƒZ‡ fdd	„Zej d
dej	de
 d¡d�g¡‡ fdd„ƒZ‡ fdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdxd!d"„Zej d#d$d%g¡‡ fd&d'„ƒZdxd(d)„Zdyd*d+„Zej d#d$d%g¡‡ fd,d-„ƒZej d#d$d%g¡‡ fd.d/„ƒZdzd0d1„Zej d#d$d%g¡‡ fd2d3„ƒZej d4g d5¢¡d6d7„ ƒZ‡ fd8d9„Z‡ fd:d;„Z‡ fd<d=„Zd>d?„ Z‡ fd@dA„Z‡ fdBdC„Z ejj!dDd%dE�‡ fdFdG„ƒZ"dHdI„ Z#ejj!dJd%dE�‡ fdKdL„ƒZ$ejj!dJd%dE�‡ fdMdN„ƒZ%ej dOde&g¡ej dPdQdRg¡dSdT„ ƒƒZ'‡ fdUdV„Z(ej dWdXdYg¡‡ fdZd[„ƒZ)d\d]„ Z*d^Z+e,Z-d_d`„ Z.d{dadb„Z/dcdd„ Z0d|dfdg„Z1dhdi„ Z2‡ fdjdk„Z3‡ fdldm„Z4dndo„ Z5‡ fdpdq„Z6drds„ Z7ej dtg du¢¡dvdw„ ƒZ8‡  Z9S )}ÚTestArrowArrayc                 C  s"   t  |¡}|  ||||d ¡ d S )Nr   )r_   ÚSeriesÚ_compare_other)Úselfrb   Úcomparison_opÚserr+   r+   r,   Útest_compare_scalar  s   
z"TestArrowArray.test_compare_scalarÚ	na_actionNÚignorec                 C  s€   |j jdv r|jdd„ |d�}|jtd�}t ||¡ d S |jdd„ |d�}|j dkr4|jdtjd	�}n| ¡ }t ||¡ d S )
NÚmMc                 S  ó   | S ©Nr+   ©Úxr+   r+   r,   Ú<lambda>  ó    z)TestArrowArray.test_map.<locals>.<lambda>©r   rQ   c                 S  r‚   rƒ   r+   r„   r+   r+   r,   r†     r‡   úfloat32[pyarrow]Úfloat64©r2   Úna_value)	r2   ÚkindÚmapÚto_numpyÚobjectÚtmÚassert_numpy_array_equalÚnpÚnan)r{   rf   r   ÚresultÚexpectedr+   r+   r,   Útest_map  s   
zTestArrowArray.test_mapc                   sx   |j j}tj |¡r| tjjd|› d�d�¡ ntj 	|¡r$|j
d u s*tj |¡r4| tjjdd�¡ tƒ  |¡ d S )NzFor z .astype(str) decodes.©r#   ú8pd.Timestamp/pd.Timedelta repr different from numpy repr)r2   r0   r'   rR   r]   r)   r$   r%   r&   rY   ÚtzrZ   ÚsuperÚtest_astype_str©r{   rb   r*   ra   ©Ú	__class__r+   r,   rœ   !  s$   
ÿÿ
ÿ

ÿÿÿzTestArrowArray.test_astype_strÚnullable_string_dtypezstring[python]ústring[pyarrow]r   )Úmarksc                   sP   |j j}tj |¡r|jd u stj |¡r| tj	j
dd�¡ tƒ  ||¡ d S )Nr™   r˜   )r2   r0   r'   rR   rY   rš   rZ   r)   r$   r%   r&   r›   Útest_astype_string)r{   rb   r    r*   ra   rž   r+   r,   r£   3  s   
ÿ

ÿÿÿz!TestArrowArray.test_astype_stringc                   s`   |j j}tj |¡stj |¡r(tj |¡rd}nd|› �}| tjj	|d�¡ t
ƒ  |¡ d S )Nz1ArrowDtype(pa.string()) != StringDtype('pyarrow')ú$pyarrow.type_for_alias cannot infer r˜   )r2   r0   r'   rR   r\   rW   r)   r$   r%   r&   r›   Útest_from_dtype)r{   rb   r*   ra   r#   rž   r+   r,   r¥   F  s   
ÿÿzTestArrowArray.test_from_dtypec                 C  sp   t |ƒj|j|jd�}t ||¡ t|jtjƒsJ ‚t |ƒj|j 	¡ |jd�}t ||¡ t|jtjƒs6J ‚d S ©NrQ   )
rd   re   Ú	_pa_arrayr2   r‘   Úassert_extension_array_equalÚ
isinstancer'   ÚChunkedArrayÚcombine_chunks©r{   rb   r•   r+   r+   r,   Útest_from_sequence_pa_arrayU  s   ÿz*TestArrowArray.test_from_sequence_pa_arrayc                 C  sH   t jtdd�� tjdgt ¡ d� W d   ƒ d S 1 sw   Y  d S )NzConverting strings to©Úmatchz12-1rQ   )r$   r"   r^   r   Ú_from_sequence_of_stringsr'   Úmonth_day_nano_interval)r{   r*   r+   r+   r,   Ú*test_from_sequence_pa_array_notimplementedb  s
   
ÿ"ÿz9TestArrowArray.test_from_sequence_pa_array_notimplementedc                 C  sî   |j j}tj |¡r| d¡rts| tj	j
dd�¡ n-tr:tj |¡s*tj |¡r:| tj	j
tjd|› �d�¡ ntj |¡rI|jd urIt|ƒ |j t ¡ ¡}t|ƒj||j d�}t ||¡ | ¡ }t|ƒj||j d�}t ||¡ d S )Nz
time64[ns]z&Nanosecond time parsing not supported.r˜   z pyarrow doesn't support parsing r!   rQ   )r2   r0   r'   rR   Ú	is_time64Úequalsr   r)   r$   r%   r&   r   rZ   rW   ÚArrowNotImplementedErrorrY   rš   r-   r§   ÚcastÚstringrd   r°   r‘   r¨   r«   )r{   rb   r*   ra   Úpa_arrayr•   r+   r+   r,   Ú&test_from_sequence_of_strings_pa_arrayh  s4   ÿÿ
ÿ
ÿþÿz5TestArrowArray.test_from_sequence_of_strings_pa_arrayc                 C  s€   t ||ƒ|d�}|jj}tj |¡r&|jdkrd}nd}| |¡}| |¡}| d¡}t | d¡|ƒ|d�}tj	||dd� d S )N©Úskipnaé    úint32[pyarrow]úint64[pyarrow]ÚFloat64F)Úcheck_dtype)
Úgetattrr2   r0   r'   rR   Úis_temporalÚ	bit_widthÚastyper‘   Úassert_series_equal)r{   r}   Úop_namer»   r•   Úpa_typeÚint_typer–   r+   r+   r,   Úcheck_accumulate„  s   



zTestArrowArray.check_accumulater}   ú	pd.SeriesrÆ   ÚstrÚreturnÚboolc                 C  sŒ   |j j}tj |¡stj |¡stj |¡r|dv rdS dS tj |¡r,|dv r*dS dS tj |¡rD|dkr>tj 	|¡s>dS |dkrDdS dS )N)ÚcumsumÚcumprodÚcummaxÚcumminF)rÏ   rÐ   rÑ   rÎ   rÏ   T)
r2   r0   r'   rR   r\   r]   rW   rS   rÂ   rZ   )r{   r}   rÆ   rÇ   r+   r+   r,   Ú_supports_accumulation•  s(   
ÿ
þ
ý	øûz%TestArrowArray._supports_accumulationr»   TFc           
        sØ   |j j}|}t |¡}|  ||¡stƒ  |||¡S trC|dkrC|jj	}|j
r3d|j
v r3t |› d�¡ tjj|› d�d�}	| |	¡ n |dkrctj |¡sStj |¡rc| tjj|› d|› �td�¡ |  |||¡ d S )NrÎ   znot slowz  not implemented for pyarrow < 9r˜   z not implemented for ©r#   r"   )r2   r0   r_   ry   rÒ   r›   Útest_accumulate_seriesr   ÚconfigÚoptionÚmarkexprr$   Úskipr%   r&   r)   r'   rR   rS   rW   r^   rÉ   )
r{   rb   Úall_numeric_accumulationsr»   r*   rÇ   rÆ   r}   Úoptr%   rž   r+   r,   rÔ   «  s:   
ÿÿÿ
ÿ
ÿþÿz%TestArrowArray.test_accumulate_seriesc                 C  s†   |j }|j}tj |¡r|dv rtj |¡r|dv rndS tj |¡s)tj |¡r/|dv r/dS tj |¡rAtj |¡sA|dv rAdS dS )N)ÚsumÚvarÚskewÚkurtÚprod)rÛ   F)	rÛ   ÚmeanÚmedianrß   ÚstdÚsemrÜ   rÝ   rÞ   )ÚanyÚallT)r2   r0   r'   rR   rÂ   rZ   r\   r]   )r{   r}   rÆ   r2   ra   r+   r+   r,   Ú_supports_reductionÐ  s&   
ÿ
ÿ
ÿ
þz"TestArrowArray._supports_reductionc                 C  s‚   |j j}tj |¡stj |¡r| d¡}n|}|dkr)t||ƒƒ }t||ƒƒ }nt||ƒ|d�}t||ƒ|d�}t 	||¡ d S )Nr¿   Úcountrº   )
r2   r0   r'   rR   ru   rT   rÄ   rÁ   r‘   Úassert_almost_equal)r{   r}   rÆ   r»   ra   Úaltr•   r–   r+   r+   r,   Úcheck_reduceü  s   zTestArrowArray.check_reducec                   s„   |j }|j}tjjt|› dtj› d|› �d�}|dv r)|js#|j	dkr)| 
|¡ ntj |¡r8|dv r8| 
|¡ tƒ  |||¡ d S )Nú is not implemented in pyarrow=ú for r!   >   rÞ   rÝ   rG   >   rã   râ   rÜ   rá   )r2   r0   r$   r%   r&   Ú	TypeErrorr'   Ú__version__Ú_is_numericr�   r)   rR   rS   r›   Útest_reduce_series_numeric)r{   rb   Úall_numeric_reductionsr»   r*   r2   ra   Ú
xfail_markrž   r+   r,   rð     s$   ÿÿýÿ

z)TestArrowArray.test_reduce_series_numericc                   s\   |j j}tjjt|› dtj› d|› �d�}tj 	|¡s!tj 
|¡r&| |¡ tƒ  |||¡S )Nrë   rì   r!   )r2   r0   r$   r%   r&   rí   r'   rî   rR   r\   r]   r)   r›   Útest_reduce_series_boolean)r{   rb   Úall_boolean_reductionsr»   rŒ   r*   ra   rò   rž   r+   r,   ró   +  s   ÿÿý
z)TestArrowArray.test_reduce_series_booleanc                 C  s`   |dv r	|j }|S |j jdkr|dvr|j }|S d}|S |dv r$d}|S ddddœ|j j }|S )	N)ÚmaxÚminzdecimal128(7, 3)[pyarrow])rá   rÜ   râ   úfloat64[pyarrow])rá   rÜ   râ   rà   rÝ   r¾   úuint64[pyarrow])ÚiÚuÚf)r2   Únamer�   )r{   ÚarrrÆ   r»   Ú	cmp_dtyper+   r+   r,   Ú_get_expected_reduction_dtype>  s&   ó÷	øüýüz,TestArrowArray._get_expected_reduction_dtypec                   s<   |}|dkr|j jrtjjdd�}| |¡ tƒ  |||¡S )NrÝ   zskew not implementedr˜   )r2   rï   r$   r%   r&   r)   r›   Útest_reduce_frame)r{   rb   rñ   r»   r*   rÆ   r%   rž   r+   r,   r   P  s   
z TestArrowArray.test_reduce_frameÚtyp)Úint64Úuint64rŠ   c                 C  s,   t jddg|› d�d� ¡ }|dksJ ‚d S )Nr8   r<   ú	[pyarrow]rQ   ç      ø?)r_   ry   rá   )r{   r  r•   r+   r+   r,   Útest_median_not_approximateY  s   z*TestArrowArray.test_median_not_approximatec                   s´   |j }t|ƒrRt g d¢|g d¢dœ¡}t dg¡}t d|› �¡}tjt	|d�� | 
d¡ ¡  W d   ƒ n1 s;w   Y  | 
d¡jdd	�j}t ||¡ d S tƒ  |¡ d S )
N)r8   r8   r<   r<   é   r  r8   r3   )r8   r8   r8   r8   r8   r8   r8   r8   ©rj   rk   rl   rl   z%agg function failed [how->sum,dtype->r®   rj   T)Únumeric_only)r2   r   r_   Ú	DataFrameÚIndexÚreÚescaper$   r"   rí   ÚgroupbyrÛ   Úcolumnsr‘   Úassert_index_equalr›   Útest_in_numeric_groupby)r{   rm   r2   Údfr–   Úmsgr•   rž   r+   r,   r  _  s    ýÿÿz&TestArrowArray.test_in_numeric_groupbyc                   sŽ   |j }tj |¡r| tjjtd|› �d�¡ tj 	|¡r?d}tj
t|d�� | |j¡ W d   ƒ d S 1 s8w   Y  d S tƒ  |¡ d S )Nr¤   r!   z6string\[pyarrow\] should be constructed by StringDtyper®   )r0   r'   rR   rW   r)   r$   r%   r&   r^   r\   r"   rí   Úconstruct_from_stringrü   r›   Ú#test_construct_from_string_own_name)r{   r2   r*   ra   r  rž   r+   r,   r  s  s"   þÿ
ÿýz2TestArrowArray.test_construct_from_string_own_namec                   sb   |j }tj |¡rt|ƒ |j¡rJ ‚d S tj |¡r)| t	j
jtd|› �d�¡ tƒ  |¡ d S )Nr¤   r!   )r0   r'   rR   r\   rd   Úis_dtyperü   rW   r)   r$   r%   r&   r^   r›   Útest_is_dtype_from_name©r{   r2   r*   ra   rž   r+   r,   r  ‡  s   þÿz&TestArrowArray.test_is_dtype_from_namec                 C  sF   d}t jt|d�� t|ƒ d¡ W d   ƒ d S 1 sw   Y  d S )Nz*'another_type' must end with '\[pyarrow\]'r®   Úanother_type)r$   r"   rí   rd   r  )r{   r2   r  r+   r+   r,   Ú.test_construct_from_string_another_type_raises–  s   "ÿz=TestArrowArray.test_construct_from_string_another_type_raisesc                   sv   |j }tj |¡s&tj |¡s&tj |¡r|jd us&tj |¡s&tj |¡r3| 	t
jj|› d�d�¡ tƒ  |¡ d S )NzB does not have associated numpy dtype findable by find_common_typer˜   )r0   r'   rR   rX   r[   rY   rš   r]   rW   r)   r$   r%   r&   r›   Útest_get_common_dtyper  rž   r+   r,   r  ›  s$   
ÿ
þ
ý

ÿ
þþÿz$TestArrowArray.test_get_common_dtypec                   s2   |j }tj |¡rt|ƒsJ ‚d S tƒ  |¡ d S rƒ   )r0   r'   rR   r\   r   r›   Útest_is_not_string_type)r{   r2   ra   rž   r+   r,   r  ®  s   z&TestArrowArray.test_is_not_string_typez6GH 45419: pyarrow.ChunkedArray does not support views.)r#   Úrunc                   ó   t ƒ  |¡ d S rƒ   )r›   Ú	test_view©r{   rb   rž   r+   r,   r  µ  ó   zTestArrowArray.test_viewc                 C  s`   ||  ¡   }|d }| |¡}||usJ ‚t ||¡ |jdd�}||us(J ‚t ||¡ d S )Nr   Úbackfill)Úmethod)ÚisnaÚfillnar‘   r¨   )r{   rb   Úvalidr•   r+   r+   r,   Útest_fillna_no_op_returns_copy»  s   
z-TestArrowArray.test_fillna_no_op_returns_copyz5GH 45419: pyarrow.ChunkedArray does not support viewsc                   r  rƒ   )r›   Útest_transposer   rž   r+   r,   r(  Ç  r!  zTestArrowArray.test_transposec                   r  rƒ   )r›   Útest_setitem_preserves_viewsr   rž   r+   r,   r)  Í  r!  z+TestArrowArray.test_setitem_preserves_viewsÚdtype_backendÚenginerh   Úpythonc           
      C  sþ   |j j}tj |¡r| tjjt	d|› d�d�¡ n'tj 
|¡r1|jdv r1| tjjtdd�¡ ntj |¡rA| tjjdd�¡ t dtj|t|j ƒd	�i¡}|jd
tjd�}tj |¡rct|ƒ}nt|ƒ}tj|dt|j ƒi||d�}|}	t ||	¡ d S )NzParameterized types z not supported.r!   )ÚusÚnsz1https://github.com/pandas-dev/pandas/issues/49767z)CSV parsers don't correctly handle binaryr˜   Ú
with_dtyperQ   F)ÚindexÚna_rep)r2   r+  r*  )r2   r0   r'   rR   rW   r)   r$   r%   r&   r^   rY   ÚunitÚ
ValueErrorr]   r_   r
  ry   rË   Úto_csvr“   r”   r   r	   Úread_csvr‘   Úassert_frame_equal)
r{   r+  rb   r*  r*   ra   r  Ú
csv_outputr•   r–   r+   r+   r,   Útest_EA_typesÓ  s@   
þÿþÿÿ
üzTestArrowArray.test_EA_typesc                   s¬   |j j}tj |¡s%tj |¡s%tj |¡s%| tj	j
tjd|› �d�¡ trNtj |¡rNtjtddd�� tƒ  |¡ W d   ƒ d S 1 sGw   Y  d S tƒ  |¡ d S )Nz$pyarrow.compute.invert does support r!   zBitwise inversionF)r¯   Úcheck_stacklevel)r2   r0   r'   rR   rS   ru   r\   r)   r$   r%   r&   rµ   r   r‘   Úassert_produces_warningÚDeprecationWarningr›   Útest_invertr�   rž   r+   r,   r<  ø  s(   
ÿ
þ
ýþÿÿ"ýzTestArrowArray.test_invertÚperiodsr8   r9   c              	     sT   |j j}tj |¡r!|dkr!| tjjtj	d|› d|› d�d�¡ t
ƒ  ||¡ d S )Nr8   z
diff with z and periods=z will overflowr!   )r2   r0   r'   rR   rV   r)   r$   r%   r&   r(   r›   Ú	test_diff)r{   rb   r=  r*   ra   rž   r+   r,   r>    s   ýÿzTestArrowArray.test_diffc                 C  s.   |d d… }|  ¡ }|jtt ¡ ƒksJ ‚d S )NrD   )Úvalue_countsr2   r   r'   r  r¬   r+   r+   r,   Ú'test_value_counts_returns_pyarrow_int64  s   z6TestArrowArray.test_value_counts_returns_pyarrow_int64zbool[pyarrow]c                 C  s8   |  d¡}|dkrdd„ }|S |dkrdd„ S t |¡S )NÚ_Úrtruedivc                 S  ó   t  || ¡S rƒ   )r“   Údivide©r…   Úyr+   r+   r,   rB  *  s   z1TestArrowArray.get_op_from_name.<locals>.rtruedivÚ	rfloordivc                 S  rC  rƒ   )r“   Úfloor_dividerE  r+   r+   r,   r†   /  s    z1TestArrowArray.get_op_from_name.<locals>.<lambda>)Ústripr‘   Úget_op_from_name)r{   rÆ   Úshort_opnamerB  r+   r+   r,   rJ  %  s   

zTestArrowArray.get_op_from_namec                 C  s|  |}|dv r|  d¡S d}t|tjƒr)d}|jd d …df }|jd d …df j}n|}|j}|j}	|sdt|tjƒrdtj	 
|	¡sctj	 |	¡rI|dvsctj	 |	¡sctj	 |	¡sctj	 |	¡sctj	 |	¡sc|S n$|dkrntj	 |	¡sˆtj	 |	¡sˆtj	 |	¡sˆtj	 |	¡sˆtj	 |	¡sˆ|S t |j¡}
tj	 |
j¡rÂtj	 |	¡r§tj	 |	¡r¤d}nd	}n|	j}t|ƒttfv r¸|d
v r¸d}|
 d|› d�¡}
n_tj	 |
j¡�rtj	 |	¡�rt||ƒ|ƒ}t |¡}t|tƒsäJ ‚|dkrôt|tƒrôtt ¡ ƒ}n#|dk�rt|tjƒ�r|j|k�rtt ¡ ƒ}n
tj	 |j¡�sJ ‚|  |¡S |
 |	¡}
t|jƒ|
ƒ}|�r7tj||j|jd�}|S t |¡}|S )N)ÚeqÚneÚltÚleÚgtÚgeúboolean[pyarrow]FTr   )Ú__truediv__Ú__rtruediv__Ú__floordiv__ÚmsÚs)rW  rV  r-  z	duration[ú]Ú__pow__)r0  r  ) rÄ   r©   r_   r
  Úilocr2   r0   ry   r'   rR   rT   ru   rZ   rY   rX   rW   r`   Ú_valuesrd   Ú	is_date64r2  r   r   r¶   rÁ   r‘   Ú	get_dtyper   r   rŠ   r0  r  )r{   rÆ   ÚobjÚotherÚpointwise_resultr–   Ú	was_frameÚexpected_dataÚoriginal_dtypeÚorig_pa_typeÚpa_expectedr2  ré   Ú	alt_dtypeÚpd_expectedr+   r+   r,   Ú_cast_pointwise_result3  sŽ   

ÿ
ý
þ
ý
ü
û	€
ÿ
þ
ý
üÿ


ÿ


ÿ
ÿz%TestArrowArray._cast_pointwise_resultc                 C  s6   |dv p
|dv o
t  rtj |¡p|dv otj |¡S )N©Ú__add__Ú__radd__©rS  rT  rU  Ú__rfloordiv__©Ú__sub__Ú__rsub__)r   r'   rR   rZ   rÂ   )r{   Úopnamera   r+   r+   r,   Ú_is_temporal_supported™  s   ÿû
ø	
õz%TestArrowArray._is_temporal_supportedútype[Exception] | Nonec                 C  s¤   |dv r| j S t |¡}|j}|  ||¡}|dv rt}|S |r#d }|S |dv r7tj |¡s3tj 	|¡r7d }|S tj 
|¡sNtj |¡sNtj |¡sNtj}|S d }|S )N)Ú
__divmod__Ú__rdivmod__>   Ú__mod__Ú__rmod__ri  )Ú
divmod_excr‘   r]  r0   rr  r^   r'   rR   r\   r]   rT   ru   rW   rµ   )r{   rÆ   r^  r_  r2   ra   Úarrow_temporal_supportedÚexcr+   r+   r,   Ú_get_expected_exception¨  s8   
ïñ
ÿ
ÿ
öÿ
þ
ýÿz&TestArrowArray._get_expected_exceptionc                 C  sø   d }|   ||¡}|dkr*tj |¡stj |¡stj |¡r*tjjd|› �d�}|S |rLtj 	|¡s<|dv rLtj 
|¡rLtjjt|› d|› d�d�}|S |dkrgtj |¡s\tj |¡rgtjjtjd	d�}|S |d
krztj |¡rztjjtjd	d�}|S )NÚ__rpow__z<GH#29997: 1**pandas.NA == 1 while 1**pyarrow.NA == NULL for r˜   rl  z  not supported betweenpd.NA and z Python scalarr!   rm  zdivide by 0rT  )rr  r'   rR   rT   ru   rW   r$   r%   r&   r[   rZ   rí   r(   )r{   rq  ra   r%   ry  r+   r+   r,   Ú_get_arith_xfail_markerÌ  s\   
ÿ
þ
ýÿþ"ä
ÿÿ
þÿýó
ÿ
ÿþ
úþz&TestArrowArray._get_arith_xfail_markerc                   sŽ   |j j}|dkrtj |¡rt d¡ n|dv r/tj |¡s$tj |¡r/| tj	j
tdd�¡ |  ||¡}|d ur>| |¡ tƒ  ||¡ d S ©Nrw  z%Skip testing Python string formatting©Ú__rmul__Ú__mul__ú'Can only string multiply by an integer.r!   )r2   r0   r'   rR   r]   r$   rØ   r\   r)   r%   r&   rí   r}  r›   Útest_arith_series_with_scalar©r{   rb   Úall_arithmetic_operatorsr*   ra   r%   rž   r+   r,   rƒ  ú  s"   
ÿ
ÿÿÿ
z,TestArrowArray.test_arith_series_with_scalarc                   sš   |j j}|dkrtj |¡stj |¡rt d¡ n|dv r5tj |¡s*tj |¡r5| tj	j
tdd�¡ |  ||¡}|d urD| |¡ tƒ  ||¡ d S r~  )r2   r0   r'   rR   r\   r]   r$   rØ   r)   r%   r&   rí   r}  r›   Útest_arith_frame_with_scalarr„  rž   r+   r,   r†    s*   
ÿ
ÿ
ÿ
ÿÿÿ
z+TestArrowArray.test_arith_frame_with_scalarc           	      C  sÖ   |j j}|dv rtj |¡r| tjjtj	d|› �d�¡ n|dv r9tj 
|¡s.tj |¡r9| tjjtdd�¡ |  ||¡}|d urH| |¡ |}t |¡}t tj|jd gt|ƒ |j d�¡}|  |||¡ d S )Nrn  zJImplemented pyarrow.compute.subtract_checked which raises on overflow for r!   r  r‚  r   rQ   )r2   r0   r'   rR   rV   r)   r$   r%   r&   r(   r]   r\   rí   r}  r_   ry   r`   rZ  ÚlenÚcheck_opname)	r{   rb   r…  r*   ra   r%   rÆ   r}   r_  r+   r+   r,   Útest_arith_series_with_array$  s:   
ýÿýÿ	
ÿ
ÿÿÿ

&z+TestArrowArray.test_arith_series_with_arrayc                   s@   |j j}| d¡r| tjjtjd|› �d�¡ t	ƒ  
|¡ d S )NÚint8zraises on overflow for r!   )r2   r0   r´   r)   r$   r%   r&   r'   r(   r›   Ú$test_add_series_with_extension_arrayr�   rž   r+   r,   r‹  I  s   
þÿz3TestArrowArray.test_add_series_with_extension_arrayc                 C  s@   t jtdd�� ||tƒ ƒ W d   ƒ d S 1 sw   Y  d S )Nz'.* not implemented for <class 'object'>r®   )r$   r"   r^   r�   )r{   rb   r|   r+   r+   r,   Útest_invalid_other_compU  s
   ÿ"ýz&TestArrowArray.test_invalid_other_compÚmasked_dtype)ÚbooleanÚInt64r¿   c           	      C  s„   g d¢}t j||d�}t j|| ¡ › d�d�}|||ƒ}|tjtjtjfv r+g d¢}ng d¢}t j|tt 	¡ ƒd�}t
 ||¡ d S )N)r8   r   NrQ   r  )FFN)TTN)r_   ry   ÚlowerÚoperatorrN  rP  rM  r   r'   Úbool_r‘   rÅ   )	r{   r�  r|   rb   Ú
ser_maskedÚser_par•   Úexpr–   r+   r+   r,   Útest_comp_masked_numpy\  s   

z%TestArrowArray.test_comp_masked_numpy)r}   rÊ   rÆ   rË   rÌ   rÍ   )r}   rÊ   rÆ   rË   r»   rÍ   )rÆ   rË   r»   rÍ   )rÆ   rË   )rÆ   rË   rÌ   rs  ):Ú__name__Ú
__module__Ú__qualname__r~   r$   r%   Úparametrizer—   rœ   r1   ÚtdÚ
skip_if_nor£   r¥   r­   r²   r¹   rÉ   rÒ   rÔ   ræ   rê   rð   ró   rÿ   r   r  r  r  r  r  r  r  r&   r  r'  r(  r)  r   r8  r<  r>  r@  Ú_combine_le_expected_dtyper^   rx  rJ  rh  rr  r{  r}  rƒ  r†  r‰  r‹  rŒ  r–  Ú__classcell__r+   r+   rž   r,   rx     sŽ    
þþ

$
,

ÿÿÿ#
f
$.%rx   c                   @  sf  e Zd ZdZdd„ Zej ddg d¢fej	g d¢fdg d¢fe
 d¡g d¢fd	g d
¢fe
 d	¡g d
¢fg¡dd„ ƒZdd„ Zej ddg d¢fej	g d¢fdg d
¢fd	g d¢fe
 d¡g d
¢fe
 d	¡g d¢fg¡dd„ ƒZdd„ Zej ddg d¢fej	g d¢fdg d¢fe
 d¡g d¢fe
 d	¡g d
¢fg¡dd„ ƒZej dddgddgdd	gg¡dd„ ƒZdS )ÚTestLogicalOpsz1Various Series and DataFrame logical ops methods.c                 C  sÊ   t jdgd dgd  d gd  dd�}t jg d¢d dd�}||B }t jg d¢dd�}t ||¡ ||B }t ||¡ t |t jdgd dgd  d gd  dd�¡ t |t jg d¢d dd�¡ d S )NTr  FrR  rQ   ©TFN)	TTTTFNTNN©r_   ry   r‘   rÅ   ©r{   rF   rG   r•   r–   r+   r+   r,   Útest_kleene_orn  ó"   (þ&þÿzTestLogicalOps.test_kleene_orzother, expectedN)TNNT)TTTFr   c                 C  sf   t jg d¢dd�}||B }t j|dd�}t ||¡ ||B }t ||¡ t |t jg d¢dd�¡ d S ©Nr   rR  rQ   r¡  ©r{   r_  r–   rF   r•   r+   r+   r,   Útest_kleene_or_scalar„  ó   ÿz$TestLogicalOps.test_kleene_or_scalarc                 C  sÊ   t jdgd dgd  d gd  dd�}t jg d¢d dd�}||@ }t jg d¢dd�}t ||¡ ||@ }t ||¡ t |t jdgd dgd  d gd  dd�¡ t |t jg d¢d dd�¡ d S )NTr  FrR  rQ   r   )	TFNFFFNFNr¡  r¢  r+   r+   r,   Útest_kleene_and�  r¤  zTestLogicalOps.test_kleene_and)NFN©FFFc                 C  sf   t jg d¢dd�}||@ }t j|dd�}t ||¡ ||@ }t ||¡ t |t jg d¢dd�¡ d S r¥  r¡  r¦  r+   r+   r,   Útest_kleene_and_scalar³  r¨  z%TestLogicalOps.test_kleene_and_scalarc                 C  sÊ   t jdgd dgd  d gd  dd�}t jg d¢d dd�}||A }t jg d¢dd�}t ||¡ ||A }t ||¡ t |t jdgd dgd  d gd  dd�¡ t |t jg d¢d dd�¡ d S )NTr  FrR  rQ   r   )	FTNTFNNNNr¡  r¢  r+   r+   r,   Útest_kleene_xorÌ  r¤  zTestLogicalOps.test_kleene_xor©NNN)FTNc                 C  sf   t jg d¢dd�}||A }t j|dd�}t ||¡ ||A }t ||¡ t |t jg d¢dd�¡ d S r¥  r¡  r¦  r+   r+   r,   Útest_kleene_xor_scalarâ  s   ÿz%TestLogicalOps.test_kleene_xor_scalarzop, expÚ__and__Ú__or__Ú__xor__c                 C  s^   g d¢}t j|dd�}t j|dd�}t||ƒ|ƒ}t j|dd gtt ¡ ƒd�}t ||¡ d S )Nr   rŽ  rQ   rR  F)r_   ry   rÁ   r   r'   r’  r‘   rÅ   )r{   Úopr•  rb   r“  r”  r•   r–   r+   r+   r,   Útest_logical_masked_numpyú  s   
z(TestLogicalOps.test_logical_masked_numpy)r—  r˜  r™  Ú__doc__r£  r$   r%   rš  r_   ÚNAr“   r’  r§  r©  r«  r¬  r®  r³  r+   r+   r+   r,   rŸ  k  sZ    


úþ



úþ


ûþ

ýþrŸ  rÇ   c                 C  sÜ   t | ƒ}tjg d¢|d�}tjg d¢|d�}||B }tjg d¢|d�}t ||¡ ||@ }tjg d¢|d�}t ||¡ ||A }tjg d¢|d�}t ||¡ | }| d¡ ¡  }tj||d� | ¡ ¡}t ||¡ d S )N)r8   Nr  r3   rQ   )Nr  rE   r3   )NNro   r3   )NNr8   r3   )NNé   r   r   )	r   r_   ry   r‘   rÅ   r%  r�   ÚmaskÚisnull)rÇ   r2   ÚleftÚrightr•   r–   r+   r+   r,   Útest_bitwise  s    r»  c                   C  sv   t jtdd�� t d¡ W d   ƒ n1 sw   Y  t jtdd�� t d¡ W d   ƒ d S 1 s4w   Y  d S )NzPassing pyarrow typer®   z#not_a_real_dype[s, tz=UTC][pyarrow]zdecimal(7, 2)[pyarrow])r$   r"   r^   r   r  r+   r+   r+   r,   ÚFtest_arrowdtype_construct_from_string_type_with_unsupported_parameters%  s   ÿ"ÿr¼  c                  C  s*   t  d¡} t t dd¡ƒ}| |ksJ ‚d S )Nztimestamp[s, tz=UTC][pyarrow]rW  ÚUTC)r   r  r'   Ú	timestamp)r2   r–   r+   r+   r,   Ú5test_arrowdtype_construct_from_string_supports_dt64tz-  s   
r¿  c                  C  sN   d} d}t jt|d�� tjtdƒ| d� W d   ƒ d S 1 s w   Y  d S )Nzint64[pyarrow]foobar[pyarrow]zYPassing pyarrow type specific parameters \(\[pyarrow\]\) in the string is not supported\.r®   r  rQ   )r$   r"   r^   r_   ry   Úrange)Úinvalidr  r+   r+   r,   Ú;test_arrowdtype_construct_from_string_type_only_one_pyarrow4  s   ÿ"ÿrÂ  c                  C  sr   t jddgtt ¡ ƒd�} t jddgdd�}| | }t jddgtt ¡ ƒd�}t ||¡ ||  }t ||¡ d S )	NÚabcÚdefgrQ   r<   r9   r¾   ÚabcabcÚ ©r_   ry   r   r'   r·   r‘   rÅ   )ÚbinaryÚrepeatr•   r–   Úreflected_resultr+   r+   r,   Ú test_arrow_string_multiplication?  s   rË  c                  C  s`   t jddgtt ¡ ƒd�} | d }t jddgtt ¡ ƒd�}t ||¡ d|  }t ||¡ d S )NrÃ  rÄ  rQ   r<   rÅ  ÚdefgdefgrÇ  )rÈ  r•   r–   rÊ  r+   r+   r,   Ú.test_arrow_string_multiplication_scalar_repeatJ  s   rÍ  Úinterpolation)Úlinearr�  ÚhigherÚnearestÚmidpointÚquantiler7   c                 C  sB  | j j}|  g d¢¡} t | ¡}tj |¡s"tj |¡s"tj 	|¡rFd}t
jtj|d�� |j||d� W d   ƒ d S 1 s?w   Y  d S tj |¡sXtj |¡sXtj |¡rYntj | jj¡rbn| t
jjtjd|› �d�¡ |  g d¢¡} t | ¡}|j||d�}tj |¡rÞ|dvrÞ|jr�d|j› d	|j› d
�}nd|j› d
�}| |¡}	|	j||d�}
|dkrÇ|jdkr¿|
jdd�}
||
ksÅJ ‚d S |jdkrÒ|
j d¡}
t ||
 | j ¡¡ d S |dkrì|| d ksêJ ‚d S tj|  ddg¡ddgd�}
tj |¡�stj |¡�stj |¡�r|
 d¡}
| d¡}t ||
¡ d S )N©r   r   r   z=Function 'quantile' has no kernel matching input types \(.*\)r®   )ÚqrÎ  z&quantile not supported by pyarrow for r!   )r�  rÐ  zM8[z, rX  r7   r-  F)Úwarnr   ©r0  r÷   ) r2   r0   Útaker_   ry   r'   rR   r\   r]   rS   r$   r"   rµ   rÓ  ru   rT   rW   rÂ   r§   rd   r)   r%   r&   rY   rš   r2  rÄ   Úto_pydatetimeÚdtÚfloorr‘   rÅ   )rb   rÎ  rÓ  r*   ra   r}   r  r•   Úpd_dtypeÚser_npr–   r+   r+   r,   Útest_quantileS  sz   

ÿ
þ
ý
ÿþ
ÿ
þ
ýþÿ



ý
ÿ
þ
ý

rÞ  ztake_idx, exp_idx)r   r   r<   r<   r3   r3   r3   )r   r   r   r<   r3   r3   Ú
multi_modeÚsingle_mode)r/   c                 C  s@   |   |¡}t |¡}|jdd�}t |   |¡¡}t ||¡ d S )NT©Údropna)rØ  r_   ry   Úmoder‘   rÅ   )rm   Útake_idxÚexp_idxrb   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   rQ   Frá  )r_   ry   r2   rã  r‘   rÅ   )rb   Ú	more_nansr•   r–   r+   r+   r,   Útest_mode_dropna_false_mode_na­  s   rè  zarrow_dtype, expected_typeé   Úf1Úf2c                 C  s   t | ƒj|ks	J ‚d S rƒ   )r   rd   )Úarrow_dtypeÚexpected_typer+   r+   r,   Útest_arrow_dtype_type¹  s   rî  c                  C  sh   t t g d¢¡ƒ} t| ƒsJ ‚tjj | ¡sJ ‚t t	t
| ƒƒ¡}||  }|t | ¡ }t ||¡ d S )N©TFT)r   r'   r`   r   r_   ÚcoreÚcommonÚis_bool_indexerry   rÀ  r‡  r“   Úasarrayr‘   rÅ   )rb   rW  r•   r–   r+   r+   r,   Útest_is_bool_dtypeÍ  s   rô  c                 C  sL   | j j}tj |¡stj |¡stj |¡rt| ƒsJ ‚d S t| ƒr$J ‚d S rƒ   )r2   r0   r'   rR   rT   ru   rW   r   ©rb   rÇ   r+   r+   r,   Útest_is_numeric_dtypeØ  s   
ÿ
þ
ýrö  c                 C  ó4   | j j}tj |¡rt| ƒsJ ‚d S t| ƒrJ ‚d S rƒ   )r2   r0   r'   rR   ru   r   rõ  r+   r+   r,   Útest_is_integer_dtypeå  s   rø  c                 C  r÷  rƒ   )r2   r0   r'   rR   rU   r   rõ  r+   r+   r,   Útest_is_signed_integer_dtypeî  ó   rù  c                 C  r÷  rƒ   )r2   r0   r'   rR   rV   r   rõ  r+   r+   r,   Útest_is_unsigned_integer_dtypeö  rú  rû  c                 C  r÷  rƒ   )r2   r0   r'   rR   rT   r   rõ  r+   r+   r,   Útest_is_float_dtypeþ  rú  rü  c                 C  sl   t  | ¡}| d¡}t |¡}t |¡}t|ƒt|ƒksJ ‚t |¡}t ||¡ t |¡}t ||¡ d S )Nr<   )	r_   ry   ÚheadÚpickleÚdumpsr‡  Úloadsr‘   rÅ   )rb   r–   Úexpected_slicedÚfull_pickledÚsliced_pickledr•   Úresult_slicedr+   r+   r,   Útest_pickle_roundtrip  s   





r  c                 C  sH   | j  ¡ j}| | j¡}t|jtƒrJ ‚t|jtƒsJ ‚t || ¡ d S rƒ   )	r§   Ú	to_pandasr`   rÄ   r2   r©   r   r‘   r¨   )rb   Úpd_arrayr•   r+   r+   r,   Útest_astype_from_non_pyarrow  s
   r  c                  C  s6   t  dg¡} |  d¡}t jdgdd�}t ||¡ d S )Nú1.0r÷   r5   rQ   ©r_   ry   rÄ   r‘   rÅ   ©r}   r•   r–   r+   r+   r,   Ú&test_astype_float_from_non_pyarrow_str  s   
r  c                  C  s2   t jddgidd�} | jddd�}t || ¡ d S )NÚcoli@fr½   rQ   úfloat[pyarrow]r€   )Úerrors)r_   r
  rÄ   r‘   r6  )r–   r•   r+   r+   r,   Útest_astype_errors_ignore'  s   r  c                 C  s–   |   ¡ }| jj}tj |¡stj |¡rt d¡ ntj 	|¡r(t
 t| ƒ¡}nt
 | j¡}| jrCt| jƒsC| t¡}tj|t | ¡< t ||¡ d S )Nz Tested in test_to_numpy_temporal)r�   r§   rd   r'   rR   rZ   rY   r$   rØ   rX   r“   r`   ÚlistÚ_hasnar   r2   rÄ   r�   r_   rµ  r$  r‘   r’   )rb   r•   rÇ   r–   r+   r+   r,   Útest_to_numpy_with_defaults.  s   
r  c                  C  sP   dd g} t j| dd�}| ¡ }t dtjg¡}t|d tƒs J ‚t ||¡ d S )Nr8   r¾   rQ   r   )	r_   r`   r�   r“   r”   r©   Úfloatr‘   r’   )rb   rý   r•   r–   r+   r+   r,   Útest_to_numpy_int_with_naA  s   r  zna_val, exp)r8   r8   c                 C  sH   t jt jt jgdd�}|jd| d�}tj|gd dd�}t ||¡ d S )Núnull[pyarrow]rQ   rŠ   r‹   r<   ©r_   r`   rµ  r�   r“   r‘   r’   )Úna_valr•  rý   r•   r–   r+   r+   r,   Útest_to_numpy_null_arrayK  s   r  c                  C  sH   t jt jt jgdd�} | jd d�}tjt jgd dd�}t ||¡ d S )Nr  rQ   r<   r�   r  ©rý   r•   r–   r+   r+   r,   Ú!test_to_numpy_null_array_no_dtypeT  s   r  c                  C  s„   t jdt jgdd�} | jdd�}tjddgtjd�}t ||¡ t jdt jgdd�} | jdd�}tjddgtjd�}t ||¡ d S )	NTrR  rQ   F)rŒ   r5   r‰   r6   )	r_   r`   rµ  r�   r“   r’  r‘   r’   Úfloat32r  r+   r+   r,   Útest_to_numpy_without_dtype\  s   r  c                 C  s®   |   ¡ }|  ¡ }| d |d d …< tj| d gt| ƒ | jd�}t ||¡ |  ¡ }| d d d… |d d …< | d d d… }t ||¡ |  ¡ }|  ¡ |d d …< | }t ||¡ d S )Nr   rQ   r:   )Úcopyr   re   r‡  r2   r‘   r¨   Útolist)rb   Úorigr•   r–   r+   r+   r,   Útest_setitem_null_slicei  s    þr!  c                 C  s®   | j j}tj |¡stj |¡rd}t}d}n tj |¡s)tj |¡s)tj 	|¡r1d}tj
}d}nd}t}d}tj||d�� || d d …< W d   ƒ d S 1 sPw   Y  d S )Né{   zInvalid value '123' for dtypeÚfoozCould not convertzInvalid value 'foo' for dtyper®   )r§   rd   r'   rR   r\   r]   rí   ru   rT   rS   r(   r$   r"   )rb   rÇ   Ú
fill_valueÚerrr  r+   r+   r,   Útest_setitem_invalid_dtype€  s(   
ÿ
þ
ý"ÿr&  c                  C  sv   t jt d¡t d¡gt  ¡ d�} | jt  ¡ tt  ¡ ƒijd�}tj	t d¡t d¡gtt  ¡ ƒd�}t
 ||¡ d S )Nz
2019-12-31©rd   ©Útypes_mapperrQ   )r'   r`   r_   Ú	TimestampÚdate32r  r   Údate64Úgetry   r‘   rÅ   )Ú
date_arrayr•   r–   r+   r+   r,   Ú&test_from_arrow_respecting_given_dtype—  s   ÿÿ
þr/  c                  C  sj   t jddgt  ¡ d�} tjt jdd�� | jt  ¡ tt  ¡ ƒij	d� W d   ƒ d S 1 s.w   Y  d S )Nr  ç      @r'  zFloat value 1.5 was truncatedr®   r(  )
r'   r`   rŠ   r$   r"   r(   r  r   r  r-  )r`   r+   r+   r,   Ú-test_from_arrow_respecting_given_dtype_unsafe¥  s    "ÿr1  c                  C  s�   d} t jdddt jg| d�}| d¡}t jdddt jg| d�}t ||¡ t jd	t jd
g| d�}| d¡}t jdt jdg| d�}t ||¡ d S )Nr÷   r6   g®Gáz®ó?g{®Gáz@rQ   r8   g333333ó?gÍÌÌÌÌÌ@gš™™™™Ù^@g¤p=
×cL@r:   g      ^@g      N@)r_   ry   rµ  Úroundr‘   rÅ   ©r2   r}   r•   r–   r+   r+   r,   Ú
test_round«  s   

r4  c                 C  sr   | \}}}|   g d¢¡}tj|d< |rt |¡}d}tjt|d�� | |¡ W d   ƒ d S 1 s2w   Y  d S )N)r<   r   r8   r:   zOsearchsorted requires array to be sorted, which is impossible with NAs present.r®   )rØ  r_   rµ  ry   r$   r"   r3  Úsearchsorted)rq   Ú	as_seriesrG   rh   rF   rý   r  r+   r+   r,   Ú test_searchsorted_with_na_raises¹  s   


ÿ"ÿr7  c               
   C  s^   t  t jddgtt t ¡ t ¡ ¡ƒd�ddgdœ¡} |  ¡ }| j	ddgd	�}t
 ||¡ d S )
Nr…   rF  rQ   r8   r<   ©rF   rG   rF   rG   )Úby)r_   r
  ry   r   r'   Ú
dictionaryÚint32r·   r  Úsort_valuesr‘   r6  )r  r–   r•   r+   r+   r,   Útest_sort_values_dictionaryÊ  s   ÿüÿr=  ÚpatrÃ  z	a[a-z]{2}c                 C  sP   t jdd gtt ¡ ƒd�}|j | ¡}t jdd gtt ¡ ƒd�}t 	||¡ d S )NrÃ  rQ   r8   )
r_   ry   r   r'   r·   rË   rç   r;  r‘   rÅ   )r>  r}   r•   r–   r+   r+   r,   Útest_str_countØ  ó   r?  c                  C  s^   t jdd gtt ¡ ƒd�} tjtdd�� | jj	ddd� W d   ƒ d S 1 s(w   Y  d S )NrÃ  rQ   z	count notr®   r8   ©Úflags)
r_   ry   r   r'   r·   r$   r"   r^   rË   rç   ©r}   r+   r+   r,   Ú test_str_count_flags_unsupportedà  ó   "ÿrD  zside, str_funcr¹  Úrjustrº  ÚljustÚbothÚcenterc                 C  sb   t jdd gtt ¡ ƒd�}|jjd| dd�}t jtd|ƒddƒd gtt ¡ ƒd�}t 	||¡ d S )NrF   rQ   r  r…   )ÚwidthÚsideÚfillchar)
r_   ry   r   r'   r·   rË   ÚpadrÁ   r‘   rÅ   )rK  Ústr_funcr}   r•   r–   r+   r+   r,   Útest_str_padæ  s   ÿrO  c                  C  s^   t jdd gtt ¡ ƒd�} tjtdd�� | j 	ddd¡ W d   ƒ d S 1 s(w   Y  d S )NrF   rQ   zInvalid side: foor®   r  r#  r…   )
r_   ry   r   r'   r·   r$   r"   r3  rË   rM  rC  r+   r+   r,   Útest_str_pad_invalid_sideò  rE  rP  zpat, case, na, regex, expÚabFTÚAbz	a[a-z]{1}z	A[a-z]{1}c                 C  sT   t jdd gtt ¡ ƒd�}|jj| |||d�}t j|tt ¡ ƒd�}t 	||¡ d S )NrÃ  rQ   )ÚcaseÚnaÚregex)
r_   ry   r   r'   r·   rË   Úcontainsr’  r‘   rÅ   )r>  rS  rT  rU  r•  r}   r•   r–   r+   r+   r,   Útest_str_containsø  s   rW  c                  C  ó^   t jdd gtt ¡ ƒd�} tjtdd�� | jj	ddd� W d   ƒ d S 1 s(w   Y  d S )NrÃ  rQ   zcontains notr®   rF   r8   rA  )
r_   ry   r   r'   r·   r$   r"   r^   rË   rV  rC  r+   r+   r,   Ú#test_str_contains_flags_unsupported	  rE  rY  zside, pat, na, expÚ
startswith)TNFrG   rª  Úendswith)FTFÚbc)rF   ÚeÚg)TNT)rF   rh   r^  r+   )FNFc                 C  sT   t jg d¢tt ¡ ƒd�}t|j| ƒ||d�}t j|tt ¡ ƒd�}t 	||¡ d S )N)rÃ  NÚefgrQ   )rT  ©
r_   ry   r   r'   r·   rÁ   rË   r’  r‘   rÅ   )rK  r>  rT  r•  r}   r•   r–   r+   r+   r,   Útest_str_start_ends_with  s   ra  rK  )rZ  r[  c                 C  sT   t jd d gtt ¡ ƒd�}t|j| ƒdƒ}t jd d gtt ¡ ƒd�}t 	||¡ d S )NrQ   r+   r`  )rK  r}   r•   r–   r+   r+   r,   Ú/test_str_starts_ends_with_all_nulls_empty_tuple#  s   rb  zarg_name, argÚreplrS  rB  r8   c                 C  st   t jdd gtt ¡ ƒd�}ddddœ}||| < tjtdd�� |jj	d	i |¤Ž W d   ƒ d S 1 s3w   Y  d S )
NrÃ  rQ   rG   r…   T)r>  rc  rU  zreplace is not supportedr®   r+   )
r_   ry   r   r'   r·   r$   r"   r^   rË   Úreplace)Úarg_nameÚargr}   Úkwargsr+   r+   r,   Útest_str_replace_unsupported-  s   "ÿrh  zpat, repl, n, regex, exprF   r…   r:   ÚxbxcÚxbacz[a-b]Úxxxcc                 C  sT   t jdd gtt ¡ ƒd�}|jj| |||d�}t j|tt ¡ ƒd�}t ||¡ d S )NÚabacrQ   )ÚnrU  ©	r_   ry   r   r'   r·   rË   rd  r‘   rÅ   )r>  rc  rm  rU  r•  r}   r•   r–   r+   r+   r,   Útest_str_replace9  s   	ro  c                  C  sV   t jddgtt ¡ ƒd�} | j dddd¡}t jddgtt ¡ ƒd�}t ||¡ d S )	NrÃ  ÚaaaaaarQ   rF   rÆ  éýÿÿÿTr\  rn  )r}   Úactualr–   r+   r+   r,   Útest_str_replace_negative_nH  ó   rs  c                  C  s^   t jdd gtt ¡ ƒd�} tjtdd�� | j 	ddg¡ W d   ƒ d S 1 s(w   Y  d S )NrÃ  rQ   zrepeat is notr®   r8   r<   )
r_   ry   r   r'   r·   r$   r"   r^   rË   rÉ  rC  r+   r+   r,   Útest_str_repeat_unsupportedP  rE  ru  c                  C  óP   t jdd gtt ¡ ƒd�} | j d¡}t jdd gtt ¡ ƒd�}t ||¡ d S )NrÃ  rQ   r<   rÅ  )	r_   ry   r   r'   r·   rË   rÉ  r‘   rÅ   r  r+   r+   r,   Útest_str_repeatV  ó   rw  zpat, case, na, expc                 C  sR   t jdd gtt ¡ ƒd�}|jj| ||d�}t j|tt ¡ ƒd�}t 	||¡ d S )NrÃ  rQ   ©rS  rT  ©
r_   ry   r   r'   r·   rË   r¯   r’  r‘   rÅ   ©r>  rS  rT  r•  r}   r•   r–   r+   r+   r,   Útest_str_match]  s   r|  )TTFNÚAbc)FFFNúabc$©TFFNzabc\$©FTFNzAbc$zAbc\$c                 C  sR   t jg d¢tt ¡ ƒd�}|jj| ||d�}t j|tt ¡ ƒd�}t 	||¡ d S )N)rÃ  r~  z$abcNrQ   ry  rz  r{  r+   r+   r,   Útest_str_fullmatcho  s   r�  zsub, start, end, exp, exp_typr  c                 C  sN   t jdd gtt ¡ ƒd�}|jj| ||d�}t j|t|ƒd�}t ||¡ d S )NrÃ  rQ   )ÚstartÚend)	r_   ry   r   r'   r·   rË   Úfindr‘   rÅ   )Úsubr‚  rƒ  r•  Úexp_typr}   r•   r–   r+   r+   r,   Útest_str_find†  s   r‡  c                  C  sV   t jdd gtt ¡ ƒd�} | jjdddd�}t jdd gtt ¡ ƒd�}t 	||¡ d S )NrÃ  rQ   rG   iüÿÿr  )r…  r‚  rƒ  r8   )
r_   ry   r   r'   r·   rË   r„  r  r‘   rÅ   r  r+   r+   r,   Útest_str_find_negative_start‘  rt  rˆ  c                  C  rX  )NrÃ  rQ   zfind not implementedr®   rQ  r8   )r‚  )
r_   ry   r   r'   r·   r$   r"   r^   rË   r„  rC  r+   r+   r,   Útest_str_find_notimplemented™  rE  r‰  zi, exp)rG   r]  N)rh   r]  Nr<   )rh   NNrq  )rF   NNr­  c                 C  sL   t jg d¢tt ¡ ƒd�}|j | ¡}t j|tt ¡ ƒd�}t ||¡ d S )N)rÃ  ÚdeNrQ   )	r_   ry   r   r'   r·   rË   r-  r‘   rÅ   )rù   r•  r}   r•   r–   r+   r+   r,   Útest_str_getŸ  s   r‹  z=TODO: StringMethods._validate should support Arrow list typesrÓ   c                  C  sX   t  tt tdƒtdƒd g¡ƒ¡} | j d¡}t jg d¢tt 	¡ ƒd�}t
 ||¡ d S )NrÃ  Ú123ú=©za=b=cz1=2=3NrQ   )r_   ry   r   r'   r`   r  rË   Újoinr   r·   r‘   rÅ   r  r+   r+   r,   Útest_str_join°  s   "r�  c                  C  sN   t  tt g d¢¡ƒ¡} | j d¡}t jg d¢tt ¡ ƒd�}t	 
||¡ d S )N)rÃ  rŒ  Nr�  rŽ  rQ   )r_   ry   r   r'   r`   rË   r�  r   r·   r‘   rÅ   r  r+   r+   r,   Útest_str_join_string_type»  s   r‘  zstart, stop, step, expc                 C  óP   t jdd gtt ¡ ƒd�}|j | ||¡}t j|tt ¡ ƒd�}t ||¡ d S ©NÚabcdrQ   )	r_   ry   r   r'   r·   rË   Úslicer‘   rÅ   )r‚  ÚstopÚstepr•  r}   r•   r–   r+   r+   r,   Útest_str_sliceÂ  ó   	r˜  zstart, stop, repl, expÚaxcdÚxcdÚcdc                 C  r’  r“  )	r_   ry   r   r'   r·   rË   Úslice_replacer‘   rÅ   )r‚  r–  rc  r•  r}   r•   r–   r+   r+   r,   Útest_str_slice_replaceÑ  r™  rž  zvalue, method, exp)Úa1cÚisalnumT)z!|,r   F)ÚaaaÚisalphaT)z!!!r¢  F)u   Ù Ú	isdecimalT)z~!r£  F)rH   ÚisdigitT)ú~r¤  F)r¡  ÚislowerT)ÚaaAr¦  F)rŒ  Ú	isnumericT)Ú11Ir¨  F)ú ÚisspaceT)rÆ  r«  F)zThe ThatÚistitleT)zthe Thatr¬  F)ÚAAAÚisupperT)ÚAAcr®  Fc                 C  sR   t j| d gtt ¡ ƒd�}t|j|ƒƒ }t j|d gtt ¡ ƒd�}t 	||¡ d S r¦   r`  )Úvaluer#  r•  r}   r•   r–   r+   r+   r,   Útest_str_is_functionsà  s   r±  zmethod, expÚ
capitalizezAbc defÚtitlezAbc DefÚswapcasezAbC Defr�  zabc defÚupperzABC DEFÚcasefoldc                 C  sR   t jdd gtt ¡ ƒd�}t|j| ƒƒ }t j|d gtt ¡ ƒd�}t ||¡ d S )NzaBc dEFrQ   ©	r_   ry   r   r'   r·   rÁ   rË   r‘   rÅ   )r#  r•  r}   r•   r–   r+   r+   r,   Útest_str_transform_functionsþ  s   r¸  c                  C  sN   t jdd gtt ¡ ƒd�} | j ¡ }t jdd gtt ¡ ƒd�}t 	||¡ d S )Nr”  rQ   r3   )
r_   ry   r   r'   r·   rË   r‡  r;  r‘   rÅ   r  r+   r+   r,   Útest_str_len  s   
r¹  zmethod, to_strip, val)rI  Nz abc )rI  r…   Úxabcx)ÚlstripNz abc)r»  r…   Úxabc)ÚrstripNzabc )r½  r…   Úabcxc                 C  sV   t j|d gtt ¡ ƒd�}t|j| ƒ|d�}t jdd gtt ¡ ƒd�}t ||¡ d S )NrQ   )Úto_striprÃ  r·  )r#  r¿  Úvalr}   r•   r–   r+   r+   r,   Útest_str_strip  s   rÁ  rÀ  Úabc123c                 C  óP   t j| d gtt ¡ ƒd�}|j d¡}t jdd gtt ¡ ƒd�}t ||¡ d S ©NrQ   rŒ  rÃ  )	r_   ry   r   r'   r·   rË   Úremovesuffixr‘   rÅ   ©rÀ  r}   r•   r–   r+   r+   r,   Útest_str_removesuffix)  r@  rÇ  Ú123abcc                 C  rÃ  rÄ  )	r_   ry   r   r'   r·   rË   Úremoveprefixr‘   rÅ   rÆ  r+   r+   r,   Útest_str_removeprefix1  r@  rÊ  r  r€   Ústrictzencoding, expÚutf8s   abcÚutf32s   ÿþ  a   b   c   c                 C  sR   t jdd gtt ¡ ƒd�}|j || ¡}t j|d gtt ¡ ƒd�}t 	||¡ d S ©NrÃ  rQ   )
r_   ry   r   r'   r·   rË   ÚencoderÈ  r‘   rÅ   )r  Úencodingr•  r}   r•   r–   r+   r+   r,   Útest_str_encode9  s   	rÑ  c                 C  s^   t jg d¢tt ¡ ƒd�}|jjd| d�}t jdgg d gtt t ¡ ¡ƒd�}t 	||¡ d S )N)rÃ  r_  NrQ   rG   rA  )
r_   ry   r   r'   r·   rË   ÚfindallÚlist_r‘   rÅ   )rB  r}   r•   r–   r+   r+   r,   Útest_str_findallH  s   $rÔ  r#  r0  Úrindexz
start, endc                 C  sœ   t jdd gtt ¡ ƒd�}t|j| ƒd||ƒ}t jdd gtt ¡ ƒd�}t 	||¡ t
jtdd�� t|j| ƒd||ƒ W d   ƒ d S 1 sGw   Y  d S )NÚabcbarQ   rh   r<   zsubstring not foundr®   r#  )r_   ry   r   r'   r·   rÁ   rË   r  r‘   rÅ   r$   r"   r3  )r#  r‚  rƒ  r}   r•   r–   r+   r+   r,   Útest_str_r_indexP  s   	"ÿr×  ÚformÚNFCÚNFKCc                 C  s>   t jdd gtt ¡ ƒd�}|j | ¡}| ¡ }t 	||¡ d S rÎ  )
r_   ry   r   r'   r·   rË   Ú	normalizer  r‘   rÅ   )rØ  r}   r•   r–   r+   r+   r,   Útest_str_normalizeb  s   rÜ  c                 C  sT   t jg d¢tt ¡ ƒd�}|j d| |¡}t jg d¢tt ¡ ƒd�}t 	||¡ d S )N)rÖ  r#  NrQ   rh   )r<   r:   N)
r_   ry   r   r'   r·   rË   Úrfindr  r‘   rÅ   )r‚  rƒ  r}   r•   r–   r+   r+   r,   Útest_str_rfindj  s   rÞ  c                  C  sT   t jdd gtt ¡ ƒd�} | j ddi¡}t jdd gtt ¡ ƒd�}t ||¡ d S )NrÖ  rQ   éa   rG   Úbbcbb)	r_   ry   r   r'   r·   rË   Ú	translater‘   rÅ   r  r+   r+   r,   Útest_str_translatex  s   râ  c                  C  rv  )NrÖ  rQ   r  zabc
ba)	r_   ry   r   r'   r·   rË   Úwrapr‘   rÅ   r  r+   r+   r,   Útest_str_wrap  rx  rä  c                  C  sb   t jg d¢tt ¡ ƒd�} | j ¡ }t jg d¢g d¢g d¢gtt ¡ ƒg d¢d�}t	 
||¡ d S )N)za|bNza|crQ   )TTFrª  rï  )rF   rG   rh   )r2   r  )r_   ry   r   r'   r·   rË   Úget_dummiesr
  r’  r‘   r6  r  r+   r+   r,   Útest_get_dummies†  s   

ýræ  c                  C  s  t jdd gtt ¡ ƒd�} | j d¡}t jg d¢g d¢gtt ¡ ƒd�}t 	||¡ | jjddd�}t  t
t g d¢d g¡ƒ¡}t ||¡ | j d¡}t jg d¢g d¢gtt ¡ ƒd�}t 	||¡ | jjddd�}t  t
t g d¢d g¡ƒ¡}t ||¡ d S )	NrÖ  rQ   rG   )rF   rG   Úcbar­  F©Úexpand)rÃ  rG   rF   )r_   ry   r   r'   r·   rË   Ú	partitionr
  r‘   r6  r   r`   rÅ   Ú
rpartitionr  r+   r+   r,   Útest_str_partition‘  s"   ÿÿrì  ÚrsplitÚsplitc                 C  sT   t jdd gtt ¡ ƒd�}t|j| ƒƒ }t  tt g d¢d g¡ƒ¡}t	 
||¡ d S )Nza1 cbc
brQ   )Úa1ÚcbcrG   )r_   ry   r   r'   r·   rÁ   rË   r   r`   r‘   rÅ   ©r#  r}   r•   r–   r+   r+   r,   Útest_str_split_pat_none¨  s   rò  c                  C  sf  t jg d¢tt ¡ ƒd�} | j d¡}t  tt g d¢g d¢d g¡ƒ¡}t	 
||¡ | jjddd�}t  tt dd	gd
d	gd g¡ƒ¡}t	 
||¡ | jjddd�}t  tt ddgddgd g¡ƒ¡}t	 
||¡ | jjdddd�}t  tt g d¢¡ƒtt g d¢¡ƒdœ¡}t	 ||¡ | jjddd�}t  tt g d¢¡ƒtt g d¢¡ƒdœ¡}t	 ||¡ d S )N©Úa1cbcbÚa2cbcbNrQ   rh   ©rï  rG   rG   ©Úa2rG   rG   r8   ©rm  rï  Úbcbrø  z[1-2]T)rU  rF   Úcbcb)rU  ré  )rF   rF   N)rû  rû  N©r   r8   r=   rè  ©rF   rõ  N©rû  NN)r_   ry   r   r'   r·   rË   rî  r   r`   r‘   rÅ   r
  r6  r  r+   r+   r,   Útest_str_split±  s<   ÿÿÿþÿþÿrÿ  c                  C  s(  t jg d¢tt ¡ ƒd�} | j d¡}t  tt g d¢g d¢d g¡ƒ¡}t	 
||¡ | jjddd�}t  tt dd	gd
d	gd g¡ƒ¡}t	 
||¡ | jjdddd�}t  tt g d¢¡ƒtt g d¢¡ƒdœ¡}t	 ||¡ | jjddd�}t  tt g d¢¡ƒtt g d¢¡ƒdœ¡}t	 ||¡ d S )Nró  rQ   rh   rö  r÷  r8   rù  Úa1cbrG   Úa2cbT)rm  ré  )r   r  N)rG   rG   Nrü  r=   rè  rý  rþ  )r_   ry   r   r'   r·   rË   rí  r   r`   r‘   rÅ   r
  r6  r  r+   r+   r,   Útest_str_rsplitÙ  s2   ÿÿþÿþÿr  c                  C  sZ   t jg d¢tt ¡ ƒd�} tjtdd�� | j 	d¡ W d   ƒ d S 1 s&w   Y  d S )N©rï  Úb2Úc3rQ   z*pat=.* must contain a symbolic group name.r®   z[ab](\d))
r_   ry   r   r'   r·   r$   r"   r3  rË   ÚextractrC  r+   r+   r,   Útest_str_extract_non_symbolicû  s   "ÿr  ré  c                 C  sf   t jg d¢tt ¡ ƒd�}|jjd| d�}t  tt 	g d¢¡ƒtt 	g d¢¡ƒdœ¡}t
 ||¡ d S )Nr  rQ   z(?P<letter>[ab])(?P<digit>\d)rè  )rF   rG   N©r=   rH   N)ÚletterÚdigit)r_   ry   r   r'   r·   rË   r  r
  r   r`   r‘   r6  )ré  r}   r•   r–   r+   r+   r,   Útest_str_extract	  s   þÿr  c                  C  sŽ   t jg d¢tt ¡ ƒd�} | jjddd�}t  dtt 	g d¢¡ƒi¡}t
 ||¡ | jjddd�}t jtt 	g d¢¡ƒdd	�}t
 ||¡ d S )
Nr  rQ   z[ab](?P<digit>\d)Trè  r
  r  F©rü   )r_   ry   r   r'   r·   rË   r  r
  r   r`   r‘   r6  rÅ   r  r+   r+   r,   Útest_str_extract_expand	  s   ÿÿr  r2  )r.  r-  rV  rW  c                 C  sF   ddg}t  | ¡}tj||d�}tt jdd g|d�ƒ}t ||¡ d S )NÚ1000ÚNaTrQ   éè  r'  )r'   Údurationr   r°   r`   r‘   r¨   )r2  ÚstringsrÇ   r•   r–   r+   r+   r,   Ú#test_duration_from_strings_with_nat	  s
   
r  c                 C  sX   | j j}tj |¡s*tjtdd�� t 	| ¡j
 W d   ƒ d S 1 s#w   Y  d S d S )Nz2Can only use .dt accessor with datetimelike valuesr®   )r2   r0   r'   rR   rÂ   r$   r"   ÚAttributeErrorr_   ry   rÚ  rv   r+   r+   r,   Útest_unsupported_dt'	  s   ÿ"ýÿr  zprop, expectedÚyearéç  ÚdayÚday_of_weekÚ	dayofweekÚweekdayÚday_of_yearÚ	dayofyearÚhourÚminuteÚis_leap_yearÚmicrosecondrE   ÚmonthÚ
nanosecondr¶  ÚquarterÚsecondro   r   r   c                 C  s–   t jt jddddddddd	�d gtt d
¡ƒd�}t|j| ƒ}d }t|t	ƒr+t 
¡ }n
t|tƒr5t d
¡}t  ttj|d g|d�ƒ¡}t ||¡ d S )Nr  r8   r<   r  r3   ro   rE   r¶  )r  r"  r  r  r  r%  r!  r#  r.  rQ   r'  )r_   ry   r*  r   r'   r¾  rÁ   rÚ  r©   r   r+  r   Útime64r   r`   r‘   rÅ   )Úpropr–   r}   r•   Úexp_typer+   r+   r,   Útest_dt_properties0	  s.   ø
õò



r)  c               	   C  ó¤   t jtddddd�tddddd�tddddd�d gtt d¡ƒd	�} | jj}t jg d
¢tt ¡ ƒd	�}t	 
||¡ | jj}t jg d¢tt ¡ ƒd	�}t	 
||¡ d S )Nr  rA   r<   r  ©r  r"  r  r  r8   rB   r-  rQ   r€  ©FFTN)r_   ry   r   r   r'   r¾  rÚ  Úis_month_startr’  r‘   rÅ   Úis_month_endr  r+   r+   r,   Útest_dt_is_month_start_enda	  ó   üù	r/  c               	   C  s¤   t jtddddd�tddddd�tddddd�d gtt d¡ƒd�} | jj}t jg d	¢tt ¡ ƒd�}t	 
||¡ | jj}t jg d
¢tt ¡ ƒd�}t	 
||¡ d S )Nr  rA   rB   r  r+  r8   r-  rQ   r€  r  )r_   ry   r   r   r'   r¾  rÚ  Úis_year_startr’  r‘   rÅ   Úis_year_endr  r+   r+   r,   Útest_dt_is_year_start_endt	  r0  r3  c               	   C  r*  )Nr  é   é   r  r+  r8   rB   r-  rQ   r€  r,  )r_   ry   r   r   r'   r¾  rÚ  Úis_quarter_startr’  r‘   rÅ   Úis_quarter_endr  r+   r+   r,   Útest_dt_is_quarter_start_end‡	  r0  r8  Údays_in_monthÚdaysinmonthc              	   C  sz   t jtddddd�tddddd�tddddd�d gtt d¡ƒd	�}t|j| ƒ}t jg d
¢tt ¡ ƒd	�}t	 
||¡ d S )Nr  r  r5  r+  r3   r8   r<   r-  rQ   )rB   r5  é   N)r_   ry   r   r   r'   r¾  rÁ   rÚ  r  r‘   rÅ   rñ  r+   r+   r,   Útest_dt_days_in_monthš	  s   üù	r<  c                  C  sž   t jtdddd�tddddd�tdddd	d
d
d�d gtt d¡ƒd�} | j ¡ }t jtdddd�tdddd�tdddd�d gtt d¡ƒd�}t 	||¡ d S )Nr  r  r5  ©r  r"  r  r3   r8   r+  r<   é   é;   )r  r"  r  r  r  r%  r-  rQ   )
r_   ry   r   r   r'   r¾  rÚ  rÛ  r‘   rÅ   r  r+   r+   r,   Útest_dt_normalizeª	  s$   üù
	üù	r@  r-  r.  c                 C  sx   t jtddddd�d gtt | ¡ƒd�}|jj| ksJ ‚|jj}t  t	tj
tddƒd gt | ¡d�ƒ¡}t ||¡ d S )	Nr  r8   r<   r  r+  rQ   r   r'  )r_   ry   r   r   r'   r¾  rÚ  r2  r   r   r`   r&  r‘   rÅ   ©r2  r}   r•   r–   r+   r+   r,   Útest_dt_time_preserve_unitÁ	  s   þ ÿrB  rš   )Nr½  ú
US/Pacificc                 C  sJ   t jtddddd�d gttjd| d�ƒd�}|jj}|t 	| ¡ks#J ‚d S )	Nr  r8   r<   r  r+  r.  ©rš   rQ   )
r_   ry   r   r   r'   r¾  rÚ  rš   r   Úmaybe_get_tz)rš   r}   r•   r+   r+   r,   Ú
test_dt_tzÐ	  s   þrF  c                  C  sb   t jtddddd�d gtt d¡ƒd�} | j ¡ }t jg d¢g d	¢gg d
¢dd�}t	 
||¡ d S )Nr  r8   r<   r  r+  r.  rQ   )r  r8   r8   rÔ  )r  Úweekr  r¾   ©r  r2   )r_   ry   r   r   r'   r¾  rÚ  Úisocalendarr
  r‘   r6  r  r+   r+   r,   Útest_dt_isocalendarÚ	  s   þ
ýrJ  Úday_nameÚSundayÚ
month_nameÚJanuaryc                 C  sd   t |ƒ tjtdddƒd gtt d¡ƒd�}t|j| ƒƒ }tj|d gtt 	¡ ƒd�}t
 ||¡ d S )Nr  r8   rV  rQ   )r-   r_   ry   r   r   r'   r¾  rÁ   rÚ  r·   r‘   rÅ   )r#  r•  r*   r}   r•   r–   r+   r+   r,   Útest_dt_day_month_nameè	  s
   $rO  c                 C  sf   t | ƒ tjtddddd�d gtt d¡ƒd�}|j d¡}tjd	d gtt 	¡ ƒd�}t
 ||¡ d S )
Nr  r8   r<   r  r+  r.  rQ   z%Y-%m-%dT%H:%M:%Sz2023-01-02T03:00:00.000000000)r-   r_   ry   r   r   r'   r¾  rÚ  Ústrftimer·   r‘   rÅ   )r*   r}   r•   r–   r+   r+   r,   Útest_dt_strftimeõ	  s   þÿrQ  )ÚceilrÛ  r2  c                 C  s²   t jtddddd�d gtt d¡ƒd�}tjtdd	�� t	|j
| ƒd
dd� W d   ƒ n1 s0w   Y  tjtdd	�� t	|j
| ƒd
dd� W d   ƒ d S 1 sRw   Y  d S )Nr  r8   r<   r  r+  r.  rQ   zambiguous is not supported.r®   Ú1hr  ©Ú	ambiguousznonexistent is not supported.©Únonexistent)r_   ry   r   r   r'   r¾  r$   r"   r^   rÁ   rÚ  ©r#  r}   r+   r+   r,   Ú*test_dt_roundlike_tz_options_not_supported
  s   þÿ"ÿrY  c                 C  sª   t jtddddd�d gtt d¡ƒd�}tjtdd	�� t	|j
| ƒd
ƒ W d   ƒ n1 s.w   Y  tjtdd	�� t	|j
| ƒd ƒ W d   ƒ d S 1 sNw   Y  d S )Nr  r8   r<   r  r+  r.  rQ   zfreq='1B' is not supportedr®   Ú1Bz$Must specify a valid frequency: None)r_   ry   r   r   r'   r¾  r$   r"   r3  rÁ   rÚ  rX  r+   r+   r,   Ú"test_dt_roundlike_unsupported_freq
  s   þÿ"ÿr[  Úfreq)ÚDÚhrö   rW  rV  r-  r.  c                 C  sn   t  tdddd�d g¡}tt d¡ƒ}t|j|ƒd| › �ƒ |¡}t| |¡j|ƒd| › �ƒ}t	 
||¡ d S )Nr  r8   r=  r.  r=   )r_   ry   r   r   r'   r¾  rÁ   rÚ  rÄ   r‘   rÅ   )r\  r#  r}   ra   r–   r•   r+   r+   r,   Útest_dt_ceil_year_floor
  s   ÿr_  c                  C  sî   t dddƒt dddƒg} tj| tt d¡ƒd�}d}tjt|d�� |j	 
¡ }W d   ƒ n1 s1w   Y  tj| td�}t ||¡ tdd	„ |D ƒƒsNJ ‚d
}tjt|d�� | d¡j	 
¡ }W d   ƒ n1 sjw   Y  t ||¡ d S )Nr?   r8   r  r.  rQ   úCThe behavior of ArrowTemporalProperties.to_pydatetime is deprecatedr®   c                 s  ó   � | ]	}t |ƒtu V  qd S rƒ   )rd   r   ©Ú.0Úresr+   r+   r,   Ú	<genexpr>3
  ó   € z(test_dt_to_pydatetime.<locals>.<genexpr>z>The behavior of DatetimeProperties.to_pydatetime is deprecatedúdatetime64[ns])r   r_   ry   r   r'   r¾  r‘   r:  ÚFutureWarningrÚ  rÙ  r“   r`   r�   r’   rå   rÄ   )rb   r}   r  r•   r–   r+   r+   r,   Útest_dt_to_pydatetime)
  s   ÿÿri  Ú	date_typer¼   é@   c              	   C  sª   t jtdddƒgtttd| › �ƒƒ ƒd�}d}tjt|d��- t	j
tdd�� |j ¡  W d   ƒ n1 s6w   Y  W d   ƒ d S W d   ƒ d S 1 sNw   Y  d S )	Nr?   rA   rB   r   rQ   r`  r®   z#to_pydatetime cannot be called with)r_   ry   r   r   rÁ   r'   r‘   r:  rh  r$   r"   r3  rÚ  rÙ  )rj  r}   r  r+   r+   r,   Ú test_dt_to_pydatetime_date_error;
  s   þÿÿ"ÿrl  c                  C  sª   t jtddddd�d gtt d¡ƒd�} tjtdd	�� | j	j
d
dd� W d   ƒ n1 s.w   Y  tjtdd	�� | j	j
d
dd� W d   ƒ d S 1 sNw   Y  d S )Nr  r8   r<   r  r+  r.  rQ   z ambiguous='NaT' is not supportedr®   r½  r  rT  z"nonexistent='NaT' is not supportedrV  )r_   ry   r   r   r'   r¾  r$   r"   r^   rÚ  Útz_localizerC  r+   r+   r,   Ú*test_dt_tz_localize_unsupported_tz_optionsH
  s   þÿ"ÿrn  c                  C  sp   t jtddddd�d gttjddd�ƒd	�} | j d ¡}t jtddddd�d gtt d¡ƒd	�}t 	||¡ d S )
Nr  r8   r<   r  r+  r.  rC  rD  rQ   )
r_   ry   r   r   r'   r¾  rÚ  rm  r‘   rÅ   r  r+   r+   r,   Útest_dt_tz_localize_noneT
  s   þþro  c                 C  sŒ   t |ƒ tjtddddd�d gtt | ¡ƒd�}|j d¡}tj	tddddd�d gt | ¡d�}tj
 |d¡}t t|ƒ¡}t ||¡ d S )	Nr  r8   r<   r  r+  rQ   rC  r'  ©r-   r_   ry   r   r   r'   r¾  rÚ  rm  r`   ÚcomputeÚassume_timezoner   r‘   rÅ   )r2  r*   r}   r•   Úexp_datar–   r+   r+   r,   Útest_dt_tz_localizea
  s   þÿrt  znonexistent, exp_dateÚshift_forwardrA   r+  Úshift_backwardz2023-03-12 01:59:59.999999999c                 C  s†   t |ƒ tjtdddddd�d gtt d¡ƒd�}|jjd	| d
�}tj	|d gt d¡d�}tj
 |d	¡}t t|ƒ¡}t ||¡ d S )Nr  r  rA   r<   r5  )r  r"  r  r  r  r.  rQ   rC  rV  r'  rp  )rW  Úexp_dater*   r}   r•   rs  r–   r+   r+   r,   Útest_dt_tz_localize_nonexistentr
  s   þrx  c                  C  sh   t jtddddd�d gtt d¡ƒd�} tjtdd	�� | j	 
d
¡ W d   ƒ d S 1 s-w   Y  d S )Nr  r8   r<   r  r+  r.  rQ   z"Cannot convert tz-naive timestampsr®   r½  )r_   ry   r   r   r'   r¾  r$   r"   rí   rÚ  Ú
tz_convertrC  r+   r+   r,   Ú test_dt_tz_convert_not_tz_raises‡
  s   þ"ÿrz  c                  C  sn   t jtddddd�d gtt dd¡ƒd�} | j d ¡}t jtddddd�d gtt d¡ƒd�}t 	||¡ d S )	Nr  r8   r<   r  r+  r.  rC  rQ   ©
r_   ry   r   r   r'   r¾  rÚ  ry  r‘   rÅ   r  r+   r+   r,   Útest_dt_tz_convert_none�
  s   þþr|  c                 C  sp   t jtddddd�d gtt | d¡ƒd�}|j d¡}t jtddddd�d gtt | d¡ƒd�}t 	||¡ d S )	Nr  r8   r<   r  r+  rC  rQ   z
US/Easternr{  rA  r+   r+   r,   Útest_dt_tz_convert�
  s   þþr}  ztimestamp[ms][pyarrow]zduration[ms][pyarrow]c                 C  s@   t jdd g| d�}|j d¡}| |  dd¡¡}t ||¡ d S )Nr  rQ   r.  rV  )r_   ry   rÚ  Úas_unitrÄ   rd  r‘   rÅ   r3  r+   r+   r,   Útest_as_unit«
  s   r  ÚdaysÚsecondsÚmicrosecondsÚnanosecondsc                 C  sf   t jt jddddd�d gtt d¡ƒd�}t|j| ƒ}t  ttj	|d gt 
¡ d�ƒ¡}t ||¡ d S )	Nr8   r<   r  r3   ©r€  r�  r‚  rƒ  r.  rQ   r'  )r_   ry   Ú	Timedeltar   r'   r  rÁ   rÚ  r   r`   r;  r‘   rÅ   )r'  r–   r}   r•   r+   r+   r,   Útest_dt_timedelta_properties´
  s    üù	öÿr†  c                  C  sd   t jt jddddd�d gtt d¡ƒd�} | j ¡ }t  ttj	dd gt 
¡ d	�ƒ¡}t ||¡ d S )
Nr8   r<   r  r3   r„  r.  rQ   gN%  õ@r'  )r_   ry   r…  r   r'   r  rÚ  Útotal_secondsr   r`   rŠ   r‘   rÅ   r  r+   r+   r,   Útest_dt_timedelta_total_secondsÒ
  s    üù	ö
ÿrˆ  c                  C  sŠ   t dddƒt dddƒg} tj| tt d¡ƒd�}|j ¡ }tj	| t
d�}t ||¡ tdd„ |D ƒƒs5J ‚| d	¡j ¡ }t ||¡ d S )
Nr8   r<   r  r3   r.  rQ   c                 s  ra  rƒ   )rd   r   rb  r+   r+   r,   re  ï
  rf  z)test_dt_to_pytimedelta.<locals>.<genexpr>útimedelta64[ns])r   r_   ry   r   r'   r  rÚ  Úto_pytimedeltar“   r`   r�   r‘   r’   rå   rÄ   ©rb   r}   r•   r–   r+   r+   r,   Útest_dt_to_pytimedeltaç
  s   
rŒ  c                  C  sb   t jt jddddd�d gtt d¡ƒd�} | jj}t jg d¢g d	¢gg d
¢dd�}t	 
||¡ d S )Nr8   r<   r  r3   r„  r.  rQ   )r8   r   r   r<   r   r  r3   )NNNNNNN)r€  ÚhoursÚminutesr�  Úmillisecondsr‚  rƒ  r½   rH  )r_   ry   r…  r   r'   r  rÚ  Ú
componentsr
  r‘   r6  r  r+   r+   r,   Útest_dt_componentsõ
  s$   üù	ö	õr‘  r»   c                 C  sD   t jd gdd�}t|| ƒ|d�}|r| dk}nt j}||u s J ‚d S )Nr÷   rQ   rº   rå   )r_   ry   rÁ   rµ  )rô   r»   r}   r•   r–   r+   r+   r,   Ú#test_boolean_reduce_series_all_null  s   
r’  c                  C  sÈ   g d¢} g d¢}d g}| | | }dgt | ƒ dgt |ƒ  d gt |ƒ  }tj|t ¡ d�}tj|dd�}t ||¡ ddg}t	j
tjd	d
�� tj|t ¡ d� W d   ƒ d S 1 s]w   Y  d S )N)ÚtrueÚTRUEÚTruer=   r	  )ÚfalseÚFALSEÚFalseÚ0r>   TFrQ   rR  r•  r#  zFailed to parser®   )r‡  r   r°   r'   r’  r_   r`   r‘   r¨   r$   r"   r(   )Útrue_stringsÚfalse_stringsÚnullsr  Úboolsr•   r–   r+   r+   r,   Ú%test_from_sequence_of_strings_boolean   s   (ÿ"ÿrž  c                 C  sB   t jg | d�}| ¡ }t  |tjg tjd� g¡}t ||¡ d S r¦   )	r_   ry   r  Úconcatr“   r`   r’  r‘   rÅ   )r2   r}   r–   r•   r+   r+   r,   Ú%test_concat_empty_arrow_backed_series2  s   r   r·   r¡   c                 C  s>   t  d ¡ ¡}tj|| d�}tjt|ƒ| d�}t ||¡ d S )Nzthe quick brown foxrQ   )r'   r`   rî  r_   ry   r   r‘   rÅ   )r2   rý   r}   r–   r+   r+   r,   Útest_series_from_string_array:  s   r¡  c                      s   e Zd Z‡ fdd„Z‡  ZS )ÚOldArrowExtensionArrayc                   s   t ƒ  ¡ }| d¡|d< |S )Nr§   Ú_data)r›   Ú__getstate__Úpop)r{   Ústaterž   r+   r,   r¤  D  s   
z#OldArrowExtensionArray.__getstate__)r—  r˜  r™  r¤  rž  r+   r+   rž   r,   r¢  C  s    r¢  c                  C  sV   t  dg¡} t| ƒ}t t |¡¡}t ||¡ |jt  	| ¡ks"J ‚t
|dƒr)J ‚d S )Nr8   r£  )r'   r`   r¢  rþ  r   rÿ  r‘   r¨   r§   Úchunked_arrayÚhasattr)rb   r–   r•   r+   r+   r,   Ú#test_pickle_old_arrowextensionarrayJ  s   r©  c                  C  sT   d} t t tj| ftjd�g¡ƒ}| ¡ }d|tj| ftjd�< |j|jks(J ‚d S )Nih6 rQ   F)	r   r'   r§  r“   Úonesr’  r  Úzerosr§   )ÚNrý   r–   r+   r+   r,   Ú/test_setitem_boolean_replace_with_mask_segfaultS  s
   r­  zdata, arrow_dtyperK   rL   c                 C  s:   t |ƒ}tjt | ¡|d�}tj| |d�}t ||¡ d S r¦   )r   r_   r`   r“   r‘   r¨   )rb   rì  r2   r•   r–   r+   r+   r,   Ú-test_conversion_large_dtypes_from_numpy_array\  s   r®  c                  C  sl   t jdd d gitt ¡ ƒd�} t jdddgidd�}t j| |gdd�}t jdg d¢idd�}t ||¡ d S )	NrF   rQ   r   r8   r¾   T)Úignore_index)NNr   r8   )r_   r
  r   r'   ÚnullrŸ  r‘   r6  )r  Údf2r•   r–   r+   r+   r,   Útest_concat_null_arrayj  s
   r²  c                 C  sN   t jg d¢t| ƒd�}| ¡ }t jg d¢tt ¡ ƒg d¢d�}t ||¡ d S )N©r8   r<   r  rQ   )r  r<   r8   r8   r  g       @r0  r  ©rç   rà   râ   rö   ú25%ú50%ú75%rõ   ©r2   r0  )r_   ry   r   Údescriber'   rŠ   r‘   rÅ   ©rÇ   rb   r•   r–   r+   r+   r,   Útest_describe_numeric_datas  s   
ýr»  c                 C  s^   t jtddƒt| ƒd�}| ¡ }t jdgt jg d¢| jd� ¡  tg d¢d�}t	 
||¡ d S )	Nr8   rD   rQ   é	   )rE   r<   r8   r  rE   ro   r¼  ©r2  r´  r¸  )r_   ry   rÀ  r   r¹  Úto_timedeltar2  r  r�   r‘   rÅ   rº  r+   r+   r,   Útest_describe_timedelta_data€  s   ýr¿  c                   sX   t jtddƒtˆ ƒd�}| ¡ }t jdg‡ fdd„dD ƒ tg d¢d	�}t ||¡ d S )
Nr8   rD   rQ   r¼  c                   s    g | ]}t j|ˆ jˆ jd �‘qS ))rš   r2  )r_   r*  rš   r2  )rc  Úv©rÇ   r+   r,   Ú
<listcomp>”  s    ÿÿz/test_describe_datetime_data.<locals>.<listcomp>)rE   r8   r  rE   ro   r¼  )rç   rà   rö   rµ  r¶  r·  rõ   r¸  )r_   ry   rÀ  r   r¹  r�   r‘   rÅ   rº  r+   rÁ  r,   Útest_describe_datetime_data�  s   
þÿù	rÃ  c                 C  s<   g d¢}t j|t| ƒd�}| d¡}|d }||ksJ ‚d S )Nr³  rQ   gš™™™™™¹?r   )r_   ry   r   rÓ  )rÇ   rb   r}   r•   r–   r+   r+   r,   Útest_quantile_temporalž  s
   
rÄ  c                  C  sB   t jt d¡gt  ¡ d�} tj| t| jƒd�}t	|ƒdksJ ‚d S )Nz
2020-01-01r'  rQ   z+0    2020-01-01
dtype: date32[day][pyarrow])
r'   r`   r   Úfromisoformatr+  r_   ry   r   rd   Úrepr)Úarrow_dtr}   r+   r+   r,   Útest_date32_reprª  s   rÈ  c                  C  s€   t  dd g¡} t  dd g¡}t j| tt d¡ƒd�}t j|tt d¡ƒd�}|| }t jdd gtt d¡ƒd�}t 	||¡ d S )Nr8   r.  rQ   r<   )
r_   Úto_datetimer¾  ry   r   r'   r¾  r  r‘   rÅ   )Údata_tsÚdata_tdÚser_tsÚser_tdr•   r–   r+   r+   r,   Ú2test_duration_overflow_from_ndarray_containing_nat±  s   rÎ  c                 C  sZ   t  | ¡}|dksJ ‚| jr|dv rtjjdd�}| |¡ |t jt| ƒdd�ks+J ‚d S )Nzunknown-array)ÚfloatingÚ
datetime64Útimedelta64zfin infer_dtype pd.NA is not ignored in these cases even with skipna=True in the list(data) check belowr˜   Trº   )r
   Úinfer_dtyper  r$   r%   r&   r)   r  )rb   r*   rd  r%   r+   r+   r,   Útest_infer_dtype_pyarrow_dtype¼  s   
ÿ
rÓ  c                 C  sz   d}| j }tj | ¡rtj||d� |¡g}ntj||| jd� |¡g}t	j
|| d�}t	tj|g| d�ƒ}t ||¡ d S )Nr  r½  ©r2  rš   rQ   r'  )r2  r'   rR   rZ   r_   r…  r~  r*  rš   r   re   r`   r‘   r¨   )rÇ   rÀ  r2  Úseqr•   r–   r+   r+   r,   Útest_from_sequence_temporalÊ  s   rÖ  c                 C  s�   | j }tj | ¡rtjd|d� |¡}ntjd|| jd� |¡}t	tj
g d¢| d�ƒ}| ¡ }||d d …< t	tj
g d¢| d�ƒ}t ||¡ d S )Nr8   r½  rÔ  r³  r'  )r8   r8   r8   )r2  r'   rR   rZ   r_   r…  r~  r*  rš   r   r`   r  r‘   r¨   ©rÇ   r2  rÀ  rý   r•   r–   r+   r+   r,   Útest_setitem_temporalÛ  s   rØ  c                 C  sZ   t tjg d¢| d�ƒ}| j}|tjd|d� |¡ }t tjg d¢| d�ƒ}t ||¡ d S )Nr³  r'  r8   r½  )r   r8   r<   )	r   r'   r`   r2  r_   r…  r~  r‘   r¨   )rÇ   r*   rý   r2  r•   r–   r+   r+   r,   Útest_arithmetic_temporalî  s
   rÙ  c                 C  sˆ   | j }tj | ¡rtjd|d� |¡}ntjd|| jd� |¡}t	tj
g d¢| d�ƒ}||k}t	tj
g d¢t ¡ d�ƒ}t ||¡ d S )Nr8   r½  rÔ  r³  r'  )FTT)r2  r'   rR   rZ   r_   r…  r~  r*  rš   r   r`   r’  r‘   r¨   r×  r+   r+   r,   Útest_comparison_temporalú  s   rÚ  c                 C  s    t tjg d¢| d�ƒ}|d }tj | ¡r*tjd| jd� | j¡}t	|tjƒs)J ‚ntj
d| j| jd� | j¡}t	|tj
ƒs@J ‚|j|jksHJ ‚||ksNJ ‚d S )Nr³  r'  r8   r<   r½  rÔ  )r   r'   r`   rR   rZ   r_   r…  r2  r~  r©   r*  rš   ©rÇ   rý   r•   r–   r+   r+   r,   Útest_getitem_temporal  s   ÿrÜ  c                 C  s¼   t tjdd g| d�ƒ}t|ƒ}tj | ¡r/tjd| jd� 	| j¡tj
g}t|d tjƒs.J ‚ntjd| j| jd� 	| j¡tj
g}t|d tjƒsJJ ‚|d j|d jksVJ ‚||ks\J ‚d S )Nr8   r'  r½  r   rÔ  )r   r'   r`   r  rR   rZ   r_   r…  r2  r~  rµ  r©   r*  rš   rÛ  r+   r+   r,   Útest_iter_temporal  s   þþrÝ  c                 C  sR   t j| d d… g d¢d�}|jdd� ¡ }t jddgdd	d
gd�}t ||¡ d S )Nr  )rF   rF   rG   r×  r   )Úlevelr<   r8   r¾   rF   rG   r¸  )r_   ry   r  Úsizer‘   rÅ   r‹  r+   r+   r,   Ú'test_groupby_series_size_returns_pa_int6  s   rà  c                 C  s  t tjdd g| d�ƒ}|j|d�}tj | ¡r$tjd| jd� 	| j¡}ntj
d| j| jd� 	| j¡}|tksAtj | ¡r`| jd ur`|tkrItj}ntj}tj||gtd�}|d j|jks_J ‚n"|  ¡  d| j¡}| ¡ }t ||g¡}t |d ¡d | jks‚J ‚t ||¡ d S )Nr8   r'  rQ   r½  rÔ  r   Únat)r   r'   r`   r�   rR   rZ   r_   r…  r2  r~  r*  rš   r�   rY   rµ  r  r“   Úto_pandas_dtyperd   Údatetime_datar‘   r’   )rÇ   r2   rý   r•   r°  rT  r–   r+   r+   r,   Útest_to_numpy_temporal>  s    rä  c                 C  s\   t  ddg| | dœ¡}| d¡ ¡ }t jddggt jdgdd�ddgdd�}t ||¡ d S )	Nr8   r  rj   r  rk   rl   r¾   )r0  r  r2   )r_   r
  r  rç   r  r‘   r6  )rf   r  r•   r–   r+   r+   r,   Ú%test_groupby_count_return_arrow_dtype[  s   ürå  c                  C  sD   t jddgddggttjt ¡ dd�ƒd�} | jj}|tks J ‚d S )Nr8   r<   r  r3   )Ú	list_sizerQ   )	r_   ry   r   r'   rÓ  r  r2   rd   r  )r}   r•   r+   r+   r,   Útest_fixed_size_listg  s
   "ÿrç  c                  C  s@   t jt jddd�dgttdƒƒd�} t| ƒ}d}||ksJ ‚d S )NÚ2012r  )r=  r  r]  rH  z#     col
0  15340
1  15341
2  15342)r_   r
  Úperiod_ranger   r    rÆ  )r  r•   r–   r+   r+   r,   Ú'test_arrowextensiondtype_dataframe_reprp  s   
ýrê  c                  C  sB   t jdd gdd�} | jd dd�}t jdd gdd�}t ||¡ d S )Nr<   r¾   rQ   r  )r$  é   )r_   ry   Úpowr‘   rÅ   )Úkr•   r–   r+   r+   r,   Útest_pow_missing_operand~  s   rî  c                 C  sh   t jd dgt| ƒd�}t  tjddgd| j› d�d�¡}| |¡}t jddgt| ƒd�}t ||¡ d S )Nr<   rQ   r8   r  zm8[rX  )	r_   ry   r   r“   r`   r2  r%  r‘   rÅ   )rÇ   Úser1Úser2r•   r–   r+   r+   r,   Útest_duration_fillna_numpy†  s
   "
rñ  c                  C  s`   t jdgdd�} t jd gdd�}tjtjjdd�� | |k  W d   ƒ d S 1 s)w   Y  d S )Nl            rø   rQ   r¾   zInteger valuer®   )r_   ry   r$   r"   r'   r
   r(   r8  r+   r+   r,   Ú+test_comparison_not_propagating_arrow_error�  s
   
"ÿrò  c                  C  s‚   t  t  dg¡ ¡ t  dg¡ ¡ g¡} t t| ƒ¡}| ¡ \}}tjddgtj	d�}t 
t|  ¡ ƒ¡}t ||¡ t ||¡ d S )NrF   rG   r   r8   rQ   )r'   r§  r`   Údictionary_encoder_   ry   r   Ú	factorizer“   Úintpr  r«   r‘   r’   r  )r¸   r}   Úres_indicesÚres_uniquesÚexp_indiciesÚexp_uniquesr+   r+   r,   Ú!test_factorize_chunked_dictionary˜  s   ÿrú  c                  C  s’   t  t g d¢¡¡ ¡ t  t g d¢¡¡ ¡ g} t tt  | ¡ƒ¡}| d¡}tj	g d¢t
t  ¡ ƒd�}tjg d¢tj|d�d�}t ||¡ d S )N)rF   r…   rh   rF   )rF   Údrh   Úcategory)rF   r…   rh   rû  rQ   )rF   r…   rh   rF   rF   rû  rh   )Ú
categories)r'   r`   r“   ró  r_   ry   r   r§  rÄ   r  r   r·   ÚCategoricalDtyper‘   rÅ   )Úarrsr}   r•   rý  r–   r+   r+   r,   Ú"test_dictionary_astype_categorical¥  s   þ

þr   c                  C  sH   t jdgdd�} t jdgdd�}t jdgdd�}| | }t ||¡ d S )Niùÿÿÿr¾   rQ   r3   r9   r¡  )rF   rG   r–   r•   r+   r+   r,   Útest_arrow_floordivµ  s
   r  c                  C  s8   t jdgdd�} t jdgdd�}| d }t ||¡ d S )Nl     ^ \K r¾   rQ   l    \Ëp/i@B r¡  )rF   r–   r•   r+   r+   r,   Ú test_arrow_floordiv_large_values¾  s   r  r¾   rø   c                 C  s(   t jdg| d�}|d }t ||¡ d S )Nì   ÿÿÿÿrQ   r8   r¡  )r2   rF   r•   r+   r+   r,   Ú)test_arrow_floordiv_large_integral_resultÆ  s   r  c                 C  s@   t | ƒ}tjdg|d�}|d }tjdg|d�}t ||¡ d S )NiéÿÿÿrQ   é   r:   )r   r_   ry   r‘   rÅ   )rÇ   r2   rF   r•   r–   r+   r+   r,   Ú"test_arrow_floordiv_larger_divisorÎ  s
   r  c                 C  sž   t  |  ¡ ¡j}tj|gt| ƒd�}tjt	j
jdd�� |d  W d   ƒ n1 s*w   Y  tjt	j
jdd�� |d  W d   ƒ d S 1 sHw   Y  d S )NrQ   zoverflow|not in ranger®   r:   zdivide by zeror   )r“   Úiinforâ  rö   r_   ry   r   r$   r"   r'   r
   r(   )rÇ   Ú	min_valuerF   r+   r+   r,   Ú$test_arrow_floordiv_integral_invalidØ  s   
ÿ
"ÿr	  c                 C  s<   t jdg| d�}|d }t jtdƒg| d�}t ||¡ d S )Nr<   rQ   r   Úinf)r_   ry   r  r‘   rÅ   )r2   rF   r•   r–   r+   r+   r,   Ú&test_arrow_floordiv_floating_0_divisorã  s   r  )rŠ   rg  r‰  c                 C  s>   t jdd gdd�}| | ¡}t jdd g| d�}t ||¡ d S )Nr8   r¾   rQ   r
  r3  r+   r+   r,   Ú(test_astype_int_with_null_to_numpy_dtypeì  s   
r  c                 C  sP   t  |  ¡ ¡j}t| ƒ}tj|g|d�}tjdg|d�}|| }t ||¡ d S )NrQ   r8   )	r“   r  râ  rõ   r   r_   ry   r‘   rÅ   )rÇ   Ú	max_valuer2   rF   rG   r•   r+   r+   r,   Ú)test_arrow_integral_floordiv_large_valuesõ  s   r  c                 C  sH   t jdg| d�}t jdg| d�}t jdgdd�}|| }t ||¡ d S )Nr   rQ   r  r÷   r¡  ©r2   rF   rG   r–   r•   r+   r+   r,   Ú&test_arrow_true_division_large_divisor   ó
   r  c                 C  sH   t jdg| d�}t jdg| d�}t jdg| d�}|| }t ||¡ d S )Nr   rQ   r  r¡  r  r+   r+   r,   Ú'test_arrow_floor_division_large_divisor
  r  r  c                  C  sD   g d¢} t j| dd�}t  ttjt  | ¡dd�ƒ¡}t ||¡ d S )N)ú2020-01-01 04:30:00z2020-01-02 00:00:00z2020-01-03 00:00:00útimestamp[ns][pyarrow]rQ   T©Úfrom_pandas)r_   ry   r   r'   r`   rÉ  r‘   rÅ   )Ústring_datesr•   r–   r+   r+   r,   Ú$test_string_to_datetime_parsing_cast  s   ÿr  c               	   C  sH   dg} t j| dd�}t  ttjtddddƒgdd	�ƒ¡}t ||¡ d S )
Nz11:41:43.076160ztime64[us][pyarrow]rQ   r4  é)   é+   i€) Tr  )r_   ry   r   r'   r`   r   r‘   rÅ   )Ústring_timesr•   r–   r+   r+   r,   Ú test_string_to_time_parsing_cast  s   ÿr  c                  C  sB   t jg d¢dd�} |  d¡}t jddtjgdd�}t ||¡ d S )N©r¼   é(   Nr  rQ   rŠ   r¼   r  )r_   ry   rÄ   r“   r”   r‘   rÅ   r  r+   r+   r,   Útest_to_numpy_float(  s   
r  c                  C  s:   t jdgdd�} | jtjd�}t dg¡}t ||¡ d S )Nr  r  rQ   l    P‘)Æ#-/ )r_   ry   r�   r“   r  r`   r‘   r’   r  r+   r+   r,   Útest_to_numpy_timestamp_to_int0  s   r   c                  C  sJ   t jg d¢dd�} | jdd„ dd�}t jddtjgd	d�}t ||¡ d S )
Nr  r¾   rQ   c                 S  s   dS )Né*   r+   r„   r+   r+   r,   r†   :  r‡   z,test_map_numeric_na_action.<locals>.<lambda>r€   rˆ   g      E@rŠ   )r_   ry   rŽ   r“   r”   r‘   rÅ   r  r+   r+   r,   Útest_map_numeric_na_action8  s   r"  (  r´  Ú
__future__r   r   r   r   r   Údecimalr   Úior   r	   r‘  rþ  r  Únumpyr“   r$   Úpandas._libsr
   Úpandas._libs.tslibsr   Úpandas.compatr   r   r   r   r   r   r   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsr›  Úpandas.core.dtypes.dtypesr   r   Úpandasr_   Úpandas._testingÚ_testingr‘   Úpandas.api.extensionsr   Úpandas.api.typesr   r   r   r   r   r   r   Úpandas.tests.extensionr   Úimportorskipr'   Úpandas.core.arrays.arrow.arrayr   Ú(pandas.core.arrays.arrow.extension_typesr    r-   ÚfixtureÚALL_PYARROW_DTYPESrË   r2   rb   rf   rg   rm   rq   rs   rw   ÚExtensionTestsrx   rŸ  r%   rš  ÚALL_INT_PYARROW_DTYPESr»  r¼  r¿  rÂ  rË  rÍ  rÞ  ræ  rè  rÈ  ÚbytesÚlarge_binaryÚlarge_stringrÓ  r  r  Ú
large_listÚmap_r·   ÚstructrŠ  Údictr:  rî  rô  rö  rø  rù  rû  rü  r  r  r  r  r  r  r”   r  r  r  r!  r&  r/  r1  r4  r7  r=  r?  rD  rO  rP  rW  rY  ra  rb  Úcompilerh  ro  rs  ru  rw  r|  r�  r;  r‡  rˆ  r‰  r‹  r&   r  r�  r‘  r˜  rž  r±  r¸  r¹  rÁ  rÇ  rÊ  rÑ  rÔ  r×  rÜ  rÞ  râ  rä  ræ  rì  rò  rÿ  r  r  r  r  r  r  r)  r/  r3  r8  r<  r@  rB  rF  rJ  rO  rQ  rY  r[  r_  ri  rl  rn  ro  rt  r*  rx  rz  r|  r}  r  r†  rˆ  rŒ  r‘  r’  rž  r   r¡  r¢  r©  r­  r®  r²  ÚFLOAT_PYARROW_DTYPESr»  ÚTIMEDELTA_PYARROW_DTYPESr¿  ÚDATETIME_PYARROW_DTYPESrÃ  rÄ  rÈ  rÎ  rÓ  rÖ  rØ  rÙ  rÚ  rÜ  rÝ  rà  rÆ  r�   rä  rå  rç  rê  rî  rñ  rò  rú  r   r  r  r  ÚSIGNED_INT_PYARROW_DTYPESr  r	  ÚFLOAT_PYARROW_DTYPES_STR_REPRr  r  r  r  r  r  r  r  r   r"  r+   r+   r+   r,   Ú<module>   sÂ   $	$	


;


:


      d "
	ÿIý



 ÷þ
		


ÿ
	ûþ

øþ

	 þ
ýþ
úþ
õþ
*þ





ûþ

þ
ýþ
ýþ
îþ





úþúþ

þþþþ
þþ("		



ïþ	ÿ

þþ	üþ			þþ	ÿ	ÿÿÿ	ÿÿÿÿ				

		

