
    z-PhE                       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 	 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j/         ej$                              dgg d"d
dgdd d!ggf ej0        d# ej#                    fd$ ej#                    fg          ddd%dddd%dd
dd%gfgZ1d& Z2d' Z3d( Z4ej5        6                    d)          d*             Z7d+ Z8	 dd,Z9d- Z:d. Z;d/ Z<d0 Z=ej5        j        d1             Z>d2 Z?d3 Z@d4 ZAd5 ZBej5        C                    d6e+          d7             ZDej5        C                    d6e+          d8             ZEd9 ZFd: ZGd; ZHd< ZId= ZJd> ZKej5        C                    d?g d@ ejL        dA           ejL        dB          dCfg dD ejL        dE          ddCfddFgdddCff          dG             ZMdH ZNdI ZOdJ ZPdK ZQdL ZRdM ZSdN ZTdO ZUdP ZVdQ ZWdR ZXdS ZYdT ZZdU Z[dV Z\dW Z]dX Z^dY Z_dZ Z` e            d[             Zad\d]hZbh d^Zch d_Zdh d`Zeh daZdedeez  ebz  ebeeedecdbZfej5        C                    dcg dd          ej5        C                    dedfdgg          dh                         Zgdi Zhej5        j        dj             Zidk Zjdl Zkdm Zldn Zmdo Zndp Zoej5        C                    dqe1          dr             Zpds Zqdt Zrej5        C                    dudvdwg          dx             Zsdy Ztej5        C                    dqe1          dz             Zud{ Zvd| Zwd} Zxd~ Zyej5        C                    dqe1          d             Zzej5        j        ej5        C                    dqe1          d                         Z{d Z|d Z}d Z~d Zd Zej5        C                    dddg          d             Zej5        C                    dddg          d             Zej5        C                    dddg          d             Zd Zd Zd Zd Zej5        C                    dddg          d             Zej5        j        d             Zej5        j        d             Zd Zd Zd Zd Zej5        C                    d6e+          d             Zej5        C                    d6e+          d             Zd Zd Zd Zej5        C                    d ej                     ej                    g          d             Zej5        C                    de+          d             Z edd          Z edd          Z edej        d            edej        d           edej        d           edej        d          gZd Zd Zd Zd Zd Zd Zej5        j        ej5        C                    d ej*                    ge          ej5        C                    ded           ej5        C                    deeegg d          d                                                 Zej5        j        ej5        C                    d ej)                     ej*                    ge          ej5        C                    ded           d                                     Zd Zej5        j        ej5        j        d                         ZddZej5        j        d             Zej5        C                    dg d¢          dÄ             Zej5        j        ej5        j        dĄ                         Zdń Zej5        j        ej5        C                    ddƦ          ej5        j        dǄ                                     ZdȄ ZdɄ Zdʄ Zd˄ Zd̄ Zd̈́ Zd΄ Zdτ ZdЄ Zdф Zd҄ Zdӄ ZdԄ ZdՄ Zdք Zdׄ Zej5        j        ej5        C                    dd٦          ej5        C                    ddۦ          d܄                                     Zej5        j        ej5        C                    dd٦          ej5        C                    ddۦ          d݄                                     Zej5        j        ej5        C                    ddަ          ej5        C                    ddۦ          d߄                                     Zej5        j        ej5        C                    ddަ          ej5        C                    ddۦ          d                                     Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej5        C                    ddg dfdg dfdg dfdg dfg          d             Zd Zd Zd Zd Zej5        j        d             Zej5        j        ej5        j        d                         Zd Zd Zd Zd Zej5        C                    dd dg dg d g ddgfd ddgdgdgdgfd dddgdd
gddgdgfdddgd
gdgdgfddddgddgddgdgff          ej5        C                    dd          ej5        C                    dej        ej$        ej*        f          ej5        C                    dej.        ej/        df          d                                                 Zej5        C                    dd          ej5        C                    dd          ej5        C                    dej        ej$        ej*        f          ej5        C                    dej.        ej/        df          d	                                                 Zej5        C                    d
d          ej5        C                    dd d d f          d                         Zܐd ZݐddZސd Zߐd Zd Zd ZdS (      )
namedtupleN)	lru_cachepartial)ArrowNotImplementedErrorc                 8    g | ]\  }}t          |d           |S )__arrow_compute_function__)hasattr).0namefuncs      Z/var/www/html/test/jupyter/venv/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            	      )r4   r2   r5   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   r2   zBGot unexpected argument type <class 'object'> for compute functionmatch)exported_functionslenr   Ellipsisobjectpytestraises	TypeError)	functionsr   descr<   argss        r   test_exported_functionsrI   ^   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_exportedrO   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_classesr@   inspect	signature
parametersvaluesrM   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/          }| j<        j=        j>        d0         r'|?                    t          j        d1                     d2 |D             }t          D ]s}||vrm| j<        j=        j>        d0         rV|t           j        k    rF	 |?                     |                       L# t          $ r t          jC        d3|            Y ow xY wt|D ]}||k    sJ t          |          E                    |jF        jG                  sJ |H                                }t           jI        J                    |          }||k    sJ t          |          E                    d4          r%t          |          E                    d5          sJ t          |          t          |          k    sJ t          ||d	d                    D ]\  }}||k    sJ t          t          j        t          j        d	                              d6k    sJ t          t          j                              d7k    sJ d S )8NUTCFstart
skip_nullsr   count_from_zero
week_startTr`   patternr3   )	recursivefieldnamesr*   1r+   2)field_nullabilityfield_metadatafirstr   periodat_startnull_placementheightraise)unexpected_key_behavior	ascendingmax	sort_keysrs   
tiebreakerrz   rs   r4   towards_infinitysecond)week_starts_mondayd   r+   rw   rz   	min_countdummy
descending%Ysindices NFKC皙??r   rb   first_week_is_fully_in_year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))Lr   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configpyarrow
is_enabledappendrQ   rE   rC   failrepr
startswith	__class____name__	serializer   deserializezip)	requestoptionsrX   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<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)r@   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   rL   r   num_kernelsr@   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_sumr3   )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)r4   r4   r3   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   rL   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>B  s.      AA#:c29--AAAAAAr   )r   r   rL   r   Functionr   r   r   r@   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 )	Nr3   r4   r5   r   r6   )r  r  Nr  TFN)r   r   	to_pylistequalr  s    r   test_input_type_conversionr0  H  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r3   r4   r2   r5   r   r!   r3   r4   r2   r5   Nr   r   )r   r   sumas_pyr   r1  r  s     r   test_sum_arrayr8  T  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                    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 )Nr3  r   r!   r3   r4   r2   r5   r   r   r   )r   chunked_arrayr   r   r5  r6  
num_chunksr7  s     r   test_sum_chunked_arrayr<  j  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                  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r3   r3   r2   r5   r2   r   r"   r   r3   r   r4   modecountr   r2   )r3   r3   r2   r5   r2   NFrd   r6   r   r   r`   r   T)r   r   r   r@  r@   r6  r  r@  s     r   test_mode_arrayrE    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 )Nr>  r"   r   r3   r   r4   r?  rB  r2   r   )r   r:  r   r   r@  r@   r6  r;  rD  s     r   test_mode_chunked_arrayrG    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   )rC   rD   r   ArrowInvalidr:  r   )msgs    r   test_empty_chunked_arrayrK    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)r3   r4   r2   r5   r   r6      r   g      @r   )ddofr3   g      @)r   variancer6  datas    r   test_variancerR    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r3   r3   Nr4   g;f?绽|=relFrd   r5   r   )r   skewr6  rC   approxrP  s    r   	test_skewrZ    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 )	NrT  g      rU  rV  Frd   r5   r   )r   kurtosisr6  rC   rY  rP  s    r   test_kurtosisr]    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Օ@)rX  r\  )r3   r4   (   gdV?r_  c                     t          j        | dd          }t          j        | dd          }|                                |d         k    sJ |                                |d         k    sJ d S )NTF)r`   biasedrX  r\  )r   rX  r\  r6  )inputr  
arrow_skewarrow_kurtosiss       r   test_unbiased_skew_and_kurtosisre    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   rg  )r3   r3   r4   r   r   NTignore_case)r3   r3   r4   r   r3   N)r   r)   r   large_stringr"   r   r   count_substringtyoffsetr  resultr  s        r   test_count_substringrt    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)rg  rh  baAacaarj  rk  Nr   za+)r3   r3   r2   r3   r   NTrl  )r3   r3   r4   r3   r3   N)	r   r)   r   rn  r"   r   r   count_substring_regexr  rp  s        r   test_count_substring_regexrx    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)rg  rh  rj  Nr   rg  )r   r3   rf   Nza?b)r   r3   r   N)zab*zcAB*rj  zaB?zaB*Trl  )r   r3   rf   rf   )r   r3   r   r   )
r   r)   r.   rn  large_binaryr   r   find_substringr-  find_substring_regex)rq  r  rs  s      r   test_find_substringr}    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)rg  zba%rj  ca%dNz_a\%%)FTFTN)aBzbA%rj  r  NTrl  F)FFFTN)r   r   r   
match_liker  r  rs  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)rg  abcrj  Nrg  TTFN)u   áBu   Ábcrj  Nu   ábTrl  F)FFFN)r   r   r   match_substringr  r  s      r   test_match_substringr    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)rg  r  rj  cNz^a?b)TTTFN)r  AbcBAr  NTrl  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  7  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   𝑓öõḍšr6   )rf   r3   r4   r2   c                 J    g | ]}|                                           S r   r6  r
   kr_   stepstops     r   r   z,test_slice_compatibility.<locals>.<listcomp>R  s<     %3 %3 %3)* &'WWYYuT$%? %3 %3 %3r   r_   r  r  )r   r   range	itertoolschainr   utf8_slice_codeunitsr  )r  r  rs  r_   r  r  s      @@@r   test_slice_compatibilityr  M  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   r/   s   as   ab s   abcs   abder  r6   r  r5   r   c                 J    g | ]}|                                           S r   r  r  s     r   r   z3test_binary_slice_compatibility.<locals>.<listcomp>d  s<     + + +!" WWYYuT$7 + + +r   r  r   )r   r   r  productr  r   binary_slicer  r   r.   r@   r   r6  )
rQ  r  r  rs  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---re   z-foozbar--r  r  r+   r3   
max_splitsr  foo---bTr  reversez---foor+   )r   r   r   split_patternr  r  s      r   test_split_patternr  t  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  r3   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+   r3   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  r3   r  r  zfoo---bar--r  z"Cannot split in reverse with regexr=   r  T)re   r  r  )r   r   r   split_pattern_regexr  rC   rD   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)r5   r   r6   Nr3   r3   r6   )minrx   r   Trd   Fr`   )r   r`   zmin_max takes 1 positionalr=   )r   min_maxr6  r   rC   rD   rE   r   )rQ  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   rC  r   r   r   r  )FNTT)FNF)r   r   r   r   anyr6  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   rC  r   r   r   Tr  )r   r   r   r   r   r6  r:  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r5   r   N)TTFr  )r   is_validr-  rC   rD   rE   rP  s    r   test_is_validr    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 )Nas          Compute the minimum and maximum values of a numeric array.

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

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

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

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

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

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

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

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

        Examples
        --------
        >>> import pyarrow as pa
        >>> arr = pa.array(["a", "b", "c", None, "e"])
        >>> mask = pa.array([True, False, None, False, True])
        >>> arr.filter(mask)
        <pyarrow.lib.StringArray object at ...>
        [
          "a",
          "e"
        ]
        >>> arr.filter(mask, null_selection_behavior='emit_null')
        <pyarrow.lib.StringArray object at ...>
        [
          "a",
          null,
          "e"
        ]
        )r   r  __doc__textwrapdedentr   min_element_wisefilterr   r   r   test_generated_docstringsr  
  s    : 2 " "    , 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))
rR   rS   r   r   strr  quantilebinary_join_element_wisechooserandom)rY   s    r   test_generated_signaturesr  o  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   r-  	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)
r=  r>  is_ascii
is_decimalr?  rA  r@  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  rE  r   )replacecodepoints_ignoregetr  r  r  rH  r  r	   r   r   r   r#  r6  )	rB  rG  
arrow_namepy_nameignorer  r  ar
arrow_funcs	            r   test_string_py_compat_booleanrT    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*   abcdr2   )width)Nz a rV  )Nz  arV  )Nza  rV  )N   árV  )Nu    á rV  )Nu     árV  )Nu   á  rV  )
r   r   r   ascii_centertolist
ascii_lpad
ascii_rpadutf8_center	utf8_lpad	utf8_rpadr/  s    r   test_padr`    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          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  r5   )Nr  r*   rg  r  rV  abcdeXX)r_   r  replacement)Nr  u   πu   πbu   πbθu   πbθdu   πbθde)r  r   r   	to_pandasastyperB   rL  r  nanr  slice_replacer   binary_replace_slicerZ  utf8_replace_slice)offsetsr  seriesr_   r  r  r  s          r   test_replace_slicerm    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  re   rd  )barzbarbardNr3   )re   rd  max_replacements)barzfoors  N)rt  )r   r   r   replace_substringrZ  )rQ  rR  s     r   test_replace_plainrw  7  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\100rq  )rd  )r   r   r   replace_substring_regexrZ  )rQ  r  rR  s      r   test_replace_regexr}  E  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*   rj   letterdigitr+   rk   z(?P<letter>[ab])(?P<digit>\d)r  )r   r   r   extract_regexrZ  rR  r  structs      r   test_extract_regexr  P  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   r3   r  r4   r2   z(?P<letter>[ab])(?P<digit>\d+)r  )r   r   r   extract_regex_spanrZ  r  s      r   test_extract_regex_spanr  Y  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  -rj   rk   r   a1bc2dr*   r+   r  d)r   r   r   binary_joinr  r.   list_)ar_listr  separator_arrays      r   test_binary_joinr  c  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  rL  spam)r  null_replacement)Na-spamr  r  )r   r   r)   r   r  r-  r6  r   )nullarrsr  rL  s       r   test_binary_join_element_wiser  n  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   )rq  rU   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   r5   r4   Nr   r5   r4   r   rf   )
r   r   r   r"   r  validater  rC   rD   
IndexError)rq  rU   r  indices_typer   rs  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   r5   r4   )r   r   r  r  r  r  float32float64rC   rD   r  )r  r  r   rs  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   r3   r6   r7   r4   )r*   r  r+   r  r  r  r3   r7   r4   r+   r  r  )r   r:  r   r  r  )r  r   rs  r  s       r   test_take_on_chunked_arrayr    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   r3   r4   r   r3   r4   r*   r+   r  )r  )r   r3   r2   )r*   r+   r*   )
r   DictionaryArrayfrom_arraysr  r   r  r-  
dictionaryr   r  )r  r  rs  s      r   test_take_dictionaryr    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   r4   r*   ri   )r3   r2   rM  Nr5   r   )r   r   r:  record_batchtabler@   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  r@   r  r  )rq  rU   rs  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   r:  r  r  )r  expected_droprs  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  rs  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  ABDza`)zc`d`Nr  )r   r  r   r  r  r:  )r  r  rs  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   r4   r*   r  r   )r   r   r:  r  r  r@   r  r  )r  r  r  r  s       r   test_drop_null_null_typer  6  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   r2   	emit_nullr   r3   r   r3   r   TFTmust all be the same lengthr=   )	r   r   r  r  r  rC   rD   r  
ValueErrorrq  rU   r  maskrs  s        r   test_filterr  B  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   r2   )r   r   r  r  r  r  r  s        r   test_filter_numpy_array_maskr  Y  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   r:  r   r  r  )r  r  expected_nullr  rs  s        r   test_filter_chunked_arrayr  d  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  r:  )r  r  rs  r  chunked_masks        r   test_filter_record_batchr  w  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   r:  r  r  )r  r  r  r  rs  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   r:  r  r   r  rC   rD   r  r  rI  r   rE   )r  r  r  objr  r   filts          r   test_filter_errorsr    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   r4   r*   r  TFr   )r   r   r:  r  r  r@   r  r  )r  r  r  r  r  s        r   test_filter_null_typer    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   typr   r:  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   rU   s    r   conztest_compare_array.<locals>.con      8F###r   c                 ,    t          j        | g          S r   r   r:  r  s    r   r  ztest_compare_array.<locals>.con      #VH---r   r4  )r3   r3   r5   Nr5   )TFFNN)FTTNN)FFTNN)TFTNN)FTFNN)TTFNN)r   r.  r  	not_equalless
less_equalgreatergreater_equal)r  r  arr1arr2rs  s        r   test_compare_arrayr    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   r  z'test_compare_string_scalar.<locals>.con  r  r   c                 ,    t          j        | g          S r   r  r  s    r   r  z'test_compare_string_scalar.<locals>.con  r   r   )r*   r+   r  Nr+   FTFNr)   r   )TTTTTFTNTFFNr  FFTNFTTN)r   r   r   r.  r  is_nullr  r  r  r  r  )r  r  r  r   rs  nascalarisnulls          r   test_compare_string_scalarr    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   r  z test_compare_scalar.<locals>.con  r  r   c                 ,    t          j        | g          S r   r  r  s    r   r  z test_compare_scalar.<locals>.con  r   r   r3   r4   r2   Nr4   r  r"   r   NNNNr  r  r  r  r  )r   r   r   r.  r  r-  r  r  r  r  r  )r  r  r  r   rs  r  s         r   test_compare_scalarr    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 )Nr4  r3   r4   r2   r5   r3   r4   )r2   r5   N)TTTTN)r   r   r:  r   r.  r  )r  arr_chunkedarr_chunked2r  leftrightrs  s          r    test_compare_chunked_array_mixedr!  ,  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r3   r4   r2   r5   r   r   rf   r3   r4   r2   )r3   r3   r5   r6   r   )r   r   r   r   r  r  r   rs  r  s       r   test_arithmetic_addr&  <  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 )Nr#  r$  )r3   r2   r4   r4   r4   )r   r   r   subtractr  r%  s       r   test_arithmetic_subtractr)  D  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 )Nr#  r$  )r   r  r2   r      )r   r   r   multiplyr  r%  s       r   test_arithmetic_multiplyr-  L  sp    8OOO$$DH%%%&&E[u%%Fx)))**H=="""""""r   rq  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 )Nr.  r   ndigitsr/  r3   multiple)g	@      @皙@      @皙	g      gN)r2   r2   r2   r5   r9  r9  N)r5   r5   r5   r   r  r  r  N)r2   r2   r2   r5   r  r  r  N)r5   r5   r5   r   r9  r9  r9  N)r2   r2   r5   r5   r  r9  r9  N)r2   r5   r5   r   r  r  r9  N)r2   r2   r5   r5   r  r  r9  N)r2   r5   r5   r   r  r9  r9  N)r2   r5   r5   r5   r  r9  r9  N)r2   r2   r5   r   r  r  r9  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   r.  r   r   r/  r   itemsr   r   r  r  )
rq  r.  r   rU   rmode_and_expectedrD  r  r   rs  expected_arrays
             r   test_round_to_integerrH  T  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@  r5  g@r7  gV-	g):ˏAg\(\Ni,  r   r   r   r   r   r   NrK  r   r   r   r   ir   N)rK  r5   r2   r   r  ir  NrK  r5  @r7  r8  ̌Ar  N)rK  r5  gp=
ף@r7  gGz	g(\AffffffN)r  rf   r   r3   r4   r@  r  T	equal_nanrC  )	rE  r   r   r.  r  testingassert_allcloser   r   )rU   ndigits_and_expectedr2  r  r   rs  s         r   
test_roundrW  q  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 )NrJ  r   )rK  r5  rO  r7  r8  rP  rQ  Nr$   rN  r4   )rK  r5   r5   r5   r9  ir9  Nr!   rM  r   r5   r   rL  r@  r  TrR  r   r  g$z"Rounding multiple must be positiver=   r3  l   l+?R zis not a valid multiple type)r   r   
decimal256rE  r   r   r/  r  rT  rU  r   rC   rD   rI  rB   rE   )rU   multiple_and_expectedr4  r  r   rs  s         r   test_round_to_multipler[    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  rf   r   r3   r4   r2   )r      i^  i  g     ^@g
ףp=Rm@r_  r   r!   rf   g      @r?  rC  r@  )r   r   r   r  r   round_binaryr   )rU   scalesr  expect_zero
expect_infscales         r   test_round_binaryrf    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 )Nr  )FFFT)TTTFr3   r4   r2   FTrg  )FFFTF)nan_is_null)FFFTT)r   r   r  r  r   r  r:  r#   r  s      r   test_is_nullri    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 )Nr3   r4   r2   rg  )FFFNT)rj   rk   Nr   z"has no kernel matching input typesr=   r/      bbN)
r   r   r#   is_nanr  r)   rC   rD   r   rz  )r  rs  r  rK  s       r   test_is_nanrn    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r3   r4   Nr5   r   r   +Array arguments must all be the same lengthr=   r  )r*   bbNccc)r*   rr  rs  rk  )r/   rl  s   ccc)r   r   r   rC   rD   rI  	fill_nullr  r   r  rz  )r  
fill_valuers  r  s       r   test_fill_nullrv    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 )Nrp  r   r   )r3   r4   r   r5   5r   )r   r   r   rt  r  typesis_unsigned_integerr   rC   rD   r  rE   )r1  r  ru  rs  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   )Nr4   r2   r5   )r   r4   r2   r5   r3   r4   r5   r   )r   r   r:  r   rt  r  )r1  ru  r  rs  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        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 )Nr  )TTFTr  r  r  )	r   r   r   and_
and_kleeneor_	or_kleenexorinvertr9   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 )Nr3  r"   r   )target_typer   r  T)r   r   r   l    )allow_int_overflowFr   rf   i  r3   i  l    x\Nl    0E*ztimestamp[ms]r4   )r2   r5   r   rj   rk   )34rx  )r   r   r   r   r   rC   rD   rE   castr  r   rI  datetime
large_listr  rI  r   )r  r   allow_overflow_optionsr  s       r   	test_castr  I  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  r2   r3   r   )r  dater   r   r   r  )r  dtr  s      r   test_identity_cast_datesr  p  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elementr4   rU   )r3   r4   r2   r5   r   r6   r   )r3   NNr5   r   r6   )NNNNNNr2   z&Size of FixedSizeList is not the same.r=   )r   r  rh   r   FixedSizeListArrayr  r   r  r   r  rC   rD   libArrowTypeError)r  	cast_typedtyper   fslerr_msgs         r   test_fsl_to_fsl_castr  x  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)	precisionre  	float_val	decimal32	decimal64   
decimal128&   rY  L   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)valre  r  s      r   largest_scaled_float_not_abover    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   intdecimalDecimalscalebr#   )int_valre  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.
    r8   r3   r2   r   r4   r  r^  r!   N)r  r  rx   r  )float_tyr  mantissa_digitsr  re  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.
    r8   r3   r2   r   r4   r!   N)r  rx   r  r  )r  r  r  r  re  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.
    *   r3   r6   r   r5      r!   N)r  Randomr  	randranger  r  )r  r  rr  re  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 )Nr3   r   r!   r4   r5   zfloat_val = z, precision=z, expected = z, actual = z, diff_digits = )r  precr  ROUND_HALF_EVENroundingcreate_decimal_from_floatquantizer  r  re  r   r   r   r  r6  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   )r  localcontextr  r  r  r  r  re  )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  r4   r!   r   r   r   r3   N)r  r  r   r  r  r  mathfloorlog10r  log2r  r  r  rx   ceilr  r  r  r  ldexpr   r  r.  r  r   r  r   r6  r  )r  r  r  np_float_tymantissa_bitsfloat_exp_minfloat_exp_maxr  r  r  r  	min_scale	max_scalere  r  	float_expr  mantissar  r  expected_as_intr  actual_as_ints                          r   !test_cast_float_to_decimal_randomr    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   r3   il        r   r  z%d/%m/%YT)r  r  error_is_nullz"Failed to parse string: '5/1/2020'r=   z%Y-%m-%dF)NNN)	r   r   r   strptimer  	timestamprC   rD   rI  )r  gotr  s      r   test_strptimer  V  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  z%Y-%m-%dT%H:%M:%Sr   r  z%Sr  z%S.%fC)localez.Timezone not present, cannot convert to stringr=   r  )sysplatformextendpdto_datetimetz_localizer   r   r  r   r   strftimer  r   r  rC   rD   rI  )times	timezonesformatstimezonetsr  tsafmtr   rs  r  s              r   test_strftimer'  r  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]   r  )tzi  g&.>r7   iso_yeariso_weekiso_day_of_weekz1.1.0c                 6    |                                  d         S Nr   isocalendarxs    r   r  z,_check_datetime_components.<locals>.<lambda>      AMMOOA$6 r   r"   c                 6    |                                  d         S )Nr3   r0  r2  s    r   r  z,_check_datetime_components.<locals>.<lambda>  r4  r   c                 6    |                                  d         S )Nr4   r0  r2  s    r   r  z,_check_datetime_components.<locals>.<lambda>  s    1==??1#5 r   yearweekday)fieldsFc                 <    |                                  j        dk    S r/  )dstsecondsr2  s    r   r  z,_check_datetime_components.<locals>.<lambda>	  s    !(; r   r3   ra   r  Tr   )5pyarrow.vendored.versionr)  r  r  r  
tz_convert	to_seriesr   r   r  r  microsecond
nanosecondr.  rh   r"   __version__maprf  r1  StructArrayr  r7  monthr9  	dayofweek	dayofyearquarterhourminuter~   rU   r   r  is_leap_yearday_of_weekday_of_yearr+  r,  iso_calendarmillisecond	subsecondlocal_timestampr*  r  r#  utcr@   applyis_dstr   r   r8  )
timestampsr#  r)  r$  r%  
subsecondsiso_calendar_fieldsr+  r,  iso_dayrO  r7  rF  r9  rG  rH  rI  rJ  rK  r~   rA  rB  rU  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]   
US/CentralAsia/Kolkata	Etc/GMT-4	Etc/GMT+4zAustralia/Broken_Hillr   z-Timezone database is not installed on Windows)r\  r   r   r   rC   r  )r   rV  r!  r#  s       r    test_extract_datetime_componentsrc  	  s    + + +JD D DI z*** >!,_= =CDDDDD! 	= 	=H&z8<<<<	= 	=r   r  r  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  r3   r4   r7   2   i  4   rM  )r+  r,  r-  r  )	r   r   r  r  r   rO  rE  r  r  )r  r  rs  r  s       r   test_iso_calendar_longer_arrayrg  1	  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 )Nr  r^  z2015-03-29 02:30:00z2015-03-29 03:30:00)z2018-10-28 01:20:00z2018-10-28 02:36:00z2018-10-28 03:46:00r   )r]   r_  r`  r  zalready have a timezone:r=   zEurope/Brusselsssznot found in timezone databaseEurope/Brusselsru   earliest)	ambiguousnonexistentlatestz%Timestamp doesn't exist in timezone ''shift_forward)rl  shift_backwardz$Timestamp is ambiguous in timezone ')TTT)rk  )FFF)r   r  r  r  r   r   r   r  assume_timezoner  rC   rD   rI  r  )ts_typerV  rl  rk  ambiguous_arraynonexistent_arrayr#  r   tar  rs  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;;;9 : :*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 )Nr  r  r  r   r  r  r  rB  rA  rP  r~   rK  rJ  r9  )rB  rA  rP  r~   rK  rJ  r  r9  T)calendar_based_originr3  )ceil_is_strictly_greater1D)r   r   r  r   r   ceil_temporalre  r  r  r  rT  assert_array_equalfloor_temporalr  round_temporalr.  r   r*  wherer  	Timedelta)r$  rU   r  unit_shorthandgreater_unitru  value	frequencyr   rs  r  origins               r   _check_temporal_roundingr  	  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)r3   r4   r2   r5   r   r6   rM  r!   r+  r  <      i  i  )z1923-07-07 08:52:35.203790336z1931-03-17 10:45:00.641559040z1932-06-16 01:16:42.911994368z1941-05-27 11:46:43.822831872z1943-12-14 07:32:05.424766464z1954-04-12 04:31:50.699881472z1966-02-12 17:41:28.693282560z1967-02-26 05:56:46.922376960z1975-11-01 10:55:37.016146432z1982-01-21 18:43:44.517366784z1992-01-01 00:00:00.100000000z1999-12-04 05:55:34.794991104z2026-10-26 08:39:00.316686848c                 :    g | ]}t          j        |d           S )r  r  )r  	Timestamp)r
   r3  s     r   r   z'test_round_temporal.<locals>.<listcomp>
  s'    CCC1BL...CCCr   )r`  zAmerica/New_Yorkra  rb  ri  zPacific/Marquesasr_  r]   r]   )r  Seriesr  r  r  r?  )r  rU   rV  r$  r!  r#  ts_zoneds          r   test_round_temporalr  
  s    
 BF) ) )J 
CC
CCC	D	DBR...N N N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r3   r4   r2   NNr2   
only_validr@  	only_nullr4   r   r   z*"something else" is not a valid count moder=   zsomething else)r   r   r   rA  r6  rC   rD   r  r/  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   r3   Nr2   r5   r   r   r4   rf   r5   r2   r_   r3   )r_   end)	r   r   r"   r   indexr   r6  r   r:  r/  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  rQ  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>A
  s"    EEE4
#EEEr   rq   c              3      K   | ]}|d u V  	d S r   r   r
   r  s     r   r   z&check_partition_nth.<locals>.<genexpr>E
  &      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>G
  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>J
  0      @@qqDy*AF@@@@@@r   c              3   $   K   | ]
}|k    V  d S r   r   r  s     r   r   z&check_partition_nth.<locals>.<genexpr>K
  '      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>M
  r  r   c              3   ,   K   | ]}|d u p|k    V  d S r   r   r  s     r   r   z&check_partition_nth.<locals>.<genexpr>N
  r  r   )r-  r@   sortedlistr  r   )rQ  r   pivotrs   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  rC   rD   r  )rQ  r  r   s      r   test_partition_nthr  Q
  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   rM  r     )rq   r  )r  rs   )r  r  r  r  r   r  r  )rQ  r  rs   r   s       r   !test_partition_nth_null_placementr  `
  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slicer@   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_kl
  s    '59I8JKKK'--a5E1F1FGG 	&#~555555wsN33HWS"233FX%%%%%%r   r3   r4   Nr   r   r4   r5   )r   rw   r   r  rz   )r  r   rw   r4   r   r  r   rw   r   F)r   r   r   select_k_unstabletop_k_unstablebottom_k_unstabler   )r  r  r  r  rs  s        r   test_select_k_arrayr  k
  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  tblrz   r  r  r  r  r  s           r   r  z.test_select_k_table.<locals>.validate_select_k
  s    	BBB'--a5E1F1FGG 	&#~555555wsN33HWS"233FX%%%%%%r   )r3   r4   r   )r3   r   r3   r9   r  r*   rw   r  r   r*   rw   r   r*   r   r+   z4'select_k_unstable' cannot be called without optionsr=   z,select_k_unstable requires a nonnegative `k`rf   z2select_k_unstable requires a non-empty `sort_keys`r4   not a valid sort orderr*   nonscending.Invalid sort key column: No match for.*unknownunknownrw   r  )
r   r  r   r  rh   r  r  rC   rD   r  )r  r  r  rs  s       r   test_select_k_tabler  
  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  r2   r   r3   r4   rw   )r  r   r3   r   r2   r4   rq   )r  rs   r4   r3   r   r2   rr   r  r=   r  )r   r   r   array_sort_indicesr-  rC   rD   r  r  rs  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  rq   r|   r  rr   r  )r   r   r   r  r-  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)r3   r3   Nr   )r3   r   r   r3   r9   r  r   r  r*   rw   rq   r|   )r4   r2   r   r3   r  r   r  r  rr   z"Must specify one or more sort keysr=   r  r  r  r  )	r   r  r   r  r-  rh   rC   rD   r  )r  rs  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r3   r4   Nr3   r4   r2   r3   r2   N	value_set)TFTTFTTr  r`   )TFFTFTr3   r2   )r   r   r   is_inr-  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   Nr4   r   Nr3   Tr  )r   NNr   Nr3   r3   r2   rd   )r   r   r   index_inr-  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 )Nr3        @lower)interpolationr4   higherr2   nearestmidpointlinearr3   )g      ?      ?g      ?q)      ?      ?g      ?)r  r  )r3   r3   r3   )r4   r4   r4   )r  r  r  r3   r3   r4   z Quantile must be between 0 and 1r=   皙?z"not a valid quantile interpolationzzz)r   r   r   r  r-  rC   rD   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 )
Nr3  r  r3   r4   r2   r5   )r   r   r3   r  )r3   r  r5   )r   r   r   tdigestr-  r:  r  s     r   test_tdigestr  i  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   bool_rt  r  r   r  s     r   test_fill_null_segfaultr  {  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 )Nr  )r2   r3   r4   r4   r2   N)r2   r4   r2   r  )r2   r2   r2   Trd   )r4   r2   r2   r  F)r3   r4   N)r   r   r   max_element_wiser  r   )r  r  arr3rs  s       r   test_min_max_element_wiser    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      %r`   )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   r  )r   Nr     r   r  r  )r3   r2   r6   )r   Nr  re  )r   NNNr^   )      ?g      @g     @@r3   r4   r  r5   r   r2   )r  g      @g     @Fzero_copy_onlyr*   arrowr  r  )r  r   r   r   r"   r   r:  r  r   cumulative_sumr   r  r  r  r  rg  rT  assert_array_almost_equalto_numpyrC   rD   rI  r_   r`   	start_intstartsstrtarraysexpected_arraysr  r  rs  r  s              r   test_cumulative_sumr#    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   r  )r3   Nr  r   r3   r  r   )r3   r4   r6   )r3   Nr  r   )r3   NNNr^   )r  r  r5  r4   r  r5   r2   )r  g      @g     @*@Fr  r*   r  r  r  )r  r   r   r   r"   r   r:  r  r   cumulative_prodr,  r  r  r  r  rg  rT  r  r  rC   rD   rI  r  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 6r$  )r   r5  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   )r4   r3   r2   r   r5   r6   )r4   r3   Nr   r5   N)r4   r3   N)r   r5   N)r4   r4   r2   r   r   r6   )r4   r4   Nr   r   N)r4   r4   NNNNr^   g    eFrd   )r  ?r6  ffffff@皙@@r  r)  r6  r+  r,  )r  r  r6  r*  r*  r,  )r  r  r6  r6  r+  r,  )r  r  Nr  r+  N)r  r  NNNNr  r*   r  r  r  r  )r  r   r   r   r"   r   r:  r  r   cumulative_maxr  r  r  r  r  rg  rT  r  r  rC   rD   rI  r  s              r   test_cumulative_maxr.    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   r6   r5   r4   r2   r3   )r   r6   Nr4   r2   N)r   r6   Nr  )r   r   r5   r4   r4   r3   )r   r   Nr4   r4   N)r   r   NNNNr^   g    eAFrd   )      @333333@@ @333333@333333?r1  r2  r3  r5  r6  )r1  r1  r3  r4  r4  r6  )r1  r1  r3  r3  r5  r6  )r1  r1  Nr1  r5  N)r1  r1  NNNNr  r*   r  r  r  r  )r  r   r   r   r"   r   r:  r  r   cumulative_minr  r  r  r  r  rg  rT  r  r  rC   rD   rI  r-  r  s              r   test_cumulative_minr8  L  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 5r/  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 )Nr3   r*   )0rj   r  r   )field_names)r  r   r  za b cz0 1r  rq  r=   r3  z0 arguments but 2 field namesonetwo)
r   make_structr6  splitr   rE  r  rC   rD   r  r   r   r   test_make_structr@    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)r<  r3   )r=  r4   )noner2   )r<  r   )r<  rM  r   )r3   NNr   N)r3   NNrM  Nr3   r   rM  r<  rn   lastr   )	r   map_rI  r   r   r  r   
map_lookupr   )rq  r  result_firstresult_last
result_alls        r   test_map_lookuprI    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                  2   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            d S # 1 swxY w Y   d S )Nr5   r   r6   r   )r  Nr  r*   r+   r  z.c.bs   .c.br3   )r1   r+   )r  r+   z.a)r*   r   )r3   r3   r   zNo match for FieldRefr=   r  z.c.fooz.a.foo)r   r   r"   rE  r  r   struct_fieldrh   rC   rD   rI  )r*   r+   r  r  s       r   test_struct_fields_optionsrM    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&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's6   I11I58I5J>>KK)LLLc                      t          j        t          j        g dg d          g dg d          t          j        g d          k    sJ d S )Nr,  )FTNr  )   r  r  )r3   r  N)r   	case_whenr>  r   r   r   r   r   test_case_whenrQ    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'   r4   r9   r%   r5   gffffff@r6   gp=
ף?r2   ffffff?g333333?r   r3   )	r   r  r  r   r  r   computelist_elementr  )element_type	list_typel1l2listsr  rs  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 )r3   )r7  rF  r9  )r  )r
   ys     r   r   z'test_count_distinct.<locals>.<listcomp>  s*    TTTQx aqa888TTTr   i  i,  r  r   )	r  r   r   r  r   count_distinctr   r@   r"   )samplesr  s     r   test_count_distinctra    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  r2   r  r  r  r3   r   r5   )r   r   r   r_  r6  r/  s    r   test_count_distinct_optionsrc    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_normalizerC   rD   r  r/  s    r   test_utf8_normalizerl    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  r-  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   rM  ro  rr  rt  s     r   r   ztest_random.<locals>.<listcomp>  sO     & & & BIcq1u555??AABB & & &r   r   rM  rK  r  c              3   >   K   | ]}t          j        d           V  dS )r!   N)osurandomrt  s     r   r   ztest_random.<locals>.<genexpr>  s*      ::1
2::::::r   c                 x    g | ]7}t          t          j        d |                                                    8S )r   ro  rr  rt  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  r@   r  rB   r  rC   rD   rE   )rp  r!  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  )r2   r3   r5   r6   r5   r6   r3   rx   )r2   r4   r   rM  r   rM  r4   rn   r2   r3   r5   r6   r   rM  r4   dense)r4   r3   r2   r5   r2   r5   r3   c                    t          j        g d          }t          j        dd|           }t          j        ||          }t          j        |t          j                              }|                    |          sJ d S )Nr6  r  333333@Nr  Nr  rw   r  ry   r  r   )r   r   r   r   rankr    r  )r{   expected_valuesr  rank_optionsrs  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   rq   rr   )r   r2   r6   r3   rM  r4   r5   r   )r2   r5   r3   r6   r4   rM  r   z'"NonExisting" is not a valid tiebreakerr=   r  NonExistingry   )
r   r   r    r   r  r  r   rC   rD   r  r  r  rs  expected_at_startexpected_descendings        r   test_rank_optionsr  0  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Nr3   Nr4   N)rS  r$   rS  r&   rS  r   r  r   r   rq   rr   )r&   rS  r&   r   r&   r   )rS  r&   rS  r$   rS  r  r=   XXX)
r   r   r  r   rank_quantiler  r   rC   rD   r  r  s        r   test_rank_quantile_optionsr  Q  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  rw   )rs   rz   r  )r  g2m6<?r  r  r  rq   r   )r   r   rC   rY  r   rank_normalr-  r   r  r  rs  s      r   test_rank_normal_optionsr  o  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  r3   r  Tr)   r*   r4   Fr   r  r   rM  )r  r  r  )r3   r   r  )r   literalscallsrefsnumeric_refsspecialschema)-r   r  rh   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_xorrm  	is_finitecoalescer  r   isinr  copy)r  r*   r+   r  r  r  r  r  r  r  r  literal_exprsexprs_with_callexprs_with_refexprs_with_numeric_refsspecial_cases	all_exprss                    r   create_sample_expressionsr    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  r3   r  r4   r2   )
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   r3   TFr)   rh   r/   r+   )nestedrh   r  r   r4   r  r  )r   r   rh   r   r  r  r  rC   rD   rE   rI  rB   )
zeror<  truefalser)   rh   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   rC   rD   r  r   )r  r  s     r   !test_expression_boolean_operatorsr  7  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 )
Nrh   zhour(field)zround(field)r3   r1  z2round(field, {ndigits=1, round_mode=HALF_TO_EVEN})zadd(field, 1)z+only other expressions allowed as argumentsr=   )r   rh   r  rJ  r.  r   r   r   rC   rD   rE   rB   )rh   rJ  s     r   test_expression_call_functionr  I  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*   r3   r4   )	r   r  rC   rD   r  r  r   r  r"   )r  s    r   test_cast_table_raisesr  _  s    HcAq6]##E	rv,	-	- # #
rxzz"""# # # # # # # # # # # # # # # # # #s   'A00A47A4zstart,stop,expectedr  r  r6   NNr  r3   r4   rW  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  r  r  r  r2   r5   r   r6   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>  s,    BBBAq/!FFdF))aBBBr   )r   r   r  r   r  rC   rD   rI  r   
list_slicer   	list_sizer-  )r_   r  r  r  r  rW  r  rH   rJ  rs  pylists     `        r   test_list_slice_output_fixedr  f  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   r3   )r   r4   r  )r4   r5   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  r  r  r  r2   r5   r   r6   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>  s-    LLL!am%T/""LLLr   )	r   r   r  r   r  r   r  r   r-  )
r_   r  r  r  rW  rQ  r  rs  r  r  s
   ```       r   test_list_slice_output_variabler    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  rh   r   r   r   r   r  r    s"    BHRXeRWYY//00 r   c                  t    t          j        t          j        dt          j                              d          S )Nr  r3   r  r   r   r   r  r    s$    BHRXeRWYY//33 r   c                  r    t          j        t          j        dt          j                                        S r  )r   r  rh   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 )Nr3   r   r  )r   r   r   r  r   rh   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 )Nr3   z@`start`(.*) should be greater than 0 and smaller than `stop`(.*)r=   rf   r4   r   z`step` must be >= 1, got: r:  )r  z-1)	r   r   r  r   rC   rD   rI  r   r  )r  rJ  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                     t          j        g d          }t          j        ||           }t          j        |          }|j        |j        k    sJ |                    |          sJ d S )N)r3   r3   r3   r4   r4   r3   r3   r3   r3   r3   r2   r2   r2   r2   r2   r2   r2   r2   r2   r  )r   r   r   run_end_encoderun_end_decoder   r  )run_end_encode_optsr  encodeddecodeds       r   check_run_end_encode_decoder    sq    
(LLL
M
MC-@AAAG((G<38####>>#r   c                  ,   t                       t          t          j        t          j                                         t          t          j        d                     t          t          j        t          j                                         d S )Nr   )r  r   r   r   r   r"   r   r   r   test_run_end_encoder     sk    !!! 6rxzz B BCCC 6w ? ?@@@ 6rxzz B BCCCCCr   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)r3   r4   r2   Nr5   r   )Nr3   r3   NNr3   r3   ro   )NNr4   Nr3   Nr4   r   )rf   rf   NNrf   Nrf   )   r  NNr  Noverflowr=   )r   r   rT  pairwise_diffr  r   r   rC   rD   rI  pairwise_diff_checkedr  s      r   test_pairwise_diffr    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 )NrW  rt   )rt   rW  depth)r!   NrO  r!   )rW  rt   )	key_nameszUnexpected pivot key: depthr=   ru   )r	  rv   z(Encountered more than one non-null value)rt   rW  rt   )r   pivot_widerr6  r  rC   rD   KeyErrorr  )r	  rs  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!   r5   r7   r   r   r2   rM  r4   r3   r6   r$   g?)
r   r5   r   r   r   r2   rM  r4   r4   r6   )lower_limitupper_limitr  )r   r   r   	winsorizer-  r   r  s     r   test_winsorizer    s    
(222
3
3C\#sC((F!?!?!?????\R(ScJJJL L LF!?!?!???????r   )r3   r   )collectionsr   r  r  	functoolsr   r   rR   r  r  rw  rC   r  r  r  numpyr  ImportErrorpandasr  r   r   pyarrow.computerT  r   pyarrow.libr   pyarrow.substrait	substraitpasr  __dict__rE  r?   rQ   r   r   r"   r   r   r    r  r  numerical_arrow_typesr  r.   r  r  r  all_array_typesrI   rO   r[   markfilterwarningsr   r   r   r   r   r  r
  r  r!  r%  r*  r0  parametrizer8  r<  rE  rG  rK  rR  rZ  r]  rY  re  rt  rx  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_missingrM  rT  r`  rm  rw  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r&  r)  r-  rH  rW  r[  rf  ri  rn  rv  r{  r}  r  r  r  date32date64r  r  r  r  r  r  r  rY  decimal_type_traitsr  r  r  r  r  r  r  r  r  r  r   r'  r\  rc  rg  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r'  r.  r8  r@  rI  rM  rQ  r[  ra  rc  rl  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   <module>r)     sC  $ # " " " " "   ( ( ( ( ( ( ( (       				   



    	BBB   	BBB           0 0 0 0 0 0#######   
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 aB aB aBH( ( ( )*J J J JF F FI I I5 5 5
3 3 3
 $ $ $= = =	% 	% 	%  	> 	> 	> '<==1 1 >=1* '<==1 1 >=1,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$ 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 / :;;? ? <;?< / :;;!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 = = =< !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
$* * *(   D D D9 9 9<5 5 54@ @ @ @ @s3   = AAA AA.A5 5A?>A?