o
    ZhJ(                    @   s>  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zd dlZW n eyK   dZY nw d dlZd dlmZ d dlmZ d dlmZ zd dlmZ W n eyu   dZY nw dg dfde d	fd
e d	fde d	fde d	fde d	fde d	fde d	dfde d	dfde d ddfde d ddfdg dfdg dfe!dg dfe"e# ddgddgd	dgdd d!ggfe$e% dgg d"d	dgdd d!ggfe&d#e# fd$e# fgddd%dddd%dd	dd%gfgZ'd&d' e(ej)* D Z+d(d' e(ej)* D Z,e# e% e- e. e/ e0 e1 e2 gZ3d)d* Z4d+d, Z5d-d. Z6ej78d/d0d1 Z9d2d3 Z:	dd4d5Z;d6d7 Z<d8d9 Z=d:d; Z>d<d= Z?d>d? Z@d@dA ZAdBdC ZBdDdE ZCdFdG ZDej7EdHe3dIdJ ZFej7EdHe3dKdL ZGdMdN ZHdOdP ZIdQdR ZJdSdT ZKdUdV ZLdWdX ZMdYdZ ZNd[d\ ZOd]d^ ZPd_d` ZQdadb ZRdcdd ZSdedf ZTdgdh ZUdidj ZVdkdl ZWdmdn ZXdodp ZYdqdr ZZdsdt Z[dudv Z\dwdx Z]dydz Z^e d{d| Z_d}d~hZ`h dZah dZbh dZch dZbebecB e`B e`ecebeadZdej7Edg dej7Edddgdd Zedd Zfej7jdd Zgdd Zhdd Zidd Zjdd Zkdd Zlej7Ede'dd Zmdd Zndd Zoej7Edddgdd Zpdd Zqej7Ede'dd Zrdd Zsdd Ztdd Zudd Zvej7Ede'dd Zwdd Zxdd Zydd Zzdd Z{dd Z|ej7Edddgdd Z}ej7EdddgddÄ Z~ej7Edddgddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zej7Edddgdd҄ ZddԄ Zddք Zdd؄ Zddڄ Zdd܄ Zddބ Zej7EdHe3dd Zej7EdHe3dd Zdd Zdd Zdd Zej7Ede3dd ZeddZeddZedejdedejdgZdd Zdd Zdd Zdd Zdd Zdd Zej7jEd e2 gedej7jEdedd dej7jEdeeegg dddd Zej7jEd e1 e2 gedej7jEd	ed
d ddd Zdd Zej7jej7jejdkoe  dddd ZdddZej7jdd Zej7Edg ddd Zej7jej7jejdko'e  dddd Zdd Zej7jejdkoHe  ddej7Edd ej7jd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB Zej7EdCdDej7EdEdFdGdH Zej7EdCdDej7EdEdFdIdJ Zej7EdCdKej7EdEdFdLdM Zej7EdCdKej7EdEdFdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ ZÐd\d] ZĐd^d_ ZŐd`da Zej7Edbdcg ddfdeg dffdgg dhfdig djfgdkdl Zǐdmdn ZȐdodp Zɐdqdr Zej7jdsdt Zːdudv Z̐dwdx Z͐dydz Zΐd{d| Zej7Ed}d dg d~g dg ddgfd ddgdgdgdgfd dddgdd	gddgdgfdddgd	gdgdgfddddgddgddgdgffej7Eddej7Edejej%ej2fej7Edej"ej$dfdd Zej7Eddej7Eddej7Edejej%ej2fej7Edej"ej$dfdd Zej7Eddej7Eddd dd dd fdd ZӐdd ZԐdddZՐdd Z֐dd ZdS (      )
namedtupleN)	lru_cachepartial)ArrowNotImplementedError)utilbool)TFFTTuint8   int8uint16int16uint32int32uint64
   int64float      ?皙?doublestring)abNZdddeebinary)   a   b   cs   ddds   ee   )s   abcs   bcds   cdes   defs   efg            	      )r    r   r!   r   r   r   r   c                 C   s   g | ]\}}t |d r|qS )__arrow_compute_function__)hasattr).0namefunc r+   Q/var/www/html/lang_env/lib/python3.10/site-packages/pyarrow/tests/test_compute.py
<listcomp>E   s    r-   c                 C   s4   g | ]\}}t |tr|tjurt|tjr|qS r+   )
isinstancetypepcFunctionOptions
issubclass)r(   r)   clsr+   r+   r,   r-   I   s    

c               	   C   s   t } t| dks
J | D ]?}|j}|d rq|d }|dkrq|tu r*t gd }nt g| }tjtdd ||  W d    n1 sFw   Y  qd S )Nr   Zoptions_requiredarityr   r   zBGot unexpected argument type <class 'object'> for compute functionmatch)exported_functionslenr&   Ellipsisobjectpytestraises	TypeError)Z	functionsr*   Zdescr4   argsr+   r+   r,   test_exported_functions[   s&   
r?   c                  C   s,   t D ]} t| jd }|jdksJ qd S )Nr)   Zhash_aggregate)r7   r0   get_functionr&   kind)r*   Zarrow_fr+   r+   r,    test_hash_aggregate_not_exportedu   s   rB   c                  C   sR   t } t| dks
J | D ]}t|}|j D ]}|j|j|jfvs%J qqd S )Nr   )	exported_option_classesr8   inspect	signature
parametersvaluesrA   VAR_POSITIONALVAR_KEYWORD)classesr3   sigparamr+   r+   r,   test_exported_option_classes}   s   
rM   z<ignore:pyarrow.CumulativeSumOptions is deprecated as of 14.0c               	   C   s  g t  t dt jt t  t jdddt 	 t 
 t jddt dt  t tdt  t dd	ddt jd
dgddgtdditddigdt tddt dt  t  t dt jddt jdddt jd ddt  t  t jddddt dddt  ddt !ddt "dt j#ddddt $ddt % t j&ddgd t 't(dgt )dddt j*d!gddt + t ,dt - t .d"d#dt j/g d$t 0 t 1 t 2d%t 3d&t 4 t j5dddd'} t6j7d(ks-t89 r5| :t d) d*d+ | D }t;D ]6}||vrst6j7d(ksPt89 rs|t jkrsz	| :|  W q> t<yr   t=>d,|  Y q>w q>| D ]F}||ksJ t?|@|jAjBsJ |C }t jDE|}||ksJ t?|@d-rt?|@d.sJ qwt?|t?|ksJ qwtF| | dd  D ]\}}||ksJ qt?t tdd/ksJ t?t  d0ksJ d S )1NUTCFr   count_from_zeroZ
week_startT
skip_nullspatternr   fieldnamesr   1r   2)Zfield_nullabilityZfield_metadatafirstr	   Zperiodat_startnull_placementstartrR   	ascendingmax	sort_keysr]   
tiebreakerr    towards_infinitysecond)week_starts_mondayd   r   r`   rc   dummy
descending%Ysindices NFKCrg   rP   Zfirst_week_is_fully_in_yearwin32Europe/Ljubljanac                 S   s   h | ]}t |qS r+   r/   )r(   optionr+   r+   r,   	<setcomp>   s    z-test_option_class_equality.<locals>.<setcomp>zOptions class is not tested: ZCumulativeSumOptionsCumulativeOptionszIndexOptions(value=int64:1)z7ArraySortOptions(order=Ascending, null_placement=AtEnd))Gr0   ZArraySortOptionsAssumeTimezoneOptionsCastOptionssafepar
   ZCountOptionsDayOfWeekOptionsZDictionaryEncodeOptionsRunEndEncodeOptionsElementWiseAggregateOptionsZExtractRegexOptionsZFilterOptionsZIndexOptionsscalarJoinOptionsZListSliceOptionsZMakeStructOptionsZKeyValueMetadataZMapLookupOptionsZMatchSubstringOptionsZModeOptionsZNullOptionsZ
PadOptionsZPairwiseOptionsZPartitionNthOptionsrz   ZQuantileOptionsZRandomOptionsRankOptionsZReplaceSliceOptionsZReplaceSubstringOptionsRoundOptionsZRoundBinaryOptionsRoundTemporalOptionsRoundToMultipleOptionsScalarAggregateOptionsSelectKOptionsZSetLookupOptionsarrayZSliceOptionsSortOptionsZSplitOptionsZSplitPatternOptionsStrftimeOptionsZStrptimeOptionsZStructFieldOptionsTakeOptionsZTDigestOptionsZTrimOptionsZUtf8NormalizeOptionsZVarianceOptionsWeekOptionssysplatformr   windows_has_tzdataappendrC   r=   r;   Zfailrepr
startswith	__class____name__	serializer1   Zdeserializezip)optionsrJ   r3   rx   bufdeserializedZoption1Zoption2r+   r+   r,   test_option_class_equality   s  
	




 !"
#$%&'()*+,
-./01237

r   c                   C   s(   t t dks
J dt v sJ d S )Nr   add)r8   r0   list_functionsr+   r+   r+   r,   test_list_functions   s   r   c                    s\   t | }t||sJ |j}||ksJ |t|jksJ t fdd|jD s,J d S )Nc                 3   s    | ]}t | V  qd S N)r.   r(   kerexpected_ker_clsr+   r,   	<genexpr>       z&_check_get_function.<locals>.<genexpr>)r0   r@   r.   num_kernelsr8   kernelsall)r)   Zexpected_func_clsr   Zmin_num_kernelsr*   nr+   r   r,   _check_get_function   s   
 r   c                   C      t dtjtjd d S )Nr      )r   r0   ZScalarFunctionZScalarKernelr+   r+   r+   r,   test_get_function_scalar      r   c                   C   r   )Nuniquer   )r   r0   ZVectorFunctionZVectorKernelr+   r+   r+   r,   test_get_function_vector   r   r   c                   C   r   )Nmeanr   )r   r0   ZScalarAggregateFunctionZScalarAggregateKernelr+   r+   r+   r,   "test_get_function_scalar_aggregate      r   c                   C   r   )NZhash_sumr   )r   r0   ZHashAggregateFunctionZHashAggregateKernelr+   r+   r+   r,    test_get_function_hash_aggregate  r   r   c                  C   s   t g d} tg d}| |}tjd| |gt  d}t g d}||s-J ||s4J tj| |t  d}||sEJ d S )N)foobarbaz)r    r    r   take)Zmemory_pool)r   r   r   )r~   r   npr   r0   Zcall_functionZdefault_memory_poolequals)arrrq   Zresult1Zresult2expectedZresult3r+   r+   r,   #test_call_function_with_memory_pool
  s   
r   c                 C   sp   t  D ]1}t |}| | |}t|t|u sJ |j|jks%J |j|jks-J |j|jks5J qd S r   )	r0   r   r@   loadsdumpsr/   r)   r4   r   pickle_moduler)   r*   Zreconstructedr+   r+   r,   test_pickle_functions  s   
r   c              	   C   sP   t  D ]!}ztt |}W n	 ty   Y qw | | |}||u s%J qd S r   )r0   r   getattrAttributeErrorr   r   r   r+   r+   r,   test_pickle_global_functions#  s   r   c                  C   s   t  D ]:} t | }t|t jsJ |j| ksJ |j}|jt|ks&J t	dd |D s1J t
| |D ]}t
| q7qd S )Nc                 s   s    | ]	}t |tjV  qd S r   )r.   r0   ZKernelr   r+   r+   r,   r   7  s    z+test_function_attributes.<locals>.<genexpr>)r0   r   r@   r.   Functionr)   r   r   r8   r   r   )r)   r*   r   r   r+   r+   r,   test_function_attributes/  s   

r   c                  C   sp   t ddgdd g} |  dd gksJ t ddgd} |  ddgks&J t g dd g dks6J d S )	Nr   r    r!   r	   r"   )r   r   Nr   TFN)r0   r   	to_pylistequalr   r+   r+   r,   test_input_type_conversion=  s   

r   
arrow_typec                 C   s<  t jg d| d}|  dksJ t| dksJ t jg d| d}|  dks1J t| dks<J t jd g| d}|  d u sNJ t| d u sYJ |jdd dkseJ tj|dd dksrJ t jg | d}|  d u sJ |jdd dksJ tj|dd dksJ d S )Nr   r    r   r!   rw   r   r   r    r   r!   Nr   	min_count)r~   r   sumas_pyr0   r   r   r+   r+   r,   test_sum_arrayI  s   r   c                 C   s  t t jg d| dg}t| dksJ t t jddg| dt jddg| dg}t| dks8J t t jddg| dt jg | dt jddg| dg}t| dks^J t jd| d}|jd	kslJ t| d u swJ tj|d	d
 d	ksJ d S )Nr   rw   r   r   r    r   r!   r+   r   r   )r~   chunked_arrayr   r0   r   r   
num_chunksr   r+   r+   r,   test_sum_chunked_array_  s     r   c                  C   s  t jg ddd} t| }t|dksJ |d  dddks#J tj| dd}t|dks2J |d  dddks?J |d  d	ddksLJ t jg dd} tt| dks^J t jg d
dd} tj| dd}t|dksvJ tj| dd}t|dksJ tj| ddd}t|dksJ t ddg} tj| dd}t|dksJ |d  dddksJ |d  dddksJ d S )Nr   r   r   r!   r   r	   r   rw   r   r   r    modecountr   r   )r   r   r   r!   r   NFrQ   r"   r   r	   rR   r   T)r~   r   r0   r   r8   r   r   r   r+   r+   r,   test_mode_arrayv  s,   
r   c                  C   s   t t jg dddg} t| }t|dksJ |d  dddks'J tj| dd}t|dks6J |d  dddksCJ |d  d	ddksPJ t jd
dd} | jdks^J tt| dksiJ d S )Nr   r   rw   r   r   r    r   r   r   r+   )r~   r   r   r0   r   r8   r   r   r   r+   r+   r,   test_mode_chunked_array  s   
r   c                  C   sT   d} t jtj| d tg  W d    n1 sw   Y  tjg t d d S )Nz@cannot construct ChunkedArray from empty vector and omitted typer5   rw   )r;   r<   r~   ArrowInvalidr   r
   )msgr+   r+   r,   test_empty_chunked_array  s
   r   c                  C   sV   g d} t |  dksJ t j| dd dksJ t j| dd dks)J d S )N)r   r    r   r!   r	   r"      r   g      @r   )Zddofr   g      @)r0   Zvariancer   datar+   r+   r,   test_variance  s   r   c                  C   s   t  t  ft  t  ffD ]9\} }t jg d| d}t|d}t jg d|d}||ks2J tj|ddd}t jg d|d}||ksIJ qd S )N)abcabZabcabbaABNrw   r   )r   r   r    r   r   NTZignore_case)r   r   r    r   r   N)r~   r   r   large_stringr   r   r0   Zcount_substringtyoffsetr   resultr   r+   r+   r,   test_count_substring  s   r   c                  C   s   t  t  ft  t  ffD ];\} }t jg d| d}t|d}t jg d|d}||s3J tj|ddd}t jg d|d}||sKJ qd S )N)r   r   ZbaAacaar   r   Nrw   za+)r   r   r   r   r   NTr   )r   r   r    r   r   N)	r~   r   r   r   r   r   r0   Zcount_substring_regexr   r   r+   r+   r,   test_count_substring_regex  s   r   c                  C   s   t  t  t  t  fD ]X} t jg d| d}t|d}| g dks)J t	|d}| g dks9J t jg d| d}tj|dd	d
}| g dksTJ tj	|dd	d
}| g dksfJ qd S )N)r   r   r   Nrw   r   )r   r   rT   Nza?b)r   r   r   N)zab*zcAB*r   zaB?zaB*Tr   )r   r   rT   rT   )r   r   r   r   )
r~   r   r   r   large_binaryr   r0   Zfind_substringr   Zfind_substring_regex)r   r   r   r+   r+   r,   test_find_substring  s    r   c                  C      t g d} t| d}t g d}||sJ t g d} tj| ddd}t g d}||s8J tj| ddd}t g d}||sNJ d S )	N)r   zba%r   ca%dNz_a\%%)FTFTN)aBzbA%r   r   NTr   F)FFFTN)r~   r   r0   Z
match_liker   r   r   r   r+   r+   r,   test_match_like     r   c                  C   s   t g d} t| d}t g d}||sJ t g d} tj| ddd}t g d}||s8J tj| ddd}t g d	}||sNJ d S )
N)r   abcr   Nr   TTFN)u   áBu   Ábcr   Nu   ábTr   F)FFFN)r~   r   r0   Zmatch_substringr   r   r+   r+   r,   test_match_substring  r   r   c                  C   r   )	N)r   r   r   cNz^a?b)TTTFN)r   ZAbcZBAr  NTr   F)FFFFN)r~   r   r0   Zmatch_substring_regexr   r   r+   r+   r,   test_match_substring_regex  r   r  c                  C   s   t g d} t| }t g d}||sJ t g d} t| }t g d}||s4J t g d} tj| dd}t g d}||sPJ t| d}t g d}||sdJ d S )N) fooNu    　foo bar 	)r   Nfoo bar)r   Nu
   　foo baru    f　)
characters)ZooNzoo bar 	)r~   r   r0   Zutf8_trim_whitespacer   Zascii_trim_whitespaceZ	utf8_trimr   r+   r+   r,   	test_trim  s   

r  c               	      s   t g d} tddD ]> ttddd gD ]1dD ],t  fdd| D }tj|  d}||s<J t|  |ksHJ qqqd S )N) u   𝑓u   𝑓öu   𝑓öõu   𝑓öõḍu   𝑓öõḍšr"   )rT   r   r    r   c                       g | ]}|    qS r+   r   r(   kr_   stepstopr+   r,   r-   )      z,test_slice_compatibility.<locals>.<listcomp>r_   r  r  )r~   r   range	itertoolschainr0   Zutf8_slice_codeunitsr   r   r   r   r+   r  r,   test_slice_compatibility$  s&   
r  c                     s   t g d} ttddtddtddD ]4\ dkr!qt  fdd| D }tj|  d	}||s?J t|  |ksKJ qd S )
N)    r   s   as   ab s   abcs   abder  r"   r	  r!   r   c                    r  r+   r  r  r  r+   r,   r-   :  r  z3test_binary_slice_compatibility.<locals>.<listcomp>r  )r~   r   r  productr  r0   Zbinary_slicer   r  r+   r  r,   test_binary_slice_compatibility3  s    r  c                  C   s   t ddg} tj| dd}t ddgg dg}||s J tj| ddd	}t ddgd
dgg}||s:J tj| dddd}t ddgddgg}||sUJ d S )N-foo---bar--
---foo---b---rS   z-foozbar--r  r   r   r   
max_splitsr  foo---bTr"  reversez---foor   )r~   r   r0   Zsplit_patternr   r   r+   r+   r,   test_split_patternC  s   r&  c                  C      t ddg} t| }t ddgg dg}||sJ tj| dd}t ddgdd	gg}||s7J tj| dd
d}t ddgddgg}||sQJ d S )Nr      foo  　	br   r   r   r   r!  r  
   foo  　	bTr$  r  r   )r~   r   r0   Zutf8_split_whitespacer   r   r+   r+   r,   test_split_whitespace_utf8R     
r*  c                  C   r'  )Nr  r(  r   r   )r  r   u   　r   r   r!  r  r)  Tr$  u	    foo  　r   )r~   r   r0   Zascii_split_whitespacer   r   r+   r+   r,   test_split_whitespace_asciia  r+  r,  c                  C   s   t ddg} tj| dd}t g dg dg}||s J tj| ddd}t d	d
gd	dgg}||s:J tjtdd tj| dddd}W d    d S 1 sVw   Y  d S )Nr  r  z-+r  )r  r   r   r  r   r   r!  r  zfoo---bar--r#  z"Cannot split in reverse with regexr5   r  T)rS   r"  r%  )r~   r   r0   Zsplit_pattern_regexr   r;   r<   NotImplementedErrorr   r+   r+   r,   test_split_pattern_regexp  s   "r.  c                  C   s  g d} t | }| dddksJ t j| t  d}| dddks(J t j| t jddd}| dddks>J t j| t jddd}| d d dksTJ t j| d	did}| d d dkshJ t j| dd}| d d dkszJ tt t j| t  dd
}W d    n1 sw   Y  t  }tt t j| |d}W d    n1 sw   Y  tjtdd t  }W d    d S 1 sw   Y  d S )N)r!   r	   r"   Nr   r   r"   )minra   r   TrQ   FrR   )r   rR   zmin_max takes 1 positionalr5   )r0   min_maxr   r   r;   r<   r=   r   )r   ro   r   r+   r+   r,   test_min_max  s2   


"r2  c                  C   s   t jddd} tjg dd}t | d u sJ t j|dd du s&J t j|| d du s3J tg d}t | d	u sEJ t j|| d d	u sRJ tg d
}t | du sdJ t j|| d d u sqJ d S )NFr   r   r   rw   r   r0  )FNTT)FNF)r0   r   r~   r   anyr   r   r   r+   r+   r,   test_any  s   r5  c                  C   sl  t jddd} tjg dd}t | d u sJ t j|dd du s&J t j|| d du s3J tddg}t | du sEJ t j|| d du sRJ tdd g}t | du sdJ t j|| d d u sqJ tdgdd gg}t | du sJ t j|| d d u sJ tdgdgg}t | du sJ t j|| d du sJ d S )	NFr   r   r   rw   r   Tr0  )r0   r   r~   r   r   r   r   r4  r+   r+   r,   test_all  s"   r6  c                  C   s`   g d} t |  g dksJ tt t j| d d W d    d S 1 s)w   Y  d S )Nr!   r	   N)TTFr0  )r0   is_validr   r;   r<   r=   r   r+   r+   r,   test_is_valid  s
   "r9  c                   C   s\   t jjtdksJ t jjtdksJ t jjtdks!J t jjtdks,J d S )Nas          Compute the minimum and maximum values of a numeric array.

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

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

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

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

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

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

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

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

        Examples
        --------
        >>> import pyarrow as pa
        >>> arr = pa.array(["a", "b", "c", None, "e"])
        >>> mask = pa.array([True, False, None, False, True])
        >>> arr.filter(mask)
        <pyarrow.lib.StringArray object at ...>
        [
          "a",
          "e"
        ]
        >>> arr.filter(mask, null_selection_behavior='emit_null')
        <pyarrow.lib.StringArray object at ...>
        [
          "a",
          null,
          "e"
        ]
        )r0   r1  __doc__textwrapdedentr   min_element_wisefilterr+   r+   r+   r,   test_generated_docstrings  s   r?  c                  C   s   t tj} t| dksJ t tj} t| dksJ t tj} t| dks*J t tj} t| dks8J t tj} t| dksFJ t tj	} t| dksTJ d S )Nz(x, y, /, *, memory_pool=None)zK(array, /, *, skip_nulls=True, min_count=1, options=None, memory_pool=None)zj(array, /, q=0.5, *, interpolation='linear', skip_nulls=True, min_count=0, options=None, memory_pool=None)zZ(*strings, null_handling='emit_null', null_replacement='', options=None, memory_pool=None)z'(indices, /, *values, memory_pool=None)z<(n, *, initializer='system', options=None, memory_pool=None))
rD   rE   r0   r   strr1  quantilebinary_join_element_wiseZchooserandom)rK   r+   r+   r,   test_generated_signatures>  s   rD  c                  C   sb   t  } dd tddD }tt| }t|D ]\}}|| | kr.| 	t
| q| S )Nc                 S   s*   g | ]}d |  krdk sn t |qS )      )chr)r(   r  r+   r+   r,   r-   c  s    z/find_new_unicode_codepoints.<locals>.<listcomp>     )setr  r0   Zutf8_is_printabler~   r   r   	enumerateisprintabler   ord)newr  is_printableir  r+   r+   r,   find_new_unicode_codepoints`  s   rQ  i  i  >   iq   i|,  i},  i   i   i   i   i   i   i   i   i   i   i   i   i   i   i  i     i  i  i  i  i  i  i  i  i     i  i  i  i  i  i  i  i,  i-  i.  i/  i0  i1  i2  i3  i4  i5  i6  i7  i8  i9  i:  i;  i<  i=  i>  i?  i@  iA  iB  iC  iD  iE  iF  iG  iH  iI  iJ  iK  iL  iM  iN  iO  iP  iQ  iR  iS  iT  iU  iV  iW  iX  iY  iZ  i[  i\  i]  i^  i_  i\  i]  i^  i_  i`  ia  ib  ic  id  ie  if  ig  ih  ii  ij  ip  ix  iz  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  >H    N  4  N  4  Q  N  o  	N  醀  N  O  _  _  _  _  x  N  N  s  !  *8  ~v  ,  鮌  0    鳌  N  N  AS  S  CS  DS  ES  FQ  S  S  S  F  i LS  M;  Lc  L  i   g    i V  ]N  i N  i N  iQ  kQ  k  mQ  i ^  pO  X  i s    x  X  z^    b  ^  >l   ic i@
 iA
 iB
 iC
 i` ia ib i`$  ia$  ib$  ic$  id$  ie$  if$  ig$  ih$  id ie if ih ig ip   it$  it   iu   iw   iv   iy   iw$  ix   iy$  iz$  i{$  i|$  i   i   i   i   i   i   i   i   i   i   i$  i$  i$  i$  i$  i$  i$  i$  i$           i$  i$  i$  i$  i$  i$  i$  i$  i$  i$  i$  ii  ij  ik  il  im  in  io  ip  iq  iv$  iu$  iv'  iw'  ix'  iy'  iz'  i{'  i|'  i}'  i~'  ix$  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i'  i  >A   rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  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  )is_alnumis_alphais_digit
is_numericis_lowerfunction_name)
r  r  Zis_asciiZ
is_decimalr  r  r  rO  is_spaceZis_uppervariantasciiutf8c           	      C   s   |d |  }|  dd}t| t t B }ttrdndD ]7}|tddv r(q||v r-qt|}tt	|rU| dkrUt
|g}tt	|}||d  t|| ksUJ qd S )	N_r  rH  rI  rE  rF  r  r   )replacecodepoints_ignoregetrJ  rQ  r  r  rG  r'   r0   r~   r   r   r   )	r  r  Z
arrow_nameZpy_nameignorerP  r  arZ
arrow_funcr+   r+   r,   test_string_py_compat_boolean  s"   
 r  c                  C   s|  t g d} tj| dd g dksJ tj| dd g dks%J tj| dd g dks4J t| d g dksBJ t| d g dksPJ t| d g dks^J t g d} tj| dd g dkstJ tj| dd g d	ksJ tj	| dd g d
ksJ t| d g dksJ t| d g d	ksJ t	| d g d
ksJ d S )N)Nr   abcdr   )width)Nz a r  )Nz  ar  )Nza  r  )N   ár  )Nu    á r  )Nu     ár  )Nu   á  r  )
r~   r   r0   Zascii_centertolistZ
ascii_lpadZ
ascii_rpadZutf8_centerZ	utf8_lpadZ	utf8_rpadr   r+   r+   r,   test_pad  s    r  c                  C   s   t dd} tg d}| }| D ].}| D ])}|j||d}tj|||dd}| | ks3J t|||d|ks?J qqtg d}| }| D ]"}| D ]}|j||d}tj	|||dd}| | ksoJ qRqNd S )Nr	  r!   )Nr  r   r   r   r  ZabcdeZXX)r_   r  replacement)Nr  u   πu   πbu   πbθu   πbθdu   πbθde)
r  r~   r   	to_pandasr@  Zslice_replacer0   Zbinary_replace_slicer  Zutf8_replace_slice)offsetsr   Zseriesr_   r  r   actualr+   r+   r,   test_replace_slice  s.   
r  c                  C   s   t g d} tj| ddd}| g dksJ t| dd}| g dks*J tj| dddd}| g dks=J tj| dddd	}| g dksPJ d S )
N)ZfoozfooZfoodNr   r   rS   r  )ZbarzbarbardNr   )rS   r  max_replacements)Zbarzfoor  N)r  )r~   r   r0   Zreplace_substringr  )r   r  r+   r+   r,   test_replace_plain  s   
r  c                  C   sx   t g d} g d}tj| ddd}| |ksJ tj| ddd}| |ks+J t| dd}| |ks:J d S )N)r   ZmoodN)Zf00Zm00dNz(.)ooz\100r  )r  )r~   r   r0   Zreplace_substring_regexr  )r   r   r  r+   r+   r,   test_replace_regex  s   r  c                  C   s`   t ddg} ddddddg}tj| dd	}| |ks J t| d}| |ks.J d S )
NZa1Zzb2zr   rW   )letterdigitr   rX   z(?P<letter>[ab])(?P<digit>\d)r  )r~   r   r0   Zextract_regexr  )r  r   structr+   r+   r,   test_extract_regex  s   r  c                  C   s   t ddgd g g} t g d}t| d|sJ t jddgt  d}t jdd	gt  d}t jd
dgddggt t  d} t| ||sOJ d S )Nr   r   )zfoo-barNr  -rW   rX   rw   Za1bZc2dr   r   r  d)r~   r   r0   Zbinary_joinr   r   list_)Zar_listr   Zseparator_arrayr+   r+   r,   test_binary_join(  s   $r  c                  C   s  t jd t  d} g dg dg dg}tj|  g dks!J tddd d	ks.J td| d d u s;J tdd|  d u sHJ tjd
d}tj|d|i g dks^J tjddd|d d	ksmJ tjd| d|d dks|J tjdd| |d d u sJ tjddd}tj|d|i g dksJ tjddd|d d	ksJ tjd| d|d dksJ tjdd| |d d u sJ d S )Nrw   )Nr   r   )r  Nr  )Nr  z--)NNb--dr   r   r  za-bskip)null_handlingr   )Nr   r  r0  r  Zspam)r  Znull_replacement)Na-spamr  r  )r~   r   r   r0   rB  r   r   r   )nullZarrsr  r  r+   r+   r,   test_binary_join_element_wise3  s\   r  )r   rG   c                 C   s>  t j|| d}t  t  fD ]J}t jg d|d}||}|  t j|d |d |d d g| d}||s;J t jg |d}||}|  t jg | d}||sYJ qt ddg}tt	 || W d    n1 svw   Y  t ddg}tt	 || W d    d S 1 sw   Y  d S )Nrw   r   r!   r    Nr   r!   r    r	   rT   )
r~   r   r
   r   r   validater   r;   r<   
IndexError)r   rG   r   indices_typerq   r   r   r+   r+   r,   	test_takeQ  s(   
"
"r  c               	   C   s   t td} dD ]"}t jg d|d}| |}|  t g d}||s+J q	t  t  fD ]%}t jg d|d}t	t
 | | W d    n1 sTw   Y  q4d S )Nr	   )r   r
   r   r   r   r   r   r   r  rw   )r   r!   r    )r~   r   r  r   r  r   float32float64r;   r<   r-  )r   r  rq   r   r   r+   r+   r,   test_take_indices_typesk  s   
r  c                  C   s   t g dg dg} tg d}| |}t g dg}||s&J t dgddgg}| |}t dgd	d
gg}||sFJ d S )N)r   r   r  r  e)fghrP  j)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   rq   r   r   r+   r+   r,   test_take_on_chunked_array|  s$   

	r  orderedFTc                 C   st   t jjg dg d| d}|t g d}|  | g dks%J |j g dks0J |jj	| u s8J d S )N)r   r   r    r   r   r    r   r   r  )r  )r   r   r   )r   r   r   )
r~   ZDictionaryArrayfrom_arraysr   r   r  r   
dictionaryr/   r  )r  r   r   r+   r+   r,   test_take_dictionary  s   r  c                  C   s   t d gd } t d gd gd }t j| gdgd}t d| i}t g d}t| |dks5J t||dks@J t||ddksNJ t||ddks\J d S )	Nr   r	   r    r   rV   )r   r   r   Nr!   r   )r~   r   r   record_batchtabler8   r   column)r   chunked_arrbatchr  rq   r+   r+   r,   test_take_null_type  s    r  c                    s^   t j|| d   }|jdd  fddtt D } t |}||s-J d S )Nrw   T)fullc                    s   g | ]	} | j r|qS r+   )r8  r(   rP  r   r+   r,   r-         z"test_drop_null.<locals>.<listcomp>)r~   r   	drop_nullr  r  r8   r   r   )r   rG   r   rq   r   r+   r   r,   test_drop_null  s   r  c                  C   sN   t dd gg dd gg g} t dgddgg g g}|  }||s%J d S )Nr   r  r  Nr  r  )r~   r   r  r   )r   expected_dropr   r+   r+   r,   test_drop_null_chunked_array  s   r  c                  C   s   t jt g dgdgd} |  }t jt g dgdgd}||s'J t jt g dt g dgddgd} |  }t jt dgt dggddgd}||sZJ d S )Nr   Nr  r  Na'r  r   r  r  )NNr  Nr  zb'r  )r~   r  r   r  r   )r  r   r   r+   r+   r,   test_drop_null_record_batch  s"   r  c               
   C   s  t jt g dgdgd} t jt g dgdgd}|  }||s'J t jt dd gg dgt dd gg dgt dgdgd gdd gggg d	d} t jt ddgt ddgt ddggg d	d}|  }||swJ t jt ddgg d
gt dgdgd gdd ggt dd gg dggg d	d} t jt ddgt ddgt ddggg d	d}|  }||sJ d S )Nr  r   r  r  r  )Nr  Nr   r  r  r  r  r  ABDza`)zc`d`Nr  )r~   r  r   r  r   r   )r  r   r   r+   r+   r,   test_drop_null_table  s@   r  c                  C   s   t d gd } t d gd gd }t j| gdgd}t d| i}t|  dks-J t| dks7J t| ddksDJ t| ddksQJ d S )Nr   r	   r    r   r  r   )r~   r   r   r  r  r8   r  r  )r   r  r  r  r+   r+   r,   test_drop_null_null_type  s   r  c                 C   s   t j|| d}t g d}|j|dd}|  |t j|d |d g| ds+J |j|dd}|  |t j|d |d d g| dsIJ t g d}tt || W d    n1 sew   Y  t g d	}tjtd
d || W d    d S 1 sw   Y  d S )Nrw   )TFFTNZdropZnull_selection_behaviorr   r   	emit_nullr   r   r   r   r   TFTmust all be the same lengthr5   )	r~   r   r>  r  r   r;   r<   r-  
ValueError)r   rG   r   maskr   r+   r+   r,   test_filter  s    $&"r  c                  C   s   t dd gg dg} t dgdgg}t dgd dgg}t g dt g dddggg dfD ]}| |}||sAJ | j|dd	}||sOJ q3d S )
Nr   r  r  TFNFTr   FTr  r  )r~   r   r   r>  r   )r   r  expected_nullr  r   r+   r+   r,   test_filter_chunked_array  s   
r  c                  C   s   t jt g dgdgd} t g d}| |}t jt ddggdgd}||s/J | j|dd}t jt g d	gdgd}||sKJ d S )
Nr   Nr  r  r  r  r  r  r   r  r  r  r   Nr  )r~   r  r   r>  r   )r  r  r   r   r+   r+   r,   test_filter_record_batch1  s   
r   c                  C   s   t jt g dgdgd} t jt ddggdgd}t jt g dgdgd}t g dt ddgg d	gg dfD ]}| |}||sMJ | j|d
d}||s[J q?d S )Nr  r   r  r  r  r  TF)NFTr  r  )r~   r  r   r   r>  r   )r  r  r  r  r   r+   r+   r,   test_filter_table@  s   
r  c               	   C   s:  t dd gg dg} t jt g dgdgd}t jt g dgdgd}| ||fD ]G}t g d}tt || W d    n1 sJw   Y  t g d}tjt j	dd	 || W d    n1 snw   Y  q,t 
d
}|||fD ]}tt || W d    n1 sw   Y  q~d S )Nr   r  r  r  r  r  r  r  r5   T)r~   r   r  r   r  r;   r<   r-  r>  r   r   r=   )r   r  r  objr  r   Zfiltr+   r+   r,   test_filter_errorsS  s0   
r  c                  C   s   t d gd } t d gd gd }t j| gdgd}t d| i}t ddgd }t| |dks7J t||dksBJ t||ddksPJ t||ddks^J d S )	Nr   r	   r    r   r  TFr   )r~   r   r   r  r  r8   r>  r  )r   r  r  r  r  r+   r+   r,   test_filter_null_typek  s    r  typr   r   c                 C   s  | dkr	dd }ndd }|g d}|g d}t ||}||g ds*J t ||}||g ds;J t ||}||g d	sLJ t ||}||g d
s]J t ||}||g dsnJ t ||}||g dsJ d S )Nr   c                 S   
   t | S r   r~   r   rG   r+   r+   r,   con|     
ztest_compare_array.<locals>.conc                 S      t | gS r   r~   r   r  r+   r+   r,   r	       r   )r   r   r!   Nr!   )TFFNN)FTTNN)FFTNN)TFTNN)FTFNN)TTFNN)r0   r   r   	not_equalless
less_equalgreatergreater_equal)r  r	  arr1arr2r   r+   r+   r,   test_compare_arrayy  s"   
r  c                 C   sB  | dkr	dd }ndd }|g d}t d}t||}||g ds)J | dkrJt jd dd	}t||}t|}||g d
sJJ t||}||g ds[J t||}||g dslJ t||}||g ds}J t	||}||g dsJ t
||}||g dsJ d S )Nr   c                 S   r  r   r  r  r+   r+   r,   r	    r
  z'test_compare_string_scalar.<locals>.conc                 S   r  r   r  r  r+   r+   r,   r	    r  )r   r   r  Nr   FTFNr   rw   )TTTTTFTNTFFNr   FFTNFTTN)r~   r   r0   r   r   is_nullr  r  r  r  r  )r  r	  r   r   r   nascalarZisnullr+   r+   r,   test_compare_string_scalar  s,   


r  c                 C   s6  | dkr	dd }ndd }|g d}t d}t||}||g ds)J | dkrDt jd dd	}t||}| g d
ksDJ t||}||g dsUJ t||}||g dsfJ t||}||g dswJ t	||}||g dsJ t
||}||g dsJ d S )Nr   c                 S   r  r   r  r  r+   r+   r,   r	    r
  z test_compare_scalar.<locals>.conc                 S   r  r   r  r  r+   r+   r,   r	    r  r   r    r   Nr    r  r   rw   NNNNr  r  r   r  r  )r~   r   r0   r   r   r   r  r  r  r  r  )r  r	  r   r   r   r  r+   r+   r,   test_compare_scalar  s*   

r   c                  C   s   t g d} t g ddd gg}t ddgg dg}t g dg}| |f|| f||ffD ]\}}t||}||sAJ q0d S )Nr   r   r    r   r!   r   r    )r   r!   N)TTTTN)r~   r   r   r0   r   r   )r   Zarr_chunkedZarr_chunked2r   leftrightr   r+   r+   r,    test_compare_chunked_array_mixed  s   r$  c                  C   H   t g d} t g d}t| |}t g d}||s"J d S )Nr   r    r   r!   r	   r   rT   r   r    r   )r   r   r!   r"   r   )r~   r   r0   r   r   r"  r#  r   r   r+   r+   r,   test_arithmetic_add  
   r)  c                  C   r%  )Nr&  r'  )r   r   r    r    r    )r~   r   r0   subtractr   r(  r+   r+   r,   test_arithmetic_subtract  r*  r,  c                  C   r%  )Nr&  r'  )r   r
  r   r      )r~   r   r0   multiplyr   r(  r+   r+   r,   test_arithmetic_multiply  r*  r/  r   roundround_to_multiplec           	      C   s   | dkrt j}tt jdd}n| dkrt j}tt jdd}g d}g dg d	g d
g dg dg dg dg dg dg dd
}| D ]\}}||d}|||d}tj	|t
| qFd S )Nr0  r   ndigitsr1  r   multiple)g	@      @皙@      @皙	g      gN)r   r   r   r!   r:  r:  N)r!   r!   r!   r	   r	  r	  r	  N)r   r   r   r!   r	  r	  r	  N)r!   r!   r!   r	   r:  r:  r:  N)r   r   r!   r!   r	  r:  r:  N)r   r!   r!   r	   r	  r	  r:  N)r   r   r!   r!   r	  r	  r:  N)r   r!   r!   r	   r	  r:  r:  N)r   r!   r!   r!   r	  r:  r:  N)r   r   r!   r	   r	  r	  r:  N)
ZdownupZtowards_zerore   Z	half_downZhalf_uphalf_towards_zerohalf_towards_infinityZhalf_to_evenZhalf_to_odd
round_moder0  )r0   r0  r   r   r1  r   itemsr   testingassert_array_equalr~   r   )	r   r0  r   rG   Zrmode_and_expectedr?  r   r   r   r+   r+   r,   test_round_to_integer	  s.   
rC  c                  C   s   g d} g dg dg dg dg dd}|  D ]4\}}t|d}tj| |d	}tjj|t|d
d tj| |dd|ksCJ t| |d|ksNJ qd S )N@  r6  g@r8  gV-	g):ˏAg\(\Ni,  r   r   r   r   r   r   NrE  r   r   r   r   ir   N)rE  r!   r   r	   r	  ir	  NrE  r6  @r8  r9  ̌Ar	  N)rE  r6  gp=
ף@r8  gGz	g(\AffffffN)r
  rT   r   r   r    r=  r0  TZ	equal_nanr>  )	r@  r0   r   r0  r   rA  assert_allcloser~   r   )rG   Zndigits_and_expectedr3  r   r   r   r+   r+   r,   
test_round%  s$   rN  c                  C   sH  g d} dg dt dg ddg ddg d	t jd
t dddg di}| D ](\}}t|d}tj| |d}tjj	|t 
|dd t| |d|ksRJ q*ddt dfD ]!}tjt jdd tj| |d W d    n1 sww   Y  q[tdfD ] }tjtdd tj| |d W d    n1 sw   Y  qd S )NrD  g?)rE  r6  rI  r8  r9  rJ  rK  Nr   rH  r    )rE  r!   r!   r!   r:  ir:  Nr   rG  rh   r!   rw   rF  r=  r0  TrL  r   r
  g$z"Rounding multiple must be positiver5   r4  l   l+?R zis not a valid multiple type)r~   r   
decimal256r@  r0   r   r1  r   rA  rM  r   r;   r<   r   r:   r=   )rG   Zmultiple_and_expectedr5  r   r   r   r+   r+   r,   test_round_to_multiple7  s<   
rP  c                  C   s   g d} t g dt  }t g dt  }t| ||ks"J t dt  }t dt  }t dt  }tjd|dd	|ksFJ tjd|d
d	|ksRJ d S )N)w/^@/$Rm@+ٚu@gv|@rQ  rR  rS  )r	  r
  rT   r   r   r    r   )r      i^  i  g     ^@g
ףp=Rm@rS  r   r   rT   g      @r<  r>  r=  )r~   r   r   r  r0   Zround_binaryr   )rG   scalesr   Zexpect_zeroZ
expect_infscaler+   r+   r,   test_round_binaryR  s&   rW  c                  C   sR  t g d} |  }t g d}||sJ |t| s#J |  }t g d}||s5J |t| s?J t ddgdd gg} |  }t ddgddgg}||s`J |  }t ddgddgg}||svJ t dddd tjg} |  }t g d	}||sJ | jdd
}t g d}||sJ d S )Nr  )FFFT)TTTFr   r    r   FT)FFFTF)Znan_is_null)FFFTT)	r~   r   r  r   r0   r8  r   r   nanr   r+   r+   r,   test_is_nullc  s.   rY  c                  C   s   t dddd tjg} |  }t g d}||sJ t jg dt  d} tjt	dd |  }W d    n1 s>w   Y  tjt	dd t jg d	t 
 d} |  }W d    d S 1 sew   Y  d S )
Nr   r    r   )FFFNT)rW   rX   Nrw   z"has no kernel matching input typesr5   r      bbN)r~   r   r   rX  is_nanr   r   r;   r<   r   r   )r   r   r   r  r+   r+   r,   test_is_nan  s    

"r]  c                  C   sb  t jg dt  d} t jdgt  d}tjt jdd | | W d    n1 s-w   Y  t jg dt  d} t jd t  d}| |}t g d}|	|sYJ t g d} | d}t g d	}|	|ssJ t jg d
t 
 d} | d}t jg dt 
 d}|	|sJ t g d} | d }t g d}|	|sJ d S )Nr   r    Nr!   rw   r	   +Array arguments must all be the same lengthr5   r  )r   bbNccc)r   r`  ra  rZ  )r   r[  s   ccc)r~   r   r
   r;   r<   r   	fill_nullr  r   r   r   )r   
fill_valuer   r   r+   r+   r,   test_fill_null  s0   



rd  c                 C   s   t jg d| d}t jd| d}||}t jg d| d}||s%J |d}||s1J t j|jsTt	t
tf |d W d    n1 sOw   Y  |t jddd}||seJ d S )Nr^  rw   r	   )r   r    r	   r!   5r
   )r~   r   r   rb  r   typesZis_unsigned_integerr/   r;   r<   r  r=   )r   r   rc  r   r   r+   r+   r,   test_fill_null_array  s   

rg  c                 C   s  t jd| d}t t jg d| dg}||}t t jg d| dg}||s-J t t jddg| dt jg | dt jd dg| dg}t t jddg| dt jg | dt jddg| dg}||}||soJ |d}||s{J |t jddd}||sJ d S )	Nr	   rw   )Nr    r   r!   )r	   r    r   r!   r   r    r!   r
   )r~   r   r   r   rb  r   )r   rc  r   r   r   r+   r+   r,   test_fill_null_chunked_array  s*   


rh  c                  C   s   t g d} t g d}t| |t g dksJ t| |t g dks,J t| |t g dks;J t| |t g dksJJ t| |t g dksYJ t| t g dksgJ d S )Nr  )TTFTr   r  r  )	r~   r   r0   and_Z
and_kleeneor_Z	or_kleenexorinvertr%   r+   r+   r,   test_logical  s    rm  c                  C   s`   t g d} |  }t|}| |ksJ | |ksJ | t| ks%J t||ks.J d S )N)r   r   r   r  r   )r~   r   Zdictionary_encoder0   Zdictionary_decode)r   Zdictionary_arrayZdictionary_array_decoder+   r+   r,   test_dictionary_decode  s   
rn  c                  C   s<  t jg ddd} tt  }tt tj| d d W d    n1 s'w   Y  tt	 tj| d|d W d    n1 sDw   Y  tt	 tj| d|d W d    n1 saw   Y  tj| |dt jg dd	dksxJ t jd
gdd} tjt 
 dd}tt j t| d W d    n1 sw   Y  tj| dddt jdgddksJ tj| |dt jdgddksJ t tdddtdddg} t jddgdd}t| d|ksJ t jddgg dgt t  d} t jddgg dgt t  d}t| |j|ksJ d S )Nr   r   rw   )Ztarget_typer   r0  T)r}   r   r
   l    )Zallow_int_overflowFr}   rT   i  r   i  l    x\Nl    0E*ztimestamp[ms]r    )r   r!   r	   rW   rX   )34re  )r~   r   r0   r|   r
   r;   r<   r=   castr  r   r   datetime
large_listr  r  r/   )r   r   Zallow_overflow_optionsr   r+   r+   r,   	test_cast  sF   $$ru  
value_typec                 C   s<  t t d| d}t  }t t d|d}t jjt jg d|d|d}|||jks1J t jjt jg d|d|d}|||jksJJ t 	 }t t d|d}t jjt jg d|d|d}|||jksqJ t t d| d}d	}t
jt jj|d
 || W d    d S 1 sw   Y  d S )Nelementr    rG   )r   r    r   r!   r	   r"   rw   )r   NNr!   r	   r"   )NNNNNNr   z&Size of FixedSizeList is not the same.r5   )r~   r  rU   r   ZFixedSizeListArrayr  r   rr  r/   r  r;   r<   libArrowTypeError)rv  Z	cast_typeZdtyper/   Zfslerr_msgr+   r+   r,   test_fsl_to_fsl_cast"  s,   "r{  DecimalTypeTraits)r)   factorymax_precisionFloatToDecimalCase)	precisionrV  	float_val
decimal128&   rO  L   c                 C   sx   | dksJ |dksJ t | d|  }|d|  | kr0t|d}|d|  | kr0t|d}|d|  | ks:J |S )zA
    Find the largest float f such as `f * 10**scale <= val`
    r   r           )r   r   	nextafter)valrV  r  r+   r+   r,   largest_scaled_float_not_aboveK  s   r  c                 C   s0   t | tsJ t| }|| }t|}|S )zS
    Return a float representation (possibly approximate) of `int_val**-scale`
    )r.   intdecimalDecimalscalebr   )Zint_valrV  unscaledZscaledr  r+   r+   r,   scaled_float[  s
   
r  c                 c   s|    d}t d|dD ]2}t d|dD ])}t||dV  t||dV  dt|| | }td| | |}t|||V  qq	d	S )
zC
    Return FloatToDecimalCase instances with integral values.
    r$   r   r   r   r    r  g      ?r   N)r  r  ra   r  )float_tyr~  mantissa_digitsr  rV  epsilon
abs_maxvalr+   r+   r,   $integral_float_to_decimal_cast_casesf  s   r  c                 c   s|    d}t d|dD ]2}t d|dD ])}ddt|| d  }t||}td| | |}t|||V  t|||V  qq	dS )z?
    Return FloatToDecimalCase instances with real values.
    r$   r   r   r   r    r   N)r  ra   r  r  )r  r~  r  r  rV  r  Z
abs_minvalr  r+   r+   r,    real_float_to_decimal_cast_casesu  s   
r  c                 c   s    t d}td|dD ]2}td|dD ])}tdD ]"}|dd| }t||}|d|  d| k s5J t|||V  qqqdS )	z?
    Return random-generated FloatToDecimalCase instances.
    *   r   r"   r   r!      r   N)rC  Randomr  	randranger  r  )r  r~  rr  rV  rP  r  r  r+   r+   r,   "random_float_to_decimal_cast_cases  s   

r  c           
      C   s   |j |_tj|_||}|td|j	 }t
j|| d}t|| }||kr[t|| d|j	  }|j |d k rAdnd}	||	ks]J d|d|j  d|d	|d
|
d S d S )Nr   rw   r   r    r!   zfloat_val = z, precision=z, expected = z, actual = z, diff_digits = )r  precr  ROUND_HALF_EVENroundingcreate_decimal_from_floatquantizer  r  rV  r~   r   r0   rr  r   abs)
r  r  
decimal_tyZdecimal_ctxr~  r   ro   r  Zdiff_digitslimitr+   r+   r,   check_cast_float_to_decimal  s(   

r  r  )Zidsr  c                 C      | j S r   r)   vr+   r+   r,   <lambda>      r  case_generator)Z	integralsZrealsrC  c              	   C   s`   t  "}|| |jD ]}t| |j||j|j||j qW d    d S 1 s)w   Y  d S r   )r  localcontextr~  r  r  r}  r  rV  )r  r  r  ctxcaser+   r+   r,   test_cast_float_to_decimal  s   
	"r  decimal_traitsc                 C   r  r   r  r  r+   r+   r,   r    r  c              
   C   s  t d}t tjt tji|  }t dt di|  }t dt di|  \}}ttd| }|j	}t
 }	|}
|
|	_t| |
ttd|  }t|ttd| }t||D ]}||
|}| ttd|
|   }||  kr|ksJ  J tdD ]V}|d	d| }t|||}t||sJ |d	krt
|d|  }n
t
|d|   }t||}ttj|| d
| }t||}t|| dksJ qqfW d   dS 1 sw   Y  dS )zL
    Test float-to-decimal conversion against exactly generated values.
    +      5   )i   )ii  r    r   r	   r   rw   r   N)rC  r  r~   r  r   r  mathfloorlog10r~  r  r  r  ra   ceilr/  r  r}  log2r  ldexpr.   r  r0  r  r0   rr  r   r   r  )r  r  r  Znp_float_tyZmantissa_bitsZfloat_exp_minZfloat_exp_maxr  r~  r  r  Z	min_scaleZ	max_scalerV  r  Z	float_exprP  Zmantissar  r   Zexpected_as_intr  Zactual_as_intr+   r+   r,   !test_cast_float_to_decimal_random  sf   



"r  c                  C   sj  t g d} tj| ddd}t jtdddd tdd	d
gt dd}||ks,J tj| ddd|ks8J t jtdddd d gt dd}tj| dddd}||ksYJ tjt jdd tj| dddd W d    n1 suw   Y  tjt jdd tj| ddd W d    n1 sw   Y  tj| dddd}|t jg dt ddksJ d S )N)z5/1/2020Nz
12/13/1900z%m/%d/%Yro   )formatuniti  r	   r   il        rw   r  z%d/%m/%YT)r  r  Zerror_is_nullz"Failed to parse string: '5/1/2020'r5   z%Y-%m-%dF)NNN)	r~   r   r0   strptimers  	timestampr;   r<   r   )r   gotr   r+   r+   r,   test_strptime  s2   $r  ru   -Timezone database is not installed on Windows)reasonc                  C   s4  g d} g d}g d}t jdkr|g d |D ]}t| |}dD ]-}tj|t||d}|D ]}t	
|}t	j||d}	t||}
|	|
sRJ q5q&d	}tj|td
|d}t	j|t	
 d}	t||}
|	|
syJ tj|td
|d}t	j|t	
|d d}	t||d }
|	|
sJ tj|td
|d}t	
d}t	j||d}	t|d}
|	|
sJ tj|td|d}t	
d}t	j||d}	t|d}
|	|
sJ tj|td
|d}t	j
|dd}t	j||d}	t||}
|	|
sJ qd	}t| }tj|td
d}t	j|t	
|d}	t||}
t	|||	ksEJ |	|
sMJ tjtjdd t	j|t	
|d d W d    n	1 smw   Y  tjtjdd t	j|t	
|d d W d    d S 1 sw   Y  d S )N)z2018-03-10 09:00z2038-01-31 12:23N)ZCETrN   rv   )z%az%Az%wz%dz%bz%Bz%mz%yrn   z%Hz%Iz%pz%M%z%Zz%jz%Uz%Wz%%z%Gz%Vz%uru   )z%cz%xz%Xro   msusnsrw   r0  z%Y-%m-%dT%H:%M:%Sro   r  z%Sr  z%S.%fC)localez.Timezone not present, cannot convert to stringr5   r  )r   r   extendpdto_datetimetz_localizer~   r   r  r0   r   strftimer   r;   r<   r   )times	timezonesformatstimezonetsr  tsafmtr   r   r   r+   r+   r,   test_strftime  sp   




$r  c                 C   s  ddl m} t| d| }t|tj	d|d}|j
jd |j
j d d}td	t td
t tdt g}|tj|dk rl|dd d}|dd d}|dd d}	n|j
 d d}|j
 d d}|j
 d d}	tjj|||	g|d}
|j
jd}|j
jd}|j
jd}|j
jd}|j
jd}|j
jd}|j
jd}|j
jd}|j
jjd}|j
jd}|j
jd}t |!t|sJ t "|!t|j
j"sJ t |!t|sJ t |!t|sJ t #|!t|s)J t $|!t|s7J t %|!t|sEJ t &|!t|sSJ t '|!|
s^J t |!t|slJ t |!t|szJ t |!t|sJ t |!t|sJ t (|!t|d sJ t |!t|d sJ t |!t|sJ t )|!t|sJ t *|!t|j
d sJ |j
j+r|j
j+t,j-j.u rdgt/| }n|0dd }t 1|!t|sJ t j2ddd}t j#||d!t|d s(J t j3dddd}t j4||d!t|s@J d S )Nr   )VersionrN   r  )tzi  g&.>r#   iso_yeariso_weekiso_day_of_weekz1.1.0c                 S      |   d S Nr   isocalendarxr+   r+   r,   r  q      z,_check_datetime_components.<locals>.<lambda>r   c                 S   r  )Nr   r  r  r+   r+   r,   r  r  r  c                 S   r  )Nr    r  r  r+   r+   r,   r  s  r  yearweekday)fieldsFc                 S   s   |   jdkS r  )dstsecondsr  r+   r+   r,   r    s    r   rO   r0  Trt   )5Zpyarrow.vendored.versionr  r  r  r  
tz_convertZ	to_seriesr~   r   r  dtmicrosecond
nanosecondr0  rU   r   __version__mapZastyper  StructArrayr  r  monthr  	dayofweek	dayofyearquarterhourminuterf   rG   r0   r   Zis_leap_yearZday_of_weekZday_of_yearr  r  iso_calendarmillisecondZ	subsecondZlocal_timestampr  rs  r  utcr8   applyis_dstr   r   r  )
timestampsr  r  r  r  Z
subsecondsZiso_calendar_fieldsr  r  Ziso_dayr  r  r  r  r  r  r  r  r  rf   r  r  r  Zday_of_week_optionsZweek_optionsr+   r+   r,   _check_datetime_components`  s   


  $

$r   c                  C   sP   g d} g d}t |  tjdkrt std d S |D ]}t | | qd S )Nz1970-01-01T00:00:59.123456789z2000-02-29T23:23:23.999999999z2033-05-18T03:33:20.000000000z2020-01-01T01:05:05.001z2019-12-31T02:10:10.002z2019-12-30T03:15:15.003z2009-12-31T04:20:20.004132z2010-01-01T05:25:25.005321z2010-01-03T06:30:30.006163z2010-01-04T07:35:35.0z2006-01-01T08:40:40.0z2005-12-31T09:45:45.0z2008-12-28T00:00:00.0z2008-12-29T00:00:00.0z2012-01-01T01:02:03.0)rN   
US/CentralAsia/Kolkata	Etc/GMT-4	Etc/GMT+4zAustralia/Broken_Hillru   r  )r   r   r   r   r   r;   r  )r  r  r  r+   r+   r,    test_extract_datetime_components  s   r  r  r  c                 C   sl   t tddddgd t | }t|}t jjdgd dgd dgd gg d	d
}||s4J d S )Ni  r   r    r#   2   i  4   r   )r  r  r  r  )	r~   r   rs  r  r0   r  r  r  r   )r  r   r   r   r+   r+   r,   test_iso_calendar_longer_array  s   $
r	  c               	   C   s  t d} tg d}tddg}tg d}t j|| d}t j|| d}dD ]^}t|}t j|| d}||}	tj||d}
|
	t |	sNJ t||}
|
	t |	s^J t j|t d|d}t
jt jd	d
 tj||d W d    n1 sw   Y  q*td}t
jtdd
 tj||d W d    n1 sw   Y  d}t|}tj|ddd}tj|ddd}t
jtd| dd
 tj||d W d    n1 sw   Y  t |j|dd}	tj||d}
|		|
 t |j|dd}	tj||d}
|		|
 t|}tj|ddd}tj|ddd}t
jtd| dd
 tj||d W d    n	1 sDw   Y  |j|g dd}	tj||d}
|
	t |	 |j|g dd}	tj||d}
|
	t |	 d S )Nr  r  z2015-03-29 02:30:00z2015-03-29 03:30:00)z2018-10-28 01:20:00z2018-10-28 02:36:00z2018-10-28 03:46:00rw   )rN   r  r  r0  zalready have a timezone:r5   zEurope/Brusselsssznot found in timezone databaseEurope/BrusselsraiseZearliest)	ambiguousnonexistentZlatestz%Timestamp doesn't exist in timezone ''Zshift_forward)r  Zshift_backwardz$Timestamp is ambiguous in timezone ')TTT)r  )FFF)r~   r  r  r  r   r0   r{   r  Zassume_timezoner   r;   r<   r   r  )Zts_typer  r  r  Zambiguous_arrayZnonexistent_arrayr  r   tar   r   Zta_zonedZinvalid_optionsZoptions_nonexistent_raiseZoptions_nonexistent_earliestZoptions_nonexistent_latestZoptions_ambiguous_raiseZoptions_ambiguous_latestZoptions_ambiguous_earliestr+   r+   r,   test_assume_timezone  s   







r  c              	   C   s0  dddddddd}dd	dddd
d}t | }|D ]}t|||  }t||}tj||d }	| j|}
t	j
|	|
 tj||d }	| j|}
t	j
|	|
 tj||d }	| j|}
t	j
|	|
 |dkrtj||dd}| j|| }|jjd u rtj||d }	| | j|| }
t	j
|	|
 tj||d }	| | j|| }
t	j
|	|
 tj||d }	| | j|| }
t	j
|	|
 |dkrtj||d }	| j|}
t	j
|	|
 tj||d }	| j|}
t	j
|	|
 tj||d }	| j|}
t	j
|	|
 q|jjd u rQtj||dd}tj||d}	| j|}
t	|
| k|
t|||  |
}
t	j
|	|
 |dkrd}t| }	| j|}
t	j
|	|
 t| }	| j|}
t	j
|	|
 t| }	| j|}
t	j
|	|
 d S d S )Nr  r  Lro   r/  Hr  r  r  r  rf   r  r  r  r  r  )r  r  r  rf   r  r  r0  r  T)Zcalendar_based_originr4  )Zceil_is_strictly_greaterZ1D)r~   r   r@  r0   r   Zceil_temporalr  r  r  r   rA  rB  Zfloor_temporalr  Zround_temporalr0  r/   r  wherer  Z	Timedelta)r  rG   r  Zunit_shorthandZgreater_unitr  valueZ	frequencyr   r   r   originr+   r+   r,   _check_temporal_rounding<	  s   




r  r  c                 C   sb   d}g d}t dd |D }t|||  g d}|D ]}|jdj|}t|||  qd S )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.316686848c                 S   s   g | ]	}t j|d dqS )r  r  )r  	Timestamp)r(   r  r+   r+   r,   r-   	  r  z'test_round_temporal.<locals>.<listcomp>)r  zAmerica/New_Yorkr  r  r
  zPacific/Marquesasr  rN   rN   )r  ZSeriesr  r  r  r  )r  rG   r  r  r  r  Zts_zonedr+   r+   r,   test_round_temporal	  s   r  c                  C   s   t g d} t|  dksJ tj| dd dksJ tj| dd dks,J tj| dd dks9J t| d dksEJ tjtd	d
 t| d W d    d S 1 s^w   Y  d S )Nr   r    r   NNr   
only_validr   	only_nullr    r   r	   z*"something else" is not a valid count moder5   zsomething else)r~   r   r0   r   r   r;   r<   r  r   r+   r+   r,   
test_count	  s   "r   c                  C   s  t jg dt  d} t| t d dksJ t| t jdt  d dks-J t| d dks9J | jddd dksFJ | d  dksQJ t jd	dgd	dggt  d} | d	 dkskJ | jd	dd dksxJ | jd	d	dd
 dksJ d S )N)r   r   Nr   r!   rw   r   r    rT   r!   r   r_   r   )r_   end)	r~   r   r   r0   indexr   r   r
   r   r   r+   r+   r,   
test_index	  s   & r$  c                    s6    tt ksJ tttt ksJ  fddt|D } fddt|t D } |  d u r_|dkrRtdd |D sPJ d S tdd |D s]J d S |dkrtfdd|D spJ tfd	d|D s}J d S tfd
d|D sJ tfdd|D sJ d S )Nc                       g | ]} |  qS r+   r+   r  r   rq   r+   r,   r-   	      z'check_partition_nth.<locals>.<listcomp>c                    r%  r+   r+   r  r&  r+   r,   r-   	  r'  r[   c                 s       | ]}|d u V  qd S r   r+   r(   r  r+   r+   r,   r   	      z&check_partition_nth.<locals>.<genexpr>c                 s   r(  r   r+   r)  r+   r+   r,   r   	  r*  c                 3   s     | ]}|d u p| kV  qd S r   r+   r)  pr+   r,   r   	      c                 3   s    | ]}| kV  qd S r   r+   r)  r+  r+   r,   r   	  r*  c                 3   s    | ]}| kV  qd S r   r+   r)  r+  r+   r,   r   	  r*  c                 3   s     | ]}|d u p| kV  qd S r   r+   r)  r+  r+   r,   r   	  r-  )r   r8   sortedlistr  r   )r   rq   pivotr]   Zuntil_pivotZafter_pivotr+   )r   rq   r,  r,   check_partition_nth	  s   r1  c                  C   s   t tdd} t|  d}tj| |d}t| ||d t| ||ks&J tjt	dd t|  W d    d S 1 s>w   Y  d S )Nrh      r   )r0  at_endz8'partition_nth_indices' cannot be called without optionsr5   )
r/  r  rC  shuffler0   partition_nth_indicesr1  r;   r<   r  )r   r0  rq   r+   r+   r,   test_partition_nth	  s   
"r6  c                  C   sV   t tdd gd  } t|  dD ]}dD ]}tj| ||d}t| ||| qqd S )Nr   )r   r   r     )r[   r3  )r0  r]   )r/  r  rC  r4  r0   r5  r1  )r   r0  r]   rq   r+   r+   r,   !test_partition_nth_null_placement
  s   
r8  c                  C   s  ddd} t g d}dD ]2}dD ]}tj||d|fgd}| ||| qtj||d	}| ||d
 tj||d	}| ||d qtj|tjddgdd}| ||d
 tj|tjddgdd}| ||d tj|ddgd|kstJ t|ddg|ksJ d S )NFc                 S   s`   t j|d|fgd}|dt| }|r| |ksJ d S t ||}t || }||ks.J d S )Nrl   rj   r   r0   sort_indicesslicer8   r   )select_k_indicesr   orderstable_sortsorted_indiceshead_k_indicesr   r  r+   r+   r,   validate_select_k
  s   z.test_select_k_array.<locals>.validate_select_kr   r    Nr   r   r    r!   )rm   r`   rl   r  rc   )r  rm   r`   r    rk   r0  rl   r`   rj   F)r~   r   r0   select_k_unstabletop_k_unstablebottom_k_unstabler   )rA  r   r  r=  r   r+   r+   r,   test_select_k_array
  s8   

rJ  c                  C   s  ddd} t g dg dd}dD ]O}tj||dgd	}| ||dgd
 tj||tddfdgd	}| ||ddgd
 tj||dgd	}| ||dgd
 tj||ddgd	}| ||ddgd
 qtjt	dd t| W d    n1 szw   Y  tjt	dd tj|ddgd	 W d    n1 sw   Y  tjt	dd tj|dg d	 W d    n1 sw   Y  tjt	dd tj||dgd	 W d    n1 sw   Y  tjt	dd tj||dgd	 W d    d S 1 sw   Y  d S )NFc                 S   sZ   t j||d}|dt| }|r| |ksJ d S t ||}t || }||ks+J d S )Nrj   r   r9  )r<  Ztblrc   r>  r?  r@  r   r  r+   r+   r,   rA  8
  s   z.test_select_k_table.<locals>.validate_select_k)r   r    r   )r   r   r   r%   rC  r   r`   rD  rj   r   r`   ri   r   rm   r   z4'select_k_unstable' cannot be called without optionsr5   z,select_k_unstable requires a nonnegative `k`rT   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unknownr`   rF  )
r~   r  r0   rG  rU   rH  rI  r;   r<   r  )rA  r  r  r   r+   r+   r,   test_select_k_table7
  sV   



"rS  c                  C   s   t g d} t| }| g dksJ tj| dd}| g dks'J tj| dd}| g dks8J tj| ddd}| g d	ksJJ tj| ddd
}| g d	ks\J tjtdd tj| dd W d    d S 1 svw   Y  d S )NrB  r   r   r   r    r`   )r=  rm   r   r   r   r    r[   )r=  r]   r    r   r   r   r\   rM  r5   rO  )r~   r   r0   Zarray_sort_indicesr   r;   r<   r  r   r   r+   r+   r,   test_array_sort_indicesj
  s$   
"rX  c                  C   s  t g d} t| }| g dksJ tj| dgd}| g dks(J tj| dgd}| g dks:J tj| dgdd}| g d	ksMJ tj| dgdd
}| g d	ks`J tj| tjdgdd}| g dksvJ tj| tjdgddd}| g d	ksJ d S )NrB  rT  rE  rj   rk   rU  r[   rc   r]   rV  r\   r0  )r~   r   r0   r:  r   r   rW  r+   r+   r,   test_sort_indices_array}
  s2   



rZ  c                  C   s  t g dg dd} tj| dgd}| g dksJ tj| tddfgd	d
}| g dks6J tj| ddgd}| g dksIJ tj| ddgd	d
}| g dks]J tj| ddgd	d}| g dksqJ tjtdd t|  W d    n1 sw   Y  tjtdd tj| dgd W d    n1 sw   Y  tjtdd tj| dgd W d    d S 1 sw   Y  d S )N)r   r   Nr   )r   r   r   r   r%   rK  rj   rT  r   r`   r[   rY  )r    r   r   r   rL  ri   rU  rV  r\   z"Must specify one or more sort keysr5   rP  rQ  rM  rN  )	r~   r  r0   r:  r   rU   r;   r<   r  )r  r   r+   r+   r,   test_sort_indices_table
  s@   "r[  c                  C   s   t g d} tj| t g dd}| g dksJ tj| t g ddd}| g dks4J tj| t dd	gd}| g dksJJ tj| t dd	gdd}| g dksaJ d S )
Nr   r    Nr   r    r   r   r   N	value_set)TFTTFTTr_  rR   )TFFTFTr   r   )r~   r   r0   Zis_inr   rW  r+   r+   r,   
test_is_in
  s   ra  c                  C   s   t g d} tj| t g dd}| g dksJ tj| t g ddd}| g dks4J tj| t dd	gd}| g dksJJ tj| t dd	gdd}| g dksaJ tj| t dd	gdd
}| g dksxJ d S )Nr\  r]  r^  )r   Nr    r   Nr   Tr`  )r   NNr   Nr   r   r   rQ   )r~   r   r0   Zindex_inr   rW  r+   r+   r,   test_index_in
  s   rb  c                  C   sp  t g d} t| }| dgksJ tj| dd}| dgks%J tj| dd}| dgks5J tj| dd}| dgksEJ tj| d	d}| dgksUJ tj| d
d}| dgkseJ t ddg} tj| g dd}| g dksJ tj| g ddd}| g dksJ tj| g ddd}| g dksJ tj| g dd	d}| g dksJ tj| g ddd}| g dksJ tj| g dd
d}| g dksJ tj| g dd
d}| g dksJ tjtdd tj| dd W d    n	1 sw   Y  tjtdd tj| dd W d    d S 1 s1w   Y  d S )Nr         @lower)interpolationr    Zhigherr   ZnearestZmidpointZlinearr   )g      ?r   g      ?q)      ?      ?g      ?)rg  re  )r   r   r   )r    r    r    )ri  ri  ri  r   r   r    z Quantile must be between 0 and 1r5   皙?z"not a valid quantile interpolationzzz)r~   r   r0   rA  r   r;   r<   r  rW  r+   r+   r,   test_quantile
  sD   
$rm  c                  C   s   t g d} t| }| dgksJ t t ddgt ddgg} t| }| dgks4J t g d} tj| g dd}| g d	ksNJ t t ddgt ddgg} t| g d}| g d	ksqJ d S )
Nr   rc  r   r    r   r!   )r   r   r   rf  )r   rc  r!   )r~   r   r0   Ztdigestr   r   rW  r+   r+   r,   test_tdigest  s   
"
"rn  c                  C   sD   t d gt  d} | t  }|t dgt  ks J d S )NFr   )r~   r   bool_rb  rr  r
   rW  r+   r+   r,   test_fill_null_segfault  s   rp  c                  C   s  t g d} t g d}t g d}t| |}|t g dks&J t| |}|t g dks7J t| ||}|t g dksIJ t| ||}|t g dks[J tj| |dd}|t g d	ksnJ tj| |dd}|t g dksJ tj| |t d
}|t g d	ksJ tj| |t d
}|t g dksJ tj| |dd}|t g dksJ tj| |dd}|t g dksJ d S )Nr!  )r   r   r    r    r   N)r   r    r   rj  )r   r   r   TrQ   )r    r   r   r0  F)r   r    N)r~   r   r0   max_element_wiser=  r   )r  r  Zarr3r   r+   r+   r,   test_min_max_element_wise%  s6   

rs  r_   )rh  g      %@g      %rR   )TFc                 C   s  t | }d |tj|t dtj|t dg}|D ]h}tg dtg dtdd gddggg}tg d|rCtg dntg d	|rStg dgntg d	gg}t|D ]!\}}tj	|||d
}	t
|| |d urw|nd}
|	|
sJ q`qd | tj| t dtj| t dg}|D ]}tg dtdtjddddgtdtjd dd dgg}tg dtdtjtjtjtjtjg|rtdtjd tjd tjgntdtjd d d d gg}t|D ]*\}}tj	|||d
}	t
|| |d ur|nd}
tj|	jdd|
jdd qqdtddfD ]#}ttj tj	g d|d W d    n	1 s@w   Y  q#d S )Nrw   r!  )r   Nr     r   r  rt  )r   r   r"   )r   Nr  r  )r   NNNr^   )      ?g      @g     @@r   r    r	  r!   r	   r   )ru  g      @g     @FZzero_copy_onlyr   arrowrk  r!  )r  r~   r   r
   r   r   r   rK  r0   Zcumulative_sumr   r   r  r  r   rX  rA  assert_array_almost_equalto_numpyr;   r<   r   r_   rR   Z	start_intZstartsZstrtarraysZexpected_arraysrP  r   r   r   r+   r+   r,   test_cumulative_sumG  n   

r|  c                 C   s  t | }d |tj|t dtj|t dg}|D ]h}tg dtg dtdd gddggg}tg d|rCtg dntg d	|rStg dgntg d	gg}t|D ]!\}}tj	|||d
}	t
|| |d urw|nd}
|	|
sJ q`qd | tj| t dtj| t dg}|D ]}tg dtdtjddddgtdtjd dd dgg}tg dtdtjtjtjtjtjg|rtdtjd tjd tjgntdtjd d d d gg}t|D ]*\}}tj	|||d
}	t
|| |d ur|nd}
tj|	jdd|
jdd qqdtddfD ]#}ttj tj	g d|d W d    n	1 s@w   Y  q#d S )Nrw   r!  )r   Nr  r	   r   r  r	   )r   r    r"   )r   Nr  rh   )r   NNNr^   )ri  rc  r6  r    r	  r!   r   )ri  g      @g     @*@Frv  r   rw  rk  r!  )r  r~   r   r
   r   r   r   rK  r0   Zcumulative_prodr.  r   r  r  r   rX  rA  rx  ry  r;   r<   r   rz  r+   r+   r,   test_cumulative_prod}  r}  r~  )r   r6  g      @c                 C   sr  t | }d |tj|t dtj|t dg}|D ]l}tg dtg dtg dg dgg}tg d|rCtg dntg d|rStg dgntg dgg}t|D ]%\}}tj	|||d	}	tj
|| |d urw|nt d
dd}
|	|
sJ q`qd | tj| t dtj| t dg}|D ]m}tg dtdddtjddgtddd tjdd gg}tg dtg d|rtg dntg dg}t|D ]+\}}tj	|||d	}	tj
|| |d ur|nd
dd}
tj|	jdd|
jdd qqdtddfD ]#}ttj tj	g d|d W d    n	1 s0w   Y  qd S )Nrw   )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    NNNNr^   g    eFrQ   )rc  ?r7  ffffff@皙@@rc  r  r7  r  r  )rc  rc  r7  r  r  r  )rc  rc  r7  r7  r  r  )rc  rc  Nrc  r  N)rc  rc  NNNNrv  r   rw  rk  r!  r!  )r  r~   r   r
   r   r   r   rK  r0   cumulative_maxrr  r   r  r  r   rX  rA  rx  ry  r;   r<   r   rz  r+   r+   r,   test_cumulative_max  r   

	r  c                 C   sr  t | }d |tj|t dtj|t dg}|D ]l}tg dtg dtg dg dgg}tg d|rCtg dntg d|rStg dgntg dgg}t|D ]%\}}tj	|||d	}	tj
|| |d urw|nt d
dd}
|	|
sJ q`qd | tj| t dtj| t dg}|D ]m}tg dtdddtjddgtddd tjdd gg}tg dtg d|rtg dntg dg}t|D ]+\}}tj	|||d	}	tj
|| |d ur|nd
dd}
tj|	jdd|
jdd qqdtddfD ]#}ttj tjg d|d W d    n	1 s0w   Y  qd S )Nrw   )r	   r"   r!   r    r   r   )r	   r"   Nr    r   N)r	   r"   Nrq  )r	   r	   r!   r    r    r   )r	   r	   Nr    r    N)r	   r	   NNNNr^   g    eAFrQ   )      @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  NNNNrv  r   rw  rk  r!  r!  )r  r~   r   r
   r   r   r   rK  r0   Zcumulative_minr=  r   r  r  r   rX  rA  rx  ry  r;   r<   r   r  rz  r+   r+   r,   test_cumulative_min  r  r  c                   C   s  t dd dddksJ t jddddgd dddks"J t g dd	 tjjg dd	 gd
 dks>J tjt	dd t g dd	  W d    n1 sZw   Y  tjt	dd t jddgd W d    d S 1 szw   Y  d S )Nr   r   )0rW   rP  ro   )field_names)rP  ro   r!  za b cz0 1r  r_  r5   r   z0 arguments but 2 field namesonetwo)
r0   make_structr   splitr~   r  r  r;   r<   r  r+   r+   r+   r,   test_make_struct%  s,   
"r  c                  C   s  t t  t  } t jddgdgg ddgd g| d}t jg dt  d}t jg dt  d}t jd	gd d d
dgd gt t  d}t|dd|ksPJ t|t jdt  dd|ksbJ t|t jdt  dd|kstJ t|t jdt  dd|ksJ d S )N)r  r   )r  r    )noner   )r  r	   )r  r   rw   )r   NNr	   N)r   NNr   Nr   r	   r   r  rY   lastr   )	r~   Zmap_r  r   r   r  r0   Z
map_lookupr   )r   r   Zresult_firstZresult_lastZ
result_allr+   r+   r,   test_map_lookup8  sB   



r  c                  C   sB  t jg dt  d} t g d}t j| |gddg}t j| |gddg}t|d|ks2J t|d|ks<J t|ddg|ksHJ t|d	dg|ksTJ t|d
|ks^J t|td|kskJ t|d| ksuJ t|dg| ksJ t|d| ksJ t|td| ksJ tj|d	d	gd|ksJ t|d|ksJ t|dg| ksJ t|g |ksJ tj	t j
dd t|d W d    n1 sw   Y  tj	t j
dd t|d W d    n1 sw   Y  tj	t j
dd t|d W d    d S 1 sw   Y  d S )Nr!   r	   r"   rw   )r   Nr  r   r   r  z.c.bs   .c.br   )r   r   )r  r   z.a)r   rp   )r   r   r   zNo match for FieldRefr5   r   z.c.fooz.a.foo)r~   r   r   r  r  r0   Zstruct_fieldrU   r;   r<   r   )r   r   r  r   r+   r+   r,   test_struct_fields_optionsJ  s6   $r  c                   C   s<   t t g dg dg dg dtg dksJ d S )Nr   )FTNr!  )   r  r  )r   r  N)r0   Z	case_whenr  r~   r   r+   r+   r+   r,   test_case_wheno  s   r  c                  C   s   t dt  fdt  fg} t | }dddd dddd dd	dg}d d
dddddd dddg}t ||g|}d}t j||}t d d
ddg| }||sWJ d}t j||}t dd	ddddg| }||suJ d S )Nr   r   g?r    r%   g?r!   gffffff@r"   gp=
ף?r   gffffff?g333333?r   r   )	r~   r  r  r
   r  r   computeZlist_elementr   )Zelement_type	list_typel1l2listsr#  r   r   r+   r+   r,   test_list_elementv  s   
  r  c                     s\   t j    fddtddD } t| td}t|tjt	| t
 dks,J d S )Nc                    s   g | ]} j |d qS ))r  )r  )r(   yseedr+   r,   r-     r'  z'test_count_distinct.<locals>.<listcomp>i  i,  r  rw   )rs  nowr  r~   r   r  r0   count_distinctr   r8   r   )Zsamplesr   r+   r  r,   test_count_distinct  s   
(r  c                  C   s   t g d} t|  dksJ tj| dd dksJ tj| dd dks,J tj| dd dks9J t| d dksEJ d S )	Nr  r   r  r  r  r   r   r!   )r~   r   r0   r  r   r   r+   r+   r,   test_count_distinct_options  s   r  c                  C   s   t dg} tj| dd| ksJ tj| ddt dgks J t| d| ks*J t| dt dgks8J tjtdd	 tj| d
d W d    d S 1 sRw   Y  d S )Nu   01²3NFC)formrs   Z0123ZNFDZNFKDz/"NFZ" is not a valid Unicode normalization formr5   ZNFZ)r~   r   r0   Zutf8_normalizer;   r<   r  r   r+   r+   r,   test_utf8_normalize  s   "r  c                  C   s  dD ]} t jd| dtjg t dksJ qdd tdD }tt|t|ks,J dd tdd	D }tt|d
ks@J t ddg}|	dd tdD  dd |D }tt|t|kseJ t
jtdd t jd	g d W d    d S 1 sw   Y  d S )N)systemr  is   abcdefr   initializerrw   c                 S   s   g | ]}t td  qS )rh   tupler0   rC  r   r  r+   r+   r,   r-     s    ztest_random.<locals>.<listcomp>r   c                 S   s&   g | ]}t tjd |d d qS )rh   r   r  r  r  r+   r+   r,   r-     s    rh   r   r  r   c                 s   s    | ]}t d V  qdS )r   N)osurandomr  r+   r+   r,   r     r   ztest_random.<locals>.<genexpr>c                 S   s"   g | ]}t tjd |d qS )rh   r  r  r  r+   r+   r,   r-     s    zJinitializer should be 'system', an integer, or a hashable object; got \[\]r5   )r0   rC  r~   r   r  r  r8   rJ  r:   r  r;   r<   r=   )r  r{  Zinitializersr+   r+   r,   test_random  s*   
"r  ztiebreaker,expected_valuesr/  )r   r   r!   r"   r!   r"   r   ra   )r   r    r	   r   r	   r   r    rY   r   r   r!   r"   r	   r   r    Zdense)r    r   r   r!   r   r!   r   c                 C   sP   t g d}tjdd| d}tj||d}t j|t  d}||s&J d S )Nr  r  333333@Nr  Nr  r`   r3  rb   r0  rw   )r~   r   r0   r   rankr   r   )rd   Zexpected_valuesr   Zrank_optionsr   r   r+   r+   r,   test_rank_options_tiebreaker  s   r  c                  C   s*  t g d} t jg dt  d}t| }||sJ tj| t d}||s.J tj| tjdgdd}||sAJ tj| dd}t jg d	t  d}||sZJ tj| d
d}t jg dt  d}||ssJ tjt	dd tjd
ddd W d    d S 1 sw   Y  d S )Nr  r  rw   r0  ri   rj   r[   r\   )r	   r   r"   r   r   r    r!   rm   )r   r!   r   r"   r    r   r	   z'"NonExisting" is not a valid tiebreakerr5   r3  ZNonExistingrb   )
r~   r   r   r0   r  r   r   r;   r<   r  )r   r   r   Zexpected_at_startZexpected_descendingr+   r+   r,   test_rank_options  s0   


"r  c                  C   s  t t dt  t dt t dt  gg} td}td}td}td}td }tddi}tt d}ttd	}td
}	||||||||	g}
g ||k||k||k||	@ ||	B | |	 || || || || t
|t||t||t||t||t||t|t|t|t|t|t|t|t|t||t|t|t|t||t||t||t|t |t!|||j"t # d
d}tddktddktddktddktdddkg}tddktddktddktddktdddkg}||$g dtd% g}|
& }||7 }||7 }||7 }||
||||| dS )NZi64r   r   r   rk  Tr   r   r    Fro  r	   r   )r   r   r  r   )r   r   r!  )r   literalscallsrefsnumeric_refsspecialschema)'r~   r  rU   r   r  r   r0   r   r   r8  negater   r+  divider.  powersqrtexpcossintanacosatanasinatan2r  signZbit_wise_notZbit_wise_andZbit_wise_orZbit_wise_xorr\  	is_finiteZcoalescerr  r   isinr  copy)r  r   r   r  r  r  r  r  r  r  Zliteral_exprsZexprs_with_callZexprs_with_refZexprs_with_numeric_refsZspecial_casesZ	all_exprsr+   r+   r,   create_sample_expressions  s   





8









	
r  c                 C   sB   t  d D ]}t|tjsJ | | |}||sJ qd S )Nr   )r  r.   r0   
Expressionr   r   r   )r   exprZrestoredr+   r+   r,   #test_expression_serialization_arrow;  s
   r  c                  C   s  t  } | d }| d D ]}||}tj|}||sJ q| d D ])}||}tj|}t|t|ks;J ||}tj|}||sMJ q$t| d | d D ]+\}}||}tj|}t|t|kspJ ||}tj|}||sJ qW| d D ]}||}tj|}||}tj|}||sJ q| d d }||}tj|}|tdd	isJ td	}	|		g d
}|	d	k|	dkB |	dkB }
||}tj|}t|
t|ksJ ||}tj|}||sJ d S )Nr  r  r  r  r  r  r   r  r   r!  r    r   )
r  Zto_substraitr0   r  Zfrom_substraitr   r@  r   r   r  )Zexprsr  r  Z
serializedr   Zserialized_againZdeserialized_againZ	expr_normr  r   targetr+   r+   r,   'test_expression_serialization_substraitB  sN   










r  c            
      C   s>  t d} t d}t d}t d}t d}t d}t ddd}t d	}t d
d}| |B |k | |k dt fD ]	}	||	|k qA|ddg |ddg |ddg |ddg tt	 |d W d    n1 s|w   Y  ttj
 |t k W d    d S 1 sw   Y  d S )Nr   r   TFr   rU   r   r   )nestedrU   r  r   r    r   r   )r0   r   rU   r~   ro  rr  r  r;   r<   r=   r   r:   )
zeror  truefalser   rU   Znested_mixed_typesZnested_fieldZnested_field2r  r+   r+   r,   test_expression_construction  s.   







"r  c                  C   s   t d} t d}tjtdd | o| W d    n1 s w   Y  tjtdd | p0| W d    n1 s;w   Y  tjtdd t|  W d    n1 sVw   Y  tjtdd |   W d    d S 1 sqw   Y  d S )NTFz"cannot be evaluated to python Truer5   )r0   r   r;   r<   r  r   )r  r  r+   r+   r,   !test_expression_boolean_operators  s    


"r  c                  C   s   t d} tt | dksJ tt | dksJ tt j| dddks(J tt | ddks4J tt | tddksCJ d}tj	t
|d	 t | t W d    d S 1 s^w   Y  d S )
NrU   zhour(field)zround(field)r   r2  z2round(field, {ndigits=1, round_mode=HALF_TO_EVEN})zadd(field, 1)z+only other expressions allowed as argumentsr5   )r0   rU   r@  r  r0  r   r~   r   r;   r<   r=   r:   )rU   r   r+   r+   r,   test_expression_call_function  s   
"r  c                  C   sV   t dddgi} tt jj t| t   W d    d S 1 s$w   Y  d S )Nr   r   r    )	r~   r  r;   r<   rx  ry  r0   rr  r   )r  r+   r+   r,   test_cast_table_raises  s   "r  zstart,stop,expectedr!  r7  r"   NNr  r   r    r  fixedc                    s"  |dkr#t g dg dg dd gt t  dt | d}nt g dddgdgd gt t  || }|| | d	f}|d u rn|dkrnd
}tjt j|d tj	|  W d    d S 1 sgw   Y  d S tj	| }	|	t t  |	j
j }
|
 fdd|D ksJ d S )Nr  r!  r7  r  r   r!   r	   r"   TzZUnable to produce FixedSizeListArray from non-FixedSizeListArray without `stop` being set.r5   c                    s"   g | ]}|r|d d   n|qS r   r+   )r(   r  r  r+   r,   r-     s   " z0test_list_slice_output_fixed.<locals>.<listcomp>)r~   r   r  r
   rr  r;   r<   r   r0   
list_slicer/   Z	list_sizer   )r_   r  r  r   rv  r  r   r>   r   r   pylistr+   r  r,   test_list_slice_output_fixed  s0   "
r  z
start,stop))r   N)r   r   )r   r    r  )r    r!   c           
         s   |dkr%g dg dg dd g}t |t t  dt | d}ng dddgdgd g}t |t t  || }|dkrHt j}tj| d	d
}|j|| ks\J |t t   } fdd|D }	||	ksyJ d S )Nr  r!  r7  r  r   r!   r	   r"   FZreturn_fixed_size_listc                    s&   g | ]}|d ur|  nd qS r   r+   )r(   r  r  r+   r,   r-     s   & z3test_list_slice_output_variable.<locals>.<listcomp>)	r~   r   r  r
   rr  r0   r  r/   r   )
r_   r  r  rv  r  r   r   r   r  r   r+   r  r,   test_list_slice_output_variable  s.   r  return_fixed_sizer   r/   c                   C      t t dt  S Ncolr~   r  rU   r
   r+   r+   r+   r,   r        c                   C   s   t t dt  dS )Nr  r   r  r+   r+   r+   r,   r    r'  c                   C   r  r  )r~   rt  rU   r
   r+   r+   r+   r,   r    r  c                 C   sd   t dgg| }tj|dd| d}|jdj|jdjks"J | d u r.|j|jks0J d S d S )Nr   r   r  )r~   r   r0   r  r/   rU   r)   )r  r/   r   outr+   r+   r,   $test_list_slice_field_names_retained  s    r  c                  C   sp  t dggt t  d} d}tjt j|d t| dd W d    n1 s*w   Y  tjt j|d t| dd W d    n1 sIw   Y  tjt j|d t| dd W d    n1 shw   Y  d}tjt j|d d tj| dddd	 W d    n1 sw   Y  tjt j|d
 d tj| dddd	 W d    d S 1 sw   Y  d S )Nr   z@`start`(.*) should be greater than 0 and smaller than `stop`(.*)r5   rT   r    r   z`step` must be >= 1, got: r  r  z-1)	r~   r   r  r
   r;   r<   r   r0   r  )r   r   r+   r+   r,   test_list_slice_bad_parameters  s$   "r  c                 C   sH   t g d}tj|| d}t|}|j|jksJ ||s"J d S )N)r   r   r   r    r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0  )r~   r   r0   Zrun_end_encodeZrun_end_decoder/   r   )Zrun_end_encode_optsr   encodeddecodedr+   r+   r,   check_run_end_encode_decode2  s
   
r  c                   C   s<   t   t tt  t td t tt  d S )Nr   )r  r0   r   r~   r   r   r+   r+   r+   r,   test_run_end_encode:  s   r  c                  C   sd  t g d} t g d}t jj| dd}||sJ t g d} t g d}t jj| dd}||s:J t jg dt  d} t jg dt  d}t jj| d	d}||s_J t jg dt  d} t jg d
t  d}t jj| d	d}||sJ t jg dt  d} tjt j	dd t jj
| d	d W d    d S 1 sw   Y  d S )N)r   r    r   Nr!   r	   )Nr   r   NNr   r   rZ   )NNr    Nr   Nr    rw   )rT   rT   NNrT   NrT   )   r  NNr  Noverflowr5   )r~   r   r  Zpairwise_diffr   r
   r   r;   r<   r   Zpairwise_diff_checkedr  r+   r+   r,   test_pairwise_diffA  s,   "r  )r   r   )collectionsr   rs  r  	functoolsr   r   rD   r  r  r  r;   rC  r   r;  numpyr   Zpandasr  ImportErrorZpyarrowr~   Zpyarrow.computer  r0   Zpyarrow.libr   Zpyarrow.testsr   Zpyarrow.substraitZ	substraitpasZaranger   r  r
   rt  r   r  Zall_array_typesr.  __dict__r@  r7   rC   r   r   r   r   r  r  Znumerical_arrow_typesr?   rB   rM   markfilterwarningsr   r   r   r   r   r   r   r   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r&  r*  r,  r.  r2  r5  r6  r9  r?  rD  rQ  Zunknown_issue_is_alphaZutf8proc_issue_is_lowerZnumeric_info_missingZdigit_info_missingr  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/  rC  rN  rP  rW  rY  r]  rd  rg  rh  rm  rn  ru  r{  r|  r  r  rO  Zdecimal_type_traitsr  r  r  r  r  r  r@  r  r  r  Zskipifr   r   r  r   r  r	  r  r  r  r   r$  r1  r6  r8  rJ  rS  rX  rZ  r[  ra  rb  rm  rn  rp  rs  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,   <module>   s|  


*(
]


"	e"


	
&


	


$
#


'


 	
9JSZh)3$+"4477%	
!J=
"




