
    Pi/g                       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	 d dlZn# e$ r dZY nw xY w	 d dlZn# e$ r dZY nw xY wd dlZd dlmZ d dlmZmZ 	 d dlmZ n# e$ r dZY nw xY wd  eej         !                                          D             Z"d  eej         !                                          D             Z# ej$                     ej%                     ej&                     ej'                     ej(                     ej)                     ej*                     ej+                    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j.        d          g df ej/         ej$                              ddgddgd
dgdd d!ggf ej0         ej%                              dgg d"d
dgdd d!ggf ej1        d# ej$                    fd$ ej$                    fg          ddd%dddd%dd
dd%gfgZ2d& Z3d' Z4d( Z5ej6        7                    d)          d*             Z8d+ Z9	 dd,Z:d- Z;d. Z<d/ Z=d0 Z>ej6        j        d1             Z?d2 Z@d3 ZAd4 ZBd5 ZCej6        D                    d6e,          d7             ZEej6        D                    d6 ejF        dd           ejG        dd          g          d8             ZHej6        D                    d6e,          d9             ZIej6        D                    d6 ejF        dd           ejG        dd          g          d:             ZJd; ZKd< ZLd= ZMd> ZNd? ZOd@ ZPej6        D                    dAg dB ejQ        dC           ejQ        dD          dEfg dF ejQ        dG          ddEfddHgdddEff          dI             ZRdJ ZSdK ZTdL ZUdM ZVdN ZWdO ZXdP ZYdQ ZZdR Z[dS Z\dT Z]dU Z^dV Z_dW Z`dX ZadY ZbdZ Zcd[ Zdd\ Ze e            d]             Zfd^d_hZgh d`Zhh daZih dbZjh dcZieiejz  egz  egejeiehddZkej6        D                    deg df          ej6        D                    dgdhdig          dj                         Zldk Zmdl Znej6        j        dm             Zodn Zpdo Zqdp Zrdq Zsdr Ztds Zuej6        D                    dte2          du             Zvdv Zwdw Zxej6        D                    dxdydzg          d{             Zyd| Zzej6        D                    dte2          d}             Z{d~ Z|d Z}d Z~d Zej6        D                    dte2          d             Zej6        j        ej6        D                    dte2          d                         Zd Zd Zd Zd Zd Zd Zd Zej6        D                    dddg          d             Zej6        D                    dddg          d             Zej6        D                    dddg          d             Zd Zd Zd Zd Zej6        D                    dddg          d             Zej6        j        d             Zej6        j        d             Zd Zd Zd Zd Zej6        D                    d6e,          d             Zej6        D                    d6e,          d             Zd Zd Zd Zd Zej6        D                    d ej                     ej                    g          d             Zej6        D                    de,          d             Z edd          Z edd          Z edej        d            edej        d           edejF        d           edejG        d          gZd Zd Zd Zd Zd Zd Zej6        j        ej6        D                    d ej+                    ge          ej6        D                    ded           ej6        D                    deeegg d          d                                                 Zej6        j        ej6        D                    d ej*                     ej+                    ge          ej6        D                    ded           d                                     ZdÄ Zej6        j        ej6        j        dĄ                         Zd dńZej6        j        dƄ             ZdǄ Zej6        D                    dg dɢ          dʄ             Zej6        j        ej6        j        d˄                         Zd̄ Zej6        j        ej6        D                    ddͦ          ej6        j        d΄                                     Zdτ ZdЄ Zdф Zd҄ Zdӄ ZdԄ ZdՄ Zdք Zdׄ Zd؄ Zdل Zdڄ Zdۄ Zd܄ Zd݄ Zdބ Zej6        j        ej6        D                    dd          ej6        D                    dd          d                                     Zej6        j        ej6        D                    dd          ej6        D                    dd          d                                     Zej6        j        ej6        D                    dd          ej6        D                    dd          d                                     Zej6        j        ej6        D                    dd          ej6        D                    dd          d                                     Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej6        D                    ddg dfdg dfdg dfdg dfg          d             Zd Zd Zd Zd Zej6        j        d             Zej6        j        ej6        j        d                          Zܐd Zݐd Zސd Zߐd Zej6        D                    dd dg dg dg ddgfd ddgdgdgdgfd dddgdd
gddgdgfdddgd
gdgdgfddddgddgddgdgff          ej6        D                    d	d
          ej6        D                    dej        ej%        ej+        f          ej6        D                    dej/        ej0        df          d                                                 Zej6        D                    dd          ej6        D                    d	d
          ej6        D                    dej        ej%        ej+        f          ej6        D                    dej/        ej0        df          d                                                 Zej6        D                    dd          ej6        D                    dd d d f          d                         Zd Zd dZej6        D                    d ej$                     ej%                     ej                     ej&                     ej                     ej*                     ej+                     ej        dd            ej        dd            ejF        dd            ejG        dd           f          ej6        D                    dd ej         ej%                               ej        d           ej         ej&                              f          d                         Zd Zd Zd ZdS (!      )
namedtupleN)	lru_cachepartial)ArrowNotImplementedErrorArrowIndexErrorc                 8    g | ]\  }}t          |d           |S )__arrow_compute_function__)hasattr).0namefuncs      n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pyarrow/tests/test_compute.py
<listcomp>r   2   s=     4 4 4dDt12244 4 4    c                     g | ]D\  }}t          |t                    r*|t          j        u(t	          |t          j                  B|ES  )
isinstancetypepcFunctionOptions
issubclass)r   r   clss      r   r   r   6   s]     . . .T33. 	2%%%3*++ 	& %%%r   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            	      )r5   r3   r6   r+   r,   r+   r,   c                  R   t           } t          |           dk    sJ | D ]}|j        }|d         r|d         }|dk    r!|t          u rt	                      gdz  }nt	                      g|z  }t          j        t          d          5   ||  d d d            n# 1 swxY w Y   d S )Nr"   options_requiredarityr   r3   zBGot unexpected argument type <class 'object'> for compute functionmatch)exported_functionslenr	   Ellipsisobjectpytestraises	TypeError)	functionsr   descr=   argss        r   test_exported_functionsrJ   ^   s   
 #Iy>>R  ."# 	 WA::HHH:>DDHH:%D]9"IJ J J 	 	 D$KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   	BB	"B	c                  r    t           D ].} t          j        | j        d                   }|j        dk    sJ /d S )Nr   hash_aggregate)r@   r   get_functionr	   kind)r   arrow_fs     r    test_hash_aggregate_not_exportedrP   x   sK     # 0 0/$"A&"IJJ|//////0 0r   c                      t           } t          |           dk    sJ | D ]I}t          j        |          }|j                                        D ]}|j        |j        |j        fvsJ Jd S )Nr"   )	exported_option_classesrA   inspect	signature
parametersvaluesrN   VAR_POSITIONALVAR_KEYWORD)classesr   sigparams       r   test_exported_option_classesr\      s    %Gw<<2 9 9 $$^**,, 	9 	9E:e&:&+&7&9 9 9 9 9 9	9	9 9r   z<ignore:pyarrow.CumulativeSumOptions is deprecated as of 14.0c           
         g t          j                    t          j        d          t           j                            t          j                              t          j        d d          t          j                    t          j	        dd          t          j
                    t          j                    t          j        d          t          j        d          t          j        d          t          j                    t          j        t          j        d	                    t          j                    t          j        dd
d	d          t          j        d          t          j        ddgddgt          j        ddi          t          j        ddi          g          t          j        t          j        d	          d          t          j        d          t          j                    t          j                    t          j        d          t          j        d	          t          j        d	d          t          j        dgd          t          j                    t          j                     t          j!        ddd          t          j"        dd          t          j#        dd	d          t          j$        dd          t          j%        dd           t          j&        d           t          j'        d	d!d"          t          j(        d#d           t          j)                    t          j*        dd$g%          t          j+        t          j,        d	g                    t          j-        d&          t          j.        dd	d	          t          j/        d'gd          t          j0                    t          j1        d          t          j2                    t          j3        d(d)d          t          j4        g *          t          j5                    t          j6                    t          j7        d+          t          j8        d,          t          j9                    t          j:        d-d.          t          j;        ddd/          t          j<        d0d1          }| j=        j>        j?        d2         r'|@                    t          j        d3                     d4 |D             }t          D ]s}||vrm| j=        j>        j?        d2         rV|t           j        k    rF	 |@                     |                       L# t          $ r t          jD        d5|            Y ow xY wt|D ]}||k    sJ t          |          F                    |jG        jH                  sJ |I                                }t           jJ        K                    |          }||k    sJ t          |          F                    d6          r%t          |          F                    d7          sJ t          |          t          |          k    sJ t          ||d	d                    D ]\  }}||k    sJ t          t          j        t          j        d	                              d8k    sJ t          t          j                              d9k    sJ d S ):NUTCFstart
skip_nullsr   count_from_zero
week_startTra   patternr4   )	recursivefieldnamesr+   1r,   2)field_nullabilityfield_metadatafirstr   periodat_startnull_placementheightraise)unexpected_key_behavior	ascendingmax	sort_keysrt   
tiebreakerr{   rt   r5   towards_infinitysecond)week_starts_mondayd   r,   rx   r{   	min_countdummy
descending%Ysindices NFKC皙??r   rc   first_week_is_fully_in_yearr6   0timezone_dataEurope/Ljubljanac                 ,    h | ]}t          |          S r   r   )r   options     r   	<setcomp>z-test_option_class_equality.<locals>.<setcomp>   s    222tF||222r   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appendrR   rF   rD   failrepr
startswith	__class____name__	serializer   deserializezip)	requestoptionsrY   r   r   bufdeserializedoption1option2s	            r   test_option_class_equalityr      s   =
=
 ''= 	BGII&&= 	4E:::	=
 	= 	Ea@@@= 	"$$= 	  = 	&$777= 	y))= 	"9--= 	= 		!%%= 	= 	Ar1d++=  	...!=" 	gw/04d|-/-@#s-L-L-/-@#s-L-L-N	O 	O 	O#=* 	BIaLL'22+=, 	 ++-=. 	/=0 	1=2 	a3=4 	!$$$5=6 	q<<<7=8 	hZIII9=: 	;=< 	==> 	&0U	D 	D 	D?=B 	.8	: 	: 	:C=F 	q!S))G=H 	"3,,I=J 	-..K=L 	011M=N 	8EEEO=P 	!#'9::Q=R 	!##S=T 	!(:';<<<U=V 	BHaSMM**W=X 	###Y=Z 	1a  [=\ 	/0LLL]=^ 	_=` 	y))a=b 	c=d 	4d++e=f 	b)))g=h 	i=j 	k=l 	sm=n 	''o=p 	q=r 	D#&&s=t 	$38	: 	: 	:u=x 	1c""y=G~ ~(9 Er/0BCCDDD22'222G& 
C 
C w'2?C r///Cssuu%%%% C C CACAABBBBBC  6 6F||&&v'7'@AAAAA  )55c::%%%% <<""#9:: 	6%%001DEEEEEE<<4#5#55555555 " "'!!!!!	!--..2OOOOO#%%&&AB B B B B Bs   U::!VVc                      t          t          j                              dk    sJ dt          j                    v sJ d S )Nr"   add)rA   r   list_functionsr   r   r   test_list_functionsr      sD    r ""##b((((B%''''''''r   c                     t          j        |           }t          ||          sJ |j        }||k    sJ |t	          |j                  k    sJ t          fd|j        D                       sJ d S )Nc              3   8   K   | ]}t          |          V  d S N)r   )r   kerexpected_ker_clss     r   	<genexpr>z&_check_get_function.<locals>.<genexpr>   s.      IISz#/00IIIIIIr   )r   rM   r   num_kernelsrA   kernelsall)r   expected_func_clsr   min_num_kernelsr   ns     `   r   _check_get_functionr      s    ?4  Dd-.....ADL!!!!!!IIIIDLIIIIIIIIIIr   c                  R    t          dt          j        t          j        d           d S )Nr      )r   r   ScalarFunctionScalarKernelr   r   r   test_get_function_scalarr     s!    r0"/1EEEEEr   c                  R    t          dt          j        t          j        d           d S )Nuniquer   )r   r   VectorFunctionVectorKernelr   r   r   test_get_function_vectorr    s!    ""3R_aHHHHHr   c                  R    t          dt          j        t          j        d           d S )Nmeanr   )r   r   ScalarAggregateFunctionScalarAggregateKernelr   r   r   "test_get_function_scalar_aggregater    s-     :0!5 5 5 5 5r   c                  R    t          dt          j        t          j        d           d S )Nhash_sumr4   )r   r   HashAggregateFunctionHashAggregateKernelr   r   r    test_get_function_hash_aggregater    s-    
B$<.3 3 3 3 3r   c                     t          j        g d          } t          j        g d          }|                     |          }t	          j        d| |gt          j                              }t          j        g d          }|                    |          sJ |                    |          sJ t	          j        | |t          j                              }|                    |          sJ d S )N)foobarbaz)r5   r5   r4   take)memory_pool)r  r  r  )r   r   npr  r   call_functiondefault_memory_poolequals)arrr   result1result2expectedresult3s         r   #test_call_function_with_memory_poolr    s    
((((
)
)Chyyy!!GhhwGvW~+-+A+C+CE E EGx---..H>>(#####>>(#####gc70F0H0HIIIG>>(#######r   c                 V   t          j                    D ]}t          j        |          }|                     |                     |                    }t          |          t          |          u sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ d S r   )	r   r   rM   loadsdumpsr   r   r=   r   pickle_moduler   r   reconstructeds       r   test_pickle_functionsr$  $  s    !## = =t$$%++M,?,?,E,EFFM""d4jj0000!TY...."dj0000(D,<<<<<<= =r   c                     t          j                    D ]W}	 t          t           |          }n# t          $ r Y %w xY w|                     |                     |                    }||u sJ Xd S r   )r   r   getattrAttributeErrorr  r   r!  s       r   test_pickle_global_functionsr(  /  s    !## % %	2t$$DD 	 	 	H	 &++M,?,?,E,EFF$$$$$% %s   -
::c                  j   t          j                    D ]} t          j        |           }t          |t           j                  sJ |j        | k    sJ |j        }|j        t          |          k    sJ t          d |D                       sJ t          |           |D ]}t          |           d S )Nc              3   J   K   | ]}t          |t          j                  V  d S r   )r   r   Kernel)r   r   s     r   r   z+test_function_attributes.<locals>.<genexpr>C  s.      AA#:c29--AAAAAAr   )r   r   rM   r   Functionr   r   r   rA   r   r   )r   r   r   r   s       r   test_function_attributesr-  ;  s    !## 	 	t$$$,,,,,yD    ,3w<<////AAAAAAAAAAT


 	 	CIIII		 	r   c                  8   t          j        ddgdd g          } |                                 dd gk    sJ t          j        ddgd          } |                                 ddgk    sJ t          j        g dd                                          g dk    sJ d S )	Nr4   r5   r6   r   r7   )r  r  Nr  TFN)r   r   	to_pylistequalr  s    r   test_input_type_conversionr3  I  s    
&!Q!T
#
#C==??q$i''''
&!Q

C==??q!f$$$$8((( $9;;*=*=*=> > > > > >r   
arrow_typec                    t          j        g d|           }|                                                                dk    sJ t	          j        |                                          dk    sJ t          j        g d|           }|                                                                dk    sJ t	          j        |                                          dk    sJ t          j        d g|           }|                                                                J t	          j        |                                          J |                    d                                          dk    sJ t	          j        |d                                          dk    sJ t          j        g |           }|                                                                J |                    d                                          dk    sJ t	          j        |d                                          dk    sJ d S )Nr4   r5   r3   r6   r   r"   r4   r5   r3   r6   Nr   r   )r   r   sumas_pyr   r4  r  s     r   test_sum_arrayr;  U  s   
(<<<j
1
1
1C7799??""""6#;;"$$$$
(%%%J
7
7
7C7799??""""6#;;"$$$$
(D6

+
+
+C7799??$$$6#;;&&&77Q7%%''1,,,,6####))++q0000
(2J
'
'
'C7799??$$$77Q7%%''1,,,,6####))++q000000r   c                 X   ddl m} t          j                            |           rt          j        d| j                  nt          j        d| j                  } |d          } |d          } |d          }t          j         |d           |d	          g| 
          }|	                                
                                |k    sJ |	                                j        |k    sJ t          j         |d           |d	          d g| 
          }|	                                
                                |k    sJ |	                                j        |k    sJ t          j         |d           |d          g| 
          }|	                                
                                |k    sJ |	                                j        |k    sJ t          j         |d           |d          d g| 
          }|	                                
                                |k    sJ |	                                j        |k    sJ t          j        d g| 
          }|	                                
                                J |	                                j        |k    sJ |	                    d          
                                |k    sJ |	                    d          j        |k    sJ t          j        g | 
          }|	                                
                                J |	                                j        |k    sJ |	                    d          
                                |k    sJ |	                    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   r8  r9  r   )r4  r>  max_precision_typeexpected_sumexpected_sum_overflowzeror  s          r   test_sum_decimal_arrayrO  k  so    8!!*--	1b**+++]2z/00 
 76??L#GG,,76??D (GGFOOWWV__5J
G
G
GC7799??,,,,7799>/////
(GGFOOWWV__d;*
M
M
MC7799??,,,,7799>///// (GGFOOWWV__5J
G
G
GC7799?? 555557799>/////
(GGFOOWWV__d;*
M
M
MC7799?? 555557799>/////
(D6

+
+
+C7799??$$$7799>/////77Q7%%''4////77Q7$(:::::
(2J
'
'
'C7799??$$$7799>/////77Q7%%''4////77Q7$(:::::::r   c                    t          j        t          j        g d|           g          }t          j        |                                          dk    sJ t          j        t          j        ddg|           t          j        ddg|           g          }t          j        |                                          dk    sJ t          j        t          j        ddg|           t          j        g |           t          j        ddg|           g          }t          j        |                                          dk    sJ t          j        d|           }|j        d	k    sJ t          j        |                                          J t          j        |d	
                                          d	k    sJ d S )Nr6  r   r"   r4   r5   r3   r6   r   r   r   )r   chunked_arrayr   r   r8  r9  
num_chunksr:  s     r   test_sum_chunked_arrayrS    s   

BH\\\
CCCD
E
EC6#;;"$$$$


!Qj)))28QF+L+L+L  C 6#;;"$$$$


!Qj)))
*%%%
!Qj)))  C
 6#;;"$$$$

2J
/
/
/C>Q6#;;&&&6####))++q000000r   c           	         ddl m} t          j                            |           rt          j        d| j                  nt          j        d| j                  } |d          } |d          }t          j        t          j	         |d           |d          g| 	          g          }t          j        |                                          |k    sJ t          j        |          j        |k    sJ t          j        t          j	         |d          g| 	          t          j	         |d          g| 	          g          }t          j        |                                          |k    sJ t          j        |          j        |k    sJ t          j        t          j	         |d          g| 	          t          j	        g | 	          t          j	         |d          g| 	          g          }t          j        |                                          |k    sJ t          j        |          j        |k    sJ t          j        d
| 	          }|j        dk    sJ t          j        |                                          J t          j        |          j        |k    sJ t          j        |d                                          |k    sJ t          j        |d          j        |k    sJ d S )Nr   r=  r?  r@  rA  rB  rC  rD  r   r   r   )rE  r>  r   rF  rG  rH  rI  rJ  rQ  r   r   r8  r9  r   rR  )r4  r>  rK  rL  rN  r  s         r   #test_sum_chunked_array_decimal_typerU    s    8!!*--	1b**+++]2z/00 
 76??L76??D

Hggfoowwv7jIII	
 C
 6#;;,....6#;;11111


''&//"444
''&//"444  C 6#;;,....6#;;11111


''&//"444
*%%%
''&//"444  C
 6#;;,....6#;;11111

2J
/
/
/C>Q6#;;&&&6#;;111116####))++t33336####(,>>>>>>>r   c                  l   t          j        g dd          } t          j        |           }t	          |          dk    sJ |d                                         dddk    sJ t          j        | d          }t	          |          dk    sJ |d                                         dddk    sJ |d                                         d	ddk    sJ t          j        g d          } t	          t          j        |                     dk    sJ t          j        g d
d          } t          j        | d          }t	          |          dk    sJ t          j        | d          }t	          |          dk    sJ t          j        | dd          }t	          |          dk    sJ t          j        ddg          } t          j        | d          }t	          |          dk    sJ |d                                         dddk    sJ |d                                         dddk    sJ d S )Nr4   r4   r3   r6   r3   r   r#   r   r4   r   r5   modecountr   r3   )r4   r4   r3   r6   r3   NFre   r7   r   r   ra   r   T)r   r   r   rY  rA   r9  r  rY  s     r   test_mode_arrayr^    s$   
(%%%G
4
4
4C73<<Dt99>>>>7==??q155555573!Dt99>>>>7==??q15555557==??q1555555
(2G
$
$
$Crws||!!!!
((((w
7
7
7C735)))Dt99>>>>73!$$$Dt99>>>>735A666Dt99>>>>
(D%=
!
!C73!Dt99>>>>7==??uq9999997==??ta88888888r   c                  j   t          j        t          j        g dd          g          } t          j        |           }t          |          dk    sJ |d                                         dddk    sJ t          j        | d          }t          |          dk    sJ |d                                         dddk    sJ |d                                         d	ddk    sJ t          j        d
d          } | j        dk    sJ t          t          j        |                     dk    sJ d S )NrW  r#   r   r4   r   r5   rX  r[  r3   r   )r   rQ  r   r   rY  rA   r9  rR  r]  s     r   test_mode_chunked_arrayr`    s0   

BH%7%7%7gFFFG
H
HC73<<Dt99>>>>7==??q155555573!Dt99>>>>7==??q15555557==??q1555555

2G
,
,
,C>Qrws||!!!!!!r   c                      d} t          j        t          j        |           5  t          j        g            d d d            n# 1 swxY w Y   t          j        g t          j                               d S )Nz@cannot construct ChunkedArray from empty vector and omitted typer>   r   )rD   rE   r   ArrowInvalidrQ  r   )msgs    r   test_empty_chunked_arrayrd    s    
LC	rc	2	2	2  
               Rbgii((((((s   AAAc                     g d} t          j        |                                           dk    sJ t          j        | d                                          dk    sJ t          j        | d                                          dk    sJ d S )N)r4   r5   r3   r6   r   r7      r   g      @r   )ddofr4   g      @)r   variancer9  datas    r   test_variancerk    s    ###D;t""$$,,,,;t!$$$**,,4444;t!$$$**,,333333r   c                  6   g d} t          j        |                                           t          j        dd          k    sJ t          j        | d                                          J t          j        | d                                          J d S )	Nr4   r4   Nr5   g;f?绽|=relFre   r6   r   )r   skewr9  rD   approxri  s    r   	test_skewrs    s    ??D74==  FM2C$O$O$OOOOO74E***0022:::741%%%++--55555r   c                  6   g d} t          j        |                                           t          j        dd          k    sJ t          j        | d                                          J t          j        | d                                          J d S )	Nrm  g      rn  ro  Fre   r6   r   )r   kurtosisr9  rD   rr  ri  s    r   test_kurtosisrv    s    ??D;t""$$d(F(F(FFFFF;t...4466>>>;tq)))//1199999r   zinput, expected)      ?g       @g      @g      D@NgIcݺ?gpՕ@)rq  ru  )r4   r5   (   gdV?rx  c                     t          j        | dd          }t          j        | dd          }|                                |d         k    sJ |                                |d         k    sJ d S )NTF)ra   biasedrq  ru  )r   rq  ru  r9  )inputr  
arrow_skewarrow_kurtosiss       r   test_unbiased_skew_and_kurtosisr~  #  sz     4>>>J[4FFFN&!11111!!Xj%9999999r   c                     t          j                    t          j                    ft          j                    t          j                    ffD ]\  } }t          j        g d|           }t          j        |d          }t          j        g d|          }||k    sJ t          j        |dd          }t          j        g d|          }||k    sJ d S )N)abcababcabbaABNr   r  )r4   r4   r5   r   r   NTignore_case)r4   r4   r5   r   r4   N)r   r*   r    large_stringr#   r   r   count_substringtyoffsetr  resultr  s        r   test_count_substringr  3  s    )++rxzz2/++RXZZ8: 
" 
"Vh???bIII#C..8111???6!!!!#C4@@@8111???6!!!!!
" 
"r   c                     t          j                    t          j                    ft          j                    t          j                    ffD ]\  } }t          j        g d|           }t          j        |d          }t          j        g d|          }|                    |          sJ t          j        |dd          }t          j        g d|          }|                    |          sJ d S )N)r  r  baAacaar  r  Nr   za+)r4   r4   r3   r4   r   NTr  )r4   r4   r5   r4   r4   N)	r   r*   r    r  r#   r   r   count_substring_regexr  r  s        r   test_count_substring_regexr  A  s    )++rxzz2/++RXZZ8: 
' 
'VhAAAKKK)#t448111???v&&&&&)#tFFF8111???v&&&&&&
' 
'r   c                     t          j                    t          j                    t          j                    t          j                    fD ]} t          j        g d|           }t          j        |d          }|                                g dk    sJ t          j	        |d          }|                                g dk    sJ t          j        g d|           }t          j        |dd	
          }|                                g dk    sJ t          j	        |dd	
          }|                                g dk    sJ d S )N)r  r  r  Nr   r  )r   r4   rg   Nza?b)r   r4   r   N)zab*zcAB*r  zaB?zaB*Tr  )r   r4   rg   rg   )r   r4   r   r   )
r   r*   r/   r  large_binaryr   r   find_substringr0  find_substring_regex)r  r  r  s      r   test_find_substringr  O  sR   y{{BIKK):):BO<M<MN 2 2h000r:::"3--!!%5%5%55555(e44!!___4444h333"==="34@@@!!^^^3333(eFFF!!\\\111112 2r   c                     t          j        g d          } t          j        | d          }t          j        g d          }|                    |          sJ t          j        g d          } t          j        | dd          }t          j        g d          }|                    |          sJ t          j        | dd          }t          j        g d          }|                    |          sJ d S )	N)r  zba%r  ca%dNz_a\%%)FTFTN)aBzbA%r  r  NTr  F)FFFTN)r   r   r   
match_liker  r  r  r  s      r   test_match_liker  `  s    
(444
5
5C]3))Fx88899H??6"""""
(444
5
5C]3d;;;Fx88899H??6"""""]3e<<<Fx999::H??6"""""""r   c                     t          j        g d          } t          j        | d          }t          j        g d          }|                    |          sJ t          j        g d          } t          j        | dd          }t          j        g d          }|                    |          sJ t          j        | dd          }t          j        g d	          }|                    |          sJ d S )
N)r  abcr  Nr  TTFN)u   áBu   Ábcr  Nu   ábTr  F)FFFN)r   r   r   match_substringr  r  s      r   test_match_substringr  o  s    
(,,,
-
-CT**Fx11122H??6"""""
(...
/
/CU===Fx11122H??6"""""U>>>Fx33344H??6"""""""r   c                     t          j        g d          } t          j        | d          }t          j        g d          }|                    |          sJ t          j        g d          } t          j        | dd          }t          j        g d          }|                    |          sJ t          j        | dd          }t          j        g d          }|                    |          sJ d S )	N)r  r  r  cNz^a?b)TTTFN)r  AbcBAr  NTr  F)FFFFN)r   r   r   match_substring_regexr  r  s      r   test_match_substring_regexr  ~  s    
(111
2
2C%c622Fx77788H??6"""""
(111
2
2C%c6tDDDFx77788H??6"""""%c6uEEEFx:::;;H??6"""""""r   c                     t          j        g d          } t          j        |           }t          j        g d          }|                    |          sJ t          j        g d          } t          j        |           }t          j        g d          }|                    |          sJ t          j        g d          } t          j        | d          }t          j        g d          }|                    |          sJ t          j        | d          }t          j        g d          }|                    |          sJ 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  s      r   	test_trimr    sG   
(666
7
7C$S))Fx00011H??6"""""
(666
7
7C%c**Fx66677H??6"""""
(666
7
7C\#*555Fx11122H??6"""""\#z**Fx11122H??6"""""""r   c            	         t          j        g d          } t          dd          D ]t          j        t          dd          d g          D ]udD ]pt          j        fd| D                       }t          j        |           }|                    |          sJ t          j        |           |k    sJ qvd S )N) u   𝑓u   𝑓öu   𝑓öõu   𝑓öõḍu   𝑓öõḍšr7   )rg   r4   r5   r3   c                 J    g | ]}|                                           S r   r9  r   kr`   stepstops     r   r   z,test_slice_compatibility.<locals>.<listcomp>  s<     %3 %3 %3)* &'WWYYuT$%? %3 %3 %3r   r`   r  r  )r   r   range	itertoolschainr   utf8_slice_codeunitsr  )r  r  r  r`   r  r  s      @@@r   test_slice_compatibilityr    s9   
(UUU
V
VCr1 
L 
LOE"aLL4&99 		L 		LD- L L8 %3 %3 %3 %3 %3 %3.1%3 %3 %3 4 40u4d< < <v......s/4dDB BEKL L L L LL		L
L 
Lr   c            
        	 g d} t          j        |           }t          j        t	          dd          t	          dd          t	          dd                    D ]\  	dk    rt          j        	fd|D                       }t          j        |	          }|                    |          sJ t          j        |	          |k    sJ | D ]}t          j        |t          j	        t          |                    	          }|	         }t          j        |	          }|j        t          j	        t          |                    k    sJ |                                |k    sJ  d S )
N)r   r0   s   as   ab s   abcs   abder  r7   r  r6   r   c                 J    g | ]}|                                           S r   r  r  s     r   r   z3test_binary_slice_compatibility.<locals>.<listcomp>  s<     + + +!" WWYYuT$7 + + +r   r  r   )r   r   r  productr  r   binary_slicer  r   r/   rA   r   r9  )
rj  r  r  r  item
fsb_scalaractualr`   r  r  s
          @@@r   test_binary_slice_compatibilityr    s   DDDD
(4..C&.uR||/4R||/4R||= = . .tT 1998 + + + + + +&)+ + + , ,u4d4 4 4v&&&&&sE466&@@@@ 	. 	.D4biD		.B.BCCCJE$tO,H_ZdCCF;")CMM":":::::<<>>X-----	.. .r   c                     t          j        ddg          } t          j        | d          }t          j        ddgg dg          }|                    |          sJ t          j        | dd	          }t          j        ddgd
dgg          }|                    |          sJ t          j        | ddd          }t          j        ddgddgg          }|                    |          sJ d S )N-foo---bar--
---foo---b---rf   z-foozbar--r  r  r,   r4   
max_splitsr  foo---bTr  reversez---foor,   )r   r   r   split_patternr  r  s      r   test_split_patternr    s   
(NL1
2
2Cc5111Fx&'*,<,<,<=>>H??6"""""c5Q777Fx&'*RO<==H??6"""""c5QEEEFx&'*XsO<==H??6"""""""r   c                     t          j        ddg          } t          j        |           }t          j        ddgg dg          }|                    |          sJ t          j        | d          }t          j        ddgdd	gg          }|                    |          sJ t          j        | dd
          }t          j        ddgddgg          }|                    |          sJ d S )Nr      foo  　	br  r  r  r4   r  r  
   foo  　	bTr  r  r,   )r   r   r   utf8_split_whitespacer  r  s      r   test_split_whitespace_utf8r    s    
(I01
2
2C%c**Fx%)9)9)9:;;H??6"""""%ca888Fx%".>)?@AAH??6"""""%caFFFFx%&#788H??6"""""""r   c                     t          j        ddg          } t          j        |           }t          j        ddgg dg          }|                    |          sJ t          j        | d          }t          j        ddgdd	gg          }|                    |          sJ t          j        | dd
          }t          j        ddgddgg          }|                    |          sJ d S )Nr  r  r  r  )r  r  u   　r,   r4   r  r  r  Tr  u	    foo  　r,   )r   r   r   ascii_split_whitespacer  r  s      r   test_split_whitespace_asciir    s    
(I01
2
2C&s++Fx%)C)C)CDEEH??6"""""&sq999Fx%".>)?@AAH??6"""""&sq$GGGFx%.#)>?@@H??6"""""""r   c                     t          j        ddg          } t          j        | d          }t          j        g dg dg          }|                    |          sJ t          j        | dd          }t          j        d	d
gd	dgg          }|                    |          sJ t          j        t          d          5  t          j        | ddd          }d d d            d S # 1 swxY w Y   d S )Nr  r  z-+r  )r  r  r  r  r  r4   r  r  zfoo---bar--r  z"Cannot split in reverse with regexr>   r  T)rf   r  r  )r   r   r   split_pattern_regexr  rD   rE   NotImplementedErrorr  s      r   test_split_pattern_regexr    sU   
(NL1
2
2C#C666Fx///1A1A1ABCCH??6"""""#C!<<<Fx"m,r9o>??H??6"""""	*A
C 
C 
C < <'1d< < << < < < < < < < < < < < < < < < < <s   C''C+.C+c                     g d} t          j        |           }|                                dddk    sJ t          j        | t          j                              }|                                dddk    sJ t          j        | t          j        d                    }|                                dddk    sJ t          j        | t          j        d                    }|                                d d dk    sJ t          j        | d	di          }|                                d d dk    sJ t          j        | d          }|                                d d dk    sJ t	          j        t                    5  t          j        | t          j                    d
          }d d d            n# 1 swxY w Y   t          j                    }t	          j        t                    5  t          j        | |          }d d d            n# 1 swxY w Y   t	          j        t          d          5  t          j                    }d d d            d S # 1 swxY w Y   d S )N)r6   r   r7   Nr4   r4   r7   )minry   r   Tre   Fra   )r   ra   zmin_max takes 1 positionalr>   )r   min_maxr9  r   rD   rE   rF   r   )rj  r   r   s      r   test_min_maxr    s"   D

4A7799!,,,,,,

4!:!<!<===A7799!,,,,,,

4!:d!K!K!KLLLA7799!,,,,,,

4!:e!L!L!LMMMA7799T222222 	
4,!6777A7799T222222

4E***A7799T222222 
y	!	! I IJ"355%I I II I I I I I I I I I I I I I I
 nG	y	!	! . .JtW---. . . . . . . . . . . . . . . 
y(D	E	E	E  JLL                 s6   )F<<G G 3HHH<II!$I!c                  
   t          j        dd          } t          j        g d          }t          j        |                                          J t          j        |d                                          du sJ t          j        ||                                           du sJ t          j        g d          }t          j        |                                          d	u sJ t          j        ||                                           d	u sJ t          j        g d
          }t          j        |                                          du sJ t          j        ||                                           J d S )NFr   r\  r   r   r   r  )FNTT)FNF)r   r   r   r   anyr9  r   r+   s     r   test_anyr  )  sn    '5AFFFG
&!!!A6!99??$$$6!q!!!''))U22226!W%%%++--6666
$$$%%A6!99??$$$$6!W%%%++--5555
%%%&&A6!99??%%%%6!W%%%++--55555r   c                     t          j        dd          } t          j        g d          }t          j        |                                          J t          j        |d                                          du sJ t          j        ||                                           du sJ t          j        ddg          }t          j        |                                          du sJ t          j        ||                                           du sJ t          j        dd g          }t          j        |                                          du sJ t          j        ||                                           J t          j        dgdd gg          }t          j        |                                          du sJ t          j        ||                                           J t          j        dgdgg          }t          j        |                                          du sJ t          j        ||                                           du sJ d S )	NFr   r\  r   r   r   Tr  )r   r   r   r   r   r9  rQ  r  s     r   test_allr  <  s5    '5AFFFG
&!!!A6!99??$$$6!q!!!''))T11116!W%%%++--5555
%A6!99??%%%%6!W%%%++--6666
$A6!99??$$$$6!W%%%++--555
4&4,/00A6!99??$$$$6!W%%%++--555
4&5'*++A6!99??%%%%6!W%%%++--666666r   c                      g d} t          j        |                                           g dk    sJ t          j        t
                    5  t          j        | d            d d d            d S # 1 swxY w Y   d S )Nr6   r   N)TTFr  )r   is_validr0  rD   rE   rF   ri  s    r   test_is_validr  W  s    <<D;t&&((,?,?,?????	y	!	! ( (
D$''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   A00A47A4c                  N   t           j        j        t          j        d          k    sJ t           j        j        t          j        d          k    sJ t           j        j        t          j        d          k    sJ t           j        j        t          j        d          k    sJ d S )Naf          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.

        Examples
        --------
        >>> import pyarrow as pa
        >>> import pyarrow.compute as pc
        >>> arr1 = pa.array([1, 1, 2, 2, 3, 2, 2, 2])
        >>> pc.min_max(arr1)
        <pyarrow.StructScalar: [('min', 1), ('max', 3)]>

        Using ``skip_nulls`` to handle null values.

        >>> arr2 = pa.array([1.0, None, 2.0, 3.0])
        >>> pc.min_max(arr2)
        <pyarrow.StructScalar: [('min', 1.0), ('max', 3.0)]>
        >>> pc.min_max(arr2, skip_nulls=False)
        <pyarrow.StructScalar: [('min', None), ('max', None)]>

        Using ``ScalarAggregateOptions`` to control minimum number of non-null values.

        >>> arr3 = pa.array([1.0, None, float("nan"), 3.0])
        >>> pc.min_max(arr3)
        <pyarrow.StructScalar: [('min', 1.0), ('max', 3.0)]>
        >>> pc.min_max(arr3, options=pc.ScalarAggregateOptions(min_count=3))
        <pyarrow.StructScalar: [('min', 1.0), ('max', 3.0)]>
        >>> pc.min_max(arr3, options=pc.ScalarAggregateOptions(min_count=4))
        <pyarrow.StructScalar: [('min', None), ('max', None)]>

        This function also works with string values.

        >>> arr4 = pa.array(["z", None, "y", "x"])
        >>> pc.min_max(arr4)
        <pyarrow.StructScalar: [('min', 'x'), ('max', 'z')]>
        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   test_generated_docstringsr  `  s    : 42 4" 4" 4 4 4 4l 6>X_ .      " &(/ ; + +    $ 9 '1 '! '! ' ' ' ' ' 'r   c                  j   t          j        t          j                  } t	          |           dk    sJ t          j        t          j                  } t	          |           dk    sJ t          j        t          j                  } t	          |           dk    sJ t          j        t          j                  } t	          |           dk    sJ t          j        t          j                  } t	          |           dk    sJ t          j        t          j	                  } t	          |           dk    sJ 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))
rS   rT   r   r   strr  quantilebinary_join_element_wisechooserandom)rZ   s    r   test_generated_signaturesr    s9   
 
BF
#
#Cs8877777

BJ
'
'Cs88 : ; ; ; ; 
BK
(
(Cs88 : ; ; ; ; 
B7
8
8Cs88 , - - - - 
BI
&
&Cs88@@@@@

BI
&
&Cs88 : ; ; ; ; ; ;r   c                  p   t                      } d t          dd          D             }t          j        t	          j        |                                                    }t          |          D ]E\  }}||         |                                k    r"| 	                    t          |                     F| S )Nc                 J    g | ] }d |cxk    rdk     n t          |          !S )      )chr)r   r  s     r   r   z/find_new_unicode_codepoints.<locals>.<listcomp>
  sF     1 1 1Q A........ a&&...r        )setr  r   utf8_is_printabler   r   r0  	enumerateisprintabler   ord)newr  is_printableir  s        r   find_new_unicode_codepointsr    s    
%%C1 1%g"6"6 1 1 1J'(<(<==GGIIL*%%  1?ammoo--GGCFFOOOJr   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)
rV  rW  is_ascii
is_decimalrX  rZ  rY  r  is_spaceis_uppervariantasciiutf8c                 :   |dz   | z   }|                      dd          }t                              | t                                t	                      z  }t          t          rdnd          D ]}|t          dd          v r||v rt          |          }t          t          |          ro| dk    rit          j        |g          }t          t          |          } ||          d                                          t          ||                      k    sJ d S )	N_r  r  r  r  r  r^  r   )replacecodepoints_ignoregetr  r  r  ra  r  r
   r   r   r   r&  r9  )	r[  r`  
arrow_namepy_nameignorer  r  ar
arrow_funcs	            r   test_string_py_compat_booleanrm  h  s&    3.J##C,,G""=#%%88#%%&F%,33W-- F Fff%%%%;; FF2z"" 	F}
'B'B1#B Z00J:b>>!$**,,0C70C0C0E0EEEEEF Fr   c                     t          j        g d          } t          j        | d                                          g dk    sJ t          j        | d                                          g dk    sJ t          j        | d                                          g dk    sJ t          j        | d                                          g dk    sJ t          j        | d                                          g dk    sJ t          j        | d                                          g dk    sJ t          j        g d          } t          j        | d                                          g dk    sJ t          j        | d                                          g d	k    sJ t          j	        | d                                          g d
k    sJ t          j        | d                                          g dk    sJ t          j        | d                                          g d	k    sJ t          j	        | d                                          g d
k    sJ d S )N)Nr+   abcdr3   width)Nz a ro  )Nz  aro  )Nza  ro  )N   áro  )Nu    á ro  )Nu     áro  )Nu   á  ro  )
r   r   r   ascii_centertolist
ascii_lpad
ascii_rpadutf8_center	utf8_lpad	utf8_rpadr2  s    r   test_padrz    s   
(&&&
'
'C?3a(((//115J5J5JJJJJ=A&&&--//3H3H3HHHHH=A&&&--//3H3H3HHHHH?3""))++/D/D/DDDDD=a  ''))-B-B-BBBBB=a  ''))-B-B-BBBBB
('''
(
(C>#Q'''..004J4J4JJJJJ<1%%%,,..2H2H2HHHHH<1%%%,,..2H2H2HHHHH>#q!!((**.D.D.DDDDD<Q&&((,B,B,BBBBB<Q&&((,B,B,BBBBBBBr   c                  T   t           j        t           j        u sJ g d} t          dd          D ]et	          j        |           }t          j        |                                          }fd| D             }||k    sJ d d| d|             ft	          j        g d	          }t          j        |t          j        d
d                                                    }|g dk    sJ t	          j        g d	          }t          j        |t          j        dd                                                    }|g dk    sJ t	          j        dg          }t          j	        t          j
        d          5  t          j        |t          j        dd                     d d d            n# 1 swxY w Y   t          j	        t          j
        d          5  t          j        |t          j        dd                     d d d            d S # 1 swxY w Y   d S )N)Ar  ABCr  -1z+1rk   Nr   r7   rp  c                 B    g | ]}||                               nd S r   )zfill)r   xrq  s     r   r   z#test_utf8_zfill.<locals>.<listcomp>  s+    PPP!amAGGENNNPPPr   zMismatch at width=z: z vs )rk   z-2z+3r   u   💠)rq  paddingr  )u   💠💠💠💠1u   -💠💠💠2u   +💠💠💠3r6   r  )xxx1z-xx2z+xx3r  zPadding must be one codepointr>   spamr  )r   
utf8_zfillutf8_zero_fillr  r   r   r0  r   rD   rE   rb  )examplesr  r  r  rq  s       @r   test_utf8_zfillr    s   =B----- =<<Hq! X Xhx  "3e444>>@@PPPPxPPP!!!#W#W#W#W#WX#W#W!!!! ($$$
%
%CsB,>-! -! -! " " ""+)++ NNNNNNN ($$$
%
%CsB,>- - -   (y{{ ------- (E7

C	r.M	N	N	N T T
#r'96'R'R'RSSSST T T T T T T T T T T T T T T	r.M	N	N	N P P
#r'92'N'N'NOOOOP P P P P P P P P P P P P P P P P Ps$   +F::F>F>%+HH!$H!c                     t          dd          } t          j        g d          }|                                                    t
                                        t          j        d i          }| D ]}| D ]}|j	        
                    ||d          }t          j        |||d          }|                                |                                k    sJ t          j        |||d          |k    sJ t          j        g d          }|                                                    t
                                        t          j        d i          }| D ]g}| D ]b}|j	        
                    ||d          }t          j        |||d          }|                                |                                k    sJ chd S )Nr  r6   )Nr  r+   r  r  ro  abcdeXX)r`   r  replacement)Nr  u   πu   πbu   πbθu   πbθdu   πbθde)r  r   r   	to_pandasastyperC   re  r  nanr  slice_replacer   binary_replace_slicert  utf8_replace_slice)offsetsr  seriesr`   r  r  r  s          r   test_replace_slicer    s   BllG
(@@@
A
AC]]__##F++33RVTNCCF M M 	M 	MDz//tTBBH,5t? ? ?F==??hoo&7&77777*3tTBBfLLLLL	M (HHH
I
IC]]__##F++33RVTNCCF 8 8 	8 	8Dz//tTBBH*5t? ? ?F==??hoo&7&777777		88 8r   c                     t          j        g d          } t          j        | dd          }|                                g dk    sJ t          j        | dd          }|                                g dk    sJ t          j        | ddd          }|                                g dk    sJ t          j        | ddd	          }|                                g dk    sJ d S )
N)foozfoofoodNr  r  rf   r  )barzbarbardNr4   )rf   r  max_replacements)barzfoor  N)r  )r   r   r   replace_substringrt  )rj  rk  s     r   test_replace_plainr    s   8---..D		dEu	E	E	EB99;;3333333		dE5	1	1B99;;3333333		dEu/0
2 
2 
2B99;;3333333		dE51	E	E	EB99;;333333333r   c                  ^   t          j        g d          } g d}t          j        | dd          }|                                |k    sJ t          j        | dd          }|                                |k    sJ t          j        | dd          }|                                |k    sJ d S )N)r  moodN)f00m00dNz(.)ooz\100r  )r  )r   r   r   replace_substring_regexrt  )rj  r  rk  s      r   test_replace_regexr    s    8)))**D$$$H		#D'w	O	O	OB99;;(""""		#D'w	G	G	GB99;;(""""		#D'7	;	;B99;;(""""""r   c                     t          j        ddg          } ddddddg}t          j        | d	          }|                                |k    sJ t          j        | d          }|                                |k    sJ d S )
Na1zb2zr+   rk   letterdigitr,   rl   z(?P<letter>[ab])(?P<digit>\d)r  )r   r   r   extract_regexrt  rk  r  structs      r   test_extract_regexr    s    	4.	!	!B--#/L/LMHb*JKKKF==??h&&&&b"BCCF==??h&&&&&&r   c                     t          j        ddg          } ddgddgdddgddgdg}t          j        | d	          }|                                |k    sJ t          j        | d          }|                                |k    sJ d S )
Nr  zb234zr   r4   r  r5   r3   z(?P<letter>[ab])(?P<digit>\d+)r  )r   r   r   extract_regex_spanrt  r  s      r   test_extract_regex_spanr    s    	4"	#	#Bq6QF33q6QF335H"2/PQQQF==??h&&&&"2'HIIF==??h&&&&&&r   c                  .   t          j        ddgd g g          } t          j        g d          }t          j        | d                              |          sJ t          j        ddgt          j                              }t          j        dd	gt          j                              }t          j        d
dgddggt          j        t          j                                        } t          j        | |                              |          sJ d S )Nr  r  )zfoo-barNr  -rk   rl   r   a1bc2dr+   r,   r  d)r   r   r   binary_joinr  r/   list_)ar_listr  separator_arrays      r   test_binary_joinr    s    hb122Gx---..H>'3''..x88888hSz	<<<OxRY[[999Hhc
S#J/bhry{{6K6KLLLG>'?33::8DDDDDDDr   c                     t          j        d t          j                              } g dg dg dg}t          j        |                                 g dk    sJ t          j        ddd                                          d	k    sJ t          j        d| d                                          J t          j        dd|                                           J t          j        d
          }t          j        |d|i                                g dk    sJ t          j        ddd|                                          d	k    sJ t          j        d| d|                                          dk    sJ t          j        dd| |                                          J t          j        dd          }t          j        |d|i                                g dk    sJ t          j        ddd|                                          d	k    sJ t          j        d| d|                                          dk    sJ t          j        dd| |                                          J d S )Nr   )Nr+   r,   )r  Nr  )Nr  z--)NNb--dr+   r,   r  za-bskip)null_handlingr   )Nr+   r  r  re  r  )r  null_replacement)Na-spamr  r  )r   r   r*   r   r  r0  r9  r   )nullarrsr  re  s       r   test_binary_join_element_wiser    s   9T	,,,D...0A0A0ABD&-7799   &sC55;;==FFFF&sD#66<<>>FFF&sC66<<>>FFF>///D&;d;;EEGG   &S#t% % %%*UWW6 6 6 6&T3& & &&+egg5 5 5 5&S$& & &&+egg6 6 6 n9vNNNG&>g>>HHJJ   ! ! ! !&S#w( ( ((-59 9 9 9&T3) ) )).H= = = =&S$) ) )).9 9 9 9 9r   )r  rV   c                    t          j        ||           }t          j                    t          j                    fD ]}t          j        g d|          }|                    |          }|                                 t          j        |d         |d         |d         d g|           }|                    |          sJ t          j        g |          }|                    |          }|                                 t          j        g |           }|                    |          sJ t          j        ddg          }t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t          j        ddg          }t          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r   r6   r5   Nr   r6   r5   r   rg   )
r   r   r   r#   r  validater  rD   rE   
IndexError)r  rV   r  indices_typer   r  r  s          r   	test_taker  !  s;   
(6
#
#
#CBHJJ/ ' '(???>>>'""8VAYq	6!9dC"MMM}}X&&&&& (2L111'""8BR(((}}X&&&&&&h1vG	z	"	"                 h2wG	z	"	"                   s$   FFF;GG"%G"c                  <   t          j        t          d                    } dD ]p}t          j        g d|          }|                     |          }|                                 t          j        g d          }|                    |          sJ qt          j                    t          j                    fD ]`}t          j        g d|          }t          j	        t                    5  |                     |           d d d            n# 1 swxY w Y   ad S )Nr   )r   r   r   r   r   r    r!   r#   r  r   )r   r6   r5   )r   r   r  r  r  r  float32float64rD   rE   r  )r  r  r   r  r  s        r   test_take_indices_typesr  ;  sJ   
(588

C? ' '(???>>>'""8OOO,,}}X&&&&&&rz||4  (999<888].// 	 	HHW	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   .DD	D	c                     t          j        g dg dg          } t          j        g d          }|                     |          }t          j        g dg          }|                    |          sJ t          j        dgddgg          }|                     |          }t          j        dgd	d
gg          }|                    |          sJ d S )N)r+   r,   r  r  e)fghr  j)r   r   r4   r7   r8   r5   )r+   r  r,   r  r  r  r4   r8   r5   r,   r  r  )r   rQ  r   r  r  )r  r   r  r  s       r   test_take_on_chunked_arrayr  L  s	   

	
 	
 	
	
 	
 	
  C" h)))**GXXgF!?!?!? @AAH=="""""aV}--GXXgF	
 	
	!  H =="""""""r   orderedFTc                 f   t           j                            g dg d|           }|                    t          j        g d                    }|                                 |                                g dk    sJ |j                                        g dk    sJ |j        j	        | u sJ d S )N)r   r4   r5   r   r4   r5   r+   r,   r  )r  )r   r4   r3   )r+   r,   r+   )
r   DictionaryArrayfrom_arraysr  r   r  r0  
dictionaryr   r  )r  r  r  s      r   test_take_dictionaryr  r  s    


(
();););___18 ) : :CXXbhyyy))**F
OO0000&&((OOO;;;;;'))))))r   c                     t          j        d gdz            } t          j        d gdz  gdz            }t          j        | gdg          }t          j        d| i          }t          j        g d          }t          |                     |                    dk    sJ t          |                    |                    dk    sJ t          |                    |                              d                    dk    sJ t          |                    |                              d                    dk    sJ d S )	Nr"   r   r5   r+   rj   )r4   r3   rf  Nr6   r   )r   r   rQ  record_batchtablerA   r  column)r  chunked_arrbatchr  r   s        r   test_take_null_typer  }  s*   
(D6B;

C"TFQJ<!#344KOSE#///EHc3Z  Eh''Gsxx  !!Q&&&&{(())Q....uzz'""))!,,--2222uzz'""))!,,--222222r   c                 T   t          j        ||                                           }|                    d           fdt	          t                              D             }                    t          j        |                    }|                    |          sJ d S )Nr   Tfullc                 .    g | ]}|         j         |S r   )r  )r   r  r  s     r   r   z"test_drop_null.<locals>.<listcomp>  s$    ===QSV_=q===r   )r   r   	drop_nullr  r  rA   r  r  )r  rV   r  r   r  r  s        @r   test_drop_nullr    s    
(6
#
#
#C]]__F
OOO====%C//===Gxx))**H=="""""""r   c                      t          j        dd gg dd gg g          } t          j        dgddgg g g          }|                                 }|                    |          sJ d S )Nr+   r  r  Nr  r  )r   rQ  r  r  )r  expected_dropr  s      r   test_drop_null_chunked_arrayr    sr    

S$K)9)9)9D62F
G
GC$sec3ZR%@AAM]]__F=='''''''r   c                  f   t          j        t          j        g d          gdg          } |                                 }t          j        t          j        g d          gdg          }|                    |          sJ t          j        t          j        g d          t          j        g d          gddg          } |                                 }t          j        t          j        dg          t          j        dg          gddg          }|                    |          sJ d S )Nr+   Nr  r  Na'r  r+   r  r  )NNr  Nr  zb'r  )r   r  r   r  r  )r  r  r  s      r   test_drop_null_record_batchr    s8   O	---	.	./v? ? ?E__F 9 9:4&IIIH=="""""O	---	.	.	...	/	/	19=tF F FE __F	3%"(C5//*4,@ @ @H=="""""""r   c                     t          j        t          j        g d          gdg          } t          j        t          j        g d          gdg          }|                                 }|                    |          sJ t          j        t          j        dd gg dg          t          j        dd gg dg          t          j        dgdgd gdd gg          gg d	          } t          j        t          j        ddg          t          j        ddg          t          j        ddg          gg d	          }|                                 }|                    |          sJ t          j        t          j        ddgg d
g          t          j        dgdgd gdd gg          t          j        dd gg dg          gg d	          } t          j        t          j        ddg          t          j        ddg          t          j        ddg          gg d	          }|                                 }|                    |          sJ d S )Nr  r+   r  r  r  )Nr  Nr,   r  r  r  r  r  r|  BDza`)zc`d`Nr  )r   r  r   r  r  rQ  )r  r  r  s      r   test_drop_null_tabler    s   Hbh:::;;<SEJJJEx///223C5AAAH__F=="""""Hb&d5E5E5E'FGG&d5F5F5F'GHH&utfsDk'JKKM +??, , ,E x3*--3*--3*--/ .oo/ / /H __F=="""""Hb&c
OOO'DEE&utfsDk'JKK&t6H6H6H'IJJL +??, , ,E x3*--3*--4,//1 .oo/ / /H __F=="""""""r   c                  N   t          j        d gdz            } t          j        d gdz  gdz            }t          j        | gdg          }t          j        d| i          }t          |                                           dk    sJ t          |                                          dk    sJ t          |                                                    d                    dk    sJ t          |                                                    d                    dk    sJ d S )Nr"   r   r5   r+   r  r   )r   r   rQ  r  r  rA   r  r  )r  r  r  r  s       r   test_drop_null_null_typer    s   
(D6B;

C"TFQJ<!#344KOSE#///EHc3Z  Es}}1$$$${$$&&''1,,,,u  ''**++q0000u  ''**++q000000r   c                 f   t          j        ||           }t          j        g d          }|                    |d          }|                                 |                    t          j        |d         |d         g|                     sJ |                    |d          }|                                 |                    t          j        |d         |d         d g|                     sJ t          j        g d          }t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t          j        g d	          }t          j        t          d
          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   TFFTNdropnull_selection_behaviorr   r3   	emit_nullr   r4   r   r4   r   TFTmust all be the same lengthr>   )	r   r   r  r  r  rD   rE   r  
ValueErrorr  rV   r  maskr  s        r   test_filterr
    s   
(6
#
#
#C844455DZZfZ==F
OO==6!9fQi"8rBBBCCCCCZZkZBBF
OO==6!9fQi">RHHHIIIII 8OOO$$D	*	+	+  

4               8'''((D	z)F	G	G	G  

4                 s$   %EEEF&&F*-F*c                 &   t          j        ||           }t          j        g d          }|                    |d          }|                                 |                    t          j        |d         |d         g|                     sJ d S )Nr   r  r   r  r   r3   )r   r   r  r  r  r  r  s        r   test_filter_numpy_array_maskr    s     (6
#
#
#C844455DZZfZ==F
OO==6!9fQi"8rBBBCCCCCCCr   c                     t          j        dd gg dg          } t          j        dgdgg          }t          j        dgd dgg          }t          j        g d          t          j        g dddgg          g dfD ]\}|                     |          }|                    |          sJ |                     |d	          }|                    |          sJ ]d S )
Nr+   r  r  TFNFTr/  FTr  r  )r   rQ  r   r  r  )r  r  expected_nullr	  r  s        r   test_filter_chunked_arrayr    s   

S$K9
:
:C$secU^44M$sedC[%9::M 	11122
---t}=>>((( , , D!!}}]+++++D+FF}}]++++++, ,r   c                  ~   t          j        t          j        g d          gdg          } t          j        g d          }|                     |          }t          j        t          j        ddg          gdg          }|                    |          sJ t          j        ddgd gddgg          }|                     |          }|                    |          sJ |                     |d	
          }t          j        t          j        g d          gdg          }|                    |          sJ d S )Nr+   Nr  r  r  r  r  r  r+   r  TFr  r  r+   Nr  )r   r  r   r  r  rQ  )r  r	  r  r  chunked_masks        r   test_filter_record_batchr    sD   O	,,,	-	-.tf> > >E 844455D\\$F#s 4 45dVDDDH==""""" #dE]TFUDM$JKKL\\,''F=="""""\\$\DDF)9)9)9 : :;D6JJJH=="""""""r   c                  .   t          j        t          j        g d          gdg          } t          j        t          j        ddg          gdg          }t          j        t          j        g d          gdg          }t          j        g d          t          j        ddgg d	g          g dfD ]\}|                     |          }|                    |          sJ |                     |d
          }|                    |          sJ ]d S )Nr  r+   r  r  r  r  TF)NFTr  r  )r   r  r   rQ  r  r  )r  r  r  r	  r  s        r   test_filter_tabler     s0   Hbh999::;C5IIIEHbhSz223C5AAAMHbh'7'7'7889#GGGM 	11122
4-)<)<)<=>>((( , , d##}}]+++++dKHH}}]++++++, ,r   c                  <   t          j        dd gg dg          } t          j        t          j        g d          gdg          }t          j        t          j        g d          gdg          }| ||fD ]}t          j        g d          }t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t          j        g d          }t          j        t           j	        d	          5  |                    |           d d d            n# 1 swxY w Y   t          j
        d
          }|||fD ]H}t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   Id S )Nr+   r  r  r  r  r  r  r  r>   T)r   rQ  r  r   r  rD   rE   r  r  rb  r   rF   )r  r  r  objr	  r   filts          r   test_filter_errorsr  3  sc   

S$K9
:
:CO	,,,	-	-.tf> > >EHbh999::;C5IIIEUE" 
 
x((].// 	 	JJt	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 x+++,,]2?!>@ @ @ 	 	JJt	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Yt__Fv&  ]9%% 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s6   )CC	C	D..D2	5D2	.FF	F	c                     t          j        d gdz            } t          j        d gdz  gdz            }t          j        | gdg          }t          j        d| i          }t          j        ddgdz            }t          |                     |                    dk    sJ t          |                    |                    dk    sJ t          |                    |                              d                    dk    sJ t          |                    |                              d                    dk    sJ d S )	Nr"   r   r5   r+   r  TFr   )r   r   rQ  r  r  rA   r  r  )r  r  r  r  r	  s        r   test_filter_null_typer  K  s/   
(D6B;

C"TFQJ<!#344KOSE#///EHc3Z  E8T5MA%&&Dszz$  A%%%%{!!$''((A----u||D!!((++,,1111u||D!!((++,,111111r   c                     t          j        g t          j                              } t          j        | g ddgg ddg| g          }t          j        g dgt          j                              }t	          j        |                              |          sJ t	          j        dt          j                              }t	          j        ||	                              |          sJ t	          j        |d
                              |          sJ t          j	        t          d          5  t	          j        |d           d d d            d S # 1 swxY w Y   d S )Nr   )r8   rf  r   r3   r4   r   )r5   r6   r7   r   )
r   r6   r7   r3   rf  r5   r   r4   r8   r   r8   )	max_indexoutput_typer  rg   r  Index out of bounds: 9r>   r6   )r   r   r    rQ  r   inverse_permutationr  InversePermutationOptionsrD   rE   r   )arr0r  r  r   s       r   test_inverse_permutationr&  Y  s   8BRXZZ(((D

ooosIIIsD  C !?!?!? @rxzzRRRH!#&&--h77777*QBHJJOOOG!#w777>>xHHHHH!#444;;HEEEEE	.F	G	G	G 1 1
sa00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   3EEEc                  R   t          j        g d          } t          j        g d          }t          j        g d          }t          j        | |          }|                    |          sJ t          j        d          }t          j        | ||                              |          sJ t          j        | |d                              |          sJ t          j        t          d	          5  t          j        | |d
           d d d            d S # 1 swxY w Y   d S )N)
TFTTFFTTTF)
r8   r   rf  r7   r   r6   r3   r5   r4   r   )
FTTTFFTTFTrg   r!  r  r8   r"  r>   r6   )	r   r   r   scatterr  ScatterOptionsrD   rE   r   )rV   r   r  r  r   s        r   test_scatterr*  i  sq   XVVVWWFh55566Gx 8 8 8 9 9HZ((F==""""""---G:fgw777>>xHHHHH:fg333::8DDDDD	.F	G	G	G 1 1

67a00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   7DD #D typr   rQ  c                    | dk    rd }nd } |g d          } |g d          }t          j        ||          }|                     |g d                    sJ t          j        ||          }|                     |g d                    sJ t          j        ||          }|                     |g d                    sJ t          j        ||          }|                     |g d	                    sJ t          j        ||          }|                     |g d
                    sJ t          j        ||          }|                     |g d                    sJ d S )Nr   c                 *    t          j        |           S r   r   r   rV   s    r   conztest_compare_array.<locals>.con|      8F###r   c                 ,    t          j        | g          S r   r   rQ  r/  s    r   r0  ztest_compare_array.<locals>.con      #VH---r   r7  )r4   r4   r6   Nr6   )TFFNN)FTTNN)FFTNN)TFTNN)FTFNN)TTFNN)r   r1  r  	not_equalless
less_equalgreatergreater_equal)r+  r0  arr1arr2r  s        r   test_compare_arrayr<  y  s   
g~~	$ 	$ 	$ 	$	. 	. 	. 3!!!""D3!!!""DXdD!!F=====>>?????\$%%F==<<<==>>>>>WT4  F=====>>?????]4&&F==<<<==>>>>>Zd##F=====>>?????dD))F==<<<==>>>>>>>r   c                    | dk    rd }nd } |g d          }t          j        d          }t          j        ||          }|                     |g d                    sJ | dk    rat          j        d d          }t          j        ||          }t          j        |          }|                     |g d	                    sJ t          j        ||          }|                     |g d
                    sJ t          j        ||          }|                     |g d                    sJ t          j        ||          }|                     |g d                    sJ t          j	        ||          }|                     |g d                    sJ t          j
        ||          }|                     |g d                    sJ d S )Nr   c                 *    t          j        |           S r   r.  r/  s    r   r0  z'test_compare_string_scalar.<locals>.con  r1  r   c                 ,    t          j        | g          S r   r3  r/  s    r   r0  z'test_compare_string_scalar.<locals>.con  r4  r   )r+   r,   r  Nr,   FTFNr*   r   )TTTTTFTNTFFNr  FFTNFTTN)r   r   r   r1  r  is_nullr5  r6  r7  r8  r9  )r+  r0  r  r   r  nascalarisnulls          r   test_compare_string_scalarrH    s   
g~~	$ 	$ 	$ 	$	. 	. 	. ####
$
$CYs^^FXc6""F==7778899999
g~~9T111#x((F##}}SS!9!9!9::;;;;;\#v&&F==6667788888WS&!!F==7778899999]3''F==6667788888ZV$$F==7778899999c6**F==666778888888r   c                    | dk    rd }nd } |g d          }t          j        d          }t          j        ||          }|                     |g d                    sJ | dk    rGt          j        d d          }t          j        ||          }|                                g d	k    sJ t          j        ||          }|                     |g d
                    sJ t          j        ||          }|                     |g d                    sJ t          j        ||          }|                     |g d                    sJ t          j	        ||          }|                     |g d                    sJ t          j
        ||          }|                     |g d                    sJ d S )Nr   c                 *    t          j        |           S r   r.  r/  s    r   r0  z test_compare_scalar.<locals>.con  r1  r   c                 ,    t          j        | g          S r   r3  r/  s    r   r0  z test_compare_scalar.<locals>.con  r4  r   r4   r5   r3   Nr5   r@  r#   r   NNNNrA  rB  r  rC  rD  )r   r   r   r1  r  r0  r5  r6  r7  r8  r9  )r+  r0  r  r   r  rF  s         r   test_compare_scalarrN    s   
g~~	$ 	$ 	$ 	$	. 	. 	. #ooo

CYq\\FXc6""F==7778899999
g~~9T000#x((!!%=%=%=====\#v&&F==6667788888WS&!!F==7778899999]3''F==6667788888ZV$$F==7778899999c6**F==666778888888r   c                  B   t          j        g d          } t          j        g ddd gg          }t          j        ddgg dg          }t          j        g dg          }| |f|| f||ffD ]1\  }}t          j        ||          }|                    |          sJ 2d S )Nr7  r4   r5   r3   r6   r4   r5   )r3   r6   N)TTTTN)r   r   rQ  r   r1  r  )r  arr_chunkedarr_chunked2r  leftrightr  s          r    test_compare_chunked_array_mixedrU    s    
(%%%
&
&C"III4y#9::K#aV\\\$:;;L!?!?!? @AAH 
k	c	l# ' 'e
 $&&}}X&&&&&&' 'r   c                      t          j        g d          } t          j        g d          }t          j        | |          }t          j        g d          }|                    |          sJ d S )Nr4   r5   r3   r6   r   r   rg   r4   r5   r3   )r4   r4   r6   r7   r   )r   r   r   r   r  rS  rT  r  r  s       r   test_arithmetic_addrZ    sm    8OOO$$DH%%%&&EVD%  Fx((H=="""""""r   c                      t          j        g d          } t          j        g d          }t          j        | |          }t          j        g d          }|                    |          sJ d S )NrW  rX  )r4   r3   r5   r5   r5   )r   r   r   subtractr  rY  s       r   test_arithmetic_subtractr]    sm    8OOO$$DH%%%&&E[u%%Fx((H=="""""""r   c                      t          j        g d          } t          j        g d          }t          j        | |          }t          j        g d          }|                    |          sJ d S )NrW  rX  )r   r  r3   r      )r   r   r   multiplyr  rY  s       r   test_arithmetic_multiplyra    sp    8OOO$$DH%%%&&E[u%%Fx)))**H=="""""""r   r  roundround_to_multiplec                    | dk    r(t           j        }t          t           j        d          }n-| dk    r't           j        }t          t           j        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 ]\\  }} ||          } |||          }t          j        |t          j	                              }	|	
                    |          sJ ]d S )Nrb  r   ndigitsrc  r4   multiple)g	@      @皙@      @皙	g      gN)r3   r3   r3   r6   rm  rm  N)r6   r6   r6   r   r  r  r  N)r3   r3   r3   r6   r  r  r  N)r6   r6   r6   r   rm  rm  rm  N)r3   r3   r6   r6   r  rm  rm  N)r3   r6   r6   r   r  r  rm  N)r3   r3   r6   r6   r  r  rm  N)r3   r6   r6   r   r  rm  rm  N)r3   r6   r6   r6   r  rm  rm  N)r3   r3   r6   r   r  r  rm  N)
downuptowards_zeror~   	half_downhalf_uphalf_towards_zerohalf_towards_infinityhalf_to_evenhalf_to_odd
round_moder  r   )r   rb  r   r   rc  r   itemsr   r   r  r  )
r  rb  r   rV   rmode_and_expectedrx  r  r   r  expected_arrays
             r   test_round_to_integerr|  	  sL   	W}}r:::	"	"	"$r81EEE999F...,,,666:::333111;;;!?!?!?666555  !3 8 8 : : - -
H,*555vw///(>>>$$V,,,,,,	- -r   c                     g d} g dg dg dg dg dd}|                                 D ]\  }}t          j        |d          }t          j        | |	          }t          j                            |t          j        |          d
           t          j        | |d          |k    sJ t          j        | |d          |k    sJ d S )N@  ri  g@rk  gV-	g):ˏAg\(\Ni,  r   r   r   r   r   r   Nr  r   r   r   r   ir   N)r  r6   r3   r   r  ir  Nr  ri  @rk  rl  ̌Ar  N)r  ri  gp=
ף@rk  gGz	g(\AffffffN)r  rg   r   r4   r5   rt  r  T	equal_nanrw  )	ry  r   r   rb  r  testingassert_allcloser   r   )rV   ndigits_and_expectedrf  r  r   r  s         r   
test_roundr  &  s   CCCF,,,---,,,666<<<  27799 L L/'+BCC&'222

""628H+=+="NNNx#:< < <?EF F F Fx)@AAVKKKKKL Lr   c                  P   g d} dg dt          j        d          g ddg ddg d	t          j        d
t          j        dd                    g di}|                                D ]\  }}t	          j        |d          }t	          j        | |          }t          j        	                    |t          j
        |          d           t	          j        | |d          |k    sJ ddt          j        d          fD ]P}t          j        t           j        d          5  t	          j        | |           d d d            n# 1 swxY w Y   Qt          dfD ]K}t          j        t          d          5  t	          j        | |           d d d            n# 1 swxY w Y   Ld S )Nr~  r   )r  ri  r  rk  rl  r  r  Nr%   r  r5   )r  r6   r6   r6   rm  irm  Nr"   r  r   r6   r   r  rt  r  Tr  r   r  g$z"Rounding multiple must be positiver>   rg  l   l+?R zis not a valid multiple type)r   r   rJ  ry  r   r   rc  r  r  r  r   rD   rE   rb  rC   rF   )rV   multiple_and_expectedrh  r  r   r  s         r   test_round_to_multipler  9  sq   CCCF<<<
	#CCC	,,,
---
	#BM"a00111,,, 499;; G G(+H6MNN%fg>>>

""628H+=+="NNN#FH$;= =@FG G G G G BIe,,- < <]2?!EG G G 	< 	< (;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 45 < <]9,JKKK 	< 	< (;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<< <s$   "EE		E		7FF	!F	c                  <   g d} t          j        g dt          j                              }t          j        g dt          j                              }t	          j        | |          |k    sJ t          j        dt          j                              }t          j        dt          j                              }t          j        dt          j                              }t	          j        d|d	          |k    sJ t	          j        d|d
	          |k    sJ d S )N)w/^@/$Rm@+ٚu@gv|@r  r  r  )r  r  rg   r   r4   r5   r3   )r      i^  i  g     ^@g
ףp=Rm@r  r   r"   rg   g      @rs  rw  rt  )r   r   r    r  r   round_binaryr   )rV   scalesr  expect_zero
expect_infrI  s         r   test_round_binaryr  U  s+   LLLFX...

;;Fx222BJLLB BH?66**h6666)Arz||,,K2rz||,,JIb"(**%%E?U24 4 47BC C C C?U68 8 8;EF F F F F Fr   c            	      v   t          j        g d          } |                                 }t          j        g d          }|                    |          sJ |                    t	          j        |                     sJ |                                 }t          j        g d          }|                    |          sJ |                    t	          j        |                     sJ t          j        ddgdd gg          } |                                 }t          j        ddgddgg          }|                    |          sJ |                                 }t          j        ddgddgg          }|                    |          sJ t          j        dddd t          d	          g          } |                                 }t          j        g d
          }|                    |          sJ |                     d          }t          j        g d          }|                    |          sJ d S )NrL  )FFFT)TTTFr4   r5   r3   FTr  )FFFTF)nan_is_null)FFFTT)r   r   rE  r  r   r  rQ  r$   r  s      r   test_is_nullr  f  s   
(???
#
#C[[]]Fx33344H=="""""==C)))))\\^^Fx11122H=="""""==S))*****

QFQI.
/
/C[[]]F%% ?@@H=="""""\\^^F$e} =>>H=="""""
(Aq!T5<<0
1
1C[[]]Fx:::;;H=="""""[[T[**Fx999::H=="""""""r   c            	         t          j        dddd t          d          g          } |                                 }t          j        g d          }|                    |          sJ t          j        g dt          j                              } t          j        t          d	          5  |                                 }d d d            n# 1 swxY w Y   t          j        t          d	          5  t          j        g d
t          j	                              } |                                 }d d d            d S # 1 swxY w Y   d S )Nr4   r5   r3   r  )FFFNT)rk   rl   Nr   z"has no kernel matching input typesr>   r0      bbN)
r   r   r$   is_nanr  r*   rD   rE   r   r  )r  r  r  rd  s       r   test_is_nanr    s   
(Aq!T5<<0
1
1CZZ\\Fx999::H=="""""
(###")++
6
6
6C	$,P
R 
R 
R  JJLL               
$,P
R 
R 
R  h***1B1BCCCJJLL                 s$   ,CCC3>D>>EEc                     t          j        g dt          j                              } t          j        dgt          j                              }t          j        t           j        d          5  |                     |           d d d            n# 1 swxY w Y   t          j        g dt          j                              } t          j        d t          j                              }|                     |          }t          j        g d          }|	                    |          sJ t          j        g d          } |                     d          }t          j        g d	          }|	                    |          sJ t          j        g d
t          j
                              } |                     d          }t          j        g dt          j
                              }|	                    |          sJ t          j        g d          } |                     d           }t          j        g d          }|	                    |          sJ d S )Nr4   r5   Nr6   r   r   +Array arguments must all be the same lengthr>   rM  )r+   bbNccc)r+   r  r  r  )r0   r  s   ccc)r   r   r   rD   rE   rb  	fill_nullr  r   r  r  )r  
fill_valuer  r  s       r   test_fill_nullr    s_   
(???
3
3
3C1#BGII...J	rJ
L 
L 
L " "j!!!" " " " " " " " " " " " " " " (+++"'))
<
<
<C4bgii000J]]:&&Fx00011H=="""""
($$$
%
%C]]5!!Fx***++H=="""""
(&&&R_->->
?
?
?C]]5!!Fx---BO4E4EFFFH=="""""
($$$
%
%C]]4  Fx)))**H=="""""""s   2BBBc                    t          j        g d|           }t          j        d|           }|                    |          }t          j        g d|           }|                    |          sJ |                    d          }|                    |          sJ t           j                            |j                  sMt          j	        t          t          f          5  |                    d           d d d            n# 1 swxY w Y   |                    t          j        dd                    }|                    |          sJ d S )Nr  r   r   )r4   r5   r   r6   5r   )r   r   r   r  r  rF  is_unsigned_integerr   rD   rE   r  rF   )r4  r  r  r  r  s        r   test_fill_null_arrayr    sr   
(???
4
4
4C1:...J]]:&&Fx:666H==""""" ]]1F==""""" 8''11 ]J	233 	 	MM#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]]29QV44455F=="""""""s   #DD	D	c                    t          j        d|           }t          j        t          j        g d|           g          }|                    |          }t          j        t          j        g d|           g          }|                    |          sJ t          j        t          j        ddg|           t          j        g |           t          j        d dg|           g          }t          j        t          j        ddg|           t          j        g |           t          j        ddg|           g          }|                    |          }|                    |          sJ |                    d          }|                    |          sJ |                    t          j        dd                    }|                    |          sJ d S )	Nr   r   )Nr5   r3   r6   )r   r5   r3   r6   r4   r5   r6   r   )r   r   rQ  r   r  r  )r4  r  r  r  r  s        r   test_fill_null_chunked_arrayr    s   1:...J

BH___:FFFG
H
HC]]:&&F,,,Z!H!H!H IJJH=="""""


!Qj)))
*%%%
$,,,  C
 
!Qj)))
*%%%
!Qj)))!  H
 ]]:&&F==""""" ]]1F=="""""]]29QV44455F=="""""""r   c                     t          j        g d          } t          j        dt          j                              }t           j                            d| |g          }|                    d           t          j        g d          }|                    |          sJ t          j                    t          j	                    t          j
                    t          j                    fD ]}t          j        g d|          } t          j        d|          }t           j                            d| |g          }|                    d           t          j        g d	|          }|                    |          sJ d S )
N)TFFFFNTr   coalescer  )TFFFFT)r4   r5   r3   r6   r   N*   )r4   r5   r3   r6   r   r  )r   r   r   bool_computer  r  r  r   r   r    r#   )r  r   r  r  r  s        r   !test_fill_null_windows_regressionr    s_    (;;;
<
<C
	$RXZZ(((AZ%%j3(;;F
OOOx@@@AAH=="""""wyy"(**bhjj"(**= ' 'h,,,2666Ibr"""))*sAh??T"""8///b999}}X&&&&&&' 'r   c                     t          j        g d          } t          j        g d          }t          j        | |          t          j        g d          k    sJ t          j        | |          t          j        g d          k    sJ t          j        | |          t          j        g d          k    sJ t          j        | |          t          j        g d          k    sJ t          j        | |          t          j        g d          k    sJ t          j        |           t          j        g d          k    sJ d S )NrB  )TTFTr  r@  rD  )	r   r   r   and_
and_kleeneor_	or_kleenexorinvertr:   s     r   test_logicalr    s>   
+++,,A
***++A71a==BH%?%?%?@@@@@@=A"(+E+E+E"F"FFFFF6!Q<<28$=$=$=>>>>>><1*C*C*C!D!DDDDD6!Q<<28$>$>$>??????9Q<<28$=$=$=>>>>>>>>r   c                  
   t          j        g d          } |                                 }t          j        |          }| |k    sJ | |k    sJ | t          j        |           k    sJ t          j        |          |k    sJ d S )N)r+   r+   r,   r  r,   )r   r   dictionary_encoder   dictionary_decode)r   dictionary_arraydictionary_array_decodes      r   test_dictionary_decoder    s    H...//E..00 23CDD$$$$$+++++B(////// 0115EEEEEEEr   c                     t          j        g dd          } t          j        t          j                              }t          j        t                    5  t          j        | d            d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d|           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d|           d d d            n# 1 swxY w Y   t          j        | |          t          j        g dd	          k    sJ t          j        d
gd          } t          j        t          j
                    d          }t          j        t           j                  5  t          j        | d           d d d            n# 1 swxY w Y   t          j        | dd          t          j        dgd          k    sJ t          j        | |          t          j        dgd          k    sJ t          j        t          j        ddd          t          j        ddd          g          } t          j        ddgd          }t          j        | d          |k    sJ t          j        ddgg dgt          j        t          j                                        } t          j        ddgg dgt          j        t          j                                        }t          j        | |j                  |k    sJ d S )Nr6  r#   r   )target_typer    r  T)r   r   r   l    )allow_int_overflowFr   rg   i  r4   i  l    x\Nl    0E*ztimestamp[ms]r5   )r3   r6   r   rk   rl   )34r  )r   r   r   r   r   rD   rE   rF   castr  r    rb  datetime
large_listr  rb  r   )r  r   allow_overflow_optionsr  s       r   	test_castr    s   
(<<<g
.
.
.CnRWYY''G	y	!	! ' '
&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
z	"	" / /
Wg..../ / / / / / / / / / / / / / / 
z	"	" 1 1
$00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 73(((BH6-# -# -# # # # # (K=w
/
/
/C^


t- - - 
r	'	'  
W               73e,,,"G0L0L0LLLLL73 677728	7< < <     (		4A	&	&(9$1(E(EFH HCx6_MMMH73((H4444
(QFIII&R]2799-E-E
F
F
FCx#s___5Xbgii002 2 2H73&&(222222sH   A::A>A>CC	C&D

DD#GG	G	
value_typec                     t          j        ddd          }t          j        |g|           }t	          j        ||           |k    sJ d S )Ni  r3   r4   r   )r  dater   r   r   r  )r  dtr  s      r   test_identity_cast_datesr  ;  sN    	tQ	"	"B
(B4j
)
)
)C73
##s******r   c                 F   t          j        t          j        d|           d          }t          j                    }t          j        t          j        d|          d          }t           j                            t          j        g d|          |          }||                    |          j        k    sJ t           j                            t          j        g d|          |          }||                    |          j        k    sJ t          j	                    }t          j        t          j        d|          d          }t           j                            t          j        g d|          |          }||                    |          j        k    sJ t          j        t          j        d|           d          }d	}t          j        t           j        j        |
          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nelementr5   rV   )r4   r5   r3   r6   r   r7   r   )r4   NNr6   r   r7   )NNNNNNr3   z&Size of FixedSizeList is not the same.r>   )r   r  ri   r    FixedSizeListArrayr  r   r  r   r  rD   rE   libArrowTypeError)r  	cast_typedtyper   fslerr_msgs         r   test_fsl_to_fsl_castr  C  s5    )Z88!<<IHJJE8BHXu--q11D


+
+
###%000t , = =C++00000 

+
+
)))666T , C CC++00000 GIIE8BHXu--q11D


+
+
555EBBB , O OC++00000 )Z88!<<I6G	rv,G	<	<	<                   s   3HHHDecimalTypeTraits)r   factorymax_precisionFloatToDecimalCase)	precisionrI  	float_val	decimal32	decimal64   rH  r?  rJ  r@  c                     | dk    sJ |dk    sJ t          |           d|z  z  }|d|z  z  | k    r6t          j        |d          }|d|z  z  | k    rt          j        |d          }|d|z  z  | k    sJ |S )zA
    Find the largest float f such as `f * 10**scale <= val`
    r   r"           )r$   r  	nextafter)valrI  r  s      r   largest_scaled_float_not_abover  n  s     !8888A::::c

RY&I2u9s""LC00	r5y 3&&Y44Ir5y C''''r   c                     t          | t                    sJ t          j        |           }|                    |           }t          |          }|S )zS
    Return a float representation (possibly approximate) of `int_val**-scale`
    )r   intrE  r>  scalebr$   )int_valrI  unscaledscaledr  s        r   scaled_floatr  ~  sM     gs#####w''H__eV$$FfIr   c              #   (  K   d}t          d|d          D ]{}t          d|d          D ]g}t          ||d          V  t          ||d          V  dt          ||z
  |          z  }t          d|z  |z
  |          }t          |||          V  h|d	S )
zC
    Return FloatToDecimalCase instances with integral values.
    r9   r4   r3   r   r5   r  rw  r"   N)r  r  ry   r  )float_tyr  mantissa_digitsr  rI  epsilon
abs_maxvals          r   $integral_float_to_decimal_cast_casesr    s       O1mQ// C C	1i++ 	C 	CE$Ys;;;;;$Ys;;;;;#i/95AAAG7I'0 0J$YzBBBBBB	CC Cr   c              #   (  K   d}t          d|d          D ]{}t          d|d          D ]g}ddt          ||z
  d          z  z  }t          ||          }t          d|z  |z
  |          }t          |||          V  t          |||          V  h|dS )z?
    Return FloatToDecimalCase instances with real values.
    r9   r4   r3   r   r5   r"   N)r  ry   r  r  )r  r  r  r  rI  r  
abs_minvalr  s           r    real_float_to_decimal_cast_casesr    s       O1mQ// C C	1i++ 	C 	CE"c)o"=qAAAAG7GGJ7I'0 0J$YzBBBBB$YzBBBBBB	CC Cr   c              #   @  K   t          j        d          }t          d|d          D ]u}t          d|d          D ]a}t          d          D ]O}|                    dd|z            }t	          ||          }|d|z  z  d|z  k     sJ t          |||          V  PbvdS )	z?
    Return random-generated FloatToDecimalCase instances.
    r  r4   r7   r   r6      r"   N)r  Randomr  	randranger  r  )r  r  rr  rI  r  r  r  s           r   "random_float_to_decimal_cast_casesr     s       	bA1mQ// F F	1i++ 	F 	FE2YY F F;;q"i-88(599	 2u9,r9}<<<<(E9EEEEEE	F	FF Fr   c                    |j         |_        t          j        |_        |                    |          }|                    t          j        d                              |j	                             }t          j        ||           }t          j        ||                                          }||k    rSt          ||z
            d|j	        z  z  }|j         |dz
  k     rdnd}	||	k    s J d|d|j          d|d	|d
|
            d S d S )Nr4   r   r"   r5   r6   zfloat_val = z, precision=z, expected = z, actual = z, diff_digits = )r  precrE  ROUND_HALF_EVENroundingcreate_decimal_from_floatquantizer>  r  rI  r   r   r   r  r9  abs)
r  r  
decimal_tydecimal_ctxr  r  r   r  diff_digitslimits
             r   check_cast_float_to_decimalr    sF    "+K"2K44Y??H  !3!3!:!:J<L;L!M!MNNH
	)(+++AWQ
##))++F &8+,,r:3C/CC)MA,===1e###-9 - -J4H - -"- -17- -(- - $##  $#r   r  )idsr  c                     | j         S r   r   vs    r   <lambda>r        qv r   case_generator)	integralsrealsr  c           
          t          j                    5 } || |j                  D ]=}t          | |j        |                    |j        |j                  ||j                   >	 d d d            d S # 1 swxY w Y   d S r   )rE  localcontextr  r  r  r  r  rI  )r  r  r  ctxcases        r   test_cast_float_to_decimalr    s     
			 /3"N8Z-EFF 	/ 	/D'$.""4>4:>>Z-/ / / /	// / / / / / / / / / / / / / / / / /s   AA22A69A6decimal_traitsc                     | j         S r   r  r  s    r   r  r    r  r   c                    t          j        d          }t          j                    t          j        t          j                    t          j        i|          }t          j                    dt          j                    di|          }t          j                    dt          j                    di|          \  }}t          j        t          j        d|z                      }|j	        }||k     rRt          j        t          j
        d|z                      }t          j        t          j        d|z                      }t          j                    5 }	|}
|
|	_        t          | |
t          j        t          j        d|z                      z             }t!          |t          j        t          j        d|z                                }t#          ||          D ]}|                    |
|          }| t          j        t          j
        d|
|z
  z                      z   }||cxk    r|k    sn J t#          d          D ]}|                    d	d|z            }t	          j         ||          |          }t+          ||          sJ |d	k    rt          j        |          d|z  z  }nt          j        |          d| z  z  }t/          |                    |                    }t3          j        t          j        || 
          |                                          }t/          |                    |                    }t;          ||z
            dk    sJ !	 ddd           dS # 1 swxY w Y   dS )zL
    Test float-to-decimal conversion against exactly generated values.
    +      5   )i   )ii  r5   r"   r   r   r   r4   N)r  r  r   r  r  r  mathfloorlog10r  log2rE  r  r  ry   ceilr  r  r  r  ldexpr   r>  rb  r  r   r  r   r9  r  )r  r  r  np_float_tymantissa_bitsfloat_exp_minfloat_exp_maxr  r  r  r  	min_scale	max_scalerI  r  	float_expr  mantissar  r  expected_as_intr  actual_as_ints                          r   !test_cast_float_to_decimal_randomr3    s    	bA

bj

bj K
 	
b

b M
 	
k

m$ $ M= jA},<!=!=>>O"0M &&
49R->#?#?@@*TZ=0@%A%ABB				 "A3#	 !DIdjM9I.J.J$K$KKM M	
4:a.>#?#?@@B B	9i00 	A 	AE'//	5AAJ
 (DIb9u3D.E$F$FGGHI I>>>>>>>>>>1XX A A;;q!]*:;;H[[%:%:IFF	!)[99999 >>&x881i<GHH&x881yj=HH"'(>(>"?"?Iih777E EEJUWW  %fmmE&:&: ; ;=?:;;q@@@@@A	A"A "A "A "A "A "A "A "A "A "A "A "A "A "A "A "A "A "As   HM77M;>M;c            	         t          j        g d          } t          j        | dd          }t          j        t	          j        ddd          d t	          j        dd	d
          gt          j        d                    }||k    sJ t          j        | dd          |k    sJ t          j        t	          j        ddd          d d gt          j        d                    }t          j        | ddd          }||k    sJ t          j        t           j        d          5  t          j        | ddd           d d d            n# 1 swxY w Y   t          j        t           j        d          5  t          j        | dd           d d d            n# 1 swxY w Y   t          j        | ddd          }|t          j        g dt          j        d                    k    sJ d S )N)z5/1/2020Nz
12/13/1900z%m/%d/%Yr   formatuniti  r   r4   il        r   r7  z%d/%m/%YT)r6  r7  error_is_nullz"Failed to parse string: '5/1/2020'r>   z%Y-%m-%dF)NNN)	r   r   r   strptimer  	timestamprD   rE   rb  )r  gotr  s      r   test_strptimer?  !	  s   
(333
4
4C
+c*3
7
7
7Cx		4A	&	&h.?b".M.MN\#     H (????;sJS111S8888x*4A66dC\#..0 0 0H
+c*3d
K
K
KC(????	rA
C 
C 
C K K
C
EJJJJK K K K K K K K K K K K K K K 
rA
C 
C 
C 6 6
C
55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 +c*3d
K
K
KC"(---BL4E4EFFFFFFFFFs$   %E

EE5FF Fc            	         g d} g d}g d}t           j        dk    r|                    g d           |D ]/}t          j        |                               |          }dD ]}t          j        |t          j        ||                    }|D ]}t          j
        |          }t          j        ||          }	t          j        |                    |                                        |	j                  }
|	                    |
          sJ d	}t          j        |t          j        d
|                    }t          j        |t          j
                              }	t          j        |                    |                                        |	j                  }
|	                    |
          sJ t          j        |t          j        d
|                    }t          j        |t          j
        |dz                       }	t          j        |                    |dz                                           |	j                  }
|	                    |
          sJ t          j        |t          j        d
|                    }t          j
        d          }t          j        ||          }	t          j        |                    d                                        |	j                  }
|	                    |
          sJ t          j        |t          j        d|                    }t          j
        d          }t          j        ||          }	t          j        |                    d                                        |	j                  }
|	                    |
          sJ t          j        |t          j        d
|                    }t          j
        |d          }t          j        ||          }	t          j        |                    |                                        |	j                  }
|	                    |
          sJ 1d	}t          j        |           }t          j        |t          j        d
                    }t          j        |t          j
        |                    }	t          j        |                    |                                        |	j                  }
t          j        ||          |	k    sJ |	                    |
          sJ t          j        t          j        d          5  t          j        |t          j
        |dz                        d d d            n# 1 swxY w Y   t          j        t          j        d          5  t          j        |t          j
        |dz                        d d d            d S # 1 swxY w Y   d S )N)z2018-03-10 09:00z2038-01-31 12:23N)CETr^   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  %Y-%m-%dT%H:%M:%Sr   rC  z%SrG  z%S.%fC)localez.Timezone not present, cannot convert to stringr>   rB  )sysplatformextendpdto_datetimetz_localizer   r   r=  r   r   strftimer  r   r  rD   rE   rb  )times	timezonesformatstimezonetsr7  tsafmtr   r  r  s              r   test_strftimerZ  =	  s    ;::E222IQ Q QG
|w)))*** ,' ,'^E""..x88+ 	/ 	/D(2BLx$@$@AAAC / /,S11S':::8BKK$4$455::6;GG}}X....../ " hrS( ; ;<<<S"*<*>*>???8BKK,,--226;??}}X&&&&& hrS( ; ;<<<S"*<S4Z*H*HIII8BKKd
334499&+FF}}X&&&&& hrS( ; ;<<<$T**S'2228BKK--..33FK@@}}X&&&&& hrT8 < <===$T**S'2228BKK001166v{CC}}X&&&&& hrS( ; ;<<<$S555S'2228BKK,,--226;??}}X&&&&&& C			B
(2BL--
.
.
.C[b&8&=&=>>>FxC(())..v{;;H ;sC  F****=="""""	rM
O 
O 
O A A
C!3C$J!?!?@@@@A A A A A A A A A A A A A A A 
rM
O 
O 
O A A
C!3C$J!?!?@@@@A A A A A A A A A A A A A A A A A As$   ,VVV,W::W>W>c                    ddl m} t          j        |                               d                              |                                          }t          j        |t          j	        d|                    }|j
        j        dz  |j
        j        z   dz                      d          }t          j        d	t          j                              t          j        d
t          j                              t          j        dt          j                              g} |t          j                   |d          k     r||                    d                               d          }|                    d                               d          }|                    d                               d          }	n|j
                                        d                             d          }|j
                                        d                             d          }|j
                                        d                             d          }	t          j                            |||	g|          }
|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          }tA          j        |          !                    t          j        |                    sJ tA          j"        |          !                    t          j        |j
        j"                            sJ tA          j        |          !                    t          j        |                    sJ tA          j        |          !                    t          j        |                    sJ tA          j#        |          !                    t          j        |                    sJ tA          j$        |          !                    t          j        |                    sJ tA          j%        |          !                    t          j        |                    sJ tA          j&        |          !                    t          j        |                    sJ tA          j'        |          !                    |
          sJ tA          j        |          !                    t          j        |                    sJ tA          j        |          !                    t          j        |                    sJ tA          j        |          !                    t          j        |                    sJ tA          j        |          !                    t          j        |                    sJ tA          j(        |          !                    t          j        |dz                      sJ tA          j        |          !                    t          j        |dz                      sJ tA          j        |          !                    t          j        |                    sJ tA          j)        |          !                    t          j        |                    sJ tA          j*        |          !                    t          j        |j
                            d                               sJ |j
        j+        r|j
        j+        tX          j-        j.        u rdgt_          |          z  }n|0                    d           }tA          j1        |          !                    t          j        |                    sJ tA          j2        dd          }tA          j#        ||          !                    t          j        |dz                       sJ tA          j3        ddd          }tA          j4        ||          !                    t          j        |                    sJ d S )Nr   )Versionr^   rH  tzi  g&.>r8   iso_yeariso_weekiso_day_of_weekz1.1.0c                 6    |                                  d         S Nr   isocalendarr  s    r   r  z,_check_datetime_components.<locals>.<lambda>	      AMMOOA$6 r   r#   c                 6    |                                  d         S )Nr4   rd  rf  s    r   r  z,_check_datetime_components.<locals>.<lambda>	  rg  r   c                 6    |                                  d         S )Nr5   rd  rf  s    r   r  z,_check_datetime_components.<locals>.<lambda>	  s    1==??1#5 r   yearweekday)fieldsFc                 <    |                                  j        dk    S rc  )dstsecondsrf  s    r   r  z,_check_datetime_components.<locals>.<lambda>	  s    !(; r   r4   rb   r  Tr   )5pyarrow.vendored.versionr\  rO  rP  rQ  
tz_convert	to_seriesr   r   r=  r  microsecond
nanosecondrb  ri   r#   __version__mapr  re  StructArrayr  rj  monthrl  	dayofweek	dayofyearquarterhourminuter   rV   r   r  is_leap_yearday_of_weekday_of_yearr_  r`  iso_calendarmillisecond	subsecondlocal_timestampr^  r  rV  utcrA   applyis_dstr   r   rk  )
timestampsrV  r\  rW  rX  
subsecondsiso_calendar_fieldsr_  r`  iso_dayr  rj  ry  rl  rz  r{  r|  r}  r~  r   rt  ru  r  day_of_week_optionsweek_optionss                            r   _check_datetime_componentsr  	  s   000000	
	#	#	/	/
 
z(##IIKK 
(2r|DX666
7
7C5$w.5#$'/016q  	RXZZ((
RXZZ((
"BHJJ// wr~!1!111666677>>wGG666677>>wGG&&5566==gFF 5$$&&v.55g>>5$$&&v.55g>>%##%%e,33G<<>--	8W%" . $ $L 5:W%%DEKw''E
%)

7
#
#C&&w//I&&w//Iem""7++G5:W%%DU\  ))FU\ ''00F%#**733K!((11J73<<rx~~.....?3&&rx0B'C'CDDDDD8C==000006#;;bhsmm,,,,,>#%%bhy&9&9:::::>#%%bhy&9&9:::::;s""28H#5#566666;s""28H#5#566666?3&&|44444:c??!!"(7"3"34444473<<rx~~.....9S>>  &!1!1222229S>>  &!1!122222>#%%bh{g/E&F&FGGGGG>#%%bh{W/D&E&EFFFFF=$$RXj%9%9:::::<##BHZ$8$899999c""))"(253D3DT3J3J*K*KLLLLL	ux 758x(,,,Ws2ww&FFXX;;<<Fy~~$$RXf%5%566666-!- - ->#':;;;BB
Q! ! ! ! ! >$)+ + +L 73---44RXh5G5GHHHHHHHr   c                     g d}g d}t          |           | j        j        j        d         st	          j        d           d S |D ]}t          ||           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)r^   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   rD   r  )r   r  rT  rV  s       r    test_extract_datetime_componentsr  	  s    + + +JD D DI z*** >!,_= =CDDDDD! 	= 	=H&z8<<<<	= 	=r   c                  P   t          j        dgdd          } |                     t          j        dd                    }t          j        |          d                                         dk    sJ t          j        |          d                                         d	k    sJ d S )
Nz2012-12-12T12:12:12rI  r   r5  z+05:30r]  r      r  )r   r<  r  r   r=  r}  r9  r~  )r  	zoned_arrs     r   test_offset_timezoner  	  s    
+,-6IPS
T
T
TCch77788I79a &&((B....9Y"((**b000000r   r7  rE  c                 @   t          j        t          j        dddd          gdz  t          j        |                     }t	          j        |          }t           j                            dgdz  dgdz  dgdz  gg d	
          }|                    |          sJ d S )Ni  r4   r5   r8   2   i  4   rf  )r_  r`  ra  r  )	r   r   r  r=  r   r  rx  r  r  )r7  r  r  r  s       r   test_iso_calendar_longer_arrayr  
  s     (H%dAq!445b8",t:L:L
M
MC_S!!F~))
RDGaSV$999 *  H =="""""""r   c                   	   t          j        d          } t          j        g d          }t          j        ddg          }t          j        g d          }t          j        ||           }t          j        ||           }dD ]6}t          j        |          }t          j        ||           }|                    |          }	t          j        ||          }
|
	                    t          j        |	                    sJ t          j        ||          }
|
	                    t          j        |	                    sJ t          j        |t          j        d|                    }t          j        t           j        d	
          5  t          j        ||           d d d            n# 1 swxY w Y   8t          j        d          }t          j        t          d
          5  t          j        ||           d d d            n# 1 swxY w Y   d}t          j        |          }t          j        |dd          }t          j        |dd          }t          j        t          d| d
          5  t          j        ||           d d d            n# 1 swxY w Y   t          j        |                    |d                    }	t          j        ||          }
|		                    |
           t          j        |                    |d                    }	t          j        ||          }
|		                    |
           t          j        |          }t          j        |dd          }t          j        |dd          }t          j        t          d| d
          5  t          j        ||           d d d            n# 1 swxY w Y   |                    |g d          }	t          j        ||          }
|
	                    t          j        |	                     |                    |g d          }	t          j        ||          }
|
	                    t          j        |	                     d S )NrH  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   )r^   r  r  r  zalready have a timezone:r>   zEurope/Brusselsssznot found in timezone databaseEurope/Brusselsrv   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=  rO  rP  r   r   r   rQ  assume_timezoner  rD   rE   rb  r  )ts_typer  r  r  ambiguous_arraynonexistent_arrayrV  r   tar  r  ta_zonedinvalid_optionsoptions_nonexistent_raiseoptions_nonexistent_earliestoptions_nonexistent_latestoptions_ambiguous_raiseoptions_ambiguous_latestoptions_ambiguous_earliests                      r   test_assume_timezoner  
  s    l4  G !: !: !: ; ;J ."7"7"9 : :K  7  7  7 8 8I hyw777O7;;;> : :*844Xjw///))(33#B888}}RXh//00000#B11}}RXh//000008JR\$-I-IJJJ]2?2LMMM 	: 	:x9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ./BCCO	z)I	J	J	J 8 8
277778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 !H " 8 B B#%#;G$= $= $= !#!9G"; "; "; 
z0$,0 0 0
1 
1 
1 > > 	,#<	> 	> 	> 	>> > > > > > > > > > > > > > > x//o 0 / / 0 0H#=? ? ?FOOFx//. 0 0 0 1 1H#?A A AFOOF 6x@@!7H' ;  ;  ;!#!9JG"= "= "= 
z6*26 6 6
7 
7 
7 M M 	?4KLLLLM M M M M M M M M M M M M M M
 $$X9K9K9K$LLH!;= = =F
MM"(8$$%%%$$X9N9N9N$OOH!9; ; ;F
MM"(8$$%%%%%sH   F00F4	7F4	,HHH=J  J$'J$4OOOc           	         dddddddd}ddddddd	}t          j        |           }|D ]}t          |          ||         z   }t          j        ||          }t          j        ||
                                          }	| j                            |          }
t          j
                            |	|
           t          j        ||
                                          }	| j                            |          }
t          j
                            |	|
           t          j        ||
                                          }	| j                            |          }
t          j
                            |	|
           |dk    r{t          j        ||d          }| j                            ||                   }|j        j        ht          j        ||
                                          }	| |z
  j                            |          |z   }
t          j
                            |	|
           t          j        ||
                                          }	| |z
  j                            |          |z   }
t          j
                            |	|
           t          j        ||
                                          }	| |z
  j                            |          |z   }
t          j
                            |	|
           |dk    r&t          j        ||                                          }	| j                            |          }
t          j
                            |	|
           t          j        ||                                          }	| j                            |          }
t          j
                            |	|
           t          j        ||                                          }	| j                            |          }
t          j
                            |	|
           |j        j        t          j        ||d          }t          j        ||
          }	| j                            |          }
t          j        |
| k    |
t'          j        |||                   z   |
          }
t          j
                            |	|
           |dk    r$d}t          j        |                                          }	| j                            |          }
t          j
                            |	|
           t          j        |                                          }	| j                            |          }
t          j
                            |	|
           t          j        |                                          }	| j                            |          }
t          j
                            |	|
           d S d S )NrH  rG  rF  r   r  r  r  ru  rt  r  r   r~  r}  rl  )ru  rt  r  r   r~  r}  r  rl  T)calendar_based_originrg  )ceil_is_strictly_greater1D)r   r   r  r   r   ceil_temporalr  r  r'  r  r  assert_array_equalfloor_temporalr$  round_temporalrb  r   r^  whererO  	Timedelta)rW  rV   r7  unit_shorthandgreater_unitr  value	frequencyr   r  r  origins               r   _check_temporal_roundingr  l
  sA    N  L 
"B 1< 1<JJ!55	)%66!"g666@@BB5::i((

%%fh777"2w777AACC5;;y))

%%fh777"2w777AACC5;;y))

%%fh777
 5==-t49 9 9GU[[d!344Fwz!)"g>>>HHJJK+00;;fD
--fh???&r7;;;EEGGFV'--i886AHJ))&(;;;&r7;;;EEGGFV'--i886AHJ))&(;;; 5==%b5999CCEEFuzz),,HJ))&(;;;&rE:::DDFFFu{{9--HJ))&(;;;&rE:::DDFFFu{{9--HJ))&(;;; 
wz)4$8 8 8!"g6665::i((8Nr|E>$+?@@@  	
%%fh777 u}}	!"%%//115::i((

%%fh777"2&&00225;;y))

%%fh777"2&&00225;;y))

%%fh77777 }r   r  c                    d}g d}t          j        d |D                       }t          |||            g d}|D ]E}|j                            d          j                            |          }t          |||            Fd S )N)r4   r5   r3   r6   r   r7   rf  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                 :    g | ]}t          j        |d           S )rH  r:  )rO  	Timestamp)r   r  s     r   r   z'test_round_temporal.<locals>.<listcomp>
  s'    CCC1BL...CCCr   )r  zAmerica/New_Yorkr  r  r  zPacific/Marquesasr  r^   r^   )rO  Seriesr  r  rQ  rr  )r7  rV   r  rW  rT  rV  ts_zoneds          r   test_round_temporalr  
  s    
 BF) ) )J 
CC
CCC	D	DBR...S S SI  9 95$$U++.99(CC 6488889 9r   c                     t          j        g d          } t          j        |                                           dk    sJ t          j        | d                                          dk    sJ t          j        | d                                          dk    sJ t          j        | d                                          dk    sJ t          j        | d                                          dk    sJ t          j        t          d	
          5  t          j        | d           d d d            d S # 1 swxY w Y   d S )Nr4   r5   r3   NNr3   
only_validrY  	only_nullr5   r   r   z*"something else" is not a valid count moder>   zsomething else)r   r   r   rZ  r9  rD   rE   r  r2  s    r   
test_countr  
  s   
((((
)
)C8C==  A%%%%8Cl+++1133q88888Ck***0022a77778Ce$$$**,,11118C%%''1,,,,	zI
K 
K 
K ( (
&'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   D88D<?D<c                     t          j        g dt          j                              } t          j        | t          j        d                                                    dk    sJ t          j        | t          j        dt          j                                                                        dk    sJ t          j        | d                                          dk    sJ |                     dd                                          dk    sJ |                     d                                           dk    sJ t          j        d	dgd	dggt          j                              } |                     d	                                          dk    sJ |                     d	d                                          dk    sJ |                     d	d	d
                                          dk    sJ d S )N)r   r4   Nr3   r6   r   r   r5   rg   r6   r3   r`   r4   )r`   end)	r   r   r#   r   indexr   r9  r   rQ  r2  s    r   
test_indexr     s   
(%%%BHJJ
7
7
7C8C1&&,,..!33338C1279955566<<>>"DDDD8C!!##q((((99Qa9  &&((A----99T??  ""b((((

QFQF+"(**
=
=
=C99Q<<1$$$$99Qa9  &&((A----99QaQ9''--//2555555r   c                                                      t                    t                     k    sJ t                    t          t	          t                                         k    sJ  fdt	          |          D             } fdt	          |t                               D             } |                  @|dk    rt          d |D                       sJ d S t          d |D                       sJ d S |dk    r<t          fd|D                       sJ t          fd|D                       sJ d S t          fd|D                       sJ t          fd	|D                       sJ d S )
Nc                 ,    g | ]}|                  S r   r   r   r  rj  r   s     r   r   z'check_partition_nth.<locals>.<listcomp>  s"    :::4
#:::r   c                 ,    g | ]}|                  S r   r   r  s     r   r   z'check_partition_nth.<locals>.<listcomp>  s"    EEE4
#EEEr   rr   c              3      K   | ]}|d u V  	d S r   r   r   r  s     r   r   z&check_partition_nth.<locals>.<genexpr>  &      66QqDy666666r   c              3      K   | ]}|d u V  	d S r   r   r  s     r   r   z&check_partition_nth.<locals>.<genexpr>  r  r   c              3   ,   K   | ]}|d u p|k    V  d S r   r   r   r  ps     r   r   z&check_partition_nth.<locals>.<genexpr>  0      @@qqDy*AF@@@@@@r   c              3   $   K   | ]
}|k    V  d S r   r   r  s     r   r   z&check_partition_nth.<locals>.<genexpr>  '      33!qAv333333r   c              3   $   K   | ]
}|k    V  d S r   r   r  s     r   r   z&check_partition_nth.<locals>.<genexpr>  r  r   c              3   ,   K   | ]}|d u p|k    V  d S r   r   r  s     r   r   z&check_partition_nth.<locals>.<genexpr>   r  r   )r0  rA   sortedlistr  r   )rj  r   pivotrt   until_pivotafter_pivotr  s   ``    @r   check_partition_nthr    s   !!Gw<<3t99$$$$'??d5T#3#3444444:::::U5\\:::KEEEEEU5#d))-D-DEEEKWU^AyZ''66+666666666666+6666666666Z''@@@@K@@@@@@@@3333{33333333333333{33333333@@@@K@@@@@@@@@@r   c                     t          t          dd                    } t          j        |            d}t	          j        | |          }t          | ||d           t	          j        | |          |k    sJ t          j        t          d          5  t	          j        |            d d d            d S # 1 swxY w Y   d S )Nr      r"   )r  at_endz8'partition_nth_indices' cannot be called without optionsr>   )
r  r  r  shuffler   partition_nth_indicesr  rD   rE   r  )rj  r  r   s      r   test_partition_nthr  #  s
   c3  D
N4E&t5999Gguh777#D%00G;;;;	L
N 
N 
N ' ' 	 &&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   B44B8;B8c                      t          t          d                    d gdz  z   } t          j        |            dD ]0}dD ]+}t	          j        | ||          }t          | |||           ,1d S )Nr"   )r   rf  r9     )rr   r  )r  rt   )r  r  r  r  r   r  r  )rj  r  rt   r   s       r   !test_partition_nth_null_placementr  2  s    b		??dVb[(D
N4 F F4 	F 	FN.t5>LN N NGgunEEEE	FF Fr   c                  ~   dd} t          j        g d          }dD ]t}dD ])}t          j        ||d|fg          } | |||           *t          j        ||          } | ||d	           t          j        ||          } | ||d
           ut          j        |t          j        ddg                    } | ||d	           t          j        |t          j        ddg                    } | ||d
           t          j        |ddg          |k    sJ t          j        |ddg          |k    sJ d S )NFc                     t          j        |d|fg          }|                    dt          |                     }|r
| |k    sJ d S t          j        ||          }t          j        ||           }||k    sJ d S )Nr   r   r   r   sort_indicesslicerA   r  )select_k_indicesr  orderstable_sortsorted_indiceshead_k_indicesr  r  s           r   validate_select_kz.test_select_k_array.<locals>.validate_select_k>  s    '59I8JKKK'--a5E1F1FGG 	&#~555555wsN33HWS"233FX%%%%%%r   r4   r5   Nr   r   r5   r6   )r   rx   r   r  r{   )r  r   rx   r5   r   r  r   rx   r   F)r   r   r   select_k_unstabletop_k_unstablebottom_k_unstabler   )r  r  r  r  r  s        r   test_select_k_arrayr  =  s   & & & & (???
#
#C 
4 
40 	2 	2E)qgu%5$68 8 8Ffc51111"3!,,,&#|444%cQ///&#{3333!R&346 6 6  F fc<000!R&7M6NOOO  F fc;/// Q+A*BD D DGMN N N NQ)?(@AAVKKKKKKr   c                     dd} t          j        g dg dd          }dD ]}t          j        ||dg          } | ||dg	           t          j        ||t          j        d
          dfdg          } | ||ddg	           t          j        ||d
g          } | ||dg	           t          j        ||d
dg          } | ||ddg	           t          j        t          d          5  t          j        |           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        |ddg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        |dg            d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        ||dg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        ||dg           d d d            d S # 1 swxY w Y   d S )NFc                     t          j        ||          }|                    dt          |                     }|r
| |k    sJ d S t          j        ||          }t          j        ||           }||k    sJ d S )Nr   r   r  )r  tblr{   r   r  r  r  r  s           r   r  z.test_select_k_table.<locals>.validate_select_kg  s    	BBB'--a5E1F1FGG 	&#~555555wsN33HWS"233FX%%%%%%r   )r4   r5   r   )r4   r   r4   r:   r  r+   rx   r  r   r+   rx   r   r+   r   r,   z4'select_k_unstable' cannot be called without optionsr>   z,select_k_unstable requires a nonnegative `k`rg   z2select_k_unstable requires a non-empty `sort_keys`r5   not a valid sort orderr+   nonscending.Invalid sort key column: No match for.*unknownunknownrx   r  )
r   r  r   r	  ri   r
  r  rD   rE   r  )r  r  r  r  s       r   test_select_k_tabler  f  su   & & & & H9999995566E O O%Q#5"68 8 8&%4F3GHHHH%QBHSMM;#?AS"TV V VE&8:L%M	O 	O 	O 	O "5A#???&%4G3HIIII%eqS#JGGGE&8:L%M	O 	O 	O 	O 	O 
H
J 
J 
J $ $ 	U###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 
zK
M 
M 
M J J
Ub5G4HIIIIJ J J J J J J J J J J J J J J 
z5
6 
6 
6 7 7 	Ua266667 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 
z)A	B	B	B K K
Ua4H3IJJJJK K K K K K K K K K K K K K K 
zM
O 
O 
O O O
Ua4L3MNNNNO O O O O O O O O O O O O O O O O OsZ   4DDD;E  E$'E$F**F.1F.G55G9<G9IIIc                     t          j        g d          } t          j        |           }|                                g dk    sJ t          j        | d          }|                                g dk    sJ t          j        | d          }|                                g dk    sJ t          j        | dd          }|                                g d	k    sJ t          j        | dd
          }|                                g d	k    sJ t          j        t          d          5  t          j        | d           d d d            d S # 1 swxY w Y   d S )Nr  r3   r   r4   r5   rx   )r  r   r4   r   r3   r5   rr   )r  rt   r5   r4   r   r3   rs   r  r>   r  )r   r   r   array_sort_indicesr0  rD   rE   r  r  r  s     r   test_array_sort_indicesr    s   
(???
#
#C"3''F----"3k:::F----"3l;;;F----"3l2<> > >F----"32<> > >F----	z)A	B	B	B 8 8
c77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   ,EEEc                  H   t          j        g d          } t          j        |           }|                                g dk    sJ t          j        | dg          }|                                g dk    sJ t          j        | dg          }|                                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        | t          j        dg                    }|                                g dk    sJ t          j        | t          j        dgd                    }|                                g d	k    sJ d S )Nr  r  r  r   r   r  rr   r}   r  rs   r  )r   r   r   r  r0  r   r  s     r   test_sort_indices_arrayr!    s   
(???
#
#C_S!!F----_S-C,DEEEF----_S-D,EFFFF----_S-D,E,68 8 8F----_S#:";,68 8 8F----_R^/F.GHHH  F ----_R^/F.G3=? ? ?  F ------r   c                  &   t          j        g dg dd          } t          j        | dg          }|                                g dk    sJ t          j        | t          j        d          dfgd	
          }|                                g dk    sJ t          j        | ddg          }|                                g dk    sJ t          j        | ddgd	
          }|                                g dk    sJ t          j        | ddgd	          }|                                g dk    sJ t          j        t          d          5  t          j        |            d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        | dg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        | dg           d d d            d S # 1 swxY w Y   d S )N)r4   r4   Nr   )r4   r   r   r4   r:   r  r   r  r+   rx   rr   r}   )r5   r3   r   r4   r  r   r  r  rs   z"Must specify one or more sort keysr>   r  r  r  r  )	r   r  r   r  r0  ri   rD   rE   r  )r  r  s     r   test_sort_indices_tabler#    sA   H???>>??E_U/A.BCCCF----_U{/K.L,68 8 8F----_-/AB  F ----_-/AB!  F ----_#%78!  F ----	z)M	N	N	N  
               
zM
O 
O 
O E E
*B)CDDDDE E E E E E E E E E E E E E E 
z)A	B	B	B A A
*>)?@@@@A A A A A A A A A A A A A A A A A As6   E11E58E5F;;F?F?!HH
H
c                  f   t          j        g d          } t          j        | t          j        g d                    }|                                g dk    sJ t          j        | t          j        g d          d          }|                                g dk    sJ t          j        | t          j        dd	g                    }|                                g dk    sJ t          j        | t          j        dd	g          d          }|                                g dk    sJ d S )
Nr4   r5   Nr4   r5   r3   r4   r3   N	value_set)TFTTFTTr(  ra   )TFFTFTr4   r3   )r   r   r   is_inr0  r  s     r   
test_is_inr+    s:   
((((
)
)CXcRXlll%;%;<<<F!G!G!GGGGGXcRXlll%;%;MMMF!H!H!HHHHHXcRXq!f%5%5666F!H!H!HHHHHXcRXq!f%5%5$GGGF!H!H!HHHHHHHr   c                     t          j        g d          } t          j        | t          j        g d                    }|                                g dk    sJ t          j        | t          j        g d          d          }|                                g dk    sJ t          j        | t          j        dd	g                    }|                                g dk    sJ t          j        | t          j        dd	g          d          }|                                g dk    sJ t          j        | t          j        dd	g          d
          }|                                g dk    sJ d S )Nr%  r&  r'  )r   Nr5   r   Nr4   Tr)  )r   NNr   Nr4   r4   r3   re   )r   r   r   index_inr0  r  s     r   test_index_inr.    s   
((((
)
)C[(>(>???F!9!9!99999[(>(>$(* * *F!<!<!<<<<<[!Q(8(8999F!<!<!<<<<<[!Q(8(8TJJJF!<!<!<<<<< [bh1v..4@@@F!<!<!<<<<<<<r   c                     t          j        g d          } t          j        |           }|                                dgk    sJ t          j        | d          }|                                dgk    sJ t          j        | d          }|                                dgk    sJ t          j        | d          }|                                dgk    sJ t          j        | d	          }|                                dgk    sJ t          j        | d
          }|                                dgk    sJ t          j        ddg          } t          j        | g d          }|                                g dk    sJ t          j        | g dd          }|                                g dk    sJ t          j        | g dd          }|                                g dk    sJ t          j        | g dd	          }|                                g dk    sJ t          j        | g dd          }|                                g dk    sJ t          j        | g dd
          }|                                g dk    sJ t          j        | g dd
          }|                                g dk    sJ t          j        t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        | d           d d d            d S # 1 swxY w Y   d S )Nr6        @lower)interpolationr5   higherr3   nearestmidpointlinearr4   )g      ?      ?g      ?q)      ?      ?g      ?)r9  r2  )r4   r4   r4   )r5   r5   r5   )r;  r;  r;  r4   r4   r5   z Quantile must be between 0 and 1r>   皙?z"not a valid quantile interpolationzzz)r   r   r   r  r0  rD   rE   r  r  s     r   test_quantiler?    s   
(<<<
 
 C[F#&&&&[G444F!$$$$[H555F!$$$$[I666F!$$$$[J777F#&&&&[H555F#&&&&
(Aq6

C[ 1 1 1222F!2!2!22222[ 1 1 1IIIF****[ 1 1 1JJJF****[ 1 1 1LLLF0000[ 1 1 1KKKF****[ 1 1 1JJJF!2!2!22222 [///xHHHF!2!2!22222	z)K	L	L	L    
C3                             	z)M	N	N	N . .
Cu----. . . . . . . . . . . . . . . . . .s$   LLL'MMMc                     t          j        g d          } t          j        |           }|                                dgk    sJ t          j        t          j        ddg          t          j        ddg          g          } t          j        |           }|                                dgk    sJ t          j        g d          } t          j        | g d          }|                                g d	k    sJ t          j        t          j        ddg          t          j        ddg          g          } t          j        | g d          }|                                g d	k    sJ d S )
Nr6  r0  r4   r5   r3   r6   )r   r7  r4   r8  )r4   r0  r6   )r   r   r   tdigestr0  rQ  r  s     r   test_tdigestrB  ;  sW   
(<<<
 
 CZ__F#&&&&

BHaV,,bh1v.>.>?
@
@CZ__F#&&&&
(<<<
 
 CZ{{{+++F,,,,

BHaV,,bh1v.>.>?
@
@CZ[[[))F,,,,,,r   c                      t          j        d gt          j                                                  d          } |                     t          j                              }|t          j        dgt          j                              k    sJ d S )NFr   )r   r   r  r  r  r   r  s     r   test_fill_null_segfaultrD  M  sk    
(D628::
&
&
0
0
7
7CXXbgii  FRXqc2799--------r   c                     t          j        g d          } t          j        g d          }t          j        g d          }t          j        | |          }|t          j        g d          k    sJ t          j        | |          }|t          j        g d          k    sJ t          j        | ||          }|t          j        g d          k    sJ t          j        | ||          }|t          j        g d          k    sJ t          j        | |d          }|t          j        g d	          k    sJ t          j        | |d          }|t          j        g d          k    sJ t          j        | |t          j                    
          }|t          j        g d	          k    sJ t          j        | |t          j                    
          }|t          j        g d          k    sJ t          j        | |d          }|t          j        g d          k    sJ t          j        | |d          }|t          j        g d          k    sJ d S )NrP  )r3   r4   r5   r5   r3   N)r3   r5   r3   r<  )r3   r3   r3   Tre   )r5   r3   r3   r  F)r4   r5   N)r   r   r   max_element_wiser  r   )r:  r;  arr3r  s       r   test_min_max_element_wiserI  T  sq   8IIID8IIID8LLL!!D t,,FRXiii(((((( t,,FRXiii(((((( tT22FRXiii(((((( tT22FRXiii((((((  t===FRXiii(((((( t===FRXiii(((((( dB:<<> > >FRXiii(((((( dB:<<> > >FRXiii((((((  t>>>FRXlll++++++ t>>>FRXlll++++++++r   r`   )r:  g      %@g      %ra   )TFc                    t          |           }d |t          j        |t          j                              t          j        |t          j                              g}|D ]}t          j        g d          t          j        g d          t          j        dd gddgg          g}t          j        g d          |rt          j        g d          nt          j        g d	          |rt          j        g dg          nt          j        g d	g          g}t          |          D ]R\  }}t          j	        |||
          }	t          j
        ||         ||nd          }
|	                    |
          sJ Sd | t          j        | t          j                              t          j        | t          j                              g}|D ]}t          j        g d          t          j        dt          j        ddddg          t          j        dt          j        d dd dg          g}t          j        g d          t          j        dt          j        t          j        t          j        t          j        t          j        g          |r8t          j        dt          j        d t          j        d t          j        g          n#t          j        dt          j        d d d d g          g}t          |          D ]\  }}t          j	        |||
          }	t          j
        ||         ||nd          }
t          j                            |	                    d          |
                    d                     dt          j        d          dfD ]P}t'          j        t          j                  5  t          j	        g d|           d d d            n# 1 swxY w Y   Qd S )Nr   rP  )r   Nr     r   r  rK  )r4   r3   r7   )r   Nr  r  )r   NNNr_   )      ?g      @g     @@r4   r5   r  r6   r   r3   )rL  g      @g     @Fzero_copy_onlyr+   arrowr=  r  )r  r   r   r   r#   r   rQ  r	  r   cumulative_sumr   r  r  r  r  r  r  assert_array_almost_equalto_numpyrD   rE   rb  r`   ra   	start_intstartsstrtarraysexpected_arraysr  r  r  r  s              r   test_cumulative_sumrY  v  s&   
 E

IIryCCCi	

3335F + +HYYYH&&&''q$i"b233
 HYYY?BH&&&'''!x(=(=(=>>IB///0111!/1F1F1F0GHH
  '' 	+ 	+FAs&s$:NNNFvoa0$:J$$#$& &H==******	+ E29U>>>iBJLL1113F P PH+++,,HaB1-..Haq$233
 H,,,--Ha@AAMBHarvtRV<===!xBFD$d(KLL	
  '' 	P 	PFAs&s$:NNNFvoa0$:J$$#$& &HJ00$ 2A 2& 2&'/'8'8'8'N'NP P P P	P bi((#. 5 5]2?++ 	5 	5iiit4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	55 5   >O##O'	*O'	c                    t          |           }d |t          j        |t          j                              t          j        |t          j                              g}|D ]}t          j        g d          t          j        g d          t          j        dd gddgg          g}t          j        g d          |rt          j        g d          nt          j        g d	          |rt          j        g dg          nt          j        g d	g          g}t          |          D ]R\  }}t          j	        |||
          }	t          j
        ||         ||nd          }
|	                    |
          sJ Sd | t          j        | t          j                              t          j        | t          j                              g}|D ]}t          j        g d          t          j        dt          j        ddddg          t          j        dt          j        d dd dg          g}t          j        g d          t          j        dt          j        t          j        t          j        t          j        t          j        g          |r8t          j        dt          j        d t          j        d t          j        g          n#t          j        dt          j        d d d d g          g}t          |          D ]\  }}t          j	        |||
          }	t          j
        ||         ||nd          }
t          j                            |	                    d          |
                    d                     dt          j        d          dfD ]P}t'          j        t          j                  5  t          j	        g d|           d d d            n# 1 swxY w Y   Qd S )Nr   rP  )r4   Nr  r   r4   r  r   )r4   r5   r7   )r4   Nr  r   )r4   NNNr_   )r;  r0  ri  r5   r  r6   r3   )r;  g      @g     @*@FrM  r+   rO  r=  r  )r  r   r   r   r#   r   rQ  r	  r   cumulative_prodr`  r  r  r  r  r  r  rQ  rR  rD   rE   rb  rS  s              r   test_cumulative_prodr]    s#   
 E

IIryCCCi	

3335F + +HYYYH%%%&&q$i"a122
 HYYY?BH'''(((!x(=(=(=>>IB0001222!/1F1F1F0GHH
  '' 	+ 	+FAs'4JOOOF{?1#5t?Ott()+ +H==******	+ E29U>>>iBJLL1113F P PH___%%HaB1-..Haq$233
 H((())Ha@AAMBHarvtRV<===!xBFD$d(KLL	
  '' 	P 	PFAs'4JOOOF{?1#5t?Ott()+ +HJ00$ 2A 2& 2&'/'8'8'8'N'NP P P P	P bi((#. 6 6]2?++ 	6 	6yyy5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	66 6rZ  )r7  ri  g      @c                 8   t          |           }d |t          j        |t          j                              t          j        |t          j                              g}|D ],}t          j        g d          t          j        g d          t          j        g dg dg          g}t          j        g d          |rt          j        g d          nt          j        g d          |rt          j        g dg          nt          j        g dg          g}t          |          D ]a\  }}t          j	        |||	          }	t          j
        ||         ||nt          d
          d          }
|	                    |
          sJ b.d | t          j        | t          j                              t          j        | t          j                              g}|D ]N}t          j        g d          t          j        dddt          j        ddg          t          j        ddd t          j        dd g          g}t          j        g d          t          j        g d          |rt          j        g d          nt          j        g d          g}t          |          D ]\  }}t          j	        |||	          }	t          j
        ||         ||nd
d          }
t          j                            |	                    d          |
                    d                     Pdt          j        d          dfD ]P}t'          j        t          j                  5  t          j	        g d|           d d d            n# 1 swxY w Y   Qd S )Nr   )r5   r4   r3   r   r6   r7   )r5   r4   Nr   r6   N)r5   r4   N)r   r6   N)r5   r5   r3   r   r   r7   )r5   r5   Nr   r   N)r5   r5   NNNNr_   g    eFre   )r0  ?rj  ffffff@皙@@r0  r_  rj  ra  rb  )r0  r0  rj  r`  r`  rb  )r0  r0  rj  rj  ra  rb  )r0  r0  Nr0  ra  N)r0  r0  NNNNrM  r+   rO  r=  rP  r  )r  r   r   r   r#   r   rQ  r	  r   cumulative_maxrG  r  r  r  r  r  r  rQ  rR  rD   rE   rb  rS  s              r   test_cumulative_maxrd    s$   
 E

IIryCCCi	

3335F + +H'''((H---..lllLLL9::
 H'''((HBH---...!x(F(F(FGG?B6667888<<<=>>
  '' 	+ 	+FAs&s$:NNNF*"D,<DD#d)) " " "H ==******	+ E29U>>>iBJLL1113F P PH33344Hc3RVS#677Hc3bfc4899
 H33344H33344LBH555666!x(J(J(JKK	
  '' 	P 	PFAs&s$:NNNF*"D,<DD$ " " "H J00$ 2A 2& 2&'/'8'8'8'N'NP P P P	P bi((#. 5 5]2?++ 	5 	5iiit4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	55 5   )NN	N	c                 8   t          |           }d |t          j        |t          j                              t          j        |t          j                              g}|D ],}t          j        g d          t          j        g d          t          j        g dg dg          g}t          j        g d          |rt          j        g d          nt          j        g d          |rt          j        g dg          nt          j        g dg          g}t          |          D ]a\  }}t          j	        |||	          }	t          j
        ||         ||nt          d
          d          }
|	                    |
          sJ b.d | t          j        | t          j                              t          j        | t          j                              g}|D ]N}t          j        g d          t          j        dddt          j        ddg          t          j        ddd t          j        dd g          g}t          j        g d          t          j        g d          |rt          j        g d          nt          j        g d          g}t          |          D ]\  }}t          j	        |||	          }	t          j
        ||         ||nd
d          }
t          j                            |	                    d          |
                    d                     Pdt          j        d          dfD ]P}t'          j        t          j                  5  t          j        g d|           d d d            n# 1 swxY w Y   Qd S )Nr   )r   r7   r6   r5   r3   r4   )r   r7   Nr5   r3   N)r   r7   NrF  )r   r   r6   r5   r5   r4   )r   r   Nr5   r5   N)r   r   NNNNr_   g    eAFre   )      @333333@@ @333333@333333?rg  rh  ri  rk  rl  )rg  rg  ri  rj  rj  rl  )rg  rg  ri  ri  rk  rl  )rg  rg  Nrg  rk  N)rg  rg  NNNNrM  r+   rO  r=  rP  r  )r  r   r   r   r#   r   rQ  r	  r   cumulative_minr  r  r  r  r  r  r  rQ  rR  rD   rE   rb  rc  rS  s              r   test_cumulative_minrn    s$   
 E

IIryCCCi	

3335F + +H'''((H---..lllLLL9::
 H'''((HBH---...!x(F(F(FGG?B6667888<<<=>>
  '' 	+ 	+FAs&s$:NNNF*"D,<DD#c(( " " "H ==******	+ E29U>>>iBJLL1113F P PH33344Hc3RVS#677Hc3bfc4899
 H33344H33344LBH555666!x(J(J(JKK	
  '' 	P 	PFAs&s$:NNNF*"D,<DD# " " "H J00$ 2A 2& 2&'/'8'8'8'N'NP P P P	P bi((#. 5 5]2?++ 	5 	5iiit4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	55 5re  c                     t          j        dd                                          dddk    sJ t          j        ddddg                                          dddk    sJ t          j        g dd	                                          t          j                            g dd	                                gd
                                          k    sJ t          j        t          d          5  t          j        g dd	                                           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        ddg           d d d            d S # 1 swxY w Y   d S )Nr4   r+   )r   rk   r  r   )field_names)r  r   rP  za b cz0 1r  r  r>   r6  z0 arguments but 2 field namesonetwo)
r   make_structr9  splitr   rx  r  rD   rE   r  r   r   r   test_make_structru  X  s   >!S!!''))13-?-?????>!SsCj999??AASF F     >)))!--//+ +.0n.H.H'ii%mmooJ/6;kkmm /I /E /EE E E E
 
zJ
L 
L 
L 6 6
|||W]]__5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
z)H	I	I	I 3 3
E5>22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s$   6*D,,D03D0E77E;>E;c                     t          j        t          j                    t          j                              } t          j        ddgdgg ddgd g|           }t          j        g dt          j                              }t          j        g dt          j                              }t          j        d	gd d d
dgd gt          j        t          j                                        }t          j        |dd          |k    sJ t          j        |t          j        dt          j                              d          |k    sJ t          j        |t          j        dt          j                              d          |k    sJ t          j        |t          j        dt          j                              d          |k    sJ d S )N)rq  r4   )rr  r5   )noner3   )rq  r   )rq  rf  r   )r4   NNr   N)r4   NNrf  Nr4   r   rf  rq  ro   lastr   )	r   map_rb  r    r   r  r   
map_lookupr   )r  r  result_firstresult_last
result_alls        r   test_map_lookupr~  k  s   	BHJJ	'	'B
(Z,{mZ0$8>@B B BC844428::FFFL(333"(**EEEKA3dQFD9!x

335 5 5J =eW--=====biBGII   ') ),89 9 9 9=biBGII   &( (+67 7 7 7=biBGII   %' '*45 5 5 5 5 5r   c                     t          j        g dt          j                              } t          j        g d          }t           j                            | |gddg          }t           j                            | |gddg          }t          j        |d          |k    sJ t          j        |d          |k    sJ t          j        |ddg          |k    sJ t          j        |d	dg          |k    sJ t          j        |d
          |k    sJ t          j        |t          j        d                    |k    sJ t          j        |d          | k    sJ t          j        |dg          | k    sJ t          j        |d          | k    sJ t          j        |t          j        d                    | k    sJ t          j        |d	d	g          |k    sJ t          j        |d          |k    sJ t          j        |dg          | k    sJ t          j        |g           |k    sJ t          j	        t           j
        d          5  t          j        |d           d d d            n# 1 swxY w Y   t          j	        t           j
        d          5  t          j        |d           d d d            n# 1 swxY w Y   t          j	        t           j
        d          5  t          j        |d           d d d            n# 1 swxY w Y   t          j	        t           j
        d          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr6   r   r7   r   )r  Nr  r+   r,   r  z.c.bs   .c.br4   )r2   r,   )r  r,   z.a)r+   r   )r4   r4   r   zNo match for FieldRefr>   r  z.c.fooz.a.fooz cannot be called without options)r   r   r#   rx  r  r   struct_fieldri   rD   rE   rb  )r+   r,   r  r  s       r   test_struct_fields_optionsr  }  s@   
,,,A
"""##A
""Aq6C:66A
.
$
$aVc3Z
8
8C?3''1,,,,?3((A----?3c
++q0000?3C))Q....?3,,1111?3 4 455::::?3%%****?3&&!++++?3$$))))?3 0 011Q6666?3A///14444?3''1,,,,?3$$))))?3##s****	r.E	F	F	F $ $
U###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
r.E	F	F	F ' '
X&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
r.E	F	F	F ' '
X&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
r.P	Q	Q	Q  
                 sH   I11I58I5J>>KK)LLL6MMMc                      t          j        t          j        g dg d          g dg d          t          j        g d          k    sJ d S )Nr/  )FTNrP  )   r8  r9  )r4   r8  N)r   	case_whenrs  r   r   r   r   r   test_case_whenr    sv    <':':':':':':< <!		$& & *,---)@)@A A A A A Ar   c                  f   t          j        dt          j                    fdt          j                    fg          } t          j        |           }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          j        ||g|          }d}t           j                            ||          }t          j        d d
ddg|           }|                    |          sJ d}t           j                            ||          }t          j        dd	ddddg|           }|                    |          sJ d S )Nr+   r,   r(   r5   r:   r&   r6   gffffff@r7   gp=
ף?r3   ffffff?g333333?r   r4   )	r   r  r  r   r  r   r  list_elementr  )element_type	list_typel1l2listsr  r  r  s           r   test_list_elementr    sR   9sBJLL1C3CDEEL&&I

T!#4#4d#A<N<N	OB
c"""1$5$5t2A=N=N	OBHb"Xy))EEZ$$UE22FxT223\BBH=="""""EZ$$UE22Fxs++2A->->?NNH=="""""""r   c                      d t          dd          D             } t          j        | t          j        d                    }t	          j        |          t          j        t          |           t          j                              k    sJ d S )Nc                 <    g | ]}t          j         |d d           S )r4   )rj  ry  rl  )r  )r   ys     r   r   z'test_count_distinct.<locals>.<listcomp>  s*    TTTQx aqa888TTTr   i  i,  rH  r   )	r  r   r   r=  r   count_distinctr   rA   r#   )samplesr  s     r   test_count_distinctr    sw    TT%dBSBSTTTG
(7BL..
/
/CS!!RYs7||"(**%M%M%MMMMMMMr   c                     t          j        g d          } t          j        |                                           dk    sJ t          j        | d                                          dk    sJ t          j        | d                                          dk    sJ t          j        | d                                          dk    sJ t          j        | d                                          dk    sJ d S )	Nr  r3   r  r  r  r4   r   r6   )r   r   r   r  r9  r2  s    r   test_count_distinct_optionsr    s    
((((
)
)CS!!''))Q....S|444::<<AAAAS{33399;;q@@@@Su---3355::::S%((..00A555555r   c                     t          j        dg          } t          j        | d          | k    sJ t          j        | d          t          j        dg          k    sJ t          j        | d          | k    sJ t          j        | d          t          j        dg          k    sJ t	          j        t          d	          5  t          j        | d
           d d d            d S # 1 swxY w Y   d S )Nu   01²3NFC)formr   0123NFDNFKDz/"NFZ" is not a valid Unicode normalization formr>   NFZ)r   r   r   utf8_normalizerD   rE   r  r2  s    r   test_utf8_normalizer    sE   
(G9

CSu---4444Sv..."(F82D2DDDDDS%((C////S&))RXvh-?-?????	C
E 
E 
E + + 	#E****+ + + + + + + + + + + + + + + + + +s   C))C-0C-c                     dD ]C} t          j        d|           t          j        g t          j                              k    sJ Dd t          d          D             }t          t          |                    t          |          k    sJ d t          dd          D             }t          t          |                    d	k    sJ t                      d
dg}|	                    d t          d          D                        d |D             }t          t          |                    t          |          k    sJ t          j        t          d          5  t          j        dg            d d d            d S # 1 swxY w Y   d S )N)systemr  is   abcdefr   initializerr   c                 t    g | ]5}t          t          j        d                                                     6S )r   tupler   r  r0  r   r  s     r   r   ztest_random.<locals>.<listcomp>  s4    CCCAeBIcNN,,..//CCCr   r"   c           	      ~    g | ]:}t          t          j        d |dz                                                      ;S )r   rf  r  r  r  s     r   r   ztest_random.<locals>.<listcomp>  sO     & & & BIcq1u555??AABB & & &r   r   rf  r  r  c              3   >   K   | ]}t          j        d           V  dS )r"   N)osurandomr  s     r   r   ztest_random.<locals>.<genexpr>  s*      ::1
2::::::r   c                 x    g | ]7}t          t          j        d |                                                    8S )r   r  r  r  s     r   r   ztest_random.<locals>.<listcomp>  sK     % % % BIcq111;;==>> % % %r   zJinitializer should be 'system', an integer, or a hashable object; got \[\]r>   )r   r  r   r   r  r  rA   r  rC   rN  rD   rE   rF   )r  rW  initializerss      r   test_randomr    s   5 , ,y444HRbjll+++, , , , , DCrCCCFs6{{s6{{****& &Q}}& & &Fs6{{q     HHi/L::b		::::::% %#% % %Fs6{{s6{{****	y?
@ 
@ 
@ ' ' 		#2&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   FF	Fztiebreaker,expected_valuesr  )r3   r4   r6   r7   r6   r7   r4   ry   )r3   r5   r   rf  r   rf  r5   ro   r3   r4   r6   r7   r   rf  r5   dense)r5   r4   r3   r6   r3   r6   r4   c                    t          j        g d          }t          j        dd|           }t          j        ||          }t          j        |t          j                              }|                    |          sJ d S )Nrl  r  333333@Nr  Nr  rx   r  rz   r  r   )r   r   r   r   rankr!   r  )r|   expected_valuesr  rank_optionsr  r  s         r   test_rank_options_tiebreakerr    s     (888
9
9C>K19-79 9 9L WS,///Fxbikk:::H=="""""""r   c                     t          j        g d          } t          j        g dt          j                              }t          j        |           }|                    |          sJ t          j        | t          j                              }|                    |          sJ t          j        | t          j        dg                    }|                    |          sJ t          j        | d          }t          j        g d	t          j                              }|                    |          sJ t          j        | d
          }t          j        g dt          j                              }|                    |          sJ t          j        t          d          5  t          j        d
dd           d d d            d S # 1 swxY w Y   d S )Nr  r  r   r  r   r   rr   rs   )r   r3   r7   r4   rf  r5   r6   r   )r3   r6   r4   r7   r5   rf  r   z'"NonExisting" is not a valid tiebreakerr>   r  NonExistingrz   )
r   r   r!   r   r  r  r   rD   rE   r  r  r  r  expected_at_startexpected_descendings        r   test_rank_optionsr    s%   
(888
9
9Cx---BIKK@@@H WS\\F==""""" WS"."2"2333F==""""" WS".%&#( #( #(   F =="""""WS444F!6!6!6RY[[III==*+++++WSL111F(#8#8#8ry{{KKK==,-----	zG
I 
I 
I 1 1
&."/	1 	1 	1 	11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   1GGGc                     t          j        g d          } t          j        g dt          j                              }t          j        |           }|                    |          sJ t          j        | t          j                              }|                    |          sJ t          j        | t          j        dg                    }|                    |          sJ t          j        | d          }t          j        g d	t          j                              }|                    |          sJ t          j        | d
          }t          j        g dt          j                              }|                    |          sJ t          j        t          d          5  t          j        | d           d d d            d S # 1 swxY w Y   d S )NNr4   Nr5   N)r  r%   r  r'   r  r   r  r   r   rr   rs   )r'   r  r'   r   r'   r   )r  r'   r  r%   r  r  r>   XXX)
r   r   r  r   rank_quantiler  r   rD   rE   r  r  s        r   test_rank_quantile_optionsr  #  s   
(+++
,
,Cx111
EEEH c""F==""""" c2+A+C+CDDDF==""""" c2+A%&,( ,( ,(   F =="""""c*===F!:!:!:NNN==*+++++c\:::F(#<#<#<2:<<PPP==,-----	z)A	B	B	B / /
..../ / / / / / / / / / / / / / / / / /s   1GGGc                     t          j        g d          } t          j        g d          }t	          j        |           }|                                |k    sJ t	          j        | dd          }|                                |k    sJ t	          j        | t	          j                              }|                                |k    sJ t          j        g d          }t	          j        | dd	          }|                                |k    sJ t	          j        | t	          j        dd	                    }|                                |k    sJ d S )
Nr  )ł?g2m6<r  łr  r  rx   )rt   r{   r  )r  g2m6<?r  r  r  rr   r   )r   r   rD   rr  r   rank_normalr0  r   r  r  r  s      r   test_rank_normal_optionsr  A  s   
(+++
,
,C}	2 	2 	23 3H ^C  F))))^CKPPPF))))^C)?)A)ABBBF))))}	2 	2 	23 3H ^C
lSSSF))))^C$&$:*EQ%S %S %ST T TF ))))))r   c                  P   t          j        t          j        dt          j                              t          j        dt          j        t          j        dt          j                              g                    g          } t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          j        d           }t          j        ddi          }t          j        t          j        d                    }t          j        t          j        d	                    }t          j        d
          }	t          j        d          }
||||||||	|
g	}g ||k    ||k    ||k    ||	z  ||	z  | |	                                ||z   ||z
  ||z  ||z  t          j
        |          t          j        ||          t          j        ||          t          j        ||          t          j        ||          t          j        ||          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        ||          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |
          t          j        |          t          j         |          t          j!        |          t          j"        ||          t          j#        ||          t          j$        ||          t          j%        |          t          j&        |          t          j'        ||          |(                    t          j)                    d
          }t          j        d          dk    t          j        d          dk    t          j        d          dk    t          j        d          dk    t          j        dd          dk    g}t          j        d          dk    t          j        d          dk    t          j        d          dk    t          j        d          dk    t          j        dd          dk    g}||*                    g d          t          j        d          +                                g}|,                                }||z  }||z  }||z  }||||||| dS )Ni64r  r  r4   r=  Tr*   r+   r5   Fr   r  r   rf  )r  r  r  )r4   r   rP  )r   literalscallsrefsnumeric_refsspecialschema)-r   r  ri   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_xorr  	is_finiter  r  r    isinrE  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_exprss                    r   create_sample_expressionsr  Y  s=   Y

33RXry"(5")++667886: 6: ; < <F 		!A
	#A
	$A
	(A
	$A
	3(A
	")A,,A
	"(1++A
	%A
	!A 1aAq!Q/M7qAv 7qAv 7q1u 7a!e 7QU 7QB 7

 71u7!e7%&U7,-E7359Q<<7va||7%'[A%6%678:	!Q7 {1a((7 +-(1a..7 ;='!**7 vayy	7 #%&))	7 .0VAYY	7 9;q			7
 wqzz7
 $&71::7
 02wqzz7
 <>8Aq>>7 wqzz7 $&71::7 02wqzz7 x{{7 %'HQKK7 24!7 vayy7 #%'!**7 /1oa.@.@7 q!,,7 /1nQ.B.B7 q!,,7 /1ill7 =?LOO7 {1a((7 vvbhjjuv557O  huoo)28E??a+?huoo*h~..'9hue,,79N  "x{{Qq0@!x{{a/!x//7:!x1~~8: 	
	yyy
!!M ""$$I III ! /   r   c                     t                      d         D ]]}t          |t          j                  sJ |                     |                     |                    }|                    |          sJ ^d S )Nr   )r  r   r   
Expressionr  r   r  )r"  exprrestoreds      r   #test_expression_serialization_arrowr    sz    )++E2 % %$..... &&}':':4'@'@AA{{8$$$$$$% %r   c                  j   t                      } | d         }| d         D ]M}|                    |          }t          j                            |          }|                    |          sJ N| d         D ]}|                    |          }t          j                            |          }t          |          t          |          k    sJ |                    |          }t          j                            |          }|                    |          sJ t          | d         | d                   D ]\  }}|                    |          }t          j                            |          }t          |          t          |          k    sJ |                    |          }t          j                            |          }|                    |          sJ | d         D ]}|                    |          }t          j                            |          }|                    |          }t          j                            |          }|                    |          sJ | d         d         }|                    |          }t          j                            |          }|                    t          j        dd	i                    sJ t          j        d	          }	|		                    g d
          }|	d	k    |	dk    z  |	dk    z  }
|                    |          }t          j                            |          }t          |
          t          |          k    sJ |                    |          }t          j                            |          }|                    |          sJ d S )Nr  r  r  r  r  r  r   r  r4   rP  r5   r3   )
r  to_substraitr   r  from_substraitr  r  r   r   r  )exprsr  r  
serializedr   serialized_againdeserialized_again	expr_normr  r+   targets              r   'test_expression_serialization_substraitr    s    &''E8_F j! ) )&&v..
}33J??{{<((((((
 g 7 7&&v..
}33J?? <  CII----'44V<<]99:JKK""#5666666uV}eN.CDD 7 7i&&v..
}33J??<  C	NN2222'44V<<]99:JKK""#5666666 i  7 7&&v..
}33J??'44V<<]99:JKK""#5666666 	iA''J=//
;;Lry"a1122222 		!A66)))D1fa AF+F""6**J=//
;;Lv;;#l++++++#0088556FGG12222222r   c                     t          j        d          } t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          j        ddd          }t          j        d	          }t          j        d
d          }| |z  |k     | |k     dt          j                    fD ]}	|                    |	          |k     |                    ddg           |                    ddg           |                    ddg           |                    ddg           t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t          j
                  5  |t                      k     d d d            d S # 1 swxY w Y   d S )Nr   r4   TFr*   ri   r0   r,   )nestedri   r  r   r5   r  r  )r   r   ri   r   r  r  r  rD   rE   rF   rb  rC   )
rN  rq  truefalser*   ri   nested_mixed_typesnested_fieldnested_field2r+  s
             r   test_expression_constructionr	    s0   9Q<<D
)A,,C9T??DIeEYx  FHWE$3//8/00LHXw//M3J&	EUNN

#    

34	JJ1vUEN+++uen%%%u~&&&	y	!	!  

1               
r	'	'                   s$   .FFF9GG Gc                  $   t          j        d          } t          j        d          }t          j        t          d          5  | o| d d d            n# 1 swxY w Y   t          j        t          d          5  | p| d d d            n# 1 swxY w Y   t          j        t          d          5  t          |            d d d            n# 1 swxY w Y   t          j        t          d          5  |   d d d            d S # 1 swxY w Y   d S )NTFz"cannot be evaluated to python Truer>   )r   r   rD   rE   r  r   )r  r  s     r   !test_expression_boolean_operatorsr  	  s   9T??DIeE	z)M	N	N	N                 
z)M	N	N	N                 
z)M	N	N	N  T


               
z)M	N	N	N                   sH   AAA;BBB2CCC4DD	D	c                     t          j        d          } t          t          j        |                     dk    sJ t          t          j        |                     dk    sJ t          t          j        | d                    dk    sJ t          t          j        | d                    dk    sJ t          t          j        | t          j        d                              dk    sJ d}t          j	        t          |	          5  t          j        | t                     d d d            d S # 1 swxY w Y   d S )
Nri   zhour(field)zround(field)r4   re  z2round(field, {ndigits=1, round_mode=HALF_TO_EVEN})zadd(field, 1)z+only other expressions allowed as argumentsr>   )r   ri   r  r}  rb  r   r   r   rD   rE   rF   rC   )ri   rc  s     r   test_expression_call_functionr    sn   HWE rwu~~-//// rx>1111rxq)))**<= = = = rveQ  O3333rveRYq\\**++>>>> 8C	y	,	,	,  
uf                 s   D33D7:D7c                      t          j        dddgi          } t          j        t           j        j                  5  t          j        | t          j                               d d d            d S # 1 swxY w Y   d S )Nr+   r4   r5   )	r   r  rD   rE   r  r  r   r  r#   )r  s    r   test_cast_table_raisesr  1  s    HcAq6]##E	rv,	-	- # #
rxzz"""# # # # # # # # # # # # # # # # # #s   'A00A47A4zstart,stop,expectedrP  r  r7   NNr  r4   r5   r  fixedc                 d   |dk    rrt          j        g dg dg dd gt          j        t          j                    d                                        t          j         |            d                    }net          j        g dddgdgd gt          j        t          j                                                             | |                                }|| |d	f}|Q|dk    rKd
}t          j        t           j        |          5  t          j	        |  d d d            d S # 1 swxY w Y   d S t          j	        | }	|	                    t          j        t          j                    |	j
        j                                                            }
|
fd|D             k    sJ d S )Nr  rP  r  r  r3   r6   r   r7   TzZUnable to produce FixedSizeListArray from non-FixedSizeListArray without `stop` being set.r>   c                 .    g | ]}|r|d d          n|S r   r   )r   r  r  s     r   r   z0test_list_slice_output_fixed.<locals>.<listcomp>U  s,    BBBAq/!FFdF))aBBBr   )r   r   r  r   r  rD   rE   rb  r   
list_slicer   	list_sizer0  )r`   r  r  r  r  r  r  rI   rc  r  pylists     `        r   test_list_slice_output_fixedr  8  s    Gh			<<<$Gx		1--/ //3tBHZZ\\14M4M/N/N 	 h			Aq6A35x		**, ,,0D::<<1H1H,I,I 	 tT4'D|	W,,B]2?#666 	! 	!M4  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! %RXbgii#[24 4 5 55>Y[[ 	BBBBBBBBBBBBBs   D,,D03D0z
start,stop))r   N)r   r4   )r   r5   r  )r5   r6   c                 $    |dk    rtg dg dg dd g}t          j        |t          j        t          j                    d                                        t          j         |            d                    }ngg dddgdgd g}t          j        |t          j        t          j                                                             | |                                }|dk    rt           j        }t          j        | d	
          }|j         | |                      k    sJ |                    t          j        t          j                                                                        } fd|D             }	||	k    sJ d S )Nr  rP  r  r  r3   r6   r   r7   Freturn_fixed_size_listc                 .    g | ]}||         nd S r   r   )r   r  r`   r  r  s     r   r   z3test_list_slice_output_variable.<locals>.<listcomp>x  s-    LLL!am%T/""LLLr   )	r   r   r  r   r  r   r  r   r0  )
r`   r  r  r  r  rj  r  r  r  r  s
   ```       r   test_list_slice_output_variabler  X  s    G		<<<$?hHRWYY""$ $$(D**,,)B)B$C$C 	 		Aq6A3-htx		**, ,,0D::<<1H1H,I,I 	 GH	]3tT279 9 9F;))JJLL111111[["')),,--7799F MLLLLLtLLLHXr   return_fixed_sizer/  r   c                  r    t          j        t          j        dt          j                                        S Ncolr   r  ri   r   r   r   r   r  r  ~  s"    BHRXeRWYY//00 r   c                  t    t          j        t          j        dt          j                              d          S )Nr!  r4   r"  r   r   r   r  r    s$    BHRXeRWYY//33 r   c                  r    t          j        t          j        dt          j                                        S r   )r   r  ri   r   r   r   r   r  r    s"    BM"(5"'))4455 r   c                 $   t          j        dgg |                      }t          j        |dd|           }|j                            d          j        |j                            d          j        k    sJ | |j        |j        k    sJ d S d S )Nr4   r   r  )r   r   r   r  r   ri   r   )r  r   r  outs       r   $test_list_slice_field_names_retainedr'  |  s     (QC5$$&&
!
!C
-Q:K
L
L
LC8>>!!SX^^A%6%6%;;;;;  x38#### ! ##r   c                     t          j        dggt          j        t          j                    d                    } d}t	          j        t           j        |          5  t          j        | dd           d d d            n# 1 swxY w Y   t	          j        t           j        |          5  t          j        | dd           d d d            n# 1 swxY w Y   t	          j        t           j        |          5  t          j        | dd           d d d            n# 1 swxY w Y   d}t	          j        t           j        |dz             5  t          j        | ddd	           d d d            n# 1 swxY w Y   t	          j        t           j        |d
z             5  t          j        | ddd	           d d d            d S # 1 swxY w Y   d S )Nr4   z@`start`(.*) should be greater than 0 and smaller than `stop`(.*)r>   rg   r5   r   z`step` must be >= 1, got: r   )r  r~  )	r   r   r  r   rD   rE   rb  r   r  )r  rc  s     r   test_list_slice_bad_parametersr)    s   
(QC5"(2799a00
1
1C
MC	rc	2	2	2 " "
c2q!!!" " " " " " " " " " " " " " "	rc	2	2	2 ! !
c1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
rc	2	2	2 ! !
c1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 'C	rcCi	8	8	8 ) )
c1aa(((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	rcDj	9	9	9 * *
c1ab))))* * * * * * * * * * * * * * * * * *sZ   BBB,CCC:DD!$D!E22E69E6 GG
G
c                     g d}t          j        ||           }t          j        ||          }t          j        |          }|j        |j        k    sJ |                    |          sJ d S )N)r4   r4   r4   r5   r5   r4   r4   r4   r4   r4   r3   r3   r3   r3   r3   r3   r3   r3   r3   r   r  )r   r   r   run_end_encoderun_end_decoder   r  )r  run_end_encode_optsrV   r  encodeddecodeds         r   check_run_end_encode_decoder0    sz    FFFF
(6

+
+
+C-@AAAG((G<38####>>#r   r   c                 &    t          | |           d S r   )r0  )r  r   s     r   test_run_end_encoder2    s    4  
F33333r   c                     t          j        g d          } t          j        g d          }t           j                            | d          }|                    |          sJ t          j        g d          } t          j        g d          }t           j                            | d          }|                    |          sJ t          j        g dt          j                              } t          j        g dt          j                              }t           j                            | d	          }|                    |          sJ t          j        g dt          j                              } t          j        g d
t          j                              }t           j                            | d	          }|                    |          sJ t          j        g dt          j                              } t          j        t           j	        d          5  t           j        
                    | d	           d d d            d S # 1 swxY w Y   d S )N)r4   r5   r3   Nr6   r   )Nr4   r4   NNr4   r4   rp   )NNr5   Nr4   Nr5   r   )rg   rg   NNrg   Nrg   )   r4  NNr4  Noverflowr>   )r   r   r  pairwise_diffr  r   r   rD   rE   rb  pairwise_diff_checkedr  s      r   test_pairwise_diffr8    sj   
((((
)
)Cx33344HZ%%c!%44F=="""""
((((
)
)Cx66677HZ%%c!%44F==""""" ((((rwyy
9
9
9Cx666RWYYGGGHZ%%c"%55F==""""" ((((rxzz
:
:
:Cx999

KKKHZ%%c"%55F==""""" ((((rxzz
:
:
:C	r'
) 
) 
) 9 9

((R(8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   &"IIIc                     ddg} t          j        g dg d          }|                                i k    sJ t          j        g dg d|           }|                                d ddk    sJ t          |                                          ddgk    sJ t          j        g dg d|           }|                                d ddk    sJ t	          j        t          d	          5  t          j        g dg d| d
          }d d d            n# 1 swxY w Y   t	          j        t          d	          5  t          j        g dg d|           }d d d            d S # 1 swxY w Y   d S )Nrq  ru   )ru   rq  depth)r"   Nr  r"   )rq  ru   )	key_nameszUnexpected pivot key: depthr>   rv   )r;  rw   z(Encountered more than one non-null value)ru   rq  ru   )r   pivot_widerr9  r  rD   rE   KeyErrorr  )r;  r  s     r   test_pivot_widerr>    sB   (#I^888...IIF<<>>R^888...%' 'F<<>>tr::::::GX#66666^888...&/1 1 1F<<>>tr::::::	x'D	E	E	E A A < < <nnn*38?A A AA A A A A A A A A A A A A A A
 
z)S	T	T	T 5 5 = = =~~~*35 5 55 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s$   +DDD:E##E'*E'c                  "   t          j        g d          } t          j        | dd          }|                                g dk    sJ t          j        | t          j        dd                    }|                                g dk    sJ d S )N)
r"   r6   r8   r   r   r3   rf  r5   r4   r7   r%   g?)
r   r6   r   r   r   r3   rf  r5   r5   r7   )lower_limitupper_limitr  )r   r   r   	winsorizer0  r   r  s     r   test_winsorizerC    s    
(222
3
3C\#sC((F!?!?!?????\R(ScJJJL L LF!?!?!???????r   )r4   r   )collectionsr   r  rE  	functoolsr   r   rS   r  r#  r  rD   r  rL  r  numpyr  ImportErrorpandasrO  r   r   pyarrow.computer  r   pyarrow.libr   r   pyarrow.substrait	substraitpasr  __dict__ry  r@   rR   r   r   r#   r   r   r!   r  r  numerical_arrow_typesr  r/   r  r  r  all_array_typesrJ   rP   r\   markfilterwarningsr   r   r   r   r  r  r  r  r$  r(  r-  r3  parametrizer;  rH  rJ  rO  rS  rU  r^  r`  rd  rk  rs  rv  rr  r~  r  r  r  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_missingrf  rm  rz  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<  rH  rN  rU  rZ  r]  ra  r|  r  r  r  r  r  r  r  r  r  r  r  r  date32date64r  r  r  r  r  r  decimal_type_traitsr  r  r  r  r   r  r  r  r3  r?  r   rZ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r+  r.  r?  rB  rD  rI  rY  r]  rd  rn  ru  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r*   r  r  r'  r)  r0  r    float16r   r2  r8  r>  rC  r   r   r   <module>r\     s\  $ # " " " " "   ( ( ( ( ( ( ( (       				   



    	BBB   	BBB           A A A A A A A A#######   
CCC4 4#VBK$5$5$7$7884 4 4 . .!6"+"3"3"5"566. . .  BGIIBHJJBHJJBHJJBIKKBIKKBJLLBJLL	  ---.eeAhhUU1XXuuQxxeeAhhuuQxxeeAhhuuQ||eeArll%%%&&&&',,,-0001RYq\\;;;<RXgbgiiAq6Aq6Aq64!RABR]828::!iii!Q2w GHRYgbgii 3		"2344a$aa 0 0$aa8H8H7J K#,  40 0 0	9 	9 	9 B bB bB bBJ( ( ( )*J J J JF F FI I I5 5 5
3 3 3
 $ $ $= = =	% 	% 	%  	> 	> 	> '<==1 1 >=1* a(;(;]R]1a=P=P'QRR'; '; SR';T '<==1 1 >=1, a(;(;]R]1a=P=P'QRR&? &? SR&?R9 9 9<" " "") ) )4 4 46 6 6: : : *###011"V]#566	8 	8
 ZZ-&-(:;;NNOWt../-  : : :" " "' ' '2 2 2"# # ## # ## # ## # #,L L L. . .0# # ## # ## # #< < <   D6 6 6&7 7 76( ( (B B BJ; ; ;D    !&) . . . 4   3 3 3 ". . .  %'99&"&'    +E +E +E F F
 Wf$566F F 76F FF(C C C$P P P> 8 8 804 4 4# # #' ' '' ' 'E E E9 9 9< )?;;  <;2  "## ## ##L UDM22* * 32*3 3 3 )?;;# # <;#( ( (# # #"# # #:	1 	1 	1 )?;;  <;, )?;;D D <; D, , ,&# # #(, , ,&  02 2 21 1 1 1 1 1  / :;;? ? <;?< / :;;!9 !9 <;!9H / :;; 9  9 <; 9F' ' ' # # ## # ## # # )<=>>- - ?>-8 L L L$ < < <6F F F"# # #:  "# # #: '<==# # >=#( '<==# # >=#8' ' ',? ? ?	F 	F 	F$3 $3 $3N 		YRY[['ABB+ + CB+ '<==  >=< J2CE E   Z 4 CE E  )(blAFF((blBGG((r}bII((r}bIIK      C C CC C CF F F. . .0 jbjll^==':--  / /)>:<> >==	  ? ?
/ /? ?/ / >= / jbjllJBJLL%AsKK)+>--  / /;A ;A/ / LK ;A|G G G8 HA HA  HAVPI PI PI PIf = = =<1 1 1 !8!8!899	# 	# :9	# W& W&  W&te8 e8 e8P  "E F F9 9 F F 96
( 
( 
(6 6 6A A A*' ' 'F F F&L &L &LR0O 0O 0Of8 8 8&. . .6!A !A !AHI I I = = =*(. (. (.V- - -$. . ., , ,D "566}5515 15 65 76 15h "566}5516 16 65 76 16h /22}5545 45 65 32 45n /22}5545 45 65 32 45n3 3 3&5 5 5$" " "JA A A# # #$N N N6 6 6	+ 	+ 	+' ' '6  """#"""#$$$%$$$%' # # #1 1 1B/ / /<* * *0H H HZ % % % :3 :3  :3z  8  $  ,# # # .yyy,,,>?QC!qc4 !QFQFQIt,-QC!tfd#$QId|dD\4891   ((	28RZ'HIIrx&HIIC C JI JI )( C,  (   ((	28RZ'HIIrx&HII  JI JI )( 4 ,.ABB003355"7 8 8$ $	8 8 CB
$* * *(    		








QQaa   xrxzz**w''xrxzz**	 4 4 ! 249 9 9<5 5 54@ @ @ @ @s3   = AAA AA0A7 7B B