o
    ÛñhÔ/ ã                   @   sŒ  d dl mZ d dlZd dl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Zd dlZd dlZzd dlZW n eyG   dZY nw zd dlZW n eyY   dZY nw d dlZd dlmZ d dlmZ zd dlmZ W n ey}   dZY nw dd„ eej  ¡ ƒD ƒZ!dd„ eej  ¡ ƒD ƒZ"e #¡ e $¡ e %¡ e &¡ e '¡ e (¡ e )¡ e *¡ gZ+dg d	¢fd
e,dƒfde,dƒfde,dƒfde,dƒfde,dƒfde,dƒfde,ddƒfde,ddƒfdg d¢fdg d¢fdg d¢fdg d¢fe -d¡g d¢fe .e #¡ ¡ddgddgdd gdd!d"ggfe /e $¡ ¡dgg d#¢dd gdd!d"ggfe 0d$e #¡ fd%e #¡ fg¡ddd&œdddd&œddd d&œgfgZ1d'd(„ Z2d)d*„ Z3d+d,„ Z4ej5 6d-¡d.d/„ ƒZ7d0d1„ Z8	dd2d3„Z9d4d5„ Z:d6d7„ Z;d8d9„ Z<d:d;„ Z=ej5jd<d=„ ƒZ>d>d?„ Z?d@dA„ Z@dBdC„ ZAdDdE„ ZBej5 CdFe+¡dGdH„ ƒZDej5 CdFe+¡dIdJ„ ƒZEdKdL„ ZFdMdN„ ZGdOdP„ ZHdQdR„ ZIdSdT„ ZJdUdV„ ZKdWdX„ ZLdYdZ„ ZMd[d\„ ZNd]d^„ ZOd_d`„ ZPdadb„ ZQdcdd„ ZRdedf„ ZSdgdh„ ZTdidj„ ZUdkdl„ ZVdmdn„ ZWdodp„ ZXdqdr„ ZYdsdt„ ZZdudv„ Z[dwdx„ Z\eƒ dydz„ ƒZ]d{d|hZ^h d}£Z_h d~£Z`h d£Zah d€£Z`e`eaB e^B e^eae`e_dœZbej5 Cd‚g dƒ¢¡ej5 Cd„d…d†g¡d‡dˆ„ ƒƒZcd‰dŠ„ Zdej5jd‹dŒ„ ƒZeddŽ„ Zfdd„ Zgd‘d’„ Zhd“d”„ Zid•d–„ Zjej5 Cd—e1¡d˜d™„ ƒZkdšd›„ Zldœd„ Zmej5 CdždŸd g¡d¡d¢„ ƒZnd£d¤„ Zoej5 Cd—e1¡d¥d¦„ ƒZpd§d¨„ Zqd©dª„ Zrd«d¬„ Zsd­d®„ Ztej5 Cd—e1¡d¯d°„ ƒZuej5jej5 Cd—e1¡d±d²„ ƒƒZvd³d´„ Zwdµd¶„ Zxd·d¸„ Zyd¹dº„ Zzd»d¼„ Z{ej5 Cd½d¾d¿g¡dÀdÁ„ ƒZ|ej5 Cd½d¾d¿g¡dÂdÃ„ ƒZ}ej5 Cd½d¾d¿g¡dÄdÅ„ ƒZ~dÆdÇ„ ZdÈdÉ„ Z€dÊdË„ ZdÌdÍ„ Z‚ej5 CdÎdÏdÐg¡dÑdÒ„ ƒZƒej5jdÓdÔ„ ƒZ„ej5jdÕdÖ„ ƒZ…d×dØ„ Z†dÙdÚ„ Z‡dÛdÜ„ ZˆdÝdÞ„ Z‰ej5 CdFe+¡dßdà„ ƒZŠej5 CdFe+¡dádâ„ ƒZ‹dãdä„ ZŒdådæ„ Zdçdè„ ZŽej5 Cdée ¡ e ¡ g¡dêdë„ ƒZ‘ej5 Cdée+¡dìdí„ ƒZ’edîdïƒZ“edðdñƒZ”e“dòej•d!ƒe“dóej–dôƒe“dõej—döƒe“d÷ej˜døƒgZ™dùdú„ Zšdûdü„ Z›dýdþ„ Zœdÿd „ Zdd„ Zždd„ ZŸej5jej5jCde *¡ ge dej5jCde™dd	„ dej5jCd
eœeežgg d¢ddd„ ƒƒƒƒZ¡ej5jej5jCde )¡ e *¡ ge dej5jCde™dd	„ ddd„ ƒƒƒZ¢dd„ Z£ej5jej5j¤dd„ ƒƒZ¥dždd„Z¦ej5jdd„ ƒZ§ej5 Cdg d¢¡dd„ ƒZ¨ej5jej5j¤dd„ ƒƒZ©d d!„ Zªej5j¤ej5 Cdd"¡ej5jd#d$„ ƒƒƒZ«d%d&„ Z¬d'd(„ Z­d)d*„ Z®d+d,„ Z¯d-d.„ Z°d/d0„ Z±d1d2„ Z²d3d4„ Z³d5d6„ Z´d7d8„ Zµd9d:„ Z¶d;d<„ Z·d=d>„ Z¸d?d@„ Z¹dAdB„ ZºdCdD„ Z»ej5jej5 CdEdF¡ej5 CdGdH¡dIdJ„ ƒƒƒZ¼ej5jej5 CdEdF¡ej5 CdGdH¡dKdL„ ƒƒƒZ½ej5jej5 CdEdM¡ej5 CdGdH¡dNdO„ ƒƒƒZ¾ej5jej5 CdEdM¡ej5 CdGdH¡dPdQ„ ƒƒƒZ¿dRdS„ ZÀdTdU„ ZÁdVdW„ ZÂdXdY„ ZÃdZd[„ ZÄd\d]„ ZÅd^d_„ ZÆd`da„ ZÇdbdc„ ZÈej5 Cdddeg df¢fdgg dh¢fdig dj¢fdkg dl¢fg¡dmdn„ ƒZÉdodp„ ZÊdqdr„ ZËej5jdsdt„ ƒZÌej5jej5jdudv„ ƒƒZÍdwdx„ ZÎdydz„ ZÏd{d|„ ZÐd}d~„ ZÑej5 Cdd dg d€¢g d¢g d‚¢dgfd ddgdgd gdgfd dddgddgd dgdgfdddgdgdgdgfddddgddgddgdgff¡ej5 Cdƒd„¡ej5 CdéejÒej$ej*f¡ej5 Cd…ej.ej/d†f¡d‡dˆ„ ƒƒƒƒZÓej5 Cd‰dŠ¡ej5 Cdƒd„¡ej5 CdéejÒej$ej*f¡ej5 Cd…ej.ej/d†f¡d‹dŒ„ ƒƒƒƒZÔej5 CddŽ¡ej5 Cddd	„ d‘d	„ d’d	„ f¡d“d”„ ƒƒZÕd•d–„ ZÖdžd—d˜„Z×d™dš„ ZØd›dœ„ ZÙdS (Ÿ  é    )Ú
namedtupleN)Ú	lru_cacheÚpartial)ÚArrowNotImplementedErrorc                 C   s   g | ]\}}t |d ƒr|‘qS )Ú__arrow_compute_function__)Úhasattr)Ú.0ÚnameÚfunc© r   úN/var/www/vscode/kcb/lib/python3.10/site-packages/pyarrow/tests/test_compute.pyÚ
<listcomp>2   s    þÿr   c                 C   s4   g | ]\}}t |tƒr|tjurt|tjƒr|‘qS r   )Ú
isinstanceÚtypeÚpcÚFunctionOptionsÚ
issubclass)r   r	   Úclsr   r   r   r   6   s    þ

ÿþÚbool)TFFTTÚuint8é   Úint8Úuint16Úint16Úuint32Úint32Úuint64é
   Úint64Úfloat)r   çš™™™™™¹?çš™™™™™É?g333333Ó?çš™™™™™Ù?ÚdoubleÚstring)ÚaÚbNÚdddÚeeÚbinary)ó   aó   bó   cs   ddds   eeé   )s   abcs   bcds   cdes   defs   efgé   é   é   é   é	   é   )r/   r-   r0   r%   r&   ©r%   r&   c               	   C   sœ   t } t| ƒdks
J ‚| D ]?}|j}|d rq|d }|dkrq|tu r*tƒ gd }ntƒ g| }tjtdd ||Ž  W d   ƒ n1 sFw   Y  qd S )Nr   Úoptions_requiredÚarityr   r-   zBGot unexpected argument type <class 'object'> for compute function©Úmatch)Úexported_functionsÚlenr   ÚEllipsisÚobjectÚpytestÚraisesÚ	TypeError)Ú	functionsr
   Údescr6   Úargsr   r   r   Útest_exported_functions^   s&   ÿ
ý€órC   c                  C   s,   t D ]} t | jd ¡}|jdksJ ‚qd S )Nr	   Úhash_aggregate)r9   r   Úget_functionr   Úkind)r
   Úarrow_fr   r   r   Ú test_hash_aggregate_not_exportedx   s   þrH   c                  C   sR   t } t| ƒdks
J ‚| D ]}t |¡}|j ¡ D ]}|j|j|jfvs%J ‚qqd S )Nr   )	Úexported_option_classesr:   ÚinspectÚ	signatureÚ
parametersÚvaluesrF   ÚVAR_POSITIONALÚVAR_KEYWORD)Úclassesr   ÚsigÚparamr   r   r   Útest_exported_option_classes€   s   
ÿÿürS   z<ignore:pyarrow.CumulativeSumOptions is deprecated as of 14.0c           	   	   C   sà  g t  ¡ ‘t  d¡‘t j t ¡ ¡‘t  ¡ ‘t jddd‘t  	¡ ‘t  
¡ ‘t jdd‘t  d¡‘t  ¡ ‘t  t d¡¡‘t  ¡ ‘t  dd	dd¡‘t jdd
‘t jddgddgt ddi¡t ddi¡gd‘t  t d¡d¡‘t  d¡‘t  ¡ ‘t  ¡ ‘t  d¡‘t jdd‘t jddd‘t jd dd‘t  ¡ ‘t  ¡ ‘t jdddd‘t   ddd¡‘t  !dd¡‘t  "dd¡‘t  #d¡‘t j$dddd‘t  %dd¡‘t  &¡ ‘t j'dd gd!‘t  (t )dg¡¡‘t  *ddd¡‘t j+d"gdd‘t  ,¡ ‘t  -d¡‘t  .¡ ‘t  /d#d$d¡‘t j0g d%‘t  1¡ ‘t  2¡ ‘t  3d&¡‘t  4d'¡‘t  5¡ ‘t j6dddd(‘}| j7j8j9d) r8| :t  d*¡¡ d+d,„ |D ƒ}t;D ]3}||vrs| j7j8j9d) rs|t jkrsz	| :|ƒ ¡ W qA t<yr   t= >d-|› ¡ Y qAw qA|D ]F}||ks€J ‚t?|ƒ @|jAjB¡sŒJ ‚| C¡ }t jD E|¡}||ksJ ‚t?|ƒ @d.¡r±t?|ƒ @d/¡s¯J ‚qwt?|ƒt?|ƒks¼J ‚qwtF||dd … ƒD ]\}}||ksÒJ ‚qÇt?t  t d¡¡ƒd0ksãJ ‚t?t  ¡ ƒd1ksîJ ‚d S )2NÚUTCFr   ©Úcount_from_zeroÚ
week_startT©Ú
skip_nullsÚpatternr.   éÿÿÿÿ)Ú	recursiveÚfieldÚnamesr%   Ú1r&   Ú2)Úfield_nullabilityÚfield_metadataÚfirstr   ©ÚperiodÚat_start©Únull_placement©ÚstartrY   Ú	ascendingÚmax©Ú	sort_keysrh   Ú
tiebreakerr/   Útowards_infinityÚsecond)Úweek_starts_mondayéd   ©r&   rk   ©rn   ©ÚdummyÚ
descendingú%YÚs©Úindicesú ÚNFKC©rr   rV   Úfirst_week_is_fully_in_yearÚtimezone_dataúEurope/Ljubljanac                 S   s   h | ]}t |ƒ’qS r   ©r   )r   Úoptionr   r   r   Ú	<setcomp>Ë   s    z-test_option_class_equality.<locals>.<setcomp>zOptions class is not tested: ÚCumulativeSumOptionsÚCumulativeOptionszIndexOptions(value=int64:1)z7ArraySortOptions(order=Ascending, null_placement=AtEnd))Gr   ÚArraySortOptionsÚAssumeTimezoneOptionsÚCastOptionsÚsafeÚpar   ÚCountOptionsÚDayOfWeekOptionsÚDictionaryEncodeOptionsÚRunEndEncodeOptionsÚElementWiseAggregateOptionsÚExtractRegexOptionsÚFilterOptionsÚIndexOptionsÚscalarÚJoinOptionsÚListSliceOptionsÚListFlattenOptionsÚMakeStructOptionsÚKeyValueMetadataÚMapLookupOptionsÚMatchSubstringOptionsÚModeOptionsÚNullOptionsÚ
PadOptionsÚPairwiseOptionsÚPartitionNthOptionsr‡   ÚQuantileOptionsÚRandomOptionsÚRankOptionsÚReplaceSliceOptionsÚReplaceSubstringOptionsÚRoundOptionsÚRoundBinaryOptionsÚRoundTemporalOptionsÚRoundToMultipleOptionsÚScalarAggregateOptionsÚSelectKOptionsÚSetLookupOptionsÚarrayÚSliceOptionsÚSortOptionsÚSplitOptionsÚSplitPatternOptionsÚStrftimeOptionsÚStrptimeOptionsÚStructFieldOptionsÚTakeOptionsÚTDigestOptionsÚTrimOptionsÚUtf8NormalizeOptionsÚVarianceOptionsÚWeekOptionsÚconfigÚpyarrowÚ
is_enabledÚappendrI   r?   r=   ÚfailÚreprÚ
startswithÚ	__class__Ú__name__Ú	serializer   ÚdeserializeÚzip)	ÚrequestÚoptionsrP   r   r„   ÚbufÚdeserializedÚoption1Úoption2r   r   r   Útest_option_class_equalityŒ   s  ÿþýüûúù
ø	÷
öõôó
ò
ÿþñíìëêé
èçæåäÿãá
 à
!ß"Þ#Ý
$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó
.Ò/Ñ0Ð1Ï2Î3Í4ÿÌ8
ÿÿ€
ÿrÎ   c                   C   s(   t t ¡ ƒdks
J ‚dt ¡ v sJ ‚d S )Nr   Úadd)r:   r   Úlist_functionsr   r   r   r   Útest_list_functionsí   s   rÑ   c                    s\   t  | ¡}t||ƒsJ ‚|j}||ksJ ‚|t|jƒksJ ‚t‡ fdd„|jD ƒƒs,J ‚d S )Nc                 3   s    | ]}t |ˆ ƒV  qd S ©N)r   ©r   Úker©Úexpected_ker_clsr   r   Ú	<genexpr>ù   ó   € z&_check_get_function.<locals>.<genexpr>)r   rE   r   Únum_kernelsr:   ÚkernelsÚall)r	   Úexpected_func_clsrÖ   Úmin_num_kernelsr
   Únr   rÕ   r   Ú_check_get_functionò   s   
 rß   c                   C   ó   t dtjtjdƒ d S )NrÏ   é   )rß   r   ÚScalarFunctionÚScalarKernelr   r   r   r   Útest_get_function_scalarü   ó   rä   c                   C   rà   )NÚuniquerá   )rß   r   ÚVectorFunctionÚVectorKernelr   r   r   r   Útest_get_function_vector   rå   ré   c                   C   rà   )NÚmeanrá   )rß   r   ÚScalarAggregateFunctionÚScalarAggregateKernelr   r   r   r   Ú"test_get_function_scalar_aggregate  ó   ÿrí   c                   C   rà   )NÚhash_sumr.   )rß   r   ÚHashAggregateFunctionÚHashAggregateKernelr   r   r   r   Ú test_get_function_hash_aggregate	  rî   rò   c                  C   sŽ   t  g d¢¡} t g d¢¡}|  |¡}tjd| |gt  ¡ d}t  g d¢¡}| |¡s-J ‚| |¡s4J ‚tj| |t  ¡ d}| |¡sEJ ‚d S )N)ÚfooÚbarÚbaz)r/   r/   r.   Útake)Úmemory_pool)rõ   rõ   rô   )rŒ   r®   Únprö   r   Úcall_functionÚdefault_memory_poolÚequals)Úarrr|   Úresult1Úresult2ÚexpectedÚresult3r   r   r   Ú#test_call_function_with_memory_pool  s   
ÿr  c                 C   sp   t  ¡ D ]1}t  |¡}|  |  |¡¡}t|ƒt|ƒu sJ ‚|j|jks%J ‚|j|jks-J ‚|j|jks5J ‚qd S rÒ   )	r   rÐ   rE   ÚloadsÚdumpsr   r	   r6   rÙ   ©Úpickle_moduler	   r
   Úreconstructedr   r   r   Útest_pickle_functions  s   
úr  c              	   C   sP   t  ¡ D ]!}ztt |ƒ}W n	 ty   Y qw |  |  |¡¡}||u s%J ‚qd S rÒ   )r   rÐ   ÚgetattrÚAttributeErrorr  r  r  r   r   r   Útest_pickle_global_functions(  s   þùr
  c                  C   s‚   t  ¡ D ]:} t  | ¡}t|t jƒsJ ‚|j| ksJ ‚|j}|jt|ƒks&J ‚t	dd„ |D ƒƒs1J ‚t
|ƒ |D ]}t
|ƒ q7qd S )Nc                 s   s    | ]	}t |tjƒV  qd S rÒ   )r   r   ÚKernelrÓ   r   r   r   r×   <  s   € z+test_function_attributes.<locals>.<genexpr>)r   rÐ   rE   r   ÚFunctionr	   rÚ   rÙ   r:   rÛ   rÁ   )r	   r
   rÚ   rÔ   r   r   r   Útest_function_attributes4  s   

ÿør  c                  C   sp   t  ddgdd g¡} |  ¡ dd gksJ ‚t  ddgd¡} |  ¡ ddgks&J ‚t  g d¢d¡ ¡ g d¢ks6J ‚d S )	Nr.   r/   r0   r   r1   )ró   rô   Nró   ©TFN)r   rÏ   Ú	to_pylistÚequal©rü   r   r   r   Útest_input_type_conversionB  s   
ÿ
ÿr  Ú
arrow_typec                 C   s<  t jg d¢| d}| ¡  ¡ dksJ ‚t |¡ ¡ dksJ ‚t jg d¢| d}| ¡  ¡ dks1J ‚t |¡ ¡ dks<J ‚t jd g| d}| ¡  ¡ d u sNJ ‚t |¡ ¡ d u sYJ ‚|jdd ¡ dkseJ ‚tj|dd ¡ dksrJ ‚t jg | d}| ¡  ¡ d u sƒJ ‚|jdd ¡ dksJ ‚tj|dd ¡ dksœJ ‚d S )N©r.   r/   r-   r0   rƒ   r   ©r.   r/   r-   r0   Nr   ©Ú	min_count)rŒ   r®   ÚsumÚas_pyr   ©r  rü   r   r   r   Útest_sum_arrayN  s   r  c                 C   s  t  t jg d¢| dg¡}t |¡ ¡ dksJ ‚t  t jddg| dt jddg| dg¡}t |¡ ¡ dks8J ‚t  t jddg| dt jg | dt jddg| dg¡}t |¡ ¡ dks^J ‚t jd| d}|jd	kslJ ‚t |¡ ¡ d u swJ ‚tj|d	d
 ¡ d	ks„J ‚d S )Nr  rƒ   r   r.   r/   r-   r0   r   r   r  )rŒ   Úchunked_arrayr®   r   r  r  Ú
num_chunksr  r   r   r   Útest_sum_chunked_arrayd  s     ÿýr  c                  C   sŽ  t jg d¢dd} t | ¡}t|ƒdksJ ‚|d  ¡ dddœks#J ‚tj| dd}t|ƒdks2J ‚|d  ¡ dddœks?J ‚|d  ¡ d	ddœksLJ ‚t jg dd} tt | ¡ƒdks^J ‚t jg d
¢dd} tj| dd}t|ƒdksvJ ‚tj| dd}t|ƒdks…J ‚tj| ddd}t|ƒdks•J ‚t  ddg¡} tj| dd}t|ƒdks«J ‚|d  ¡ dddœks¸J ‚|d  ¡ dddœksÅJ ‚d S )N©r.   r.   r-   r0   r-   r   r   rƒ   r.   r   r/   ©ÚmodeÚcount©rÞ   r-   )r.   r.   r-   r0   r-   NFrX   r1   r  r   ©rY   r  T)rŒ   r®   r   r!  r:   r  ©rü   r!  r   r   r   Útest_mode_array{  s,   
r&  c                  C   sÖ   t  t jg d¢ddg¡} t | ¡}t|ƒdksJ ‚|d  ¡ dddœks'J ‚tj| dd}t|ƒdks6J ‚|d  ¡ dddœksCJ ‚|d  ¡ d	ddœksPJ ‚t jd
dd} | jdks^J ‚tt | ¡ƒdksiJ ‚d S )Nr  r   rƒ   r.   r   r/   r   r#  r-   r   )rŒ   r  r®   r   r!  r:   r  r  r%  r   r   r   Útest_mode_chunked_array™  s   
r'  c                  C   sT   d} t jtj| d t g ¡ W d   ƒ n1 sw   Y  tjg t ¡ d d S )Nz@cannot construct ChunkedArray from empty vector and omitted typer7   rƒ   )r=   r>   rŒ   ÚArrowInvalidr  r   )Úmsgr   r   r   Útest_empty_chunked_arrayª  s
   ÿr*  c                  C   sV   g d¢} t  | ¡ ¡ dksJ ‚t j| dd ¡ dksJ ‚t j| dd ¡ dks)J ‚d S )N)r.   r/   r-   r0   r   r1   é   rá   g      @r   )Úddofr.   g      @)r   Úvariancer  ©Údatar   r   r   Útest_variance²  s   r0  c                  C   s˜   t  ¡ t  ¡ ft  ¡ t  ¡ ffD ]9\} }t jg d¢| d}t |d¡}t jg d¢|d}||ks2J ‚tj|ddd}t jg d¢|d}||ksIJ ‚qd S )N)ÚabÚcabÚabcabÚbaÚABNrƒ   r1  )r.   r.   r/   r   r   NT©Úignore_case)r.   r.   r/   r   r.   N)rŒ   r$   r   Úlarge_stringr   r®   r   Úcount_substring©ÚtyÚoffsetrü   Úresultrÿ   r   r   r   Útest_count_substring¹  s   ÿör>  c                  C   sœ   t  ¡ t  ¡ ft  ¡ t  ¡ ffD ];\} }t jg d¢| d}t |d¡}t jg d¢|d}| |¡s3J ‚tj|ddd}t jg d¢|d}| |¡sKJ ‚qd S )N)r1  r2  ÚbaAacaar4  r5  Nrƒ   za+)r.   r.   r-   r.   r   NTr6  )r.   r.   r/   r.   r.   N)	rŒ   r$   r   r8  r   r®   r   Úcount_substring_regexrû   r:  r   r   r   Útest_count_substring_regexÇ  s   ÿörA  c                  C   sÒ   t  ¡ t  ¡ t  ¡ t  ¡ fD ]X} t jg d¢| d}t |d¡}| ¡ g d¢ks)J ‚t 	|d¡}| ¡ g d¢ks9J ‚t jg d¢| d}tj|dd	d
}| ¡ g d¢ksTJ ‚tj	|dd	d
}| ¡ g d¢ksfJ ‚qd S )N)r1  r2  r4  Nrƒ   r1  )r   r.   r[   Nza?b)r   r.   r   N)zab*zcAB*r4  zaB?zaB*Tr6  )r   r.   r[   r[   )r   r.   r   r   )
rŒ   r$   r)   r8  Úlarge_binaryr®   r   Úfind_substringr  Úfind_substring_regex)r;  rü   r=  r   r   r   Útest_find_substringÕ  s    órE  c                  C   ó    t  g d¢¡} t | d¡}t  g d¢¡}| |¡sJ ‚t  g d¢¡} tj| ddd}t  g d¢¡}| |¡s8J ‚tj| ddd}t  g d¢¡}| |¡sNJ ‚d S )	N)r1  zba%r4  úca%dNz_a\%%)FTFTN)ÚaBzbA%r4  rG  NTr6  F)FFFTN)rŒ   r®   r   Ú
match_likerû   ©rü   r=  rÿ   r   r   r   Útest_match_likeæ  ó   rK  c                  C   s    t  g d¢¡} t | d¡}t  g d¢¡}| |¡sJ ‚t  g d¢¡} tj| ddd}t  g d¢¡}| |¡s8J ‚tj| ddd}t  g d	¢¡}| |¡sNJ ‚d S )
N)r1  Úabcr4  Nr1  ©TTFN)u   Ã¡Bu   Ãbcr4  Nu   Ã¡bTr6  F)FFFN)rŒ   r®   r   Úmatch_substringrû   rJ  r   r   r   Útest_match_substringõ  rL  rP  c                  C   rF  )	N)r1  rM  r4  ÚcNz^a?b)TTTFN)rH  ÚAbcÚBArQ  NTr6  F)FFFFN)rŒ   r®   r   Úmatch_substring_regexrû   rJ  r   r   r   Útest_match_substring_regex  rL  rU  c                  C   sÌ   t  g d¢¡} t | ¡}t  g d¢¡}| |¡sJ ‚t  g d¢¡} t | ¡}t  g d¢¡}| |¡s4J ‚t  g d¢¡} tj| dd}t  g d¢¡}| |¡sPJ ‚t | d¡}t  g d¢¡}| |¡sdJ ‚d S )N)ú fooNu    ã€€foo bar 	)ró   Núfoo bar)ró   Nu
   ã€€foo baru    fã€€)Ú
characters)ÚooNzoo bar 	)rŒ   r®   r   Úutf8_trim_whitespacerû   Úascii_trim_whitespaceÚ	utf8_trimrJ  r   r   r   Ú	test_trim  s   

r]  c               	      sš   t  g d¢¡} tddƒD ]>‰ t tddƒd g¡D ]1‰dD ],‰t  ‡ ‡‡fdd„| D ƒ¡}tj| ˆ ˆˆd}| |¡s<J ‚t | ˆ ˆˆ¡|ksHJ ‚qqqd S )N)Ú u   ð‘“u   ð‘“Ã¶u   ð‘“Ã¶Ãµu   ð‘“Ã¶Ãµá¸u   ð‘“Ã¶Ãµá¸Å¡éúÿÿÿr1   )éýÿÿÿéþÿÿÿr[   r.   r/   r-   c                    ó   g | ]}|  ¡ ˆ ˆˆ… ‘qS r   ©r  ©r   Úk©rj   ÚstepÚstopr   r   r   .  ó    ÿz,test_slice_compatibility.<locals>.<listcomp>©rj   rh  rg  )rŒ   r®   ÚrangeÚ	itertoolsÚchainr   Úutf8_slice_codeunitsrû   ©rü   rÿ   r=  r   rf  r   Útest_slice_compatibility)  s&   ÿÿÿ
ÿùÿÿrp  c                     s  g d¢} t  | ¡}t tddƒtddƒtddƒ¡D ]h\‰ ‰‰ˆdkr#qt  ‡ ‡‡fdd„|D ƒ¡}tj|ˆ ˆˆd	}| |¡sAJ ‚t |ˆ ˆˆ¡|ksMJ ‚| D ]1}t j|t  	t
|ƒ¡d
}|ˆ ˆˆ… }t |ˆ ˆˆ¡}|jt  	t
|ƒ¡ksxJ ‚| ¡ |ks€J ‚qOqd S )N)ó    r*   s   aÿs   ab s   abcûs   abòder_  r1   r`  r0   r   c                    rb  r   rc  rd  rf  r   r   r   @  ri  z3test_binary_slice_compatibility.<locals>.<listcomp>rj  rƒ   )rŒ   r®   rl  Úproductrk  r   Úbinary_slicerû   r•   r)   r:   r   r  )r/  rü   rÿ   r=  ÚitemÚ
fsb_scalarÚactualr   rf  r   Útest_binary_slice_compatibility8  s0   
þÿÿûórw  c                  C   s®   t  ddg¡} tj| dd}t  ddgg d¢g¡}| |¡s J ‚tj| ddd	}t  ddgd
dgg¡}| |¡s:J ‚tj| dddd}t  ddgddgg¡}| |¡sUJ ‚d S )Nú-foo---bar--ú
---foo---bú---©rZ   z-foozbar--©r^  ró   r&   r.   ©Ú
max_splitsr^  úfoo---bT©r~  Úreversez---foor&   )rŒ   r®   r   Úsplit_patternrû   rJ  r   r   r   Útest_split_patternP  s   rƒ  c                  C   ó¦   t  ddg¡} t | ¡}t  ddgg d¢g¡}| |¡sJ ‚tj| dd}t  ddgdd	gg¡}| |¡s7J ‚tj| dd
d}t  ddgddgg¡}| |¡sQJ ‚d S )NrW  õ    foo  ã€€	bró   rô   r|  r.   r}  r^  õ
   foo  ã€€	bTr€  rV  r&   )rŒ   r®   r   Úutf8_split_whitespacerû   rJ  r   r   r   Útest_split_whitespace_utf8_  ó   
rˆ  c                  C   r„  )NrW  r…  ró   rô   )r^  ró   u   ã€€r&   r.   r}  r^  r†  Tr€  u	    foo  ã€€r&   )rŒ   r®   r   Úascii_split_whitespacerû   rJ  r   r   r   Útest_split_whitespace_asciin  r‰  r‹  c                  C   sº   t  ddg¡} tj| dd}t  g d¢g d¢g¡}| |¡s J ‚tj| ddd}t  d	d
gd	dgg¡}| |¡s:J ‚tjtdd tj| dddd}W d   ƒ d S 1 sVw   Y  d S )Nrx  ry  z-+r{  )r^  ró   rô   r^  r|  r.   r}  r^  zfoo---bar--r  z"Cannot split in reverse with regexr7   rz  T)rZ   r~  r  )rŒ   r®   r   Úsplit_pattern_regexrû   r=   r>   ÚNotImplementedErrorrJ  r   r   r   Útest_split_pattern_regex}  s   ÿÿ"þrŽ  c                  C   s®  g d¢} t  | ¡}| ¡ dddœksJ ‚t j| t  ¡ d}| ¡ dddœks(J ‚t j| t jddd}| ¡ dddœks>J ‚t j| t jddd}| ¡ d d dœksTJ ‚t j| d	did}| ¡ d d dœkshJ ‚t j| dd}| ¡ d d dœkszJ ‚t t¡ t j| t  ¡ dd
}W d   ƒ n1 s”w   Y  t  ¡ }t t¡ t j| |d}W d   ƒ n1 s´w   Y  tjtdd t  ¡ }W d   ƒ d S 1 sÐw   Y  d S )N)r0   r   r1   Nr.   r.   r1   )Úminrl   ©rÉ   TrX   FrY   )rÉ   rY   zmin_max takes 1 positionalr7   )r   Úmin_maxr  r«   r=   r>   r?   r¶   )r/  rz   rÉ   r   r   r   Útest_min_max  s2   

ÿÿÿ
"ÿr’  c                  C   sæ   t jddd} tjg dd}t  |¡ ¡ d u sJ ‚t j|dd ¡ du s&J ‚t j|| d ¡ du s3J ‚t g d¢¡}t  |¡ ¡ d	u sEJ ‚t j|| d ¡ d	u sRJ ‚t g d
¢¡}t  |¡ ¡ du sdJ ‚t j|| d ¡ d u sqJ ‚d S )NFr   r$  r   rƒ   r  r  )FNTT)FNF)r   r«   rŒ   r®   Úanyr  ©rÉ   r%   r   r   r   Útest_any¯  s   r•  c                  C   sl  t jddd} tjg dd}t  |¡ ¡ d u sJ ‚t j|dd ¡ du s&J ‚t j|| d ¡ du s3J ‚t ddg¡}t  |¡ ¡ du sEJ ‚t j|| d ¡ du sRJ ‚t dd g¡}t  |¡ ¡ du sdJ ‚t j|| d ¡ d u sqJ ‚t dgdd gg¡}t  |¡ ¡ du s†J ‚t j|| d ¡ d u s“J ‚t dgdgg¡}t  |¡ ¡ du s§J ‚t j|| d ¡ du s´J ‚d S )	NFr   r$  r   rƒ   r  Tr  )r   r«   rŒ   r®   rÛ   r  r  r”  r   r   r   Útest_allÂ  s"   r–  c                  C   s`   g d¢} t  | ¡ ¡ g d¢ksJ ‚t t¡ t j| d d W d   ƒ d S 1 s)w   Y  d S )N©r0   r   N)TTFr  )r   Úis_validr  r=   r>   r?   r.  r   r   r   Útest_is_validÝ  s
   "ÿr™  c                   C   s\   t jjt d¡ksJ ‚t jjt d¡ksJ ‚t jjt d¡ks!J ‚t jjt d¡ks,J ‚d S )Nas          Compute the minimum and maximum values of a numeric array.

        Null values are ignored by default.
        This can be changed through ScalarAggregateOptions.

        Parameters
        ----------
        array : Array-like
            Argument to compute function.
        skip_nulls : bool, default True
            Whether to skip (ignore) nulls in the input.
            If False, any null in the input forces the output to null.
        min_count : int, default 1
            Minimum number of non-null values in the input.  If the number
            of non-null values is below `min_count`, the output is null.
        options : pyarrow.compute.ScalarAggregateOptions, optional
            Alternative way of passing options.
        memory_pool : pyarrow.MemoryPool, optional
            If not passed, will allocate memory from the default memory pool.
        a          Add the arguments element-wise.

        Results will wrap around on integer overflow.
        Use function "add_checked" if you want overflow
        to return an error.

        Parameters
        ----------
        x : Array-like or scalar-like
            Argument to compute function.
        y : Array-like or scalar-like
            Argument to compute function.
        memory_pool : pyarrow.MemoryPool, optional
            If not passed, will allocate memory from the default memory pool.
        aÊ          Find the element-wise minimum value.

        Nulls are ignored (by default) or propagated.
        NaN is preferred over null, but not over any valid value.

        Parameters
        ----------
        *args : Array-like or scalar-like
            Argument to compute function.
        skip_nulls : bool, default True
            Whether to skip (ignore) nulls in the input.
            If False, any null in the input forces the output to null.
        options : pyarrow.compute.ElementWiseAggregateOptions, optional
            Alternative way of passing options.
        memory_pool : pyarrow.MemoryPool, optional
            If not passed, will allocate memory from the default memory pool.
        aO          Filter with a boolean selection filter.

        The output is populated with values from the input at positions
        where the selection filter is non-zero.  Nulls in the selection filter
        are handled based on FilterOptions.

        Parameters
        ----------
        input : Array-like or scalar-like
            Argument to compute function.
        selection_filter : Array-like or scalar-like
            Argument to compute function.
        null_selection_behavior : str, default "drop"
            How to handle nulls in the selection filter.
            Accepted values are "drop", "emit_null".
        options : pyarrow.compute.FilterOptions, optional
            Alternative way of passing options.
        memory_pool : pyarrow.MemoryPool, optional
            If not passed, will allocate memory from the default memory pool.

        Examples
        --------
        >>> import pyarrow as pa
        >>> arr = pa.array(["a", "b", "c", None, "e"])
        >>> mask = pa.array([True, False, None, False, True])
        >>> arr.filter(mask)
        <pyarrow.lib.StringArray object at ...>
        [
          "a",
          "e"
        ]
        >>> arr.filter(mask, null_selection_behavior='emit_null')
        <pyarrow.lib.StringArray object at ...>
        [
          "a",
          null,
          "e"
        ]
        )r   r‘  Ú__doc__ÚtextwrapÚdedentrÏ   Úmin_element_wiseÚfilterr   r   r   r   Útest_generated_docstringsæ  s   rŸ  c                  C   s¬   t  tj¡} t| ƒdksJ ‚t  tj¡} t| ƒdksJ ‚t  tj¡} t| ƒdks*J ‚t  tj¡} t| ƒdks8J ‚t  tj¡} t| ƒdksFJ ‚t  tj	¡} t| ƒdksTJ ‚d S )Nz(x, y, /, *, memory_pool=None)zK(array, /, *, skip_nulls=True, min_count=1, options=None, memory_pool=None)zj(array, /, q=0.5, *, interpolation='linear', skip_nulls=True, min_count=0, options=None, memory_pool=None)zZ(*strings, null_handling='emit_null', null_replacement='', options=None, memory_pool=None)z'(indices, /, *values, memory_pool=None)z<(n, *, initializer='system', options=None, memory_pool=None))
rJ   rK   r   rÏ   Ústrr‘  ÚquantileÚbinary_join_element_wiseÚchooseÚrandom)rQ   r   r   r   Útest_generated_signaturesK  s   r¥  c                  C   sb   t ƒ } dd„ tddƒD ƒ}t t |¡¡ ¡ }t|ƒD ]\}}|| | ¡ kr.|  	t
|ƒ¡ q| S )Nc                 S   s*   g | ]}d |  krdk sn t |ƒ‘qS )é Ø  é à  )Úchr)r   rQ  r   r   r   r   p  s    ÿz/find_new_unicode_codepoints.<locals>.<listcomp>é€   é  )Úsetrk  r   Úutf8_is_printablerŒ   r®   r  Ú	enumerateÚisprintablerÏ   Úord)ÚnewrX  Úis_printableÚirQ  r   r   r   Úfind_new_unicode_codepointsm  s   €r³  iò  ió  >’   é,  é-  é.  é/  é0  é1  é2  é3  é4  é5  é6  é7  é8  é9  é:  é;  é<  é=  é>  é?  é@  éA  éB  éC  éD  éE  éF  éG  éH  éI  éJ  éK  éL  éM  éN  éO  éP  éQ  éR  éS  éT  éU  éV  éW  éX  éY  éZ  é[  é\  é\«  é]  é]«  é^  é^«  é_  é_«  é`  éa  éb  éc  éd  ée  éf  ég  éh  éi  éj  ép§  éq   éx  éz  é|,  é},  é   é   é‘   é’   é“   é”   é•   é–   é—   é˜   é™   éš   é›  é›   éœ  éœ   éœ¦  é  é¦  éž  éŸ  é   é¡  é¢  é£  é¤  é¥  é¦  é§  é¨  é©  éª  é«  é¬  é­  é®  é¯  é°  é°  é±  é±  é²  é²  é³  é³  é´  é´  éµ  éµ  é¶  é¶  é·  é·  é¸  é¸  é¹  éº  é»  é¼  é½  é¾  é¿  éÀ  éÁ  éà  éá  éâ  éã  éä  éø§  éù§  éª   éº   >H   éÅ éÆ éÇ éÈ éÉ éÊ éË é N  éN  éQ  é4  éo  éN  é	N  é_  éO  é_  é_  é_  é!–  é*8  é,„  é0  éAS  éCS  éDS  éES  éFQ  éF–  éLS  éLc  éL–  éM;  é]N  éiQ  ékQ  ékù  émQ  épO  ésù  éx–  éxù  éz^  é~v  éƒ4  é†€  éŒN  é”N  é–N  é–s  é®Œ  é²ù  é³Œ  é¿N  éÀN  éÁS  éÂS  éÃS  éÄS  éÑù  éÒg  éÓù  éÛV  éßN  éèN  éñX  éö–  éùX  éýù  éþ^  éþb  éÿ^  >l   é@
 éA
 éB
 éC
 é` é`$  éa éa$  éb éb$  éc éc$  éd éd$  ée ée$  éf éf$  ég ég$  éh éh$  éi  éj  ék  él  ém  én  éo  ép  ép   éq  ét   ét$  éu   éu$  év   év$  év'  éw   éw$  éw'  éx   éx$  éx'  éy   éy$  éy'  éz$  éz'  é{$  é{'  é|$  é|'  é}'  é~'  é€   é€'  é   é'  é‚   é‚'  éƒ   éƒ'  é„   é„'  é…   é…'  é†   é†'  é‡   é‡'  éˆ   éˆ$  éˆ'  é‰   é‰$  éŠ$  éŠ'  é‹$  é‹'  éŒ$  éŒ'  é$  é'  éŽ$  éŽ'  é$  é'  é$  é'  é‘'  é’'  éÚ  éê$  éõ$  éö$  é÷$  éø$  éù$  éú$  éû$  éü$  éý$  éÿ$  é²   é³   é¹   >A   rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r€  r  r‚  rƒ  r„  r…  r†  r‡  rˆ  r‰  rŠ  r‹  rŒ  r  )Úis_alnumÚis_alphaÚis_digitÚ
is_numericÚis_lowerÚfunction_name)
rú  rû  Úis_asciiÚ
is_decimalrü  rþ  rý  r±  Úis_spaceÚis_upperÚvariantÚasciiÚutf8c           	      C   s°   |d |  }|   dd¡}t | tƒ ¡tƒ B }ttrdndƒD ]7}|tddƒv r(q||v r-qt|ƒ}tt	|ƒrU| dkrUt
 |g¡}tt	|ƒ}||ƒd  ¡ t||ƒƒ ksUJ ‚qd S )	NÚ_r^  r©  rª  r¦  r§  r  r   )ÚreplaceÚcodepoints_ignoreÚgetr«  r³  rk  r  r¨  r   r   rŒ   r®   r  r  )	rÿ  r  Ú
arrow_nameÚpy_nameÚignorer²  rQ  ÚarÚ
arrow_funcr   r   r   Útest_string_py_compat_booleanÎ  s"   ÿ
 €ôr  c                  C   s|  t  g d¢¡} tj| dd ¡ g d¢ksJ ‚tj| dd ¡ g d¢ks%J ‚tj| dd ¡ g d¢ks4J ‚t | d¡ ¡ g d¢ksBJ ‚t | d¡ ¡ g d¢ksPJ ‚t | d¡ ¡ g d¢ks^J ‚t  g d¢¡} tj| dd ¡ g d¢kstJ ‚tj| dd ¡ g d	¢ksƒJ ‚tj	| dd ¡ g d
¢ks’J ‚t | d¡ ¡ g d¢ks J ‚t | d¡ ¡ g d	¢ks®J ‚t 	| d¡ ¡ g d
¢ks¼J ‚d S )N)Nr%   Úabcdr-   )Úwidth)Nz a r  )Nz  ar  )Nza  r  )Nõ   Ã¡r  )Nu    Ã¡ r  )Nu     Ã¡r  )Nu   Ã¡  r  )
rŒ   r®   r   Úascii_centerÚtolistÚ
ascii_lpadÚ
ascii_rpadÚutf8_centerÚ	utf8_lpadÚ	utf8_rpadr  r   r   r   Útest_padè  s    r  c                  C   s
  t ddƒ} t g d¢¡}| ¡  t¡ tjd i¡}| D ].}| D ])}|j	 
||d¡}tj|||dd}| ¡ | ¡ ks<J ‚t |||d¡|ksHJ ‚qqt g d¢¡}| ¡  t¡ tjd i¡}| D ]"}| D ]}|j	 
||d¡}tj|||dd}| ¡ | ¡ ksJ ‚qdq`d S )Nr`  r0   )Nr^  r%   r1  rM  r  ÚabcdeÚXX)rj   rh  Úreplacement)Nr^  u   Ï€u   Ï€bu   Ï€bÎ¸u   Ï€bÎ¸du   Ï€bÎ¸de)rk  rŒ   r®   Ú	to_pandasÚastyper<   r  rø   Únanr   Úslice_replacer   Úbinary_replace_slicer  Úutf8_replace_slice)Úoffsetsrü   Úseriesrj   rh  rÿ   rv  r   r   r   Útest_replace_sliceú  s.   
ÿúÿüÿr'  c                  C   s¤   t  g d¢¡} tj| ddd}| ¡ g d¢ksJ ‚t | dd¡}| ¡ g d¢ks*J ‚tj| dddd}| ¡ g d¢ks=J ‚tj| dddd	}| ¡ g d¢ksPJ ‚d S )
N)ÚfoozfooÚfoodNró   rô   ©rZ   r  )ÚbarzbarÚbardNr.   )rZ   r  Úmax_replacements)Úbarzfoor,  N)r-  )rŒ   r®   r   Úreplace_substringr  )r/  r  r   r   r   Útest_replace_plain  s   
ÿr0  c                  C   sx   t  g d¢¡} g d¢}tj| ddd}| ¡ |ksJ ‚tj| ddd}| ¡ |ks+J ‚t | dd¡}| ¡ |ks:J ‚d S )N)ró   ÚmoodN)Úf00Úm00dNz(.)ooz\100r*  )r  )rŒ   r®   r   Úreplace_substring_regexr  )r/  rÿ   r  r   r   r   Útest_replace_regex!  s   r5  c                  C   s`   t  ddg¡} dddœdddœg}tj| dd	}| ¡ |ks J ‚t | d¡}| ¡ |ks.J ‚d S )
NÚa1Úzb2zr%   r_   )ÚletterÚdigitr&   r`   z(?P<letter>[ab])(?P<digit>\d)r{  )rŒ   r®   r   Úextract_regexr  )r  rÿ   Ústructr   r   r   Útest_extract_regex,  s   r<  c                  C   s¢   t  ddgd g g¡} t  g d¢¡}t | d¡ |¡sJ ‚t jddgt  ¡ d}t jdd	gt  ¡ d}t jd
dgddggt  t  ¡ ¡d} t | |¡ |¡sOJ ‚d S )Nró   rô   )zfoo-barNr^  ú-r_   r`   rƒ   Úa1bÚc2dr%   r&   rQ  Úd)rŒ   r®   r   Úbinary_joinrû   r)   Úlist_)Úar_listrÿ   Úseparator_arrayr   r   r   Útest_binary_join5  s   $rE  c                  C   s¢  t jd t  ¡ d} g d¢g d¢g d¢g}tj|Ž  ¡ g d¢ks!J ‚t ddd¡ ¡ d	ks.J ‚t d| d¡ ¡ d u s;J ‚t dd| ¡ ¡ d u sHJ ‚tjd
d}tj|d|iŽ ¡ g d¢ks^J ‚tjddd|d ¡ d	ksmJ ‚tjd| d|d ¡ dks|J ‚tjdd| |d ¡ d u s‹J ‚tjddd}tj|d|iŽ ¡ g d¢ks¢J ‚tjddd|d ¡ d	ks±J ‚tjd| d|d ¡ dksÀJ ‚tjdd| |d ¡ d u sÏJ ‚d S )Nrƒ   )Nr%   r&   )rQ  Nr@  )Nr=  z--)NNúb--dr%   r&   r=  za-bÚskip)Únull_handlingrÉ   )Nr%   rF  r  r  Úspam)rH  Únull_replacement)Núa-spamrF  rK  )rŒ   r•   r$   r   r¢  r  r  r–   )ÚnullÚarrsrG  r  r   r   r   Útest_binary_join_element_wise@  s\   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrN  )r;  rM   c                 C   s>  t j|| d}t  ¡ t  ¡ fD ]J}t jg d¢|d}| |¡}| ¡  t j|d |d |d d g| d}| |¡s;J ‚t jg |d}| |¡}| ¡  t jg | d}| |¡sYJ ‚qt  ddg¡}t t	¡ | |¡ W d   ƒ n1 svw   Y  t  ddg¡}t t	¡ | |¡ W d   ƒ d S 1 s˜w   Y  d S )Nrƒ   ©r   r0   r/   Nr   r0   r/   r   r[   )
rŒ   r®   r   r   rö   Úvalidaterû   r=   r>   Ú
IndexError)r;  rM   rü   Úindices_typer|   r=  rÿ   r   r   r   Ú	test_take^  s(   
"
ÿ"ÿrS  c               	   C   s¸   t  tdƒ¡} dD ]"}t jg d¢|d}|  |¡}| ¡  t  g d¢¡}| |¡s+J ‚q	t  ¡ t  ¡ fD ]%}t jg d¢|d}t 	t
¡ |  |¡ W d   ƒ n1 sTw   Y  q4d S )Nr   )r   r   r   r   r   r   r   r   rO  rƒ   )r   r0   r/   )rŒ   r®   rk  rö   rP  rû   Úfloat32Úfloat64r=   r>   r  )rü   rR  r|   r=  rÿ   r   r   r   Útest_take_indices_typesx  s   
ÿ€þrV  c                  C   s   t  g d¢g d¢g¡} t  g d¢¡}|  |¡}t  g d¢g¡}| |¡s&J ‚t  dgddgg¡}|  |¡}t  dgd	d
gg¡}| |¡sFJ ‚d S )N)r%   r&   rQ  r@  Úe)ÚfÚgÚhr²  Új)r   r   r.   r1   r2   r/   )r%   rX  r&   rY  r[  rQ  r.   r2   r/   r&   r[  rQ  )rŒ   r  r®   rö   rû   )rü   r|   r=  rÿ   r   r   r   Útest_take_on_chunked_array‰  s$   ø

ÿþü	r\  ÚorderedFTc                 C   st   t jjg d¢g d¢| d}| t  g d¢¡¡}| ¡  | ¡ g d¢ks%J ‚|j ¡ g d¢ks0J ‚|jj	| u s8J ‚d S )N)r   r.   r/   r   r.   r/   ©r%   r&   rQ  )r]  )r   r.   r-   )r%   r&   r%   )
rŒ   ÚDictionaryArrayÚfrom_arraysrö   r®   rP  r  Ú
dictionaryr   r]  )r]  rü   r=  r   r   r   Útest_take_dictionary¯  s   ÿrb  c                  C   s¼   t  d gd ¡} t  d gd gd ¡}t j| gdgd}t  d| i¡}t  g d¢¡}t|  |¡ƒdks5J ‚t| |¡ƒdks@J ‚t| |¡ d¡ƒdksNJ ‚t| |¡ d¡ƒdks\J ‚d S )	Nr   r   r/   r%   ©r^   )r.   r-   r+  Nr0   r   )rŒ   r®   r  Úrecord_batchÚtabler:   rö   Úcolumn)rü   Úchunked_arrÚbatchre  r|   r   r   r   Útest_take_null_typeº  s    ri  c                    s^   t j|| d‰ ˆ  ¡ }|jdd ‡ fdd„ttˆ ƒƒD ƒ}ˆ  t  |¡¡}| |¡s-J ‚d S )Nrƒ   T)Úfullc                    s   g | ]	}ˆ | j r|‘qS r   )r˜  ©r   r²  r  r   r   r   Í  ó    z"test_drop_null.<locals>.<listcomp>)rŒ   r®   Ú	drop_nullrP  rk  r:   rö   rû   )r;  rM   r=  r|   rÿ   r   r  r   Útest_drop_nullÈ  s   rn  c                  C   sN   t  dd gg d¢d gg g¡} t  dgddgg g g¡}|  ¡ }| |¡s%J ‚d S )Nr%   ©rQ  r@  NrQ  r@  )rŒ   r  rm  rû   )rü   Úexpected_dropr=  r   r   r   Útest_drop_null_chunked_arrayÒ  s   rq  c                  C   s¸   t jt  g d¢¡gdgd} |  ¡ }t jt  g d¢¡gdgd}| |¡s'J ‚t jt  g d¢¡t  g d¢¡gddgd} |  ¡ }t jt  dg¡t  dg¡gddgd}| |¡sZJ ‚d S )N©r%   NrQ  r@  Núa'rc  ©r%   rQ  r@  )NNrQ  NrW  zb'rQ  )rŒ   rd  r®   rm  rû   )rh  r=  rÿ   r   r   r   Útest_drop_null_record_batchÚ  s"   ÿÿþÿru  c               
   C   s’  t jt  g d¢¡gdgd} t jt  g d¢¡gdgd}|  ¡ }| |¡s'J ‚t jt  dd gg d¢g¡t  dd gg d¢g¡t  dgdgd gdd gg¡gg d	¢d} t jt  ddg¡t  ddg¡t  ddg¡gg d	¢d}|  ¡ }| |¡swJ ‚t jt  ddgg d
¢g¡t  dgdgd gdd gg¡t  dd gg d¢g¡gg d	¢d} t jt  ddg¡t  ddg¡t  ddg¡gg d	¢d}|  ¡ }| |¡sÇJ ‚d S )Nrr  r%   rc  rt  ro  )Nr@  Nr&   r@  r^  ©rQ  r@  rW  ÚAÚBÚDza`)zc`úd`Nrz  )rŒ   re  r®   rm  rû   r  )re  rÿ   r=  r   r   r   Útest_drop_null_tableë  s@   þýþýþýþýr{  c                  C   s¦   t  d gd ¡} t  d gd gd ¡}t j| gdgd}t  d| i¡}t|  ¡ ƒdks-J ‚t| ¡ ƒdks7J ‚t| ¡  d¡ƒdksDJ ‚t| ¡  d¡ƒdksQJ ‚d S )Nr   r   r/   r%   rc  r   )rŒ   r®   r  rd  re  r:   rm  rf  )rü   rg  rh  re  r   r   r   Útest_drop_null_null_type  s   r|  c                 C   s   t j|| d}t  g d¢¡}|j|dd}| ¡  | t j|d |d g| d¡s+J ‚|j|dd}| ¡  | t j|d |d d g| d¡sIJ ‚t  g d¢¡}t t¡ | |¡ W d   ƒ n1 sew   Y  t  g d	¢¡}tjtd
d | |¡ W d   ƒ d S 1 s‰w   Y  d S )Nrƒ   ©TFFTNÚdrop©Únull_selection_behaviorr   r-   Ú	emit_null©r   r.   r   r.   r   ©TFTúmust all be the same lengthr7   )	rŒ   r®   rž  rP  rû   r=   r>   r  Ú
ValueError©r;  rM   rü   Úmaskr=  r   r   r   Útest_filter  s    $&ÿ"ÿrˆ  c                 C   sZ   t j|| d}t g d¢¡}|j|dd}| ¡  | t j|d |d g| d¡s+J ‚d S )Nrƒ   r}  r~  r  r   r-   )rŒ   r®   rø   rž  rP  rû   r†  r   r   r   Útest_filter_numpy_array_mask+  s
   (r‰  c                  C   s¤   t  dd gg d¢g¡} t  dgdgg¡}t  dgd dgg¡}t  g d¢¡t  g d¢ddgg¡g d¢fD ]}|  |¡}| |¡sAJ ‚| j|dd	}| |¡sOJ ‚q3d S )
Nr%   rv  rW  ©TFNFTr  FTr  r  )rŒ   r  r®   rž  rû   )rü   rp  Úexpected_nullr‡  r=  r   r   r   Útest_filter_chunked_array6  s   ú
õrŒ  c                  C   sÌ   t jt  g d¢¡gdgd} t  g d¢¡}|  |¡}t jt  ddg¡gdgd}| |¡s/J ‚t  ddgd gddgg¡}|  |¡}| |¡sHJ ‚| j|d	d
}t jt  g d¢¡gdgd}| |¡sdJ ‚d S )N©r%   NrQ  r@  rW  rs  rc  rŠ  r%   rW  TFr  r  ©r%   NrW  )rŒ   rd  r®   rž  rû   r  )rh  r‡  r=  rÿ   Úchunked_maskr   r   r   Útest_filter_record_batchI  s   ÿ

r  c                  C   s¼   t jt  g d¢¡gdgd} t jt  ddg¡gdgd}t jt  g d¢¡gdgd}t  g d¢¡t  ddgg d	¢g¡g d¢fD ]}|  |¡}| |¡sMJ ‚| j|d
d}| |¡s[J ‚q?d S )Nr  r%   rc  rW  rŽ  rŠ  TF)NFTr  r  )rŒ   re  r®   r  rž  rû   )re  rp  r‹  r‡  r=  r   r   r   Útest_filter_table]  s   ú
õr‘  c               	   C   s:  t  dd gg d¢g¡} t jt  g d¢¡gdgd}t jt  g d¢¡gdgd}| ||fD ]G}t  g d¢¡}t t¡ | |¡ W d   ƒ n1 sJw   Y  t  g d¢¡}tjt j	dd	 | |¡ W d   ƒ n1 snw   Y  q,t  
d
¡}|||fD ]}t t¡ | |¡ W d   ƒ n1 s•w   Y  q~d S )Nr%   rv  r  rs  rc  r‚  rƒ  r„  r7   T)rŒ   r  rd  r®   re  r=   r>   r  rž  r(  r•   r?   )rü   rh  re  Úobjr‡  r•   Úfiltr   r   r   Útest_filter_errorsp  s0   ÿÿÿþ€
ÿ€ÿr”  c                  C   sÀ   t  d gd ¡} t  d gd gd ¡}t j| gdgd}t  d| i¡}t  ddgd ¡}t|  |¡ƒdks7J ‚t| |¡ƒdksBJ ‚t| |¡ d¡ƒdksPJ ‚t| |¡ d¡ƒdks^J ‚d S )	Nr   r   r/   r%   rc  TFr   )rŒ   r®   r  rd  re  r:   rž  rf  )rü   rg  rh  re  r‡  r   r   r   Útest_filter_null_typeˆ  s    r•  Útypr®   r  c                 C   s  | dkr	dd„ }ndd„ }|g d¢ƒ}|g d¢ƒ}t  ||¡}| |g d¢ƒ¡s*J ‚t  ||¡}| |g d¢ƒ¡s;J ‚t  ||¡}| |g d	¢ƒ¡sLJ ‚t  ||¡}| |g d
¢ƒ¡s]J ‚t  ||¡}| |g d¢ƒ¡snJ ‚t  ||¡}| |g d¢ƒ¡sJ ‚d S )Nr®   c                 S   ó
   t  | ¡S rÒ   ©rŒ   r®   ©rM   r   r   r   Úcon™  ó   
ztest_compare_array.<locals>.conc                 S   ó   t  | g¡S rÒ   ©rŒ   r  r™  r   r   r   rš  œ  ó   r  )r.   r.   r0   Nr0   )TFFNN)FTTNN)FFTNN)TFTNN)FTFNN)TTFNN)r   r  rû   Ú	not_equalÚlessÚ
less_equalÚgreaterÚgreater_equal)r–  rš  Úarr1Úarr2r=  r   r   r   Útest_compare_array–  s"   
r¦  c                 C   sB  | dkr	dd„ }ndd„ }|g d¢ƒ}t  d¡}t ||¡}| |g d¢ƒ¡s)J ‚| dkrJt jd dd	}t ||¡}t |¡}| |g d
¢ƒ¡sJJ ‚t ||¡}| |g d¢ƒ¡s[J ‚t ||¡}| |g d¢ƒ¡slJ ‚t ||¡}| |g d¢ƒ¡s}J ‚t 	||¡}| |g d¢ƒ¡sŽJ ‚t 
||¡}| |g d¢ƒ¡sŸJ ‚d S )Nr®   c                 S   r—  rÒ   r˜  r™  r   r   r   rš  ¸  r›  z'test_compare_string_scalar.<locals>.conc                 S   rœ  rÒ   r  r™  r   r   r   rš  »  rž  )r%   r&   rQ  Nr&   ©FTFNr$   rƒ   )TTTT©TFTN©TFFNrN  ©FFTN©FTTN)rŒ   r•   r   r  rû   Úis_nullrŸ  r   r¡  r¢  r£  )r–  rš  rü   r•   r=  ÚnascalarÚisnullr   r   r   Útest_compare_string_scalarµ  s,   


r¯  c                 C   s6  | dkr	dd„ }ndd„ }|g d¢ƒ}t  d¡}t ||¡}| |g d¢ƒ¡s)J ‚| dkrDt jd dd	}t ||¡}| ¡ g d
¢ksDJ ‚t ||¡}| |g d¢ƒ¡sUJ ‚t ||¡}| |g d¢ƒ¡sfJ ‚t ||¡}| |g d¢ƒ¡swJ ‚t 	||¡}| |g d¢ƒ¡sˆJ ‚t 
||¡}| |g d¢ƒ¡s™J ‚d S )Nr®   c                 S   r—  rÒ   r˜  r™  r   r   r   rš  Ý  r›  z test_compare_scalar.<locals>.conc                 S   rœ  rÒ   r  r™  r   r   r   rš  à  rž  ©r.   r/   r-   Nr/   r§  r   rƒ   ©NNNNr¨  r©  rN  rª  r«  )rŒ   r•   r   r  rû   r  rŸ  r   r¡  r¢  r£  )r–  rš  rü   r•   r=  r­  r   r   r   Útest_compare_scalarÚ  s*   

r²  c                  C   sˆ   t  g d¢¡} t  g d¢dd gg¡}t  ddgg d¢g¡}t  g d¢g¡}| |f|| f||ffD ]\}}t ||¡}| |¡sAJ ‚q0d S )Nr  ©r.   r/   r-   r0   r.   r/   )r-   r0   N)TTTTN)rŒ   r®   r  r   r  rû   )rü   Úarr_chunkedÚarr_chunked2rÿ   ÚleftÚrightr=  r   r   r   Ú test_compare_chunked_array_mixedþ  s   ýúr¸  c                  C   óH   t  g d¢¡} t  g d¢¡}t | |¡}t  g d¢¡}| |¡s"J ‚d S )N©r.   r/   r-   r0   r   ©r   r[   r.   r/   r-   )r.   r.   r0   r1   rá   )rŒ   r®   r   rÏ   rû   ©r¶  r·  r=  rÿ   r   r   r   Útest_arithmetic_add  ó
   r½  c                  C   r¹  )Nrº  r»  )r.   r-   r/   r/   r/   )rŒ   r®   r   Úsubtractrû   r¼  r   r   r   Útest_arithmetic_subtract  r¾  rÀ  c                  C   r¹  )Nrº  r»  )r   ra  r-   rá   é   )rŒ   r®   r   Úmultiplyrû   r¼  r   r   r   Útest_arithmetic_multiply  r¾  rÃ  r;  ÚroundÚround_to_multiplec           
      C   sÐ   | dkrt j}tt jdd}n| dkrt j}tt jdd}g d¢}g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢dœ
}| ¡ D ]\}}||d}|||d}tj|t 	¡ d}	|	 
|¡seJ ‚qFd S )NrÄ  r   ©ÚndigitsrÅ  r.   ©Úmultiple)gš™™™™™	@ç      @çš™™™™™@ç      @çš™™™™™	Àg      Àgš™™™™™ÀN)r-   r-   r-   r0   éüÿÿÿrÎ  rÎ  N)r0   r0   r0   r   r`  r`  r`  N)r-   r-   r-   r0   r`  r`  r`  N)r0   r0   r0   r   rÎ  rÎ  rÎ  N)r-   r-   r0   r0   r`  rÎ  rÎ  N)r-   r0   r0   r   r`  r`  rÎ  N)r-   r-   r0   r0   r`  r`  rÎ  N)r-   r0   r0   r   r`  rÎ  rÎ  N)r-   r0   r0   r0   r`  rÎ  rÎ  N)r-   r-   r0   r   r`  r`  rÎ  N)
ÚdownÚupÚtowards_zerorp   Ú	half_downÚhalf_upÚhalf_towards_zeroÚhalf_towards_infinityÚhalf_to_evenÚhalf_to_odd©Ú
round_moder  rƒ   )r   rÄ  r   r§   rÅ  rª   ÚitemsrŒ   r®   rU  rû   )
r;  rÄ  r§   rM   Úrmode_and_expectedrÙ  rÿ   rÉ   r=  Úexpected_arrayr   r   r   Útest_round_to_integer&  s0   ö
ürÝ  c                  C   s¢   g d¢} g d¢g d¢g d¢g d¢g d¢dœ}|  ¡ D ]4\}}t |d¡}tj| |d	}tjj|t |¡d
d tj| |dd|ksCJ ‚t | |d¡|ksNJ ‚qd S )N©é@  rÊ  gš™™™™™@rÌ  gV-²	ÀgÇ):’ËAÀg\Âõ(\ÀN©i,  r   r   r   r   r   r   N©rß  r   r   r   r   iØÿÿÿr   N)rß  r0   r-   r   r`  iÝÿÿÿr`  N©rß  rÊ  çÍÌÌÌÌÌ@rÌ  rÍ  çÍÌÌÌÌŒAÀr`  N)rß  rÊ  g¤p=
×£@rÌ  g®Gáz®	ÀgÂõ(\AÀçffffffÀN)ra  r[   r   r.   r/   rÕ  r  T©Ú	equal_nanrØ  )	rÚ  r   r§   rÄ  rø   ÚtestingÚassert_allcloserŒ   r®   )rM   Úndigits_and_expectedrÇ  rÿ   rÉ   r=  r   r   r   Ú
test_roundC  s$   ûÿÿúrë  c                  C   sH  g d¢} dg d¢t  d¡g d¢dg d¢dg d	¢t jd
t  dd¡dg d¢i}| ¡ D ](\}}t |d¡}tj| |d}tjj	|t  
|¡dd t | |d¡|ksRJ ‚q*ddt  d¡fD ]!}tjt jdd tj| |d W d   ƒ n1 sww   Y  q[tdfD ] }tjtdd tj| |d W d   ƒ n1 sœw   Y  qd S )NrÞ  gš™™™™™©?)rß  rÊ  rã  rÌ  rÍ  rä  rå  Nr    râ  r/   )rß  r0   r0   r0   rÎ  iÜÿÿÿrÎ  Nr   rá  rs   r0   rƒ   rà  rÕ  r  Træ  r   ra  gÍÌÌÌÌÌ$Àz"Rounding multiple must be positiver7   rÈ  l   ÿÿl+?ÐR zis not a valid multiple type)rŒ   r•   Ú
decimal256rÚ  r   rª   rÅ  rø   rè  ré  r®   r=   r>   r(  r<   r?   )rM   Úmultiple_and_expectedrÉ  rÿ   rÉ   r=  r   r   r   Útest_round_to_multipleV  s<   úÿ
ÿÿþ€ÿ€ÿrî  c                  C   s¨   g d¢} t  g d¢t  ¡ ¡}t  g d¢t  ¡ ¡}t | |¡|ks"J ‚t  dt  ¡ ¡}t  dt  ¡ ¡}t  dt  ¡ ¡}tjd|dd	|ksFJ ‚tjd|d
d	|ksRJ ‚d S )N)çw¾Ÿ/Ý^@ç /Ý$Rm@ç+‡Ùšu@g´Èv¾ŸŒ|@rï  rð  rñ  )r`  ra  r[   r   r.   r/   r-   )r   éÈ   i^  iÉ  g     à^@g
×£p=Rm@rñ  r   r   r[   g      @rÔ  rØ  rÕ  )rŒ   r®   r   rU  r   Úround_binaryr•   )rM   Úscalesrÿ   Úexpect_zeroÚ
expect_infÚscaler   r   r   Útest_round_binaryr  s&   ÿÿÿÿÿrø  c                  C   sT  t  g d¢¡} |  ¡ }t  g d¢¡}| |¡sJ ‚| t | ¡¡s#J ‚|  ¡ }t  g d¢¡}| |¡s5J ‚| t | ¡¡s?J ‚t  ddgdd gg¡} |  ¡ }t  ddgddgg¡}| |¡s`J ‚|  ¡ }t  ddgddgg¡}| |¡svJ ‚t  dddd td	ƒg¡} |  ¡ }t  g d
¢¡}| |¡s”J ‚| jdd}t  g d¢¡}| |¡s¨J ‚d S )Nr°  )FFFT)TTTFr.   r/   r-   FTr!  )FFFTF)Únan_is_null)FFFTT)rŒ   r®   r¬  rû   r   r˜  r  r   rJ  r   r   r   Útest_is_nullƒ  s.   rú  c                  C   sÚ   t  dddd tdƒg¡} |  ¡ }t  g d¢¡}| |¡sJ ‚t jg d¢t  ¡ d} tjtdd	 |  ¡ }W d   ƒ n1 s?w   Y  tjtdd	 t jg d
¢t  	¡ d} |  ¡ }W d   ƒ d S 1 sfw   Y  d S )Nr.   r/   r-   r!  )FFFNT)r_   r`   Nrƒ   z"has no kernel matching input typesr7   ©r*   ó   bbN)
rŒ   r®   r   Úis_nanrû   r$   r=   r>   r   rB  )rü   r=  rÿ   r  r   r   r   Útest_is_nan   s    ÿ
þÿ
"ýrþ  c                  C   sb  t jg d¢t  ¡ d} t jdgt  ¡ d}tjt jdd |  |¡ W d   ƒ n1 s-w   Y  t jg d¢t  ¡ d} t jd t  ¡ d}|  |¡}t  g d¢¡}| 	|¡sYJ ‚t  g d¢¡} |  d¡}t  g d	¢¡}| 	|¡ssJ ‚t jg d
¢t  
¡ d} |  d¡}t jg d¢t  
¡ d}| 	|¡s•J ‚t  g d¢¡} |  d ¡}t  g d¢¡}| 	|¡s¯J ‚d S )N©r.   r/   Nr0   rƒ   r   ú+Array arguments must all be the same lengthr7   r±  )r%   ÚbbNÚccc)r%   r  r  rû  )r*   rü  s   ccc)rŒ   r®   r   r=   r>   r(  Ú	fill_nullrL  r•   rû   rB  )rü   Ú
fill_valuer=  rÿ   r   r   r   Útest_fill_null±  s0   ÿþ



r  c                 C   sÎ   t jg d¢| d}t jd| d}| |¡}t jg d¢| d}| |¡s%J ‚| d¡}| |¡s1J ‚t j |j¡sTt 	t
tf¡ | d¡ W d   ƒ n1 sOw   Y  | t jddd¡}| |¡seJ ‚d S )Nrÿ  rƒ   r   )r.   r/   r   r0   Ú5r   )rŒ   r®   r•   r  rû   ÚtypesÚis_unsigned_integerr   r=   r>   r…  r?   )r  rü   r  r=  rÿ   r   r   r   Útest_fill_null_arrayÎ  s   

ÿr	  c                 C   s  t jd| d}t  t jg d¢| dg¡}| |¡}t  t jg d¢| dg¡}| |¡s-J ‚t  t jddg| dt jg | dt jd dg| dg¡}t  t jddg| dt jg | dt jddg| dg¡}| |¡}| |¡soJ ‚| d¡}| |¡s{J ‚| t jddd¡}| |¡sŒJ ‚d S )	Nr   rƒ   )Nr/   r-   r0   )r   r/   r-   r0   r.   r/   r0   r   )rŒ   r•   r  r®   r  rû   )r  r  rü   r=  rÿ   r   r   r   Útest_fill_null_chunked_arrayã  s*   
ýý

r
  c                  C   sÒ   t  g d¢¡} t  g d¢¡}t | |¡t  g d¢¡ksJ ‚t | |¡t  g d¢¡ks,J ‚t | |¡t  g d¢¡ks;J ‚t | |¡t  g d¢¡ksJJ ‚t | |¡t  g d¢¡ksYJ ‚t | ¡t  g d¢¡ksgJ ‚d S )Nr©  )TTFTrN  r§  r«  )	rŒ   r®   r   Úand_Ú
and_kleeneÚor_Ú	or_kleeneÚxorÚinvertr4   r   r   r   Útest_logical   s    r  c                  C   s`   t  g d¢¡} |  ¡ }t |¡}| |ksJ ‚| |ksJ ‚| t | ¡ks%J ‚t |¡|ks.J ‚d S )N)r%   r%   r&   rQ  r&   )rŒ   r®   Údictionary_encoder   Údictionary_decode)r®   Údictionary_arrayÚdictionary_array_decoder   r   r   Útest_dictionary_decode  s   
r  c                  C   s<  t jg d¢dd} t t  ¡ ¡}t t¡ tj| d d W d   ƒ n1 s'w   Y  t t	¡ tj| d|d W d   ƒ n1 sDw   Y  t t	¡ tj| d|d W d   ƒ n1 saw   Y  tj| |dt jg d¢d	dksxJ ‚t jd
gdd} tjt  
¡ dd}t t j¡ t | d¡ W d   ƒ n1 s w   Y  tj| dddt jdgddks·J ‚tj| |dt jdgddksÈJ ‚t  t ddd¡t ddd¡g¡} t jddgdd}t | d¡|ksìJ ‚t jddgg d¢gt  t  ¡ ¡d} t jddgg d¢gt  t  ¡ ¡d}t | |j¡|ksJ ‚d S )Nr  r   rƒ   )Útarget_typer   r  T)r‹   rÉ   r   l   ÿÿÿÿ )Úallow_int_overflowF©r‹   r[   iÚ  r.   iß  l    x\N—l    0•E*ztimestamp[ms]r/   )r-   r0   r   r_   r`   )Ú3Ú4r  )rŒ   r®   r   rŠ   r   r=   r>   r?   Úcastr…  r   r(  ÚdatetimeÚ
large_listrB  r  r   )rü   rÉ   Úallow_overflow_optionsrÿ   r   r   r   Ú	test_cast  sF   ÿÿÿÿÿÿ$ÿÿ$ÿr   Ú
value_typec                 C   s6   t  ddd¡}tj|g| d}t || ¡|ksJ ‚d S )NiÆ  r-   r.   rƒ   )r  ÚdaterŒ   r®   r   r  )r!  Údtrü   r   r   r   Útest_identity_cast_datesB  s   r$  c                 C   s<  t  t  d| ¡d¡}t  ¡ }t  t  d|¡d¡}t jjt jg d¢|d|d}|| |¡jks1J ‚t jjt jg d¢|d|d}|| |¡jksJJ ‚t  	¡ }t  t  d|¡d¡}t jjt jg d¢|d|d}|| |¡jksqJ ‚t  t  d| ¡d¡}d	}t
jt jj|d
 | |¡ W d   ƒ d S 1 s—w   Y  d S )NÚelementr/   rM   )r.   r/   r-   r0   r   r1   rƒ   )r.   NNr0   r   r1   )NNNNNNr-   z&Size of FixedSizeList is not the same.r7   )rŒ   rB  r]   r   ÚFixedSizeListArrayr`  r®   r  r   rL  r=   r>   ÚlibÚArrowTypeError)r!  Ú	cast_typeÚdtyper   ÚfslÚerr_msgr   r   r   Útest_fsl_to_fsl_castJ  s,   ÿÿÿ"ÿr-  ÚDecimalTypeTraits)r	   ÚfactoryÚmax_precisionÚFloatToDecimalCase)Ú	precisionr÷  Ú	float_valÚ	decimal32Ú	decimal64é   Ú
decimal128é&   rì  éL   c                 C   sx   | dksJ ‚|dksJ ‚t | ƒd|  }|d|  | kr0t |d¡}|d|  | kr0t |d¡}|d|  | ks:J ‚|S )zA
    Find the largest float f such as `f * 10**scale <= val`
    r   r   ç        )r   rø   Ú	nextafter)Úvalr÷  r3  r   r   r   Úlargest_scaled_float_not_aboveu  s   r=  c                 C   s0   t | tƒsJ ‚t | ¡}| | ¡}t|ƒ}|S )zS
    Return a float representation (possibly approximate) of `int_val**-scale`
    )r   ÚintÚdecimalÚDecimalÚscalebr   )Úint_valr÷  ÚunscaledÚscaledr3  r   r   r   Úscaled_float…  s
   
rE  c                 c   s|    d}t d|dƒD ]2}t d|dƒD ])}t||dƒV  t||dƒV  dt|| |ƒ }td| | |ƒ}t|||ƒV  qq	d	S )
zC
    Return FloatToDecimalCase instances with integral values.
    r3   r.   r-   r   r/   r:  g      ð?r   N)rk  r1  rl   r=  )Úfloat_tyr0  Úmantissa_digitsr2  r÷  ÚepsilonÚ
abs_maxvalr   r   r   Ú$integral_float_to_decimal_cast_cases  s   €ÿúÿrJ  c                 c   s|    d}t d|dƒD ]2}t d|dƒD ])}ddt|| dƒ  }t||ƒ}td| | |ƒ}t|||ƒV  t|||ƒV  qq	dS )z?
    Return FloatToDecimalCase instances with real values.
    r3   r.   r-   r   r/   r   N)rk  rl   r=  r1  )rF  r0  rG  r2  r÷  rH  Ú
abs_minvalrI  r   r   r   Ú real_float_to_decimal_cast_casesŸ  s   €
ÿúÿrL  c                 c   s‚    t  d¡}td|dƒD ]2}td|dƒD ])}tdƒD ]"}| dd| ¡}t||ƒ}|d|  d| k s5J ‚t|||ƒV  qqqdS )	z?
    Return random-generated FloatToDecimalCase instances.
    é*   r.   r1   r   r0   é   r   N)r¤  ÚRandomrk  Ú	randrangerE  r1  )rF  r0  Úrr2  r÷  r²  rC  r3  r   r   r   Ú"random_float_to_decimal_cast_cases®  s   €

üÿÿrR  c           
      C   s¾   |j |_tj|_| |¡}| t d¡ |j	 ¡¡}t
j|| d}t ||¡ ¡ }||kr[t|| ƒd|j	  }|j |d k rAdnd}	||	ks]J d|›d|j › d|›d	|›d
|›
ƒ‚d S d S )Nr.   rƒ   r   r/   r0   zfloat_val = z, precision=z, expected = z, actual = z, diff_digits = )r2  Úprecr?  ÚROUND_HALF_EVENÚroundingÚcreate_decimal_from_floatÚquantizer@  rA  r÷  rŒ   r•   r   r  r  Úabs)
rF  r3  Ú
decimal_tyÚdecimal_ctxr0  rÿ   rz   rv  Údiff_digitsÚlimitr   r   r   Úcheck_cast_float_to_decimal¼  s(   

ÿÿþÿúr]  rF  )ÚidsrY  c                 C   ó   | j S rÒ   ©r	   ©Úvr   r   r   Ú<lambda>×  ó    rc  Úcase_generator)Ú	integralsÚrealsr¤  c              	   C   s`   t  ¡ "}|| |jƒD ]}t| |j| |j|j¡||jƒ qW d   ƒ d S 1 s)w   Y  d S rÒ   )r?  Úlocalcontextr0  r]  r3  r/  r2  r÷  )rF  rY  re  ÚctxÚcaser   r   r   Útest_cast_float_to_decimalÔ  s   

ýÿ"ÿrk  Údecimal_traitsc                 C   r_  rÒ   r`  ra  r   r   r   rc  é  rd  c              
   C   s$  t  d¡}t ¡ tjt ¡ tji|  }t ¡ dt ¡ di|  }t ¡ dt ¡ di|  \}}t t d| ¡¡}|j	}||k rRt t 
d| ¡¡}t t d| ¡¡}t ¡ ±}	|}
|
|	_t| |
t t d| ¡¡ ƒ}t|t t d| ¡¡ƒ}t||ƒD ]€}| |
|¡}| t t 
d|
|  ¡¡ }||  kr |ks£J ‚ J ‚tdƒD ]V}| d	d| ¡}t ||ƒ|¡}t||ƒsÀJ ‚|d	krÎt |¡d|  }n
t |¡d|   }t| |¡ƒ}t tj|| d
|¡ ¡ }t| |¡ƒ}t|| ƒdksýJ ‚q§q~W d  ƒ dS 1 sw   Y  dS )zL
    Test float-to-decimal conversion against exactly generated values.
    é+   é   é5   )i‚ÿÿÿé   )iüÿÿiÿ  r/   r   r   r   rƒ   r.   N)r¤  rO  rŒ   rT  rø   rU  ÚmathÚfloorÚlog10r0  Úlog2r?  rh  rS  rl   Úceilr  rk  r/  rP  Úldexpr   r@  rÄ  rA  r   r  r•   r  rX  )rF  rl  rQ  Únp_float_tyÚmantissa_bitsÚfloat_exp_minÚfloat_exp_maxrG  r0  ri  r2  Ú	min_scaleÚ	max_scaler÷  rY  Ú	float_expr²  Úmantissar3  rÿ   Úexpected_as_intrv  Úactual_as_intr   r   r   Ú!test_cast_float_to_decimal_randomæ  sl   


þýþýþý
ÿÿÿÿÿñ÷$ör  c                  C   sj  t  g d¢¡} tj| ddd}t jt ddd¡d t dd	d
¡gt  d¡d}||ks,J ‚tj| ddd|ks8J ‚t jt ddd¡d d gt  d¡d}tj| dddd}||ksYJ ‚tjt jdd tj| dddd W d   ƒ n1 suw   Y  tjt jdd tj| ddd W d   ƒ n1 s•w   Y  tj| dddd}|t jg d¢t  d¡dks³J ‚d S )N)z5/1/2020Nz
12/13/1900z%m/%d/%Yrz   )ÚformatÚunitiä  r   r.   il  é   é   rƒ   ©rƒ  z%d/%m/%YT)r‚  rƒ  Úerror_is_nullz"Failed to parse string: '5/1/2020'r7   z%Y-%m-%dF)NNN)	rŒ   r®   r   Ústrptimer  Ú	timestampr=   r>   r(  )rü   Úgotrÿ   r   r   r   Útest_strptime(  s2   þÿÿþÿþ$r‹  c                  C   sp  g d¢} g d¢}g d¢}t jdkr| g d¢¡ |D ]}t | ¡ |¡}dD ]1}tj|t ||¡d}|D ]!}t	 
|¡}t	j||d}	t | |¡¡ |	j¡}
|	 |
¡sWJ ‚q6q'd	}tj|t d
|¡d}t	j|t	 
¡ d}	t | |¡¡ |	j¡}
|	 |
¡s‚J ‚tj|t d
|¡d}t	j|t	 
|d ¡d}	t | |d ¡¡ |	j¡}
|	 |
¡s®J ‚tj|t d
|¡d}t	 
d¡}t	j||d}	t | d¡¡ |	j¡}
|	 |
¡sØJ ‚tj|t d|¡d}t	 
d¡}t	j||d}	t | d¡¡ |	j¡}
|	 |
¡sJ ‚tj|t d
|¡d}t	j
|dd}t	j||d}	t | |¡¡ |	j¡}
|	 |
¡s0J ‚qd	}t | ¡}tj|t d
¡d}t	j|t	 
|¡d}	t | |¡¡ |	j¡}
t	 ||¡|	kscJ ‚|	 |
¡skJ ‚tjtjdd t	j|t	 
|d ¡d W d   ƒ n	1 s‹w   Y  tjtjdd t	j|t	 
|d ¡d W d   ƒ d S 1 s±w   Y  d S )N)z2018-03-10 09:00z2038-01-31 12:23N)ÚCETrT   r‚   )z%az%Az%wz%dz%bz%Bz%mz%yry   z%Hz%Iz%pz%Mú%zú%Zz%jz%Uz%Wz%%z%Gz%Vz%uÚwin32)z%cz%xz%X©rz   ÚmsÚusÚnsrƒ   r  z%Y-%m-%dT%H:%M:%Srz   rŽ  z%Sr’  z%S.%fÚC)Úlocalez.Timezone not present, cannot convert to stringr7   r  )ÚsysÚplatformÚextendÚpdÚto_datetimeÚtz_localizerŒ   r®   r‰  r   r³   Ústrftimer  r   rû   r=   r>   r(  )ÚtimesÚ	timezonesÚformatsÚtimezoneÚtsrƒ  ÚtsaÚfmtrÉ   r=  rÿ   r   r   r   Útest_strftimeD  sp   


û


ÿþÿ$þr¤  c                 C   s„  ddl m} t | ¡ d¡ |¡ ¡ }t |tj	d|d¡}|j
jd |j
j d  d¡}t d	t ¡ ¡t d
t ¡ ¡t dt ¡ ¡g}|tjƒ|dƒk rl| dd„ ¡ d¡}| dd„ ¡ d¡}| dd„ ¡ d¡}	n|j
 ¡ d  d¡}|j
 ¡ d  d¡}|j
 ¡ d  d¡}	tjj|||	g|d}
|j
j d¡}|j
j d¡}|j
j d¡}|j
j d¡}|j
j d¡}|j
j d¡}|j
j d¡}|j
j d¡}|j
jj d¡}|j
j d¡}|j
j d¡}t  |¡ !t |¡¡sðJ ‚t  "|¡ !t |j
j"¡¡sÿJ ‚t  |¡ !t |¡¡sJ ‚t  |¡ !t |¡¡sJ ‚t  #|¡ !t |¡¡s)J ‚t  $|¡ !t |¡¡s7J ‚t  %|¡ !t |¡¡sEJ ‚t  &|¡ !t |¡¡sSJ ‚t  '|¡ !|
¡s^J ‚t  |¡ !t |¡¡slJ ‚t  |¡ !t |¡¡szJ ‚t  |¡ !t |¡¡sˆJ ‚t  |¡ !t |¡¡s–J ‚t  (|¡ !t |d ¡¡s¦J ‚t  |¡ !t |d ¡¡s¶J ‚t  |¡ !t |¡¡sÄJ ‚t  )|¡ !t |¡¡sÒJ ‚t  *|¡ !t |j
 d ¡¡¡säJ ‚|j
j+r|j
j+t,j-j.u rúdgt/|ƒ }n| 0dd„ ¡}t  1|¡ !t |¡¡sJ ‚t j2ddd}t j#||d !t |d ¡¡s(J ‚t j3dddd}t j4||d !t |¡¡s@J ‚d S )Nr   )ÚVersionrT   r“  )Útziè  g•Ö&è.>r2   Úiso_yearÚiso_weekÚiso_day_of_weekz1.1.0c                 S   ó   |   ¡ d S ©Nr   ©Úisocalendar©Úxr   r   r   rc  ¢  ó    z,_check_datetime_components.<locals>.<lambda>r   c                 S   rª  )Nr.   r¬  r®  r   r   r   rc  £  r°  c                 S   rª  )Nr/   r¬  r®  r   r   r   rc  ¤  r°  ÚyearÚweekÚday)ÚfieldsFc                 S   s   |   ¡ jdkS r«  )ÚdstÚsecondsr®  r   r   r   rc  Ö  s    r.   rU   r  Tr   )5Úpyarrow.vendored.versionr¥  r™  rš  r›  Ú
tz_convertÚ	to_seriesrŒ   r®   r‰  r#  ÚmicrosecondÚ
nanosecondrÄ  r]   r   Ú__version__Úmapr   r­  ÚStructArrayr`  r±  Úmonthr³  Ú	dayofweekÚ	dayofyearÚquarterÚhourÚminuterq   rM   r   rû   Úis_leap_yearÚday_of_weekÚday_of_yearr§  r¨  Úiso_calendarÚmillisecondÚ	subsecondÚlocal_timestampr¦  r  r   Úutcr:   ÚapplyÚis_dstrŽ   r»   r²  )Ú
timestampsr   r¥  r¡  r¢  Ú
subsecondsÚiso_calendar_fieldsr§  r¨  Úiso_dayrÈ  r±  r¿  r³  rÀ  rÁ  rÂ  rÃ  rÄ  rq   rº  r»  rÎ  Úday_of_week_optionsÚweek_optionsr   r   r   Ú_check_datetime_components‘  s”   
ÿ
ÿ
ÿÿÿýþ  $
ÿ
ÿþ$rÕ  c                 C   sL   g d¢}g d¢}t |ƒ | jjjd st d¡ d S |D ]}t ||ƒ qd S )N©z1970-01-01T00:00:59.123456789z2000-02-29T23:23:23.999999999z2033-05-18T03:33:20.000000000z2020-01-01T01:05:05.001z2019-12-31T02:10:10.002z2019-12-30T03:15:15.003z2009-12-31T04:20:20.004132z2010-01-01T05:25:25.005321z2010-01-03T06:30:30.006163z2010-01-04T07:35:35.0z2006-01-01T08:40:40.0z2005-12-31T09:45:45.0z2008-12-28T00:00:00.0z2008-12-29T00:00:00.0z2012-01-01T01:02:03.0)rT   ú
US/CentralúAsia/Kolkataú	Etc/GMT-4ú	Etc/GMT+4zAustralia/Broken_Hillr   z-Timezone database is not installed on Windows)rÕ  r¼   r½   r¾   r=   rG  )rÈ   rÏ  rž  r   r   r   r   Ú test_extract_datetime_componentsä  s   ÿrÛ  rƒ  r  c                 C   sl   t  t dddd¡gd t  | ¡¡}t |¡}t jjdgd dgd dgd gg d	¢d
}| |¡s4J ‚d S )Niæ  r.   r/   r2   é2   iå  é4   r+  )r§  r¨  r©  rc  )	rŒ   r®   r  r‰  r   rÈ  r¾  r`  rû   )rƒ  rü   r=  rÿ   r   r   r   Útest_iso_calendar_longer_array	  s   $
þrÞ  c               	   C   sö  t  d¡} t g d¢¡}t ddg¡}t g d¢¡}t j|| d}t j|| d}dD ]^}t |¡}t j|| d}| |¡}	tj||d}
|
 	t  |	¡¡sNJ ‚t ||¡}
|
 	t  |	¡¡s^J ‚t j|t  d|¡d}t
jt jd	d
 tj||d W d   ƒ n1 sƒw   Y  q*t d¡}t
jtdd
 tj||d W d   ƒ n1 s§w   Y  d}t |¡}tj|ddd}tj|ddd}t
jtd|› dd
 tj||d W d   ƒ n1 sàw   Y  t  |j|dd¡}	tj||d}
|	 	|
¡ t  |j|dd¡}	tj||d}
|	 	|
¡ t |¡}tj|ddd}tj|ddd}t
jtd|› dd
 tj||d W d   ƒ n	1 sDw   Y  |j|g d¢d}	tj||d}
|
 	t  |	¡¡ |j|g d¢d}	tj||d}
|
 	t  |	¡¡ d S )Nr“  rÖ  z2015-03-29 02:30:00z2015-03-29 03:30:00)z2018-10-28 01:20:00z2018-10-28 02:36:00z2018-10-28 03:46:00rƒ   )rT   r×  rØ  r  zalready have a timezone:r7   zEurope/Brusselsssznot found in timezone databaseúEurope/BrusselsÚraiseÚearliest)Ú	ambiguousÚnonexistentÚlatestz%Timestamp doesn't exist in timezone 'ú'Úshift_forward)rã  Úshift_backwardz$Timestamp is ambiguous in timezone ')TTT)râ  )FFF)rŒ   r‰  r™  rš  r®   r   r‰   r›  Úassume_timezonerû   r=   r>   r(  r…  )Úts_typerÏ  rã  râ  Úambiguous_arrayÚnonexistent_arrayr   rÉ   Útarÿ   r=  Úta_zonedÚinvalid_optionsÚoptions_nonexistent_raiseÚoptions_nonexistent_earliestÚoptions_nonexistent_latestÚoptions_ambiguous_raiseÚoptions_ambiguous_latestÚoptions_ambiguous_earliestr   r   r   Útest_assume_timezone	  s    
ÿ

ÿ€
ÿ
ÿÿÿÿÿýÿÿ
ÿÿ

ÿÿÿÿýÿÿrõ  c              	   C   s0  ddddddddœ}ddddddd	œ}t  | ¡}|D ]}t|ƒ||  }t ||¡}tj||d
 ¡ }	| j |¡}
t	j
 |	|
¡ tj||d
 ¡ }	| j |¡}
t	j
 |	|
¡ tj||d
 ¡ }	| j |¡}
t	j
 |	|
¡ |dkrÕtj||dd}| j || ¡}|jjd u r¡tj||d
 ¡ }	| | j |¡| }
t	j
 |	|
¡ tj||d
 ¡ }	| | j |¡| }
t	j
 |	|
¡ tj||d
 ¡ }	| | j |¡| }
t	j
 |	|
¡ |dkrtj||d ¡ }	| j |¡}
t	j
 |	|
¡ tj||d ¡ }	| j |¡}
t	j
 |	|
¡ tj||d ¡ }	| j |¡}
t	j
 |	|
¡ q|jjd u rQtj||dd}tj||d
}	| j |¡}
t	 |
| k|
t ||| ¡ |
¡}
t	j
 |	|
¡ |dkr–d}t |¡ ¡ }	| j |¡}
t	j
 |	|
¡ t |¡ ¡ }	| j |¡}
t	j
 |	|
¡ t |¡ ¡ }	| j |¡}
t	j
 |	|
¡ d S d S )Nr“  r’  r‘  rz   r  rZ  ry  ©r»  rº  rÉ  rq   rÄ  rÃ  r³  )r»  rº  rÉ  rq   rÄ  rÃ  r  r³  T)Úcalendar_based_originrÈ  )Úceil_is_strictly_greaterÚ1D)rŒ   r®   r   r   r©   Úceil_temporalr  r#  ru  rø   rè  Úassert_array_equalÚfloor_temporalrr  Úround_temporalrÄ  r   r¦  Úwherer™  Ú	Timedelta)r¡  rM   rƒ  Úunit_shorthandÚgreater_unitrì  ÚvalueÚ	frequencyrÉ   r=  rÿ   Úoriginr   r   r   Ú_check_temporal_roundingl	  sœ   ù
ú

ÿ
€ÿý
ór  rö  c                 C   sb   d}g d¢}t  dd„ |D ƒ¡}t||| ƒ g d¢}|D ]}|j d¡j |¡}t||| ƒ qd S )N)r.   r/   r-   r0   r   r1   r+  r   rÁ  rn  é<   éú   iô  iî  )z1923-07-07 08:52:35.203790336z1931-03-17 10:45:00.641559040z1932-06-16 01:16:42.911994368z1941-05-27 11:46:43.822831872z1943-12-14 07:32:05.424766464z1954-04-12 04:31:50.699881472z1966-02-12 17:41:28.693282560z1967-02-26 05:56:46.922376960z1975-11-01 10:55:37.016146432z1982-01-21 18:43:44.517366784z1992-01-01 00:00:00.100000000z1999-12-04 05:55:34.794991104z2026-10-26 08:39:00.316686848c                 S   s   g | ]	}t j|d d‘qS )r“  r†  )r™  Ú	Timestamp)r   r¯  r   r   r   r   è	  rl  z'test_round_temporal.<locals>.<listcomp>)rØ  zAmerica/New_YorkrÙ  rÚ  rß  zPacific/Marquesasr×  rT   rT   )r™  ÚSeriesr  r#  r›  r¸  )rƒ  rM   rÏ  r¡  rž  r   Úts_zonedr   r   r   Útest_round_temporalÔ	  s   þr  c                  C   sÊ   t  g d¢¡} t | ¡ ¡ dksJ ‚tj| dd ¡ dksJ ‚tj| dd ¡ dks,J ‚tj| dd ¡ dks9J ‚t | d¡ ¡ dksEJ ‚tjtd	d
 t | d¡ W d   ƒ d S 1 s^w   Y  d S )N©r.   r/   r-   NNr-   Ú
only_valid©r!  Ú	only_nullr/   rÛ   r   z*"something else" is not a valid count moder7   zsomething else)rŒ   r®   r   r"  r  r=   r>   r…  r  r   r   r   Ú
test_countó	  s   ÿ"þr  c                  C   s  t jg d¢t  ¡ d} t | t  d¡¡ ¡ dksJ ‚t | t jdt  ¡ d¡ ¡ dks-J ‚t | d¡ ¡ dks9J ‚| jddd ¡ dksFJ ‚|  d ¡ ¡ dksQJ ‚t jd	dgd	dggt  ¡ d} |  d	¡ ¡ dkskJ ‚| jd	dd ¡ dksxJ ‚| jd	d	dd
 ¡ dks†J ‚d S )N)r   r.   Nr-   r0   rƒ   r   r/   r[   r0   r-   ©rj   r.   )rj   Úend)	rŒ   r®   r   r   Úindexr•   r  r   r  r  r   r   r   Ú
test_index 
  s   & r  c                    s6  ˆ  ¡ ‰tˆƒtˆ ƒksJ ‚tˆƒtttˆ ƒƒƒksJ ‚‡ ‡fdd„t|ƒD ƒ}‡ ‡fdd„t|tˆ ƒƒD ƒ}ˆ ˆ|  ‰ˆd u r_|dkrRtdd„ |D ƒƒsPJ ‚d S tdd„ |D ƒƒs]J ‚d S |dkrt‡fdd„|D ƒƒspJ ‚t‡fd	d„|D ƒƒs}J ‚d S t‡fd
d„|D ƒƒsŒJ ‚t‡fdd„|D ƒƒs™J ‚d S )Nc                    ó   g | ]}ˆ ˆ|  ‘qS r   r   rk  ©r/  r|   r   r   r   
  ó    z'check_partition_nth.<locals>.<listcomp>c                    r  r   r   rk  r  r   r   r   
  r  rf   c                 s   ó    | ]}|d u V  qd S rÒ   r   ©r   rb  r   r   r   r×   
  ó   € z&check_partition_nth.<locals>.<genexpr>c                 s   r  rÒ   r   r  r   r   r   r×   
  r  c                 3   s     | ]}|d u p|ˆ kV  qd S rÒ   r   r  ©Úpr   r   r×   
  ó   € c                 3   s    | ]}|ˆ kV  qd S rÒ   r   r  r  r   r   r×   
  r  c                 3   s    | ]}|ˆ kV  qd S rÒ   r   r  r  r   r   r×   
  r  c                 3   s     | ]}|d u p|ˆ kV  qd S rÒ   r   r  r  r   r   r×    
  r  )r  r:   ÚsortedÚlistrk  rÛ   )r/  r|   Úpivotrh   Úuntil_pivotÚafter_pivotr   )r/  r|   r  r   Úcheck_partition_nth
  s   r#  c                  C   sŠ   t tddƒƒ} t | ¡ d}tj| |d}t| ||dƒ t | |¡|ks&J ‚tjt	dd t | ¡ W d   ƒ d S 1 s>w   Y  d S )Nrs   éŒ   r   )r   Úat_endz8'partition_nth_indices' cannot be called without optionsr7   )
r  rk  r¤  Úshuffler   Úpartition_nth_indicesr#  r=   r>   r…  )r/  r   r|   r   r   r   Útest_partition_nth#
  s   
þ"ýr(  c                  C   sV   t tdƒƒd gd  } t | ¡ dD ]}dD ]}tj| ||d}t| |||ƒ qqd S )Nr   )r   r+  r…  é   )rf   r%  )r   rh   )r  rk  r¤  r&  r   r'  r#  )r/  r   rh   r|   r   r   r   Ú!test_partition_nth_null_placement2
  s   
ÿýÿr*  c                  C   s  ddd„} t  g d¢¡}dD ]2}dD ]}tj||d|fgd}| |||ƒ qtj||d	}| ||d
ƒ tj||d	}| ||dƒ qtj|tjddgdd}| ||d
ƒ tj|tjddgdd}| ||dƒ tj|ddgd|kstJ ‚t |ddg¡|ks€J ‚d S )NFc                 S   s`   t j|d|fgd}| dt| ƒ¡}|r| |ksJ ‚d S t  ||¡}t  || ¡}||ks.J ‚d S )Nrw   ru   r   ©r   Úsort_indicesÚslicer:   rö   )Úselect_k_indicesrü   ÚorderÚstable_sortÚsorted_indicesÚhead_k_indicesrÿ   rv  r   r   r   Úvalidate_select_k>
  s   z.test_select_k_array.<locals>.validate_select_k©r.   r/   Nr   ©r   r/   r0   )rx   rk   rw   ©re  rn   )re  rx   rk   r/   rv   r  ©rw   rk   ru   ©F)rŒ   r®   r   Úselect_k_unstableÚtop_k_unstableÚbottom_k_unstabler¬   )r3  rü   re  r/  r=  r   r   r   Útest_select_k_array=
  s8   

ÿÿÿÿÿÿr<  c                  C   s  ddd„} t  g d¢g d¢dœ¡}dD ]O}tj||dgd	}| ||dgd
 tj||t d¡dfdgd	}| ||ddgd
 tj||dgd	}| ||dgd
 tj||ddgd	}| ||ddgd
 qtjt	dd t |¡ W d   ƒ n1 szw   Y  tjt	dd tj|ddgd	 W d   ƒ n1 sšw   Y  tjt	dd tj|dg d	 W d   ƒ n1 s¹w   Y  tjt	dd tj||dgd	 W d   ƒ n1 sÙw   Y  tjt	dd tj||dgd	 W d   ƒ d S 1 súw   Y  d S )NFc                 S   sZ   t j||d}| dt| ƒ¡}|r| |ksJ ‚d S t  ||¡}t  || ¡}||ks+J ‚d S )Nru   r   r+  )r.  Útblrn   r0  r1  r2  rÿ   rv  r   r   r   r3  g
  s   z.test_select_k_table.<locals>.validate_select_k)r.   r/   r   )r.   r   r.   r4   r5  ©r%   rk   r6  ru   r%   rk   rt   ©r%   rx   r&   z4'select_k_unstable' cannot be called without optionsr7   z,select_k_unstable requires a nonnegative `k`r[   z2select_k_unstable requires a non-empty `sort_keys`r/   únot a valid sort order©r%   Únonscendingú.Invalid sort key column: No match for.*unknown©Úunknownrk   r8  )
rŒ   re  r   r9  r]   r:  r;  r=   r>   r…  )r3  re  re  r=  r   r   r   Útest_select_k_tablef
  sV   

ÿÿ
ÿ
ÿþýÿþÿýÿÿ"þrF  c                  C   sú   t  g d¢¡} t | ¡}| ¡ g d¢ksJ ‚tj| dd}| ¡ g d¢ks'J ‚tj| dd}| ¡ g d¢ks8J ‚tj| ddd}| ¡ g d	¢ksJJ ‚tj| ddd
}| ¡ g d	¢ks\J ‚tjtdd tj| dd W d   ƒ d S 1 svw   Y  d S )Nr4  ©r-   r   r.   r/   rk   )r/  rx   ©r.   r   r-   r/   rf   )r/  rh   ©r/   r.   r   r-   rg   r@  r7   rB  )rŒ   r®   r   Úarray_sort_indicesr  r=   r>   r…  ©rü   r=  r   r   r   Útest_array_sort_indices™
  s$   
ÿÿ"ÿrL  c                  C   s  t  g d¢¡} t | ¡}| ¡ g d¢ksJ ‚tj| dgd}| ¡ g d¢ks(J ‚tj| dgd}| ¡ g d¢ks:J ‚tj| dgdd}| ¡ g d	¢ksMJ ‚tj| dgdd
}| ¡ g d	¢ks`J ‚tj| tjdgdd}| ¡ g d¢ksvJ ‚tj| tjdgddd}| ¡ g d	¢ksJ ‚d S )Nr4  rG  r7  ru   rv   rH  rf   ©rn   rh   rI  rg   r  )rŒ   r®   r   r,  r  r°   rK  r   r   r   Útest_sort_indices_array¬
  s2   

ÿ
ÿÿ
ÿÿrN  c                  C   sœ  t  g d¢g d¢dœ¡} tj| dgd}| ¡ g d¢ksJ ‚tj| t d¡dfgd	d
}| ¡ g d¢ks6J ‚tj| ddgd}| ¡ g d¢ksIJ ‚tj| ddgd	d
}| ¡ g d¢ks]J ‚tj| ddgd	d}| ¡ g d¢ksqJ ‚tjtdd t | ¡ W d   ƒ n1 sˆw   Y  tjtdd tj| dgd W d   ƒ n1 s§w   Y  tjtdd tj| dgd W d   ƒ d S 1 sÇw   Y  d S )N)r.   r.   Nr   )r.   r   r   r.   r4   r>  ru   rG  r%   rk   rf   rM  )r/   r-   r   r.   r?  rt   rH  rI  rg   z"Must specify one or more sort keysr7   rC  rD  r@  rA  )	rŒ   re  r   r,  r  r]   r=   r>   r…  )re  r=  r   r   r   Útest_sort_indices_tableÇ
  s@   ÿÿþþÿÿþ"ÿrO  c                  C   sÆ   t  g d¢¡} tj| t  g d¢¡d}| ¡ g d¢ksJ ‚tj| t  g d¢¡dd}| ¡ g d¢ks4J ‚tj| t  dd	g¡d}| ¡ g d¢ksJJ ‚tj| t  dd	g¡dd}| ¡ g d¢ksaJ ‚d S )
N©r.   r/   Nr.   r/   r-   ©r.   r-   N©Ú	value_set)TFTTFTT©rS  rY   )TFFTFTr.   r-   )rŒ   r®   r   Úis_inr  rK  r   r   r   Ú
test_is_inë
  s   rV  c                  C   sô   t  g d¢¡} tj| t  g d¢¡d}| ¡ g d¢ksJ ‚tj| t  g d¢¡dd}| ¡ g d¢ks4J ‚tj| t  dd	g¡d}| ¡ g d¢ksJJ ‚tj| t  dd	g¡dd}| ¡ g d¢ksaJ ‚tj| t  dd	g¡dd
}| ¡ g d¢ksxJ ‚d S )NrP  rQ  rR  )r   Nr/   r   Nr.   TrT  )r   NNr   Nr.   r.   r-   rX   )rŒ   r®   r   Úindex_inr  rK  r   r   r   Útest_index_inû
  s   ÿrX  c                  C   sp  t  g d¢¡} t | ¡}| ¡ dgksJ ‚tj| dd}| ¡ dgks%J ‚tj| dd}| ¡ dgks5J ‚tj| dd}| ¡ dgksEJ ‚tj| d	d}| ¡ dgksUJ ‚tj| d
d}| ¡ dgkseJ ‚t  ddg¡} tj| g d¢d}| ¡ g d¢ksJ ‚tj| g d¢dd}| ¡ g d¢ks“J ‚tj| g d¢dd}| ¡ g d¢ks§J ‚tj| g d¢d	d}| ¡ g d¢ks»J ‚tj| g d¢dd}| ¡ g d¢ksÏJ ‚tj| g d¢d
d}| ¡ g d¢ksãJ ‚tj| g d¢d
d}| ¡ g d¢ks÷J ‚tjtdd tj| dd W d   ƒ n	1 sw   Y  tjtdd tj| dd W d   ƒ d S 1 s1w   Y  d S )Nr  ç      @Úlower)Úinterpolationr/   Úhigherr-   ÚnearestÚmidpointÚlinearr.   )g      Ð?ç      à?g      è?©Úq)ç      ô?ç      ø?g      ü?)rb  r[  )r.   r.   r.   )r/   r/   r/   )rd  rd  rd  ©r.   r.   r/   z Quantile must be between 0 and 1r7   çš™™™™™ñ?z"not a valid quantile interpolationÚzzz)rŒ   r®   r   r¡  r  r=   r>   r…  rK  r   r   r   Útest_quantile  sD   
ÿ$ÿrh  c                  C   sæ   t  g d¢¡} t | ¡}| ¡ dgksJ ‚t  t  ddg¡t  ddg¡g¡} t | ¡}| ¡ dgks4J ‚t  g d¢¡} tj| g d¢d}| ¡ g d	¢ksNJ ‚t  t  ddg¡t  ddg¡g¡} t | g d¢¡}| ¡ g d	¢ksqJ ‚d S )
Nr  rY  r.   r/   r-   r0   )r   r`  r.   ra  )r.   rY  r0   )rŒ   r®   r   Útdigestr  r  rK  r   r   r   Útest_tdigest;  s   
"
"rj  c                  C   sD   t  d gt  ¡ ¡ d¡} |  t  ¡ ¡}|t  dgt  ¡ ¡ks J ‚d S )NFr   )rŒ   r®   Úbool_r  r  r   rK  r   r   r   Útest_fill_null_segfaultM  s   rl  c                  C   s¦  t  g d¢¡} t  g d¢¡}t  g d¢¡}t | |¡}|t  g d¢¡ks&J ‚t | |¡}|t  g d¢¡ks7J ‚t | ||¡}|t  g d¢¡ksIJ ‚t | ||¡}|t  g d¢¡ks[J ‚tj| |dd}|t  g d	¢¡ksnJ ‚tj| |dd}|t  g d¢¡ksJ ‚tj| |t ¡ d
}|t  g d	¢¡ks–J ‚tj| |t ¡ d
}|t  g d¢¡ks«J ‚tj| |dd}|t  g d¢¡ks¾J ‚tj| |dd}|t  g d¢¡ksÑJ ‚d S )Nr³  )r-   r.   r/   ©r/   r-   N)r-   r/   r-   re  )r-   r-   r-   TrX   )r/   r-   r-   r  F)r.   r/   N)rŒ   r®   r   Úmax_element_wiser  r‘   )r¤  r¥  Úarr3r=  r   r   r   Útest_min_max_element_wiseT  s6   
ÿ
ÿrp  rj   )rc  g      %@g      %ÀrY   )TFc                 C   s’  t | ƒ}d |tj|t ¡ dtj|t ¡ dg}|D ]h}t g d¢¡t g d¢¡t dd gddgg¡g}t g d¢¡|rCt g d¢¡nt g d	¢¡|rSt g d¢g¡nt g d	¢g¡g}t|ƒD ]!\}}tj	|||d
}	t 
|| |d urw|nd¡}
|	 |
¡sJ ‚q`qd | tj| t ¡ dtj| t ¡ dg}|D ]}t g d¢¡t dtjddddg¡t dtjd dd dg¡g}t g d¢¡t dtjtjtjtjtjg¡|rÞt dtjd tjd tjg¡nt dtjd d d d g¡g}t|ƒD ]*\}}tj	|||d
}	t 
|| |d ur|nd¡}
tj |	jdd|
jdd¡ qïq™dt d¡dfD ]#}t tj¡ tj	g d¢|d W d   ƒ n	1 s@w   Y  q#d S )Nrƒ   r³  )r   NrN  é   r   rN  rq  )r.   r-   r1   )r   NrN  rÜ  )r   NNNri   )ç      ò?g      @g     @@r.   r/   r`  r0   r   r-   )rr  g      @g      @F©Úzero_copy_onlyr%   Úarrowrf  r  )r>  rŒ   r•   r   r   r®   r  r­  r   Úcumulative_sumrÏ   rû   rT  rU  rø   r!  rè  Úassert_array_almost_equalÚto_numpyr=   r>   r(  ©rj   rY   Ú	start_intÚstartsÚstrtÚarraysÚexpected_arraysr²  rü   r=  rÿ   r   r   r   Útest_cumulative_sumv  ón   ÿýÿÿûÿûÿýÿüÿ
ÿ
ÿûÿ€ÿr  c                 C   s’  t | ƒ}d |tj|t ¡ dtj|t ¡ dg}|D ]h}t g d¢¡t g d¢¡t dd gddgg¡g}t g d¢¡|rCt g d¢¡nt g d	¢¡|rSt g d¢g¡nt g d	¢g¡g}t|ƒD ]!\}}tj	|||d
}	t 
|| |d urw|nd¡}
|	 |
¡sJ ‚q`qd | tj| t ¡ dtj| t ¡ dg}|D ]}t g d¢¡t dtjddddg¡t dtjd dd dg¡g}t g d¢¡t dtjtjtjtjtjg¡|rÞt dtjd tjd tjg¡nt dtjd d d d g¡g}t|ƒD ]*\}}tj	|||d
}	t 
|| |d ur|nd¡}
tj |	jdd|
jdd¡ qïq™dt d¡dfD ]#}t tj¡ tj	g d¢|d W d   ƒ n	1 s@w   Y  q#d S )Nrƒ   r³  )r.   NrN  r   r.   rN  r   )r.   r/   r1   )r.   NrN  rs   )r.   NNNri   )rd  rY  rÊ  r/   r`  r0   r-   )rd  g      @g     @*@Frs  r%   ru  rf  r  )r>  rŒ   r•   r   r   r®   r  r­  r   Úcumulative_prodrÂ  rû   rT  rU  rø   r!  rè  rw  rx  r=   r>   r(  ry  r   r   r   Útest_cumulative_prod­  r€  r‚  )r`  rÊ  g      @c                 C   sr  t | ƒ}d |tj|t ¡ dtj|t ¡ dg}|D ]l}t g d¢¡t g d¢¡t g d¢g d¢g¡g}t g d¢¡|rCt g d¢¡nt g d¢¡|rSt g d¢g¡nt g d¢g¡g}t|ƒD ]%\}}tj	|||d	}	tj
|| |d urw|nt d
ƒdd}
|	 |
¡s…J ‚q`qd | tj| t ¡ dtj| t ¡ dg}|D ]m}t g d¢¡t dddtjddg¡t ddd tjdd g¡g}t g d¢¡t g d¢¡|rÒt g d¢¡nt g d¢¡g}t|ƒD ]+\}}tj	|||d	}	tj
|| |d urõ|nd
dd}
tj |	jdd|
jdd¡ qÞqdt d¡dfD ]#}t tj¡ tj	g d¢|d W d   ƒ n	1 s0w   Y  qd S )Nrƒ   )r/   r.   r-   r   r0   r1   )r/   r.   Nr   r0   N)r/   r.   N)r   r0   N)r/   r/   r-   r   r   r1   )r/   r/   Nr   r   N)r/   r/   NNNNri   g    eÍÍÁFrX   )rY  çÍÌÌÌÌÌô?rË  çffffff@çš™™™™™@çÍÌÌÌÌÌ@rY  rƒ  rË  r…  r†  )rY  rY  rË  r„  r„  r†  )rY  rY  rË  rË  r…  r†  )rY  rY  NrY  r…  N)rY  rY  NNNNrs  r%   ru  rf  r³  r  )r>  rŒ   r•   r   r   r®   r  r­  r   Úcumulative_maxrn  rû   rT  rU  rø   r!  rè  rw  rx  r=   r>   r(  ry  r   r   r   Útest_cumulative_maxä  ór   ÿýÿÿúþúÿýÿüþ
ÿ
ÿú	ÿ€ÿrˆ  c                 C   sr  t | ƒ}d |tj|t ¡ dtj|t ¡ dg}|D ]l}t g d¢¡t g d¢¡t g d¢g d¢g¡g}t g d¢¡|rCt g d¢¡nt g d¢¡|rSt g d¢g¡nt g d¢g¡g}t|ƒD ]%\}}tj	|||d	}	tj
|| |d urw|nt d
ƒdd}
|	 |
¡s…J ‚q`qd | tj| t ¡ dtj| t ¡ dg}|D ]m}t g d¢¡t dddtjddg¡t ddd tjdd g¡g}t g d¢¡t g d¢¡|rÒt g d¢¡nt g d¢¡g}t|ƒD ]+\}}tj	|||d	}	tj
|| |d urõ|nd
dd}
tj |	jdd|
jdd¡ qÞqdt d¡dfD ]#}t tj¡ tjg d¢|d W d   ƒ n	1 s0w   Y  qd S )Nrƒ   )r   r1   r0   r/   r-   r.   )r   r1   Nr/   r-   N)r   r1   Nrm  )r   r   r0   r/   r/   r.   )r   r   Nr/   r/   N)r   r   NNNNri   g    eÍÍAFrX   )ç      @ç333333@çÍÌÌÌÌÌ@çÍÌÌÌÌÌ @ç333333@ç333333ó?rŠ  r‹  rŒ  rŽ  r  )rŠ  rŠ  rŒ  r  r  r  )rŠ  rŠ  rŒ  rŒ  rŽ  r  )rŠ  rŠ  NrŠ  rŽ  N)rŠ  rŠ  NNNNrs  r%   ru  rf  r³  r  )r>  rŒ   r•   r   r   r®   r  r­  r   Úcumulative_minr  rû   rT  rU  rø   r!  rè  rw  rx  r=   r>   r(  r‡  ry  r   r   r   Útest_cumulative_min  r‰  r‘  c                   C   s  t  dd¡ ¡ dddœksJ ‚t jddddgd ¡ dddœks"J ‚t  g d¢d	 ¡ ¡tjjg d¢d	 ¡ gd
 ¡ dks>J ‚tjt	dd t  g d¢d	 ¡ ¡ W d   ƒ n1 sZw   Y  tjt	dd t jddgd W d   ƒ d S 1 szw   Y  d S )Nr.   r%   )Ú0r_   r²  rz   )Úfield_names)r²  rz   r³  za b cz0 1rc  r   r7   r  z0 arguments but 2 field namesÚoneÚtwo)
r   Úmake_structr  ÚsplitrŒ   r¾  r`  r=   r>   r…  r   r   r   r   Útest_make_structX  s,   ÿ
ÿþþÿÿþ"ÿr˜  c                  C   s  t  t  ¡ t  ¡ ¡} t jddgdgg ddgd g| d}t jg d¢t  ¡ d}t jg d¢t  ¡ d}t jd	gd d d
dgd gt  t  ¡ ¡d}t |dd¡|ksPJ ‚t |t jdt  ¡ dd¡|ksbJ ‚t |t jdt  ¡ dd¡|kstJ ‚t |t jdt  ¡ dd¡|ks†J ‚d S )N)r”  r.   )r•  r/   )Únoner-   )r”  r   )r”  r+  rƒ   )r.   NNr   N)r.   NNr+  Nr.   r   r+  r”  rc   ÚlastrÛ   )	rŒ   Úmap_r  r   r®   rB  r   Ú
map_lookupr•   )r;  rü   Úresult_firstÚresult_lastÚ
result_allr   r   r   Útest_map_lookupk  sB   
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿr   c                  C   sB  t jg d¢t  ¡ d} t  g d¢¡}t j | |gddg¡}t j | |gddg¡}t |d¡|ks2J ‚t |d¡|ks<J ‚t |ddg¡|ksHJ ‚t |d	dg¡|ksTJ ‚t |d
¡|ks^J ‚t |t d¡¡|kskJ ‚t |d¡| ksuJ ‚t |dg¡| ks€J ‚t |d¡| ksŠJ ‚t |t d¡¡| ks—J ‚tj|d	d	gd|ks¤J ‚t |d¡|ks®J ‚t |dg¡| ks¹J ‚t |g ¡|ksÃJ ‚tj	t j
dd t |d¡ W d   ƒ n1 sÜw   Y  tj	t j
dd t |d¡ W d   ƒ n1 súw   Y  tj	t j
dd t |d¡ W d   ƒ d S 1 sw   Y  d S )N©r0   r   r1   rƒ   )rô   Nr^  r%   r&   rQ  z.c.bs   .c.br.   )r,   r&   )rQ  r&   z.a)r%   r{   )r.   r.   r   zNo match for FieldRefr7   ró   z.c.fooz.a.foo)rŒ   r®   r   r¾  r`  r   Ústruct_fieldr]   r=   r>   r(  )r%   r&   rQ  rü   r   r   r   Útest_struct_fields_options}  s6   ÿÿ$ÿr£  c                   C   s<   t  t  g d¢g d¢¡g d¢g d¢¡t g d¢¡ksJ ‚d S )Nr  )FTNr³  )é   r„  r…  )r.   r„  N)r   Ú	case_whenr–  rŒ   r®   r   r   r   r   Útest_case_when¢  s   ÿýýr¦  c                  C   sî   t  dt  ¡ fdt  ¡ fg¡} t  | ¡}dddœd dddœd dd	dœg}d d
ddœdddœd dddœg}t  ||g|¡}d}t j ||¡}t  d d
ddœg| ¡}| |¡sWJ ‚d}t j ||¡}t  dd	dœdddœg| ¡}| |¡suJ ‚d S )Nr%   r&   r"   r/   r4   r!   r0   gffffff@r1   g¤p=
×£à?r-   gffffffæ?g333333ã?rá   r.   )	rŒ   r;  rU  r   rB  r®   ÚcomputeÚlist_elementrû   )Úelement_typeÚ	list_typeÚl1Úl2Úlistsr  r=  rÿ   r   r   r   Útest_list_element©  s   
  r®  c                  C   sN   dd„ t ddƒD ƒ} t | t d¡¡}t |¡tjt| ƒt ¡ dks%J ‚d S )Nc                 S   s   g | ]
}t j |d d d‘qS )r.   )r±  r¿  r³  )r  )r   Úyr   r   r   r   ¼  s    z'test_count_distinct.<locals>.<listcomp>iÈ  i,  r“  rƒ   )	rk  rŒ   r®   r‰  r   Úcount_distinctr•   r:   r   )Úsamplesrü   r   r   r   Útest_count_distinct»  s   (r²  c                  C   sŽ   t  g d¢¡} t | ¡ ¡ dksJ ‚tj| dd ¡ dksJ ‚tj| dd ¡ dks,J ‚tj| dd ¡ dks9J ‚t | d¡ ¡ dksEJ ‚d S )	Nr  r-   r  r  r  r.   rÛ   r0   )rŒ   r®   r   r°  r  r  r   r   r   Útest_count_distinct_optionsÁ  s   r³  c                  C   s²   t  dg¡} tj| dd| ksJ ‚tj| ddt  dg¡ks J ‚t | d¡| ks*J ‚t | d¡t  dg¡ks8J ‚tjtdd	 tj| d
d W d   ƒ d S 1 sRw   Y  d S )Nu   01Â²3ÚNFC)Úformr~   Ú0123ÚNFDÚNFKDz/"NFZ" is not a valid Unicode normalization formr7   ÚNFZ)rŒ   r®   r   Úutf8_normalizer=   r>   r…  r  r   r   r   Útest_utf8_normalizeÊ  s   þ"ýr»  c                  C   s  dD ]} t jd| dtjg t ¡ dksJ ‚qdd„ tdƒD ƒ}tt|ƒƒt|ƒks,J ‚dd„ tdd	ƒD ƒ}tt|ƒƒd
ks@J ‚tƒ ddg}| 	dd„ tdƒD ƒ¡ dd„ |D ƒ}tt|ƒƒt|ƒkseJ ‚t
jtdd t jd	g d W d   ƒ d S 1 sw   Y  d S )N)ÚsystemrM  iÖÿÿÿs   abcdefr   ©Úinitializerrƒ   c                 S   s   g | ]}t t d ¡ ¡ ƒ‘qS )rs   ©Útupler   r¤  r  rk  r   r   r   r   Ý  s    ztest_random.<locals>.<listcomp>r   c                 S   s&   g | ]}t tjd |d d ¡ ƒ‘qS )rs   r+  r½  r¿  rk  r   r   r   r   à  s    ÿrs   r+  r¡  ró   c                 s   s    | ]}t  d ¡V  qdS )r   N)ÚosÚurandomrk  r   r   r   r×   æ  rØ   ztest_random.<locals>.<genexpr>c                 S   s"   g | ]}t tjd |d ¡ ƒ‘qS )rs   r½  r¿  rk  r   r   r   r   ç  s    ÿzJinitializer should be 'system', an integer, or a hashable object; got \[\]r7   )r   r¤  rŒ   r®   rU  rk  r:   r«  r<   r˜  r=   r>   r?   )r¾  r}  Úinitializersr   r   r   Útest_randomÖ  s*   
ÿÿÿÿ"ýrÄ  ztiebreaker,expected_valuesr  )r-   r.   r0   r1   r0   r1   r.   rl   )r-   r/   r   r+  r   r+  r/   rc   ©r-   r.   r0   r1   r   r+  r/   Údense)r/   r.   r-   r0   r-   r0   r.   c                 C   sP   t  g d¢¡}tjdd| d}tj||d}t j|t  ¡ d}| |¡s&J ‚d S )N©r  r:  ç333333@NrÈ  Nr:  rk   r%  rm   r  rƒ   )rŒ   r®   r   r¤   Úrankr   rû   )ro   Úexpected_valuesrü   Úrank_optionsr=  rÿ   r   r   r   Útest_rank_options_tiebreakerñ  s   þrÌ  c                  C   s*  t  g d¢¡} t jg d¢t  ¡ d}t | ¡}| |¡sJ ‚tj| t ¡ d}| |¡s.J ‚tj| tjdgdd}| |¡sAJ ‚tj| dd}t jg d	¢t  ¡ d}| |¡sZJ ‚tj| d
d}t jg d¢t  ¡ d}| |¡ssJ ‚tjt	dd tjd
ddd W d   ƒ d S 1 sŽw   Y  d S )NrÇ  rÅ  rƒ   r  rt   ru   rf   rg   )r   r-   r1   r.   r+  r/   r0   rx   )r-   r0   r.   r1   r/   r+  r   z'"NonExisting" is not a valid tiebreakerr7   r%  ÚNonExistingrm   )
rŒ   r®   r   r   rÉ  rû   r¤   r=   r>   r…  )rü   rÿ   r=  Úexpected_at_startÚexpected_descendingr   r   r   Útest_rank_options  s0   


ÿÿþ"þrÐ  c                  C   sB  t  t  dt  ¡ ¡t  dt  t  dt  ¡ ¡g¡¡g¡} t d¡}t d¡}t d¡}t d¡}t d ¡}t ddi¡}t t  d¡¡}t t d	¡¡}t d
¡}	t d¡}
||||||||	|
g	}g ||k‘||k‘||k‘||	@ ‘||	B ‘| ‘| 	¡ ‘|| ‘|| ‘|| ‘|| ‘t 
|¡‘t ||¡‘t ||¡‘t ||¡‘t ||¡‘t ||¡‘t |¡‘t |¡‘t |¡‘t |¡‘t |¡‘t |¡‘t |¡‘t |¡‘t ||¡‘t |¡‘t |¡‘t |¡‘t |¡‘t |¡‘t |
¡‘t |¡‘t  |¡‘t !|¡‘t "||¡‘t #||¡‘t $||¡‘t %|¡‘t &|¡‘t '||¡‘|j(t  )¡ d
d‘}t d¡dkt d¡dkt d¡dkt d¡dkt dd¡dkg}t d¡dkt d¡dkt d¡dkt d¡dkt dd¡dkg}|| *g d¢¡t d¡ +¡ g}| ,¡ }||7 }||7 }||7 }||||||| dœS )NÚi64ró   rô   r.   rf  Tr$   r%   r/   Fr   r  r   r+  )ró   rô   r  )r.   r   r³  )rÛ   ÚliteralsÚcallsÚrefsÚnumeric_refsÚspecialÚschema)-rŒ   r×  r]   r   r;  r$   r   r•   rø   r˜  ÚnegaterÏ   r¿  ÚdividerÂ  ÚpowerÚsqrtÚexpÚcosÚsinÚtanÚacosÚatanÚasinÚatan2ÚsinhÚcoshÚtanhÚasinhÚacoshÚatanhrX  ÚsignÚbit_wise_notÚbit_wise_andÚbit_wise_orÚbit_wise_xorrý  Ú	is_finiteÚcoalescer  r   Úisinr¬  Úcopy)r×  r%   r&   rQ  r@  rW  rX  rY  rZ  r[  re  Úliteral_exprsÚexprs_with_callÚexprs_with_refÚexprs_with_numeric_refsÚspecial_casesÚ	all_exprsr   r   r   Úcreate_sample_expressions#  sÞ   ÿ






8ÿÿÿÿÿ
þ
þ
þ
ý
ýýüüüüûûû
ûúúúùùùøøø
	÷
	÷

ö
ö
ö
õôýýýùrù  c                 C   sB   t ƒ d D ]}t|tjƒsJ ‚|  |  |¡¡}| |¡sJ ‚qd S )NrÛ   )rù  r   r   Ú
Expressionr  r  rû   )r  ÚexprÚrestoredr   r   r   Ú#test_expression_serialization_arrowp  s
   ýrý  c                  C   s  t ƒ } | d }| d D ]}| |¡}tj |¡}| |¡sJ ‚q| d D ])}| |¡}tj |¡}t|ƒt|ƒks;J ‚| |¡}tj |¡}| |¡sMJ ‚q$t| d | d ƒD ]+\}}| |¡}tj |¡}t|ƒt|ƒkspJ ‚| |¡}tj |¡}| |¡s‚J ‚qW| d D ]}| |¡}tj |¡}| |¡}tj |¡}| |¡s¦J ‚q‡| d d }| |¡}tj |¡}| t dd	i¡¡sÄJ ‚t d	¡}	|	 	g d
¢¡}|	d	k|	dkB |	dkB }
| |¡}tj |¡}t|
ƒt|ƒksñJ ‚| |¡}tj |¡}| |¡sJ ‚d S )Nr×  rÒ  rÓ  rÔ  rÕ  rÖ  r   r^  r.   r³  r/   r-   )
rù  Úto_substraitr   rú  Úfrom_substraitrû   r   rÇ   r•   rñ  )Úexprsr×  rû  Ú
serializedrË   Úserialized_againÚdeserialized_againÚ	expr_normrX  r%   Útargetr   r   r   Ú'test_expression_serialization_substraitx  sN   










r  c            
      C   s>  t  d¡} t  d¡}t  d¡}t  d¡}t  d¡}t  d¡}t  ddd¡}t  d	¡}t  d
d¡}| |B |k | |k dt ¡ fD ]	}	| |	¡|k qA| ddg¡ | ddg¡ | ddg¡ | ddg¡ t t	¡ | d¡ W d   ƒ n1 s|w   Y  t tj
¡ |tƒ k W d   ƒ d S 1 s˜w   Y  d S )Nr   r.   TFr$   r]   r*   r&   )Únestedr]   r  r   r/   ró   rô   )r   r•   r]   rŒ   rk  r  rñ  r=   r>   r?   r(  r<   )
Úzeror”  ÚtrueÚfalser$   r]   Únested_mixed_typesÚnested_fieldÚnested_field2r–  r   r   r   Útest_expression_construction·  s.   







ÿ"ÿr  c                  C   sð   t  d¡} t  d¡}tjtdd | o| W d   ƒ n1 s w   Y  tjtdd | p0| W d   ƒ n1 s;w   Y  tjtdd t| ƒ W d   ƒ n1 sVw   Y  tjtdd |   W d   ƒ d S 1 sqw   Y  d S )NTFz"cannot be evaluated to python Truer7   )r   r•   r=   r>   r…  r   )r	  r
  r   r   r   Ú!test_expression_boolean_operatorsÓ  s    

€ÿ€ÿ
ÿ"ÿr  c                  C   sÊ   t  d¡} tt  | ¡ƒdksJ ‚tt  | ¡ƒdksJ ‚tt j| ddƒdks(J ‚tt  | d¡ƒdks4J ‚tt  | t d¡¡ƒdksCJ ‚d}tj	t
|d	 t  | t¡ W d   ƒ d S 1 s^w   Y  d S )
Nr]   zhour(field)zround(field)r.   rÆ  z2round(field, {ndigits=1, round_mode=HALF_TO_EVEN})zadd(field, 1)z+only other expressions allowed as argumentsr7   )r   r]   r   rÃ  rÄ  rÏ   rŒ   r•   r=   r>   r?   r<   )r]   r)  r   r   r   Útest_expression_call_functionå  s   
ÿ"ÿr  c                  C   sV   t  dddgi¡} t t jj¡ t | t  ¡ ¡ W d   ƒ d S 1 s$w   Y  d S )Nr%   r.   r/   )	rŒ   re  r=   r>   r'  r(  r   r  r   )re  r   r   r   Útest_cast_table_raisesû  s   "ÿr  zstart,stop,expectedr³  r—  ©r1   NNrg  ©r.   r/   rª  Úfixedc                    s"  |dkr#t  g d¢g d¢g d¢d gt  t  ¡ d¡¡ t  |ƒ d¡¡}nt  g d¢ddgdgd gt  t  ¡ ¡¡ ||ƒ ƒ¡}|| |ˆ d	f}|d u rn|dkrnd
}tjt j|d tj	|Ž  W d   ƒ d S 1 sgw   Y  d S tj	|Ž }	|	 t  t  ¡ |	j
j¡¡ ¡ }
|
‡ fdd„|D ƒksJ ‚d S )Nr  r³  r—  r  r-   r0   r   r1   TzZUnable to produce FixedSizeListArray from non-FixedSizeListArray without `stop` being set.r7   c                    s"   g | ]}|r|d d ˆ … n|‘qS rÒ   r   )r   rW  ©rg  r   r   r     s   " z0test_list_slice_output_fixed.<locals>.<listcomp>)rŒ   r®   rB  r   r  r=   r>   r(  r   Ú
list_slicer   Ú	list_sizer  )rj   rh  rg  rÿ   r!  rª  rü   rB   r)  r=  Úpylistr   r  r   Útest_list_slice_output_fixed  s0   ÿÿÿÿ"ÿ
ÿÿr  z
start,stop))r   N)r   r.   )r   r/   r  )r/   r0   c           
         sö   |dkr%g d¢g d¢g d¢d g}t  |t  t  ¡ d¡¡ t  |ƒ d¡¡}ng d¢ddgdgd g}t  |t  t  ¡ ¡¡ ||ƒ ƒ¡}|dkrHt j}tj|ˆ ˆˆd	d
}|j||ƒ ƒks\J ‚| t  t  ¡ ¡¡ ¡ }‡ ‡‡fdd„|D ƒ}	||	ksyJ ‚d S )Nr  r³  r—  r  r-   r0   r   r1   F©Úreturn_fixed_size_listc                    s&   g | ]}|d ur|ˆ ˆˆ… nd ‘qS rÒ   r   )r   r@  rf  r   r   r   B  s   & z3test_list_slice_output_variable.<locals>.<listcomp>)	rŒ   r®   rB  r   r  r   r  r   r  )
rj   rh  rg  r!  rª  r/  rü   r=  r  rÿ   r   rf  r   Útest_list_slice_output_variable"  s.   þþÿÿÿr  Úreturn_fixed_sizer  r   c                   C   ó   t  t  dt  ¡ ¡¡S ©NÚcol©rŒ   rB  r]   r   r   r   r   r   rc  H  ó    c                   C   s   t  t  dt  ¡ ¡d¡S )Nr   r.   r!  r   r   r   r   rc  I  r  c                   C   r  r  )rŒ   r  r]   r   r   r   r   r   rc  J  r"  c                 C   sd   t  dgg|ƒ ¡}tj|dd| d}|j d¡j|j d¡jks"J ‚| d u r.|j|jks0J ‚d S d S )Nr.   r   r  )rŒ   r®   r   r  r   r]   r	   )r  r   rü   Úoutr   r   r   Ú$test_list_slice_field_names_retainedF  s    ÿr$  c                  C   sp  t  dggt  t  ¡ d¡¡} d}tjt j|d t | dd¡ W d   ƒ n1 s*w   Y  tjt j|d t | dd¡ W d   ƒ n1 sIw   Y  tjt j|d t | dd¡ W d   ƒ n1 shw   Y  d}tjt j|d d tj| dddd	 W d   ƒ n1 sw   Y  tjt j|d
 d tj| dddd	 W d   ƒ d S 1 s±w   Y  d S )Nr.   z@`start`(.*) should be greater than 0 and smaller than `stop`(.*)r7   r[   r/   r   z`step` must be >= 1, got: r’  r  z-1)	rŒ   r®   rB  r   r=   r>   r(  r   r  )rü   r)  r   r   r   Útest_list_slice_bad_parametersU  s$   ÿÿÿÿ"ÿr%  c                 C   sH   t  g d¢¡}tj|| d}t |¡}|j|jksJ ‚| |¡s"J ‚d S )N)r.   r.   r.   r/   r/   r.   r.   r.   r.   r.   r-   r-   r-   r-   r-   r-   r-   r-   r-   r  )rŒ   r®   r   Úrun_end_encodeÚrun_end_decoder   rû   )Úrun_end_encode_optsrü   ÚencodedÚdecodedr   r   r   Úcheck_run_end_encode_decodei  s
   
r+  c                   C   s<   t ƒ  t t t ¡ ¡ƒ t t d¡ƒ t t t ¡ ¡ƒ d S )Nr   )r+  r   r   rŒ   r   r   r   r   r   r   Útest_run_end_encodeq  s   r,  c                  C   sd  t  g d¢¡} t  g d¢¡}t jj| dd}| |¡sJ ‚t  g d¢¡} t  g d¢¡}t jj| dd}| |¡s:J ‚t jg d¢t  ¡ d} t jg d¢t  ¡ d}t jj| d	d}| |¡s_J ‚t jg d¢t  ¡ d} t jg d
¢t  ¡ d}t jj| d	d}| |¡s„J ‚t jg d¢t  ¡ d} tjt j	dd t jj
| d	d W d   ƒ d S 1 s«w   Y  d S )N)r.   r/   r-   Nr0   r   )Nr.   r.   NNr.   r.   rd   )NNr/   Nr.   Nr/   rƒ   )r[   r[   NNr[   Nr[   )éÿ   r-  NNr-  NÚoverflowr7   )rŒ   r®   r§  Úpairwise_diffrû   r   r   r=   r>   r(  Úpairwise_diff_checkedro  r   r   r   Útest_pairwise_diffx  s,   ÿ"þr1  )r.   rÒ   )ÚÚcollectionsr   r  r?  Ú	functoolsr   r   rJ   rl  rq  rÁ  r=   r¤  r–  r›  Únumpyrø   ÚImportErrorÚpandasr™  r½   rŒ   Úpyarrow.computer§  r   Úpyarrow.libr   Úpyarrow.substraitÚ	substraitÚpasr  Ú__dict__rÚ  r9   rI   r   r   r   r   r   r   rT  rU  Únumerical_arrow_typesrk  r)   rB  r  r;  Úall_array_typesrC   rH   rS   ÚmarkÚfilterwarningsrÎ   rÑ   rß   rä   ré   rí   rò   r  r  r
  r  r  Úparametrizer  r  r&  r'  r*  r0  r>  rA  rE  rK  rP  rU  r]  rp  rw  rƒ  rˆ  r‹  rŽ  r’  r•  r–  r™  rŸ  r¥  r³  Úunknown_issue_is_alphaÚutf8proc_issue_is_lowerÚnumeric_info_missingÚdigit_info_missingr	  r  r  r'  r0  r5  r<  rE  rN  rS  rV  r\  rb  ri  rn  rq  ru  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   Údate32Údate64r$  r-  r.  r1  r4  r5  r7  rì  Údecimal_type_traitsr=  rE  rJ  rL  rR  r]  r   rk  r  r‹  r   r¤  rÕ  rÛ  rÞ  rõ  r  r  r  r  r#  r(  r*  r<  rF  rL  rN  rO  rV  rX  rh  rj  rl  rp  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,  r1  r   r   r   r   Ú<module>   sš  ÿÿÿÿÿø










*(ÿïÿ
^ÿ



"	e"
ÿú

	
&


	
	

$
#




'

ÿÿý

ÿ
þü	 
ÿ>KSZh)3$+"4477%	ýþ
!M=
"û



ý
