
    h\                        S SK Jr  S SKrS SKrS SKJrJr  S SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKr S SKr S SKrS SKrS SKJr  S SKJr   S SKJr  \" \R>                  RA                  5       5       V Vs/ s H  u  p\!" US5      (       d  M  UPM     snn r"\" \R>                  RA                  5       5       V Vs/ s HB  u  p\#" U\$5      (       d  M  U\RJ                  Ld  M&  \&" U\RJ                  5      (       d  M@  UPMD     snn r'\RP                  " 5       \RR                  " 5       \RT                  " 5       \RV                  " 5       \RX                  " 5       \RZ                  " 5       \R\                  " 5       \R^                  " 5       /r0S/ SQ4S\1" S	5      4S
\1" S	5      4S\1" S	5      4S\1" S	5      4S\1" S	5      4S\1" S	5      4S\1" S	S5      4S\1" S	S5      4S/ SQ4S/ SQ4S/ SQ4S/ SQ4\Rd                  " S5      / SQ4\Rf                  " \RP                  " 5       5      SS/SS/S	S/SSS //4\Rh                  " \RR                  " 5       5      S// S!QS	S/SSS //4\Rj                  " S"\RP                  " 5       4S#\RP                  " 5       4/5      SSS$.SSSS$.SS	SS$./4/r6S% r7S& r8S' r9\Rt                  Rw                  S(5      S) 5       r<S* r= GSS+ jr>S, r?S- r@S. rAS/ rB\Rt                  R                  S0 5       rCS1 rDS2 rES3 rFS4 rG\Rt                  R                  S5\05      S6 5       rI\Rt                  R                  S5\R                  " SS5      \R                  " SS5      /5      S7 5       rL\Rt                  R                  S5\05      S8 5       rM\Rt                  R                  S5\R                  " SS5      \R                  " SS5      /5      S9 5       rNS: rOS; rPS< rQS= rRS> rSS? rT\Rt                  R                  S@/ SAQ\R                  " SB5      \R                  " SC5      SD.4/ SEQ\R                  " SF5      SSD.4SSG/SSSD.445      SH 5       rVSI rWSJ rXSK rYSL rZSM r[SN r\SO r]SP r^SQ r_SR r`SS raST rbSU rcSV rdSW reSX rfSY rgSZ rhS[ ri\" 5       S\ 5       rjS]S^1rk1 S_krl1 S`krm1 Sakrn1 Sbkrm\m\n-  \k-  \k\n\m\lSc.ro\Rt                  R                  Sd/ SeQ5      \Rt                  R                  SfSgSh/5      Si 5       5       rpSj rqSk rr\Rt                  R$                  Sl 5       rsSm rtSn ruSo rvSp rwSq rxSr ry\Rt                  R                  Ss\65      St 5       rzSu r{Sv r|\Rt                  R                  SwSxSy/5      Sz 5       r}S{ r~\Rt                  R                  Ss\65      S| 5       rS} rS~ rS rS r\Rt                  R                  Ss\65      S 5       r\Rt                  R                  \Rt                  R                  Ss\65      S 5       5       rS rS rS rS rS r\Rt                  R                  SSS/5      S 5       r\Rt                  R                  SSS/5      S 5       r\Rt                  R                  SSS/5      S 5       rS rS rS rS r\Rt                  R                  SSS/5      S 5       r\Rt                  R                  S 5       r\Rt                  R                  S 5       rS rS rS rS r\Rt                  R                  S5\05      S 5       r\Rt                  R                  S5\05      S 5       rS rS rS rS r\Rt                  R                  S\GR>                  " 5       \GR@                  " 5       /5      S 5       r\Rt                  R                  S\05      S 5       r\" SS5      r\" SS5      r\" S\GRJ                  S5      \" S\GRL                  S5      \" S\R                  S5      \" S\R                  S5      /rS rS rS rS rS rS r\Rt                  R                  \Rt                  R                  S\R^                  " 5       /\S9\Rt                  R                  S\S S9\Rt                  R                  S\\\// SQS9S 5       5       5       5       r\Rt                  R                  \Rt                  R                  S\R\                  " 5       \R^                  " 5       /\S9\Rt                  R                  S\S S9S 5       5       5       rS r\Rt                  R$                  \Rt                  GRd                  S 5       5       rGSS jr\Rt                  R$                  S 5       rS r\Rt                  R                  S/ SQ5      S 5       r\Rt                  R$                  \Rt                  GRd                  S 5       5       rS r\Rt                  GRd                  \Rt                  R                  SS5      \Rt                  R$                  S 5       5       5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\Rt                  R                  \Rt                  R                  SS5      \Rt                  R                  SS5      S 5       5       5       r\Rt                  R                  \Rt                  R                  SS5      \Rt                  R                  SS5      S 5       5       5       r\Rt                  R                  \Rt                  R                  SS5      \Rt                  R                  SS5      S 5       5       5       r\Rt                  R                  \Rt                  R                  SS5      \Rt                  R                  SS5      S 5       5       5       rS rS rS rS rS rS rS rS rS r\Rt                  R                  SS/ SQ4S/ SQ4S/ SQ4S/ SQ4/5      S 5       rS rS rS rS r\Rt                  R                  S 5       r\Rt                  R                  \Rt                  R8                  S 5       5       rS rS rGS  rGS r\Rt                  R                  GSS S/ GSQ/ GSQ/ GSQS/4S SS/S/S/S/4S SSS/SS	/SS/S/4SSS/S	/S/S/4SSSS/SS/SS/S/445      \Rt                  R                  GSGS5      \Rt                  R                  S\GR                  \RR                  \R^                  45      \Rt                  R                  GS\Rf                  \Rh                  GS	45      GS
 5       5       5       5       r\Rt                  R                  GSGS5      \Rt                  R                  GSGS5      \Rt                  R                  S\GR                  \RR                  \R^                  45      \Rt                  R                  GS\Rf                  \Rh                  GS	45      GS 5       5       5       5       r\Rt                  R                  GSGS5      \Rt                  R                  GSGS GS GS 45      GS 5       5       rGS rGSGS jr\Rt                  R                  S\RP                  " 5       \RR                  " 5       \GR                  " 5       \RT                  " 5       \GR                  " 5       \R\                  " 5       \R^                  " 5       \GRJ                  " SS 5      \GRL                  " SS 5      \R                  " SS 5      \R                  " SS 5      45      \Rt                  R                  GSS\GR                  " \RR                  " 5       5      \GR                  " S5      \GR                  " \RT                  " 5       5      45      GS 5       5       rGS rGS rGS rg! \ a    Sr GNf = f! \ a    Sr GNf = f! \ a    Sr GNf = fs  snn f s  snn f (      )
namedtupleN)	lru_cachepartial)ArrowNotImplementedError__arrow_compute_function__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            	      )r$   r"   r%   r   r   r   r   c                  L   [         n [        U 5      S:  d   eU  Hu  nUR                  nUS   (       a  M  US   nUS:X  a  M(  U[        L a  [	        5       /S-  nO[	        5       /U-  n[
        R                  " [        SS9   U" U6   S S S 5        Mw     g ! , (       d  f       M  = f)Nr   options_requiredarityr   r"   zBGot unexpected argument type <class 'object'> for compute functionmatch)exported_functionslenr   Ellipsisobjectpytestraises	TypeError)	functionsfuncdescr,   argss        T/home/james-whalen/.local/lib/python3.13/site-packages/pyarrow/tests/test_compute.pytest_exported_functionsr;   ^   s    
 #Iy>R.."# WA:HH:>DH:%D]]9"IJ $KJ J J Js   B
B#	c                      [          H8  n [        R                  " U R                  S   5      nUR                  S:w  a  M8   e   g )Nnamehash_aggregate)r/   pcget_functionr   kind)r7   arrow_fs     r:    test_hash_aggregate_not_exportedrC   x   s:     #//$"A"A&"IJ||//// #    c                     [         n [        U 5      S:  d   eU  Hb  n[        R                  " U5      nUR                  R                  5        H+  nUR                  UR                  UR                  4;  a  M+   e   Md     g )Nr   )	exported_option_classesr0   inspect	signature
parametersvaluesrA   VAR_POSITIONALVAR_KEYWORD)classesclssigparams       r:   test_exported_option_classesrQ      sx    %Gw<2 $^^**,E::e&:&:&+&7&7&9 9 9 9 -	 rD   z<ignore:pyarrow.CumulativeSumOptions is deprecated as of 14.0c           
         / [         R                  " 5       P[         R                  " S5      P[         R                  R	                  [
        R                  " 5       5      P[         R                  " S SS9P[         R                  " 5       P[         R                  " SSS9P[         R                  " 5       P[         R                  " 5       P[         R                  " SS9P[         R                  " S5      P[         R                  " S5      P[         R                  " 5       P[         R                   " [
        R"                  " S	5      5      P[         R$                  " 5       P[         R&                  " SS
S	S5      P[         R(                  " SS9P[         R*                  " SS/SS/[
        R,                  " SS05      [
        R,                  " SS05      /S9P[         R.                  " [
        R"                  " S	5      S5      P[         R0                  " S5      P[         R2                  " 5       P[         R4                  " 5       P[         R6                  " S5      P[         R8                  " S	S9P[         R:                  " S	SS9P[         R<                  " S/SS9P[         R>                  " 5       P[         R@                  " 5       P[         RB                  " SSSS9P[         RD                  " SSS9P[         RF                  " SS	S5      P[         RH                  " SS5      P[         RJ                  " SS 5      P[         RL                  " S 5      P[         RN                  " S	S!SS"9P[         RP                  " S#S 5      P[         RR                  " 5       P[         RT                  " SS$/S%9P[         RV                  " [
        RX                  " S	/5      5      P[         RZ                  " SS&9P[         R\                  " SS	S	5      P[         R^                  " S'/SS9P[         R`                  " 5       P[         Rb                  " S5      P[         Rd                  " 5       P[         Rf                  " S(S)S5      P[         Rh                  " / S*9P[         Rj                  " 5       P[         Rl                  " 5       P[         Rn                  " S+5      P[         Rp                  " S,5      P[         Rr                  " 5       P[         Rt                  " S-S.5      P[         Rv                  " SSSS/9P[         Rx                  " S0S15      PnU Rz                  R|                  R~                  S2   (       a%  UR                  [         R                  " S35      5        U Vs1 s H  n[        U5      iM     nn[         Ha  nXC;  d  M
  U Rz                  R|                  R~                  S2   (       d  M4  U[         R                  :w  d  MJ   UR                  U" 5       5        Mc     U H  nX":X  d   e[        U5      R                  UR                  R                  5      (       d   eUR                  5       n[         R                  R                  U5      nX&:X  d   e[        U5      R                  S55      (       a#  [        U5      R                  S65      (       d   eM  [        U5      [        U5      :X  a  M   e   [        XS	S  5       H  u  pxXx:w  a  M   e   [        [         R                   " [
        R"                  " S	5      5      5      S7:X  d   e[        [         R                  " 5       5      S8:X  d   eg s  snf ! [         a    [        R                  " S4U 35         GM  f = f)9NUTCFstart
skip_nullsr   count_from_zero
week_startTrV   patternr#   )	recursivefieldnamesr   1r   2)field_nullabilityfield_metadatafirstr
   periodat_startnull_placementheightraise)unexpected_key_behavior	ascendingmax	sort_keysri   
tiebreakerrp   ri   r$   towards_infinitysecond)week_starts_mondayd   r   rm   rp   	min_countdummy
descending%Ysindices NFKC皙??ru   rX   first_week_is_fully_in_yearr%   0timezone_dataEurope/LjubljanazOptions class is not tested: CumulativeSumOptionsCumulativeOptionszIndexOptions(value=int64:1)z7ArraySortOptions(order=Ascending, null_placement=AtEnd))Nr?   ArraySortOptionsAssumeTimezoneOptionsCastOptionssafepar   r   CountOptionsDayOfWeekOptionsDictionaryEncodeOptionsRunEndEncodeOptionsElementWiseAggregateOptionsExtractRegexOptionsExtractRegexSpanOptionsFilterOptionsIndexOptionsscalarJoinOptionsListSliceOptionsListFlattenOptionsMakeStructOptionsKeyValueMetadataMapLookupOptionsMatchSubstringOptionsModeOptionsNullOptions
PadOptionsPairwiseOptionsPartitionNthOptionsPivotWiderOptionsQuantileOptionsRandomOptionsRankOptionsRankQuantileOptionsReplaceSliceOptionsReplaceSubstringOptionsRoundOptionsRoundBinaryOptionsRoundTemporalOptionsRoundToMultipleOptionsScalarAggregateOptionsSelectKOptionsSetLookupOptionsarraySkewOptionsSliceOptionsSortOptionsSplitOptionsSplitPatternOptionsStrftimeOptionsStrptimeOptionsStructFieldOptionsTakeOptionsTDigestOptionsTrimOptionsUtf8NormalizeOptionsVarianceOptionsWinsorizeOptionsWeekOptionsZeroFillOptionsconfigpyarrow
is_enabledappendtyperF   r5   r3   failrepr
startswith	__class____name__	serializeFunctionOptionsdeserializezip)	requestoptionsoptionrM   rN   bufdeserializedoption1option2s	            r:   test_option_class_equalityr      s   =
=
  '= 	BGGI&= 	4E:	=
 	= 	Ea@= 	""$= 	 = 	&&$7= 	y)= 	""9-= 	= 			!%= 	= 	Ar1d+=  	.!=" 	gw/04d|-/-@-@#s-L-/-@-@#s-L-N	O#=* 	BIIaL'2+=, 	  +-=. 	/=0 	1=2 	a3=4 	!$5=6 	q<7=8 	hZI9=: 	;=< 	==> 	&0U	D?=B 	.8	:C=F 	q!S)G=H 	""3,I=J 	-.K=L 	01M=N 	8EO=P 	!!#'9:Q=R 	!!#S=T 	!(:';<U=V 	BHHaSM*W=X 	#Y=Z 	1a [=\ 	/0L]=^ 	_=` 	y)a=b 	c=d 	4d+e=f 	b)g=h 	i=j 	k=l 	sm=n 	'o=p 	q=r 	D#&s=t 	$38	:u=x 	1c"y=G~ ~~((9r//0BCD*12'tF|'G2& ''22?CCr///Csu% ' F|&&v'7'7'@'@AAAA ))55c:%%% <""#9::%001DEEEE<4#5555   5!!! 6 		!-.2OOOO##%&AB B B= 3  C;C5ABBCs   4]	]#]65]6c                      [        [        R                  " 5       5      S:  d   eS[        R                  " 5       ;   d   eg )Nr   add)r0   r?   list_functions rD   r:   test_list_functionsr      s5    r  "#b(((B%%''''rD   c                    ^ [         R                  " U 5      n[        XA5      (       d   eUR                  nXS:  d   eU[	        UR
                  5      :X  d   e[        U4S jUR
                   5       5      (       d   eg )Nc              3   <   >#    U  H  n[        UT5      v   M     g 7fN)
isinstance).0kerexpected_ker_clss     r:   	<genexpr>&_check_get_function.<locals>.<genexpr>   s     ILSz#/00Ls   )r?   r@   r   num_kernelsr0   kernelsall)r=   expected_func_clsr   min_num_kernelsr7   ns     `   r:   _check_get_functionr      sk    ??4 Dd....ADLL!!!!IDLLIIIIIrD   c                  X    [        S[        R                  [        R                  S5        g )Nr      )r   r?   ScalarFunctionScalarKernelr   rD   r:   test_get_function_scalarr     s    r00"//1ErD   c                  X    [        S[        R                  [        R                  S5        g )Nuniquer   )r   r?   VectorFunctionVectorKernelr   rD   r:   test_get_function_vectorr     s    ""3"3R__aHrD   c                  X    [        S[        R                  [        R                  S5        g )Nmeanr   )r   r?   ScalarAggregateFunctionScalarAggregateKernelr   rD   r:   "test_get_function_scalar_aggregater     s     : :00!5rD   c                  X    [        S[        R                  [        R                  S5        g )Nhash_sumr#   )r   r?   HashAggregateFunctionHashAggregateKernelr   rD   r:    test_get_function_hash_aggregater    s    
B$<$<..3rD   c                     [         R                  " / SQ5      n [        R                  " / SQ5      nU R                  U5      n[        R
                  " SX/[         R                  " 5       S9n[         R                  " / SQ5      nUR                  U5      (       d   eUR                  U5      (       d   e[        R                  " X[         R                  " 5       S9nUR                  U5      (       d   eg )N)foobarbaz)r$   r$   r#   take)memory_pool)r	  r	  r  )r   r   npr
  r?   call_functiondefault_memory_poolequals)arrr   result1result2expectedresult3s         r:   #test_call_function_with_memory_poolr    s    
(((
)Chhy!GhhwGv~+-+A+A+CEGxx-.H>>(####>>(####ggc0F0F0HIG>>(####rD   c                    [         R                  " 5        H  n[         R                  " U5      nU R                  U R	                  U5      5      n[        U5      [        U5      L d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  a  M   e   g r   )	r?   r   r@   loadsdumpsr   r=   r,   r   pickle_moduler=   r7   reconstructeds       r:   test_pickle_functionsr  $  s    !!#t$%++M,?,?,EFM"d4j000!!TYY...""djj000((D,<,<<<< $rD   c                     [         R                  " 5        H:  n [        [         U5      nU R	                  U R                  U5      5      nX2L a  M:   e   g ! [         a     ML  f = fr   )r?   r   getattrAttributeErrorr  r  r  s       r:   test_pickle_global_functionsr   /  sc    !!#	2t$D &++M,?,?,EF$$$ $  		s   A
A#"A#c                     [         R                  " 5        H  n [         R                  " U 5      n[        U[         R                  5      (       d   eUR
                  U :X  d   eUR                  nUR                  [        U5      :X  d   e[        S U 5       5      (       d   e[        U5        U H  n[        U5        M     M     g )Nc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr   )r   r?   Kernel)r   r   s     r:   r   +test_function_attributes.<locals>.<genexpr>C  s     A#:c299--s   '))r?   r   r@   r   Functionr=   r   r   r0   r   r   )r=   r7   r   r   s       r:   test_function_attributesr&  ;  s    !!#t$$,,,,yyD   ,,3w<///AAAAAAT
CI  $rD   c                  *   [         R                  " SS/SS /5      n U R                  5       SS /:X  d   e[         R                  " SS/S5      n U R                  5       SS/:X  d   e[         R                  " / SQS5      R                  5       / SQ:X  d   eg )	Nr#   r$   r%   r
   r&   )r  r  Nr  TFN)r?   r   	to_pylistequalr  s    r:   test_input_type_conversionr,  I  s    
&&!Q!T
#C==?q$i'''
&&!Q
C==?q!f$$$88($9;*=> > >rD   
arrow_typec                    [         R                  " / SQU S9nUR                  5       R                  5       S:X  d   e[        R                  " U5      R                  5       S:X  d   e[         R                  " / SQU S9nUR                  5       R                  5       S:X  d   e[        R                  " U5      R                  5       S:X  d   e[         R                  " S /U S9nUR                  5       R                  5       b   e[        R                  " U5      R                  5       b   eUR                  SS9R                  5       S:X  d   e[        R                  " USS9R                  5       S:X  d   e[         R                  " / U S9nUR                  5       R                  5       b   eUR                  SS9R                  5       S:X  d   e[        R                  " USS9R                  5       S:X  d   eg )Nr#   r$   r"   r%   r   r   r#   r$   r"   r%   Nr   ry   )r   r   sumas_pyr?   r-  r  s     r:   test_sum_arrayr5  U  s   
((<j
1C779??"""66#;"$$$
((%J
7C779??"""66#;"$$$
((D6

+C779??$$$66#;&&&77Q7%%'1,,,66##))+q000
((2J
'C779??$$$77Q7%%'1,,,66##))+q000rD   c                    SSK Jn  [        R                  R	                  U 5      (       a!  [        R
                  " SU R                  5      O [        R                  " SU R                  5      nU" S5      nU" S5      nU" S5      n[        R                  " U" S5      U" S	5      /U S
9nUR                  5       R                  5       U:X  d   eUR                  5       R                  U:X  d   e[        R                  " U" S5      U" S	5      S /U S
9nUR                  5       R                  5       U:X  d   eUR                  5       R                  U:X  d   e[        R                  " U" S5      U" S5      /U S
9nUR                  5       R                  5       U:X  d   eUR                  5       R                  U:X  d   e[        R                  " U" S5      U" S5      S /U S
9nUR                  5       R                  5       U:X  d   eUR                  5       R                  U:X  d   e[        R                  " S /U S
9nUR                  5       R                  5       b   eUR                  5       R                  U:X  d   eUR                  SS9R                  5       U:X  d   eUR                  SS9R                  U:X  d   e[        R                  " / U S
9nUR                  5       R                  5       b   eUR                  5       R                  U:X  d   eUR                  SS9R                  5       U:X  d   eUR                  SS9R                  U:X  d   eg )Nr   Decimal&   L   5.79z10.000.001.234.56r0  z8.77ry   )decimalr8  r   typesis_decimal128
decimal128scale
decimal256r   r2  r3  r   )r-  r8  max_precision_typeexpected_sumexpected_sum_overflowzeror  s          r:   test_sum_decimal_arrayrI  k  s    88!!*-- 	b***+]]2z//0 
 6?L#G,6?D ((GFOWV_5J
GC779??,,,779>>////
((GFOWV_d;*
MC779??,,,779>>//// ((GFOWV_5J
GC779?? 5555779>>////
((GFOWV_d;*
MC779?? 5555779>>////
((D6

+C779??$$$779>>////77Q7%%'4///77Q7$$(::::
((2J
'C779??$$$779>>////77Q7%%'4///77Q7$$(::::rD   c           	      v   [         R                  " [         R                  " / SQU S9/5      n[        R                  " U5      R                  5       S:X  d   e[         R                  " [         R                  " SS/U S9[         R                  " SS/U S9/5      n[        R                  " U5      R                  5       S:X  d   e[         R                  " [         R                  " SS/U S9[         R                  " / U S9[         R                  " SS/U S9/5      n[        R                  " U5      R                  5       S:X  d   e[         R                  " SU S9nUR                  S	:X  d   e[        R                  " U5      R                  5       b   e[        R                  " US	S
9R                  5       S	:X  d   eg )Nr/  r0  r   r#   r$   r"   r%   r   r   ry   )r   chunked_arrayr   r?   r2  r3  
num_chunksr4  s     r:   test_sum_chunked_arrayrM    sc   


BHH\
CD
EC66#;"$$$



!Qj)288QF+L C 66#;"$$$



!Qj)
*%
!Qj) C
 66#;"$$$


2J
/C>>Q66#;&&&66##))+q000rD   c           	      (   SSK Jn  [        R                  R	                  U 5      (       a!  [        R
                  " SU R                  5      O [        R                  " SU R                  5      nU" S5      nU" S5      n[        R                  " [        R                  " U" S5      U" S5      /U S	9/5      n[        R                  " U5      R                  5       U:X  d   e[        R                  " U5      R                  U:X  d   e[        R                  " [        R                  " U" S5      /U S	9[        R                  " U" S5      /U S	9/5      n[        R                  " U5      R                  5       U:X  d   e[        R                  " U5      R                  U:X  d   e[        R                  " [        R                  " U" S5      /U S	9[        R                  " / U S	9[        R                  " U" S5      /U S	9/5      n[        R                  " U5      R                  5       U:X  d   e[        R                  " U5      R                  U:X  d   e[        R                  " S
U S	9nUR                  S:X  d   e[        R                  " U5      R                  5       b   e[        R                  " U5      R                  U:X  d   e[        R                  " USS9R                  5       U:X  d   e[        R                  " USS9R                  U:X  d   eg )Nr   r7  r9  r:  r;  r<  r=  r>  r0  r   ry   )r?  r8  r   r@  rA  rB  rC  rD  rK  r   r?   r2  r3  r   rL  )r-  r8  rE  rF  rH  r  s         r:   #test_sum_chunked_array_decimal_typerO    su    88!!*-- 	b***+]]2z//0 
 6?L6?D


HHgfowv7jI	
C
 66#;,...66#;1111



'&/"4
'&/"4 C 66#;,...66#;1111



'&/"4
*%
'&/"4 C
 66#;,...66#;1111


2J
/C>>Q66#;&&&66#;111166##))+t33366##((,>>>>rD   c                     [         R                  " / SQSS9n [        R                  " U 5      n[	        U5      S:X  d   eUS   R                  5       SSS.:X  d   e[        R                  " U SS9n[	        U5      S:X  d   eUS   R                  5       SSS.:X  d   eUS   R                  5       S	SS.:X  d   e[         R                  " / SS9n [	        [        R                  " U 5      5      S:X  d   e[         R                  " / S
QSS9n [        R                  " U SS9n[	        U5      S:X  d   e[        R                  " U SS9n[	        U5      S:X  d   e[        R                  " U SSS9n[	        U5      S:X  d   e[         R                  " SS/5      n [        R                  " U SS9n[	        U5      S:X  d   eUS   R                  5       SSS.:X  d   eUS   R                  5       SSS.:X  d   eg )Nr#   r#   r"   r%   r"   r
   r   r0  r#   r   r$   modecountr   r"   )r#   r#   r"   r%   r"   NFrZ   r&   ry   r
   rV   rz   T)r   r   r?   rS  r0   r3  r  rS  s     r:   test_mode_arrayrX    s   
((%G
4C773<Dt9>>7==?q15555773!Dt9>>7==?q155557==?q15555
((2G
$Crwws|!!!
(((w
7C7735)Dt9>>773!$Dt9>>7735A6Dt9>>
((D%=
!C773!Dt9>>7==?uq99997==?ta8888rD   c                  6   [         R                  " [         R                  " / SQSS9/5      n [        R                  " U 5      n[        U5      S:X  d   eUS   R                  5       SSS.:X  d   e[        R                  " U SS9n[        U5      S:X  d   eUS   R                  5       SSS.:X  d   eUS   R                  5       S	SS.:X  d   e[         R                  " S
SS9n U R                  S:X  d   e[        [        R                  " U 5      5      S:X  d   eg )NrQ  r   r0  r#   r   r$   rR  rU  r"   r   )r   rK  r   r?   rS  r0   r3  rL  rW  s     r:   test_mode_chunked_arrayrZ    s    


BHH%7gFG
HC773<Dt9>>7==?q15555773!Dt9>>7==?q155557==?q15555


2G
,C>>Qrwws|!!!rD   c                      Sn [         R                  " [        R                  U S9   [        R                  " / 5        S S S 5        [        R                  " / [        R
                  " 5       S9  g ! , (       d  f       N7= f)Nz@cannot construct ChunkedArray from empty vector and omitted typer-   r0  )r3   r4   r   ArrowInvalidrK  r   )msgs    r:   test_empty_chunked_arrayr^    sM    
LC	rc	2
 
3 Rbggi( 
3	2s   A..
A<c                     / SQn [         R                  " U 5      R                  5       S:X  d   e[         R                  " U SS9R                  5       S:X  d   e[         R                  " U SS9R                  5       S:X  d   eg )N)r#   r$   r"   r%   r
   r&      r   g      @r   )ddofr#   g      @)r?   variancer3  datas    r:   test_variancere    sk    #D;;t""$,,,;;t!$**,444;;t!$**,333rD   c                     / SQn [         R                  " U 5      R                  5       [        R                  " SSS9:X  d   e[         R                  " U SS9R                  5       b   e[         R                  " U SS9R                  5       b   eg )	Nr#   r#   Nr$   g;f?绽|=relFrZ   r%   ry   )r?   skewr3  r3   approxrc  s    r:   	test_skewrm    sr    D774= FMM2C$OOOO774E*002:::7741%++-555rD   c                     / SQn [         R                  " U 5      R                  5       [        R                  " SSS9:X  d   e[         R                  " U SS9R                  5       b   e[         R                  " U SS9R                  5       b   eg )	Nrg  g      rh  ri  FrZ   r%   ry   )r?   kurtosisr3  r3   rl  rc  s    r:   test_kurtosisrp    sr    D;;t""$d(FFFF;;t.446>>>;;tq)//1999rD   zinput, expected)      ?g       @g      @g      D@NgIcݺ?gpՕ@)rk  ro  )r#   r$   (   gdV?rr  c                     [         R                  " U SSS9n[         R                  " U SSS9nUR                  5       US   :X  d   eUR                  5       US   :X  d   eg )NTF)rV   biasedrk  ro  )r?   rk  ro  r3  )inputr  
arrow_skewarrow_kurtosiss       r:   test_unbiased_skew_and_kurtosisrx  #  s`     4>J[[4FN&!1111!Xj%9999rD   c                     [         R                  " 5       [         R                  " 5       4[         R                  " 5       [         R                  " 5       44 H  u  p[         R
                  " / SQU S9n[        R                  " US5      n[         R
                  " / SQUS9nXC:X  d   e[        R                  " USSS9n[         R
                  " / SQUS9nXC:X  a  M   e   g )N)abcababcabbaABNr0  rz  )r#   r#   r$   r   r   NTignore_case)r#   r#   r$   r   r#   N)r   r   r   large_stringr   r   r?   count_substringtyoffsetr  resultr  s        r:   test_count_substringr  3  s    ))+rxxz2//+RXXZ8:hh?bI##C.881?!!!##C4@881?!!!:rD   c                     [         R                  " 5       [         R                  " 5       4[         R                  " 5       [         R                  " 5       44 H  u  p[         R
                  " / SQU S9n[        R                  " US5      n[         R
                  " / SQUS9nUR                  U5      (       d   e[        R                  " USSS9n[         R
                  " / SQUS9nUR                  U5      (       a  M   e   g )N)rz  r{  baAacaar}  r~  Nr0  za+)r#   r#   r"   r#   r   NTr  )r#   r#   r$   r#   r#   N)	r   r   r   r  r   r   r?   count_substring_regexr  r  s        r:   test_count_substring_regexr  A  s    ))+rxxz2//+RXXZ8:hhAK))#t4881?v&&&&))#tF881?v&&&&:rD   c                     [         R                  " 5       [         R                  " 5       [         R                  " 5       [         R                  " 5       4 H  n [         R
                  " / SQU S9n[        R                  " US5      nUR                  5       / SQ:X  d   e[        R                  " US5      nUR                  5       / SQ:X  d   e[         R
                  " / SQU S9n[        R                  " USS	S
9nUR                  5       / SQ:X  d   e[        R                  " USS	S
9nUR                  5       / SQ:X  a  M   e   g )N)rz  r{  r}  Nr0  rz  )r   r#   r\   Nza?b)r   r#   r   N)zab*zcAB*r}  zaB?zaB*Tr  )r   r#   r\   r\   )r   r#   r   r   )
r   r   r   r  large_binaryr   r?   find_substringr)  find_substring_regex)r  r  r  s      r:   test_find_substringr  O  s    yy{BIIK):BOO<MNhh0r:""3-!%5555((e4!_444hh3"=""34@!^333((eF!\111 OrD   c                  
   [         R                  " / SQ5      n [        R                  " U S5      n[         R                  " / SQ5      nUR	                  U5      (       d   e[         R                  " / SQ5      n [        R                  " U SSS9n[         R                  " / SQ5      nUR	                  U5      (       d   e[        R                  " U SSS9n[         R                  " / SQ5      nUR	                  U5      (       d   eg )	N)rz  zba%r}  ca%dNz_a\%%)FTFTN)aBzbA%r}  r  NTr  F)FFFTN)r   r   r?   
match_liker  r  r  r  s      r:   test_match_liker  `  s    
((4
5C]]3)Fxx89H??6""""
((4
5C]]3d;Fxx89H??6""""]]3e<Fxx9:H??6""""rD   c                  
   [         R                  " / SQ5      n [        R                  " U S5      n[         R                  " / SQ5      nUR	                  U5      (       d   e[         R                  " / SQ5      n [        R                  " U SSS9n[         R                  " / SQ5      nUR	                  U5      (       d   e[        R                  " U SSS9n[         R                  " / S	Q5      nUR	                  U5      (       d   eg )
N)rz  abcr}  Nrz  TTFN)u   áBu   Ábcr}  Nu   ábTr  F)FFFN)r   r   r?   match_substringr  r  s      r:   test_match_substringr  o  s    
((,
-CT*Fxx12H??6""""
((.
/CU=Fxx12H??6""""U>Fxx34H??6""""rD   c                  
   [         R                  " / SQ5      n [        R                  " U S5      n[         R                  " / SQ5      nUR	                  U5      (       d   e[         R                  " / SQ5      n [        R                  " U SSS9n[         R                  " / SQ5      nUR	                  U5      (       d   e[        R                  " U SSS9n[         R                  " / SQ5      nUR	                  U5      (       d   eg )	N)rz  r  r}  cNz^a?b)TTTFN)r  AbcBAr  NTr  F)FFFFN)r   r   r?   match_substring_regexr  r  s      r:   test_match_substring_regexr  ~  s    
((1
2C%%c62Fxx78H??6""""
((1
2C%%c6tDFxx78H??6""""%%c6uEFxx:;H??6""""rD   c                     [         R                  " / SQ5      n [        R                  " U 5      n[         R                  " / SQ5      nUR	                  U5      (       d   e[         R                  " / SQ5      n [        R
                  " U 5      n[         R                  " / SQ5      nUR	                  U5      (       d   e[         R                  " / SQ5      n [        R                  " U SS9n[         R                  " / SQ5      nUR	                  U5      (       d   e[        R                  " U S5      n[         R                  " / SQ5      nUR	                  U5      (       d   eg )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    s    
((6
7C$$S)Fxx01H??6""""
((6
7C%%c*Fxx67H??6""""
((6
7C\\#*5Fxx12H??6""""\\#z*Fxx12H??6""""rD   c                     [         R                  " / SQ5      n [        SS5       H  n[        R                  " [        SS5      S /5       H  nS H  n[         R                  " U  Vs/ s H  nUR                  5       XU2   PM     sn5      n[        R                  " XX#S9nUR                  U5      (       d   e[        R                  " U XU5      U:X  a  M   e   M     M     g s  snf )N) u   𝑓u   𝑓öu   𝑓öõu   𝑓öõḍu   𝑓öõḍšr&   )r\   r#   r$   r"   rU   stopstep)	r   r   range	itertoolschainr3  r?   utf8_slice_codeunitsr  )r  rU   r  r  kr  r  s          r:   test_slice_compatibilityr    s    
((U
VCr1OOE"aL4&9D-88.1%3.1 &'WWYu$%?.1%3 4004<v......s/4DBEKL L L . : %3s   &C$c            
         / SQn [         R                  " U 5      n[        R                  " [	        SS5      [	        SS5      [	        SS5      5       GH0  u  p#nUS:X  a  M  [         R                  " U Vs/ s H  nUR                  5       X#U2   PM     sn5      n[        R                  " XX4S9nUR                  U5      (       d   e[        R                  " XX45      U:X  d   eU  H  n[         R                  " U[         R                  " [        U5      5      S9n	XX42   n[        R                  " XX45      n
U
R                  [         R                  " [        U5      5      :X  d   eU
R                  5       U:X  a  M   e   GM3     g s  snf )	N)rD   r   s   as   ab s   abcs   abder  r&   r  r%   r   r  r0  )r   r   r  productr  r3  r?   binary_slicer  r   r   r0   r   )rd  r  rU   r  r  r  r  r  item
fsb_scalaractuals              r:   test_binary_slice_compatibilityr    sH   DD
((4.C&..uR|/4R|/4R|=T 1988&)+&) WWYu$7&)+ ,44v&&&&s46&@@@D4biiD	.BCJ$O,H__ZCF;;"))CM"::::<<>X--- =
+s   4F
c                     [         R                  " SS/5      n [        R                  " U SS9n[         R                  " SS// SQ/5      nUR	                  U5      (       d   e[        R                  " U SSS	9n[         R                  " SS/S
S//5      nUR	                  U5      (       d   e[        R                  " U SSSS9n[         R                  " SS/SS//5      nUR	                  U5      (       d   eg )N-foo---bar--
---foo---b---r[   z-foozbar--r  r  r   r#   
max_splitsr  foo---bTr  reversez---foor   )r   r   r?   split_patternr  r  s      r:   test_split_patternr    s    
((NL1
2Cc51Fxx&'*,<=>H??6""""c5Q7Fxx&'*RO<=H??6""""c5QEFxx&'*XsO<=H??6""""rD   c                     [         R                  " SS/5      n [        R                  " U 5      n[         R                  " SS// SQ/5      nUR	                  U5      (       d   e[        R                  " U SS9n[         R                  " SS/SS	//5      nUR	                  U5      (       d   e[        R                  " U SS
S9n[         R                  " SS/SS//5      nUR	                  U5      (       d   eg )Nr      foo  　	br  r  r  r#   r  r  
   foo  　	bTr  r  r   )r   r   r?   utf8_split_whitespacer  r  s      r:   test_split_whitespace_utf8r    s    
((I01
2C%%c*Fxx%)9:;H??6""""%%ca8Fxx%".>)?@AH??6""""%%caFFxx%&#78H??6""""rD   c                     [         R                  " SS/5      n [        R                  " U 5      n[         R                  " SS// SQ/5      nUR	                  U5      (       d   e[        R                  " U SS9n[         R                  " SS/SS	//5      nUR	                  U5      (       d   e[        R                  " U SS
S9n[         R                  " SS/SS//5      nUR	                  U5      (       d   eg )Nr  r  r  r  )r  r  u   　r   r#   r  r  r  Tr  u	    foo  　r   )r   r   r?   ascii_split_whitespacer  r  s      r:   test_split_whitespace_asciir    s    
((I01
2C&&s+Fxx%)CDEH??6""""&&sq9Fxx%".>)?@AH??6""""&&sq$GFxx%.#)>?@H??6""""rD   c                     [         R                  " SS/5      n [        R                  " U SS9n[         R                  " / SQ/ SQ/5      nUR	                  U5      (       d   e[        R                  " U SSS9n[         R                  " S	S
/S	S//5      nUR	                  U5      (       d   e[
        R                  " [        SS9   [        R                  " U SSSS9nS S S 5        g ! , (       d  f       g = f)Nr  r  z-+r  )r  r  r  r  r  r#   r  r  zfoo---bar--r  z"Cannot split in reverse with regexr-   r  T)r[   r  r  )r   r   r?   split_pattern_regexr  r3   r4   NotImplementedErrorr  s      r:   test_split_pattern_regexr    s    
((NL1
2C##C6Fxx/1ABCH??6""""##C!<Fxx"m,r9o>?H??6""""	*A
C''1d<
C 
C 
Cs   C&&
C4c                     / SQn [         R                  " U 5      nUR                  5       SSS.:X  d   e[         R                  " U [         R                  " 5       S9nUR                  5       SSS.:X  d   e[         R                  " U [         R                  " SS9S9nUR                  5       SSS.:X  d   e[         R                  " U [         R                  " SS9S9nUR                  5       S S S.:X  d   e[         R                  " U S	S0S9nUR                  5       S S S.:X  d   e[         R                  " U SS9nUR                  5       S S S.:X  d   e[        R
                  " [        5         [         R                  " U [         R                  " 5       SS
9nS S S 5        [         R                  " 5       n[        R
                  " [        5         [         R                  " XS9nS S S 5        [        R
                  " [        SS9   [         R                  " 5       nS S S 5        g ! , (       d  f       N= f! , (       d  f       NW= f! , (       d  f       g = f)N)r%   r
   r&   Nr#   r#   r&   )minrn   r   TrZ   FrV   )r   rV   zmin_max takes 1 positionalr-   )r?   min_maxr3  r   r3   r4   r5   r   )rd  r   r   s      r:   test_min_maxr    s   D


4A779!,,,,


4!:!:!<=A779!,,,,


4!:!:d!KLA779!,,,,


4!:!:e!LMA779T2222 	

4,!67A779T2222


4E*A779T2222 
y	!JJ"335%I 
"
 nnG	y	!JJt- 
" 
y(D	EJJL 
F	E 
"	! 
"	! 
F	Es$   -*H#H4I#
H14
I
Ic                     [         R                  " SSS9n [        R                  " / SS9n[         R                  " U5      R                  5       b   e[         R                  " USS9R                  5       SL d   e[         R                  " XS9R                  5       SL d   e[        R                  " / SQ5      n[         R                  " U5      R                  5       S	L d   e[         R                  " XS9R                  5       S	L d   e[        R                  " / S
Q5      n[         R                  " U5      R                  5       SL d   e[         R                  " XS9R                  5       b   eg )NFr   rV  r   r0  ry   r  )FNTT)FNF)r?   r   r   r   anyr3  r   r   s     r:   test_anyr  )  s    ''5AFG
&!A66!9??$$$66!q!'')U22266!%++-666
$%A66!9??$$$66!%++-555
%&A66!9??%%%66!%++-555rD   c                     [         R                  " SSS9n [        R                  " / SS9n[         R                  " U5      R                  5       b   e[         R                  " USS9R                  5       SL d   e[         R                  " XS9R                  5       SL d   e[        R                  " SS/5      n[         R                  " U5      R                  5       SL d   e[         R                  " XS9R                  5       SL d   e[        R                  " SS /5      n[         R                  " U5      R                  5       SL d   e[         R                  " XS9R                  5       b   e[        R                  " S/SS //5      n[         R                  " U5      R                  5       SL d   e[         R                  " XS9R                  5       b   e[        R                  " S/S//5      n[         R                  " U5      R                  5       SL d   e[         R                  " XS9R                  5       SL d   eg )	NFr   rV  r   r0  ry   Tr  )r?   r   r   r   r   r3  rK  r  s     r:   test_allr  <  s    ''5AFG
&!A66!9??$$$66!q!'')T11166!%++-555
%A66!9??%%%66!%++-666
$A66!9??$$$66!%++-555
4&4,/0A66!9??$$$66!%++-555
4&5'*+A66!9??%%%66!%++-666rD   c                      / SQn [         R                  " U 5      R                  5       / SQ:X  d   e[        R                  " [
        5         [         R                  " U S S9  S S S 5        g ! , (       d  f       g = f)Nr%   r
   N)TTFr  )r?   is_validr)  r3   r4   r5   rc  s    r:   test_is_validr  W  sN    D;;t&&(,????	y	!
D$' 
"	!	!s   A**
A8c                     [         R                  R                  [        R                  " S5      :X  d   e[         R
                  R                  [        R                  " S5      :X  d   e[         R                  R                  [        R                  " S5      :X  d   e[         R                  R                  [        R                  " S5      :X  d   eg )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   rD   r:   test_generated_docstringsr  `  s    :: 2 "   , 66>>X__ .    " &&(// ; +   $ 99 '1 '! ' ' 'rD   c                     [         R                  " [        R                  5      n [	        U 5      S:X  d   e[         R                  " [        R
                  5      n [	        U 5      S:X  d   e[         R                  " [        R                  5      n [	        U 5      S:X  d   e[         R                  " [        R                  5      n [	        U 5      S:X  d   e[         R                  " [        R                  5      n [	        U 5      S:X  d   e[         R                  " [        R                  5      n [	        U 5      S:X  d   eg )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))
rG   rH   r?   r   strr  quantilebinary_join_element_wisechooserandom)rO   s    r:   test_generated_signaturesr    s   
 

BFF
#Cs87777


BJJ
'Cs8 : ; ; ; 

BKK
(Cs8 : ; ; ; 

B77
8Cs8 , - - - 

BII
&Cs8@@@@


BII
&Cs8 : ; ; ;rD   c                     [        5       n [        SS5       Vs/ s H  nSUs=::  a  S:  a  M  O  [        U5      PM!     nn[        R                  " [
        R                  " U5      5      R                  5       n[        U5       H7  u  pAX4   UR                  5       :w  d  M  U R                  [        U5      5        M9     U $ s  snf )N           )setr  chrr?   utf8_is_printabler   r   r)  	enumerateisprintabler   ord)newr  r  is_printableis        r:   find_new_unicode_codepointsr    s    
%C"'g"6 1"6Q A.. . a&"6J 1''(<=GGIL*%?ammo-GGCFO & J1s
   CC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)
rK  rL  is_ascii
is_decimalrM  rO  rN  r  is_spaceis_uppervariantasciiutf8c                    US-   U -   nU R                  SS5      n[        R                  U [        5       5      [	        5       -  n[        [        (       a  SOS5       H  nU[        SS5      ;   a  M  XT;   a  M  [        U5      n[        [        U5      (       d  M>  U S:w  d  MF  [        R                  " U/5      n[        [        U5      nU" U5      S   R                  5       [        Xc5      " 5       :X  a  M   e   g )	N_r  r  r  r  r  rS  r   )replacecodepoints_ignoregetr  r  r  rV  r  hasattrr?   r   r   r  r3  )	rP  rU  
arrow_namepy_nameignorer  r  ar
arrow_funcs	            r:   test_string_py_compat_booleanrc  H  s     3.J##C,G""=#%8#%&F%%3W-ff%%; F2z""}
'B1#B Z0Jb>!$**,0C0EEEE .rD   c                     [         R                  " / SQ5      n [        R                  " U SS9R	                  5       / SQ:X  d   e[        R
                  " U SS9R	                  5       / SQ:X  d   e[        R                  " U SS9R	                  5       / SQ:X  d   e[        R                  " U S5      R	                  5       / SQ:X  d   e[        R
                  " U S5      R	                  5       / SQ:X  d   e[        R                  " U S5      R	                  5       / SQ:X  d   e[         R                  " / SQ5      n [        R                  " U SS9R	                  5       / SQ:X  d   e[        R                  " U SS9R	                  5       / S	Q:X  d   e[        R                  " U SS9R	                  5       / S
Q:X  d   e[        R                  " U S5      R	                  5       / SQ:X  d   e[        R                  " U S5      R	                  5       / S	Q:X  d   e[        R                  " U S5      R	                  5       / S
Q:X  d   eg )N)Nr   abcdr"   width)Nz a re  )Nz  are  )Nza  re  )N   áre  )Nu    á re  )Nu     áre  )Nu   á  re  )
r   r   r?   ascii_centertolist
ascii_lpad
ascii_rpadutf8_center	utf8_lpad	utf8_rpadr+  s    r:   test_padrp  b  s   
((&
'C??3a(//15JJJJ==A&--/3HHHH==A&--/3HHHH??3"))+/DDDD==a '')-BBBB==a '')-BBBB
(('
(C>>#Q'..04JJJJ<<1%,,.2HHHH<<1%,,.2HHHH>>#q!((*.DDDD<<Q&&(,BBBB<<Q&&(,BBBBrD   c            	         [         R                  [         R                  L d   e/ SQn [        SS5       Hu  n[        R
                  " U 5      n[         R                  " X!S9R                  5       nU  Vs/ s H  oDb  UR                  U5      OS PM     nnX5:X  a  Mg   SU SU SU 35       e   [        R
                  " / SQ5      n[         R                  " U[         R                  " S	S
S9S9R                  5       nU/ SQ:X  d   e[        R
                  " / SQ5      n[         R                  " U[         R                  " SSS9S9R                  5       nU/ SQ:X  d   e[        R
                  " S/5      n[        R                  " [        R                  SS9   [         R                  " U[         R                  " SSS9S9  S S S 5        [        R                  " [        R                  SS9   [         R                  " U[         R                  " SSS9S9  S S S 5        g s  snf ! , (       d  f       Nh= f! , (       d  f       g = f)N)Ar~  ABCr  -1z+1r`   Nr   r&   rf  zMismatch at width=z: z vs )r`   z-2z+3r
   u   💠)rg  paddingr  )u   💠💠💠💠1u   -💠💠💠2u   +💠💠💠3r%   x)xxx1z-xx2z+xx3r  zPadding must be one codepointr-   spamr  )r?   
utf8_zfillutf8_zero_fillr  r   r   r)  zfillr   r3   r4   r\  )examplesrg  r  r  rv  r  s         r:   test_utf8_zfillr}  t  s   ==B----- =Hq!hhx ""34>>@GOPx!mAGGEN=xP!W%7wbXJ#WW!	  (($
%CsB,>,>-! ""+)+ NNNN (($
%CsB,>,>- (y{ ---- ((E7
C	r.M	N
#r'9'96'RS 
O	r.M	N
#r'9'92'NO 
O	N' Q" 
O	N	N	Ns   3H)H"+)H3"
H03
Ic            	      `   [        SS5      n [        R                  " / SQ5      nUR                  5       R	                  [
        5      R                  [        R                  S 05      nU  H  nU  Hw  nUR                  R                  X4S5      n[        R                  " XUSS9nUR                  5       UR                  5       :X  d   e[        R                  " XUS5      U:X  a  Mw   e   M     [        R                  " / SQ5      nUR                  5       R	                  [
        5      R                  [        R                  S 05      nU  Hb  nU  HY  nUR                  R                  X4S5      n[        R                  " XUSS9nUR                  5       UR                  5       :X  a  MY   e   Md     g )Nr  r%   )Nr  r   rz  r  re  abcdeXX)rU   r  replacement)Nr  u   πu   πbu   πbθu   πbθdu   πbθde)r  r   r   	to_pandasastyper2   rZ  r  nanr  slice_replacer?   binary_replace_slicerj  utf8_replace_slice)offsetsr  seriesrU   r  r  r  s          r:   test_replace_slicer    sT   BlG
((@
AC]]_##F+33RVVTNCFDzz//TBH,,t?F==?hoo&7777**3tTBfLLL   ((H
IC]]_##F+33RVVTNCFDzz//TBH**t?F==?hoo&7777	  rD   c                     [         R                  " / SQ5      n [        R                  " U SSS9nUR	                  5       / SQ:X  d   e[        R                  " U SS5      nUR	                  5       / SQ:X  d   e[        R                  " U SSSS9nUR	                  5       / SQ:X  d   e[        R                  " U SSSS	9nUR	                  5       / SQ:X  d   eg )
N)foozfoofoodNr  r  r[   r  )barzbarbardNr#   )r[   r  max_replacements)barzfoor  N)r  )r   r   r?   replace_substringrj  )rd  ra  s     r:   test_replace_plainr    s    88-.D			dEu	EB99;3333			dE5	1B99;3333			dEu/0
2B99;3333			dE51	EB99;3333rD   c                  H   [         R                  " / SQ5      n / SQn[        R                  " U SSS9nUR	                  5       U:X  d   e[        R                  " U SSS9nUR	                  5       U:X  d   e[        R                  " U SS5      nUR	                  5       U:X  d   eg )N)r  moodN)f00m00dNz(.)ooz\100r  )r  )r   r   r?   replace_substring_regexrj  )rd  r  ra  s      r:   test_replace_regexr    s    88)*D$H		#	#D'w	OB99;("""		#	#D'w	GB99;("""		#	#D'7	;B99;("""rD   c                      [         R                  " SS/5      n SSS.SSS./n[        R                  " U SS	9nUR	                  5       U:X  d   e[        R                  " U S5      nUR	                  5       U:X  d   eg )
Na1zb2zr   r`   letterdigitr   ra   z(?P<letter>[ab])(?P<digit>\d)r  )r   r   r?   extract_regexrj  ra  r  structs      r:   test_extract_regexr    sv    	4.	!B-#/LMHb*JKF==?h&&&b"BCF==?h&&&rD   c                     [         R                  " SS/5      n SS/SS/S.SS/SS/S./n[        R                  " U SS	9nUR	                  5       U:X  d   e[        R                  " U S5      nUR	                  5       U:X  d   eg )
Nr  zb234zr   r#   r  r$   r"   z(?P<letter>[ab])(?P<digit>\d+)r  )r   r   r?   extract_regex_spanrj  r  s      r:   test_extract_regex_spanr    s    	4"	#Bq6QF3q6QF35H""2/PQF==?h&&&""2'HIF==?h&&&rD   c                  H   [         R                  " SS/S / /5      n [         R                  " / SQ5      n[        R                  " U S5      R	                  U5      (       d   e[         R                  " SS/[         R
                  " 5       S9n[         R                  " SS	/[         R
                  " 5       S9n[         R                  " S
S/SS//[         R                  " [         R
                  " 5       5      S9n [        R                  " X5      R	                  U5      (       d   eg )Nr  r  )zfoo-barNr  -r`   ra   r0  a1bc2dr   r   r  d)r   r   r?   binary_joinr  r   list_)ar_listr  separator_arrays      r:   test_binary_joinr    s    hhb12Gxx-.H>>'3'..x8888hhSz		<OxxRYY[9Hhhc
S#J/bhhryy{6KLG>>'3::8DDDDrD   c                     [         R                  " S [         R                  " 5       S9n / SQ/ SQ/ SQ/n[        R                  " U6 R                  5       / SQ:X  d   e[        R                  " SSS5      R                  5       S	:X  d   e[        R                  " SU S5      R                  5       b   e[        R                  " SSU 5      R                  5       b   e[        R                  " S
S9n[        R                  " USU06R                  5       / SQ:X  d   e[        R                  " SSSUS9R                  5       S	:X  d   e[        R                  " SU SUS9R                  5       S:X  d   e[        R                  " SSXS9R                  5       b   e[        R                  " SSS9n[        R                  " USU06R                  5       / SQ:X  d   e[        R                  " SSSUS9R                  5       S	:X  d   e[        R                  " SU SUS9R                  5       S:X  d   e[        R                  " SSXS9R                  5       b   eg )Nr0  )Nr   r   )r  Nr  )Nr  z--)NNb--dr   r   r  za-bskip)null_handlingr   )Nr   r  r  rZ  rx  )r  null_replacement)Na-spamr  r  )r   r   r   r?   r  r)  r3  r   )nullarrsr  rZ  s       r:   test_binary_join_element_wiser    sK   99T		,D.0ABD&&-779  &&sC5;;=FFF&&sD#6<<>FFF&&sC6<<>FFF>>/D&&;d;EEG  &&S#t%%*UW6 6 6&&T3&&+eg5 5 5&&S$&&+eg6 6 6 nn9vNG&&>g>HHJ ! ! !&&S#w((-59 9 9&&T3)).H= = =&&S$)).9 9 9rD   )r  rJ   c                    [         R                  " XS9n[         R                  " 5       [         R                  " 5       4 H  n[         R                  " / SQUS9nUR	                  U5      nUR                  5         [         R                  " US   US   US   S /U S9nUR                  U5      (       d   e[         R                  " / US9nUR	                  U5      nUR                  5         [         R                  " / U S9nUR                  U5      (       a  M   e   [         R                  " SS/5      n[        R                  " [        5         UR	                  U5        S S S 5        [         R                  " SS/5      n[        R                  " [        5         UR	                  U5        S S S 5        g ! , (       d  f       N[= f! , (       d  f       g = f)Nr0  r   r%   r$   Nr   r%   r$   r
   r\   )
r   r   r   r   r
  validater  r3   r4   
IndexError)r  rJ   r  indices_typer   r  r  s          r:   	test_taker    sS   
((6
#CBHHJ/((?>'"88VAYq	6!9dC"M}}X&&&& ((2L1'"88BR(}}X&&&& 0 hh1vG	z	" 
# hh2wG	z	" 
#	"	 
#	" 
#	"s   F4G4
G
Gc                  @   [         R                  " [        S5      5      n S Hk  n[         R                  " / SQUS9nU R                  U5      nUR	                  5         [         R                  " / SQ5      nUR                  U5      (       a  Mk   e   [         R                  " 5       [         R                  " 5       4 HN  n[         R                  " / SQUS9n[        R                  " [        5         U R                  U5        S S S 5        MP     g ! , (       d  f       Mb  = f)Nr
   )r	   r   r   r   r   r   r   r   r  r0  )r   r%   r$   )r   r   r  r
  r  r  float32float64r3   r4   r  )r  r  r   r  r  s        r:   test_take_indices_typesr    s    
((58
C?((?>'"88O,}}X&&&&? rzz|4((9<8]]./HHW 0/ 5//s   /D
D	c                     [         R                  " / SQ/ SQ/5      n [         R                  " / SQ5      nU R                  U5      n[         R                  " / SQ/5      nUR	                  U5      (       d   e[         R                  " S/SS//5      nU R                  U5      n[         R                  " S/S	S
//5      nUR	                  U5      (       d   eg )N)r   r   r  r  e)fghr  j)r   r
   r#   r&   r'   r$   )r   r  r   r  r  r  r#   r'   r$   r   r  r  )r   rK  r   r
  r  )r  r   r  r  s       r:   test_take_on_chunked_arrayr  ,  s    


	
	
 C" hh)*GXXgF!? @AH==""""aV}-GXXgF	
 	
	! H ==""""rD   orderedFTc                 b   [         R                  R                  / SQ/ SQU S9nUR                  [         R                  " / SQ5      5      nUR                  5         UR                  5       / SQ:X  d   eUR                  R                  5       / SQ:X  d   eUR                  R                  U L d   eg )N)r   r#   r$   r   r#   r$   r   r   r  )r  )r   r#   r"   )r   r   r   )
r   DictionaryArrayfrom_arraysr
  r   r  r)  
dictionaryr   r  )r  r  r  s      r:   test_take_dictionaryr  R  s    



(
();_18 ) :CXXbhhy)*F
OO000&&(O;;;;;')))rD   c                  >   [         R                  " S /S-  5      n [         R                  " S /S-  /S-  5      n[         R                  " U /S/S9n[         R                  " SU 05      n[         R                  " / SQ5      n[        U R                  U5      5      S:X  d   e[        UR                  U5      5      S:X  d   e[        UR                  U5      R                  S5      5      S:X  d   e[        UR                  U5      R                  S5      5      S:X  d   eg )	Nr   r
   r$   r   r_   )r#   r"   r`  Nr%   r   )r   r   rK  record_batchtabler0   r
  column)r  chunked_arrbatchr  r   s        r:   test_take_null_typer  ]  s    
((D6B;
C""TFQJ<!#34KOOSE#/EHHc3Z Ehh'Gsxx !Q&&&{()Q...uzz'"))!,-222uzz'"))!,-222rD   c                 `   [         R                  " XS9nUR                  5       nUR                  SS9  [	        [        U5      5       Vs/ s H  oBU   R                  (       d  M  UPM     nnUR                  [         R                  " U5      5      nUR                  U5      (       d   eg s  snf )Nr0  Tfull)	r   r   	drop_nullr  r  r0   r  r
  r  )r  rJ   r  r  r  r   r  s          r:   test_drop_nullr  k  s~    
((6
#C]]_F
OOOC/=/QV__q/G=xx)*H=="""" >s   
B+%B+c                      [         R                  " SS // SQS // /5      n [         R                  " S/SS// / /5      nU R                  5       nUR                  U5      (       d   eg )Nr   r  r  Nr  r  )r   rK  r  r  )r  expected_dropr  s      r:   test_drop_null_chunked_arrayr  u  sa    


S$K)9D62F
GC$$sec3ZR%@AM]]_F==''''rD   c                  h   [         R                  " [         R                  " / SQ5      /S/S9n U R                  5       n[         R                  " [         R                  " / SQ5      /S/S9nUR	                  U5      (       d   e[         R                  " [         R                  " / SQ5      [         R                  " / SQ5      /SS/S9n U R                  5       n[         R                  " [         R                  " S/5      [         R                  " S/5      /SS/S9nUR	                  U5      (       d   eg )Nr   Nr  r  Na'r  r   r  r  )NNr  Nr  zb'r  )r   r  r   r  r  )r  r  r  s      r:   test_drop_null_record_batchr  }  s    OO	-	./v?E__F 9:4&IH==""""OO	-	.	.	/	19=tFE __F	3%"((C5/*4,@H==""""rD   c                     [         R                  " [         R                  " / SQ5      /S/S9n [         R                  " [         R                  " / SQ5      /S/S9nU R                  5       nUR	                  U5      (       d   e[         R                  " [         R
                  " SS // SQ/5      [         R
                  " SS // SQ/5      [         R
                  " S/S/S /SS //5      // S	QS9n [         R                  " [         R                  " SS/5      [         R                  " SS/5      [         R                  " SS/5      // S	QS9nU R                  5       nUR	                  U5      (       d   e[         R                  " [         R
                  " SS// S
Q/5      [         R
                  " S/S/S /SS //5      [         R
                  " SS // SQ/5      // S	QS9n [         R                  " [         R                  " SS/5      [         R                  " SS/5      [         R                  " SS/5      // S	QS9nU R                  5       nUR	                  U5      (       d   eg )Nr  r   r  r  r  )Nr  Nr   r  r  r  r  r  rr  BDza`)zc`d`Nr  )r   r  r   r  r  rK  )r  r  r  s      r:   test_drop_null_tabler    s	   HHbhh:;<SEJExx/23C5AH__F==""""HHb&&d5E'FG&&d5F'GH&&utfsDk'JKM +,E xx3*-3*-3*-/ ./H __F==""""HHb&&c
O'DE&&utfsDk'JK&&t6H'IJL +,E xx3*-3*-4,/1 ./H __F==""""rD   c                     [         R                  " S /S-  5      n [         R                  " S /S-  /S-  5      n[         R                  " U /S/S9n[         R                  " SU 05      n[        U R                  5       5      S:X  d   e[        UR                  5       5      S:X  d   e[        UR                  5       R                  S5      5      S:X  d   e[        UR                  5       R                  S5      5      S:X  d   eg )Nr   r
   r$   r   r  r   )r   r   rK  r  r  r0   r  r  )r  r  r  r  s       r:   test_drop_null_null_typer    s    
((D6B;
C""TFQJ<!#34KOOSE#/EHHc3Z Es}}1$$${$$&'1,,,u ''*+q000u ''*+q000rD   c                    [         R                  " XS9n[         R                  " / SQ5      nUR                  USS9nUR                  5         UR	                  [         R                  " US   US   /U S95      (       d   eUR                  USS9nUR                  5         UR	                  [         R                  " US   US   S /U S95      (       d   e[         R                  " / SQ5      n[
        R                  " [        5         UR                  U5        S S S 5        [         R                  " / S	Q5      n[
        R                  " [        S
S9   UR                  U5        S S S 5        g ! , (       d  f       NZ= f! , (       d  f       g = f)Nr0  TFFTNdropnull_selection_behaviorr   r"   	emit_nullr   r#   r   r#   r   TFTmust all be the same lengthr-   )	r   r   r  r  r  r3   r4   r  
ValueErrorr  rJ   r  maskr  s        r:   test_filterr    s)   
((6
#C8845DZZfZ=F
OO==6!9fQi"8rBCCCCZZkZBF
OO==6!9fQi">RHIIII 88O$D	*	+

4 
, 88'(D	z)F	G

4 
H	G 
,	+
 
H	Gs   E,E=,
E:=
Fc                    [         R                  " XS9n[        R                  " / SQ5      nUR                  USS9nUR	                  5         UR                  [         R                  " US   US   /U S95      (       d   eg )Nr0  r  r  r  r   r"   )r   r   r  r  r  r  r  s        r:   test_filter_numpy_array_maskr     sj     ((6
#C8845DZZfZ=F
OO==6!9fQi"8rBCCCCrD   c                     [         R                  " SS // SQ/5      n [         R                  " S/S//5      n[         R                  " S/S S//5      n[         R                  " / SQ5      [         R                  " / SQSS//5      / SQ4 HT  nU R                  U5      nUR	                  U5      (       d   eU R                  USS	9nUR	                  U5      (       a  MT   e   g )
Nr   r  r  TFNFTr(  FTr  r  )r   rK  r   r  r  )r  r  expected_nullr  r  s        r:   test_filter_chunked_arrayr    s    


S$K9
:C$$secU^4M$$sedC[%9:M 	12
-t}=>( D!}}]++++D+F}}]++++rD   c                  r   [         R                  " [         R                  " / SQ5      /S/S9n [         R                  " / SQ5      nU R                  U5      n[         R                  " [         R                  " SS/5      /S/S9nUR	                  U5      (       d   e[         R
                  " SS/S /SS//5      nU R                  U5      nUR	                  U5      (       d   eU R                  US	S
9n[         R                  " [         R                  " / SQ5      /S/S9nUR	                  U5      (       d   eg )Nr   Nr  r  r  r  r  r  r   r  TFr  r  r   Nr  )r   r  r   r  r  rK  )r  r  r  r  chunked_masks        r:   test_filter_record_batchr	    s   OO	,	-.tf>E 8845D\\$F#s 45dVDH=="""" ##dE]TFUDM$JKL\\,'F==""""\\$\DF)9 :;D6JH==""""rD   c                  0   [         R                  " [         R                  " / SQ5      /S/S9n [         R                  " [         R                  " SS/5      /S/S9n[         R                  " [         R                  " / SQ5      /S/S9n[         R                  " / SQ5      [         R                  " SS// S	Q/5      / SQ4 HT  nU R	                  U5      nUR                  U5      (       d   eU R	                  US
S9nUR                  U5      (       a  MT   e   g )Nr  r   r  r  r  r  TF)NFTr  r  )r   r  r   rK  r  r  )r  r  r  r  r  s        r:   test_filter_tabler     s    HHbhh9:;C5IEHHbhhSz23C5AMHHbhh'789#GM 	12
4-)<=>( d#}}]++++dKH}}]++++rD   c                  ^   [         R                  " SS // SQ/5      n [         R                  " [         R                  " / SQ5      /S/S9n[         R                  " [         R                  " / SQ5      /S/S9nXU4 H  n[         R                  " / SQ5      n[
        R                  " [        5         UR                  U5        S S S 5        [         R                  " / SQ5      n[
        R                  " [         R                  SS	9   UR                  U5        S S S 5        M     [         R                  " S
5      nXU4 H7  n[
        R                  " [        5         UR                  U5        S S S 5        M9     g ! , (       d  f       N= f! , (       d  f       GM  = f! , (       d  f       Mo  = f)Nr   r  r  r  r  r  r  r  r-   T)r   rK  r  r   r  r3   r4   r  r  r\  r   r5   )r  r  r  objr  r   filts          r:   test_filter_errorsr    s3   


S$K9
:COO	,	-.tf>EHHbhh9:;C5IEE"xx(]]./JJt 0 xx+,]]2??!>@JJt@ @ # YYt_Fv&]]9%LL &% ' 0/
@ @ &%s$   0E9F
F9
F	

F	
F,	c                  D   [         R                  " S /S-  5      n [         R                  " S /S-  /S-  5      n[         R                  " U /S/S9n[         R                  " SU 05      n[         R                  " SS/S-  5      n[        U R                  U5      5      S:X  d   e[        UR                  U5      5      S:X  d   e[        UR                  U5      R                  S5      5      S:X  d   e[        UR                  U5      R                  S5      5      S:X  d   eg )	Nr   r
   r$   r   r  TFr   )r   r   rK  r  r  r0   r  r  )r  r  r  r  r  s        r:   test_filter_null_typer  +  s    
((D6B;
C""TFQJ<!#34KOOSE#/EHHc3Z E88T5MA%&Dszz$ A%%%{!!$'(A---u||D!((+,111u||D!((+,111rD   typr   rK  c                    U S:X  a  S nOS nU" / SQ5      nU" / SQ5      n[         R                  " X#5      nUR                  U" / SQ5      5      (       d   e[         R                  " X#5      nUR                  U" / SQ5      5      (       d   e[         R                  " X#5      nUR                  U" / SQ5      5      (       d   e[         R
                  " X#5      nUR                  U" / S	Q5      5      (       d   e[         R                  " X#5      nUR                  U" / S
Q5      5      (       d   e[         R                  " X#5      nUR                  U" / SQ5      5      (       d   eg )Nr   c                 .    [         R                  " U 5      $ r   r   r   rJ   s    r:   contest_compare_array.<locals>.con<      88F##rD   c                 0    [         R                  " U /5      $ r   r   rK  r  s    r:   r  r  ?      ##VH--rD   r1  )r#   r#   r%   Nr%   )TFFNN)FTTNN)FFTNN)TFTNN)FTFNN)TTFNN)r?   r*  r  	not_equalless
less_equalgreatergreater_equal)r  r  arr1arr2r  s        r:   test_compare_arrayr$  9  s#   
g~	$	. !"D!"DXXd!F===>????\\$%F==<=>>>>WWT F===>????]]4&F==<=>>>>ZZ#F===>????d)F==<=>>>>rD   c                    U S:X  a  S nOS nU" / SQ5      n[         R                  " S5      n[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   eU S:X  aa  [         R                  " S SS9n[        R                  " X%5      n[        R
                  " U5      nUR	                  U" / S	Q5      5      (       d   e[        R                  " X#5      nUR	                  U" / S
Q5      5      (       d   e[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   e[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   e[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   e[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   eg )Nr   c                 .    [         R                  " U 5      $ r   r  r  s    r:   r  'test_compare_string_scalar.<locals>.con[  r  rD   c                 0    [         R                  " U /5      $ r   r  r  s    r:   r  r'  ^  r  rD   )r   r   r  Nr   FTFNr   r0  )TTTTTFTNTFFNr  FFTNFTTN)r   r   r?   r*  r  is_nullr  r  r  r   r!  )r  r  r  r   r  nascalarisnulls          r:   test_compare_string_scalarr1  X  ss   
g~	$	. #
$CYYs^FXXc"F==789999
g~99T1#(F#}}S!9:;;;;\\#&F==678888WWS!F==789999]]3'F==678888ZZ$F==789999c*F==678888rD   c                 x   U S:X  a  S nOS nU" / SQ5      n[         R                  " S5      n[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   eU S:X  aC  [         R                  " S SS9n[        R                  " X%5      nUR                  5       / S	Q:X  d   e[        R                  " X#5      nUR	                  U" / S
Q5      5      (       d   e[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   e[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   e[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   e[        R                  " X#5      nUR	                  U" / SQ5      5      (       d   eg )Nr   c                 .    [         R                  " U 5      $ r   r  r  s    r:   r   test_compare_scalar.<locals>.con  r  rD   c                 0    [         R                  " U /5      $ r   r  r  s    r:   r  r4    r  rD   r#   r$   r"   Nr$   r)  r   r0  NNNNr*  r+  r  r,  r-  )r   r   r?   r*  r  r)  r  r  r  r   r!  )r  r  r  r   r  r/  s         r:   test_compare_scalarr8  }  sa   
g~	$	. o
CYYq\FXXc"F==789999
g~99T0#(!%====\\#&F==678888WWS!F==789999]]3'F==678888ZZ$F==789999c*F==678888rD   c                  T   [         R                  " / SQ5      n [         R                  " / SQSS //5      n[         R                  " SS// SQ/5      n[         R                  " / SQ/5      nX4X4X44 H3  u  pE[        R                  " XE5      nUR                  U5      (       a  M3   e   g )Nr1  r#   r$   r"   r%   r#   r$   )r"   r%   N)TTTTN)r   r   rK  r?   r*  r  )r  arr_chunkedarr_chunked2r  leftrightr  s          r:    test_compare_chunked_array_mixedr?    s    
((%
&C""I4y#9:K##aV\$:;L!? @AH 
		#
 $&}}X&&&&rD   c                      [         R                  " / SQ5      n [         R                  " / SQ5      n[        R                  " X5      n[         R                  " / SQ5      nUR	                  U5      (       d   eg )Nr#   r$   r"   r%   r
   r   r\   r#   r$   r"   )r#   r#   r%   r&   r   )r   r   r?   r   r  r=  r>  r  r  s       r:   test_arithmetic_addrD    sP    88O$DHH%&EVVD Fxx(H==""""rD   c                      [         R                  " / SQ5      n [         R                  " / SQ5      n[        R                  " X5      n[         R                  " / SQ5      nUR	                  U5      (       d   eg )NrA  rB  )r#   r"   r$   r$   r$   )r   r   r?   subtractr  rC  s       r:   test_arithmetic_subtractrG    sP    88O$DHH%&E[[%Fxx(H==""""rD   c                      [         R                  " / SQ5      n [         R                  " / SQ5      n[        R                  " X5      n[         R                  " / SQ5      nUR	                  U5      (       d   eg )NrA  rB  )r   r  r"   r      )r   r   r?   multiplyr  rC  s       r:   test_arithmetic_multiplyrK    sQ    88O$DHH%&E[[%Fxx)*H==""""rD   r  roundround_to_multiplec                    U S:X  a)  [         R                  n[        [         R                  SS9nO.U S:X  a(  [         R                  n[        [         R
                  SS9n/ SQn/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQS.
nUR                  5        HQ  u  pVW" US9nW" X7S9n[        R                  " U[        R                  " 5       S9n	U	R                  U5      (       a  MQ   e   g )NrL  r   ndigitsrM  r#   multiple)g	@      @皙@      @皙	g      gN)r"   r"   r"   r%   rW  rW  N)r%   r%   r%   r
   r  r  r  N)r"   r"   r"   r%   r  r  r  N)r%   r%   r%   r
   rW  rW  rW  N)r"   r"   r%   r%   r  rW  rW  N)r"   r%   r%   r
   r  r  rW  N)r"   r"   r%   r%   r  r  rW  N)r"   r%   r%   r
   r  rW  rW  N)r"   r%   r%   r%   r  rW  rW  N)r"   r"   r%   r
   r  r  rW  N)
downuptowards_zerors   	half_downhalf_uphalf_towards_zerohalf_towards_infinityhalf_to_evenhalf_to_odd
round_moder  r0  )r?   rL  r   r   rM  r   itemsr   r   r  r  )
r  rL  r   rJ   rmode_and_expectedrb  r  r   r  expected_arrays
             r:   test_round_to_integerrf    s    	W}r:	"	"$$r881E9F.,6:31;!?65 !3 8 8 :
*5v/(>$$V,,,,	 !;rD   c                     / SQn / SQ/ SQ/ SQ/ SQ/ SQS.nUR                  5        H  u  p#[        R                  " US5      n[        R                  " XS	9n[        R
                  R                  U[        R                  " U5      S
S9  [        R                  " XSS9U:X  d   e[        R                  " XS5      U:X  a  M   e   g )N@  rS  g@rU  gV-	g):ˏAg\(\Ni,  r   r   r   r   r   r   Nri  r   r   r   r   ir   N)ri  r%   r"   r
   r  ir  Nri  rS  @rU  rV  ̌Ar  N)ri  rS  gp=
ף@rU  gGz	g(\AffffffN)r  r\   r   r#   r$   r^  r  T	equal_nanra  )	rc  r?   r   rL  r  testingassert_allcloser   r   )rJ   ndigits_and_expectedrP  r  r   r  s         r:   
test_roundru    s    CF,-,6< 2779//'+BC&2


""6288H+="Nxx#:<?EF 	F Fxx)@AVKKK :rD   c                  j   / SQn S/ SQ[         R                  " S5      / SQS/ SQS/ S	Q[         R                  " S
[         R                  " SS5      S9/ SQ0nUR                  5        H  u  p#[        R
                  " US5      n[        R                  " XS9n[        R                  R                  U[         R                  " U5      SS9  [        R                  " XS5      U:X  a  M   e   SS[         R                  " S5      4 HC  n[        R                  " [         R                  SS9   [        R                  " XS9  S S S 5        ME     [        S4 H9  n[        R                  " [        SS9   [        R                  " XS9  S S S 5        M;     g ! , (       d  f       M  = f! , (       d  f       M_  = f)Nrh  r   )ri  rS  rm  rU  rV  rn  ro  Nr   rl  r$   )ri  r%   r%   r%   rW  irW  Nr   rk  rv   r%   r0  rj  r^  r  Trp  r   r  g$z"Rounding multiple must be positiver-   rQ  l   l+?R zis not a valid multiple type)r   r   rD  rc  r?   r   rM  r  rr  rs  r   r3   r4   r\  r2   r5   )rJ   multiple_and_expectedrR  r  r   r  s         r:   test_round_to_multiplerx    sk   CF<
		#C	,
-
		#BMM"a01, 499;++H6MN%%f>


""6288H+="N##F$;=@FG 	G G	 < BIIe,-]]2??!EG  ;G G .
 45]]9,JK  ; LK 6	G G
 LKs   *F/F#
F 	#
F2	c                  `   / SQn [         R                  " / SQ[         R                  " 5       5      n[         R                  " / SQ[         R                  " 5       5      n[        R
                  " X5      U:X  d   e[         R                  " S[         R                  " 5       5      n[         R                  " S[         R                  " 5       5      n[         R                  " S[         R                  " 5       5      n[        R
                  " SUSS	9U:X  d   e[        R
                  " SUS
S	9U:X  d   eg )N)w/^@/$Rm@+ٚu@gv|@rz  r{  r|  )r  r  r\   r   r#   r$   r"   )r      i^  i  g     ^@g
ףp=Rm@r|  r   r   r\   g      @r]  ra  r^  )r   r   r   r  r?   round_binaryr   )rJ   scalesr  expect_zero
expect_infrC  s         r:   test_round_binaryr    s    LFXX.
;Fxx2BJJLBH??6*h666))Arzz|,K2rzz|,JIIb"((*%E??U247BC C C??U68;EF F FrD   c            	      r   [         R                  " / SQ5      n U R                  5       n[         R                  " / SQ5      nUR                  U5      (       d   eUR                  [        R                  " U 5      5      (       d   eU R                  5       n[         R                  " / SQ5      nUR                  U5      (       d   eUR                  [        R
                  " U 5      5      (       d   e[         R                  " SS/SS //5      n U R                  5       n[         R                  " SS/SS//5      nUR                  U5      (       d   eU R                  5       n[         R                  " SS/SS//5      nUR                  U5      (       d   e[         R                  " SSSS [        S	5      /5      n U R                  5       n[         R                  " / S
Q5      nUR                  U5      (       d   eU R                  SS9n[         R                  " / SQ5      nUR                  U5      (       d   eg )Nr6  )FFFT)TTTFr#   r$   r"   FTr  )FFFTF)nan_is_null)FFFTT)r   r   r.  r  r?   r  rK  r   r  s      r:   test_is_nullr  &  s   
((?
#C[[]Fxx34H==""""==C))))\\^Fxx12H==""""==S)****


QFQI.
/C[[]F%% ?@H==""""\\^F$e} =>H==""""
((Aq!T5<0
1C[[]Fxx:;H==""""[[T[*Fxx9:H==""""rD   c            	         [         R                  " SSSS [        S5      /5      n U R                  5       n[         R                  " / SQ5      nUR	                  U5      (       d   e[         R                  " / SQ[         R
                  " 5       S9n [        R                  " [        SS	9   U R                  5       nS S S 5        [        R                  " [        SS	9   [         R                  " / S
Q[         R                  " 5       S9n U R                  5       nS S S 5        g ! , (       d  f       Nk= f! , (       d  f       g = f)Nr#   r$   r"   r  )FFFNT)r`   ra   Nr0  z"has no kernel matching input typesr-   r      bbN)
r   r   r   is_nanr  r   r3   r4   r   r  )r  r  r  rY  s       r:   test_is_nanr  C  s    
((Aq!T5<0
1CZZ\Fxx9:H==""""
((#"))+
6C	$,P
RJJL
R 
$,P
Rhh*1BCJJL
R 
R	
R 
R
R 
Rs   (D;D/
D,/
D=c                     [         R                  " / SQ[         R                  " 5       S9n [         R                  " S/[         R                  " 5       S9n[        R                  " [         R
                  SS9   U R                  U5        S S S 5        [         R                  " / SQ[         R                  " 5       S9n [         R                  " S [         R                  " 5       S9nU R                  U5      n[         R                  " / SQ5      nUR                  U5      (       d   e[         R                  " / SQ5      n U R                  S5      n[         R                  " / S	Q5      nUR                  U5      (       d   e[         R                  " / S
Q[         R                  " 5       S9n U R                  S5      n[         R                  " / SQ[         R                  " 5       S9nUR                  U5      (       d   e[         R                  " / SQ5      n U R                  S 5      n[         R                  " / SQ5      nUR                  U5      (       d   eg ! , (       d  f       GN= f)Nr#   r$   Nr%   r0  r
   +Array arguments must all be the same lengthr-   r7  )r   bbNccc)r   r  r  r  )r   r  s   ccc)r   r   r   r3   r4   r\  	fill_nullr  r   r  r  )r  
fill_valuer  r  s       r:   test_fill_nullr  T  s   
((?
3C1#BGGI.J	rJ
Lj!
L ((+"'')
<C4bggi0J]]:&Fxx01H==""""
(($
%C]]5!Fxx*+H==""""
((&R__->
?C]]5!Fxx-BOO4EFH==""""
(($
%C]]4 Fxx)*H==""""/
L 
Ls   7I
I#c                    [         R                  " / SQU S9n[         R                  " SU S9nUR                  U5      n[         R                  " / SQU S9nUR	                  U5      (       d   eUR                  S5      nUR	                  U5      (       d   e[         R
                  R                  UR                  5      (       d:  [        R                  " [        [        45         UR                  S5        S S S 5        UR                  [         R                  " SSS95      nUR	                  U5      (       d   eg ! , (       d  f       NK= f)Nr  r0  r
   )r#   r$   r
   r%   5r   )r   r   r   r  r  r@  is_unsigned_integerr   r3   r4   r  r5   )r-  r  r  r  r  s        r:   test_fill_null_arrayr  q  s    
((?
4C1:.J]]:&Fxx:6H=="""" ]]1F=="""" 88''11]]J	23MM# 4 ]]299QV45F==""""	 43s   $D;;
E	c           	         [         R                  " SU S9n[         R                  " [         R                  " / SQU S9/5      nUR	                  U5      n[         R                  " [         R                  " / SQU S9/5      nUR                  U5      (       d   e[         R                  " [         R                  " SS/U S9[         R                  " / U S9[         R                  " S S/U S9/5      n[         R                  " [         R                  " SS/U S9[         R                  " / U S9[         R                  " SS/U S9/5      nUR	                  U5      nUR                  U5      (       d   eUR	                  S5      nUR                  U5      (       d   eUR	                  [         R                  " SSS95      nUR                  U5      (       d   eg )	Nr
   r0  )Nr$   r"   r%   )r
   r$   r"   r%   r#   r$   r%   r   )r   r   rK  r   r  r  )r-  r  r  r  r  s        r:   test_fill_null_chunked_arrayr    sy   1:.J


BHH_:FG
HC]]:&F,Z!H IJH==""""



!Qj)
*%
$, C
 
!Qj)
*%
!Qj)! H
 ]]:&F=="""" ]]1F==""""]]299QV45F==""""rD   c                     [         R                  " / SQ5      n [         R                  " S[         R                  " 5       S9n[         R                  R                  SX/5      nUR                  SS9  [         R                  " / SQ5      nUR                  U5      (       d   e[         R                  " 5       [         R                  " 5       [         R                  " 5       [         R                  " 5       4 H  n[         R                  " / SQUS9n [         R                  " SUS9n[         R                  R                  SX/5      nUR                  SS9  [         R                  " / S	QUS9nUR                  U5      (       a  M   e   g )
N)TFFFFNTr0  coalescer  )TFFFFT)r#   r$   r"   r%   r
   N*   )r#   r$   r"   r%   r
   r  )r   r   r   bool_computer  r  r  r   r   r   r   )r  r   r  r  r  s        r:   !test_fill_null_windows_regressionr    s    ((;
<C
		$RXXZ(AZZ%%j3(;F
OOOxx@AH==""""wwy"((*bhhj"((*=hh,26IIbr"))*sh?T"88/b9}}X&&&& >rD   c                     [         R                  " / SQ5      n [         R                  " / SQ5      n[        R                  " X5      [         R                  " / SQ5      :X  d   e[        R                  " X5      [         R                  " / SQ5      :X  d   e[        R
                  " X5      [         R                  " / SQ5      :X  d   e[        R                  " X5      [         R                  " / SQ5      :X  d   e[        R                  " X5      [         R                  " / SQ5      :X  d   e[        R                  " U 5      [         R                  " / SQ5      :X  d   eg )Nr+  )TTFTr  r)  r-  )	r   r   r?   and_
and_kleeneor_	or_kleenexorinvertr)   s     r:   test_logicalr    s    
+,A
*+A771=BHH%?@@@@=="((+E"FFFF66!<288$=>>>><<*C!DDDD66!<288$>????99Q<288$=>>>>rD   c                     [         R                  " / SQ5      n U R                  5       n[        R                  " U5      nX:w  d   eX:X  d   eU [        R                  " U 5      :X  d   e[        R                  " U5      U:X  d   eg )N)r   r   r   r  r   )r   r   dictionary_encoder?   dictionary_decode)r   dictionary_arraydictionary_array_decodes      r:   test_dictionary_decoder    s~    HH./E..0 223CD$$$+++B((//// 015EEEErD   c                     [         R                  " / SQSS9n [        R                  " [         R                  " 5       5      n[
        R                  " [        5         [        R                  " U S S9  S S S 5        [
        R                  " [        5         [        R                  " U SUS9  S S S 5        [
        R                  " [        5         [        R                  " U SUS9  S S S 5        [        R                  " XS9[         R                  " / SQS	S9:X  d   e[         R                  " S
/SS9n [        R                  " [         R                  " 5       SS9n[
        R                  " [         R                  5         [        R                  " U S5        S S S 5        [        R                  " U SSS9[         R                  " S/SS9:X  d   e[        R                  " XS9[         R                  " S/SS9:X  d   e[         R                  " [        R                  " SSS5      [        R                  " SSS5      /5      n [         R                  " SS/SS9n[        R                  " U S5      U:X  d   e[         R                  " SS// SQ/[         R                  " [         R                  " 5       5      S9n [         R                  " SS// SQ/[         R                  " [         R                  " 5       5      S9n[        R                  " XR                   5      U:X  d   eg ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNe= f! , (       d  f       GN= f)Nr/  r   r0  )target_typer   r  T)r   r   r   l    )allow_int_overflowFr   r\   i  r#   i  l    x\Nl    0E*ztimestamp[ms]r$   )r"   r%   r
   r`   ra   )34r  )r   r   r?   r   r   r3   r4   r5   castr  r   r\  datetime
large_listr  rW  r   )r  r   allow_overflow_optionsr  s       r:   	test_castr    sZ   
((<g
.CnnRWWY'G	y	!
& 
" 
z	"
Wg. 
# 
z	"
$0 
# 773(BHH6-# # # # ((K=w
/C^^

t- 
r	'
W 
( 773e,"G0LLLL7737288	7<    ((			4A	&(9(9$1(EFHCxx6_MH773(H444
((QFI&R]]2779-E
FCxx#s_5XXbggi02H773&(222A 
"	! 
#	" 
#	" 
(	's0   LL/M<M
L,/
L>
M
M"
value_typec                     [         R                  " SSS5      n[        R                  " U/U S9n[        R
                  " X 5      U:X  d   eg )Ni  r"   r#   r0  )r  dater   r   r?   r  )r  dtr  s      r:   test_identity_cast_datesr    s=    	tQ	"B
((B4j
)C773#s***rD   c                 ^   [         R                  " [         R                  " SU 5      S5      n[         R                  " 5       n[         R                  " [         R                  " SU5      S5      n[         R                  R                  [         R                  " / SQUS9US9nXR                  U5      R                  :X  d   e[         R                  R                  [         R                  " / SQUS9US9nXR                  U5      R                  :X  d   e[         R                  " 5       n[         R                  " [         R                  " SU5      S5      n[         R                  R                  [         R                  " / SQUS9US9nXR                  U5      R                  :X  d   e[         R                  " [         R                  " SU 5      S5      nS	n[        R                  " [         R                  R                  US
9   UR                  U5        S S S 5        g ! , (       d  f       g = f)Nelementr$   rJ   )r#   r$   r"   r%   r
   r&   r0  )r#   NNr%   r
   r&   )NNNNNNr"   z&Size of FixedSizeList is not the same.r-   )r   r  r^   r   FixedSizeListArrayr  r   r  r   r  r3   r4   libArrowTypeError)r  	cast_typedtyper   fslerr_msgs         r:   test_fsl_to_fsl_castr    s    )Z8!<IHHJE88BHHXu-q1D



+
+
#%0t , =C+00000 


+
+
)6T , CC+00000 GGIE88BHHXu-q1D



+
+
5EB , OC+00000 )Z8!<I6G	rvv,,G	< 
=	<	<s   H
H,DecimalTypeTraits)r=   factorymax_precisionFloatToDecimalCase)	precisionrC  	float_val	decimal32	decimal64   rB  r9  rD  r:  c                     U S:  d   eUS:  d   e[        U 5      SU-  -  nUSU-  -  U :  a:  [        R                  " US5      nUSU-  -  U :  a  [        R                  " US5      nUSU-  -  U ::  d   eU$ )z9
Find the largest float f such as `f * 10**scale <= val`
r   r           )r   r  	nextafter)valrC  r  s      r:   largest_scaled_float_not_abover  .  s     !8O8A::c
RY&I2u9s"LLC0	r5y 3&Y4Ir5y C'''rD   c                     [        U [        5      (       d   e[        R                  " U 5      nUR	                  U* 5      n[        U5      nU$ )zK
Return a float representation (possibly approximate) of `int_val**-scale`
)r   intr?  r8  scalebr   )int_valrC  unscaledscaledr  s        r:   scaled_floatr  >  sD     gs####w'H__eV$FfIrD   c              #      #    Sn[        SUS5       Hd  n[        SUS5       HP  n[        X4S5      v   [        X4S5      v   S[        X2-
  U5      -  n[        SU-  U-
  U5      n[        X4U5      v   MR     Mf     g	7f)
z;
Return FloatToDecimalCase instances with integral values.
r(   r#   r"   r   r$   r  rq  r   N)r  r  rn   r  )float_tyr  mantissa_digitsr  rC  epsilon
abs_maxvals          r:   $integral_float_to_decimal_cast_casesr  I  s      O1mQ/	1i+E$Ys;;$Ys;;#i95AAG7I'0J$YzBB , 0   A9A;c              #      #    Sn[        SUS5       Hd  n[        SUS5       HP  nSS[        X2-
  S5      -  -  n[        XT5      n[        SU-  U-
  U5      n[        X4U5      v   [        X4U5      v   MR     Mf     g7f)z7
Return FloatToDecimalCase instances with real values.
r(   r#   r"   r   r$   r   N)r  rn   r  r  )r  r  r  r  rC  r  
abs_minvalr  s           r:    real_float_to_decimal_cast_casesr  X  s      O1mQ/	1i+E"c)"=qAAAG7GJ7I'0J$YzBB$YzBB , 0r  c              #   *  #    [         R                  " S5      n[        SUS5       Hh  n[        SUS5       HT  n[        S5       HB  nUR                  SSU-  5      n[	        Xd5      nUSU-  -  SU-  :  d   e[        X4U5      v   MD     MV     Mj     g7f)	z7
Return random-generated FloatToDecimalCase instances.
r  r#   r&   r   r%      r   N)r  Randomr  	randranger  r  )r  r  rr  rC  r  r  r  s           r:   "random_float_to_decimal_cast_casesr  g  s      	bA1mQ/	1i+E2Y;;q"i-8(9	 2u9,r9}<<<(9EE	  , 0s   BBc                 &   UR                   Ul        [        R                  Ul        UR                  U5      nUR                  [        R                  " S5      R                  UR                  * 5      5      n[        R                  " XS9n[        R                  " Xb5      R                  5       nXu:w  a^  [        Xu-
  5      SUR                  -  -  nUR                   US-
  :  a  SOSn	X::  d$   SU< SUR                    SU< S	U< S
U< 3
5       eg g )Nr#   r0  r   r$   r%   zfloat_val = z, precision=z, expected = z, actual = z, diff_digits = )r  precr?  ROUND_HALF_EVENroundingcreate_decimal_from_floatquantizer8  r  rC  r   r   r?   r  r3  abs)
r  r  
decimal_tydecimal_ctxr  r  r   r  diff_digitslimits
             r:   check_cast_float_to_decimalr  u  s    "++K"22K44Y?H  !3!:!:J<L<L;L!MNH
		)+AWWQ#))+F &+,r:3C3C/CC))MA,==1# 	.9-|J4H4H3I J"[
 ;(O-	.# rD   r  )idsr  c                     U R                   $ r   r=   vs    r:   <lambda>r        qvvrD   case_generator)	integralsrealsr  c           
         [         R                  " 5        nU" XR                  5       HH  n[        XR                  UR                  UR                  UR                  5      X1R                  5        MJ     S S S 5        g ! , (       d  f       g = fr   )r?  localcontextr  r  r  r  r  rC  )r  r  r  ctxcases        r:   test_cast_float_to_decimalr    sd     
			3"8-E-EFD'..""4>>4::>--/ G 
 		s   AA>>
Bdecimal_traitsc                     U R                   $ r   r  r  s    r:   r  r    r  rD   c                    [         R                  " S5      n[        R                  " 5       [        R                  [        R
                  " 5       [        R
                  0U    n[        R                  " 5       S[        R
                  " 5       S0U    n[        R                  " 5       S[        R
                  " 5       S0U    u  pV[        R                  " [        R                  " SU-  5      5      nUR                  nX:  aZ  [        R                  " [        R                  " SU-  5      5      n[        R                  " [        R                  " SU-  5      5      n[        R                  " 5        n	Un
Xl        [        U* U
[        R                  " [        R                  " SU-  5      5      -   5      n[!        U[        R                  " [        R                  " SU-  5      5      5      n[#        X5       GHr  nUR%                  X5      nU* [        R                  " [        R                  " SX-
  -  5      5      -   nX_s=::  a  U::  d   e   e[#        S5       GH	  nUR'                  S	SU-  5      n[        R(                  " U" U5      U5      n[+        UU5      (       d   eUS	:  a  [        R,                  " U5      SU-  -  nO[        R,                  " U5      SU* -  -  n[/        UR1                  U5      5      n[2        R4                  " [        R6                  " UU S
9U5      R9                  5       n[/        UR1                  U5      5      n[;        UU-
  5      S::  a  GM
   e   GMu     SSS5        g! , (       d  f       g= f)zD
Test float-to-decimal conversion against exactly generated values.
+      5   )i   )ii  r$   r   r
   r   r0  r#   N)r  r  r   r  r  r  mathfloorlog10r  log2r?  r  r  rn   ceilr  r  r  r  ldexpr   r8  rL  r  r?   r  r   r3  r  )r  r  r  np_float_tymantissa_bitsfloat_exp_minfloat_exp_maxr  r  r  r  	min_scale	max_scalerC  r  	float_expr  mantissar  r  expected_as_intr  actual_as_ints                          r:   !test_cast_float_to_decimal_randomr    s    	bA


bjj


bjj K
 	

b


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

k


m$ $ M jjA},<!=>O"00M &

499R->#?@**TZZ=0@%AB				3#	 !DIIdjjM9I.J$KKM	

4::a.>#?@B	90E'//	AJ
 (DIIb93D.E$FGHI >>>>>>1X;;q!]*:;HH[%:IF	!)[9999 >&x81i<GH&x81yj=HH"'(>"?IIih7EEJUW  %fmmE&: ;=?:;q@@@  1 
 		s   /G/M5#	M55
Nc            	         [         R                  " / SQ5      n [        R                  " U SSS9n[         R                  " [        R                  " SSS5      S [        R                  " SS	S
5      /[         R
                  " S5      S9nX:X  d   e[        R                  " U SSS9U:X  d   e[         R                  " [        R                  " SSS5      S S /[         R
                  " S5      S9n[        R                  " U SSSS9nX:X  d   e[        R                  " [         R                  SS9   [        R                  " U SSSS9  S S S 5        [        R                  " [         R                  SS9   [        R                  " U SSS9  S S S 5        [        R                  " U SSSS9nU[         R                  " / SQ[         R
                  " S5      S9:X  d   eg ! , (       d  f       N= f! , (       d  f       Nh= f)N)z5/1/2020Nz
12/13/1900z%m/%d/%Yr   formatuniti  r
   r#   il        r0  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  	timestampr3   r4   r\  )r  gotr  s      r:   test_strptimer*    s   
((3
4C
++c*3
7Cxx			4A	&h.?.?b".MN\\# H ??;;sJS1S888xx**4A6dC\\#.0H
++c*3d
KC??	rA
C
C
EJ
C 
rA
C
C
5
C ++c*3d
KC"((-BLL4EFFFF
C 
C
C 
Cs   -G0G)
G&)
G7c            	      H   / SQn / SQn/ SQn[         R                  S:w  a  UR                  / SQ5        U GH:  n[        R                  " U 5      R                  U5      nS H  n[        R                  " U[        R                  " XS5      S9nU H  n[        R                  " U5      n[        R                  " XhS9n	[        R                  " UR                  U5      5      R                  U	R                  5      n
U	R                  U
5      (       a  M   e   M     S	n[        R                  " U[        R                  " S
U5      S9n[        R                  " U[        R                  " 5       S9n	[        R                  " UR                  U5      5      R                  U	R                  5      n
U	R                  U
5      (       d   e[        R                  " U[        R                  " S
U5      S9n[        R                  " U[        R                  " US-   5      S9n	[        R                  " UR                  US-   5      5      R                  U	R                  5      n
U	R                  U
5      (       d   e[        R                  " U[        R                  " S
U5      S9n[        R                  " S5      n[        R                  " XhS9n	[        R                  " UR                  S5      5      R                  U	R                  5      n
U	R                  U
5      (       d   e[        R                  " U[        R                  " SU5      S9n[        R                  " S5      n[        R                  " XhS9n	[        R                  " UR                  S5      5      R                  U	R                  5      n
U	R                  U
5      (       d   e[        R                  " U[        R                  " S
U5      S9n[        R                  " USS9n[        R                  " XhS9n	[        R                  " UR                  U5      5      R                  U	R                  5      n
U	R                  U
5      (       a  GM;   e   S	n[        R                  " U 5      n[        R                  " U[        R                  " S
5      S9n[        R                  " U[        R                  " U5      S9n	[        R                  " UR                  U5      5      R                  U	R                  5      n
[        R                  " Xg5      U	:X  d   eU	R                  U
5      (       d   e[        R                   " [        R"                  SS9   [        R                  " U[        R                  " US-   5      S9  S S S 5        [        R                   " [        R"                  SS9   [        R                  " U[        R                  " US-   5      S9  S S S 5        g ! , (       d  f       Ng= f! , (       d  f       g = f)N)z2018-03-10 09:00z2038-01-31 12:23N)CETrS   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nsr0  r  %Y-%m-%dT%H:%M:%Sr   r.  z%Sr2  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  r3   r4   r\  )times	timezonesformatstimezonetsr"  tsafmtr   r  r  s              r:   test_strftimerE    sb    ;E2IQG
||w)*^^E"..x8+D((2BLL$@AC,,S1S:88BKK$45::6;;G}}X....  , " hhrS( ;<S"*<*<*>?88BKK,-226;;?}}X&&&& hhrS( ;<S"*<*<S4Z*HI88BKKd
3499&++F}}X&&&& hhrS( ;<$$T*S288BKK-.33FKK@}}X&&&& hhrT8 <=$$T*S288BKK0166v{{C}}X&&&& hhrS( ;<$$S5S288BKK,-226;;?}}X&&&&Y ^ C		B
((2BLL-
.C[[b&8&8&=>FxxC()..v{{;H ;;s F***==""""	rM
O
C!3!3C$J!?@
O 
rM
O
C!3!3C$J!?@
O 
O
O 
O
O 
Os   4-X-X
X
X!c                    SSK Jn  [        R                  " U 5      R	                  S5      R                  U5      R                  5       n[        R                  " U[        R                  " SUS95      nUR                  R                  S-  UR                  R                  -   S-  R                  S5      n[        R                  " S	[        R                  " 5       5      [        R                  " S
[        R                  " 5       5      [        R                  " S[        R                  " 5       5      /nU" [        R                   5      U" S5      :  ad  UR#                  S 5      R%                  S5      nUR#                  S 5      R%                  S5      nUR#                  S 5      R%                  S5      n	OUR                  R'                  5       S   R%                  S5      nUR                  R'                  5       S   R%                  S5      nUR                  R'                  5       S   R%                  S5      n	[        R(                  R+                  XxU	/US9n
UR                  R,                  R%                  S5      nUR                  R.                  R%                  S5      nUR                  R0                  R%                  S5      nUR                  R2                  R%                  S5      nUR                  R4                  R%                  S5      nUR                  R6                  R%                  S5      nUR                  R8                  R%                  S5      nUR                  R:                  R%                  S5      nUR                  R<                  R>                  R%                  S5      nUR                  R                  R%                  S5      nUR                  R                  R%                  S5      n[@        R,                  " U5      RC                  [        R                  " U5      5      (       d   e[@        RD                  " U5      RC                  [        R                  " UR                  RD                  5      5      (       d   e[@        R.                  " U5      RC                  [        R                  " U5      5      (       d   e[@        R0                  " U5      RC                  [        R                  " U5      5      (       d   e[@        RF                  " U5      RC                  [        R                  " U5      5      (       d   e[@        RH                  " U5      RC                  [        R                  " U5      5      (       d   e[@        RJ                  " U5      RC                  [        R                  " U5      5      (       d   e[@        RL                  " U5      RC                  [        R                  " U5      5      (       d   e[@        RN                  " U5      RC                  U
5      (       d   e[@        R6                  " U5      RC                  [        R                  " U5      5      (       d   e[@        R8                  " U5      RC                  [        R                  " U5      5      (       d   e[@        R:                  " U5      RC                  [        R                  " U5      5      (       d   e[@        R<                  " U5      RC                  [        R                  " U5      5      (       d   e[@        RP                  " U5      RC                  [        R                  " US-  5      5      (       d   e[@        R                  " U5      RC                  [        R                  " US-  5      5      (       d   e[@        R                  " U5      RC                  [        R                  " U5      5      (       d   e[@        RR                  " U5      RC                  [        R                  " U5      5      (       d   e[@        RT                  " U5      RC                  [        R                  " UR                  R	                  S 5      5      5      (       d   eUR                  RV                  (       a  UR                  RV                  [X        RZ                  R\                  L a  S/[_        U5      -  nOURa                  S 5      n[@        Rb                  " U5      RC                  [        R                  " U5      5      (       d   e[@        Rd                  " SSS9n[@        RF                  " UUS9RC                  [        R                  " US-   5      5      (       d   e[@        Rf                  " SSSS9n[@        Rh                  " UUS9RC                  [        R                  " U5      5      (       d   eg )Nr   )VersionrS   r3  tzi  g&.>r'   iso_yeariso_weekiso_day_of_weekz1.1.0c                 (    U R                  5       S   $ Nr   isocalendarrv  s    r:   r  ,_check_datetime_components.<locals>.<lambda>[	      AMMOA$6rD   r   c                 (    U R                  5       S   $ )Nr#   rO  rQ  s    r:   r  rR  \	  rS  rD   c                 (    U R                  5       S   $ )Nr$   rO  rQ  s    r:   r  rR  ]	  s    1==?1#5rD   yearweekday)fieldsFc                 <    U R                  5       R                  S:  $ rN  )dstsecondsrQ  s    r:   r  rR  	  s    !(;rD   r#   rW   r  Tr   )5pyarrow.vendored.versionrG  r:  r;  r<  
tz_convert	to_seriesr   r   r(  r  microsecond
nanosecondrL  r^   r   __version__mapr  rP  StructArrayr  rV  monthrX  	dayofweek	dayofyearquarterhourminutert   rJ   r?   r  is_leap_yearday_of_weekday_of_yearrJ  rK  iso_calendarmillisecond	subsecondlocal_timestamprI  r  rA  utcr0   applyis_dstr   r   rW  )
timestampsrA  rG  rB  rC  
subsecondsiso_calendar_fieldsrJ  rK  iso_dayrn  rV  re  rX  rf  rg  rh  ri  rj  rt   r`  ra  rt  day_of_week_optionsweek_optionss                            r:   _check_datetime_componentsr{  J	  s   0	
	#	/	/
z(#IIK 
((2r||DX6
7C55$$w.55##$'/016q  	RXXZ(
RXXZ(
"BHHJ/ r~~!116667>>wG6667>>wG&&56==gF 55$$&v.55g>55$$&v.55g>%%##%e,33G<>>--	W%" . $L 55::W%DEEKKw'E
%%))

7
#C&&w/I&&w/Ieemm""7+G55::W%DUU\\  )FUU\\  ''0F%%##**73K!!((1J773<rxx~....??3&&rxx0B0B'CDDDD88C=000066#;bhhsm,,,,>>#%%bhhy&9::::>>#%%bhhy&9::::;;s""288H#56666;;s""288H#56666??3&&|4444::c?!!"((7"34444773<rxx~....99S>  &!1222299S>  &!12222>>#%%bhh{g/E&FGGGG>>#%%bhh{W/D&EFFFF==$$RXXj%9::::<<##BHHZ$89999c"))"((2553D3DT3J*KLLLL	uuxx5588x((,,,Ws2w&FXX;<Fyy~$$RXXf%56666--!->>#':;BB
Q! ! ! ! >>$)+L 773-44RXXh5GHHHHrD   c                     / SQn/ SQn[        U5        U R                  R                  R                  S   (       d  [        R
                  " S5        g U H  n[        X5        M     g )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)rS   America/ChicagoAsia/Kolkata	Etc/GMT-4	Etc/GMT+4zAustralia/Broken_Hillr   z-Timezone database is not installed on Windows)r{  r   r   r   r3   r  )r   ru  r?  rA  s       r:    test_extract_datetime_componentsr  	  sT    +JDI z* >>!!,,_=CD!H&z< "rD   c                  .   [         R                  " S/SSS9n U R                  [        R                  " SSS95      n[         R
                  " U5      S   R                  5       S:X  d   e[         R                  " U5      S   R                  5       S	:X  d   eg )
Nz2012-12-12T12:12:12r4  r   r   z+05:30rH  r      r  )r?   r'  r  r   r(  ri  r3  rj  )r  	zoned_arrs     r:   test_offset_timezoner  	  s}    
++,-6IPS
TCch78I779a &&(B...99Y"((*b000rD   r"  r0  c                 J   [         R                  " [        R                  " SSSS5      /S-  [         R                  " U 5      5      n[        R
                  " U5      n[         R                  R                  S/S-  S/S-  S/S-  // S	QS
9nUR                  U5      (       d   eg )Ni  r#   r$   r'   2   i  4   r`  )rJ  rK  rL  r  )	r   r   r  r(  r?   rn  rd  r  r  )r"  r  r  r  s       r:   test_iso_calendar_longer_arrayr  	  s     ((H%%dAq!45b8",,t:L
MC__S!F~~))
RDGaSV$9 * H ==""""rD   c                     [         R                  " S5      n [        R                  " / SQ5      n[        R                  " SS/5      n[        R                  " / SQ5      n[         R                  " X0S9n[         R                  " X S9nS GH+  n[
        R                  " U5      n[         R                  " XS9nUR                  U5      n	[
        R                  " XS9n
U
R                  [         R                  " U	5      5      (       d   e[
        R                  " X5      n
U
R                  [         R                  " U	5      5      (       d   e[         R                  " U[         R                  " SU5      S9n[        R                  " [         R                  S	S
9   [
        R                  " XS9  S S S 5        GM.     [
        R                  " S5      n[        R                  " [        SS
9   [
        R                  " WUS9  S S S 5        Sn[
        R                  " U5      n[
        R                  " USSS9n[
        R                  " USSS9n[        R                  " [        SU S3S
9   [
        R                  " UUS9  S S S 5        [         R                  " UR                  USS95      n	[
        R                  " X_S9n
U	R                  U
5        [         R                  " UR                  USS95      n	[
        R                  " X^S9n
U	R                  U
5        [
        R                  " U5      n[
        R                  " USSS9n[
        R                  " USSS9n[        R                  " [        SU S3S
9   [
        R                  " UUS9  S S S 5        UR                  U/ SQS9n	[
        R                  " UUS9n
U
R                  [         R                  " U	5      5        UR                  U/ SQS9n	[
        R                  " UUS9n
U
R                  [         R                  " U	5      5        g ! , (       d  f       GM  = f! , (       d  f       GNI= f! , (       d  f       GN= f! , (       d  f       N= f)Nr3  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:00r0  )rS   r~  r  r  zalready have a timezone:r-   zEurope/Brusselsssznot found in timezone databaseEurope/Brusselsrk   earliest)	ambiguousnonexistentlatestz%Timestamp doesn't exist in timezone ''shift_forward)r  shift_backwardz$Timestamp is ambiguous in timezone ')TTT)r  )FFF)r   r(  r:  r;  r   r?   r   r<  assume_timezoner  r3   r4   r\  r  )ts_typeru  r  r  ambiguous_arraynonexistent_arrayrA  r   tar  r  ta_zonedinvalid_optionsoptions_nonexistent_raiseoptions_nonexistent_earliestoptions_nonexistent_latestoptions_ambiguous_raiseoptions_ambiguous_latestoptions_ambiguous_earliests                      r:   test_assume_timezoner  	  s    ll4 G !: ;J .."7"7"9 :K  7 8I hhy7O;>**84XXj/))(3##B8}}RXXh/0000##B1}}RXXh/000088JR\\$-IJ]]2??2LMx9 NM ? ../BCO	z)I	J
27 
K !H " 8 8 B#%#;#;G$= !#!9!9G"; 
z$$,:Q0
1 	,#<	>
1 xx//o 0 / 0H?FOOFxx//. 0 0 1HAFOOF 66x@!77H' ;!#!9!9JG"= 
z**216
7 	?4KL
7
 $$X9K$LH!;=F
MM"((8$%$$X9N$OH!9;F
MM"((8$%i NM 
K	J
1 
10
7 
7s0   P-(Q 'Q6Q$-
P=	 
Q
Q!$
Q2c           	         SSSSSSSS.nSSSSSSS	.n[         R                  " U 5      nU GH  n[        U5      X2   -   n[        R                  " Xb5      n[        R
                  " XXS
9R                  5       n	U R                  R                  U5      n
[        R                  R                  X5        [        R                  " XXS
9R                  5       n	U R                  R                  U5      n
[        R                  R                  X5        [        R                  " XXS
9R                  5       n	U R                  R                  U5      n
[        R                  R                  X5        US:w  Gal  [        R                  " XbSS9nU R                  R                  XB   5      nUR                   R"                  ca  [        R
                  " XXS
9R                  5       n	X-
  R                  R                  U5      U-   n
[        R                  R                  X5        [        R                  " XXS
9R                  5       n	X-
  R                  R                  U5      U-   n
[        R                  R                  X5        [        R                  " XXS
9R                  5       n	X-
  R                  R                  U5      U-   n
[        R                  R                  X5        US:X  d  GM  [        R
                  " XVS9R                  5       n	U R                  R                  U5      n
[        R                  R                  X5        [        R                  " XVS9R                  5       n	U R                  R                  U5      n
[        R                  R                  X5        [        R                  " XVS9R                  5       n	U R                  R                  U5      n
[        R                  R                  X5        GM     UR                   R"                  c  [        R                  " WUSS9n[        R
                  " XXS
9n	U R                  R                  W5      n
[        R$                  " X:H  U
[&        R(                  " XcU   5      -   U
5      n
[        R                  R                  X5        US:X  Ga  Sn[        R
                  " U5      R                  5       n	U R                  R                  U5      n
[        R                  R                  X5        [        R                  " U5      R                  5       n	U R                  R                  U5      n
[        R                  R                  X5        [        R                  " U5      R                  5       n	U R                  R                  U5      n
[        R                  R                  X5        g g )Nr3  r2  r1  r   r  r  r  ra  r`  ro  rt   rj  ri  rX  )ra  r`  ro  rt   rj  ri  r  rX  T)calendar_based_originrQ  )ceil_is_strictly_greater1D)r   r   r  r?   r   ceil_temporalr  r  r  r  rr  assert_array_equalfloor_temporalr  round_temporalrL  r   rI  wherer:  	Timedelta)rB  rJ   r"  unit_shorthandgreater_unitr  value	frequencyr   r  r  origins               r:   _check_temporal_roundingr  ,
  sX   N L 
"BJ!55	))%6!!"6@@B55::i(


%%f7""27AAC55;;y)


%%f7""27AAC55;;y)


%%f7
 5=--49GUU[[!34Fwwzz!))">HHJK++00;fD

--f?&&r;EEGF''--i86AHJJ))&;&&r;EEGF''--i86AHJJ))&; 5=%%b9CCEFuuzz),HJJ))&;&&r:DDFFuu{{9-HJJ))&;&&r:DDFFuu{{9-HJJ))&;c n 
wwzz))4$8!!"655::i(88Nr||E$+?@@ 	

%%f7 u}	!!"%//155::i(


%%f7""2&00255;;y)


%%f7""2&00255;;y)


%%f7 rD   r  c           
      @   Sn/ SQn[         R                  " U Vs/ s H  n[         R                  " USS9PM     sn5      n[        XAU 5        / SQnU HC  nUR                  R                  S5      R                  R                  U5      n[        XqU 5        ME     g s  snf )N)r#   r$   r"   r%   r
   r&   r`  r   rI  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.316686848r3  r%  )r  zAmerica/New_Yorkr  r  r  zPacific/Marquesasr~  rS   rS   )r:  Series	Timestampr  r  r<  r^  )r"  rJ   ru  rv  rB  r?  rA  ts_zoneds           r:   test_round_temporalr  
  s    
 BF)J 

C
1BLL.
C	DBR.SI 55$$U+..99(C 48  Ds   Bc                  h   [         R                  " / SQ5      n [        R                  " U 5      R	                  5       S:X  d   e[        R                  " U SS9R	                  5       S:X  d   e[        R                  " U SS9R	                  5       S:X  d   e[        R                  " U SS9R	                  5       S:X  d   e[        R                  " U S5      R	                  5       S:X  d   e[
        R                  " [        S	S
9   [        R                  " U S5        S S S 5        g ! , (       d  f       g = f)Nr#   r$   r"   NNr"   
only_validrS  	only_nullr$   r   r
   z*"something else" is not a valid count moder-   zsomething else)r   r   r?   rT  r3  r3   r4   r  r+  s    r:   
test_countr  
  s    
(((
)C88C= A%%%88Cl+113q88888Ck*002a77788Ce$**,11188C%%'1,,,	zI
K
&'
K 
K 
Ks   D##
D1c                     [         R                  " / SQ[         R                  " 5       S9n [        R                  " U [         R
                  " S5      5      R                  5       S:X  d   e[        R                  " U [         R
                  " S[         R                  " 5       S95      R                  5       S:X  d   e[        R                  " U S5      R                  5       S:X  d   eU R	                  SSS9R                  5       S:X  d   eU R	                  S 5      R                  5       S:X  d   e[         R                  " S	S/S	S//[         R                  " 5       S9n U R	                  S	5      R                  5       S:X  d   eU R	                  S	SS9R                  5       S:X  d   eU R	                  S	S	SS
9R                  5       S:X  d   eg )N)r   r#   Nr"   r%   r0  r   r$   r\   r%   r"   rU   r#   )rU   end)	r   r   r   r?   indexr   r3  r   rK  r+  s    r:   
test_indexr  
  si   
((%BHHJ
7C88C1&,,.!33388C1277956<<>"DDD88C!!#q(((99Qa9 &&(A---99T?  "b(((


QFQF+"((*
=C99Q<1$$$99Qa9 &&(A---99QaQ9'--/2555rD   c                   ^ UR                  5       n[        U5      [        U 5      :X  d   e[        U5      [        [	        [        U 5      5      5      :X  d   e[	        U5       Vs/ s H	  o@X      PM     nn[	        U[        U 5      5       Vs/ s H	  o@X      PM     nnXU      mTc:  US:X  a  [        S U 5       5      (       d   eg [        S U 5       5      (       d   eg US:X  a9  [        U4S jU 5       5      (       d   e[        U4S jU 5       5      (       d   eg [        U4S jU 5       5      (       d   e[        U4S jU 5       5      (       d   eg s  snf s  snf )Nrg   c              3   (   #    U  H  oS L v   M
     g 7fr   r   r   r  s     r:   r   &check_partition_nth.<locals>.<genexpr>
       6+QDy+   c              3   (   #    U  H  oS L v   M
     g 7fr   r   r  s     r:   r   r  
  r  r  c              3   B   >#    U  H  oS L =(       d    UT:*  v   M     g 7fr   r   r   r  ps     r:   r   r  
       @KqDy*AF*K   c              3   ,   >#    U  H	  oT:  v   M     g 7fr   r   r  s     r:   r   r  
       3{!Av{   c              3   ,   >#    U  H	  oT:*  v   M     g 7fr   r   r  s     r:   r   r  
  r  r  c              3   B   >#    U  H  oS L =(       d    UT:  v   M     g 7fr   r   r  s     r:   r   r  
  r  r  )r)  r0   sortedlistr  r   )rd  r   pivotri   r  until_pivotafter_pivotr  s          @r:   check_partition_nthr  
  s=   !Gw<3t9$$$'?d5T#34444-25\:\
#\K:-25#d)-DE-D
#-DKEU^AyZ'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@K@@@@@ ;Es   %EE!c                  j   [        [        SS5      5      n [        R                  " U 5        Sn[        R
                  " XS9n[        XUS5        [        R
                  " X5      U:X  d   e[        R                  " [        SS9   [        R
                  " U 5        S S S 5        g ! , (       d  f       g = f)Nrv      r   )r  at_endz8'partition_nth_indices' cannot be called without optionsr-   )
r  r  r  shuffler?   partition_nth_indicesr  r3   r4   r  )rd  r  r   s      r:   test_partition_nthr  
  s    c3 D
NN4E&&t9Guh7##D0G;;;	L
N 	  &
N 
N 
Ns   B$$
B2c                      [        [        S5      5      S /S-  -   n [        R                  " U 5        S H-  nS H$  n[        R
                  " XUS9n[        XX5        M&     M/     g )Nr   )r   r`  r$     )rg   r  )r  ri   )r  r  r  r  r?   r  r  )rd  r  ri   r   s       r:   !test_partition_nth_null_placementr  
  sZ    b	?dVb[(D
NN44N..t>LNGuE 5  rD   c                  X   SS jn [         R                  " / SQ5      nS Hg  nS H$  n[        R                  " XSU4/S9nU " XAU5        M&     [        R                  " XS9nU " XAS5        [        R
                  " XS9nU " XAS	5        Mi     [        R                  " U[        R                  " S
S/S9S9nU " XAS5        [        R                  " U[        R                  " S
S/S9S9nU " XAS	5        [        R                  " US
S/S9U:X  d   e[        R                  " US
S/5      U:X  d   eg )Nc                     [         R                  " USU4/S9nUR                  S[        U 5      5      nU(       a  X:X  d   eg [         R                  " X5      n[         R                  " X5      nXv:X  d   eg )Nr|   rx   r   r?   sort_indicesslicer0   r
  )select_k_indicesr  orderstable_sortsorted_indiceshead_k_indicesr  r  s           r:   validate_select_k.test_select_k_array.<locals>.validate_select_k
  si    '59I8JK'--a5E1FG#555wws3HWWS3F%%%rD   r#   r$   Nr   r   r$   r%   )r}   rm   r|   r  rp   )r  r}   rm   r$   r{   r  r|   rm   rx   F)r   r   r?   select_k_unstabletop_k_unstablebottom_k_unstabler   )r  r  r  r  r  s        r:   test_select_k_arrayr  
  sB   & ((?
#C0E))gu%5$68Ff51 1
 ""3,&|4%%c/&{3  !!R&&346F f<0!!R&&7M6NOF f;/ Q+A*BDGMN N NQ)?(@AVKKKrD   c                  ^   SS jn [         R                  " / SQ/ SQS.5      nS H  n[        R                  " XS/S9nU " X1S/S9  [        R                  " X[        R                  " S	5      S
4S/S9nU " X1SS/S9  [        R
                  " XS	/S9nU " X1S/S9  [        R                  " XS	S/S9nU " X1SS/S9  M     [        R                  " [        SS9   [        R                  " U5        S S S 5        [        R                  " [        SS9   [        R                  " USS/S9  S S S 5        [        R                  " [        SS9   [        R                  " US/ S9  S S S 5        [        R                  " [        SS9   [        R                  " UWS/S9  S S S 5        [        R                  " [        SS9   [        R                  " UWS/S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N{= f! , (       d  f       g = f)Nc                     [         R                  " XS9nUR                  S[        U 5      5      nU(       a  X:X  d   eg [         R                  " X5      n[         R                  " X5      nXv:X  d   eg )Nrx   r   r  )r  tblrp   r  r  r  r  r  s           r:   r  .test_select_k_table.<locals>.validate_select_k'  s_    B'--a5E1FG#555wws3HWWS3F%%%rD   )r#   r$   r   )r#   r   r#   r)   r  r   rm   r  rx   r   rm   rw   r   r}   r   z4'select_k_unstable' cannot be called without optionsr-   z,select_k_unstable requires a nonnegative `k`r\   z2select_k_unstable requires a non-empty `sort_keys`r$   not a valid sort orderr   nonscending.Invalid sort key column: No match for.*unknownunknownrm   r  )
r   r  r?   r  r^   r  r  r3   r4   r  )r  r  r  r  s       r:   test_select_k_tabler  &  s   & HH9956E%%#5"68&4F3GH%%BHHSM;#?AS"TV&8:L%M	O ""5#?&4G3HI%%eS#JG&8:L%M	O " 
H
J 	U#
J
 
zK
M
Ub5G4HI
M 
z5
6 	Ua26
6
 
z)A	B
Ua4H3IJ 
C 
zM
O
Ua4L3MN
O 
O#
J 
J

M 
M
6 
6
 
C	B
O 
Os<   GG+G< H9H
G(+
G9<
H

H
H,c                     [         R                  " / SQ5      n [        R                  " U 5      nUR	                  5       / SQ:X  d   e[        R                  " U SS9nUR	                  5       / SQ:X  d   e[        R                  " U SS9nUR	                  5       / SQ:X  d   e[        R                  " U SSS9nUR	                  5       / S	Q:X  d   e[        R                  " U SSS
9nUR	                  5       / S	Q:X  d   e[
        R                  " [        SS9   [        R                  " U SS9  S S S 5        g ! , (       d  f       g = f)Nr  r"   r   r#   r$   rm   )r  r}   r#   r   r"   r$   rg   )r  ri   r$   r#   r   r"   rh   r   r-   r  )r   r   r?   array_sort_indicesr)  r3   r4   r  r  r  s     r:   test_array_sort_indicesr  Y  s   
((?
#C""3'F---""3k:F---""3l;F---""3l2<>F---""32<>F---	z)A	B
c7 
C	B	Bs   D55
Ec                     [         R                  " / SQ5      n [        R                  " U 5      nUR	                  5       / SQ:X  d   e[        R                  " U S/S9nUR	                  5       / SQ:X  d   e[        R                  " U S/S9nUR	                  5       / SQ:X  d   e[        R                  " U S/SS9nUR	                  5       / S	Q:X  d   e[        R                  " U S/SS
9nUR	                  5       / S	Q:X  d   e[        R                  " U [        R
                  " S/S9S9nUR	                  5       / SQ:X  d   e[        R                  " U [        R
                  " S/SS9S9nUR	                  5       / S	Q:X  d   eg )Nr  r  r  rx   r{   r	  rg   rr   r
  rh   r  )r   r   r?   r  r)  r   r  s     r:   test_sort_indices_arrayr  l  sb   
((?
#C__S!F---__S-C,DEF---__S-D,EFF---__S-D,E,68F---__S#:";,68F---__R^^/F.GHF ---__R^^/F.G3=?F ---rD   c                     [         R                  " / SQ/ SQS.5      n [        R                  " U S/S9nUR	                  5       / SQ:X  d   e[        R                  " U [        R
                  " S5      S4/S	S
9nUR	                  5       / SQ:X  d   e[        R                  " U SS/S9nUR	                  5       / SQ:X  d   e[        R                  " U SS/S	S
9nUR	                  5       / SQ:X  d   e[        R                  " U SS/S	S9nUR	                  5       / SQ:X  d   e[        R                  " [        SS9   [        R                  " U 5        S S S 5        [        R                  " [        SS9   [        R                  " U S/S9  S S S 5        [        R                  " [        SS9   [        R                  " U S/S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       NX= f! , (       d  f       g = f)N)r#   r#   Nr   )r#   r   r   r#   r)   r  rx   r  r   rm   rg   rr   )r$   r"   r   r#   r  rw   r	  r
  rh   z"Must specify one or more sort keysr-   r  r  r   r  )	r   r  r?   r  r)  r^   r3   r4   r  )r  r  s     r:   test_sort_indices_tabler    s   HH?>?E__U/A.BCF---__U{/K.L,68F---__-/ABF ---__-/AB!F ---__#%78!F ---	z)M	N
 
O 
zM
O
*B)CD
O 
z)A	B
*>)?@ 
C	B 
O	N
O 
O 
C	Bs$   9G	1G)G+	
G
G(+
G9c                  P   [         R                  " / SQ5      n [        R                  " U [         R                  " / SQ5      S9nUR	                  5       / SQ:X  d   e[        R                  " U [         R                  " / SQ5      SS9nUR	                  5       / SQ:X  d   e[        R                  " U [         R                  " SS	/5      S9nUR	                  5       / SQ:X  d   e[        R                  " U [         R                  " SS	/5      SS9nUR	                  5       / SQ:X  d   eg )
Nr#   r$   Nr#   r$   r"   r#   r"   N	value_set)TFTTFTTr  rV   )TFFTFTr#   r"   )r   r   r?   is_inr)  r  s     r:   
test_is_inr    s    
(((
)CXXcRXXl%;<F!GGGGXXcRXXl%;MF!HHHHXXcRXXq!f%56F!HHHHXXcRXXq!f%5$GF!HHHHrD   c                     [         R                  " / SQ5      n [        R                  " U [         R                  " / SQ5      S9nUR	                  5       / SQ:X  d   e[        R                  " U [         R                  " / SQ5      SS9nUR	                  5       / SQ:X  d   e[        R                  " U [         R                  " SS	/5      S9nUR	                  5       / SQ:X  d   e[        R                  " U [         R                  " SS	/5      SS9nUR	                  5       / SQ:X  d   e[        R                  " U [         R                  " SS	/5      SS
9nUR	                  5       / SQ:X  d   eg )Nr  r  r  )r   Nr$   r   Nr#   Tr  )r   NNr   Nr#   r#   r"   rZ   )r   r   r?   index_inr)  r  s     r:   test_index_inr    s   
(((
)C[[(>?F!9999[[(>$(*F!<<<<[[!Q(89F!<<<<[[!Q(8TJF!<<<< [[bhh1v.4@F!<<<<rD   c                  4   [         R                  " / SQ5      n [        R                  " U 5      nUR	                  5       S/:X  d   e[        R                  " U SS9nUR	                  5       S/:X  d   e[        R                  " U SS9nUR	                  5       S/:X  d   e[        R                  " U SS9nUR	                  5       S/:X  d   e[        R                  " U S	S9nUR	                  5       S/:X  d   e[        R                  " U S
S9nUR	                  5       S/:X  d   e[         R                  " SS/5      n [        R                  " U / SQS9nUR	                  5       / SQ:X  d   e[        R                  " U / SQSS9nUR	                  5       / SQ:X  d   e[        R                  " U / SQSS9nUR	                  5       / SQ:X  d   e[        R                  " U / SQS	S9nUR	                  5       / SQ:X  d   e[        R                  " U / SQSS9nUR	                  5       / SQ:X  d   e[        R                  " U / SQS
S9nUR	                  5       / SQ:X  d   e[        R                  " U / SQS
S9nUR	                  5       / SQ:X  d   e[
        R                  " [        SS9   [        R                  " U SS9  S S S 5        [
        R                  " [        SS9   [        R                  " U SS9  S S S 5        g ! , (       d  f       NF= f! , (       d  f       g = f)Nr/        @lower)interpolationr$   higherr"   nearestmidpointlinearr#   )g      ?      ?g      ?q)      ?      ?g      ?)r'  r   )r#   r#   r#   )r$   r$   r$   )r)  r)  r)  r#   r#   r$   z Quantile must be between 0 and 1r-   皙?z"not a valid quantile interpolationzzz)r   r   r?   r  r)  r3   r4   r  r  s     r:   test_quantiler-    s   
((<
 C[[F#&&&[[G4F!$$$[[H5F!$$$[[I6F!$$$[[J7F#&&&[[H5F#&&&
((Aq6
C[[ 12F!2222[[ 1IF***[[ 1JF***[[ 1LF000[[ 1KF***[[ 1JF!2222 [[/xHF!2222	z)K	L
C3 
M	z)M	N
Cu- 
O	N 
M	L	N	Ns   "K8L	8
L	
Lc                     [         R                  " / SQ5      n [        R                  " U 5      nUR	                  5       S/:X  d   e[         R
                  " [         R                  " SS/5      [         R                  " SS/5      /5      n [        R                  " U 5      nUR	                  5       S/:X  d   e[         R                  " / SQ5      n [        R                  " U / SQS9nUR	                  5       / S	Q:X  d   e[         R
                  " [         R                  " SS/5      [         R                  " SS/5      /5      n [        R                  " U / SQ5      nUR	                  5       / S	Q:X  d   eg )
Nr/  r  r#   r$   r"   r%   )r   r%  r#   r&  )r#   r  r%   )r   r   r?   tdigestr)  rK  r  s     r:   test_tdigestr0    s   
((<
 CZZ_F#&&&


BHHaV,bhh1v.>?
@CZZ_F#&&&
((<
 CZZ{+F,,,


BHHaV,bhh1v.>?
@CZZ[)F,,,rD   c                  "   [         R                  " S /[         R                  " 5       5      R                  S5      n U R	                  [         R
                  " 5       5      nU[         R                  " S/[         R
                  " 5       5      :X  d   eg )NFr   )r   r   r  r  r  r   r  s     r:   test_fill_null_segfaultr2    sZ    
((D6288:
&
0
0
7CXXbggi FRXXqc2779----rD   c                     [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " / SQ5      n[        R                  " X5      nU[         R                  " / SQ5      :X  d   e[        R                  " X5      nU[         R                  " / SQ5      :X  d   e[        R                  " XU5      nU[         R                  " / SQ5      :X  d   e[        R                  " XU5      nU[         R                  " / SQ5      :X  d   e[        R                  " XSS9nU[         R                  " / S	Q5      :X  d   e[        R                  " XSS9nU[         R                  " / SQ5      :X  d   e[        R                  " X[        R
                  " 5       S
9nU[         R                  " / S	Q5      :X  d   e[        R                  " X[        R
                  " 5       S
9nU[         R                  " / SQ5      :X  d   e[        R                  " XSS9nU[         R                  " / SQ5      :X  d   e[        R                  " XSS9nU[         R                  " / SQ5      :X  d   eg )Nr:  )r"   r#   r$   r$   r"   N)r"   r$   r"   r*  )r"   r"   r"   TrZ   )r$   r"   r"   r  F)r#   r$   N)r   r   r?   max_element_wiser  r   )r"  r#  arr3r  s       r:   test_min_max_element_wiser7    s   88ID88ID88L!D  ,FRXXi((((  ,FRXXi((((  T2FRXXi((((  T2FRXXi((((   =FRXXi((((  =FRXXi((((  B::<>FRXXi((((  B::<>FRXXi((((   >FRXXl++++  >FRXXl++++rD   rU   )r(  g      %@g      %rV   )TFc                    [        U 5      nS U[        R                  " U[        R                  " 5       S9[        R                  " U[        R                  " 5       S9/nU GH5  n[        R
                  " / SQ5      [        R
                  " / SQ5      [        R                  " SS /SS//5      /n[        R
                  " / SQ5      U(       a  [        R
                  " / SQ5      O[        R
                  " / S	Q5      U(       a  [        R                  " / SQ/5      O[        R                  " / S	Q/5      /n[        U5       HP  u  px[        R                  " XUS
9n	[        R                  " Xg   Ub  UOS5      n
U	R                  U
5      (       a  MP   e   GM8     S U [        R                  " U [        R                  " 5       S9[        R                  " U [        R                  " 5       S9/nU GH  n[        R
                  " / SQ5      [        R
                  " S[        R                  SSSS/5      [        R
                  " S[        R                  S SS S/5      /n[        R
                  " / SQ5      [        R
                  " S[        R                  [        R                  [        R                  [        R                  [        R                  /5      U(       aF  [        R
                  " S[        R                  S [        R                  S [        R                  /5      O)[        R
                  " S[        R                  S S S S /5      /n[        U5       Hr  u  px[        R                  " XUS
9n	[        R                  " Xg   Ub  UOS5      n
[        R                   R#                  U	R%                  SS9U
R%                  SS95        Mt     GM     S[        R                  " S5      S4 HG  n[&        R(                  " [        R*                  5         [        R                  " / SQUS9  S S S 5        MI     g ! , (       d  f       M[  = f)Nr0  r:  )r   Nr     r   r  r9  )r#   r"   r&   )r   Nr  r  )r   NNNrT   )      ?g      @g     @@r#   r$   r  r%   r
   r"   )r:  g      @g     @Fzero_copy_onlyr   arrowr+  r  )r  r   r   r   r   r   rK  r  r?   cumulative_sumr   r  r  r  r  r  rr  assert_array_almost_equalto_numpyr3   r4   r\  rU   rV   	start_intstartsstrtarraysexpected_arraysr  r  r  r  s              r:   test_cumulative_sumrG  6  s   
 E
IIryyCii	
35FHHYHH&'q$i"b23
 HHY HH&'!xx(=> /01!//1F0GH
  'FA&&s:NFvvo0$:J$#$&H==**** ( ( E299U>iiBJJL13FHH+,HHaB1-.HHaq$23
 HH,-HHa@A HHarvvtRVV<=!xxBFFD$d(KL	
  'FA&&s:NFvvo0$:J$#$&HJJ00$ 2A 2&'/'8'8'8'NP ( ( bii(#.]]2??+it4 ,+ /++   P88
Q	c                    [        U 5      nS U[        R                  " U[        R                  " 5       S9[        R                  " U[        R                  " 5       S9/nU GH5  n[        R
                  " / SQ5      [        R
                  " / SQ5      [        R                  " SS /SS//5      /n[        R
                  " / SQ5      U(       a  [        R
                  " / SQ5      O[        R
                  " / S	Q5      U(       a  [        R                  " / SQ/5      O[        R                  " / S	Q/5      /n[        U5       HP  u  px[        R                  " XUS
9n	[        R                  " Xg   Ub  UOS5      n
U	R                  U
5      (       a  MP   e   GM8     S U [        R                  " U [        R                  " 5       S9[        R                  " U [        R                  " 5       S9/nU GH  n[        R
                  " / SQ5      [        R
                  " S[        R                  SSSS/5      [        R
                  " S[        R                  S SS S/5      /n[        R
                  " / SQ5      [        R
                  " S[        R                  [        R                  [        R                  [        R                  [        R                  /5      U(       aF  [        R
                  " S[        R                  S [        R                  S [        R                  /5      O)[        R
                  " S[        R                  S S S S /5      /n[        U5       Hr  u  px[        R                  " XUS
9n	[        R                  " Xg   Ub  UOS5      n
[        R                   R#                  U	R%                  SS9U
R%                  SS95        Mt     GM     S[        R                  " S5      S4 HG  n[&        R(                  " [        R*                  5         [        R                  " / SQUS9  S S S 5        MI     g ! , (       d  f       M[  = f)Nr0  r:  )r#   Nr  r
   r#   r  r
   )r#   r$   r&   )r#   Nr  rv   )r#   NNNrT   )r)  r  rS  r$   r  r%   r"   )r)  g      @g     @*@Fr;  r   r=  r+  r  )r  r   r   r   r   r   rK  r  r?   cumulative_prodrJ  r  r  r  r  r  rr  r?  r@  r3   r4   r\  rA  s              r:   test_cumulative_prodrK  m  s   
 E
IIryyCii	
35FHHYHH%&q$i"a12
 HHY HH'(!xx(=> 012!//1F0GH
  'FA''JOF{{?#5t?Ot()+H==**** ( ( E299U>iiBJJL13FHH_%HHaB1-.HHaq$23
 HH()HHa@A HHarvvtRVV<=!xxBFFD$d(KL	
  'FA''JOF{{?#5t?Ot()+HJJ00$ 2A 2&'/'8'8'8'NP ( ( bii(#.]]2??+y5 ,+ /++rH  )r%  rS  g      @c                    [        U 5      nS U[        R                  " U[        R                  " 5       S9[        R                  " U[        R                  " 5       S9/nU GH=  n[        R
                  " / SQ5      [        R
                  " / SQ5      [        R                  " / SQ/ SQ/5      /n[        R
                  " / SQ5      U(       a  [        R
                  " / SQ5      O[        R
                  " / SQ5      U(       a  [        R                  " / SQ/5      O[        R                  " / SQ/5      /n[        U5       HX  u  px[        R                  " XUS	9n	[        R                  " Xg   Ub  UO
[        S
5      SS9n
U	R                  U
5      (       a  MX   e   GM@     S U [        R                  " U [        R                  " 5       S9[        R                  " U [        R                  " 5       S9/nU GHU  n[        R
                  " / SQ5      [        R
                  " SSS[        R                  SS/5      [        R
                  " SSS [        R                  SS /5      /n[        R
                  " / SQ5      [        R
                  " / SQ5      U(       a  [        R
                  " / SQ5      O[        R
                  " / SQ5      /n[        U5       Hq  u  px[        R                  " XUS	9n	[        R                  " Xg   Ub  UOS
SS9n
[        R                   R#                  U	R%                  SS9U
R%                  SS95        Ms     GMX     S[        R                  " S5      S4 HG  n[&        R(                  " [        R*                  5         [        R                  " / SQUS9  S S S 5        MI     g ! , (       d  f       M[  = f)Nr0  )r$   r#   r"   r
   r%   r&   )r$   r#   Nr
   r%   N)r$   r#   N)r
   r%   N)r$   r$   r"   r
   r
   r&   )r$   r$   Nr
   r
   N)r$   r$   NNNNrT   g    eFrZ   )r  ?rT  ffffff@皙@@r  rM  rT  rO  rP  )r  r  rT  rN  rN  rP  )r  r  rT  rT  rO  rP  )r  r  Nr  rO  N)r  r  NNNNr;  r   r=  r+  r:  r  )r  r   r   r   r   r   rK  r  r?   cumulative_maxr5  r  r  r  r  r  rr  r?  r@  r3   r4   r\  rA  s              r:   test_cumulative_maxrR    s   
 E
IIryyCii	
35FHH'(HH-.lL9:
 HH'( HH-.!xx(FG 678<=>
  'FA&&s:NF**"D,<D#d) "H ==**** ( , E299U>iiBJJL13FHH34HHc3RVVS#67HHc3bffc489
 HH34HH34 HH56!xx(JK	
  'FA&&s:NF**"D,<D$ "H JJ00$ 2A 2&'/'8'8'8'NP ( * bii(#.]]2??+it4 ,+ /++   N55
O	c                    [        U 5      nS U[        R                  " U[        R                  " 5       S9[        R                  " U[        R                  " 5       S9/nU GH=  n[        R
                  " / SQ5      [        R
                  " / SQ5      [        R                  " / SQ/ SQ/5      /n[        R
                  " / SQ5      U(       a  [        R
                  " / SQ5      O[        R
                  " / SQ5      U(       a  [        R                  " / SQ/5      O[        R                  " / SQ/5      /n[        U5       HX  u  px[        R                  " XUS	9n	[        R                  " Xg   Ub  UO
[        S
5      SS9n
U	R                  U
5      (       a  MX   e   GM@     S U [        R                  " U [        R                  " 5       S9[        R                  " U [        R                  " 5       S9/nU GHU  n[        R
                  " / SQ5      [        R
                  " SSS[        R                  SS/5      [        R
                  " SSS [        R                  SS /5      /n[        R
                  " / SQ5      [        R
                  " / SQ5      U(       a  [        R
                  " / SQ5      O[        R
                  " / SQ5      /n[        U5       Hq  u  px[        R                  " XUS	9n	[        R                  " Xg   Ub  UOS
SS9n
[        R                   R#                  U	R%                  SS9U
R%                  SS95        Ms     GMX     S[        R                  " S5      S4 HG  n[&        R(                  " [        R*                  5         [        R,                  " / SQUS9  S S S 5        MI     g ! , (       d  f       M[  = f)Nr0  )r
   r&   r%   r$   r"   r#   )r
   r&   Nr$   r"   N)r
   r&   Nr4  )r
   r
   r%   r$   r$   r#   )r
   r
   Nr$   r$   N)r
   r
   NNNNrT   g    eAFrZ   )      @333333@@ @333333@333333?rU  rV  rW  rY  rZ  )rU  rU  rW  rX  rX  rZ  )rU  rU  rW  rW  rY  rZ  )rU  rU  NrU  rY  N)rU  rU  NNNNr;  r   r=  r+  r:  r  )r  r   r   r   r   r   rK  r  r?   cumulative_minr  r  r  r  r  r  rr  r?  r@  r3   r4   r\  rQ  rA  s              r:   test_cumulative_minr\    s   
 E
IIryyCii	
35FHH'(HH-.lL9:
 HH'( HH-.!xx(FG 678<=>
  'FA&&s:NF**"D,<D#c( "H ==**** ( , E299U>iiBJJL13FHH34HHc3RVVS#67HHc3bffc489
 HH34HH34 HH56!xx(JK	
  'FA&&s:NF**"D,<D# "H JJ00$ 2A 2&'/'8'8'8'NP ( * bii(#.]]2??+it4 ,+ /++rS  c                     [         R                  " SS5      R                  5       SSS.:X  d   e[         R                  " SSSS/S9R                  5       SSS.:X  d   e[         R                  " / SQS	R                  5       5      [        R
                  R                  / SQS	R                  5       /S
R                  5       S9:X  d   e[        R                  " [        SS9   [         R                  " / SQS	R                  5       5        S S S 5        [        R                  " [        SS9   [         R                  " SS/S9  S S S 5        g ! , (       d  f       NG= f! , (       d  f       g = f)Nr#   r   )r   r`   r  r   )field_names)r  r   r:  za b cz0 1r  r  r-   r/  z0 arguments but 2 field namesonetwo)
r?   make_structr3  splitr   rd  r  r3   r4   r  r   rD   r:   test_make_structrc    s.   >>!S!'')13-????>>!SsCj9??ASF    >>)!--/+.0nn.H.H'%mmoJ/6;kkm /I /EE E E
 
zJ
L
|W]]_5
L 
z)H	I
E5>2 
J	I	
L 
L 
J	Is    (E	)E	
E
E(c                     [         R                  " [         R                  " 5       [         R                  " 5       5      n [         R                  " SS/S// SS/S /U S9n[         R                  " / SQ[         R                  " 5       S9n[         R                  " / SQ[         R                  " 5       S9n[         R                  " S	/S S S
S/S /[         R
                  " [         R                  " 5       5      S9n[        R                  " USS5      U:X  d   e[        R                  " U[         R                  " S[         R                  " 5       S9S5      U:X  d   e[        R                  " U[         R                  " S[         R                  " 5       S9S5      U:X  d   e[        R                  " U[         R                  " S[         R                  " 5       S9S5      U:X  d   eg )N)r_  r#   )r`  r$   )noner"   )r_  r
   )r_  r`  r0  )r#   NNr
   N)r#   NNr`  Nr#   r
   r`  r_  rd   lastr   )	r   map_rW  r   r   r  r?   
map_lookupr   )r  r  result_firstresult_last
result_alls        r:   test_map_lookuprl  +  su   	BHHJ	'B
((Z,{mZ0$8>@BC884288:FL((3"((*EKA3dQFD9!xx
35J ==eW-=====biiBGGI '),89 9 9==biiBGGI &(+67 7 7==biiBGGI %'*45 5 5rD   c                     [         R                  " / SQ[         R                  " 5       S9n [         R                  " / SQ5      n[         R                  R	                  X/SS/5      n[         R                  R	                  X/SS/5      n[
        R                  " US5      U:X  d   e[
        R                  " US5      U:X  d   e[
        R                  " USS/5      U:X  d   e[
        R                  " US	S/5      U:X  d   e[
        R                  " US
5      U:X  d   e[
        R                  " U[
        R                  " S5      5      U:X  d   e[
        R                  " US5      U :X  d   e[
        R                  " US/5      U :X  d   e[
        R                  " US5      U :X  d   e[
        R                  " U[
        R                  " S5      5      U :X  d   e[
        R                  " US	S	/S9U:X  d   e[
        R                  " US5      U:X  d   e[
        R                  " US/5      U :X  d   e[
        R                  " U/ 5      U:X  d   e[        R                  " [         R                  SS9   [
        R                  " US5        S S S 5        [        R                  " [         R                  SS9   [
        R                  " US5        S S S 5        [        R                  " [         R                  SS9   [
        R                  " US5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nc= f! , (       d  f       g = f)Nr%   r
   r&   r0  )r  Nr  r   r   r  z.c.bs   .c.br#   )r!   r   )r  r   z.a)r   r   )r#   r#   r   zNo match for FieldRefr-   r  z.c.fooz.a.foo)r   r   r   rd  r  r?   struct_fieldr^   r3   r4   r\  )r   r   r  r  s       r:   test_struct_fields_optionsrp  =  sy   
,A
"#A
""A6C:6A
..
$
$aVc3Z
8C??3'1,,,??3(A---??3c
+q000??3C)Q...??3,111??3 45:::??3%***??3&!+++??3$)))??3 01Q666??3A/1444??3'1,,,??3$)))??3#s***	r.E	F
U# 
G 
r.E	F
X& 
G 
r.E	F
X& 
G	F 
G	F 
G	F 
G	Fs$   0L3L(6L9
L%(
L69
Mc                      [         R                  " [         R                  " / SQ/ SQ5      / SQ/ SQ5      [        R                  " / SQ5      :X  d   eg )Nr(  )FTNr:  )   r#  r$  )r#   r#  N)r?   	case_whenra  r   r   r   rD   r:   test_case_whenrt  b  sE    <<':':<!$& *,-)@A A ArD   c                  ~   [         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      n [         R                  " U 5      nSSS.S SSS.S SS	S./nS S
SS.SSS.S SSS./n[         R
                  " X#/U5      nSn[         R                  R                  XE5      n[         R
                  " S S
SS./U 5      nUR                  U5      (       d   eSn[         R                  R                  XE5      n[         R
                  " SS	S.SSS./U 5      nUR                  U5      (       d   eg )Nr   r   r   r$   r)   r   r%   gffffff@r&   gp=
ף?r"   ffffff?g333333?r   r#   )	r   r  r  r   r  r   r  list_elementr  )element_type	list_typel1l2listsr  r  r  s           r:   test_list_elementr}  i  s   99sBJJL1C3CDEL&I
T!#4d#A<N	OB
c""1$5t2A=N	OBHHbXy)EEZZ$$U2FxxT23\BH==""""EZZ$$U2Fxxs+2A->?NH==""""rD   c            	      Z   [        SS5       V s/ s H  n [        R                  " U SSS9PM     nn [        R                  " U[        R                  " S5      5      n[
        R                  " U5      [        R                  " [        U5      [        R                  " 5       S9:X  d   eg s  sn f )Ni  i,  r#   )rV  re  rX  r3  r0  )
r  r  r   r   r(  r?   count_distinctr   r0   r   )ysamplesr  s      r:   test_count_distinctr  {  s{    BGdBSTBSQx  aqa8BSGT
((7BLL.
/CS!RYYs7|"((*%MMMM Us    B(c                     [         R                  " / SQ5      n [        R                  " U 5      R	                  5       S:X  d   e[        R                  " U SS9R	                  5       S:X  d   e[        R                  " U SS9R	                  5       S:X  d   e[        R                  " U SS9R	                  5       S:X  d   e[        R                  " U S5      R	                  5       S:X  d   eg )	Nr  r"   r  r  r  r#   r   r%   )r   r   r?   r  r3  r+  s    r:   test_count_distinct_optionsr    s    
(((
)CS!'')Q...S|4::<AAAS{399;q@@@Su-335:::S%(..0A555rD   c                     [         R                  " S/5      n [        R                  " U SS9U :X  d   e[        R                  " U SS9[         R                  " S/5      :X  d   e[        R                  " U S5      U :X  d   e[        R                  " U S5      [         R                  " S/5      :X  d   e[        R
                  " [        SS	9   [        R                  " U S
S9  S S S 5        g ! , (       d  f       g = f)Nu   01²3NFC)formr   0123NFDNFKDz/"NFZ" is not a valid Unicode normalization formr-   NFZ)r   r   r?   utf8_normalizer3   r4   r  r+  s    r:   test_utf8_normalizer    s    
((G9
CSu-444Sv."((F82DDDDS%(C///S&)RXXvh-????	C
E 	#E*
E 
E 
Es   C**
C8c            
         S HD  n [         R                  " SU S9[        R                  " / [        R                  " 5       S9:X  a  MD   e   [        S5       Vs/ s H0  n[        [         R                  " S5      R                  5       5      PM2     nn[        [        U5      5      [        U5      :X  d   e[        SS5       Vs/ s H2  n[        [         R                  " SUS-  S9R                  5       5      PM4     nn[        [        U5      5      S:X  d   e[        5       SS	/nUR                  S
 [        S5       5       5        U Vs/ s H/  n[        [         R                  " SUS9R                  5       5      PM1     nn[        [        U5      5      [        U5      :X  d   e[        R                  " [        SS9   [         R                  " S/ S9  S S S 5        g s  snf s  snf s  snf ! , (       d  f       g = f)N)systemr  is   abcdefr   )initializerr0  r   rv   r`  rn  r  c              3   N   #    U  H  n[         R                  " S 5      v   M     g7f)r   N)osurandom)r   r  s     r:   r   test_random.<locals>.<genexpr>  s     :	1

2	s   #%zJinitializer should be 'system', an integer, or a hashable object; got \[\]r-   )r?   r  r   r   r  r  tupler)  r0   r  r2   r9  r3   r4   r5   )r  r  rE  initializerss       r:   test_randomr    s   5yy4HHRbjjl+, 	, , 6
 :?rCAeBIIcN,,./FCs6{s6{*** Q}&$! BIIcq1u5??AB$  &s6{q    Hi/L:b	::#%#! BIIcq1;;=>#  %s6{s6{***	y?
@ 			#2&
@ 
@ D&%
@ 
@s   7G9G!	6G&=G++
G9ztiebreaker,expected_valuesr  )r"   r#   r%   r&   r%   r&   r#   rn   )r"   r$   r
   r`  r
   r`  r$   rd   r"   r#   r%   r&   r
   r`  r$   dense)r$   r#   r"   r%   r"   r%   r#   c                    [         R                  " / SQ5      n[        R                  " SSU S9n[        R                  " X#S9n[         R                  " U[         R
                  " 5       S9nUR                  U5      (       d   eg )NrZ  r  333333@Nr  Nr  rm   r  ro   r  r0  )r   r   r?   r   rankr   r  )rq   expected_valuesr  rank_optionsr  r  s         r:   test_rank_options_tiebreakerr    sd     ((8
9C>>K19-79L WWS/Fxxbiik:H==""""rD   c                     [         R                  " / SQ5      n [         R                  " / SQ[         R                  " 5       S9n[        R                  " U 5      nUR                  U5      (       d   e[        R                  " U [        R                  " 5       S9nUR                  U5      (       d   e[        R                  " U [        R                  " S/S9S9nUR                  U5      (       d   e[        R                  " U SS9n[         R                  " / S	Q[         R                  " 5       S9nUR                  U5      (       d   e[        R                  " U S
S9n[         R                  " / SQ[         R                  " 5       S9nUR                  U5      (       d   e[        R                  " [        SS9   [        R                  " S
SSS9  S S S 5        g ! , (       d  f       g = f)Nr  r  r0  r  rw   rx   rg   rh   )r
   r"   r&   r#   r`  r$   r%   r}   )r"   r%   r#   r&   r$   r`  r
   z'"NonExisting" is not a valid tiebreakerr-   r  NonExistingro   )
r   r   r   r?   r  r  r   r3   r4   r  r  r  r  expected_at_startexpected_descendings        r:   test_rank_optionsr    si   
((8
9Cxx-BIIK@H WWS\F=="""" WWS".."23F=="""" WWS"..%&#( F ==""""WWS4F!6RYY[I==*++++WWSL1F((#8ryy{K==,----	zG
I
&."/	1
I 
I 
Is   8G
G&c                     [         R                  " / SQ5      n [         R                  " / SQ[         R                  " 5       S9n[        R                  " U 5      nUR                  U5      (       d   e[        R                  " U [        R                  " 5       S9nUR                  U5      (       d   e[        R                  " U [        R                  " S/S9S9nUR                  U5      (       d   e[        R                  " U SS9n[         R                  " / S	Q[         R                  " 5       S9nUR                  U5      (       d   e[        R                  " U S
S9n[         R                  " / SQ[         R                  " 5       S9nUR                  U5      (       d   e[        R                  " [        SS9   [        R                  " U SS9  S S S 5        g ! , (       d  f       g = f)NNr#   Nr$   N)rv  r   rv  r   rv  r0  r  rw   rx   rg   rh   )r   rv  r   r   r   r}   )rv  r   rv  r   rv  r   r-   XXX)
r   r   r  r?   rank_quantiler  r   r3   r4   r  r  s        r:   test_rank_quantile_optionsr    sk   
((+
,Cxx1

EH c"F=="""" c2+A+A+CDF=="""" c2+A+A%&,( F ==""""c*=F!:N==*++++c\:F((#<2::<P==,----	z)A	B
. 
C	B	Bs   8G
G%c                     [         R                  " / SQ5      n [        R                  " / SQ5      n[        R
                  " U 5      nUR                  5       U:X  d   e[        R
                  " U SSS9nUR                  5       U:X  d   e[        R
                  " U [        R                  " 5       S9nUR                  5       U:X  d   e[        R                  " / SQ5      n[        R
                  " U SS	S9nUR                  5       U:X  d   e[        R
                  " U [        R                  " SS	S9S9nUR                  5       U:X  d   eg )
Nr  )ł?g2m6<r  łr  r  rm   )ri   rp   r  )r  g2m6<?r  r  r  rg   r}   )r   r   r3   rl  r?   rank_normalr)  r   r  r  r  s      r:   test_rank_normal_optionsr    s    
((+
,C}}	23H ^^C F)))^^CKPF)))^^C)?)?)ABF)))}}	23H ^^C
lSF)))^^C$&$:$:*EQ%STF )))rD   c                     [         R                  " [         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " [         R                  " S[         R
                  " 5       5      /5      5      /5      n [        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S5      n[        R                  " S 5      n[        R                  " SS05      n[        R                  " [         R                  " S5      5      n[        R                  " [        R                  " S	5      5      n[        R                  " S
5      n	[        R                  " S5      n
XX4XWXU
/	n/ X:H  PX:g  PX:  PX9-  PX9-  PU) PUR                  5       PX-   PX-
  PX-  PX-  P[        R                  " U5      P[        R                  " X5      P[        R                  " X5      P[        R                  " X5      P[        R                  " X5      P[        R                  " X5      P[        R                   " U5      P[        R"                  " U5      P[        R$                  " U5      P[        R&                  " U5      P[        R(                  " U5      P[        R*                  " U5      P[        R,                  " U5      P[        R.                  " U5      P[        R0                  " X"5      P[        R2                  " U5      P[        R4                  " U5      P[        R6                  " U5      P[        R8                  " U5      P[        R:                  " U5      P[        R<                  " U
5      P[        R>                  " U5      P[        R@                  " U5      P[        RB                  " U5      P[        RD                  " X5      P[        RF                  " X5      P[        RH                  " X5      P[        RJ                  " U5      P[        RL                  " U5      P[        RN                  " X5      PURQ                  [         RR                  " 5       S
S9Pn[        R                  " S5      S:  [        R                  " S5      S:H  [        R                  " S5      S:H  [        R                  " S5      S:H  [        R                  " SS5      S:H  /n[        R                  " S5      S:  [        R                  " S5      S:H  [        R                  " S5      S:H  [        R                  " S5      S:H  [        R                  " SS5      S:H  /nUURU                  / SQ5      [        R                  " S5      RW                  5       /nURY                  5       nUU-  nUU-  nUU-  nUUUUUUU S.$ )Ni64r  r  r#   r+  Tr   r   r$   Fr   r  r
   r`  )r  r  r  )r#   r   r:  )r   literalscallsrefsnumeric_refsspecialschema)-r   r  r^   r   r  r   r?   r   r  r  negater   rF  dividerJ  powersqrtexpcossintanacosatanasinatan2sinhcoshtanhasinhacoshatanhr  signbit_wise_notbit_wise_andbit_wise_orbit_wise_xorr  	is_finiter  r  r   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   YY
3RXXryy"((5"))+6786: ; <F 			!A
		#A
		$A
		(A
		$A
		3(A
		"))A,A
		"((1+A
		%A
		!A 1qQ/M7qv 7qv 7qu 7ae 7QU 7QB 7

 7u7e7%&U7,-E73599Q<7vva|7%'[[%678:		!7 {{1(7 +-((1.7 ;=''!*7 vvay	7 #%&&)	7 .0VVAY	7 9;q		7
 wwqz7
 $&771:7
 02wwqz7
 <>88A>7 wwqz7 $&771:7 02wwqz7 xx{7 %'HHQK7 24!7 vvay7 #%''!*7 /1ooa.@7 q,7 /1nnQ.B7 q,7 /1iil7 =?LLO7 {{1(7 vvbhhjuv57O  hhuo)288E?a+?hhuo*hh~.'9hhue,79N  "xx{Qq0@!xx{a/!xx/7:!xx1~8: 	
	y
!M ""$I III ! /  rD   c                     [        5       S    H\  n[        U[        R                  5      (       d   eU R	                  U R                  U5      5      nUR                  U5      (       a  M\   e   g )Nr   )r  r   r?   
Expressionr  r  r  )r  exprrestoreds      r:   #test_expression_serialization_arrowr  f  s[    )+E2$.... &&}':':4'@A{{8$$$$ 3rD   c                     [        5       n U S   nU S    HK  nUR                  U5      n[        R                  R	                  U5      nUR                  U5      (       a  MK   e   U S    H  nUR                  U5      n[        R                  R	                  U5      n[        U5      [        U5      :X  d   eUR                  U5      n[        R                  R	                  U5      nUR                  U5      (       a  M   e   [        U S   U S   5       H  u  p'UR                  U5      n[        R                  R	                  U5      n[        U5      [        U5      :X  d   eUR                  U5      n[        R                  R	                  U5      nUR                  U5      (       a  M   e   U S    H{  nUR                  U5      n[        R                  R	                  U5      nUR                  U5      n[        R                  R	                  U5      nUR                  U5      (       a  M{   e   U S   S   nUR                  U5      n[        R                  R	                  U5      nUR                  [        R                  " SS	05      5      (       d   e[        R                  " S	5      n	U	R                  / S
Q5      nU	S	:H  U	S:H  -  U	S:H  -  n
UR                  U5      n[        R                  R	                  U5      n[        U
5      [        U5      :X  d   eUR                  U5      n[        R                  R	                  U5      nUR                  U5      (       d   eg )Nr  r  r  r  r  r  r   r  r#   r:  r$   r"   )
r  to_substraitr?   r  from_substraitr  r  r   r   r  )exprsr  r  
serializedr   serialized_againdeserialized_again	expr_normr  r   targets              r:   'test_expression_serialization_substraitr  n  s    &'E8_F j!&&v.
}}33J?{{<(((( " g&&v.
}}33J? < CI---'44V<]]99:JK""#56666  uV}eN.CD&&v.
}}33J?< C	N222'44V<]]99:JK""#56666 E i &&v.
}}33J?'44V<]]99:JK""#56666 ! 	iA'J==//
;Lryy"a12222 			!A66)D1fa AF+F""6*J==//
;Lv;#l++++#008556FG12222rD   c                     [         R                  " S5      n [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " SSS5      n[         R                  " S	5      n[         R                  " S
S5      nX-  U:H    U) U:H    S[        R                  " 5       4 H  n	UR                  U	5      U:H    M     UR                  SS/5        UR                  SS/5        UR                  SS/5        UR                  SS/5        [        R                  " [        5         UR                  S5        S S S 5        [        R                  " [        R                  5         U[        5       :g    S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = f)Nr   r#   TFr   r^   r   r   )nestedr^   r  r   r$   r  r  )r?   r   r^   r   r  r  r  r3   r4   r5   r\  r2   )
rH  r_  truefalser   r^   nested_mixed_typesnested_fieldnested_field2r  s
             r:   test_expression_constructionr    sW   99Q<D
))A,C99T?DIIeEYYx FHHWE$3/88/0LHHXw/MJ&	EUN
#

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

1 
" 
r	' 
(	' 
"	! 
(	's   /G-G
G
G#c                  D   [         R                  " S5      n [         R                  " S5      n[        R                  " [        SS9   U =(       a    U  S S S 5        [        R                  " [        SS9   U =(       d    U  S S S 5        [        R                  " [        SS9   [        U 5        S S S 5        [        R                  " [        SS9   U (       +   S S S 5        g ! , (       d  f       N= f! , (       d  f       Nv= f! , (       d  f       NZ= f! , (       d  f       g = f)NTFz"cannot be evaluated to python Truer-   )r?   r   r3   r4   r  r   )r  r  s     r:   !test_expression_boolean_operatorsr    s    99T?DIIeE	z)M	N 
O 
z)M	N 
O 
z)M	NT
 
O 
z)M	N 
O	N 
O	N 
O	N 
O	N 
O	Ns0   C3C/ D D
C,/
C= 
D
Dc                  l   [         R                  " S5      n [        [         R                  " U 5      5      S:X  d   e[        [         R                  " U 5      5      S:X  d   e[        [         R                  " U SS95      S:X  d   e[        [         R
                  " U S5      5      S:X  d   e[        [         R
                  " U [        R                  " S5      5      5      S:X  d   eSn[        R                  " [        US	9   [         R
                  " U [        5        S S S 5        g ! , (       d  f       g = f)
Nr^   zhour(field)zround(field)r#   rO  z2round(field, {ndigits=1, round_mode=HALF_TO_EVEN})zadd(field, 1)z+only other expressions allowed as argumentsr-   )r?   r^   r  ri  rL  r   r   r   r3   r4   r5   r2   )r^   r]  s     r:   test_expression_call_functionr    s    HHWE rwwu~-/// rxx>111rxxq)*<= = = rvveQ O333rvveRYYq\*+>>> 8C	y	,
uf 
-	,	,s    D%%
D3c                     [         R                  " SSS/05      n [        R                  " [         R                  R
                  5         [        R                  " U [         R                  " 5       5        S S S 5        g ! , (       d  f       g = f)Nr   r#   r$   )	r   r  r3   r4   r  r  r?   r  r   )r  s    r:   test_cast_table_raisesr    sN    HHcAq6]#E	rvv,,	-
rxxz" 
.	-	-s   	+A==
Bzstart,stop,expectedr:  r  r&   NNr  r#   r$   ry  fixedc                    US:X  as  [         R                  " / SQ/ SQ/ SQS /[         R                  " [         R                  " 5       S5      5      R	                  [         R                  " U" 5       S5      5      nOa[         R                  " / SQSS/S/S /[         R                  " [         R                  " 5       5      5      R	                  U" U" 5       5      5      nX`XS	4nUcH  US:w  aB  S
n[
        R                  " [         R                  US9   [        R                  " U6   S S S 5        g [        R                  " U6 n	U	R	                  [         R                  " [         R                  " 5       U	R                  R                  5      5      R                  5       n
X Vs/ s H  o(       a  US S U2   OUPM     sn:X  d   eg ! , (       d  f       g = fs  snf )Nr  r:  r  r  r"   r%   r
   r&   TzZUnable to produce FixedSizeListArray from non-FixedSizeListArray without `stop` being set.r-   )r   r   r  r   r  r3   r4   r\  r?   
list_slicer   	list_sizer)  )rU   r  r  r  r  ry  r  r9   r]  r  pylistr  s               r:   test_list_slice_output_fixedr    sd    Ghh	<$Gxx	1-//3tBHHZ\14M/N 	 hh	Aq6A35xx	*,,0D:<1H,I 	 t4'D|	W,B]]2??#6MM4  76 %RXXbggi#[[224 55>Y[ 	BAq!FdF)a/BBBB 76 Cs   G G 
Gz
start,stop))r   N)r   r#   )r   r$   r  )r$   r%   c                 *   US:X  au  / SQ/ SQ/ SQS /n[         R                  " U[         R                  " [         R                  " 5       S5      5      R	                  [         R                  " U" 5       S5      5      nOc/ SQSS/S/S /n[         R                  " U[         R                  " [         R                  " 5       5      5      R	                  U" U" 5       5      5      nUS:X  a  [         R                  n[
        R                  " X`XS	S
9nUR                  U" U" 5       5      :X  d   eUR	                  [         R                  " [         R                  " 5       5      5      R                  5       nU V	s/ s H  ob  XX2   OS PM     n
n	X:X  d   eg s  sn	f )Nr  r:  r  r  r"   r%   r
   r&   Freturn_fixed_size_list)	r   r   r  r   r  r?   r  r   r)  )rU   r  r  r  ry  rd  r  r  r  r  r  s              r:   test_list_slice_output_variabler    sD    G<$?hhHHRWWY"$$(D*,)B$C 	 Aq6A3-hhtxx	*,,0D:<1H,I 	 GHH	]]3t279F;;)JL1111[["''),-779F HLLt!m/"=tHL Ms   2Freturn_fixed_sizer(  r   c                  ~    [         R                  " [         R                  " S[         R                  " 5       5      5      $ Ncolr   r  r^   r   r   rD   r:   r  r  >  s    BHHRXXeRWWY/0rD   c                      [         R                  " [         R                  " S[         R                  " 5       5      S5      $ )Nr  r#   r  r   rD   r:   r  r  ?  s     BHHRXXeRWWY/3rD   c                  ~    [         R                  " [         R                  " S[         R                  " 5       5      5      $ r  )r   r  r^   r   r   rD   r:   r  r  @  s    BMM"((5"'')45rD   c                 J   [         R                  " S//U" 5       5      n[        R                  " USSU S9nUR                  R                  S5      R                  UR                  R                  S5      R                  :X  d   eU c  UR                  UR                  :X  d   eg g )Nr#   r   r  )r   r   r?   r  r   r^   r=   )r  r   r  outs       r:   $test_list_slice_field_names_retainedr  <  s     ((QC5$&
!C
--Q:K
LC88>>!!!SXX^^A%6%;%;;;;  xx388### !rD   c                     [         R                  " S//[         R                  " [         R                  " 5       S5      5      n Sn[        R
                  " [         R                  US9   [        R                  " U SS5        S S S 5        [        R
                  " [         R                  US9   [        R                  " U SS5        S S S 5        [        R
                  " [         R                  US9   [        R                  " U SS5        S S S 5        Sn[        R
                  " [         R                  US-   S9   [        R                  " U SSSS	9  S S S 5        [        R
                  " [         R                  US
-   S9   [        R                  " U SSSS	9  S S S 5        g ! , (       d  f       GN&= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr#   z@`start`(.*) should be greater than 0 and smaller than `stop`(.*)r-   r\   r$   r   z`step` must be >= 1, got: r   )r  rt  )	r   r   r  r   r3   r4   r\  r?   r  )r  r]  s     r:   test_list_slice_bad_parametersr  K  s0   
((QC5"((2779a0
1C
MC	rc	2
c2q! 
3	rc	2
c1a  
3 
rc	2
c1a  
3 'C	rcCi	8
c1aa( 
9	rcDj	9
c1ab) 
:	9 
3	2	2	2 
3	2
 
9	8	9	9s<   'F+F1/G8G>G$
F.1
F?
G
G!$
G2c                     / SQn[         R                  " X S9n[        R                  " X1S9n[        R                  " U5      nUR
                  UR
                  :X  d   eUR                  U5      (       d   eg )N)r#   r#   r#   r$   r$   r#   r#   r#   r#   r#   r"   r"   r"   r"   r"   r"   r"   r"   r"   r0  r  )r   r   r?   run_end_encoderun_end_decoder   r  )r  run_end_encode_optsrJ   r  encodeddecodeds         r:   check_run_end_encode_decoder  _  s`    FF
((6
+CAG(G<<388###>>#rD   r   c                     [        X5        g r   )r  )r  r   s     r:   test_run_end_encoder  h  s    4  
3rD   c                     [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  R                  U SS9nUR	                  U5      (       d   e[         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  R                  U SS9nUR	                  U5      (       d   e[         R                  " / SQ[         R
                  " 5       S9n [         R                  " / SQ[         R
                  " 5       S9n[         R                  R                  U S	S9nUR	                  U5      (       d   e[         R                  " / SQ[         R                  " 5       S9n [         R                  " / S
Q[         R                  " 5       S9n[         R                  R                  U S	S9nUR	                  U5      (       d   e[         R                  " / SQ[         R                  " 5       S9n [        R                  " [         R                  SS9   [         R                  R                  U S	S9  S S S 5        g ! , (       d  f       g = f)N)r#   r$   r"   Nr%   r
   )Nr#   r#   NNr#   r#   re   )NNr$   Nr#   Nr$   r0  )r\   r\   NNr\   Nr\   )   r  NNr  Noverflowr-   )r   r   r  pairwise_diffr  r   r	   r3   r4   r\  pairwise_diff_checkedr  s      r:   test_pairwise_diffr    s   
(((
)Cxx34HZZ%%c!%4F==""""
(((
)Cxx67HZZ%%c!%4F=="""" (((rwwy
9Cxx6RWWYGHZZ%%c"%5F=="""" (((rxxz
:Cxx9
KHZZ%%c"%5F=="""" (((rxxz
:C	r'
)


((R(8
) 
) 
)s   .I
I$c                     SS/n [         R                  " / SQ/ SQ5      nUR                  5       0 :X  d   e[         R                  " / SQ/ SQU 5      nUR                  5       S SS.:X  d   e[        UR                  5       5      SS/:X  d   e[         R                  " / SQ/ SQU S9nUR                  5       S SS.:X  d   e[        R
                  " [        SS	9   [         R                  " / SQ/ SQU S
S9nS S S 5        [        R
                  " [        SS	9   [         R                  " / SQ/ SQU S9nS S S 5        g ! , (       d  f       NK= f! , (       d  f       g = f)Nrg  rj   )rj   rg  depth)r   Nrr  r   )rg  rj   )	key_nameszUnexpected pivot key: depthr-   rk   )r!  rl   z(Encountered more than one non-null value)rj   rg  rj   )r?   pivot_widerr3  r  r3   r4   KeyErrorr  )r!  r  s     r:   test_pivot_widerr$    s    (#I^^8.IF<<>R^^8.%'F<<>tr::::GX#6666^^8.&/1F<<>tr::::	x'D	E <n*38?A 
F
 
z)S	T =~*35 
U	T 
F	E
 
U	Ts   D9E
9
E

Ec                     [         R                  " / SQ5      n [        R                  " U SS5      nUR	                  5       / SQ:X  d   e[        R                  " U [        R
                  " SSS9S9nUR	                  5       / SQ:X  d   eg )N)
r   r%   r'   r   r
   r"   r`  r$   r#   r&   r   g?)
r   r%   r   r   r
   r"   r`  r$   r$   r&   )lower_limitupper_limitr  )r   r   r?   	winsorizer)  r   r  s     r:   test_winsorizer)    st    
((2
3C\\#sC(F!????\\R((ScJLF!????rD   )r#   r   )collectionsr   r  r?  	functoolsr   r   rG   r  r  r  r3   r  r7  r  numpyr  ImportErrorpandasr:  r   r   pyarrow.computer  r?   pyarrow.libr   pyarrow.substrait	substraitpasr  __dict__rc  r]  r/   r   r   r   
issubclassrF   r   r   r   r	   r   r   r  r  numerical_arrow_typesr  r   r  r  r  all_array_typesr;   rC   rQ   markfilterwarningsr   r   r   r   r   r   r  r  r  r   r&  r,  parametrizer5  rB  rD  rI  rM  rO  rX  rZ  r^  re  rm  rp  rl  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  unknown_issue_is_alphautf8proc_issue_is_lowernumeric_info_missingdigit_info_missingr[  rc  rp  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r	  r  r  r  r$  r1  r8  r?  rD  rG  rK  rf  ru  rx  r  r  r  r  r  r  r  r  r  r  date32date64r  r  r  r  r  r  decimal_type_traitsr  r  r  r  r  r  r  r  r  r*  r   rE  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-  r0  r2  r7  rG  rK  rR  r\  rc  rl  rp  rt  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   float16r   r  r  r$  r)  )r=   r7   rN   s   000r:   <module>rC     s  $ #   (    	   
    0#
 $BKK$5$5$7848\dt12 	84 
 ""++"3"3"56.6KT3 2%%%  	3**+ 6.  GGIHHJHHJHHJIIKIIKJJLJJL	  -.eAhU1XuQxeAhuQxeAhuQ|eArl%&&',-01YYq\;<XXbggiAq6Aq6Aq64!RAB]]288:!i!Q2w GHYYbggi 3	"234a$aa 0$aa8H7J K#,40	9 BbBbBJ( )*JFI5
3
 $ $=	%	> '<=1 >1* a(;R]]1a=P'QR'; S';T '<=1 >1, a(;R]]1a=P'QR&? S&?R9<"")46: *#01]]#56	8
 &--(:;NOWt./- ::"'2"####,L.0###< D6&76(bJ;D   !&) . 4 3 ".  %'99&"&'   +E F
 Wf$56F 7FF(C$P> 8 804#''E9< )?; <2"##L UDM2* 3*3 )?;# <#(#"#:	1 )?; <, )?;D < D,&#(,&02 / :;? <?< / :;!9 <!9H / :; 9 < 9F' ### )<=>- ?-8 L L$ < <6F"#:"#: '<=# >#( '<=# >#8',?	F$3N 		RYY['AB+ C+ '<= >< 2CE    4 CE  )bllAF(bllBG(r}}bI(r}}bIK  CCF.0 bjjl^=':-  /)>:<> >	  ?
/?/ > / bjjlBJJL%AsK)+>-  /;A/ L ;A|G8 HA  HAVPIf = =<1 !89	# :	# W&  W&te8P  "E F9 F 96
(6A*'F&LR0Of8&.6!AHI =*(.V-$.,D "56}515 6 7 15h "56}516 6 7 16h /2}545 6 3 45n /2}545 6 3 45n3&5$'JA#$N6	+'6  "#"#$%$%'##1B/<*0HZ % % :3  :3z8$,# .y,>?QC!qc4 !QFQFQIt,-QC!tfd#$QId|dD\4891  (		288RZZ'HIrxx&HIC J J )C,  (  (		288RZZ'HIrxx&HI J J )4 ,.AB035"7 8$	8 C
$*( 
	















Q
Q
a
a  
rxxz*
w'
rxxz*	4!249<54@y|  	B
  	B  
C4.sm   A@ A@% A@4 ;AAAA AA	AA	)AA	AA	@A@"@!A@"@%A@1@0A@1@4AA @?AA 