o
    GhbX                    @   sF  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j56d-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j5CdFe+dGdH ZDej5CdFeEddeFddgdIdJ ZGej5CdFe+dKdL ZHej5CdFeEddeFddgdMdN ZIdOdP ZJdQdR ZKdSdT ZLdUdV ZMdWdX ZNdYdZ ZOej5Cd[g d\ePd]ePd^d_fg d`ePdadd_fddbgddd_ffdcdd ZQdedf ZRdgdh ZSdidj ZTdkdl ZUdmdn ZVdodp ZWdqdr ZXdsdt ZYdudv ZZdwdx Z[dydz Z\d{d| Z]d}d~ Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zde dd ZeddhZfh dZgh dZhh dZih dZheheiB efB efeiehegdZjej5Cdg dej5Cdddgdd Zkdd Zldd Zmej5jdd Zndd Zodd Zpdd Zqdd Zrdd Zsdd Ztej5Cde1dd Zudd Zvdd Zwej5Cdddgdd Zxdd Zyej5Cde1dd Zzdd Z{dd Z|dd Z}ddĄ Z~ej5Cde1ddƄ Zej5jej5Cde1ddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ Zej5Cdddgddׄ Zej5Cdddgddل Zej5Cdddgddۄ Zdd݄ Zdd߄ Zdd Zdd Zej5Cdddgdd Zej5jdd Zej5jdd Zdd Zdd Zdd Zdd Zej5CdFe+dd Zej5CdFe+dd Zdd Zdd Zdd Zej5Cde e gd d Zej5Cde+dd ZeddZeddZedejd!ed	ejd
edejEdedejFdgZdd Zdd Zdd Zdd Zdd Zdd Zej5jej5jCde* gedej5jCdedd dej5jCd eeegg d!dd"d# Zej5jej5jCde) e* gedej5jCd$ed%d dd&d' Zd(d) Zej5jej5jd*d+ Zdd,d-Zej5jd.d/ Zej5Cd0g d1d2d3 Zej5jej5jd4d5 Zd6d7 Zej5jej5Cd0d8ej5jd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zej5jej5Cd[d\ej5Cd]d^d_d` Zej5jej5Cd[d\ej5Cd]d^dadb Zej5jej5Cd[dcej5Cd]d^ddde Zej5jej5Cd[dcej5Cd]d^dfdg Zǐdhdi ZȐdjdk Zɐdldm Zʐdndo Zːdpdq Z̐drds Z͐dtdu Zΐdvdw Zϐdxdy Zej5Cdzd{g d|fd}g d~fdg dfdg dfgdd Zѐdd ZҐdd ZӐdd ZԐdd Zej5jdd Zej5jej5jdd Zאdd Zؐdd Zِdd Zڐdd Zej5Cdd 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j5Cddej5Cdejej$ej*fej5Cdej.ej/dfdd Zej5Cddej5Cddej5Cdejej$ej*fej5Cdej.ej/dfdd Zej5Cddej5Cddd dd dd fdd Zߐdd ZdddZej5Cde# e$ e e% e e) e* edd edd eEdd eFdd fej5Cddee$ edee% fdd Zdd Zdd Zdd ZdS (      )
namedtupleN)	lru_cachepartial)ArrowNotImplementedErrorc                 C   s   g | ]\}}t |d r|qS )__arrow_compute_function__)hasattr).0namefunc r   [/var/www/html/Persson_Maskin/env/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   皙?皙?333333?皙?doublestring)abNdddeebinary)   a   b   cs   ddds   ee   )s   abcs   bcds   cdes   defs   efg            	      )r0   r.   r1   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
   descr7   argsr   r   r   test_exported_functions^   s&   
rD   c                  C   s,   t D ]} t| jd }|jdksJ qd S )Nr	   hash_aggregate)r:   r   get_functionr   kind)r
   arrow_fr   r   r    test_hash_aggregate_not_exportedx   s   rI   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valuesrG   VAR_POSITIONALVAR_KEYWORD)classesr   sigparamr   r   r   test_exported_option_classes   s   
rT   z<ignore:pyarrow.CumulativeSumOptions is deprecated as of 14.0c           	   	   C   s,  g t  t dt jt t jd ddt  t j	dddt 
 t  t jddt 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gddt  t   t j!ddddt j"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 j-dd&t .dd	d	t j/d'gddt 0 t 1dt 2 t 3d(d)dt j4g d*t 5 t 6 t 7d+t 8d,t 9 t :d-d.t j;dddd/t <d0d1}| j=j>j?d2 r^|@t d3 d4d5 |D }tAD ]3}||vr| j=j>j?d2 r|t jkrz	|@|  W qg tBy   tCDd6|  Y qgw qg|D ]F}||ksJ tE|F|jGjHsJ |I }t jJK|}||ksJ tE|Fd7rtE|Fd8sJ qtE|tE|ksJ qtL||d	d  D ]\}}||ksJ qtEt td	d9ks	J tEt  d:ksJ d S );NUTCFstart
skip_nullsr   count_from_zero
week_startTrX   patternr/   )	recursivefieldnamesr&   1r'   2)field_nullabilityfield_metadatafirstr   periodat_startnull_placementheightraise)unexpected_key_behavior	ascendingmax	sort_keysrk   
tiebreakerrr   rk   r0   towards_infinitysecond)week_starts_mondayd   r'   ro   rr   	min_countdummy
descending%Ysindices NFKC皙??rw   rZ   first_week_is_fully_in_yearr1   0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))Mr   ArraySortOptionsAssumeTimezoneOptionsCastOptionssafepar   r   CountOptionsDayOfWeekOptionsDictionaryEncodeOptionsRunEndEncodeOptionsElementWiseAggregateOptionsExtractRegexOptionsExtractRegexSpanOptionsFilterOptionsIndexOptionsscalarJoinOptionsListSliceOptionsListFlattenOptionsMakeStructOptionsKeyValueMetadataMapLookupOptionsMatchSubstringOptionsModeOptionsNullOptions
PadOptionsPairwiseOptionsPartitionNthOptionsPivotWiderOptionsQuantileOptionsRandomOptionsRankOptionsRankQuantileOptionsReplaceSliceOptionsReplaceSubstringOptionsRoundOptionsRoundBinaryOptionsRoundTemporalOptionsRoundToMultipleOptionsScalarAggregateOptionsSelectKOptionsSetLookupOptionsarraySkewOptionsSliceOptionsSortOptionsSplitOptionsSplitPatternOptionsStrftimeOptionsStrptimeOptionsStructFieldOptionsTakeOptionsTDigestOptionsTrimOptionsUtf8NormalizeOptionsVarianceOptionsWinsorizeOptionsWeekOptionsZeroFillOptionsconfigpyarrow
is_enabledappendrJ   r@   r>   failrepr
startswith	__class____name__	serializer   deserializezip)	requestoptionsrQ   r   r   bufdeserializedoption1option2r   r   r   test_option_class_equality   s*  
	



!#
$
%&'
()*+
,-./012
345678
9:
<?

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   rF   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)r0   r0   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   rF   loadsdumpsr   r	   r7   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   C  s    z+test_function_attributes.<locals>.<genexpr>)r   r   rF   r   Functionr	   r   r   r;   r   r   )r	   r
   r   r   r   r   r   test_function_attributes;  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/   r0   r1   r   r2   )r  r  Nr  TFN)r   r   	to_pylistequalr  r   r   r   test_input_type_conversionI  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 sJ |jdd dksJ tj|dd dksJ d S )Nr/   r0   r.   r1   r   r   r/   r0   r.   r1   Nr   r{   )r   r   sumas_pyr   r#  r  r   r   r   test_sum_arrayU  s   r)  c                 C   s  ddl m} tj| rtd| jntd| j}|d}|d}|d}tj|d|d	g| d
}|	 
 |ks=J |	 j|ksFJ tj|d|d	d g| d
}|	 
 |ks^J |	 j|ksgJ tj|d|dg| d
}|	 
 |ks~J |	 j|ksJ tj|d|dd g| d
}|	 
 |ksJ |	 j|ksJ tjd g| d
}|	 
 d u sJ |	 j|ksJ |j	dd
 |ksJ |j	ddj|ksJ tjg | d
}|	 
 d u sJ |	 j|ksJ |j	dd
 |ksJ |j	ddj|ksJ d S )Nr   Decimal&   L   5.79z10.000.001.234.56r   z8.77r{   )decimalr+  r   typesis_decimal128
decimal128scale
decimal256r   r&  r'  r   )r#  r+  max_precision_typeexpected_sumexpected_sum_overflowzeror  r   r   r   test_sum_decimal_arrayk  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sJ d S )Nr$  r   r   r/   r0   r.   r1   r   r   r{   )r   chunked_arrayr   r   r&  r'  
num_chunksr(  r   r   r   test_sum_chunked_array  s     r?  c                 C   s  ddl m} tj| rtd| jntd| j}|d}|d}ttj	|d|dg| d	g}t
| |ks>J t
|j|ksHJ ttj	|dg| d	tj	|dg| d	g}t
| |ksjJ t
|j|kstJ ttj	|dg| d	tj	g | d	tj	|dg| d	g}t
| |ksJ t
|j|ksJ tjd
| d	}|jdksJ t
| d u sJ t
|j|ksJ t
j|dd |ksJ t
j|ddj|ksJ d S )Nr   r*  r,  r-  r.  r/  r0  r1  r   r   r{   )r2  r+  r   r3  r4  r5  r6  r7  r=  r   r   r&  r'  r   r>  )r#  r+  r8  r9  r;  r  r   r   r   #test_sum_chunked_array_decimal_type  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sJ tj| ddd}t|dksJ t ddg} tj| dd}t|dksJ |d  dddksJ |d  dddksJ d S )Nr/   r/   r.   r1   r.   r   r   r   r/   r   r0   modecountr   r.   )r/   r/   r.   r1   r.   NFr\   r2   r{   r   rX   r|   T)r   r   r   rC  r;   r'  r  rC  r   r   r   test_mode_array  s,   
rH  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 )NrA  r   r   r/   r   r0   rB  rE  r.   r   )r   r=  r   r   rC  r;   r'  r>  rG  r   r   r   test_mode_chunked_array  s   
rI  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 typer8   r   )r>   r?   r   ArrowInvalidr=  r   )msgr   r   r   test_empty_chunked_array  s
   rL  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/   r0   r.   r1   r   r2      r   g      @r   )ddofr/   g      @)r   variancer'  datar   r   r   test_variance  s   rR  c                  C   `   g d} t |  tjdddksJ t j| dd d u s!J t j| dd d u s.J d S )	Nr/   r/   Nr0   g;f?绽|=relFr\   r1   r{   )r   skewr'  r>   approxrP  r   r   r   	test_skew      rZ  c                  C   rS  )	NrT  g      rU  rV  Fr\   r1   r{   )r   kurtosisr'  r>   rY  rP  r   r   r   test_kurtosis  r[  r]  zinput, expected)      ?g       @g      @g      D@NgIcݺ?gpՕ@)rX  r\  )r/   r0   (   gdV?r_  c                 C   sL   t j| ddd}t j| ddd}| |d ksJ | |d ks$J d S )NTF)rX   biasedrX  r\  )r   rX  r\  r'  )inputr  
arrow_skewarrow_kurtosisr   r   r   test_unbiased_skew_and_kurtosis#  s   
rd  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   re  )r/   r/   r0   r   r   NTignore_case)r/   r/   r0   r   r/   N)r   r%   r   large_stringr   r   r   count_substringtyoffsetr  resultr  r   r   r   test_count_substring3  s   rr  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)re  rf  baAacaarh  ri  Nr   za+)r/   r/   r.   r/   r   NTrj  )r/   r/   r0   r/   r/   N)	r   r%   r   rl  r   r   r   count_substring_regexr  rn  r   r   r   test_count_substring_regexA  s   ru  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)re  rf  rh  Nr   re  )r   r/   r^   Nza?b)r   r/   r   N)zab*zcAB*rh  zaB?zaB*Trj  )r   r/   r^   r^   )r   r/   r   r   )
r   r%   r*   rl  large_binaryr   r   find_substringr  find_substring_regex)ro  r  rq  r   r   r   test_find_substringO  s    ry  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)re  zba%rh  ca%dNz_a\%%)FTFTN)aBzbA%rh  r{  NTrj  F)FFFTN)r   r   r   
match_liker  r  rq  r  r   r   r   test_match_like`     r  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)re  abcrh  Nre  TTFN)u   áBu   Ábcrh  Nu   ábTrj  F)FFFN)r   r   r   match_substringr  r~  r   r   r   test_match_substringo  r  r  c                  C   rz  )	N)re  r  rh  cNz^a?b)TTTFN)r|  AbcBAr  NTrj  F)FFFFN)r   r   r   match_substring_regexr  r~  r   r   r   test_match_substring_regex~  r  r  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_trimr~  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   𝑓öõḍšr2   )r^   r/   r0   r.   c                       g | ]}|    qS r   r'  r   krW   stepstopr   r   r         z,test_slice_compatibility.<locals>.<listcomp>rW   r  r  )r   r   range	itertoolschainr   utf8_slice_codeunitsr  r  r  rq  r   r  r   test_slice_compatibility  s&   
r  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sJ qOqd S )N)    r+   s   as   ab s   abcs   abder  r2   r  r1   r   c                    r  r   r  r  r  r   r   r     r  z3test_binary_slice_compatibility.<locals>.<listcomp>r  r   )r   r   r  productr  r   binary_slicer  r   r*   r;   r   r'  )rQ  r  r  rq  item
fsb_scalaractualr   r  r   test_binary_slice_compatibility  s0   
r  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---r]   z-foozbar--r  r  r'   r/   
max_splitsr  foo---bTr  reversez---foor'   )r   r   r   split_patternr  r~  r   r   r   test_split_pattern  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 )Nr      foo  　	br  r  r  r/   r  r  
   foo  　	bTr  r  r'   )r   r   r   utf8_split_whitespacer  r~  r   r   r   test_split_whitespace_utf8     
r  c                  C   r  )Nr  r  r  r  )r  r  u   　r'   r/   r  r  r  Tr  u	    foo  　r'   )r   r   r   ascii_split_whitespacer  r~  r   r   r   test_split_whitespace_ascii  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 )Nr  r  z-+r  )r  r  r  r  r  r/   r  r  zfoo---bar--r  z"Cannot split in reverse with regexr8   r  T)r]   r  r  )r   r   r   split_pattern_regexr  r>   r?   NotImplementedErrorr~  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 sw   Y  t  }tt t j| |d}W d    n1 sw   Y  tjtdd t  }W d    d S 1 sw   Y  d S )N)r1   r   r2   Nr/   r/   r2   )minrp   r   Tr\   FrX   )r   rX   zmin_max takes 1 positionalr8   )r   min_maxr'  r   r>   r?   r@   r   )rQ  r   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   rF  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 sJ t j|| d d u sJ tdgdgg}t | du sJ t j|| d du sJ d S )	NFr   rF  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r1   r   N)TTFr  )r   is_validr  r>   r?   r@   rP  r   r   r   test_is_validW  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))
rK   rL   r   r   strr  quantilebinary_join_element_wisechooserandom)rR   r   r   r   test_generated_signatures  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   r  r   r   r   r     s    z/find_new_unicode_codepoints.<locals>.<listcomp>     )setr  r   utf8_is_printabler   r   r  	enumerateisprintabler   ord)newr  is_printableir  r   r   r   find_new_unicode_codepoints  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   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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  )is_alnumis_alphais_digit
is_numericis_lowerfunction_name)
r.  r/  is_ascii
is_decimalr0  r2  r1  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  r6  r   )replacecodepoints_ignoregetr  r  r  r9  r  r   r   r   r   r  r'  )	r3  r8  
arrow_namepy_nameignorer  r  ar
arrow_funcr   r   r   test_string_py_compat_booleanH  s"   
 rD  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sJ tj	| dd g d
ksJ t| d g dksJ t| d g d	ksJ t	| d g d
ksJ d S )N)Nr&   abcdr.   width)Nz a rE  )Nz  arE  )Nza  rE  )N   árE  )Nu    á rE  )Nu     árE  )Nu   á  rE  )
r   r   r   ascii_centertolist
ascii_lpad
ascii_rpadutf8_center	utf8_lpad	utf8_rpadr!  r   r   r   test_padb  s    rP  c                     s  t jt ju sJ g d} tddD ]* t| }t j| d } fdd| D }||ks;J d  d| d	| qtg d
}t j|t jdddd }|g dksYJ tg d
}t j|t jdddd }|g dksvJ tdg}tj	tj
dd t j|t jdddd W d    n1 sw   Y  tj	tj
dd t j|t jdddd W d    d S 1 sw   Y  d S )N)Ari  ABCr  -1z+1rb   Nr   r2   rF  c                    s"   g | ]}|d ur|  nd qS r   )zfillr   xrF  r   r   r   |     " z#test_utf8_zfill.<locals>.<listcomp>zMismatch at width=z: z vs )rb   z-2z+3r   u   💠)rG  paddingr  )u   💠💠💠💠1u   -💠💠💠2u   +💠💠💠3r1   rV  )xxx1z-xx2z+xx3r  zPadding must be one codepointr8   spamr  )r   
utf8_zfillutf8_zero_fillr  r   r   r  r   r>   r?   rJ  )examplesr  rq  r  r   rF  r   test_utf8_zfillt  s8   
$

"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  r1   )Nr  r&   re  r  rE  abcdeXX)rW   r  replacement)Nr  u   πu   πbu   πbθu   πbθdu   πbθde)r  r   r   	to_pandasastyper=   r<  r  nanr  slice_replacer   binary_replace_slicerJ  utf8_replace_slice)offsetsr  seriesrW   r  r  r  r   r   r   test_replace_slice  s.   
rj  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  r]   ra  )barzbarbardNr/   )r]   ra  max_replacements)barzfooro  N)rp  )r   r   r   replace_substringrJ  )rQ  rB  r   r   r   test_replace_plain  s   
rs  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\100rm  )ra  )r   r   r   replace_substring_regexrJ  )rQ  r  rB  r   r   r   test_replace_regex  s   rx  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&   rb   letterdigitr'   rc   z(?P<letter>[ab])(?P<digit>\d)r  )r   r   r   extract_regexrJ  rB  r  structr   r   r   test_extract_regex  s   r  c                  C   sp   t ddg} ddgddgdddgddgdg}tj| dd	}| |ks(J t| d}| |ks6J d S )
Nry  zb234zr   r/   r{  r0   r.   z(?P<letter>[ab])(?P<digit>\d+)r  )r   r   r   extract_regex_spanrJ  r  r   r   r   test_extract_regex_span  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  -rb   rc   r   a1bc2dr&   r'   r  d)r   r   r   binary_joinr  r*   list_)ar_listr  separator_arrayr   r   r   test_binary_join  s   $r  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 sJ tjddd}tj|d|i g dksJ tjddd|d d	ksJ tjd| d|d dksJ tjdd| |d d u sJ d S )Nr   )Nr&   r'   )r  Nr  )Nr  z--)NNb--dr&   r'   r  za-bskip)null_handlingr   )Nr&   r  r  r<  rZ  )r  null_replacement)Na-spamr  r  )r   r   r%   r   r  r  r'  r   )nullarrsr  r<  r   r   r   test_binary_join_element_wise  s\   r  )ro  rN   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 sw   Y  d S )Nr   r   r1   r0   Nr   r1   r0   r   r^   )
r   r   r   r   r  validater  r>   r?   
IndexError)ro  rN   r  indices_typer   rq  r  r   r   r   	test_take  s(   
"
"r  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   r  r   )r   r1   r0   )r   r   r  r  r  r  float32float64r>   r?   r  )r  r  r   rq  r  r   r   r   test_take_indices_types  s   
r  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'   r  r  e)fghr  j)r   r   r/   r2   r3   r0   )r&   r  r'   r  r  r  r/   r3   r0   r'   r  r  )r   r=  r   r  r  )r  r   rq  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/   r0   r   r/   r0   r&   r'   r  )r  )r   r/   r.   )r&   r'   r&   )
r   DictionaryArrayfrom_arraysr  r   r  r  
dictionaryr   r  )r  r  rq  r   r   r   test_take_dictionaryR  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 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   r0   r&   ra   )r/   r.   rM  Nr1   r   )r   r   r=  record_batchtabler;   r  column)r  chunked_arrbatchr  r   r   r   r   test_take_null_type]  s    r  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   p      z"test_drop_null.<locals>.<listcomp>)r   r   	drop_nullr  r  r;   r  r  )ro  rN   rq  r   r  r   r!  r   test_drop_nullk  s   r  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&   r  r  Nr  r  )r   r=  r  r  )r  expected_droprq  r   r   r   test_drop_null_chunked_arrayu  s   r  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&   Nr  r  Na'r  r&   r  r  )NNr  Nr  zb'r  )r   r  r   r  r  )r  rq  r  r   r   r   test_drop_null_record_batch}  s"   r  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}|  }||sJ d S )Nr  r&   r  r  r  )Nr  Nr'   r  r  r  r  r  rQ  BDza`)zc`d`Nr  )r   r  r   r  r  r=  )r  r  rq  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   r0   r&   r  r   )r   r   r=  r  r  r;   r  r  )r  r  r  r  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 sw   Y  d S )Nr   TFFTNdropnull_selection_behaviorr   r.   	emit_nullr   r/   r   r/   r   TFTmust all be the same lengthr8   )	r   r   r  r  r  r>   r?   r  
ValueErrorro  rN   r  maskrq  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  r  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&   r  r  TFNFTr  FTr  r  )r   r=  r   r  r  )r  r  expected_nullr  rq  r   r   r   test_filter_chunked_array  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&   Nr  r  r  r  r  r  r&   r  TFr  r  r&   Nr  )r   r  r   r  r  r=  )r  r  rq  r  chunked_maskr   r   r   test_filter_record_batch  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&   r  r  r  r  TF)NFTr  r  )r   r  r   r=  r  r  )r  r  r  r  rq  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 sw   Y  q~d S )Nr&   r  r  r  r  r  r  r  r8   T)r   r=  r  r   r  r>   r?   r  r  rJ  r   r@   )r  r  r  objr  r   filtr   r   r   test_filter_errors  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   r0   r&   r  TFr   )r   r   r=  r  r  r;   r  r  )r  r  r  r  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   rN   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/   r1   Nr1   )TFFNN)FTTNN)FFTNN)TFTNN)FTFNN)TTFNN)r   r   r  	not_equalless
less_equalgreatergreater_equal)r  r  arr1arr2rq  r   r   r   test_compare_array9  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sJ t
||}||g dsJ 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'   r  Nr'   FTFNr%   r   )TTTTTFTNTFFNr  FFTNFTTN)r   r   r   r   r  is_nullr  r  r  r  r  )r  r  r  r   rq  nascalarisnullr   r   r   test_compare_string_scalarX  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sJ t
||}||g dsJ 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/   r0   r.   Nr0   r  r   r   NNNNr  r  r  r  r  )r   r   r   r   r  r  r  r  r  r  r  )r  r  r  r   rq  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/   r0   r.   r1   r/   r0   )r.   r1   N)TTTTN)r   r   r=  r   r   r  )r  arr_chunkedarr_chunked2r  leftrightrq  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/   r0   r.   r1   r   r   r^   r/   r0   r.   )r/   r/   r1   r2   r   )r   r   r   r   r  r  r  rq  r  r   r   r   test_arithmetic_add  
   r  c                  C   r  )Nr   r  )r/   r.   r0   r0   r0   )r   r   r   subtractr  r  r   r   r   test_arithmetic_subtract  r  r  c                  C   r  )Nr   r  )r   r  r.   r      )r   r   r   multiplyr  r  r   r   r   test_arithmetic_multiply  r  r	  ro  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.   r1   r  r  N)r1   r1   r1   r   r  r  r  N)r.   r.   r.   r1   r  r  r  N)r1   r1   r1   r   r  r  r  N)r.   r.   r1   r1   r  r  r  N)r.   r1   r1   r   r  r  r  N)r.   r.   r1   r1   r  r  r  N)r.   r1   r1   r   r  r  r  N)r.   r1   r1   r1   r  r  r  N)r.   r.   r1   r   r  r  r  N)
downuptowards_zeroru   	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   r  r  )
ro  r
  r   rN   rmode_and_expectedr  r  r   rq  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):ˏAg\(\Ni,  r   r   r   r   r   r   Nr%  r   r   r   r   ir   N)r%  r1   r.   r   r  ir  Nr%  r  @r  r  ̌Ar  N)r%  r  gp=
ף@r  gGz	g(\AffffffN)r  r^   r   r/   r0   r  r  T	equal_nanr  )	r   r   r   r
  r  testingassert_allcloser   r   )rN   ndigits_and_expectedr  r  r   rq  r   r   r   
test_round  s$   r1  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 sw   Y  qd S )Nr$  r   )r%  r  r)  r  r  r*  r+  Nr    r(  r0   )r%  r1   r1   r1   r  ir  Nr   r'  rx   r1   r   r&  r  r  Tr,  r   r  g$z"Rounding multiple must be positiver8   r  l   l+?R zis not a valid multiple type)r   r   r7  r   r   r   r  r  r.  r/  r   r>   r?   rJ  r=   r@   )rN   multiple_and_expectedr  r  r   rq  r   r   r   test_round_to_multiple  s<   
r3  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@gv|@r4  r5  r6  )r  r  r^   r   r/   r0   r.   )r      i^  i  g     ^@g
ףp=Rm@r6  r   r   r^   g      @r  r  r  )r   r   r   r  r   round_binaryr   )rN   scalesr  expect_zero
expect_infr6  r   r   r   test_round_binary  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
}||sJ | jdd}t g d}||sJ d S )Nr  )FFFT)TTTFr/   r0   r.   FTrd  )FFFTF)nan_is_null)FFFTT)r   r   r  r  r   r  r=  r   r~  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/   r0   r.   rd  )FFFNT)rb   rc   Nr   z"has no kernel matching input typesr8   r+      bbN)
r   r   r   is_nanr  r%   r>   r?   r   rv  )r  rq  r  r;  r   r   r   test_is_nanC  s    

"rB  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}|	|sJ t g d} | d }t g d}|	|sJ d S )Nr/   r0   Nr1   r   r   +Array arguments must all be the same lengthr8   r  )r&   bbNccc)r&   rE  rF  r?  )r+   r@  s   ccc)r   r   r   r>   r?   rJ  	fill_nullr  r   r  rv  )r  
fill_valuerq  r  r   r   r   test_fill_nullT  s0   



rI  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 )NrC  r   r   )r/   r0   r   r1   5r   )r   r   r   rG  r  r3  is_unsigned_integerr   r>   r?   r  r@   )r#  r  rH  rq  r  r   r   r   test_fill_null_arrayq  s   

rL  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}||sJ d S )	Nr   r   )Nr0   r.   r1   )r   r0   r.   r1   r/   r0   r1   r   )r   r   r=  r   rG  r  )r#  rH  r  rq  r  r   r   r   test_fill_null_chunked_array  s*   


rM  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  )TTFTr  r  r  )	r   r   r   and_
and_kleeneor_	or_kleenexorinvertr5   r   r   r   test_logical  s    rT  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'   r  r'   )r   r   dictionary_encoder   dictionary_decode)r   dictionary_arraydictionary_array_decoder   r   r   test_dictionary_decode  s   
rY  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 sw   Y  tj| dddt jdgddksJ tj| |dt jdgddksJ t tdddtdddg} t jddgdd}t| d|ksJ 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    0E*ztimestamp[ms]r0   )r.   r1   r   rb   rc   )34rJ  )r   r   r   r   r   r>   r?   r@   castr  r   rJ  datetime
large_listr  r:  r   )r  r   allow_overflow_optionsr  r   r   r   	test_cast  sF   $$rc  
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_  )rd  dtr  r   r   r   test_identity_cast_dates  s   rg  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 sw   Y  d S )Nelementr0   rN   )r/   r0   r.   r1   r   r2   r   )r/   NNr1   r   r2   )NNNNNNr.   z&Size of FixedSizeList is not the same.r8   )r   r  r`   r   FixedSizeListArrayr  r   r_  r   r  r>   r?   libArrowTypeError)rd  	cast_typedtyper   fslerr_msgr   r   r   test_fsl_to_fsl_cast  s,   "rp  DecimalTypeTraits)r	   factorymax_precisionFloatToDecimalCase)	precisionr6  	float_val	decimal32	decimal64   r5  r,  r7  r-  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)valr6  rv  r   r   r   largest_scaled_float_not_above  s   r}  c                 C   s0   t | tsJ t| }|| }t|}|S )zS
    Return a float representation (possibly approximate) of `int_val**-scale`
    )r   intr2  r+  scalebr   )int_valr6  unscaledscaledrv  r   r   r   scaled_float(  s
   
r  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.
    r4   r/   r.   r   r0   rz  r^  r   N)r  rt  rp   r}  )float_tyrs  mantissa_digitsru  r6  epsilon
abs_maxvalr   r   r   $integral_float_to_decimal_cast_cases3  s   r  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.
    r4   r/   r.   r   r0   r   N)r  rp   r}  rt  )r  rs  r  ru  r6  r  
abs_minvalr  r   r   r    real_float_to_decimal_cast_casesB  s   
r  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/   r2   r   r1      r   N)r  Randomr  	randranger  rt  )r  rs  rru  r6  r  r  rv  r   r   r   "random_float_to_decimal_cast_casesQ  s   

r  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   r0   r1   zfloat_val = z, precision=z, expected = z, actual = z, diff_digits = )ru  precr2  ROUND_HALF_EVENroundingcreate_decimal_from_floatquantizer+  r  r6  r   r   r   r_  r'  abs)
r  rv  
decimal_tydecimal_ctxrs  r  r   r  diff_digitslimitr   r   r   check_cast_float_to_decimal_  s(   

r  r  )idsr  c                 C      | j S r   r	   vr   r   r   <lambda>z      r  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   )r2  localcontextrs  r  rv  rr  ru  r6  )r  r  r  ctxcaser   r   r   test_cast_float_to_decimalw  s   

"r  decimal_traitsc                 C   r  r   r  r  r   r   r   r    r  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sJ  J tdD ]V}|d	d| }t|||}t||sJ |d	krt|d|  }n
t|d|   }t||}ttj|| d
| }t||}t|| dksJ qq~W d   dS 1 sw   Y  dS )zL
    Test float-to-decimal conversion against exactly generated values.
    +      5   )i   )ii  r0   r   r   r   r   r/   N)r  r  r   r  r  r  mathfloorlog10rs  log2r2  r  r  rp   ceilr  r  rr  r  ldexpr   r+  r
  r  r   r_  r   r'  r  )r  r  r  np_float_tymantissa_bitsfloat_exp_minfloat_exp_maxr  rs  r  ru  	min_scale	max_scaler6  r  	float_expr  mantissarv  r  expected_as_intr  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 sw   Y  tj| dddd}|t jg dt ddksJ d S )N)z5/1/2020Nz
12/13/1900z%m/%d/%Yr   )formatuniti  r   r/   il        r   r  z%d/%m/%YT)r  r  error_is_nullz"Failed to parse string: '5/1/2020'r8   z%Y-%m-%dF)NNN)	r   r   r   strptimer`  	timestampr>   r?   rJ  )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}
|	|
sJ tj|td
|d}t	j|t	
|d d}	t||d |	j}
|	|
sJ tj|td
|d}t	
d}t	j||d}	t|d|	j}
|	|
sJ 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 sw   Y  tjtjdd t	j|t	
|d d W d    d S 1 sw   Y  d S )N)z2018-03-10 09:00z2038-01-31 12:23N)CETrU   r   )z%az%Az%wz%dz%bz%Bz%mz%yr   z%Hz%Iz%pz%M%z%Zz%jz%Uz%Wz%%z%Gz%Vz%uwin32)z%cz%xz%Xr   msusnsr   r  z%Y-%m-%dT%H:%M:%Sr   r  z%Sr  z%S.%fC)localez.Timezone not present, cannot convert to stringr8   r  )sysplatformextendpdto_datetimetz_localizer   r   r  r   r   strftimer_  r   r  r>   r?   rJ  )times	timezonesformatstimezonetsr  tsafmtr   rq  r  r   r   r   test_strftime  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|sJ t "|!t|j
j"sJ 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|sJ t |!t|sJ t (|!t|d sJ t |!t|d sJ t |!t|sJ t )|!t|sJ t *|!t|j
d sJ |j
j+r|j
j+t,j-j.u rd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   )VersionrU   r  )tzi  g&.>r3   iso_yeariso_weekiso_day_of_weekz1.1.0c                 S      |   d S Nr   isocalendarrV  r   r   r   r  E	      z,_check_datetime_components.<locals>.<lambda>r   c                 S   r  )Nr/   r  r  r   r   r   r  F	  r  c                 S   r  )Nr0   r  r  r   r   r   r  G	  r  yearweekday)fieldsFc                 S   s   |   jdkS r  )dstsecondsr  r   r   r   r  y	  s    r/   rY   r  Tr   )5pyarrow.vendored.versionr  r  r  r  
tz_convert	to_seriesr   r   r  rf  microsecond
nanosecondr
  r`   r   __version__maprc  r  StructArrayr  r  monthr  	dayofweek	dayofyearquarterhourminuterv   rN   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  rv   r  r  r  day_of_week_optionsweek_optionsr   r   r   _check_datetime_components4	  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)rU   America/ChicagoAsia/Kolkata	Etc/GMT-4	Etc/GMT+4zAustralia/Broken_Hillr   z-Timezone database is not installed on Windows)r  r   r   r   r>   r  )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/   r0   r3   2   i  4   rM  )r  r  r  r  )	r   r   r`  r  r   r  r  r  r  )r  r  rq  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 sw   Y  q*td}t
jtdd
 tj||d W d    n1 sw   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 sw   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   )rU   r  r  r  zalready have a timezone:r8   zEurope/Brusselsssznot found in timezone databaseEurope/Brusselsrm   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?   rJ  r  )ts_typer  r  r  ambiguous_arraynonexistent_arrayr  r   tar  rq  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   







r1  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rtj||dd}| j|| }|jjd u rt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rd}t| }	| j|}
t	j
|	|
 t| }	| j|}
t	j
|	|
 t| }	| j|}
t	j
|	|
 d S d S )Nr  r  r  r   r  r  r  r  r  r  rv   r  r   r  )r  r  r  rv   r  r   r  r  T)calendar_based_originr  )ceil_is_strictly_greater1D)r   r   r  r   r   ceil_temporalrb  rf  r  r  r.  assert_array_equalfloor_temporalr  round_temporalr
  r   r  wherer  	Timedelta)r  rN   r  unit_shorthandgreater_unitr(  value	frequencyr   rq  r  originr   r   r   _check_temporal_rounding
  s   




rA  r2  c                 C   sb   d}g d}t dd |D }t|||  g d}|D ]}|jdj|}t|||  qd S )N)r/   r0   r.   r1   r   r2   rM  r   r  r  <      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  	TimestamprU  r   r   r   r   
  r  z'test_round_temporal.<locals>.<listcomp>)r  zAmerica/New_Yorkr  r  r  zPacific/Marquesasr  rU   rU   )r  SeriesrA  rf  r  r  )r  rN   r  r  r  r  ts_zonedr   r   r   test_round_temporalw
  s   rG  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/   r0   r.   NNr.   
only_validrC  	only_nullr0   r   r   z*"something else" is not a valid count moder8   zsomething else)r   r   r   rD  r'  r>   r?   r  r!  r   r   r   
test_count
  s   "rL  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sJ d S )N)r   r/   Nr.   r1   r   r   r0   r^   r1   r.   rW   r/   )rW   end)	r   r   r   r   indexr   r'  r   r=  r!  r   r   r   
test_index
  s   & rP  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 sJ tfdd|D sJ d S )Nc                       g | ]} |  qS r   r   r  rQ  r   r   r   r   
      z'check_partition_nth.<locals>.<listcomp>c                    rQ  r   r   r  rR  r   r   r   
  rS  ri   c                 s       | ]}|d u V  qd S r   r   r   r  r   r   r   r   
      z&check_partition_nth.<locals>.<genexpr>c                 s   rT  r   r   rU  r   r   r   r   
  rV  c                 3   s     | ]}|d u p| kV  qd S r   r   rU  pr   r   r   
      c                 3   s    | ]}| kV  qd S r   r   rU  rW  r   r   r   
  rV  c                 3   s    | ]}| kV  qd S r   r   rU  rW  r   r   r   
  rV  c                 3   s     | ]}|d u p| kV  qd S r   r   rU  rW  r   r   r   
  rY  )r  r;   sortedlistr  r   )rQ  r   pivotrk   until_pivotafter_pivotr   )rQ  r   rX  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 )Nrx      r   )r\  at_endz8'partition_nth_indices' cannot be called without optionsr8   )
r[  r  r  shuffler   partition_nth_indicesr_  r>   r?   r  )rQ  r\  r   r   r   r   test_partition_nth
  s   
"rd  c                  C   sV   t tdd gd  } t|  dD ]}dD ]}tj| ||d}t| ||| qqd S )Nr   )r   rM  r     )ri   ra  )r\  rk   )r[  r  r  rb  r   rc  r_  )rQ  r\  rk   r   r   r   r   !test_partition_nth_null_placement
  s   
rf  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sJ 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 )Nr~   rz   r   r   sort_indicesslicer;   r  )select_k_indicesr  orderstable_sortsorted_indiceshead_k_indicesr  r  r   r   r   validate_select_k
  s   z.test_select_k_array.<locals>.validate_select_kr/   r0   Nr   r   r0   r1   )r   ro   r~   r  rr   )r  r   ro   r0   r}   r  r~   ro   rz   F)r   r   r   select_k_unstabletop_k_unstablebottom_k_unstabler   )ro  r  r  rk  rq  r   r   r   test_select_k_array
  s8   

rx  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 sw   Y  tjt	dd tj|dg d	 W d    n1 sw   Y  tjt	dd tj||dgd	 W d    n1 sw   Y  tjt	dd tj||dgd	 W d    d S 1 sw   Y  d S )NFc                 S   sZ   t j||d}|dt| }|r| |ksJ d S t ||}t || }||ks+J d S )Nrz   r   rg  )rj  tblrr   rl  rm  rn  r  r  r   r   r   ro  
  s   z.test_select_k_table.<locals>.validate_select_k)r/   r0   r   )r/   r   r/   r5   rq  r&   ro   rr  rz   r&   ro   ry   r&   r   r'   z4'select_k_unstable' cannot be called without optionsr8   z,select_k_unstable requires a nonnegative `k`r^   z2select_k_unstable requires a non-empty `sort_keys`r0   not a valid sort orderr&   nonscending.Invalid sort key column: No match for.*unknownunknownro   rt  )
r   r  r   ru  r`   rv  rw  r>   r?   r  )ro  r  r  rq  r   r   r   test_select_k_table	  sV   



"r  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 )Nrp  r.   r   r/   r0   ro   )rk  r   r/   r   r.   r0   ri   )rk  rk   r0   r/   r   r.   rj   r|  r8   r~  )r   r   r   array_sort_indicesr  r>   r?   r  r  rq  r   r   r   test_array_sort_indices<  s$   
"r  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 )Nrp  r  rs  rz   r}   r  ri   rt   r  rj   r  )r   r   r   rh  r  r   r  r   r   r   test_sort_indices_arrayO  s2   



r  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 sw   Y  tjtdd tj| dgd W d    n1 sw   Y  tjtdd tj| dgd W d    d S 1 sw   Y  d S )N)r/   r/   Nr   )r/   r   r   r/   r5   rz  rz   r  r&   ro   ri   rt   )r0   r.   r   r/   r{  ry   r  r  rj   z"Must specify one or more sort keysr8   r  r  r|  r}  )	r   r  r   rh  r  r`   r>   r?   r  )r  rq  r   r   r   test_sort_indices_tablej  s@   "r  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/   r0   Nr/   r0   r.   r/   r.   N	value_set)TFTTFTTr  rX   )TFFTFTr/   r.   )r   r   r   is_inr  r  r   r   r   
test_is_in  s   r  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 )Nr  r  r  )r   Nr0   r   Nr/   Tr  )r   NNr   Nr/   r/   r.   r\   )r   r   r   index_inr  r  r   r   r   test_index_in  s   r  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sJ tj| g ddd}| g dksJ tj| g dd	d}| g dksJ tj| g ddd}| g dksJ tj| g dd
d}| g dksJ tj| g dd
d}| g dksJ 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)interpolationr0   higherr.   nearestmidpointlinearr/   )g      ?      ?g      ?q)      ?      ?g      ?)r  r  )r/   r/   r/   )r0   r0   r0   )r  r  r  r/   r/   r0   z Quantile must be between 0 and 1r8   皙?z"not a valid quantile interpolationzzz)r   r   r   r  r  r>   r?   r  r  r   r   r   test_quantile  sD   
$r  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$  r  r/   r0   r.   r1   )r   r  r/   r  )r/   r  r1   )r   r   r   tdigestr  r=  r  r   r   r   test_tdigest  s   
"
"r  c                  C   sD   t d gt  d} | t  }|t dgt  ks J d S )NFr   )r   r   bool_rG  r_  r   r  r   r   r   test_fill_null_segfault  s   r  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sJ tj| |t d
}|t g dksJ tj| |dd}|t g dksJ tj| |dd}|t g dksJ d S )Nr  )r.   r/   r0   r0   r.   N)r.   r0   r.   r  )r.   r.   r.   Tr\   )r0   r.   r.   r  F)r/   r0   N)r   r   r   max_element_wiser  r   )r  r  arr3rq  r   r   r   test_min_max_element_wise  s6   

r  rW   )r  g      %@g      %rX   )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|rt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 qqd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   Nr     r   r  r  )r/   r.   r2   )r   Nr  r  )r   NNNrV   )      ?g      @g     @@r/   r0   r  r1   r   r.   )r  g      @g     @Fzero_copy_onlyr&   arrowr  rM  )r~  r   r   r   r   r   r=  r  r   cumulative_sumr   r  r  r  r  rd  r.  assert_array_almost_equalto_numpyr>   r?   rJ  rW   rX   	start_intstartsstrtarraysexpected_arraysr  r  rq  r  r   r   r   test_cumulative_sum  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|rt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 qqd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/   Nr  r   r/   r  r   )r/   r0   r2   )r/   Nr  rx   )r/   NNNrV   )r  r  r  r0   r  r1   r.   )r  g      @g     @*@Fr  r&   r  r  rM  )r~  r   r   r   r   r   r=  r  r   cumulative_prodr  r  r  r  r  rd  r.  r  r  r>   r?   rJ  r  r   r   r   test_cumulative_prodP  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}
|	|
sJ 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|rt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 qqdtddfD ]#}ttj tj	g d|d W d    n	1 s0w   Y  qd S )Nr   )r0   r/   r.   r   r1   r2   )r0   r/   Nr   r1   N)r0   r/   N)r   r1   N)r0   r0   r.   r   r   r2   )r0   r0   Nr   r   N)r0   r0   NNNNrV   g    eFr\   )r  ?r  ffffff@皙@@r  r  r  r  r  )r  r  r  r  r  r  )r  r  r  r  r  r  )r  r  Nr  r  N)r  r  NNNNr  r&   r  r  r  rM  )r~  r   r   r   r   r   r=  r  r   cumulative_maxr  r  r  r  r  rd  r.  r  r  r>   r?   rJ  r  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}
|	|
sJ 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|rt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 qqdtddfD ]#}ttj tjg d|d W d    n	1 s0w   Y  qd S )Nr   )r   r2   r1   r0   r.   r/   )r   r2   Nr0   r.   N)r   r2   Nr  )r   r   r1   r0   r0   r/   )r   r   Nr0   r0   N)r   r   NNNNrV   g    eAFr\   )      @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  NNNNr  r&   r  r  r  rM  )r~  r   r   r   r   r   r=  r  r   cumulative_minr  r  r  r  r  rd  r.  r  r  r>   r?   rJ  r  r  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&   )r   rb   r  r   )field_names)r  r   r  za b cz0 1r  rD  r8   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_struct  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sJ d S )N)r  r/   )r  r0   )noner.   )r  r   )r  rM  r   )r/   NNr   N)r/   NNrM  Nr/   r   rM  r  rf   lastr   )	r   map_r:  r   r   r  r   
map_lookupr   )ro  r  result_firstresult_last
result_allr   r   r   test_map_lookup  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sJ t|d| ksJ t|td| ksJ tj|d	d	gd|ksJ t|d|ksJ t|dg| ksJ t|g |ksJ tj	t j
dd t|d W d    n1 sw   Y  tj	t j
dd t|d W d    n1 sw   Y  tj	t j
dd t|d W d    d S 1 sw   Y  d S )Nr1   r   r2   r   )r  Nr  r&   r'   r  z.c.bs   .c.br/   )r-   r'   )r  r'   z.a)r&   r   )r/   r/   r   zNo match for FieldRefr8   r  z.c.fooz.a.foo)r   r   r   r  r  r   struct_fieldr`   r>   r?   rJ  )r&   r'   r  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_whenE  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#   r0   r5   r!   r1   gffffff@r2   gp=
ף?r.   ffffff?g333333?r   r/   )	r   r  r  r   r  r   computelist_elementr  )element_type	list_typel1l2listsrO  rq  r  r   r   r   test_list_elementL  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   )	r  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 )	NrH  r.   rI  rJ  rK  r/   r   r1   )r   r   r   r  r'  r!  r   r   r   test_count_distinct_optionsd  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 formr8   NFZ)r   r   r   utf8_normalizer>   r?   r  r!  r   r   r   test_utf8_normalizem  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)systemr  is   abcdefr   initializerr   c                 S   s   g | ]}t td  qS )rx   tupler   r  r  r  r   r   r   r     s    ztest_random.<locals>.<listcomp>r   c                 S   s&   g | ]}t tjd |d d qS )rx   rM  r  r  r  r   r   r   r     s    rx   rM  r  r  c                 s   s    | ]}t d V  qdS )r   N)osurandomr  r   r   r   r     r   ztest_random.<locals>.<genexpr>c                 S   s"   g | ]}t tjd |d qS )rx   r  r  r  r   r   r   r     s    zJinitializer should be 'system', an integer, or a hashable object; got \[\]r8   )r   r  r   r   r  r  r;   r  r=   r  r>   r?   r@   )r  r  initializersr   r   r   test_randomy  s*   
"r  ztiebreaker,expected_valuesr  )r.   r/   r1   r2   r1   r2   r/   rp   )r.   r0   r   rM  r   rM  r0   rf   r.   r/   r1   r2   r   rM  r0   dense)r0   r/   r.   r1   r.   r1   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  rz  333333@Nr  Nrz  ro   ra  rq   r  r   )r   r   r   r   rankr   r  )rs   expected_valuesr  rank_optionsrq  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 sw   Y  d S )Nr  r   r   r  ry   rz   ri   rj   )r   r.   r2   r/   rM  r0   r1   r   )r.   r1   r/   r2   r0   rM  r   z'"NonExisting" is not a valid tiebreakerr8   ra  NonExistingrq   )
r   r   r   r   r  r  r   r>   r?   r  r  r  rq  expected_at_startexpected_descendingr   r   r   test_rank_options  s0   


"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 W d    d S 1 sw   Y  d S )NNr/   Nr0   N)r  r    r  r"   r  r   r  ry   rz   ri   rj   )r"   r  r"   r   r"   r   )r  r"   r  r    r  r|  r8   XXX)
r   r   r  r   rank_quantiler  r   r>   r?   r  r	  r   r   r   test_rank_quantile_options  s&   


"r  c                  C   s   t g d} tg d}t| }| |ksJ tj| ddd}| |ks+J tj| t d}| |ks<J tg d}tj| dd	d}| |ksSJ tj| tjdd	dd}| |ksgJ d S )
Nr  )ł?g2m6<r  łr  ra  ro   )rk   rr   r  )r  g2m6<?r  r  r  ri   r   )r   r   r>   rY  r   rank_normalr  r   r  r   r   r   test_rank_normal_options  s*   
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/   r  Tr%   r&   r0   Fr   r\  r   rM  )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atanhr  signbit_wise_notbit_wise_andbit_wise_orbit_wise_xorrA  	is_finitecoalescer_  r   isinr  copy)r  r&   r'   r  r  r  r  r  r  r  r  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_arrowI  s
   rA  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|}||sJ qW| d D ]}||}tj|}||}tj|}||sJ q| d d }||}tj|}|tdd	isJ td	}	|		g d
}|	d	k|	dkB |	dkB }
||}tj|}t|
t|ksJ ||}tj|}||sJ d S )Nr  r  r  r  r  r  r   r  r/   r  r0   r.   )
r=  to_substraitr   r>  from_substraitr  r  r   r   r5  )exprsr  r?  
serializedr   serialized_againdeserialized_again	expr_normr  r&   targetr   r   r   'test_expression_serialization_substraitQ  sN   










rJ  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 sw   Y  d S )Nr   r/   TFr%   r`   r+   r'   )nestedr`   rK  r   r0   r  r  )r   r   r`   r   r  r_  r5  r>   r?   r@   rJ  r=   )
r;  r  truefalser%   r`   nested_mixed_typesnested_fieldnested_field2r  r   r   r   test_expression_construction  s.   







"rQ  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 Truer8   )r   r   r>   r?   r  r   )rL  rM  r   r   r   !test_expression_boolean_operators  s    


"rR  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 argumentsr8   )r   r`   r  r   r
  r   r   r   r>   r?   r@   r=   )r`   rK  r   r   r   test_expression_call_function  s   
"rS  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/   r0   )	r   r  r>   r?   rj  rk  r   r_  r   )r  r   r   r   test_cast_table_raises  s   "rT  zstart,stop,expectedr  r  r2   NNr  r/   r0   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 )NrW  r  r  rU  r.   r1   r   r2   TzZUnable to produce FixedSizeListArray from non-FixedSizeListArray without `stop` being set.r8   c                    s"   g | ]}|r|d d   n|qS r   r   )r   r  r  r   r   r     rW  z0test_list_slice_output_fixed.<locals>.<listcomp>)r   r   r  r   r_  r>   r?   rJ  r   
list_slicer   	list_sizer  )rW   r  r  r  rd  r  r  rC   rK  rq  pylistr   rX  r   test_list_slice_output_fixed  s0   "
r\  z
start,stop))r   N)r   r/   )r   r0   rV  )r0   r1   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 )NrW  r  r  rU  r.   r1   r   r2   Freturn_fixed_size_listc                    s&   g | ]}|d ur|  nd qS r   r   )r   r  r  r   r   r     s   & z3test_list_slice_output_variable.<locals>.<listcomp>)	r   r   r  r   r_  r   rY  r   r  )
rW   r  r  rd  r  rQ  r  rq  r[  r  r   r  r   test_list_slice_output_variable  s.   r_  return_fixed_sizer  r   c                   C      t t dt  S Ncolr   r  r`   r   r   r   r   r   r  !      c                   C   s   t t dt  dS )Nrc  r/   rd  r   r   r   r   r  "  rS  c                   C   ra  rb  )r   ra  r`   r   r   r   r   r   r  #  re  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   rY  r   r`   r	   )r`  r   r  outr   r   r   $test_list_slice_field_names_retained  s    rg  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 sw   Y  d S )Nr/   z@`start`(.*) should be greater than 0 and smaller than `stop`(.*)r8   r^   r0   r   z`step` must be >= 1, got: r   rX  rS  )	r   r   r  r   r>   r?   rJ  r   rY  )r  rK  r   r   r   test_list_slice_bad_parameters.  s$   "rh  c                 C   sP   g d}t j|| d}tj||d}t|}|j|jksJ ||s&J d S )N)r/   r/   r/   r0   r0   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  )rd  run_end_encode_optsrN   r  encodeddecodedr   r   r   check_run_end_encode_decodeB  s   
rn  r   c                 C   s   t | | d S r   )rn  )rd  r   r   r   r   test_run_end_encodeK  s   ro  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}||sJ t jg dt  d} tjt j	dd t jj
| d	d W d    d S 1 sw   Y  d S )N)r/   r0   r.   Nr1   r   )Nr/   r/   NNr/   r/   rg   )NNr0   Nr/   Nr0   r   )r^   r^   NNr^   Nr^   )   rp  NNrp  Noverflowr8   )r   r   r  pairwise_diffr  r   r   r>   r?   rJ  pairwise_diff_checkedr  r   r   r   test_pairwise_diffh  s,   "rt  c                  C   s2  ddg} t g dg d}| i ksJ t g dg d| }| d ddks,J t| ddgks8J t jg dg d| d}| d ddksOJ tjtdd	 t jg dg d| d
d}W d    n1 snw   Y  tjtdd	 t jg dg d| d}W d    d S 1 sw   Y  d S )NrG  rl   )rl   rG  depth)r   Nr  r   )rG  rl   )	key_nameszUnexpected pivot key: depthr8   rm   )rv  rn   z(Encountered more than one non-null value)rl   rG  rl   )r   pivot_widerr'  r[  r>   r?   KeyErrorr  )rv  rq  r   r   r   test_pivot_wider  s.   "ry  c                  C   s`   t g d} t| dd}| g dksJ tj| tjdddd}| g dks.J d S )N)
r   r1   r3   r   r   r.   rM  r0   r/   r2   r    g?)
r   r1   r   r   r   r.   rM  r0   r0   r2   )lower_limitupper_limitr  )r   r   r   	winsorizer  r   r  r   r   r   test_winsorize  s   r}  )r/   r   )collectionsr   r`  r2  	functoolsr   r   rK   r  r  r  r>   r  r  r  numpyr  ImportErrorpandasr  r   r   pyarrow.computer  r   pyarrow.libr   pyarrow.substrait	substraitpasrZ  __dict__r   r:   rJ   r   r   r   r   r   r   r  r  numerical_arrow_typesr  r*   r  ra  r  all_array_typesrD   rI   rT   markfilterwarningsr   r   r   r   r   r   r  r  r  r  r  r"  parametrizer)  r5  r7  r<  r?  r@  rH  rI  rL  rR  rZ  r]  rY  rd  rr  ru  ry  r  r  r  r  r  r  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=  rD  rP  r^  rj  rs  rx  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  r3  r<  r>  rB  rI  rL  rM  rT  rY  rc  date32date64rg  rp  rq  rt  rw  rx  decimal_type_traitsr}  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r1  rA  rG  rL  rP  r_  rd  rf  rx  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=  rA  rJ  rQ  rR  rS  rT  r%   r\  r_  rg  rh  rn  r   float16r   ro  rt  ry  r}  r   r   r   r   <module>   s  










*(
e


 
*
 
)
	"	e"


	

&


	
	

$
#




'

	 
>KSZh)3$+"4477%	
!M=
"




	



	