
    g,                    ,   d dl mZ d dlZd dlZd dlmZmZ d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZ	 d dlZ	 d dlZd dlZd dlmZ d dlmZ 	 d dlmZ  eej>                  jA                               D  cg c]  \  } } e!|d      r| c}} Z" eej>                  jA                               D  cg c]1  \  } } e#|e$      r#|ejJ                  ur e&|ejJ                        r|3 c}} Z' ejP                          ejR                          ejT                          ejV                          ejX                          ejZ                          ej\                          ej^                         gZ0dg dfd e1d	      fd
 e1d	      fd e1d	      fd e1d	      fd e1d	      fd e1d	      fd e1d	d      fd e1d	d      fdg dfdg dfdg dfdg df ejd                  d      g df ejf                   ejP                               ddgddgd	dgddd ggf ejh                   ejR                               dgg d!d	dgddd ggf ejj                  d" ejP                         fd# ejP                         fg      ddd$dddd$dd	dd$gfgZ6d% Z7d& Z8d' Z9ejt                  jw                  d(      d)        Z<d* Z=	 dd+Z>d, Z?d- Z@d. ZAd/ ZBejt                  j                  d0        ZCd1 ZDd2 ZEd3 ZFd4 ZGejt                  j                  d5e0      d6        ZIejt                  j                  d5e0      d7        ZJd8 ZKd9 ZLd: ZMd; ZNd< ZOd= ZPd> ZQd? ZRd@ ZSdA ZTdB ZUdC ZVdD ZWdE ZXdF ZYdG ZZdH Z[dI Z\dJ Z]dK Z^dL Z_dM Z`dN Za e       dO        ZbdPdQhZch dRZdh dSZeh dTZfh dUZeeeefz  ecz  ecefeeeddVZgejt                  j                  dWg dX      ejt                  j                  dYdZd[g      d\               Zhd] Ziejt                  j$                  d^        Zjd_ Zkd` Zlda Zmdb Zndc Zoejt                  j                  dde6      de        Zpdf Zqdg Zrejt                  j                  dhdidjg      dk        Zsdl Ztejt                  j                  dde6      dm        Zudn Zvdo Zwdp Zxdq Zyejt                  j                  dde6      dr        Zzejt                  j                  ejt                  j                  dde6      ds               Z{dt Z|du Z}dv Z~dw Zdx Zejt                  j                  dydzd{g      d|        Zejt                  j                  dydzd{g      d}        Zejt                  j                  dydzd{g      d~        Zd Zd Zd Zd Zejt                  j                  dddg      d        Zejt                  j                  d        Zejt                  j                  d        Zd Zd Zd Zd Zejt                  j                  d5e0      d        Zejt                  j                  d5e0      d        Zd Zd Zd Zejt                  j                  d ej(                          ej*                         g      d        Zejt                  j                  de0      d        Z edd      Z edd      Z edej4                  d       edej6                  d      gZd Zd Zd Zd Zd Zd Zejt                  j                  ejt                  j                  d ej^                         ge      ejt                  j                  ded       ejt                  j                  deeegg d      d                             Zejt                  j                  ejt                  j                  d ej\                          ej^                         ge      ejt                  j                  ded       d                      Zd Zejt                  j$                  ejt                  jN                  d               ZddZejt                  j$                  d        Zejt                  j                  dg d      d        Zejt                  j$                  ejt                  jN                  d               Zd Zejt                  jN                  ejt                  j                  dd      ejt                  j$                  d                      Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdÄ ZdĄ Zdń ZdƄ ZdǄ Zejt                  j                  ejt                  j                  ddɫ      ejt                  j                  dd˫      d̄                      Zejt                  j                  ejt                  j                  ddɫ      ejt                  j                  dd˫      d̈́                      Zejt                  j                  ejt                  j                  ddΫ      ejt                  j                  dd˫      dτ                      Zejt                  j                  ejt                  j                  ddΫ      ejt                  j                  dd˫      dЄ                      Zdф Zd҄ Zdӄ ZdԄ ZdՄ Zdք Zdׄ Zd؄ Zdل Zejt                  j                  ddg dܢfdg dޢfdg dfdg dfg      d        Zd Zd Zejt                  j                  d        Zejt                  j                  ejt                  j8                  d               Zd Zd Zd Zd Zejt                  j                  dd dg dg dg ddgfd ddgdgdgdgfd dddgdd	gddgdgfdddgd	gdgdgfddddgddgddgdgff      ejt                  j                  dd      ejt                  j                  dej                  ejR                  ej^                  f      ejt                  j                  dejf                  ejh                  df      d                             Zejt                  j                  dd      ejt                  j                  dd      ejt                  j                  dej                  ejR                  ej^                  f      ejt                  j                  dejf                  ejh                  df      d                             Zejt                  j                  dd      ejt                  j                  dd d d f      d               Zd Zِdd Zڐd Zېd Zy# e$ r dZY .w xY w# e$ r dZY 7w xY w# e$ r dZY .w xY wc c}} w c c}} w (      )
namedtupleN)	lru_cachepartial)ArrowNotImplementedError__arrow_compute_function__bool)TFFTTuint8   int8uint16int16uint32int32uint64
   int64float)r   皙?皙?g333333?皙?doublestring)abNdddeebinary)   a   b   cs   ddds   ee   )s   abcs   bcds   cdes   defs   efg            	      )r#   r!   r$   r   r   r   r   c                  ,   t         } t        |       dk\  sJ | D ]m  }|j                  }|d   r|d   }|dk(  r |t        u rt	               gdz  }nt	               g|z  }t        j                  t        d      5   ||  d d d        o y # 1 sw Y   zxY w)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        O/var/www/openai/venv/lib/python3.12/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   9B

B	c                      t         D ]5  } t        j                  | j                  d         }|j                  dk7  r5J  y )Nnamehash_aggregate)r.   pcget_functionr   kind)r6   arrow_fs     r9    test_hash_aggregate_not_exportedrB   x   s:     #//$"A"A&"IJ||//// #    c                      t         } t        |       dk\  sJ | D ]\  }t        j                  |      }|j                  j                         D ](  }|j                  |j                  |j                  fvr(J  ^ y )Nr   )	exported_option_classesr/   inspect	signature
parametersvaluesr@   VAR_POSITIONALVAR_KEYWORD)classesclssigparams       r9   test_exported_option_classesrP      sx    %Gw<2 $^^**,E::e&:&:&+&7&7&9 9 9 9 -	 rC   z<ignore:pyarrow.CumulativeSumOptions is deprecated as of 14.0c           
      p   g t        j                         t        j                  d      t         j                  j	                  t        j                               t        j                         t        j                  dd      t        j                         t        j                         t        j                  d      t        j                  d      t        j                         t        j                  t        j                  d            t        j                          t        j"                  dd	dd      t        j$                  d
      t        j&                  ddgddgt        j(                  ddi      t        j(                  ddi      g      t        j*                  t        j                  d      d      t        j,                  d      t        j.                         t        j0                         t        j2                  d      t        j4                  d      t        j6                  dd      t        j8                  d d      t        j:                         t        j<                         t        j>                  ddd      t        j@                  ddd      t        jB                  dd      t        jD                  dd      t        jF                  d      t        jH                  ddd      t        jJ                  dd      t        jL                         t        jN                  dd g!      t        jP                  t        jR                  dg            t        jT                  ddd      t        jV                  d"gd      t        jX                         t        jZ                  d      t        j\                         t        j^                  d#d$d      t        j`                  g %      t        jb                         t        jd                         t        jf                  d&      t        jh                  d'      t        jj                         t        jl                  ddd(      }| jn                  jp                  jr                  d)   r$|ju                  t        j                  d*             |D ch c]  }tw        |       }}tx        D ]V  }||vs| jn                  jp                  jr                  d)   s,|t         j                  k7  s@	 |ju                   |              X |D ]  }||k(  sJ t        |      j                  |j                  j                        sJ |j                         }t         j                  j                  |      }||k(  sJ t        |      j                  d,      rt        |      j                  d-      rJ t        |      t        |      k(  rJ  t        ||dd        D ]  \  }}||k7  rJ  t        t        j                  t        j                  d                  d.k(  sJ t        t        j                               d/k(  sJ y c c}w # tz        $ r t}        j~                  d+|        Y w xY w)0NUTCFr   count_from_zero
week_startT
skip_nullspatternr"   )	recursivefieldnamesr   1r   2)field_nullabilityfield_metadatafirstr
   periodat_startnull_placementstartrW   	ascendingmax	sort_keysrf   
tiebreakerr#   towards_infinitysecond)week_starts_mondayd   r   ri   rl   dummy
descending%Ysindices NFKCrp   rT   first_week_is_fully_in_yeartimezone_dataEurope/LjubljanazOptions class is not tested: CumulativeSumOptionsCumulativeOptionszIndexOptions(value=int64:1)z7ArraySortOptions(order=Ascending, null_placement=AtEnd))Hr>   ArraySortOptionsAssumeTimezoneOptionsCastOptionssafepar   CountOptionsDayOfWeekOptionsDictionaryEncodeOptionsRunEndEncodeOptionsElementWiseAggregateOptionsExtractRegexOptionsFilterOptionsIndexOptionsscalarJoinOptionsListSliceOptionsListFlattenOptionsMakeStructOptionsKeyValueMetadataMapLookupOptionsMatchSubstringOptionsModeOptionsNullOptions
PadOptionsPairwiseOptionsPartitionNthOptionsr   QuantileOptionsRandomOptionsRankOptionsReplaceSliceOptionsReplaceSubstringOptionsRoundOptionsRoundBinaryOptionsRoundTemporalOptionsRoundToMultipleOptionsScalarAggregateOptionsSelectKOptionsSetLookupOptionsarraySliceOptionsSortOptionsSplitOptionsSplitPatternOptionsStrftimeOptionsStrptimeOptionsStructFieldOptionsTakeOptionsTDigestOptionsTrimOptionsUtf8NormalizeOptionsVarianceOptionsWeekOptionsconfigpyarrow
is_enabledappendtyperE   r4   r2   failrepr
startswith	__class____name__	serializeFunctionOptionsdeserializezip)	requestoptionsoptionrL   rM   bufdeserializedoption1option2s	            r9   test_option_class_equalityr      sv   6
6
  '6 	BGGI&6 		6
 	Ea@6 	""$6 	 6 	&&$76 	y)6 	6 			!%6 	6 	Ar1d+6 	.6 	gw/04d|-/-@-@#s-L-/-@-@#s-L-N	O6& 	BIIaL'2'6( 	  +)6* 	+6, 	-6. 	a/60 	!$162 	q<364 	4E:566 	768 	96: 	&0U	D;6> 	q!S)?6@ 	""3,A6B 	-.C6D 	01E6F 	8EG6H 	!!#'9:I6J 	!!#K6L 	!(:';<M6N 	BHHaSM*O6P 	1a Q6R 	/0LS6T 	U6V 	y)W6X 	Y6Z 	4d+[6\ 	b)]6^ 	_6` 	a6b 	sc6d 	'e6f 	g6h 	$38	:i6Gp ~~((9r//0BCD*12'tF|'G2& w''22?Cr///Csu% ' F|&&v'7'7'@'@AAA ))55c:%%% <""#9:%001DEEE<4#5555   5'!!! 6 		!-.2OOOO##%&AB B B= 3  C;C5ABCs   Z8Z!Z54Z5c                  x    t        t        j                               dkD  sJ dt        j                         v sJ y )Nr   add)r/   r>   list_functions rC   r9   test_list_functionsr      s5    r  "#b(((B%%''''rC   c                     t        j                  |       }t        ||      sJ |j                  }||k\  sJ |t	        |j
                        k(  sJ t        fd|j
                  D              sJ y )Nc              3   6   K   | ]  }t        |        y wN)
isinstance).0kerexpected_ker_clss     r9   	<genexpr>z&_check_get_function.<locals>.<genexpr>   s     ILSz#/0Ls   )r>   r?   r   num_kernelsr/   kernelsall)r<   expected_func_clsr   min_num_kernelsr6   ns     `   r9   _check_get_functionr      sj    ??4 Dd-...ADLL!!!!IDLLIIIIrC   c                  X    t        dt        j                  t        j                  d       y )Nr      )r   r>   ScalarFunctionScalarKernelr   rC   r9   test_get_function_scalarr      s    r00"//1ErC   c                  X    t        dt        j                  t        j                  d       y )Nuniquer   )r   r>   VectorFunctionVectorKernelr   rC   r9   test_get_function_vectorr      s    ""3"3R__aHrC   c                  X    t        dt        j                  t        j                  d       y )Nmeanr   )r   r>   ScalarAggregateFunctionScalarAggregateKernelr   rC   r9   "test_get_function_scalar_aggregater     s     : :00!5rC   c                  X    t        dt        j                  t        j                  d       y )Nhash_sumr"   )r   r>   HashAggregateFunctionHashAggregateKernelr   rC   r9    test_get_function_hash_aggregater   	  s    
B$<$<..3rC   c                     t        j                  g d      } t        j                  g d      }| j                  |      }t	        j
                  d| |gt        j                               }t        j                  g d      }|j                  |      sJ |j                  |      sJ t	        j                  | |t        j                               }|j                  |      sJ y )N)foobarbaz)r#   r#   r"   take)memory_pool)r   r   r   )r   r   npr   r>   call_functiondefault_memory_poolequals)arrrz   result1result2expectedresult3s         r9   #test_call_function_with_memory_poolr    s    
(((
)Chhy!GhhwGvW~+-+A+A+CEGxx-.H>>(###>>(###ggc70F0F0HIG>>(###rC   c                 r   t        j                         D ]  }t        j                  |      }| j                  | j	                  |            }t        |      t        |      u sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  rJ  y r   )	r>   r   r?   loadsdumpsr   r<   r+   r   pickle_moduler<   r6   reconstructeds       r9   test_pickle_functionsr    s    !!#t$%++M,?,?,EFM"d4j000!!TYY...""djj000((D,<,<<<< $rC   c                     t        j                         D ]9  }	 t        t         |      }| j	                  | j                  |            }||u r9J  y # t        $ r Y Hw xY wr   )r>   r   getattrAttributeErrorr  r  r  s       r9   test_pickle_global_functionsr  (  se    !!#	2t$D &++M,?,?,EF$$$ $  		s   A	AAc                  h   t        j                         D ]  } t        j                  |       }t        |t         j                        sJ |j
                  | k(  sJ |j                  }|j                  t        |      k(  sJ t        d |D              sJ t        |       |D ]  }t        |         y )Nc              3   P   K   | ]  }t        |t        j                           y wr   )r   r>   Kernel)r   r   s     r9   r   z+test_function_attributes.<locals>.<genexpr><  s     A#:c299-s   $&)r>   r   r?   r   Functionr<   r   r   r/   r   r   )r<   r6   r   r   s       r9   test_function_attributesr  4  s    !!#t$$,,,yyD   ,,3w<///AAAAAT
CI  $rC   c                     t        j                  ddgdd g      } | j                         dd gk(  sJ t        j                  ddgd      } | j                         ddgk(  sJ t        j                  g dd      j                         g dk(  sJ y )	Nr"   r#   r$   r
   r%   )r   r   Nr   TFN)r>   r   	to_pylistequalr   s    r9   test_input_type_conversionr  B  s    
&&!Q!T
#C==?q$i'''
&&!Q
C==?q!f$$$88($9;*=> > >rC   
arrow_typec                    t        j                  g d|       }|j                         j                         dk(  sJ t	        j                  |      j                         dk(  sJ t        j                  g d|       }|j                         j                         dk(  sJ t	        j                  |      j                         dk(  sJ t        j                  d g|       }|j                         j                         J t	        j                  |      j                         J |j                  d      j                         dk(  sJ t	        j                  |d      j                         dk(  sJ t        j                  g |       }|j                         j                         J |j                  d      j                         dk(  sJ t	        j                  |d      j                         dk(  sJ y )Nr"   r#   r!   r$   r   r   r"   r#   r!   r$   Nr   	min_count)r   r   sumas_pyr>   r  r   s     r9   test_sum_arrayr%  N  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0rC   c                 |   t        j                  t        j                  g d|       g      }t        j                  |      j                         dk(  sJ t        j                  t        j                  ddg|       t        j                  ddg|       g      }t        j                  |      j                         dk(  sJ t        j                  t        j                  ddg|       t        j                  g |       t        j                  ddg|       g      }t        j                  |      j                         dk(  sJ t        j                  d|       }|j                  d	k(  sJ t        j                  |      j                         J t        j                  |d	
      j                         d	k(  sJ y )Nr  r  r   r"   r#   r!   r$   r   r   r   )r   chunked_arrayr   r>   r"  r#  
num_chunksr$  s     r9   test_sum_chunked_arrayr)  d  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0rC   c                     t        j                  g dd      } t        j                  |       }t	        |      dk(  sJ |d   j                         dddk(  sJ t        j                  | d      }t	        |      dk(  sJ |d   j                         dddk(  sJ |d   j                         d	ddk(  sJ t        j                  g d      } t	        t        j                  |             dk(  sJ t        j                  g d
d      } t        j                  | d      }t	        |      dk(  sJ t        j                  | d      }t	        |      dk(  sJ t        j                  | dd      }t	        |      dk(  sJ t        j                  ddg      } t        j                  | d      }t	        |      dk(  sJ |d   j                         dddk(  sJ |d   j                         dddk(  sJ y )Nr"   r"   r!   r$   r!   r
   r   r  r"   r   r#   modecountr   r!   )r"   r"   r!   r$   r!   NFrV   r%   r   r
   rW   r!  T)r   r   r>   r-  r/   r#  r   r-  s     r9   test_mode_arrayr2  {  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8rC   c                  .   t        j                  t        j                  g dd      g      } t        j                  |       }t        |      dk(  sJ |d   j                         dddk(  sJ t        j                  | d      }t        |      dk(  sJ |d   j                         dddk(  sJ |d   j                         d	ddk(  sJ t        j                  d
d      } | j                  dk(  sJ t        t        j                  |             dk(  sJ y )Nr+  r   r  r"   r   r#   r,  r/  r!   r   )r   r'  r   r>   r-  r/   r#  r(  r1  s     r9   test_mode_chunked_arrayr4    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|!!!rC   c                      d} t        j                  t        j                  |       5  t        j                  g        d d d        t        j                  g t        j
                                y # 1 sw Y   3xY w)Nz@cannot construct ChunkedArray from empty vector and omitted typer,   r  )r2   r3   r   ArrowInvalidr'  r   )msgs    r9   test_empty_chunked_arrayr8    sM    
LC	rc	2
 
3 Rbggi( 
3	2s   A00A9c                     g d} t        j                  |       j                         dk(  sJ t        j                  | d      j                         dk(  sJ t        j                  | d      j                         dk(  sJ y )N)r"   r#   r!   r$   r
   r%      r   g      @r   )ddofr"   g      @)r>   variancer#  datas    r9   test_variancer?    sk    #D;;t""$,,,;;t!$**,444;;t!$**,333rC   c                     t        j                         t        j                         ft        j                         t        j                         ffD ]  \  } }t        j
                  g d|       }t        j                  |d      }t        j
                  g d|      }||k(  sJ t        j                  |dd      }t        j
                  g d|      }||k(  rJ  y )N)abcababcabbaABNr  rA  )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        r9   test_count_substringrN    s    ))+rxxz2//+RXXZ8:Vhh?bI##C.881?6!!!##C4@881?6!!!:rC   c                     t        j                         t        j                         ft        j                         t        j                         ffD ]  \  } }t        j
                  g d|       }t        j                  |d      }t        j
                  g d|      }|j                  |      sJ t        j                  |dd      }t        j
                  g d|      }|j                  |      rJ  y )N)rA  rB  baAacaarD  rE  Nr  za+)r"   r"   r!   r"   r   NTrF  )r"   r"   r#   r"   r"   N)	r   r   r   rH  r   r   r>   count_substring_regexr   rJ  s        r9   test_count_substring_regexrR    s    ))+rxxz2//+RXXZ8:VhhAK))#t4881?v&&&))#tF881?v&&&:rC   c                  ~   t        j                         t        j                         t        j                         t        j                         fD ]  } t        j
                  g d|       }t        j                  |d      }|j                         g dk(  sJ t        j                  |d      }|j                         g dk(  sJ t        j
                  g d|       }t        j                  |dd	
      }|j                         g dk(  sJ t        j                  |dd	
      }|j                         g dk(  rJ  y )N)rA  rB  rD  Nr  rA  )r   r"   rY   Nza?b)r   r"   r   N)zab*zcAB*rD  zaB?zaB*TrF  )r   r"   rY   rY   )r   r"   r   r   )
r   r   r   rH  large_binaryr   r>   find_substringr  find_substring_regex)rK  r   rM  s      r9   test_find_substringrW    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rC   c                     t        j                  g d      } t        j                  | d      }t        j                  g d      }|j	                  |      sJ t        j                  g d      } t        j                  | dd      }t        j                  g d      }|j	                  |      sJ t        j                  | dd      }t        j                  g d      }|j	                  |      sJ y )	N)rA  zba%rD  ca%dNz_a\%%)FTFTN)aBzbA%rD  rY  NTrF  F)FFFTN)r   r   r>   
match_liker   r   rM  r  s      r9   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"""rC   c                     t        j                  g d      } t        j                  | d      }t        j                  g d      }|j	                  |      sJ t        j                  g d      } t        j                  | dd      }t        j                  g d      }|j	                  |      sJ t        j                  | dd      }t        j                  g d	      }|j	                  |      sJ y )
N)rA  abcrD  NrA  TTFN)u   áBu   ÁbcrD  Nu   ábTrF  F)FFFN)r   r   r>   match_substringr   r\  s      r9   test_match_substringrb    s    
((,
-CT*Fxx12H??6"""
((.
/CU=Fxx12H??6"""U>Fxx34H??6"""rC   c                     t        j                  g d      } t        j                  | d      }t        j                  g d      }|j	                  |      sJ t        j                  g d      } t        j                  | dd      }t        j                  g d      }|j	                  |      sJ t        j                  | dd      }t        j                  g d      }|j	                  |      sJ y )	N)rA  r_  rD  cNz^a?b)TTTFN)rZ  AbcBArd  NTrF  F)FFFFN)r   r   r>   match_substring_regexr   r\  s      r9   test_match_substring_regexrh    s    
((1
2C%%c62Fxx78H??6"""
((1
2C%%c6tDFxx78H??6"""%%c6uEFxx:;H??6"""rC   c                     t        j                  g d      } t        j                  |       }t        j                  g d      }|j	                  |      sJ t        j                  g d      } t        j
                  |       }t        j                  g d      }|j	                  |      sJ t        j                  g d      } t        j                  | d      }t        j                  g d      }|j	                  |      sJ t        j                  | d      }t        j                  g d      }|j	                  |      sJ y )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      r9   	test_trimrq    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"""rC   c                     t        j                  g d      } t        dd      D ]  }t        j                  t        dd      d g      D ]  }dD ]  }t        j                  | D cg c]  }|j                         |||    c}      }t        j                  | |||      }|j                  |      sJ t        j                  | |||      |k(  rJ    y c c}w )N) u   𝑓u   𝑓öu   𝑓öõu   𝑓öõḍu   𝑓öõḍšr%   )rY   r"   r#   r!   rh   stopstep)	r   r   range	itertoolschainr#  r>   utf8_slice_codeunitsr   )r   rh   rx  ry  kr  rM  s          r9   test_slice_compatibilityr  )  s    
((U
VCr1OOE"aL4&9D-88.1%3.1 &'WWYuT$%?.1%3 400u4d<v.....s/4dDBEKL L L . : %3s   #Cc            
         g d} t        j                  |       }t        j                  t	        dd      t	        dd      t	        dd            D ])  \  }}}|dk(  rt        j                  |D cg c]  }|j                         |||    c}      }t        j                  ||||      }|j                  |      sJ t        j                  ||||      |k(  sJ | D ]  }t        j                  |t        j                  t        |                  }	||||   }t        j                  |	|||      }
|
j                  t        j                  t        |            k(  sJ |
j                         |k(  rJ  , y c c}w )	N)rC   r   s   as   ab s   abcs   abdert  r%   ru  r$   r   rw  r  )r   r   r{  productrz  r#  r>   binary_slicer   r   r   r/   r   )r>  r   rh   rx  ry  r~  r  rM  item
fsb_scalaractuals              r9   test_binary_slice_compatibilityr  8  sY   DD
((4.C&..uR|/4R|/4R|=tT 1988&)+&) WWYuT$7&)+ ,u4d4v&&&sE46&@@@D4biiD	.BCJE$tO,H__ZdCF;;"))CM"::::<<>X--- =
+s   0E=
c                     t        j                  ddg      } t        j                  | d      }t        j                  ddgg dg      }|j	                  |      sJ t        j                  | dd	      }t        j                  ddgd
dgg      }|j	                  |      sJ t        j                  | ddd      }t        j                  ddgddgg      }|j	                  |      sJ y )N-foo---bar--
---foo---b---rX   z-foozbar--rs  r   r   r"   
max_splitsrs  foo---bTr  reversez---foor   )r   r   r>   split_patternr   r\  s      r9   test_split_patternr  P  s    
((NL1
2Cc51Fxx&'*,<=>H??6"""c5Q7Fxx&'*RO<=H??6"""c5QEFxx&'*XsO<=H??6"""rC   c                     t        j                  ddg      } t        j                  |       }t        j                  ddgg dg      }|j	                  |      sJ t        j                  | d      }t        j                  ddgdd	gg      }|j	                  |      sJ t        j                  | dd
      }t        j                  ddgddgg      }|j	                  |      sJ y )Nrk      foo  　	br   r   r  r"   r  rs  
   foo  　	bTr  rj  r   )r   r   r>   utf8_split_whitespacer   r\  s      r9   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"""rC   c                     t        j                  ddg      } t        j                  |       }t        j                  ddgg dg      }|j	                  |      sJ t        j                  | d      }t        j                  ddgdd	gg      }|j	                  |      sJ t        j                  | dd
      }t        j                  ddgddgg      }|j	                  |      sJ y )Nrk  r  r   r   )rs  r   u   　r   r"   r  rs  r  Tr  u	    foo  　r   )r   r   r>   ascii_split_whitespacer   r\  s      r9   test_split_whitespace_asciir  n  s    
((I01
2C&&s+Fxx%)CDEH??6"""&&sq9Fxx%".>)?@AH??6"""&&sq$GFxx%.#)>?@H??6"""rC   c                     t        j                  ddg      } t        j                  | d      }t        j                  g dg dg      }|j	                  |      sJ t        j                  | dd      }t        j                  d	d
gd	dgg      }|j	                  |      sJ t        j                  t        d      5  t        j                  | ddd      }d d d        y # 1 sw Y   y xY w)Nr  r  z-+r  )rs  r   r   rs  r  r"   r  rs  zfoo---bar--r  z"Cannot split in reverse with regexr,   r  T)rX   r  r  )r   r   r>   split_pattern_regexr   r2   r3   NotImplementedErrorr\  s      r9   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!!C*c                     g d} t        j                  |       }|j                         dddk(  sJ t        j                  | t        j                               }|j                         dddk(  sJ t        j                  | t        j                  d            }|j                         dddk(  sJ t        j                  | t        j                  d            }|j                         d d dk(  sJ t        j                  | d	di      }|j                         d d dk(  sJ t        j                  | d      }|j                         d d dk(  sJ t	        j
                  t              5  t        j                  | t        j                         d
      }d d d        t        j                         }t	        j
                  t              5  t        j                  | |      }d d d        t	        j
                  t        d      5  t        j                         }d d d        y # 1 sw Y   xY w# 1 sw Y   NxY w# 1 sw Y   y xY w)N)r$   r
   r%   Nr"   r"   r%   )minrj   r   TrV   FrW   )r   rW   zmin_max takes 1 positionalr,   )r>   min_maxr#  r   r2   r3   r4   r   )r>  rx   r   s      r9   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	!JJtW- 
" 
y(D	EJJL 
F	E 
"	! 
"	! 
F	Es$   2+H+H7I+H47I Ic                     t        j                  dd      } t        j                  g d      }t        j                  |      j                         J t        j                  |d      j                         du sJ t        j                  ||       j                         du sJ t        j                  g d      }t        j                  |      j                         d	u sJ t        j                  ||       j                         d	u sJ t        j                  g d
      }t        j                  |      j                         du sJ t        j                  ||       j                         J y )NFr   r0  r   r  r   r  )FNTT)FNF)r>   r   r   r   anyr#  r   r   s     r9   test_anyr    s    ''5AFG
&!A66!9??$$$66!q!'')U22266!W%++-666
$%A66!9??$$$66!W%++-555
%&A66!9??%%%66!W%++-555rC   c                     t        j                  dd      } t        j                  g d      }t        j                  |      j                         J t        j                  |d      j                         du sJ t        j                  ||       j                         du sJ t        j                  ddg      }t        j                  |      j                         du sJ t        j                  ||       j                         du sJ t        j                  dd g      }t        j                  |      j                         du sJ t        j                  ||       j                         J t        j                  dgdd gg      }t        j                  |      j                         du sJ t        j                  ||       j                         J t        j                  dgdgg      }t        j                  |      j                         du sJ t        j                  ||       j                         du sJ y )	NFr   r0  r   r  r   Tr  )r>   r   r   r   r   r#  r'  r  s     r9   test_allr    s    ''5AFG
&!A66!9??$$$66!q!'')T11166!W%++-555
%A66!9??%%%66!W%++-666
$A66!9??$$$66!W%++-555
4&4,/0A66!9??$$$66!W%++-555
4&5'*+A66!9??%%%66!W%++-666rC   c                      g d} t        j                  |       j                         g dk(  sJ t        j                  t
              5  t        j                  | d        d d d        y # 1 sw Y   y xY w)Nr$   r
   N)TTFr  )r>   is_validr  r2   r3   r4   r=  s    r9   test_is_validr    sN    D;;t&&(,????	y	!
D$' 
"	!	!s   A))A2c                     t         j                  j                  t        j                  d      k(  sJ t         j
                  j                  t        j                  d      k(  sJ t         j                  j                  t        j                  d      k(  sJ t         j                  j                  t        j                  d      k(  sJ y )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   rC   r9   test_generated_docstringsr    s    :: 2 "   , 66>>X__ .    " &&(// ; +   $ 99 '1 '! ' ' 'rC   c                  h   t        j                  t        j                        } t	        |       dk(  sJ t        j                  t        j
                        } t	        |       dk(  sJ t        j                  t        j                        } t	        |       dk(  sJ t        j                  t        j                        } t	        |       dk(  sJ t        j                  t        j                        } t	        |       dk(  sJ t        j                  t        j                        } t	        |       dk(  sJ y )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))
rF   rG   r>   r   strr  quantilebinary_join_element_wisechooserandom)rN   s    r9   test_generated_signaturesr  K  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 : ; ; ;rC   c                  v   t               } t        dd      D cg c]  }d|cxk  rdk  sn t        |       }}t        j                  t        j                  |            j                         }t        |      D ]6  \  }}||   |j                         k7  s| j                  t        |             8 | S c c}w )N           )setrz  chrr>   utf8_is_printabler   r   r  	enumerateisprintabler   ord)newrd  rl  is_printableis        r9   find_new_unicode_codepointsr  m  s    
%C"'g"6 1"6Q A.. a&"6J 1''(<=GGIL*%1?ammo-GGCFO & J1s   B6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   re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )is_alnumis_alphais_digit
is_numericis_lowerfunction_name)
r  r  is_ascii
is_decimalr  r  r  r  is_spaceis_uppervariantasciiutf8c                    |dz   | z   }| j                  dd      }t        j                  | t                     t	               z  }t        t        rdnd      D ]  }|t        dd      v r||v rt        |      }t        t        |      s3| dk7  s9t        j                  |g      }t        t        |      } ||      d   j                          t        ||             k(  rJ  y )	N_rs  r  r  r  r  r  r   )replacecodepoints_ignoregetr  r  rz  r  r  hasattrr>   r   r   r  r#  )	r  r  
arrow_namepy_nameignorer  rd  ar
arrow_funcs	            r9   test_string_py_compat_booleanr*    s     3.J##C,G""=#%8#%&F%3W-ff%%; F2z"}
'B1#B Z0Jb>!$**,0C70C0EEEE .rC   c                  t   t        j                  g d      } t        j                  | d      j	                         g dk(  sJ t        j
                  | d      j	                         g dk(  sJ t        j                  | d      j	                         g dk(  sJ t        j                  | d      j	                         g dk(  sJ t        j
                  | d      j	                         g dk(  sJ t        j                  | d      j	                         g dk(  sJ t        j                  g d      } t        j                  | d      j	                         g dk(  sJ t        j                  | d      j	                         g d	k(  sJ t        j                  | d      j	                         g d
k(  sJ t        j                  | d      j	                         g dk(  sJ t        j                  | d      j	                         g d	k(  sJ t        j                  | d      j	                         g d
k(  sJ y )N)Nr   abcdr!   )width)Nz a r,  )Nz  ar,  )Nza  r,  )N   ár,  )Nu    á r,  )Nu     ár,  )Nu   á  r,  )
r   r   r>   ascii_centertolist
ascii_lpad
ascii_rpadutf8_center	utf8_lpad	utf8_rpadr  s    r9   test_padr6    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BrC   c                     t        dd      } t        j                  g d      }|j                         }| D ]  }| D ]x  }|j                  j                  ||d      }t        j                  |||d      }|j                         |j                         k(  sJ t        j                  |||d      |k(  rxJ   t        j                  g d      }|j                         }| D ]b  }| D ][  }|j                  j                  ||d      }t        j                  |||d      }|j                         |j                         k(  r[J  d y )Nru  r$   )Nrs  r   rA  r_  r,  abcdeXX)rh   rx  replacement)Nrs  u   πu   πbu   πbθu   πbθdu   πbθde)
rz  r   r   	to_pandasr  slice_replacer>   binary_replace_slicer0  utf8_replace_slice)offsetsr   seriesrh   rx  r  r  s          r9   test_replace_slicerA    s"   BlG
((@
AC]]_FDzz//tTBH,,5t?F==?hoo&7777**3tTBfLLL   ((H
IC]]_FDzz//tTBH**5t?F==?hoo&7777	  rC   c                     t        j                  g d      } t        j                  | dd      }|j	                         g dk(  sJ t        j                  | dd      }|j	                         g dk(  sJ t        j                  | ddd      }|j	                         g dk(  sJ t        j                  | ddd	      }|j	                         g dk(  sJ y )
N)foozfoofoodNr   r   rX   r:  )barzbarbardNr"   )rX   r:  max_replacements)barzfoorG  N)rH  )r   r   r>   replace_substringr0  )r>  r(  s     r9   test_replace_plainrK    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3rC   c                  F   t        j                  g d      } g d}t        j                  | dd      }|j	                         |k(  sJ t        j                  | dd      }|j	                         |k(  sJ t        j                  | dd      }|j	                         |k(  sJ y )N)r   moodN)f00m00dNz(.)ooz\100rE  )r:  )r   r   r>   replace_substring_regexr0  )r>  r  r(  s      r9   test_replace_regexrQ  !  s    88)*D$H		#	#D'w	OB99;("""		#	#D'w	GB99;("""		#	#D'7	;B99;("""rC   c                      t        j                  ddg      } ddddddg}t        j                  | d	      }|j	                         |k(  sJ t        j                  | d      }|j	                         |k(  sJ y )
Na1zb2zr   r]   )letterdigitr   r^   z(?P<letter>[ab])(?P<digit>\d)r  )r   r   r>   extract_regexr0  )r(  r  structs      r9   test_extract_regexrY  ,  sv    	4.	!B-#/LMHb*JKF==?h&&&b"BCF==?h&&&rC   c                  2   t        j                  ddgd g g      } t        j                  g d      }t        j                  | d      j	                  |      sJ t        j                  ddgt        j
                               }t        j                  dd	gt        j
                               }t        j                  d
dgddggt        j                  t        j
                                     } t        j                  | |      j	                  |      sJ y )Nr   r   )zfoo-barNrs  -r]   r^   r  a1bc2dr   r   rd  d)r   r   r>   binary_joinr   r   list_)ar_listr  separator_arrays      r9   test_binary_joinrc  5  s    hhb12Gxx-.H>>'3'..x888hhSz		<OxxRYY[9Hhhc
S#J/bhhryy{6KLG>>'?3::8DDDrC   c                     t        j                  d t        j                               } g dg dg dg}t        j                  | j                         g dk(  sJ t        j                  ddd      j                         d	k(  sJ t        j                  d| d      j                         J t        j                  dd|       j                         J t        j                  d
      }t        j                  |d|ij                         g dk(  sJ t        j                  ddd|      j                         d	k(  sJ t        j                  d| d|      j                         dk(  sJ t        j                  dd| |      j                         J t        j                  dd      }t        j                  |d|ij                         g dk(  sJ t        j                  ddd|      j                         d	k(  sJ t        j                  d| d|      j                         dk(  sJ t        j                  dd| |      j                         J y )Nr  )Nr   r   )rd  Nr^  )Nr[  z--)NNb--dr   r   r[  za-bskip)null_handlingr   )Nr   re  r  r!  spam)rg  null_replacement)Na-spamre  rj  )r   r   r   r>   r  r  r#  r   )nullarrsrf  r!  s       r9   test_binary_join_element_wiserm  @  sO   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 9rC   )rK  rI   c                    t        j                  ||       }t        j                         t        j                         fD ]  }t        j                  g d|      }|j	                  |      }|j                          t        j                  |d   |d   |d   d g|       }|j                  |      sJ t        j                  g |      }|j	                  |      }|j                          t        j                  g |       }|j                  |      rJ  t        j                  ddg      }t        j                  t              5  |j	                  |       d d d        t        j                  ddg      }t        j                  t              5  |j	                  |       d d d        y # 1 sw Y   TxY w# 1 sw Y   y xY w)Nr  r   r$   r#   Nr   r$   r#   r
   rY   )
r   r   r   r   r   validater   r2   r3   
IndexError)rK  rI   r   indices_typerz   rM  r  s          r9   	test_takers  ^  sO   
((6
#CBHHJ/((?>'"88VAYq	6!9dC"M}}X&&& ((2L1'"88BR(}}X&&& 0 hh1vG	z	" 
# hh2wG	z	" 
#	"	 
#	" 
#	"s   F-F9-F69Gc                      t        j                  t        d            } dD ]f  }t        j                  g d|      }| j                  |      }|j	                          t        j                  g d      }|j                  |      rfJ  t        j                         t        j                         fD ]N  }t        j                  g d|      }t        j                  t              5  | j                  |       d d d        P y # 1 sw Y   [xY w)Nr
   )r	   r   r   r   r   r   r   r   ro  r  )r   r$   r#   )r   r   rz  r   rp  r   float32float64r2   r3   r  )r   rr  rz   rM  r  s        r9   test_take_indices_typesrw  x  s    
((58
C?((?>'"88O,}}X&&&? rzz|4((9<8]]./HHW 0/ 5//s   'DD	c                     t        j                  g dg dg      } t        j                  g d      }| j                  |      }t        j                  g dg      }|j	                  |      sJ t        j                  dgddgg      }| j                  |      }t        j                  dgd	d
gg      }|j	                  |      sJ y )N)r   r   rd  r^  e)fghr  j)r   r
   r"   r%   r&   r#   )r   rz  r   r{  r}  rd  r"   r&   r#   r   r}  rd  )r   r'  r   r   r   )r   rz   rM  r  s       r9   test_take_on_chunked_arrayr~    s    


	
	
 C" hh)*GXXgF!? @AH=="""aV}-GXXgF	
 	
	! H =="""rC   orderedFTc                 `   t         j                  j                  g dg d|       }|j                  t        j                  g d            }|j                          |j                         g dk(  sJ |j                  j                         g dk(  sJ |j                  j                  | u sJ y )N)r   r"   r#   r   r"   r#   r   r   rd  )r  )r   r"   r!   )r   r   r   )
r   DictionaryArrayfrom_arraysr   r   rp  r  
dictionaryr   r  )r  r   rM  s      r9   test_take_dictionaryr    s    



(
();_18 ) :CXXbhhy)*F
OO000&&(O;;;;;')))rC   c                  2   t        j                  d gdz        } t        j                  d gdz  gdz        }t        j                  | gdg      }t        j                  d| i      }t        j                  g d      }t        | j                  |            dk(  sJ t        |j                  |            dk(  sJ t        |j                  |      j                  d            dk(  sJ t        |j                  |      j                  d            dk(  sJ y )	Nr   r
   r#   r   r\   )r"   r!   r:  Nr$   r   )r   r   r'  record_batchtabler/   r   column)r   chunked_arrbatchr  rz   s        r9   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2rC   c                 P   t        j                  ||       }|j                         }|j                  d       t	        t        |            D cg c]  }||   j                  s| }}|j                  t        j                  |            }|j                  |      sJ y c c}w )Nr  T)full)	r   r   	drop_nullrp  rz  r/   r  r   r   )rK  rI   r   rM  r  rz   r  s          r9   test_drop_nullr    s    
((6
#C]]_F
OOOC/=/QSV__q/G=xx)*H==""" >s   B#%B#c                      t        j                  dd gg dd gg g      } t        j                  dgddgg g g      }| j                         }|j                  |      sJ y )Nr   rd  r^  Nrd  r^  )r   r'  r  r   )r   expected_droprM  s      r9   test_drop_null_chunked_arrayr    s^    


S$K)9D62F
GC$$sec3ZR%@AM]]_F=='''rC   c                  X   t        j                  t        j                  g d      gdg      } | j                         }t        j                  t        j                  g d      gdg      }|j	                  |      sJ t        j                  t        j                  g d      t        j                  g d      gddg      } | j                         }t        j                  t        j                  dg      t        j                  dg      gddg      }|j	                  |      sJ y )Nr   Nrd  r^  Na'r  r   rd  r^  )NNrd  Nry  zb'rd  )r   r  r   r  r   )r  rM  r  s      r9   test_drop_null_record_batchr    s    OO	-	./v?E__F 9:4&IH=="""OO	-	.	.	/	19=tFE __F	3%"((C5/*4,@H=="""rC   c                     t        j                  t        j                  g d      gdg      } t        j                  t        j                  g d      gdg      }| j                         }|j	                  |      sJ t        j                  t        j
                  dd gg dg      t        j
                  dd gg dg      t        j
                  dgdgd gdd gg      gg d	      } t        j                  t        j                  ddg      t        j                  ddg      t        j                  ddg      gg d	      }| j                         }|j	                  |      sJ t        j                  t        j
                  ddgg d
g      t        j
                  dgdgd gdd gg      t        j
                  dd gg dg      gg d	      } t        j                  t        j                  ddg      t        j                  ddg      t        j                  ddg      gg d	      }| j                         }|j	                  |      sJ y )Nr  r   r  r  r  )Nr^  Nr   r^  r  rd  r^  ry  ABDza`)zc`d`Nr  )r   r  r   r  r   r'  )r  r  rM  s      r9   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=="""rC   c                     t        j                  d gdz        } t        j                  d gdz  gdz        }t        j                  | gdg      }t        j                  d| i      }t        | j                               dk(  sJ t        |j                               dk(  sJ t        |j                         j                  d            dk(  sJ t        |j                         j                  d            dk(  sJ y )Nr   r
   r#   r   r  r   )r   r   r'  r  r  r/   r  r  )r   r  r  r  s       r9   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0rC   c                 
   t        j                  ||       }t        j                  g d      }|j                  |d      }|j                          |j	                  t        j                  |d   |d   g|             sJ |j                  |d      }|j                          |j	                  t        j                  |d   |d   d g|             sJ t        j                  g d      }t        j                  t              5  |j                  |       d d d        t        j                  g d	      }t        j                  t        d
      5  |j                  |       d d d        y # 1 sw Y   VxY w# 1 sw Y   y xY w)Nr  TFFTNdropnull_selection_behaviorr   r!   	emit_nullr   r"   r   r"   r   TFTmust all be the same lengthr,   )	r   r   r  rp  r   r2   r3   r  
ValueErrorrK  rI   r   maskrM  s        r9   test_filterr    s%   
((6
#C8845DZZfZ=F
OO==6!9fQi"8rBCCCZZkZBF
OO==6!9fQi">RHIII 88O$D	*	+

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

4 
H	G 
,	+
 
H	Gs   E-E9-E69Fc                    t        j                  ||       }t        j                  g d      }|j                  |d      }|j	                          |j                  t        j                  |d   |d   g|             sJ y )Nr  r  r  r  r   r!   )r   r   r   r  rp  r   r  s        r9   test_filter_numpy_array_maskr  +  si     ((6
#C8845DZZfZ=F
OO==6!9fQi"8rBCCCrC   c                     t        j                  dd gg dg      } t        j                  dgdgg      }t        j                  dgd dgg      }t        j                  g d      t        j                  g dddgg      g dfD ]L  }| j                  |      }|j	                  |      sJ | j                  |d	      }|j	                  |      rLJ  y )
Nr   r  ry  TFNFTr  FTr  r  )r   r'  r   r  r   )r   r  expected_nullr  rM  s        r9   test_filter_chunked_arrayr  6  s    


S$K9
:C$$secU^4M$$sedC[%9:M 	12
-t}=>( D!}}]+++D+F}}]+++rC   c                  \   t        j                  t        j                  g d      gdg      } t        j                  g d      }| j                  |      }t        j                  t        j                  ddg      gdg      }|j	                  |      sJ t        j
                  ddgd gddgg      }| j                  |      }|j	                  |      sJ | j                  |d	
      }t        j                  t        j                  g d      gdg      }|j	                  |      sJ y )Nr   Nrd  r^  ry  r  r  r  r   ry  TFr  r  r   Nry  )r   r  r   r  r   r'  )r  r  rM  r  chunked_masks        r9   test_filter_record_batchr  I  s    OO	,	-.tf>E 8845D\\$F#s 45dVDH==""" ##dE]TFUDM$JKL\\,'F=="""\\$\DF)9 :;D6JH=="""rC   c                      t        j                  t        j                  g d      gdg      } t        j                  t        j                  ddg      gdg      }t        j                  t        j                  g d      gdg      }t        j                  g d      t        j                  ddgg d	g      g dfD ]L  }| j	                  |      }|j                  |      sJ | j	                  |d
      }|j                  |      rLJ  y )Nr  r   r  ry  r  r  TF)NFTr  r  )r   r  r   r'  r  r   )r  r  r  r  rM  s        r9   test_filter_tabler  ]  s    HHbhh9:;C5IEHHbhhSz23C5AMHHbhh'789#GM 	12
4-)<=>( d#}}]+++dKH}}]+++rC   c                  4   t        j                  dd gg dg      } t        j                  t        j                  g d      gdg      }t        j                  t        j                  g d      gdg      }| ||fD ]  }t        j                  g d      }t        j                  t              5  |j                  |       d d d        t        j                  g d      }t        j                  t         j                  d	      5  |j                  |       d d d         t        j                  d
      }|||fD ]5  }t        j                  t              5  |j                  |       d d d        7 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w)Nr   r  r  r  r  r  r  r  r,   T)r   r'  r  r   r  r2   r3   r  r  r6  r   r4   )r   r  r  objr  r   filts          r9   test_filter_errorsr  p  s7   


S$K9
:COO	,	-.tf>EHHbhh9:;C5IEUE"xx(]]./JJt 0 xx+,]]2??!>@JJt@ @ # YYt_Fv&]]9%LL &% ' 0/
@ @ &%s$   0E5FF5E>	F	F	c                  8   t        j                  d gdz        } t        j                  d gdz  gdz        }t        j                  | gdg      }t        j                  d| i      }t        j                  ddgdz        }t        | j                  |            dk(  sJ t        |j                  |            dk(  sJ t        |j                  |      j                  d            dk(  sJ t        |j                  |      j                  d            dk(  sJ y )	Nr   r
   r#   r   r  TFr   )r   r   r'  r  r  r/   r  r  )r   r  r  r  r  s        r9   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1rC   typr   r'  c                    | dk(  rd }nd } |g d      } |g d      }t        j                  ||      }|j                   |g d            sJ t        j                  ||      }|j                   |g d            sJ t        j                  ||      }|j                   |g d            sJ t        j
                  ||      }|j                   |g d	            sJ t        j                  ||      }|j                   |g d
            sJ t        j                  ||      }|j                   |g d            sJ y )Nr   c                 ,    t        j                  |       S r   r   r   rI   s    r9   conztest_compare_array.<locals>.con      88F##rC   c                 .    t        j                  | g      S r   r   r'  r  s    r9   r  ztest_compare_array.<locals>.con      ##VH--rC   r  )r"   r"   r$   Nr$   )TFFNN)FTTNN)FFTNN)TFTNN)FTFNN)TTFNN)r>   r  r   	not_equalless
less_equalgreatergreater_equal)r  r  arr1arr2rM  s        r9   test_compare_arrayr    s   
g~	$	. !"D!"DXXdD!F===>???\\$%F==<=>>>WWT4 F===>???]]4&F==<=>>>ZZd#F===>???dD)F==<=>>>rC   c                 j   | dk(  rd }nd } |g d      }t        j                  d      }t        j                  ||      }|j	                   |g d            sJ | dk(  r]t        j                  d d      }t        j                  ||      }t        j
                  |      }|j	                   |g d	            sJ t        j                  ||      }|j	                   |g d
            sJ t        j                  ||      }|j	                   |g d            sJ t        j                  ||      }|j	                   |g d            sJ t        j                  ||      }|j	                   |g d            sJ t        j                  ||      }|j	                   |g d            sJ y )Nr   c                 ,    t        j                  |       S r   r  r  s    r9   r  z'test_compare_string_scalar.<locals>.con  r  rC   c                 .    t        j                  | g      S r   r  r  s    r9   r  z'test_compare_string_scalar.<locals>.con  r  rC   )r   r   rd  Nr   FTFNr   r  )TTTTTFTNTFFNr`  FFTNFTTN)r   r   r>   r  r   is_nullr  r  r  r  r  )r  r  r   r   rM  nascalarisnulls          r9   test_compare_string_scalarr    sl   
g~	$	. #
$CYYs^FXXc6"F==78999
g~99T1#x(F#}}S!9:;;;\\#v&F==67888WWS&!F==78999]]3'F==67888ZZV$F==78999c6*F==67888rC   c                 8   | dk(  rd }nd } |g d      }t        j                  d      }t        j                  ||      }|j	                   |g d            sJ | dk(  rDt        j                  d d      }t        j                  ||      }|j                         g d	k(  sJ t        j                  ||      }|j	                   |g d
            sJ t        j                  ||      }|j	                   |g d            sJ t        j                  ||      }|j	                   |g d            sJ t        j                  ||      }|j	                   |g d            sJ t        j                  ||      }|j	                   |g d            sJ y )Nr   c                 ,    t        j                  |       S r   r  r  s    r9   r  z test_compare_scalar.<locals>.con  r  rC   c                 .    t        j                  | g      S r   r  r  s    r9   r  z test_compare_scalar.<locals>.con  r  rC   r"   r#   r!   Nr#   r  r   r  NNNNr  r  r`  r  r  )r   r   r>   r  r   r  r  r  r  r  r  )r  r  r   r   rM  r  s         r9   test_compare_scalarr    s]   
g~	$	. o
CYYq\FXXc6"F==78999
g~99T0#x(!%====\\#v&F==67888WWS&!F==78999]]3'F==67888ZZV$F==78999c6*F==67888rC   c                  F   t        j                  g d      } t        j                  g ddd gg      }t        j                  ddgg dg      }t        j                  g dg      }| |f|| f||ffD ].  \  }}t        j                  ||      }|j                  |      r.J  y )Nr  r"   r#   r!   r$   r"   r#   )r!   r$   N)TTTTN)r   r   r'  r>   r  r   )r   arr_chunkedarr_chunked2r  leftrightrM  s          r9    test_compare_chunked_array_mixedr    s    
((%
&C""I4y#9:K##aV\$:;L!? @AH 
k	c	l#e
 $&}}X&&&rC   c                      t        j                  g d      } t        j                  g d      }t        j                  | |      }t        j                  g d      }|j	                  |      sJ y )Nr"   r#   r!   r$   r
   r   rY   r"   r#   r!   )r"   r"   r$   r%   r   )r   r   r>   r   r   r  r  rM  r  s       r9   test_arithmetic_addr    sO    88O$DHH%&EVVD% Fxx(H=="""rC   c                      t        j                  g d      } t        j                  g d      }t        j                  | |      }t        j                  g d      }|j	                  |      sJ y )Nr  r  )r"   r!   r#   r#   r#   )r   r   r>   subtractr   r  s       r9   test_arithmetic_subtractr    sO    88O$DHH%&E[[u%Fxx(H=="""rC   c                      t        j                  g d      } t        j                  g d      }t        j                  | |      }t        j                  g d      }|j	                  |      sJ y )Nr  r  )r   rv  r!   r      )r   r   r>   multiplyr   r  s       r9   test_arithmetic_multiplyr    sP    88O$DHH%&E[[u%Fxx)*H=="""rC   rK  roundround_to_multiplec                    | dk(  r,t         j                  }t        t         j                  d      }n0| dk(  r+t         j                  }t        t         j
                  d      }g d}g dg d	g d
g dg dg dg dg dg dg dd
}|j                         D ]T  \  }} |      } ||      }t        j                  |t        j                               }	|	j                  |      rTJ  y )Nr  r   ndigitsr  r"   multiple)g	@      @皙@      @皙	g      gN)r!   r!   r!   r$   r  r  N)r$   r$   r$   r
   ru  ru  ru  N)r!   r!   r!   r$   ru  ru  ru  N)r$   r$   r$   r
   r  r  r  N)r!   r!   r$   r$   ru  r  r  N)r!   r$   r$   r
   ru  ru  r  N)r!   r!   r$   r$   ru  ru  r  N)r!   r$   r$   r
   ru  r  r  N)r!   r$   r$   r$   ru  r  r  N)r!   r!   r$   r
   ru  ru  r  N)
downuptowards_zerorn   	half_downhalf_uphalf_towards_zerohalf_towards_infinityhalf_to_evenhalf_to_odd
round_moder  r  )r>   r  r   r   r  r   itemsr   r   rv  r   )
rK  r  r   rI   rmode_and_expectedr  r  r   rM  expected_arrays
             r9   test_round_to_integerr  &  s    	W}r:	"	"$$r881E9F.,6:31;!?65 !3 8 8 :
H*5vw/(>$$V,,,	 !;rC   c                     g d} g dg dg dg dg dd}|j                         D ]  \  }}t        j                  |d      }t        j                  | |	      }t        j
                  j                  |t        j                  |      d
       t        j                  | |d      |k(  sJ t        j                  | |d      |k(  rJ  y )N@  r  g@r  gV-	g):ˏAg\(\Ni,  r   r   r   r   r   r   Nr  r   r   r   r   ir   N)r  r$   r!   r
   ru  iru  Nr  r  @r  r  ̌Aru  N)r  r  gp=
ף@r  gGz	g(\AffffffN)rv  rY   r   r"   r#   r  r  T	equal_nanr  )	r  r>   r   r  r   testingassert_allcloser   r   )rI   ndigits_and_expectedr  r  r   rM  s         r9   
test_roundr$  C  s    CF,-,6< 2779//'+BC&'2


""6288H+="Nxx#:<?EF 	F Fxx)@AVKKK :rC   c                  `   g d} dg dt        j                  d      g ddg ddg d	t        j                  d
t        j                  dd            g di}|j                         D ]  \  }}t	        j
                  |d      }t	        j                  | |      }t        j                  j                  |t        j                  |      d       t	        j                  | |d      |k(  rJ  ddt        j                  d      fD ]G  }t        j                  t         j                  d      5  t	        j                  | |       d d d        I t        dfD ]=  }t        j                  t        d      5  t	        j                  | |       d d d        ? y # 1 sw Y   xY w# 1 sw Y   VxY w)Nr  g?)r  r  r  r  r  r  r  Nr   r  r#   )r  r$   r$   r$   r  ir  Nr   r  rq   r$   r  r  r  r  Tr  r   rv  g$z"Rounding multiple must be positiver,   r   l   l+?R zis not a valid multiple type)r   r   
decimal256r  r>   r   r  r   r!  r"  r   r2   r3   r6  r1   r4   )rI   multiple_and_expectedr  r  r   rM  s         r9   test_round_to_multipler(  V  su   CF<
		#C	,
-
		#BMM"a01, 499;(++H6MN%%fg>


""6288H+="N##FH$;=@FG 	G G	 < BIIe,-]]2??!EG  (;G G .
 45]]9,JK  (; LK 6	G G
 LKs   -F5F$F!	$F-	c                  N   g d} t        j                  g dt        j                               }t        j                  g dt        j                               }t	        j
                  | |      |k(  sJ t        j                  dt        j                               }t        j                  dt        j                               }t        j                  dt        j                               }t	        j
                  d|d	      |k(  sJ t	        j
                  d|d
	      |k(  sJ y )N)w/^@/$Rm@+ٚu@gv|@r*  r+  r,  )ru  rv  rY   r   r"   r#   r!   )r      i^  i  g     ^@g
ףp=Rm@r,  r   r   rY   g      @r  r  r  )r   r   r   rv  r>   round_binaryr   )rI   scalesr  expect_zero
expect_infscales         r9   test_round_binaryr3  r  s    LFXX.
;Fxx2BJJLBH??66*h666))Arzz|,K2rzz|,JIIb"((*%E??U247BC C C??U68;EF F FrC   c            	         t        j                  g d      } | j                         }t        j                  g d      }|j                  |      sJ |j                  t	        j                  |             sJ | j                         }t        j                  g d      }|j                  |      sJ |j                  t	        j
                  |             sJ t        j                  ddgdd gg      } | j                         }t        j                  ddgddgg      }|j                  |      sJ | j                         }t        j                  ddgddgg      }|j                  |      sJ t        j                  dddd t        d	      g      } | j                         }t        j                  g d
      }|j                  |      sJ | j                  d      }t        j                  g d      }|j                  |      sJ y )Nr  )FFFT)TTTFr"   r#   r!   FTnan)FFFTF)nan_is_null)FFFTT)r   r   r  r   r>   r  r'  r   r\  s      r9   test_is_nullr7    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=="""rC   c            	      j   t        j                  dddd t        d      g      } | j                         }t        j                  g d      }|j	                  |      sJ t        j                  g dt        j
                               } t        j                  t        d	      5  | j                         }d d d        t        j                  t        d	      5  t        j                  g d
t        j                               } | j                         }d d d        y # 1 sw Y   ixY w# 1 sw Y   y xY w)Nr"   r#   r!   r5  )FFFNT)r]   r^   Nr  z"has no kernel matching input typesr,   r      bbN)
r   r   r   is_nanr   r   r2   r3   r   rT  )r   rM  r  r   s       r9   test_is_nanr<    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&)D2c                     t        j                  g dt        j                               } t        j                  dgt        j                               }t        j                  t         j
                  d      5  | j                  |       d d d        t        j                  g dt        j                               } t        j                  d t        j                               }| j                  |      }t        j                  g d      }|j                  |      sJ t        j                  g d      } | j                  d      }t        j                  g d	      }|j                  |      sJ t        j                  g d
t        j                               } | j                  d      }t        j                  g dt        j                               }|j                  |      sJ t        j                  g d      } | j                  d       }t        j                  g d      }|j                  |      sJ y # 1 sw Y   xY w)Nr"   r#   Nr$   r  r
   +Array arguments must all be the same lengthr,   r  )r   bbNccc)r   r@  rA  r9  )r   r:  s   ccc)r   r   r   r2   r3   r6  	fill_nullrk  r   r   rT  )r   
fill_valuerM  r  s       r9   test_fill_nullrD    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   ;IIc                 t   t        j                  g d|       }t        j                  d|       }|j                  |      }t        j                  g d|       }|j	                  |      sJ |j                  d      }|j	                  |      sJ t         j
                  j                  |j                        s9t        j                  t        t        f      5  |j                  d       d d d        |j                  t        j                  dd            }|j	                  |      sJ y # 1 sw Y   CxY w)Nr>  r  r
   )r"   r#   r
   r$   5r   )r   r   r   rB  r   typesis_unsigned_integerr   r2   r3   r  r4   )r  r   rC  rM  r  s        r9   test_fill_null_arrayrI    s    
((?
4C1:.J]]:&Fxx:6H==""" ]]1F==""" 88''1]]J	23MM# 4 ]]299QV45F=="""	 43s   D..D7c                    t        j                  d|       }t        j                  t        j                  g d|       g      }|j	                  |      }t        j                  t        j                  g d|       g      }|j                  |      sJ t        j                  t        j                  ddg|       t        j                  g |       t        j                  d dg|       g      }t        j                  t        j                  ddg|       t        j                  g |       t        j                  ddg|       g      }|j	                  |      }|j                  |      sJ |j	                  d      }|j                  |      sJ |j	                  t        j                  dd            }|j                  |      sJ y )	Nr
   r  )Nr#   r!   r$   )r
   r#   r!   r$   r"   r#   r$   r   )r   r   r'  r   rB  r   )r  rC  r   rM  r  s        r9   test_fill_null_chunked_arrayrK    sm   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=="""rC   c                     t        j                  g d      } t        j                  g d      }t        j                  | |      t        j                  g d      k(  sJ t        j                  | |      t        j                  g d      k(  sJ t        j
                  | |      t        j                  g d      k(  sJ t        j                  | |      t        j                  g d      k(  sJ t        j                  | |      t        j                  g d      k(  sJ t        j                  |       t        j                  g d      k(  sJ y )Nr  )TTFTr`  r  r  )	r   r   r>   and_
and_kleeneor_	or_kleenexorinvertr(   s     r9   test_logicalrS     s    
+,A
*+A771a=BHH%?@@@@==A"((+E"FFFF66!Q<288$=>>>><<1*C!DDDD66!Q<288$>????99Q<288$=>>>>rC   c                      t        j                  g d      } | j                         }t        j                  |      }| |k7  sJ | |k(  sJ | t        j                  |       k(  sJ t        j                  |      |k(  sJ y )N)r   r   r   rd  r   )r   r   dictionary_encoder>   dictionary_decode)r   dictionary_arraydictionary_array_decodes      r9   test_dictionary_decoderY    s    HH./E..0 223CD$$$$++++B((//// 015EEEErC   c                     t        j                  g dd      } t        j                  t        j                               }t        j                  t              5  t        j                  | d        d d d        t        j                  t              5  t        j                  | d|       d d d        t        j                  t              5  t        j                  | d|       d d d        t        j                  | |      t        j                  g dd	      k(  sJ t        j                  d
gd      } t        j                  t        j                         d      }t        j                  t         j                        5  t        j                  | d       d d d        t        j                  | dd      t        j                  dgd      k(  sJ t        j                  | |      t        j                  dgd      k(  sJ t        j                  t        j                  ddd      t        j                  ddd      g      } t        j                  ddgd      }t        j                  | d      |k(  sJ t        j                  ddgg dgt        j                  t        j                                     } t        j                  ddgg dgt        j                  t        j                                     }t        j                  | |j                         |k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   xY w)Nr  r   r  )target_typer   r  T)r   r   r   l    )allow_int_overflowFr   rY   i  r"   i  l    x\Nl    0E*ztimestamp[ms]r#   )r!   r$   r
   r]   r^   )34rF  )r   r   r>   r   r   r2   r3   r4   castr  r   r6  datetime
large_listr`  r  r   )r   r   allow_overflow_optionsr  s       r9   	test_castrd    sa   
((<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 6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(L5MM(L25L?MM
value_typec                     t        j                  ddd      }t        j                  |g|       }t	        j
                  ||       |k(  sJ y )Ni  r!   r"   r  )ra  dater   r   r>   r`  )re  dtr   s      r9   test_identity_cast_datesri  B  s?    	tQ	"B
((B4j
)C773
#s***rC   c                 b   t        j                  t        j                  d|       d      }t        j                         }t        j                  t        j                  d|      d      }t         j                  j                  t        j                  g d|      |      }||j                  |      j                  k(  sJ t         j                  j                  t        j                  g d|      |      }||j                  |      j                  k(  sJ t        j                         }t        j                  t        j                  d|      d      }t         j                  j                  t        j                  g d|      |      }||j                  |      j                  k(  sJ t        j                  t        j                  d|       d      }d	}t        j                  t         j                  j                  |
      5  |j                  |       d d d        y # 1 sw Y   y xY w)Nelementr#   rI   )r"   r#   r!   r$   r
   r%   r  )r"   NNr$   r
   r%   )NNNNNNr!   z&Size of FixedSizeList is not the same.r,   )r   r`  r[   r   FixedSizeListArrayr  r   r`  r   rk  r2   r3   libArrowTypeError)re  	cast_typedtyper   fslerr_msgs         r9   test_fsl_to_fsl_castrs  J  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)	precisionr2  	float_val
decimal128&   r&  L   c                     | dk\  sJ |dk\  sJ t        |       d|z  z  }|d|z  z  | kD  r7t        j                  |d      }|d|z  z  | kD  rt        j                  |d      }|d|z  z  | k  sJ |S )zA
    Find the largest float f such as `f * 10**scale <= val`
    r   r           )r   r   	nextafter)valr2  ry  s      r9   largest_scaled_float_not_abover  s  s     !8O8A::c
RY&I2u9s"LLC0	r5y 3&Y4Ir5y C'''rC   c                     t        | t              sJ t        j                  |       }|j	                  |       }t        |      }|S )zS
    Return a float representation (possibly approximate) of `int_val**-scale`
    )r   intdecimalDecimalscalebr   )int_valr2  unscaledscaledry  s        r9   scaled_floatr    sA     gs###w'H__eV$FfIrC   c              #      K   d}t        d|d      D ]e  }t        d|d      D ]S  }t        ||d       t        ||d       dt        ||z
  |      z  }t        d|z  |z
  |      }t        |||       U g y	w)
zC
    Return FloatToDecimalCase instances with integral values.
    r'   r"   r!   r   r#   r~  g      ?r   N)rz  rw  rj   r  )float_tyrv  mantissa_digitsrx  r2  epsilon
abs_maxvals          r9   $integral_float_to_decimal_cast_casesr    s      O1mQ/	1i+E$Ys;;$Ys;;#i/95AAG7I'0J$YzBB , 0   A9A;c              #      K   d}t        d|d      D ]e  }t        d|d      D ]S  }ddt        ||z
  d      z  z  }t        ||      }t        d|z  |z
  |      }t        |||       t        |||       U g yw)z?
    Return FloatToDecimalCase instances with real values.
    r'   r"   r!   r   r#   r   N)rz  rj   r  rw  )r  rv  r  rx  r2  r  
abs_minvalr  s           r9    real_float_to_decimal_cast_casesr    s      O1mQ/	1i+E"c)o"=qAAAG7GJ7I'0J$YzBB$YzBB , 0r  c              #     K   t        j                  d      }t        d|d      D ]d  }t        d|d      D ]R  }t        d      D ]B  }|j                  dd|z        }t	        ||      }|d|z  z  d|z  k  sJ t        |||       D T f yw)	z?
    Return random-generated FloatToDecimalCase instances.
    *   r"   r%   r   r$      r   N)r  Randomrz  	randranger  rw  )r  rv  rrx  r2  r  r  ry  s           r9   "random_float_to_decimal_cast_casesr    s      	bA1mQ/	1i+E2Y;;q"i-8(59	 2u9,r9}<<<(E9EE	  , 0s   BBc                 "   |j                   |_        t        j                  |_        |j                  |      }|j                  t        j                  d      j                  |j                               }t        j                  ||       }t        j                  ||      j                         }||k7  rZt        ||z
        d|j                  z  z  }|j                   |dz
  k  rdnd}	||	k  s J d|d|j                    d|d	|d
|
       y y )Nr"   r  r   r#   r$   zfloat_val = z, precision=z, expected = z, actual = z, diff_digits = )rx  precr  ROUND_HALF_EVENroundingcreate_decimal_from_floatquantizer  r  r2  r   r   r>   r`  r#  abs)
r  ry  
decimal_tydecimal_ctxrv  r  rx   r  diff_digitslimits
             r9   check_cast_float_to_decimalr    s    "++K"22K44Y?H  !3!:!:J<L<L;L!MNH
		)(+AWWQ
#))+F &8+,r:3C3C/CC))MA,==1e# 	.9-|J4H4H3I J"[
 ;(O-	.# rC   r  )idsr  c                     | j                   S r   r<   vs    r9   <lambda>r        qvvrC   case_generator)	integralsrealsr  c           
         t        j                         5 } || |j                        D ]I  }t        | |j                  |j                  |j                  |j                        ||j                         K 	 d d d        y # 1 sw Y   y xY wr   )r  localcontextrv  r  ry  ru  rx  r2  )r  r  r  ctxcases        r9   test_cast_float_to_decimalr    sj     
			3"8Z-E-EFD'$..""4>>4::>Z--/ G 
 		s   A A??Bdecimal_traitsc                     | j                   S r   r  r  s    r9   r  r    r  rC   c                    t        j                  d      }t        j                         t        j                  t        j
                         t        j
                  i|    }t        j                         dt        j
                         di|    }t        j                         dt        j
                         di|    \  }}t        j                  t        j                  d|z              }|j                  }t        j                         5 }	|}
|
|	_        t        | |
t        j                  t        j                  d|z              z         }t        |t        j                  t        j                  d|z                    }t!        ||      D ]c  }|j#                  |
|      }| t        j                  t        j$                  d|
|z
  z              z   }||cxk  r|k  sJ  J t!        d      D ]  }|j'                  d	d|z        }t	        j(                   ||      |      }t+        ||      sJ |d	k\  rt        j,                  |      d|z  z  }nt        j,                  |      d| z  z  }t/        |j1                  |            }t3        j4                  t        j6                  || 
      |      j9                         }t/        |j1                  |            }t;        ||z
        dk  rJ  f 	 ddd       y# 1 sw Y   yxY w)zL
    Test float-to-decimal conversion against exactly generated values.
    +      5   )i   )ii  r#   r   r
   r   r  r"   N)r  r  r   ru  r   rv  mathfloorlog10rv  r  r  r  rj   ceilr  rz  ru  log2r  ldexpr   r  r  r  r>   r`  r   r#  r  )r  r  r  np_float_tymantissa_bitsfloat_exp_minfloat_exp_maxr  rv  r  rx  	min_scale	max_scaler2  r  	float_expr  mantissary  r  expected_as_intr  actual_as_ints                          r9   !test_cast_float_to_decimal_randomr    s    	bA


bjj


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

b


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

k


m$ $ M= jjA},<!=>O"00M				3#	 !DIIdjjM9I.J$KKM	

4::a.>#?@B	9i0E'//	5AJ
 (DIIb9u3D.E$FGHI I>>>>>>1X;;q!]*:;HH[%:IF	!)[999 >&x81i<GH&x81yj=HH"'(>"?IIih7EEJUW  %fmmE&: ;=?:;q@@@  1 
 		s   G$K<,K<<Lc            	         t        j                  g d      } t        j                  | dd      }t        j                  t	        j                  ddd      d t	        j                  dd	d
      gt        j
                  d            }||k(  sJ t        j                  | dd      |k(  sJ t        j                  t	        j                  ddd      d d gt        j
                  d            }t        j                  | ddd      }||k(  sJ t        j                  t         j                  d      5  t        j                  | ddd       d d d        t        j                  t         j                  d      5  t        j                  | dd       d d d        t        j                  | ddd      }|t        j                  g dt        j
                  d            k(  sJ y # 1 sw Y   xY w# 1 sw Y   `xY w)N)z5/1/2020Nz
12/13/1900z%m/%d/%Yrx   )formatuniti  r
   r"   il        r  r  z%d/%m/%YT)r  r  error_is_nullz"Failed to parse string: '5/1/2020'r,   z%Y-%m-%dF)NNN)	r   r   r>   strptimera  	timestampr2   r3   r6  )r   gotr  s      r9   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   2G%9G1%G.1G:c            	      
   g d} g d}g d}t         j                  dk7  r|j                  g d       |D ]  }t        j                  |       j                  |      }dD ]  }t        j                  |t        j                  ||            }|D ]e  }t        j                  |      }t        j                  ||      }	t        j                  |j                  |            }
|	j                  |
      reJ   d	}t        j                  |t        j                  d
|            }t        j                  |t        j                               }	t        j                  |j                  |            }
|	j                  |
      sJ t        j                  |t        j                  d
|            }t        j                  |t        j                  |dz               }	t        j                  |j                  |dz               }
|	j                  |
      sJ t        j                  |t        j                  d
|            }t        j                  d      }t        j                  ||      }	t        j                  |j                  d            }
|	j                  |
      sJ t        j                  |t        j                  d|            }t        j                  d      }t        j                  ||      }	t        j                  |j                  d            }
|	j                  |
      sJ t        j                  |t        j                  d
|            }t        j                  |d      }t        j                  ||      }	t        j                  |j                  |            }
|	j                  |
      rJ  d	}t        j                  |       }t        j                  |t        j                  d
            }t        j                  |t        j                  |            }	t        j                  |j                  |            }
t        j                  ||      |	k(  sJ |	j                  |
      sJ t        j                  t        j                  d      5  t        j                  |t        j                  |dz                d d d        t        j                  t        j                  d      5  t        j                  |t        j                  |dz                d d d        y # 1 sw Y   exY w# 1 sw Y   y xY w)N)z2018-03-10 09:00z2038-01-31 12:23N)CETrR   r   )z%az%Az%wz%dz%bz%Bz%mz%yrw   z%Hz%Iz%pz%M%z%Zz%jz%Uz%Wz%%z%Gz%Vz%uwin32)z%cz%xz%Xrx   msusnsr  r  z%Y-%m-%dT%H:%M:%Srx   r  z%Sr  z%S.%fC)localez.Timezone not present, cannot convert to stringr,   r  )sysplatformextendpdto_datetimetz_localizer   r   r  r>   r   strftimer   r2   r3   r6  )times	timezonesformatstimezonetsr  tsafmtr   rM  r  s              r9   test_strftimer  =  s    ;E2IQG
||w)*^^E"..x8+D((2BLLx$@AC,,S1S':88BKK$45}}X...	  , " hhrS( ;<S"*<*<*>?88BKK,-}}X&&& hhrS( ;<S"*<*<S4Z*HI88BKKd
34}}X&&& hhrS( ;<$$T*S'288BKK-.}}X&&& hhrT8 <=$$T*S'288BKK01}}X&&& hhrS( ;<$$S5S'288BKK,-}}X&&&W \ C		B
((2BLL-
.C[[b&8&8&=>FxxC()H ;;sC F***=="""	rM
O
C!3!3C$J!?@
O 
rM
O
C!3!3C$J!?@
O 
O
O 
O
O 
Os   ).T;.U;UUc                    ddl m} t        j                  |       j	                  d      j                  |      j                         }t        j                  |t        j                  d|            }|j                  j                  dz  |j                  j                  z   dz  j                  d      }t        j                  d	t        j                               t        j                  d
t        j                               t        j                  dt        j                               g} |t        j                          |d      k  rd|j#                  d       j%                  d      }|j#                  d       j%                  d      }|j#                  d       j%                  d      }	n|j                  j'                         d   j%                  d      }|j                  j'                         d   j%                  d      }|j                  j'                         d   j%                  d      }	t        j(                  j+                  |||	g|      }
|j                  j,                  j%                  d      }|j                  j.                  j%                  d      }|j                  j0                  j%                  d      }|j                  j2                  j%                  d      }|j                  j4                  j%                  d      }|j                  j6                  j%                  d      }|j                  j8                  j%                  d      }|j                  j:                  j%                  d      }|j                  j<                  j>                  j%                  d      }|j                  j                  j%                  d      }|j                  j                  j%                  d      }tA        j,                  |      jC                  t        j                  |            sJ tA        jD                  |      jC                  t        j                  |j                  jD                              sJ tA        j.                  |      jC                  t        j                  |            sJ tA        j0                  |      jC                  t        j                  |            sJ tA        jF                  |      jC                  t        j                  |            sJ tA        jH                  |      jC                  t        j                  |            sJ tA        jJ                  |      jC                  t        j                  |            sJ tA        jL                  |      jC                  t        j                  |            sJ tA        jN                  |      jC                  |
      sJ tA        j6                  |      jC                  t        j                  |            sJ tA        j8                  |      jC                  t        j                  |            sJ tA        j:                  |      jC                  t        j                  |            sJ tA        j<                  |      jC                  t        j                  |            sJ tA        jP                  |      jC                  t        j                  |dz              sJ tA        j                  |      jC                  t        j                  |dz              sJ tA        j                  |      jC                  t        j                  |            sJ tA        jR                  |      jC                  t        j                  |            sJ tA        jT                  |      jC                  t        j                  |j                  j	                  d                   sJ |j                  jV                  r|j                  jV                  tX        jZ                  j\                  u rdgt_        |      z  }n|ja                  d       }tA        jb                  |      jC                  t        j                  |            sJ tA        jd                  dd      }tA        jF                  ||      jC                  t        j                  |dz               sJ tA        jf                  ddd      }tA        jh                  ||      jC                  t        j                  |            sJ y )Nr   )VersionrR   r  )tzi  g&.>r&   iso_yeariso_weekiso_day_of_weekz1.1.0c                 (    | j                         d   S Nr   isocalendarxs    r9   r  z,_check_datetime_components.<locals>.<lambda>      AMMOA$6rC   r   c                 (    | j                         d   S )Nr"   r  r  s    r9   r  z,_check_datetime_components.<locals>.<lambda>  r   rC   c                 (    | j                         d   S )Nr#   r  r  s    r9   r  z,_check_datetime_components.<locals>.<lambda>  s    1==?1#5rC   yearweekday)fieldsFc                 <    | j                         j                  dkD  S r  )dstsecondsr  s    r9   r  z,_check_datetime_components.<locals>.<lambda>  s    !(;rC   r"   rS   r  Tr}   )5pyarrow.vendored.versionr  r  r  r  
tz_convert	to_seriesr   r   r  rh  microsecond
nanosecondr  r[   r   __version__mapastyper  StructArrayr  r  monthr  	dayofweek	dayofyearquarterhourminutero   rI   r>   r   is_leap_yearday_of_weekday_of_yearr  r  iso_calendarmillisecond	subsecondlocal_timestampr  ra  r  utcr/   applyis_dstr   r   r  )
timestampsr  r  r  r  
subsecondsiso_calendar_fieldsr  r  iso_dayr  r  r  r  r  r  r  r  r  ro   r  r  r"  day_of_week_optionsweek_optionss                            r9   _check_datetime_componentsr)    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<>>--	8W%" . $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88C=00066#;bhhsm,,,>>#%%bhhy&9:::>>#%%bhhy&9:::;;s""288H#5666;;s""288H#5666??3&&|444::c?!!"((7"3444773<rxx~...99S>  &!122299S>  &!1222>>#%%bhh{g/E&FGGG>>#%%bhh{W/D&EFFF==$$RXXj%9:::<<##BHHZ$8999c"))"((2553D3DT3J*KLLL	uuxx5588x((,,,Ws2w&FXX;<Fyy~$$RXXf%5666--!->>#':;BB
Q! ! ! >>$)+L 773-44RXXh5GHHHrC   c                     g d}g d}t        |       | j                  j                  j                  d   st	        j
                  d       y |D ]  }t        ||        y )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)rR   
US/CentralAsia/Kolkata	Etc/GMT-4	Etc/GMT+4zAustralia/Broken_Hillr   z-Timezone database is not installed on Windows)r)  r   r   r   r2   rf  )r   r#  r  r  s       r9    test_extract_datetime_componentsr0    sV    +JDI z* >>!!,,_=CD!H&z8< "rC   r  r  c                 >   t        j                  t        j                  dddd      gdz  t        j                  |             }t	        j
                  |      }t         j                  j                  dgdz  dgdz  dgdz  gg d	
      }|j                  |      sJ y )Ni  r"   r#   r&   2   i  4   r:  )r  r  r  r  )	r   r   ra  r  r>   r  r  r  r   )r  r   rM  r  s       r9   test_iso_calendar_longer_arrayr4    s     ((H%%dAq!45b8",,t:L
MC__S!F~~))
RDGaSV$9 * H =="""rC   c                  	   t        j                  d      } t        j                  g d      }t        j                  ddg      }t        j                  g d      }t        j                  ||       }t        j                  ||       }dD ])  }t        j                  |      }t        j                  ||       }|j                  |      }	t        j                  ||      }
|
j                  t        j                  |	            sJ t        j                  ||      }
|
j                  t        j                  |	            sJ t        j                  |t        j                  d|            }t        j                  t         j                  d	
      5  t        j                  ||       d d d        , t        j                  d      }t        j                  t        d
      5  t        j                  |       d d d        d}t        j                  |      }t        j                  |dd      }t        j                  |dd      }t        j                  t        d| d
      5  t        j                  ||       d d d        t        j                  |j                  |d            }	t        j                  ||      }
|	j                  |
       t        j                  |j                  |d            }	t        j                  ||      }
|	j                  |
       t        j                  |      }t        j                  |dd      }t        j                  |dd      }t        j                  t        d| d
      5  t        j                  ||       d d d        |j                  |g d      }	t        j                  ||      }
|
j                  t        j                  |	             |j                  |g d      }	t        j                  ||      }
|
j                  t        j                  |	             y # 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr  r+  z2015-03-29 02:30:00z2015-03-29 03:30:00)z2018-10-28 01:20:00z2018-10-28 02:36:00z2018-10-28 03:46:00r  )rR   r,  r-  r  zalready have a timezone:r,   zEurope/Brusselsssznot found in timezone databaseEurope/Brusselsraiseearliest)	ambiguousnonexistentlatestz%Timestamp doesn't exist in timezone ''shift_forward)r:  shift_backwardz$Timestamp is ambiguous in timezone ')TTT)r9  )FFF)r   r  r  r  r   r>   r   r  assume_timezoner   r2   r3   r6  r  )ts_typer#  r:  r9  ambiguous_arraynonexistent_arrayr  r   tar  rM  ta_zonedinvalid_optionsoptions_nonexistent_raiseoptions_nonexistent_earliestoptions_nonexistent_latestoptions_ambiguous_raiseoptions_ambiguous_latestoptions_ambiguous_earliests                      r9   test_assume_timezonerL  	  s    ll4 G !: ;J .."7"7"9 :K  7 8I hhyw7O7;9**84XXjw/))(3##B8}}RXXh/000##B1}}RXXh/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   Q(Q.Q)Q6Q	Q&)Q36Q?c           	         dddddddd}ddddddd	}t        j                  |       }|D ]  }t        |      ||   z   }t        j                  ||      }t        j
                  ||
      j                         }	| j                  j                  |      }
t        j                  j                  |	|
       t        j                  ||
      j                         }	| j                  j                  |      }
t        j                  j                  |	|
       t        j                  ||
      j                         }	| j                  j                  |      }
t        j                  j                  |	|
       |dk7  r~t        j                  ||d      }| j                  j                  ||         }|j                   j"                  ft        j
                  ||
      j                         }	| |z
  j                  j                  |      |z   }
t        j                  j                  |	|
       t        j                  ||
      j                         }	| |z
  j                  j                  |      |z   }
t        j                  j                  |	|
       t        j                  ||
      j                         }	| |z
  j                  j                  |      |z   }
t        j                  j                  |	|
       |dk(  st        j
                  ||      j                         }	| j                  j                  |      }
t        j                  j                  |	|
       t        j                  ||      j                         }	| j                  j                  |      }
t        j                  j                  |	|
       t        j                  ||      j                         }	| j                  j                  |      }
t        j                  j                  |	|
        |j                   j"                  t        j                  |d      }t        j
                  ||
      }	| j                  j                        }
t        j$                  |
| k(  |
t'        j(                  |||         z   |
      }
t        j                  j                  |	|
       |dk(  rd}t        j
                  |      j                         }	| j                  j                  |      }
t        j                  j                  |	|
       t        j                  |      j                         }	| j                  j                  |      }
t        j                  j                  |	|
       t        j                  |      j                         }	| j                  j                  |      }
t        j                  j                  |	|
       y y )Nr  r  r  rx   r  r|  r  r  r  r  ro   r  r  r  )r  r  r  ro   r  r  r  r  T)calendar_based_originr   )ceil_is_strictly_greater1D)r   r   r  r>   r   ceil_temporalr;  rh  r  r   r!  assert_array_equalfloor_temporalr  round_temporalr  r   r  wherer  	Timedelta)r  rI   r  unit_shorthandgreater_unitrC  value	frequencyr   rM  r  origins               r9   _check_temporal_roundingr]  d	  s   N L 
"BJ!55	))%6!!"g6@@B55::i(


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


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


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

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

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


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


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


%%fh7 rC   rN  c           	      <   d}g d}t        j                  |D cg c]  }t        j                  |d       c}      }t        |||        g d}|D ]C  }|j                  j                  d      j                  j                  |      }t        |||        E y c c}w )N)r"   r#   r!   r$   r
   r%   r:  r   r  r  <      i  i  )z1923-07-07 08:52:35.203790336z1931-03-17 10:45:00.641559040z1932-06-16 01:16:42.911994368z1941-05-27 11:46:43.822831872z1943-12-14 07:32:05.424766464z1954-04-12 04:31:50.699881472z1966-02-12 17:41:28.693282560z1967-02-26 05:56:46.922376960z1975-11-01 10:55:37.016146432z1982-01-21 18:43:44.517366784z1992-01-01 00:00:00.100000000z1999-12-04 05:55:34.794991104z2026-10-26 08:39:00.316686848r  r  )r-  zAmerica/New_Yorkr.  r/  r6  zPacific/Marquesasr,  rR   rR   )r  Series	Timestampr]  rh  r  r  )r  rI   r#  r  r  r  r  ts_zoneds           r9   test_round_temporalrd  	  s    
 BF)J 

C
1BLL.
C	DBR.NI 55$$U+..99(C 648  Ds   Bc                  \   t        j                  g d      } t        j                  |       j	                         dk(  sJ t        j                  | d      j	                         dk(  sJ t        j                  | d      j	                         dk(  sJ t        j                  | d      j	                         dk(  sJ t        j                  | d      j	                         dk(  sJ t        j                  t        d	
      5  t        j                  | d       d d d        y # 1 sw Y   y xY w)Nr"   r#   r!   NNr!   
only_validr-  	only_nullr#   r   r
   z*"something else" is not a valid count moder,   zsomething else)r   r   r>   r.  r#  r2   r3   r  r  s    r9   
test_countrj  	  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""D+c                     t        j                  g dt        j                               } t        j                  | t        j
                  d            j                         dk(  sJ t        j                  | t        j
                  dt        j                                     j                         dk(  sJ t        j                  | d      j                         dk(  sJ | j	                  dd      j                         dk(  sJ | j	                  d       j                         dk(  sJ t        j                  d	dgd	dggt        j                               } | j	                  d	      j                         dk(  sJ | j	                  d	d      j                         dk(  sJ | j	                  d	d	d
      j                         dk(  sJ y )N)r   r"   Nr!   r$   r  r   r#   rY   r$   r!   rh   r"   )rh   end)	r   r   r   r>   indexr   r#  r   r'  r  s    r9   
test_indexro  	  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5rC   c                 |   |j                         }t        |      t        |       k(  sJ t        |      t        t	        t        |                   k(  sJ t	        |      D cg c]
  }| ||       }}t	        |t        |             D cg c]
  }| ||       }}| ||      /|dk(  rt        d |D              sJ t        d |D              sJ y y |dk(  r-t        fd|D              sJ t        fd|D              sJ y t        fd|D              sJ t        fd|D              sJ y c c}w c c}w )Nrd   c              3   $   K   | ]  }|d u  
 y wr   r   r   r  s     r9   r   z&check_partition_nth.<locals>.<genexpr>
       6+QqDy+   c              3   $   K   | ]  }|d u  
 y wr   r   rr  s     r9   r   z&check_partition_nth.<locals>.<genexpr>
  rs  rt  c              3   4   K   | ]  }|d u xs |k    y wr   r   r   r  ps     r9   r   z&check_partition_nth.<locals>.<genexpr>
  "     @KqqDy*AF*K   c              3   (   K   | ]	  }|k\    y wr   r   rw  s     r9   r   z&check_partition_nth.<locals>.<genexpr>
       3{!qAv{   c              3   (   K   | ]	  }|k    y wr   r   rw  s     r9   r   z&check_partition_nth.<locals>.<genexpr>
  r|  r}  c              3   4   K   | ]  }|d u xs |k\    y wr   r   rw  s     r9   r   z&check_partition_nth.<locals>.<genexpr>
  ry  rz  )r  r/   sortedlistrz  r   )r>  rz   pivotrf   r  until_pivotafter_pivotrx  s          @r9   check_partition_nthr  
  s<   !Gw<3t9$$$'?d5T#34444-25\:\4
#\K:-25#d)-DE-D4
#-DKEWU^AyZ'6+66666+6666 7 Z'@K@@@@3{33333{3333@K@@@@ ;Es   #D4D9c                  f   t        t        dd            } t        j                  |        d}t	        j
                  | |      }t        | ||d       t	        j
                  | |      |k(  sJ t        j                  t        d      5  t	        j
                  |        d d d        y # 1 sw Y   y xY w)Nrq      r   )r  at_endz8'partition_nth_indices' cannot be called without optionsr,   )
r  rz  r  shuffler>   partition_nth_indicesr  r2   r3   r  )r>  r  rz   s      r9   test_partition_nthr  
  s    c3 D
NN4E&&t59Gguh7##D%0G;;;	L
N 	  &
N 
N 
Ns   B''B0c                      t        t        d            d gdz  z   } t        j                  |        dD ]/  }dD ](  }t	        j
                  | ||      }t        | |||       * 1 y )Nr   )r   r:  r     )rd   r  )r  rf   )r  rz  r  r  r>   r  r  )r>  r  rf   rz   s       r9   !test_partition_nth_null_placementr  *
  s`    b	?dVb[(D
NN44N..t5>LNGgunE 5  rC   c                  v   dd} t        j                  g d      }dD ]p  }dD ]'  }t        j                  ||d|fg      } | |||       ) t        j                  ||      } | ||d       t        j
                  ||      } | ||d	       r t        j                  |t        j                  d
dg            } | ||d       t        j                  |t        j                  d
dg            } | ||d	       t        j                  |d
dg      |k(  sJ t        j                  |d
dg      |k(  sJ y )Nc                     t        j                  |d|fg      }|j                  dt        |             }|r| |k(  sJ y t        j                  ||      }t        j                  ||       }||k(  sJ y )Nru   rs   r   r>   sort_indicesslicer/   r   )select_k_indicesr   orderstable_sortsorted_indiceshead_k_indicesr  r  s           r9   validate_select_kz.test_select_k_array.<locals>.validate_select_k6
  sr    '59I8JK'--a5E1FG#~555wwsN3HWWS"23FX%%%rC   r"   r#   Nr   r   r#   r$   )rv   ri   ru   r~  rl   )r~  rv   ri   r#   rt   r  ru   ri   rs   F)r   r   r>   select_k_unstabletop_k_unstablebottom_k_unstabler   )r  r   r~  r  rM  s        r9   test_select_k_arrayr  5
  sR   & ((?
#C0E))qgu%5$68Ffc51 1
 ""3!,&#|4%%cQ/&#{3  !!R&&346F fc<0!!R&&7M6NOF fc;/ Q+A*BDGMN N NQ)?(@AVKKKrC   c                  |   dd} t        j                  g dg dd      }dD ]  }t        j                  ||dg      } | ||dg       t        j                  ||t        j                  d	      d
fdg      } | ||ddg       t        j
                  ||d	g      } | ||dg       t        j                  ||d	dg      } | ||ddg        t        j                  t        d      5  t        j                  |       d d d        t        j                  t        d      5  t        j                  |ddg       d d d        t        j                  t        d      5  t        j                  |dg        d d d        t        j                  t        d      5  t        j                  |dg       d d d        t        j                  t        d      5  t        j                  |dg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   y xY w)Nc                     t        j                  ||      }|j                  dt        |             }|r| |k(  sJ y t        j                  ||      }t        j                  ||       }||k(  sJ y )Nrs   r   r  )r  tblrl   r  r  r  r  r  s           r9   r  z.test_select_k_table.<locals>.validate_select_k_
  sj    	B'--a5E1FG#~555wwsN3HWWS"23FX%%%rC   )r"   r#   r   )r"   r   r"   r(   r  r   ri   r  rs   r   ri   rr   r   rv   r   z4'select_k_unstable' cannot be called without optionsr,   z,select_k_unstable requires a nonnegative `k`rY   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unknownri   r  )
r   r  r>   r  r[   r  r  r2   r3   r  )r  r  r~  rM  s       r9   test_select_k_tabler  ^
  s   & HH9956E%%Q#5"68&%4F3GH%%QBHHSM;#?AS"TVE&8:L%M	O ""5A#?&%4G3HI%%eqS#JGE&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<   0H)H&H"H&H2HHH#&H/2H;c                     t        j                  g d      } t        j                  |       }|j	                         g dk(  sJ t        j                  | d      }|j	                         g dk(  sJ t        j                  | d      }|j	                         g dk(  sJ t        j                  | dd      }|j	                         g d	k(  sJ t        j                  | dd
      }|j	                         g d	k(  sJ t        j                  t        d      5  t        j                  | d       d d d        y # 1 sw Y   y xY w)Nr  r!   r   r"   r#   ri   )r  rv   r"   r   r!   r#   rd   )r  rf   r#   r"   r   r!   re   r  r,   r  )r   r   r>   array_sort_indicesr  r2   r3   r  r   rM  s     r9   test_array_sort_indicesr  
  s   
((?
#C""3'F---""3k:F---""3l;F---""3l2<>F---""32<>F---	z)A	B
c7 
C	B	Bs   D::Ec                     t        j                  g d      } t        j                  |       }|j	                         g dk(  sJ t        j                  | dg      }|j	                         g dk(  sJ t        j                  | dg      }|j	                         g dk(  sJ t        j                  | dgd      }|j	                         g d	k(  sJ t        j                  | dgd
      }|j	                         g d	k(  sJ t        j                  | t        j
                  dg            }|j	                         g dk(  sJ t        j                  | t        j
                  dgd            }|j	                         g d	k(  sJ y )Nr  r  r  rs   rt   r  rd   rl   rf   r  re   r  )r   r   r>   r  r  r   r  s     r9   test_sort_indices_arrayr  
  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 ---rC   c                     t        j                  g dg dd      } t        j                  | dg      }|j	                         g dk(  sJ t        j                  | t        j
                  d      dfgd	
      }|j	                         g dk(  sJ t        j                  | ddg      }|j	                         g dk(  sJ t        j                  | ddgd	
      }|j	                         g dk(  sJ t        j                  | ddgd	      }|j	                         g dk(  sJ t        j                  t        d      5  t        j                  |        d d d        t        j                  t        d      5  t        j                  | dg       d d d        t        j                  t        d      5  t        j                  | dg       d d d        y # 1 sw Y   xY w# 1 sw Y   RxY w# 1 sw Y   y xY w)N)r"   r"   Nr   )r"   r   r   r"   r(   r  rs   r  r   ri   rd   r  )r#   r!   r   r"   r  rr   r  r  re   z"Must specify one or more sort keysr,   r  r  r  r  )	r   r  r>   r  r  r[   r2   r3   r  )r  rM  s     r9   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$   >G7G!3G-G!G*-G6c                  N   t        j                  g d      } t        j                  | t        j                  g d            }|j	                         g dk(  sJ t        j                  | t        j                  g d      d      }|j	                         g dk(  sJ t        j                  | t        j                  dd	g            }|j	                         g dk(  sJ t        j                  | t        j                  dd	g      d      }|j	                         g dk(  sJ y )
Nr"   r#   Nr"   r#   r!   r"   r!   N	value_set)TFTTFTTr  rW   )TFFTFTr"   r!   )r   r   r>   is_inr  r  s     r9   
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HrC   c                     t        j                  g d      } t        j                  | t        j                  g d            }|j	                         g dk(  sJ t        j                  | t        j                  g d      d      }|j	                         g dk(  sJ t        j                  | t        j                  dd	g            }|j	                         g dk(  sJ t        j                  | t        j                  dd	g      d      }|j	                         g dk(  sJ t        j                  | t        j                  dd	g      d
      }|j	                         g dk(  sJ y )Nr  r  r  )r   Nr#   r   Nr"   Tr  )r   NNr   Nr"   r"   r!   rV   )r   r   r>   index_inr  r  s     r9   test_index_inr  
  s   
(((
)C[[(>?F!9999[[(>$(*F!<<<<[[!Q(89F!<<<<[[!Q(8TJF!<<<< [[bhh1v.4@F!<<<<rC   c                  @   t        j                  g d      } t        j                  |       }|j	                         dgk(  sJ t        j                  | d      }|j	                         dgk(  sJ t        j                  | d      }|j	                         dgk(  sJ t        j                  | d      }|j	                         dgk(  sJ t        j                  | d	      }|j	                         dgk(  sJ t        j                  | d
      }|j	                         dgk(  sJ t        j                  ddg      } t        j                  | g d      }|j	                         g dk(  sJ t        j                  | g dd      }|j	                         g dk(  sJ t        j                  | g dd      }|j	                         g dk(  sJ t        j                  | g dd	      }|j	                         g dk(  sJ t        j                  | g dd      }|j	                         g dk(  sJ t        j                  | g dd
      }|j	                         g dk(  sJ t        j                  | g dd
      }|j	                         g dk(  sJ t        j                  t        d      5  t        j                  | d       d d d        t        j                  t        d      5  t        j                  | d       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)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  r2   r3   r  r  s     r9   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   ,L'LLLc                     t        j                  g d      } t        j                  |       }|j	                         dgk(  sJ t        j
                  t        j                  ddg      t        j                  ddg      g      } t        j                  |       }|j	                         dgk(  sJ t        j                  g d      } t        j                  | g d      }|j	                         g d	k(  sJ t        j
                  t        j                  ddg      t        j                  ddg      g      } t        j                  | g d      }|j	                         g d	k(  sJ y )
Nr  r  r"   r#   r!   r$   )r   r  r"   r  )r"   r  r$   )r   r   r>   tdigestr  r'  r  s     r9   test_tdigestr  3  s   
((<
 CZZ_F#&&&


BHHaV,bhh1v.>?
@CZZ_F#&&&
((<
 CZZ{+F,,,


BHHaV,bhh1v.>?
@CZZ[)F,,,rC   c                     t        j                  d gt        j                               j                  d      } | j	                  t        j
                               }|t        j                  dgt        j
                               k(  sJ y )NFr   )r   r   bool_rB  r`  r   r  s     r9   test_fill_null_segfaultr  E  sZ    
((D6288:
&
0
0
7CXXbggi FRXXqc2779----rC   c                     t        j                  g d      } t        j                  g d      }t        j                  g d      }t        j                  | |      }|t        j                  g d      k(  sJ t        j                  | |      }|t        j                  g d      k(  sJ t        j                  | ||      }|t        j                  g d      k(  sJ t        j                  | ||      }|t        j                  g d      k(  sJ t        j                  | |d      }|t        j                  g d	      k(  sJ t        j                  | |d      }|t        j                  g d      k(  sJ t        j                  | |t        j
                         
      }|t        j                  g d	      k(  sJ t        j                  | |t        j
                         
      }|t        j                  g d      k(  sJ t        j                  | |d      }|t        j                  g d      k(  sJ t        j                  | |d      }|t        j                  g d      k(  sJ y )Nr  )r!   r"   r#   r#   r!   N)r!   r#   r!   r  )r!   r!   r!   TrV   )r#   r!   r!   r  F)r"   r#   N)r   r   r>   max_element_wiser  r   )r  r  arr3rM  s       r9   test_min_max_element_wiser  L  s   88ID88ID88L!D  t,FRXXi((((  t,FRXXi((((  tT2FRXXi((((  tT2FRXXi((((   t=FRXXi((((  t=FRXXi((((  dB::<>FRXXi((((  dB::<>FRXXi((((   t>FRXXl++++  t>FRXXl++++rC   rh   )r  g      %@g      %rW   )TFc                 N   t        |       }d |t        j                  |t        j                               t        j                  |t        j                               g}|D ]  }t        j
                  g d      t        j
                  g d      t        j                  dd gddgg      g}t        j
                  g d      |rt        j
                  g d      nt        j
                  g d	      |rt        j                  g dg      nt        j                  g d	g      g}t        |      D ]M  \  }}t        j                  |||
      }	t        j                  ||   ||nd      }
|	j                  |
      rMJ  ! d | t        j                  | t        j                               t        j                  | t        j                               g}|D ]  }t        j
                  g d      t        j
                  dt        j                  ddddg      t        j
                  dt        j                  d dd dg      g}t        j
                  g d      t        j
                  dt        j                  t        j                  t        j                  t        j                  t        j                  g      |rEt        j
                  dt        j                  d t        j                  d t        j                  g      n(t        j
                  dt        j                  d d d d g      g}t        |      D ]z  \  }}t        j                  |||
      }	t        j                  ||   ||nd      }
t        j                   j#                  |	j%                  d      |
j%                  d             |  dt        j                  d      dfD ]G  }t'        j(                  t        j*                        5  t        j                  g d|       d d d        I y # 1 sw Y   TxY w)Nr  r  )r   Nr     r   r  r  )r"   r!   r%   )r   Nr  r2  )r   NNNrg   )      ?g      @g     @@r"   r#   ru  r$   r
   r!   )r  g      @g     @Fzero_copy_onlyr   arrowr  rl  )r  r   r   r   r   r   r'  r  r>   cumulative_sumr   r   ru  rv  r   r5  r!  assert_array_almost_equalto_numpyr2   r3   r6  rh   rW   	start_intstartsstrtarraysexpected_arraysr  r   rM  r  s              r9   test_cumulative_sumr  n  s   
 E
IIryyCii	
35FHHYHH&'q$i"b23
 HHY HH&'!xx(=> /01!//1F0GH
  'FAs&&s$:NFvvoa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	
  'FAs&&s$:NFvvoa0$:J$#$&HJJ00$ 2A 2&'/'8'8'8'NP ( ( bii(#.]]2??+it4 ,+ /++   6PP$	c                 N   t        |       }d |t        j                  |t        j                               t        j                  |t        j                               g}|D ]  }t        j
                  g d      t        j
                  g d      t        j                  dd gddgg      g}t        j
                  g d      |rt        j
                  g d      nt        j
                  g d	      |rt        j                  g dg      nt        j                  g d	g      g}t        |      D ]M  \  }}t        j                  |||
      }	t        j                  ||   ||nd      }
|	j                  |
      rMJ  ! d | t        j                  | t        j                               t        j                  | t        j                               g}|D ]  }t        j
                  g d      t        j
                  dt        j                  ddddg      t        j
                  dt        j                  d dd dg      g}t        j
                  g d      t        j
                  dt        j                  t        j                  t        j                  t        j                  t        j                  g      |rEt        j
                  dt        j                  d t        j                  d t        j                  g      n(t        j
                  dt        j                  d d d d g      g}t        |      D ]z  \  }}t        j                  |||
      }	t        j                  ||   ||nd      }
t        j                   j#                  |	j%                  d      |
j%                  d             |  dt        j                  d      dfD ]G  }t'        j(                  t        j*                        5  t        j                  g d|       d d d        I y # 1 sw Y   TxY w)Nr  r  )r"   Nr  r
   r"   r  r
   )r"   r#   r%   )r"   Nr  rq   )r"   NNNrg   )r  r  r  r#   ru  r$   r!   )r  g      @g     @*@Fr  r   r  r  rl  )r  r   r   r   r   r   r'  r  r>   cumulative_prodr  r   ru  rv  r   r5  r!  r  r  r2   r3   r6  r  s              r9   test_cumulative_prodr    s   
 E
IIryyCii	
35FHHYHH%&q$i"a12
 HHY HH'(!xx(=> 012!//1F0GH
  'FAs''4JOF{{?1#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	
  'FAs''4JOF{{?1#5t?Ot()+HJJ00$ 2A 2&'/'8'8'8'NP ( ( bii(#.]]2??+y5 ,+ /++r  )r  r  g      @c                 T   t        |       }d |t        j                  |t        j                               t        j                  |t        j                               g}|D ])  }t        j
                  g d      t        j
                  g d      t        j                  g dg dg      g}t        j
                  g d      |rt        j
                  g d      nt        j
                  g d      |rt        j                  g dg      nt        j                  g dg      g}t        |      D ]X  \  }}t        j                  |||	      }	t        j                  ||   ||n
t        d
      d      }
|	j                  |
      rXJ  , d | t        j                  | t        j                               t        j                  | t        j                               g}|D ]R  }t        j
                  g d      t        j
                  dddt        j                  ddg      t        j
                  ddd t        j                  dd g      g}t        j
                  g d      t        j
                  g d      |rt        j
                  g d      nt        j
                  g d      g}t        |      D ]|  \  }}t        j                  |||	      }	t        j                  ||   ||nd
d      }
t        j                   j#                  |	j%                  d      |
j%                  d             ~ U dt        j                  d      dfD ]G  }t'        j(                  t        j*                        5  t        j                  g d|       d d d        I y # 1 sw Y   TxY w)Nr  )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#   NNNNrg   g    eFrV   )r  ?r  ffffff@皙@@r  r  r  r  r  )r  r  r  r  r  r  )r  r  r  r  r  r  )r  r  Nr  r  N)r  r  NNNNr  r   r  r  r  rl  )r  r   r   r   r   r   r'  r  r>   cumulative_maxr  r   ru  rv  r   r5  r!  r  r  r2   r3   r6  r  s              r9   test_cumulative_maxr    s   
 E
IIryyCii	
35FHH'(HH-.lL9:
 HH'( HH-.!xx(FG 678<=>
  'FAs&&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	
  'FAs&&s$:NF**"D,<D$ "H JJ00$ 2A 2&'/'8'8'8'NP ( * bii(#.]]2??+it4 ,+ /++   9NN'	c                 T   t        |       }d |t        j                  |t        j                               t        j                  |t        j                               g}|D ])  }t        j
                  g d      t        j
                  g d      t        j                  g dg dg      g}t        j
                  g d      |rt        j
                  g d      nt        j
                  g d      |rt        j                  g dg      nt        j                  g dg      g}t        |      D ]X  \  }}t        j                  |||	      }	t        j                  ||   ||n
t        d
      d      }
|	j                  |
      rXJ  , d | t        j                  | t        j                               t        j                  | t        j                               g}|D ]R  }t        j
                  g d      t        j
                  dddt        j                  ddg      t        j
                  ddd t        j                  dd g      g}t        j
                  g d      t        j
                  g d      |rt        j
                  g d      nt        j
                  g d      g}t        |      D ]|  \  }}t        j                  |||	      }	t        j                  ||   ||nd
d      }
t        j                   j#                  |	j%                  d      |
j%                  d             ~ U dt        j                  d      dfD ]G  }t'        j(                  t        j*                        5  t        j,                  g d|       d d d        I y # 1 sw Y   TxY w)Nr  )r
   r%   r$   r#   r!   r"   )r
   r%   Nr#   r!   N)r
   r%   Nr  )r
   r
   r$   r#   r#   r"   )r
   r
   Nr#   r#   N)r
   r
   NNNNrg   g    eAFrV   )      @333333@@ @333333@333333?r  r   r  r  r  )r  r  r  r  r  r  )r  r  r  r  r  r  )r  r  Nr  r  N)r  r  NNNNr  r   r  r  r  rl  )r  r   r   r   r   r   r'  r  r>   cumulative_minr  r   ru  rv  r   r5  r!  r  r  r2   r3   r6  r  r  s              r9   test_cumulative_minr    s   
 E
IIryyCii	
35FHH'(HH-.lL9:
 HH'( HH-.!xx(FG 678<=>
  'FAs&&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	
  'FAs&&s$:NF**"D,<D# "H JJ00$ 2A 2&'/'8'8'8'NP ( * bii(#.]]2??+it4 ,+ /++r  c                     t        j                  dd      j                         dddk(  sJ t        j                  ddddg      j                         dddk(  sJ t        j                  g dd	j                               t        j
                  j                  g dd	j                         gd
j                               k(  sJ t        j                  t        d      5  t        j                  g dd	j                                d d d        t        j                  t        d      5  t        j                  ddg       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)Nr"   r   )0r]   r  rx   )field_names)r  rx   r  za b cz0 1r  r?  r,   r  z0 arguments but 2 field namesonetwo)
r>   make_structr#  splitr   r  r  r2   r3   r  r   rC   r9   test_make_structr  P  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                     t        j                  t        j                         t        j                               } t        j                  ddgdgg ddgd g|       }t        j                  g dt        j                               }t        j                  g dt        j                               }t        j                  d	gd d d
dgd gt        j
                  t        j                                     }t        j                  |dd      |k(  sJ t        j                  |t        j                  dt        j                               d      |k(  sJ t        j                  |t        j                  dt        j                               d      |k(  sJ t        j                  |t        j                  dt        j                               d      |k(  sJ y )N)r
  r"   )r  r#   )noner!   )r
  r
   )r
  r:  r  )r"   NNr
   N)r"   NNr:  Nr"   r
   r:  r
  ra   lastr   )	r   map_r  r   r   r`  r>   
map_lookupr   )rK  r   result_firstresult_last
result_alls        r9   test_map_lookupr  c  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 5rC   c                  J   t        j                  g dt        j                               } t        j                  g d      }t         j                  j	                  | |gddg      }t         j                  j	                  | |gddg      }t        j                  |d      |k(  sJ t        j                  |d      |k(  sJ t        j                  |ddg      |k(  sJ t        j                  |d	dg      |k(  sJ t        j                  |d
      |k(  sJ t        j                  |t        j                  d            |k(  sJ t        j                  |d      | k(  sJ t        j                  |dg      | k(  sJ t        j                  |d      | k(  sJ t        j                  |t        j                  d            | k(  sJ t        j                  |d	d	g      |k(  sJ t        j                  |d      |k(  sJ t        j                  |dg      | k(  sJ t        j                  |g       |k(  sJ t        j                  t         j                  d      5  t        j                  |d       d d d        t        j                  t         j                  d      5  t        j                  |d       d d d        t        j                  t         j                  d      5  t        j                  |d       d d d        y # 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   y xY w)Nr$   r
   r%   r  )r   Nrs  r   r   rd  z.c.bs   .c.br"   )r    r   )rd  r   z.a)r   ry   )r"   r"   r   zNo match for FieldRefr,   r   z.c.fooz.a.foo)r   r   r   r  r  r>   struct_fieldr[   r2   r3   r6  )r   r   rd  r   s       r9   test_struct_fields_optionsr  u  s}   
,A
"#A
""Aq6C:6A
..
$
$aVc3Z
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$   LL!LL
LL"c                      t        j                  t        j                  g dg d      g dg d      t        j                  g d      k(  sJ y )Nr  )FTNr  )   r  r  )r"   r  N)r>   	case_whenr  r   r   r   rC   r9   test_case_whenr    sE    <<':':<!$& *,-)@A A ArC   c                  b   t        j                  dt        j                         fdt        j                         fg      } t        j                  |       }dddd dddd dd	dg}d d
dddddd dddg}t        j
                  ||g|      }d}t         j                  j                  ||      }t        j
                  d d
ddg|       }|j                  |      sJ d}t         j                  j                  ||      }t        j
                  dd	ddddg|       }|j                  |      sJ y )Nr   r   r   r#   r(   r   r$   gffffff@r%   gp=
ף?r!   gffffff?g333333?r   r"   )	r   rX  rv  r   r`  r   computelist_elementr   )element_type	list_typel1l2listsrn  rM  r  s           r9   test_list_elementr(    s   99sBJJL1C3CDEL&I
T!#4d#A<N	OB
c""1$5t2A=N	OBHHb"Xy)EEZZ$$UE2FxxT23\BH=="""EZZ$$UE2Fxxs+2A->?NH=="""rC   c                  R   t        dd      D  cg c]  } t        j                  | dd       }} t        j                  |t        j                  d            }t        j                  |      t        j                  t        |      t        j                               k(  sJ y c c} w )Ni  i,  r"   )r  r  r  r  r  )
rz  ra  r   r   r  r>   count_distinctr   r/   r   )ysamplesr   s      r9   test_count_distinctr-    s{    BGdBSTBSQx  aqa8BSGT
((7BLL.
/CS!RYYs7|"((*%MMMM Us   B$c                     t        j                  g d      } t        j                  |       j	                         dk(  sJ t        j                  | d      j	                         dk(  sJ t        j                  | d      j	                         dk(  sJ t        j                  | d      j	                         dk(  sJ t        j                  | d      j	                         dk(  sJ y )	Nrf  r!   rg  rh  ri  r"   r   r$   )r   r   r>   r*  r#  r  s    r9   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5rC   c                     t        j                  dg      } t        j                  | d      | k(  sJ t        j                  | d      t        j                  dg      k(  sJ t        j                  | d      | k(  sJ t        j                  | d      t        j                  dg      k(  sJ t	        j
                  t        d	      5  t        j                  | d
       d d d        y # 1 sw Y   y xY w)Nu   01²3NFC)formr|   0123NFDNFKDz/"NFZ" is not a valid Unicode normalization formr,   NFZ)r   r   r>   utf8_normalizer2   r3   r  r  s    r9   test_utf8_normalizer8    s    
((G9
CSu-444Sv."((F82DDDDS%(C///S&)RXXvh-????	C
E 	#E*
E 
E 
Es   C))C2c            
         dD ]E  } t        j                  d|       t        j                  g t        j                               k(  rEJ  t        d      D cg c].  }t        t        j                  d      j                               0 }}t        t        |            t        |      k(  sJ t        dd      D cg c]3  }t        t        j                  d|dz        j                               5 }}t        t        |            dk(  sJ t               dd	g}|j                  d
 t        d      D               |D cg c]0  }t        t        j                  d|      j                               2 }}t        t        |            t        |      k(  sJ t        j                  t        d      5  t        j                  dg        d d d        y c c}w c c}w c c}w # 1 sw Y   y xY w)N)systemr  is   abcdefr   )initializerr  r   rq   r:  r  r   c              3   F   K   | ]  }t        j                  d         yw)r   N)osurandom)r   r  s     r9   r   ztest_random.<locals>.<genexpr>  s     :	1

2	s   !zJinitializer should be 'system', an integer, or a hashable object; got \[\]r,   )r>   r  r   r   rv  rz  tupler  r/   r  r1   r  r2   r3   r4   )r;  r  r  initializerss       r9   test_randomrA    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   3G=8G5G!6G&&G/ztiebreaker,expected_valuesr  )r!   r"   r$   r%   r$   r%   r"   rj   )r!   r#   r
   r:  r
   r:  r#   ra   r!   r"   r$   r%   r
   r:  r#   dense)r#   r"   r!   r$   r!   r$   r"   c                    t        j                  g d      }t        j                  dd|       }t        j                  ||      }t        j                  |t        j
                               }|j                  |      sJ y )Nr  r~  333333@NrF  Nr~  ri   r  rk   r  r  )r   r   r>   r   rankr   r   )rm   expected_valuesr   rank_optionsrM  r  s         r9   test_rank_options_tiebreakerrJ    sc     ((8
9C>>K19-79L WWS,/Fxxbiik:H=="""rC   c                     t        j                  g d      } t        j                  g dt        j                               }t        j                  |       }|j                  |      sJ t        j                  | t        j                               }|j                  |      sJ t        j                  | t        j                  dg            }|j                  |      sJ t        j                  | d      }t        j                  g d	t        j                               }|j                  |      sJ t        j                  | d
      }t        j                  g dt        j                               }|j                  |      sJ t        j                  t        d      5  t        j                  d
dd       d d d        y # 1 sw Y   y xY w)NrE  rB  r  r  rr   rs   rd   re   )r
   r!   r%   r"   r:  r#   r$   rv   )r!   r$   r"   r%   r#   r:  r
   z'"NonExisting" is not a valid tiebreakerr,   r  NonExistingrk   )
r   r   r   r>   rG  r   r   r2   r3   r  )r   r  rM  expected_at_startexpected_descendings        r9   test_rank_optionsrO    sZ   
((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   +GGc                  `
   t        j                  t        j                  dt        j                               t        j                  dt        j                  t        j                  dt        j
                               g            g      } t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d       }t        j                  ddi      }t        j                  t        j                  d            }t        j                  t        j                  d	            }t        j                  d
      }	||||||||	g}
g ||k(  ||k7  ||kD  ||	z  ||	z  | |j                         ||z   ||z
  ||z  ||z  t        j                  |      t        j                  ||      t        j                  ||      t        j                  ||      t        j                  ||      t        j                  ||      t        j                   |      t        j"                  |      t        j$                  |      t        j&                  |      t        j(                  |      t        j*                  |      t        j,                  |      t        j.                  |      t        j0                  ||      t        j2                  |      t        j4                  |      t        j6                  |      t        j8                  ||      t        j:                  ||      t        j<                  ||      t        j>                  |      t        j@                  |      t        jB                  ||      |jE                  t        jF                         d
      }t        j                  d      dkD  t        j                  d      dk(  t        j                  d      dk(  t        j                  d      dk(  t        j                  dd      dk(  g}t        j                  d      dkD  t        j                  d      dk(  t        j                  d      dk(  t        j                  d      dk(  t        j                  dd      dk(  g}||jI                  g d      t        j                  d      jK                         g}|
jM                         }||z  }||z  }||z  }||
||||| dS )Ni64r   r   r"   r  Tr   r   r#   Fr]  r
   r:  )r   r   rZ  r   )r"   r   r  )r   literalscallsrefsnumeric_refsspecialschema)'r   rW  r[   r   rX  r   r>   r   r   r  negater   r  divider  powersqrtexpcossintanacosatanasinatan2r  signbit_wise_notbit_wise_andbit_wise_orbit_wise_xorr;  	is_finitecoalescer`  r   isinr  copy)rW  r   r   rd  r^  ry  rz  r{  r|  r}  literal_exprsexprs_with_callexprs_with_refexprs_with_numeric_refsspecial_cases	all_exprss                   r9   create_sample_expressionsrs    s   YY
3RXXryy"((5"))+6786: ; <F 			!A
		#A
		$A
		(A
		$A
		3(A
		"))A,A
		"((1+A
		%A 1aAq!,M
7qAv 
7qAv 
7q1u 
7a!e 
7QU 
7QB 
7

 
71u
7!e
7%&U
7,-E
73599Q<
7vva|
7%'[[A%6
78:		!Q
7 {{1a(
7 +-((1a.
7 ;=''!*
7 vvay	
7 #%&&)	
7 .0VVAY	
7 9;q		
7
 wwqz
7
 $&771:
7
 02wwqz
7
 <>88Aq>
7 vvay
7 #%''!*
7 /1ooa.@
7 q!,
7 /1nnQ.B
7 q!,
7 /1iil
7 =?LLO
7 {{1a(
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 ! /  rC   c                     t               d   D ]Q  }t        |t        j                        sJ | j	                  | j                  |            }|j                  |      rQJ  y )Nr   )rs  r   r>   
Expressionr  r  r   )r	  exprrestoreds      r9   #test_expression_serialization_arrowrx  e  sU    )+E2$... &&}':':4'@A{{8$$$ 3rC   c                  x   t               } | d   }| d   D ]E  }|j                  |      }t        j                  j	                  |      }|j                  |      rEJ  | d   D ]  }|j                  |      }t        j                  j	                  |      }t        |      t        |      k(  sJ |j                  |      }t        j                  j	                  |      }|j                  |      rJ  t        | d   | d         D ]  \  }}|j                  |      }t        j                  j	                  |      }t        |      t        |      k(  sJ |j                  |      }t        j                  j	                  |      }|j                  |      rJ  | d   D ]u  }|j                  |      }t        j                  j	                  |      }|j                  |      }t        j                  j	                  |      }|j                  |      ruJ  | d   d   }|j                  |      }t        j                  j	                  |      }|j                  t        j                  dd	i            sJ t        j                  d	      }	|	j                  g d
      }|	d	k(  |	dk(  z  |	dk(  z  }
|j                  |      }t        j                  j	                  |      }t        |
      t        |      k(  sJ |j                  |      }t        j                  j	                  |      }|j                  |      sJ y )NrW  rR  rS  rT  rU  rV  r   rs  r"   r  r#   r!   )
rs  to_substraitr>   ru  from_substraitr   r  r   r   rk  )exprsrW  rv  
serializedr   serialized_againdeserialized_again	expr_normrz  r   targets              r9   'test_expression_serialization_substraitr  m  s    &'E8_F j!&&v.
}}33J?{{<((( " g&&v.
}}33J? < CI---'44V<]]99:JK""#5666  uV}eN.CDi&&v.
}}33J?< C	N222'44V<]]99:JK""#5666 E i &&v.
}}33J?'44V<]]99:JK""#5666 ! 	iA'J==//
;Lryy"a1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2rC   c                     t        j                  d      } t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  ddd      }t        j                  d	      }t        j                  d
d      }| |z  |k(   | |k(   dt        j                         fD ]  }	|j                  |	      |k(    |j                  ddg       |j                  ddg       |j                  ddg       |j                  ddg       t        j                  t              5  |j                  d       d d d        t        j                  t        j                        5  |t               k7   d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nr   r"   TFr   r[   r   r   )nestedr[   r  r   r#   r   r   )r>   r   r[   r   r  r`  rk  r2   r3   r4   r6  r1   )
zeror
  truefalser   r[   nested_mixed_typesnested_fieldnested_field2r  s
             r9   test_expression_constructionr    sY   99Q<D
))A,C99T?DIIeEYYx FHHWE$3/88/0LHHXw/M3J&	EUN
#

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

1 
" 
r	' 
(	' 
"	! 
(	's   #F7 G7G Gc                     t        j                  d      } t        j                  d      }t        j                  t        d      5  | xr | d d d        t        j                  t        d      5  | xs | d d d        t        j                  t        d      5  t        |        d d d        t        j                  t        d      5  |   d d d        y # 1 sw Y   xY w# 1 sw Y   lxY w# 1 sw Y   IxY w# 1 sw Y   y xY w)NTFz"cannot be evaluated to python Truer,   )r>   r   r2   r3   r  r   )r  r  s     r9   !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0C"C.	C:C"C+.C7:Dc                  R   t        j                  d      } t        t        j                  |             dk(  sJ t        t        j                  |             dk(  sJ t        t        j                  | d            dk(  sJ t        t        j
                  | d            dk(  sJ t        t        j
                  | t        j                  d                  dk(  sJ d}t        j                  t        |	      5  t        j
                  | t               d d d        y # 1 sw Y   y xY w)
Nr[   zhour(field)zround(field)r"   r  z2round(field, {ndigits=1, round_mode=HALF_TO_EVEN})zadd(field, 1)z+only other expressions allowed as argumentsr,   )r>   r[   r  r  r  r   r   r   r2   r3   r4   r1   )r[   r7  s     r9   test_expression_call_functionr    s    HHWE rwwu~-/// rxx>111rxxq)*<= = = rvveQ O333rvveRYYq\*+>>> 8C	y	,
uf 
-	,	,s   9DD&c                  
   t        j                  dddgi      } t        j                  t         j                  j
                        5  t        j                  | t        j                                d d d        y # 1 sw Y   y xY w)Nr   r"   r#   )	r   r  r2   r3   rm  rn  r>   r`  r   )r  s    r9   test_cast_table_raisesr    sN    HHcAq6]#E	rvv,,	-
rxxz" 
.	-	-s   )A99Bzstart,stop,expectedr  r  r%   NNry  r"   r#   r$  fixedc                    |dk(  rot        j                  g dg dg dd gt        j                  t        j                         d            j	                  t        j                   |       d            }n^t        j                  g dddgdgd gt        j                  t        j                                     j	                   | |                   }|| ||d	f}|H|dk7  rCd
}t        j                  t         j                  |      5  t        j                  |  d d d        y t        j                  | }	|	j	                  t        j                  t        j                         |	j                  j                              j                         }
|
|D cg c]  }|r|d d |   n| c}k(  sJ y # 1 sw Y   y xY wc c}w )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`  r2   r3   r6  r>   
list_slicer   	list_sizer  )rh   rx  ry  r  re  r$  r   r8   r7  rM  pylistry  s               r9   test_list_slice_output_fixedr    sh    Ghh	<$Gxx	1-//3tBHHZ\14M/N 	 hh	Aq6A35xx	*,,0D:<1H,I 	 tT4'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   F/F;/F8z
start,stop))r   N)r   r"   )r   r#   r  )r#   r$   c                    |dk(  rqg dg dg dd g}t        j                  |t        j                  t        j                         d            j	                  t        j                   |       d            }n`g dddgdgd g}t        j                  |t        j                  t        j                                     j	                   | |                   }|dk(  rt         j                  }t        j                  || ||d	
      }|j                   | |             k(  sJ |j	                  t        j                  t        j                                     j                         }|D 	cg c]  }	|	|	| ||   nd  }
}	||
k(  sJ y c c}	w )Nr  r  r  r  r!   r$   r
   r%   Freturn_fixed_size_list)	r   r   r`  r   r`  r>   r  r   r  )rh   rx  ry  re  r$  r>  r   rM  r  r^  r  s              r9   test_list_slice_output_variabler    sP    G<$?hhHHRWWY"$$(D*,)B$C 	 Aq6A3-hhtxx	*,,0D:<1H,I 	 GHH	]]3tT279F;;)JL1111[["''),-779F HLLt!am%T/"=tHLX Ms   *Freturn_fixed_sizer  r   c                  x    t        j                  t        j                  dt        j                                     S Ncolr   r`  r[   r   r   rC   r9   r  r  =  s    BHHRXXeRWWY/0rC   c                  z    t        j                  t        j                  dt        j                               d      S )Nr  r"   r  r   rC   r9   r  r  >  s     BHHRXXeRWWY/3rC   c                  x    t        j                  t        j                  dt        j                                     S r  )r   rb  r[   r   r   rC   r9   r  r  ?  s    BMM"((5"'')45rC   c                 F   t        j                  dgg |             }t        j                  |dd|       }|j                  j                  d      j                  |j                  j                  d      j                  k(  sJ | |j                  |j                  k(  sJ y y )Nr"   r   r  )r   r   r>   r  r   r[   r<   )r  r   r   outs       r9   $test_list_slice_field_names_retainedr  ;  s     ((QC5$&
!C
--Q:K
LC88>>!!!SXX^^A%6%;%;;;;  xx388### !rC   c                     t        j                  dggt        j                  t        j                         d            } d}t	        j
                  t         j                  |      5  t        j                  | dd       d d d        t	        j
                  t         j                  |      5  t        j                  | dd       d d d        t	        j
                  t         j                  |      5  t        j                  | dd       d d d        d}t	        j
                  t         j                  |dz         5  t        j                  | ddd	       d d d        t	        j
                  t         j                  |d
z         5  t        j                  | ddd	       d d d        y # 1 sw Y   +xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   y xY w)Nr"   z@`start`(.*) should be greater than 0 and smaller than `stop`(.*)r,   rY   r#   r   z`step` must be >= 1, got: r  )ry  z-1)	r   r   r`  r   r2   r3   r6  r>   r  )r   r7  s     r9   test_list_slice_bad_parametersr  J  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'+F40G :GG'F14F= G	GG!c                     t        j                  g d      }t        j                  ||       }t        j                  |      }|j
                  |j
                  k(  sJ |j                  |      sJ y )N)r"   r"   r"   r#   r#   r"   r"   r"   r"   r"   r!   r!   r!   r!   r!   r!   r!   r!   r!   r  )r   r   r>   run_end_encoderun_end_decoder   r   )run_end_encode_optsr   encodeddecodeds       r9   check_run_end_encode_decoder  ^  s\    
((L
MC-@AG(G<<388###>>#rC   c                     t                t        t        j                  t        j                                      t        t        j                  d             t        t        j                  t        j
                                      y )Nr   )r  r>   r   r   r   r   r   rC   r9   test_run_end_encoder  f  sM    ! 6 6rxxz BC 6 6w ?@ 6 6rxxz BCrC   c                     t        j                  g d      } t        j                  g d      }t         j                  j                  | d      }|j	                  |      sJ t        j                  g d      } t        j                  g d      }t         j                  j                  | d      }|j	                  |      sJ t        j                  g dt        j
                               } t        j                  g dt        j
                               }t         j                  j                  | d	      }|j	                  |      sJ t        j                  g dt        j                               } t        j                  g d
t        j                               }t         j                  j                  | d	      }|j	                  |      sJ t        j                  g dt        j                               } t        j                  t         j                  d      5  t         j                  j                  | d	       d d d        y # 1 sw Y   y xY w)N)r"   r#   r!   Nr$   r
   )Nr"   r"   NNr"   r"   rb   )NNr#   Nr"   Nr#   r  )rY   rY   NNrY   NrY   )   r  NNr  Noverflowr,   )r   r   r!  pairwise_diffr   r   r	   r2   r3   r6  pairwise_diff_checked)r   r  rM  s      r9   test_pairwise_diffr  m  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)r"   r   )collectionsr   ra  r  	functoolsr   r   rF   r{  r  r=  r2   r  r  r  numpyr   ImportErrorpandasr  r   r   pyarrow.computer!  r>   pyarrow.libr   pyarrow.substrait	substraitpasr  __dict__r  r$  r.   r   r   r   
issubclassrE   r   r   r   r	   r   r   ru  rv  numerical_arrow_typesrz  r   r`  rb  rX  all_array_typesr:   rB   rP   markfilterwarningsr   r   r   r   r   r   r   r  r  r  r  r  parametrizer%  r)  r2  r4  r8  r?  rN  rR  rW  r]  rb  rh  rq  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"  r*  r6  rA  rK  rQ  rY  rc  rm  rs  rw  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r(  r3  r7  r<  rD  rI  rK  rS  rY  rd  date32date64ri  rs  rt  rw  rz  r&  decimal_type_traitsr  r  r  r  r  r  r  r  r  r  r   r  r)  r0  r4  rL  r]  rd  rj  ro  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/  r8  rA  rJ  rO  rs  rx  r  r  r  r  r  r   r  r  r  r  r  r  r  )r<   r6   rM   s   000r9   <module>r     s{  $ #   (    	   
    0#
 $BKK$5$5$7848\dDt12 	84 
 ""++"3"3"56.6KT332%%%3**+ 6.  BGGIBHHJBHHJBHHJBIIKBIIKBJJLBJJL	  -.eAhU1XuQxeAhuQxeAhuQ|eArl%&&',-01RYYq\;<RXXgbggiAq6Aq6Aq64!RABR]]8288:!i!Q2w GHRYYgbggi 3	"234a$aa 0$aa8H7J K#,40	9 B[B[B|( )*JFI5
3
 $ $=	%	> '<=1 >1* '<=1 >1,9<"")4"'2"####,L.0###< D6&76(bJ;D   !&) . 4 3 ".  %'99&"&'   +E F
 Wf$56F 7FF(C$ 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 			YRYY['AB+ C+ '<= >< 2CE    4 CE  )r}}bI(r}}bIK  CCF.0 jbjjl^=':-  /)>:<> >	  ?
/?/ > / jbjjlJBJJL%AsK)+>-  /6A/ L 6ArG8 GA  GATPIf = =< !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ET % % :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
$*(D9Yr  	B
  	B  
C4.s@   u  u. u< ;v
76v u+*u+.u98u9<vv