U
    -eq                    @   sP  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zd dlZW n ek
r   dZY nX d dlZd dlmZ d dlmZ d dlmZ ddddddg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dddddgfddddd d!gfed"d#d$d%d&d'gfe e! d(d)gd"d*gd
d+gdd,d-ggfe"e# d(gd)d"d*g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/d0 e&ej'( D Z)d1d0 e&ej'( D Z*e! e# e+ e, e- e. e/ e0 gZ1d2d3 Z2d4d5 Z3d6d7 Z4d8d9 Z5d:d; Z6dd<d=Z7d>d? Z8d@dA Z9dBdC Z:dDdE Z;dFdG Z<dHdI Z=dJdK Z>dLdM Z?dNdO Z@ejABdPe1dQdR ZCejABdPe1dSdT ZDdUdV ZEdWdX ZFdYdZ ZGd[d\ ZHd]d^ ZId_d` ZJdadb ZKdcdd ZLdedf ZMdgdh ZNdidj ZOdkdl ZPdmdn ZQdodp ZRdqdr ZSdsdt ZTdudv ZUdwdx ZVdydz ZWd{d| ZXd}d~ ZYdd ZZdd Z[e dd Z\ddhZ]dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd ddddddddd	d
ddddddddddddddhZ^dddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`hHZ_dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddÐdĐdŐdƐdǐdȐdɐdʐdːdhlZ`dddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYhAZ_e_e`B e]B e]e`e_e^d͜ZaejABdΐdϐdАdѐdҐdӐdԐdՐd֐dאdg
ejABdِdڐdgdܐd݄ Zbdސd߄ ZcejAjdd Zddd Zedd Zfdd Zgdd Zhdd ZiejABde%dd Zjdd Zkdd ZlejABdddgdd Zmdd ZnejABde%dd Zodd Zpdd Zqdd Zrd d ZsejABde%dd Ztdd Zudd Zvdd	 Zwd
d Zxdd ZyejABdddgdd ZzejABdddgdd Z{ejABdddgdd Z|dd Z}dd Z~dd Zdd ZejABdd d!gd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ ZejABdPe1d0d1 ZejABdPe1d2d3 Zd4d5 Zd6d7 ZejABd8e1d9d: Zed;d<Zed=d>Zed?ejd@edAejdBgZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZejAjBdOe0 gedPejAjBdQedRdS dPejAjBdTeeegdUdVdWgdPdXdY ZejAjBdOe/ e0 gedPejAjBdZed[dS dPd\d] Zd^d_ ZejAjejAjejd`koe  dadbdcdd ZddedfZejAjdgdh ZejAjejAjejd`koVe  dadbdidj Zdkdl ZejAjejd`koe  dadbejABdmdnejAjdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zd{d| Zd}d~ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZejABddejABdddd ZejABddejABdddd ZejABddejABdddd ZejABddejABdddd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZejABddd"d(d*d+d*d+d(gfdd"d)d
dd
dd)gfdd"d(d*d+d
dd)gfdd)d(d"d*d"d*d(gfgdd Zdd ZÐdd ZĐdd ZŐdd ZƐdd ZǐddÄ ZejABdd dd(d)d"gd*d
dgd+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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jABdŐdơejABd8ejej#ej0fejABdej ej"dfdɐdʄ ZejABdːd̡ejABdŐdơejABd8ejej#ej0fejABdej ej"dfd͐d΄ ZejABdϐdСejABdѐdҐdS dӐdS dԐdS fdՐdք Z̐dאd؄ Z͐ddِdڄZΐdېd܄ Zϐdݐdބ ZdS (      )
namedtupleN)	lru_cachepartial)ArrowNotImplementedError)utilboolTFuint8   int8uint16int16uint32int32uint64
   int64float      ?皙?doublestringabZdddeebinary   a   b   cs   ddds   ee   s   abcs   bcds   cdes   defs   efg            	      r   r   c                 C   s   g | ]\}}t |d r|qS )__arrow_compute_function__)hasattr).0namefunc r+   [/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/test_compute.py
<listcomp>B   s   
r-   c                 C   s4   g | ],\}}t |tr|tjk	rt|tjr|qS r+   )
isinstancetypepcFunctionOptions
issubclass)r(   r)   clsr+   r+   r,   r-   F   s
   

c               
   C   s   t } t| dkst| D ]j}|j}|d r,q|d }|dkr>q|tkrTt gd }nt g| }tjtdd ||  W 5 Q R X qd S )Nr   Zoptions_requiredarityr   r   zBGot unexpected argument type <class 'object'> for compute functionmatch)	exported_functionslenAssertionErrorr&   Ellipsisobjectpytestraises	TypeError)Z	functionsr*   descr4   argsr+   r+   r,   test_exported_functionsX   s     rA   c                  C   s,   t D ]"} t| jd }|jdkstqd S )Nr)   Zhash_aggregate)r7   r0   get_functionr&   kindr9   )r*   Zarrow_fr+   r+   r,    test_hash_aggregate_not_exportedr   s    rD   c                  C   sR   t } t| dkst| D ]4}t|}|j D ]}|j|j|j	fks0tq0qd S )Nr   )
exported_option_classesr8   r9   inspect	signature
parametersvaluesrC   VAR_POSITIONALVAR_KEYWORD)classesr3   sigparamr+   r+   r,   test_exported_option_classesz   s    
rO   c               3   C   sX  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'g/} t6j7d(kst89 r| :t d) d*d+ | D }t;D ]j}||krt6j7d(ksBt89 r|t jkrz| :|  W n& t<k
r   t=>d,|  Y nX q| D ]d}||kst?t@|A|jBjCst?|D }t jEF|}||kst?t@|t@|kst?qtG| | dd  D ]\}}||kst?qt@t tdd-ks>t?t@t  d.ksTt?d S )/N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startrT   	ascendingmax	sort_keysr_   
tiebreakerr    towards_infinitysecond)week_starts_mondayd   r   rb   re   dummy
descending%Ysindices NFKCri   rR   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IndexOptions(value=int64:1)z7ArraySortOptions(order=Ascending, null_placement=AtEnd))Hr0   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PartitionNthOptionsZCumulativeOptionsZ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appendrE   r>   r<   Zfailr9   repr
startswith	__class____name__	serializer1   Zdeserializezip)optionsrL   r3   rz   bufZdeserializedZoption1Zoption2r+   r+   r,   test_option_class_equality   s    


 



7
r   c                   C   s(   t t dkstdt ks$td S )Nr   add)r8   r0   list_functionsr9   r+   r+   r+   r,   test_list_functions   s    r   c                    s\   t | }t||st|j}||ks*t|t|jks<tt fdd|jD sXtd S )Nc                 3   s   | ]}t | V  qd S N)r.   r(   kerexpected_ker_clsr+   r,   	<genexpr>   s     z&_check_get_function.<locals>.<genexpr>)r0   rB   r.   r9   num_kernelsr8   kernelsall)r)   Zexpected_func_clsr   Zmin_num_kernelsr*   nr+   r   r,   _check_get_function   s    
r   c                   C   s   t dtjtjd d S )Nr      )r   r0   ZScalarFunctionZScalarKernelr+   r+   r+   r,   test_get_function_scalar   s    r   c                   C   s   t dtjtjd d S )Nuniquer   )r   r0   ZVectorFunctionZVectorKernelr+   r+   r+   r,   test_get_function_vector   s    r   c                   C   s   t dtjtjd d S )NZmeanr   )r   r0   ZScalarAggregateFunctionZScalarAggregateKernelr+   r+   r+   r,   "test_get_function_scalar_aggregate   s     r   c                   C   s   t dtjtjd d S )NZhash_sumr   )r   r0   ZHashAggregateFunctionZHashAggregateKernelr+   r+   r+   r,    test_get_function_hash_aggregate   s     r   c                  C   s   t dddg} tdddg}| |}tjd| |gt  d}t dddg}||s`t||snttj| |t  d}||std S )NfoobarZbazr    r   take)Zmemory_pool)	r   r   npr   r0   Zcall_functionZdefault_memory_poolequalsr9   )arrrs   Zresult1Zresult2expectedZresult3r+   r+   r,   #test_call_function_with_memory_pool   s    
r   c                  C   sp   t  D ]b} t | }tt|}t|t|ks:t|j|jksJt|j	|j	ksZt|j
|j
kstqd S r   )r0   r   rB   pickleloadsdumpsr/   r9   r)   r4   r   r)   r*   Zreconstructedr+   r+   r,   test_pickle_functions  s    
r   c               	   C   sV   t  D ]H} ztt | }W n tk
r2   Y qY nX tt|}||kstqd S r   )r0   r   getattrAttributeErrorr   r   r   r9   r   r+   r+   r,   test_pickle_global_functions  s    
r   c                  C   s   t  D ]t} t | }t|t js&t|j| ks4t|j}|jt	|ksLtt
dd |D sbtt| |D ]}t| qnqd S )Nc                 s   s   | ]}t |tjV  qd S r   )r.   r0   ZKernelr   r+   r+   r,   r   ,  s     z+test_function_attributes.<locals>.<genexpr>)r0   r   rB   r.   Functionr9   r)   r   r   r8   r   r   )r)   r*   r   r   r+   r+   r,   test_function_attributes$  s    
r   c                  C   st   t ddgdd g} |  dd gks(tt ddgd} |  ddgksLtt ddd gd dd	d gksptd S )
Nr   r    r!   r	   r"   r   r   TF)r0   r   	to_pylistr9   equalr   r+   r+   r,   test_input_type_conversion2  s    r   
arrow_typec                 C   sL  t jddddg| d}|  dks*tt| dks@tt jddddd g| d}|  dksltt| dkstt jd g| d}|  d kstt| d kst|jdd dksttj|dd dkstt jg | d}|  d kst|jdd dks,ttj|dd dksHtd S )	Nr   r    r   r!   ry   r   r   	min_count)r   r   sumas_pyr9   r0   r   r   r+   r+   r,   test_sum_array>  s    r   c                 C   s  t t jddddg| dg}t| dks4tt t jddg| dt jddg| dg}t| dksttt t jddg| dt jg | dt jddg| dg}t| dkstt jd| d}|jdkstt| d ksttj|dd	 dkstd S )
Nr   r    r   r!   ry   r   r+   r   r   )r   chunked_arrayr   r0   r   r   r9   
num_chunksr   r+   r+   r,   test_sum_chunked_arrayT  s"     r   c                  C   s  t jddddddgdd} t| }t|dks4t|d  ddd	ksNttj| dd
}t|dkslt|d  ddd	kst|d  ddd	kstt jg dd} tt| dkstt jdddddd gdd} tj| dd}t|dksttj| dd}t|dksttj| ddd}t|dks>tt ddg} tj| dd
}t|dkslt|d  ddd	kst|d  ddd	kstd S )Nr   r   r!   r	   r   ry   r   r    modecountr   FrS   r"   r   rT   r   T)r   r   r0   r   r8   r9   r   r   r   r+   r+   r,   test_mode_arrayk  s,    
r   c               	   C   s   t t jddddddgddg} t| }t|dks<t|d  ddd	ksVttj| dd
}t|dkstt|d  ddd	kst|d  ddd	kstt jddd} | jdksttt| dkstd S )Nr   r   r!   r	   r   ry   r   r    r   r   r+   )	r   r   r   r0   r   r8   r9   r   r   r   r+   r+   r,   test_mode_chunked_array  s    "
r   c               	   C   s@   d} t jtj| d tg  W 5 Q R X tjg t d d S )Nz@cannot construct ChunkedArray from empty vector and omitted typer5   ry   )r<   r=   r   ArrowInvalidr   r
   )msgr+   r+   r,   test_empty_chunked_array  s    r   c                  C   sb   ddddddddg} t |  d	ks*tt j| d
d d	ksDtt j| dd dks^td S )Nr   r    r   r!   r	   r"      r   g      @r   )Zddofg      @)r0   Zvariancer   r9   datar+   r+   r,   test_variance  s    r   c                  C   s   t  t  ft  t  ffD ]\} }t jdddddd g| d}t|d}t jdddd	d	d g|d}||kstttj|dd
d}t jdddd	dd g|d}||ks tq d S )NabcabZabcabbaABry   r   r    r   TZignore_case)	r   r   r   large_stringr   r   r0   Zcount_substringr9   tyoffsetr   resultr   r+   r+   r,   test_count_substring  s    r   c                  C   s   t  t  ft  t  ffD ]\} }t jdddddd g| d}t|d}t jddd	dd
d g|d}||svt	tj|ddd}t jdddddd g|d}||s t	q d S )Nr   r   ZbaAacaar   r   ry   za+r   r   r   Tr   r    )
r   r   r   r   r   r   r0   Zcount_substring_regexr   r9   r   r+   r+   r,   test_count_substring_regex  s    r   c                  C   s   t  t  t  t  fD ]} t jdddd g| d}t|d}| dddd gksZt	t
|d}| dddd gks~t	t jd	d
ddg| d}tj|ddd}| ddddgkst	tj
|ddd}| ddddgkst	qd S )Nr   r   r   ry   r   r   rV   za?bzab*zcAB*zaB?zaB*Tr   )r   r   r   r   large_binaryr   r0   Zfind_substringr   r9   Zfind_substring_regex)r   r   r   r+   r+   r,   test_find_substring  s     r   c                  C   s   t ddddd g} t| d}t ddddd g}||sBtt dd	ddd g} tj| ddd
}t ddddd g}||sttj| ddd
}t ddddd g}||std S )Nr   zba%r   zca%dz_a\%%FTaBzbA%r   )r   r   r0   Z
match_liker   r9   r   r   r   r+   r+   r,   test_match_like  s    r   c                  C   s   t dddd g} t| d}t dddd g}||s>tt dddd g} tj| ddd	}t dddd g}||sttj| ddd	}t dddd g}||std S )
Nr   abcr   TFu   áBu   Ábcu   ábr   )r   r   r0   Zmatch_substringr   r9   r   r+   r+   r,   test_match_substring  s    r   c                  C   s   t ddddd g} t| d}t ddddd g}||sBtt dd	d
dd g} tj| ddd}t ddddd g}||sttj| ddd}t ddddd g}||std S )Nr   r   r   cz^a?bTFr   ZAbcZBAr   )r   r   r0   Zmatch_substring_regexr   r9   r   r+   r+   r,   test_match_substring_regex  s    r   c                  C   s   t dd dg} t| }t dd dg}||s8tt dd dg} t| }t dd dg}||sptt dd dg} tj| dd}t dd d	g}||stt| d}t dd d	g}||std S )
N foou    　foo bar 	r   foo baru
   　foo baru    f　)
charactersZoozoo bar 	)r   r   r0   Zutf8_trim_whitespacer   r9   Zascii_trim_whitespaceZ	utf8_trimr   r+   r+   r,   	test_trim  s    

r   c               	      s   t ddddddg} tddD ]| ttddd gD ]bd	D ]Xt  fd
d| D }tj|  d}||stt|  |ks@tq@q8q d S )N u   𝑓u   𝑓öu   𝑓öõu   𝑓öõḍu   𝑓öõḍšr"   )rV   r   r    r   c                    s   g | ]}|    qS r+   r   r(   kra   stepstopr+   r,   r-     s   z,test_slice_compatibility.<locals>.<listcomp>ra   r  r  )	r   r   range	itertoolschainr0   Zutf8_slice_codeunitsr   r9   r   r   r   r+   r   r,   test_slice_compatibility  s*         r  c                     s   t ddddddg} ttddtddtd	d
D ]h\ dkrJq6t  fdd| D }tj|  d}||stt|  |ks6tq6d S )N    r   s   as   ab s   abcs   abder   r"   r   r!   r   c                    s   g | ]}|    qS r+   r   r   r   r+   r,   r-   /  s   z3test_binary_slice_compatibility.<locals>.<listcomp>r  )	r   r   r  productr  r0   Zbinary_slicer   r9   r  r+   r   r,   test_binary_slice_compatibility(  s$       r  c                  C   s   t ddg} tj| dd}t ddgddd	gg}||sBttj| dd
d}t ddgddgg}||svttj| dd
dd}t ddgdd	gg}||std S )N-foo---bar--
---foo---b---rU   z-foozbar--r   r   r   r   
max_splitsfoo---bTr  reversez---foo)r   r   r0   Zsplit_patternr   r9   r   r+   r+   r,   test_split_pattern8  s    r  c                  C   s   t ddg} t| }t ddgdddgg}||s>ttj| dd}t ddgdd	gg}||spttj| dd
d}t ddgddgg}||std S )Nr       foo  　	br   r   r   r   r   r  
   foo  　	bTr  r   )r   r   r0   Zutf8_split_whitespacer   r9   r   r+   r+   r,   test_split_whitespace_utf8G  s    
r  c                  C   s   t ddg} t| }t ddgddddgg}||s@ttj| dd	}t ddgdd
gg}||srttj| ddd}t ddgddgg}||std S )Nr   r  r   r   r   u   　r   r   r  r  Tr  u	    foo  　)r   r   r0   Zascii_split_whitespacer   r9   r   r+   r+   r,   test_split_whitespace_asciiV  s    
r  c               	   C   s   t ddg} tj| dd}t ddddgdddgg}||sFttj| dd	d
}t ddgddgg}||szttjtdd tj| dd	dd}W 5 Q R X d S )Nr  r  z-+r  r   r   r   r   r   r  zfoo---bar--r  z"Cannot split in reverse with regexr5   r  T)rU   r  r  )	r   r   r0   Zsplit_pattern_regexr   r9   r<   r=   NotImplementedErrorr   r+   r+   r,   test_split_pattern_regexe  s        r  c               	   C   sv  dddd dg} t | }| dddks.tt j| t  d}| dddksVtt j| t jddd}| dddkstt j| t jd	dd}| d d dkstt j| d
d	id}| d d dkstt j| d	d}| d d dksttt t j| t  d	d}W 5 Q R X t  }tt t j| |d}W 5 Q R X tjtdd t  }W 5 Q R X d S )Nr!   r	   r"   r   )minrc   r   TrS   FrT   )r   rT   zmin_max takes 1 positionalr5   )	r0   min_maxr   r9   r   r<   r=   r>   r   )r   rq   r   r+   r+   r,   test_min_maxu  s0    
  r  c                  C   s   t jddd} tjg dd}t | d ks2tt j|dd dksLtt j|| d dksfttdd dg}t | dkstt j|| d dksttdd dg}t | dkstt j|| d d kstd S )	NFr   r   r   ry   r   r  T)r0   r   r   r   anyr   r9   r   r   r+   r+   r,   test_any  s    r"  c                  C   st  t jddd} tjg dd}t | d ks2tt j|dd dksLtt j|| d dksfttddg}t | dkstt j|| d dksttdd g}t | dkstt j|| d d ksttdgdd gg}t | dkstt j|| d d ks*ttdgdgg}t | dksTtt j|| d dksptd S )	NFr   r   r   ry   r   Tr  )r0   r   r   r   r   r   r9   r   r!  r+   r+   r,   test_all  s"    r#  c               	   C   sN   ddd g} t |  dddgks&ttt t j| d d W 5 Q R X d S )Nr!   r	   TFr  )r0   is_validr   r9   r<   r=   r>   r   r+   r+   r,   test_is_valid  s    
r%  c                   C   s\   t jjtdkstt jjtdks,tt jjtdksBtt jjtdksXt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   r  __doc__textwrapdedentr9   r   min_element_wisefilterr+   r+   r+   r,   test_generated_docstrings  s    r+  c                  C   s   t tj} t| dkstt tj} t| dks8tt tj} t| dksTtt tj} t| dksptt tj	} t| dkstt tj
} t| dkst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))rF   rG   r0   r   strr9   r  quantilebinary_join_element_wisechooserandom)rM   r+   r+   r,   test_generated_signatures3  s    r1  c                  C   sb   t  } dd tddD }tt| }t|D ]&\}}|| | kr6| 	t
| q6| S )Nc                 S   s*   g | ]"}d |  krdk sn t |qS )      )chr)r(   r   r+   r+   r,   r-   X  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_codepointsU  s    r>  i  i        i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  iz  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`  ia  ib  ic  id  ie  if  ig  ih  ii  ij  ix  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  iq   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i|,  i},  i  i  ip  i  i  i\  i]  i^  i_  i4  i4  i*8  iM;  i N  iN  iN  i	N  i]N  iN  iN  iN  iN  iN  iN  iN  iO  ipO  iQ  iFQ  iiQ  ikQ  imQ  iAS  iCS  iDS  iES  iLS  iS  iS  iS  iS  iV  iX  iX  iz^  i^  i^  i_  i_  i_  i_  ib  iLc  ig  io  is  i~v  i  i,  i  i  i0  i!  iF  iL  ix  i  ik  is  ix  i  i  i  i  i i i i i i i          ii  ij  ik  il  im  in  io  ip  iq  i  ip   it   iu   iv   iw   ix   iy   i   i   i   i   i   i   i   i   i   i   i`$  ia$  ib$  ic$  id$  ie$  if$  ig$  ih$  it$  iu$  iv$  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$  iv'  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@
 iA
 iB
 iC
 i` ia ib ic id ie if ig ih )is_alnumis_alphais_digit
is_numericis_lowerfunction_namerD  rE  Zis_asciiZ
is_decimalrF  rH  rG  r<  is_spaceZis_uppervariantasciiutf8c           	      C   s   |d |  }|  dd}t| t t B }ttr6dndD ]n}|tddkrPq<||krZq<t|}tt	|r<| dkr<t
|g}tt	|}||d  t|| ks<tq<d S )	N_r   r5  r6  r2  r3  rJ  r   )replacecodepoints_ignoregetr7  r>  r  rL  r4  r'   r0   r   r   r   r   r9   )	rI  rK  Z
arrow_nameZpy_nameignorer=  r   arZ
arrow_funcr+   r+   r,   test_string_py_compat_boolean  s    
rT  c                  C   s  t d ddg} tj| dd d ddgks0ttj| dd d ddgksPttj| dd d ddgksptt| d d ddgkstt| d d ddgkstt| d d ddgkstt d ddg} tj| dd d d	dgksttj	| dd d d
dgksttj
| dd d ddgks>tt| d d d	dgks^tt	| d d d
dgks~tt
| d d ddgkstd S )Nr   abcdr   )widthz a z  aza     áu    á u     áu   á  )r   r   r0   Zascii_centertolistr9   Z
ascii_lpadZ
ascii_rpadZutf8_centerZ	utf8_lpadZ	utf8_rpadr   r+   r+   r,   test_pad  s        ""  rY  c               	   C   s   t dd} td ddddddg}| }| D ]\}| D ]R}|j||d	}tj|||d	d
}| | kspt	t|||d	|ks6t	q6q.td ddddddg}| }| D ]D}| D ]:}|j||d	}tj
|||d	d
}| | kst	qqd S )Nr   r!   r   r   r   r   rU  ZabcdeZXX)ra   r  replacementu   πu   πbu   πbθu   πbθdu   πbθde)r  r   r   	to_pandasr,  Zslice_replacer0   Zbinary_replace_slicerX  r9   Zutf8_replace_slice)offsetsr   Zseriesra   r  r   actualr+   r+   r,   test_replace_slice  s4    
      r^  c                  C   s   t ddd g} tj| ddd}| ddd gks6tt| dd}| ddd gksZttj| dddd	}| d
dd gksttj| dddd}| d
dd gkstd S )NZfoozfooZfoodr   r   rU   rZ  ZbarzbarZbardr   )rU   rZ  max_replacementsZbarzfoo)r`  )r   r   r0   Zreplace_substringrX  r9   )r   rS  r+   r+   r,   test_replace_plain  s    
ra  c                  C   s|   t ddd g} ddd g}tj| ddd}| |ks:ttj| ddd}| |ksZtt| dd}| |ksxtd S )	Nr   ZmoodZf00Zm00dz(.)ooz\100r_  )rZ  )r   r   r0   Zreplace_substring_regexrX  r9   )r   r   rS  r+   r+   r,   test_replace_regex	  s    
rb  c                  C   s`   t ddg} ddddddg}tj| dd	}| |ks@tt| d}| |ks\td S )
NZa1Zzb2zr   rY   )letterdigitr   rZ   z(?P<letter>[ab])(?P<digit>\d)r  )r   r   r0   Zextract_regexrX  r9   )rS  r   structr+   r+   r,   test_extract_regex  s    rf  c                  C   s   t ddgd g g} t dd dg}t| d|s:t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| ||std S )Nr   r   zfoo-barr   -rY   rZ   ry   Za1bZc2dr   r   r   d)r   r   r0   Zbinary_joinr   r9   r   list_)Zar_listr   Zseparator_arrayr+   r+   r,   test_binary_join  s    $rj  c                  C   s  t jd t  d} d ddgdd dgd ddgg}tj|  d d dgksJttddd d	ksdttd| d d ks~ttdd|  d ksttjd
d}tj|d|i d ddgksttjddd|d d	ksttjd| d|d dksttjdd| |d d ks$ttjddd}tj|d|i d ddgksVttjddd|d d	ksvttjd| d|d dksttjdd| |d d kstd S )Nry   r   r   r   rh  rg  z--zb--dza-bskip)null_handlingr   r  rO  Zspam)rl  Znull_replacementza-spam)	r   r   r   r0   r.  r   r9   r   r   )nullZarrsrk  rO  r+   r+   r,   test_binary_join_element_wise(  s          
   

   
   
   rn  )r   rI   c              	   C   s  t j|| d}t  t  fD ]}t jdddd g|d}||}|  t j|d |d |d d g| d}||sztt jg |d}||}|  t jg | d}||stqt ddg}t	t
 || W 5 Q R X t ddg}t	t
 || W 5 Q R X d S )Nry   r   r!   r    r	   rV   )r   r   r
   r   r   validater   r9   r<   r=   
IndexError)r   rI   r   indices_typers   r   r   r+   r+   r,   	test_takeF  s$    
"
rr  c               
   C   s   t td} dD ]L}t jdddd g|d}| |}|  t dddd g}||stqt  t  fD ]8}t jdddg|d}t	
t | | W 5 Q R X qpd S )Nr	   )r   r
   r   r   r   r   r   r   r   r!   r    ry   )r   r   r  r   ro  r   r9   float32float64r<   r=   r  )r   rq  rs   r   r   r+   r+   r,   test_take_indices_types`  s    
ru  c                  C   s   t dddddgdddd	d
gg} tddddddg}| |}t ddddd
dgg}||shtt dgddgg}| |}t dgd
dgg}||std S )Nr   r   r   rh  efghr=  jr   r	   r   r"   r#   r    )r   r   r   r   r   r   r9   )r   rs   r   r   r+   r+   r,   test_take_on_chunked_arrayq  s8    

	r{  orderedc                 C   s   t jjddddddgdddg| d}|t dddg}|  | dddgksXt|j dddgkspt|j	j
| kstd S )	Nr   r   r    r   r   r   )r|  r   )r   ZDictionaryArrayfrom_arraysr   r   ro  r   r9   
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 dddd g}t| |d	ksntt||d	kstt||d
d	kstt||d
d	kstd S )Nr   r	   r    r   rX   r   r   r   r!   r   )	r   r   r   record_batchtabler8   r   r9   column)r   chunked_arrbatchr  rs   r+   r+   r,   test_take_null_type  s    r  c                    s^   t j|| d   }|jdd  fddtt D } t |}||sZtd S )Nry   T)fullc                    s   g | ]} | j r|qS r+   )r$  r(   r=  r   r+   r,   r-     s     
 z"test_drop_null.<locals>.<listcomp>)	r   r   	drop_nullro  r  r8   r   r   r9   )r   rI   r   rs   r   r+   r   r,   test_drop_null  s    r  c                  C   sP   t dd gddd gd gg g} t dgddgg g g}|  }||sLtd S )Nr   r   rh  )r   r   r  r   r9   )r   expected_dropr   r+   r+   r,   test_drop_null_chunked_array  s    r  c               	   C   s   t jt dd ddd ggdgd} |  }t jt dddggdgd}||sVtt jt dd ddd gt d d dd dggddgd} |  }t jt dgt dggddgd}||std S )Nr   r   rh  a'r  rv  zb')r   r  r   r  r   r9   )r  r   r   r+   r+   r,   test_drop_null_record_batch  s&      r  c               
   C   s  t jt dd ddd ggdgd} t jt dddggdgd}|  }||sVtt jt dd gddd ggt dd gd dd ggt dgdgd gdd gggdddgd} t jt ddgt ddgt ddggdddgd}|  }||stt jt ddgdddggt dgdgd gd	d ggt d
d gddd gggdddgd} t jt ddgt dd	gt d
dggdddgd}|  }||std S )Nr   r   rh  r  r   rv  ABDza`zc`zd`)r   r  r   r  r   r9   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sZtt| dksntt| ddkstt| ddkstd S )Nr   r	   r    r   r  r   )	r   r   r   r  r  r8   r  r9   r  )r   r  r  r  r+   r+   r,   test_drop_null_null_type  s    r  c              	   C   s  t j|| d}t ddddd g}|j|dd}|  |t j|d |d g| ds\t|j|dd}|  |t j|d |d d g| dstt dd	dd	dg}tt || W 5 Q R X t dddg}tjt	d
d || W 5 Q R X d S )Nry   TFZdropZnull_selection_behaviorr   r   	emit_nullr   must all be the same lengthr5   )
r   r   r*  ro  r   r9   r<   r=   r  
ValueError)r   rI   r   maskr   r+   r+   r,   test_filter  s    $&r  c                  C   s   t dd gdddgg} t dgdgg}t dgd dgg}t ddd ddgt ddd gddggddd ddgfD ]8}| |}||st| j|dd}||svtqvd S )	Nr   r   rh  rv  TFr  r  )r   r   r   r*  r   r9   )r   r  expected_nullr  r   r+   r+   r,   test_filter_chunked_array  s    
r  c                  C   s   t jt dd dddggdgd} t ddd ddg}| |}t jt ddggdgd}||sjt| j|d	d
}t jt dd dggdgd}||std S )Nr   r   rh  rv  r  r  TFr  r  )r   r  r   r*  r   r9   )r  r  r   r   r+   r+   r,   test_filter_record_batch&  s     
r  c                  C   s   t jt dd dddggdgd} t jt ddggdgd}t jt dd dggdgd}t ddd ddgt ddgd ddggddd ddgfD ]8}| |}||st| j|dd	}||stqd S )
Nr   r   rh  rv  r  TFr  r  )r   r  r   r   r*  r   r9   )r  r  r  r  r   r+   r+   r,   test_filter_table5  s    "
r  c               
   C   s   t dd gdddgg} t jt dd dddggdgd}t jt dd dddggdgd}| ||fD ]n}t dddddg}tt || W 5 Q R X t d	d
d	g}tjt j	dd || W 5 Q R X qfd S )Nr   r   rh  rv  r  r  r   r   TFr  r5   )
r   r   r  r   r  r<   r=   r  r*  r   )r   r  r  objr  r+   r+   r,   test_filter_errorsH  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dgd }t| |dksntt||dkstt||ddkstt||ddkstd S )	Nr   r	   r    r   r  TFr   )	r   r   r   r  r  r8   r*  r9   r  )r   r  r  r  r  r+   r+   r,   test_filter_null_type[  s    r  typr   r   c                 C   s6  | dkrdd }ndd }|ddddd g}|dddd dg}t ||}||d	d
d
d d gsftt ||}||d
d	d	d d gstt ||}||d
d
d	d d gstt ||}||d	d
d	d d gstt ||}||d
d	d
d d gstt ||}||d	d	d
d d gs2td S )Nr   c                 S   s
   t | S r   r   r   rI   r+   r+   r,   conl  s    ztest_compare_array.<locals>.conc                 S   s   t | gS r   r   r   r  r+   r+   r,   r  o  s    r   r    r   r!   TF)	r0   r   r   r9   	not_equalless
less_equalgreatergreater_equal)r  r  arr1arr2r   r+   r+   r,   test_compare_arrayi  s"    
r  c                 C   sh  | dkrdd }ndd }|dddd g}t d}t||}||dd	dd gsZt| dkrt jd d
d}t||}t|}||d	d	d	d	gstt||}||d	dd	d gstt||}||d	ddd gstt	||}||d	d	dd gstt
||}||ddd	d gs<tt||}||dd	d	d gsdtd S )Nr   c                 S   s
   t | S r   r  r  r+   r+   r,   r    s    z'test_compare_string_scalar.<locals>.conc                 S   s   t | gS r   r  r  r+   r+   r,   r    s    r   r   r   FTr   ry   )r   r   r0   r   r   r9   is_nullr  r  r  r  r  )r  r  r   r   r   nascalarZisnullr+   r+   r,   test_compare_string_scalar  s,    


r  c                 C   s\  | dkrdd }ndd }|dddd g}t d}t||}||dd	dd gsZt| dkrt jd d
d}t||}| d d d d gkstt||}||d	dd	d gstt||}||d	ddd gstt	||}||d	d	dd gstt
||}||ddd	d gs0tt||}||dd	d	d gsXtd S )Nr   c                 S   s
   t | S r   r  r  r+   r+   r,   r    s    z test_compare_scalar.<locals>.conc                 S   s   t | gS r   r  r  r+   r+   r,   r    s    r   r    r   FTr   ry   )r   r   r0   r   r   r9   r   r  r  r  r  r  )r  r  r   r   r   r  r+   r+   r,   test_compare_scalar  s*    

r  c                  C   s   t ddddd g} t dddgdd gg}t ddgddd gg}t ddddd gg}| |f|| f||ffD ]"\}}t||}||sptqpd S )Nr   r    r   r!   T)r   r   r   r0   r   r   r9   )r   Zarr_chunkedZarr_chunked2r   leftrightr   r+   r+   r,    test_compare_chunked_array_mixed  s    r  c                  C   sZ   t dddddg} t dddddg}t| |}t ddddd	g}||sVtd S )
Nr   r    r   r!   r	   r   rV   r"   r   )r   r   r0   r   r   r9   r  r  r   r   r+   r+   r,   test_arithmetic_add  s
    r  c                  C   sZ   t dddddg} t dddddg}t| |}t dddddg}||sVtd S )Nr   r    r   r!   r	   r   rV   )r   r   r0   subtractr   r9   r  r+   r+   r,   test_arithmetic_subtract  s
    r  c                  C   sZ   t dddddg} t dddddg}t| |}t dddd	d
g}||sVtd S )Nr   r    r   r!   r	   r   rV   r   r      )r   r   r0   multiplyr   r9   r  r+   r+   r,   test_arithmetic_multiply  s
    r  r   roundround_to_multiplec           	      C   sJ  | dkrt j}tt jdd}n| dkr:t j}tt jdd}ddd	d
dddd g}dddddddd gdddddddd gdddddddd gdddddddd gdddddddd gdddddddd gdddddddd gdddddddd gdddddddd gdddddddd gd
}| D ]4\}}||d}|||d}tj	|t
| qd S )Nr  r   ndigitsr  r   multipleg	@      @皙@      @皙	g      gr   r!   r	   r   )
ZdownupZtowards_zerorg   Z	half_downZhalf_uphalf_towards_zerohalf_towards_infinityZhalf_to_evenZhalf_to_odd
round_moder  )r0   r  r   r   r  r   itemsr   testingassert_array_equalr   r   )	r   r  r   rI   Zrmode_and_expectedr  r   r   r   r+   r+   r,   test_round_to_integer  s,    
r  c                  C   s   dddddddd g} dd	d	d	d	d	d	d gdd	d	d	d	d
d	d gdddddddd gdddddddd gdddddddd gd}|  D ]h\}}t|d}tj| |d}tjj|t|dd tj| |dd|kst	t| |d|ks|t	q|d S )N@  r  皙@r  V-	):ˏA\(\,  r   r!   r   r	   r   i@r  ̌Agp=
ף@gGz	g(\Affffff)r   rV   r   r   r    r  r  TZ	equal_nanr  )
r  r0   r   r  r   r  assert_allcloser   r   r9   )rI   Zndigits_and_expectedr  r   r   r   r+   r+   r,   
test_round  s"    r  c                  C   sj  dddddddd g} dddd	dd
ddd gt dddd	dd
ddd gddddddddd gddddddddd gt jdt ddddddddddd gi}| D ]P\}}t|d}tj| |d}tjj	|t 
|dd t| |d|kstqddt dfD ].}tjt jdd  tj| |d! W 5 Q R X qtd"fD ].}tjtd#d  tj| |d! W 5 Q R X q6d S )$Nr  r  r  r  r  r  r  g?r  r  r  r  r   r   r    r!   r  ir   r   r  rj   ry   r  r  r  Tr  r   g$z"Rounding multiple must be positiver5   r  l   l+?R zis not a valid multiple type)r   r   
decimal256r  r0   r   r  r   r  r  r   r9   r<   r=   r   r;   r>   )rI   Zmultiple_and_expectedr  r   r   r   r+   r+   r,   test_round_to_multiple'  s:        
r  c               	   C   s   dddddddg} t ddddd	d
dgt  }t dddddddgt  }t| ||ksbtt dt  }t dt  }t dt  }tjd|dd|ksttjd|dd|kstd S )Ngw/^@g/$Rm@g+ٚu@gv|@r   r   rV   r   r   r    r      i^  i  g     ^@g
ףp=Rm@r   r	   r  r  r  )r   r   r   rt  r0   Zround_binaryr9   r   )rI   scalesr   Zexpect_zeroZ
expect_infscaler+   r+   r,   test_round_binaryB  s0         r  c                  C   sn  t dddd g} |  }t ddddg}||s:t|t| sNt|  }t ddddg}||svt|t| stt ddgdd gg} |  }t ddgddgg}||st|  }t ddgddgg}||stt dddd tj	g} |  }t dddddg}||s:t| jdd}t dddddg}||sjtd S )Nr   r    r   FT)Znan_is_null)
r   r   r  r   r9   r0   r$  r   r   nanr   r+   r+   r,   test_is_nullS  s.    r  c               	   C   s   t dddd tjg} |  }t dddd dg}||s@tt jddd gt  d} tj	t
d	d
 |  }W 5 Q R X tj	t
d	d
& t jddd gt  d} |  }W 5 Q R X d S )Nr   r    r   FTrY   rZ   ry   z"has no kernel matching input typesr5   r      bb)r   r   r   r  is_nanr   r9   r   r<   r=   r   r   )r   r   r   rN  r+   r+   r,   test_is_nanp  s       r  c               	   C   sj  t jddd dgt  d} t jdgt  d}tjt jdd | | W 5 Q R X t jd d d d gt  d} t jd t  d}| |}t d d d d g}|	|st
t dd	d g} | d
}t dd	d
g}|	|st
t jddd gt  d} | d
}t jdddgt  d}|	|s,t
t dd	d g} | d }t dd	d g}|	|sft
d S )Nr   r    r!   ry   r	   +Array arguments must all be the same lengthr5   r   Zbbcccr   r  s   ccc)r   r   r
   r<   r=   r   	fill_nullrm  r   r   r9   r   )r   
fill_valuer   r   r+   r+   r,   test_fill_null  s.    



r  c              	   C   s   t jddd dg| d}t jd| d}||}t jddddg| d}||sRt|d}||sjtt j|jst	
ttf |d W 5 Q R X |t jddd}||std S )Nr   r    r!   ry   r	   5r
   )r   r   r   r  r   r9   typesZis_unsigned_integerr/   r<   r=   r  r>   )r   r   r  r   r   r+   r+   r,   test_fill_null_array  s    

r  c                 C   s&  t jd| d}t t jd dddg| dg}||}t t jddddg| dg}||sbt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}||}||st|d}||st|t jddd}||s"td S )Nr	   ry   r    r   r!   r   r
   )r   r   r   r   r  r   r9   )r   r  r   r   r   r+   r+   r,   test_fill_null_chunked_array  s*    


r  c                  C   s   t dddd g} t ddddg}t| |t dddd gksFtt| |t dddd gkshtt| |t dddd gkstt| |t ddddgkstt| |t dddd gkstt	| t dddd gkstd S )NTF)
r   r   r0   and_r9   Z
and_kleeneor_Z	or_kleenexorinvertr%   r+   r+   r,   test_logical  s    """""r  c               	   C   s  t jddddgdd} tt  }tt tj| d d W 5 Q R X tt	 tj| d|d	 W 5 Q R X tt	 tj| d
|d W 5 Q R X tj| |d	t jddddgddkst
t jdgdd} tjt  d
d}tt j t| d W 5 Q R X tj| dddt jdgddks(t
tj| |d	t jdgddksLt
t tdddtdddg} t jddgdd}t| d|kst
t jddgdddggt t  d} t jddgdddggt t  d}t| |j|kst
d S )Nr   r    r   r!   r   ry   )Ztarget_typer   r  T)r~   r   r
   l    )Zallow_int_overflowFr~   rV   i  i  l    x\Nl    0E*ztimestamp[ms]r	   rY   rZ   34r  )r   r   r0   r}   r
   r<   r=   r>   castr  r9   r   r   datetime
large_listri  rM  r/   )r   r   Zallow_overflow_optionsr   r+   r+   r,   	test_cast  sD    
  & &r  
value_typec              	   C   s>  t t d| d}t  }t t d|d}t jjt jddddddg|d	|d	}|||jksjt	t jjt jdd d dddg|d	|d	}|||jkst	t 
 }t t d|d}t jjt jd d d d d d g|d	|d	}|||jkst	t t d| d}d
}tjt jj|d || W 5 Q R X d S )Nelementr    rI   r   r   r!   r	   r"   ry   z&Size of FixedSizeList is not the same.r5   )r   ri  rW   r   ZFixedSizeListArrayr}  r   r  r/   r9   rm  r<   r=   libArrowTypeError)r  Z	cast_typeZdtyper/   Zfslerr_msgr+   r+   r,   test_fsl_to_fsl_cast  s0       r  DecimalTypeTraits)r)   factorymax_precisionFloatToDecimalCase)	precisionr  	float_val
decimal128&   r  L   c                 C   sx   | dkst |dkst t| d|  }|d|  | kr`t|d}|d|  | kr`t|d}|d|  | kstt |S )zA
    Find the largest float f such as `f * 10**scale <= val`
    r   r           )r9   r   r   Z	nextafter)valr  r  r+   r+   r,   largest_scaled_float_not_above/  s    r  c                 C   s0   t | tstt| }|| }t|}|S )zS
    Return a float representation (possibly approximate) of `int_val**-scale`
    )r.   intr9   decimalDecimalscalebr   )Zint_valr  unscaledZscaledr  r+   r+   r,   scaled_float?  s
    
r  c                 c   sz   d}t d|dD ]d}t d|dD ]R}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  rc   r  )float_tyr  mantissa_digitsr  r  epsilon
abs_maxvalr+   r+   r,   $integral_float_to_decimal_cast_casesJ  s    
 r  c                 c   sz   d}t d|dD ]d}t d|dD ]R}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  rc   r  r  )r  r  r  r  r  r  Z
abs_minvalr  r+   r+   r,    real_float_to_decimal_cast_casesY  s    

 r  c                 c   s   t d}td|dD ]d}td|dD ]R}tdD ]D}|dd| }t||}|d|  d| k shtt|||V  q2q&qdS )	z?
    Return random-generated FloatToDecimalCase instances.
    *   r   r"   r   r!      r   N)r0  Randomr  	randranger  r9   r  )r  r  rr  r  r=  r  r  r+   r+   r,   "random_float_to_decimal_cast_casesh  s    

r   c           
      C   s   |j |_tj|_||}|td|j	 }t
j|| d}t|| }||krt|| d|j	  }|j |d k rdnd}	||	kstd|d|j  d|d	|d
|
d S )Nr   ry   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  r  r   r   r0   r  r   absr9   )
r  r  
decimal_tyZdecimal_ctxr  r   rq   r]  Zdiff_digitslimitr+   r+   r,   check_cast_float_to_decimalv  s    

"r)  r  )Zidsr'  c                 C   s   | j S r   r)   vr+   r+   r,   <lambda>  r	  r-  case_generatorZ	integralsZrealsr0  c              	   C   sJ   t  8}|| |jD ]$}t| |j||j|j||j qW 5 Q R X d S r   )r  localcontextr  r)  r  r  r  r  )r  r'  r.  ctxcaser+   r+   r,   test_cast_float_to_decimal  s    	
  r2  decimal_traitsc                 C   s   | j S 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
 b}	|}
|
|	_t| |
ttd|  }t|ttd| }t||D ]
}||
|}| ttd|
|   }||  kr|ksn ttdD ]}|d	d| }t|||}t||sXt|d	krvt
|d|  }nt
|d|   }t||}ttj|| d
| }t||}t|| dks$tq$qW 5 Q R X dS )zL
    Test float-to-decimal conversion against exactly generated values.
    +      5   )i   )ii  r    r   r	   r   ry   r   N)r0  r  r   rs  r   rt  mathfloorlog10r  r  r/  r!  rc   ceilr  r  r  log2r9   r  ldexpr.   r  r  r  r0   r  r   r   r&  )r  r3  r  Znp_float_tyZmantissa_bitsZfloat_exp_minZfloat_exp_maxr  r  r0  r  Z	min_scaleZ	max_scaler  r'  Z	float_expr=  Zmantissar  r   Zexpected_as_intr]  Zactual_as_intr+   r+   r,   !test_cast_float_to_decimal_random  sj    
      
 r>  c               	   C   sH  t dd dg} tj| ddd}t jtdddd td	d
dgt dd}||ksZttj| ddd|ksrtt jtdddd d gt dd}tj| dddd}||ksttjt j	dd tj| dddd W 5 Q R X tjt j	dd tj| ddd W 5 Q R X tj| dddd}|t jd d d gt ddksDtd S )Nz5/1/2020z
12/13/1900z%m/%d/%Yrq   )formatuniti  r	   r   il        ry   r@  z%d/%m/%YT)r?  r@  Zerror_is_nullz"Failed to parse string: '5/1/2020'r5   z%Y-%m-%dF)
r   r   r0   strptimer  	timestampr9   r<   r=   r   )r   gotr   r+   r+   r,   test_strptime  s.    rG  rw   -Timezone database is not installed on Windows)reasonc                  C   s<  ddd g} dddg}dddd	d
dddddddddddddddddg}t jdkr^|dddg |D ]}t| |}d D ]Z}tj|t||d!}|D ]:}t	
|}t	j||d"}	t||}
|	|
stqq|d#}tj|td$|d!}t	j|t	
 d"}	t||}
|	|
s$ttj|td$|d!}t	j|t	
|d d"}	t||d }
|	|
svttj|td$|d!}t	
d%}t	j||d"}	t|d%}
|	|
sttj|td&|d!}t	
d%}t	j||d"}	t|d'}
|	|
sttj|td$|d!}t	j
|d(d)}t	j||d"}	t||}
|	|
sbtqbd#}t| }tj|td$d!}t	j|t	
|d"}	t||}
t	|||	kst|	|
sttjtjd*d+ t	j|t	
|d d" W 5 Q R X tjtjd*d+ t	j|t	
|d d" W 5 Q R X d S ),Nz2018-03-10 09:00z2038-01-31 12:23ZCETrP   rx   z%az%Az%wz%dz%bz%Bz%mz%yrp   z%Hz%Iz%pz%Mz%zz%Zz%jz%Uz%Wz%%z%Gz%Vz%urw   z%cz%xz%X)rq   msusnsry   r  z%Y-%m-%dT%H:%M:%Srq   z%SrK  z%S.%fC)localez.Timezone not present, cannot convert to stringr5   )r   r   extendpdto_datetimetz_localizer   r   rE  r0   r   strftimer   r9   r<   r=   r   )times	timezonesformatstimezonetsr@  tsafmtr   r   r   r+   r+   r,   test_strftime  s    

          





"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 r|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|st"t #|!t|j
j#st"t |!t|st"t |!t|s:t"t $|!t|sVt"t %|!t|srt"t &|!t|st"t '|!t|st"t (|!|
st"t |!t|st"t |!t|st"t |!t|st"t |!t|s0t"t )|!t|d sPt"t |!t|d spt"t |!t|st"t *|!t|st"t +|!t|j
d st"|j
j,r"|j
j,t-j.j/krdgt0| }n|1dd }t 2|!t|s"t"t j3ddd}t j$||d!t|d sTt"t j4dddd}t j5||d!t|st"d S )Nr   )VersionrP   rL  )tzi  g&.>r#   iso_yeariso_weekZiso_day_of_weekz1.1.0c                 S   s   |   d S Nr   isocalendarxr+   r+   r,   r-  U  r	  z,_check_datetime_components.<locals>.<lambda>r   c                 S   s   |   d S )Nr   ra  rc  r+   r+   r,   r-  V  r	  c                 S   s   |   d S )Nr    ra  rc  r+   r+   r,   r-  W  r	  yearweekday)fieldsFc                 S   s   |   jdkS r`  )dstsecondsrc  r+   r+   r,   r-    r	  r   rQ   r  Trv   )6Zpyarrow.vendored.versionr\  rP  rQ  rR  
tz_convertZ	to_seriesr   r   rE  dtmicrosecond
nanosecondr  rW   r   __version__mapZastyperb  StructArrayr}  re  monthrg  	dayofweek	dayofyearquarterhourminuterh   rI   r0   r   r9   Zis_leap_yearZday_of_weekZday_of_yearr^  r_  iso_calendarmillisecondZ	subsecondZlocal_timestampr]  r  rW  utcr8   applyis_dstr   r   rf  )
timestampsrW  r\  rX  rY  Z
subsecondsZiso_calendar_fieldsr^  r_  Ziso_dayrx  re  rr  rg  rs  rt  ru  rv  rw  rh   rm  rn  r|  Zday_of_week_optionsZweek_optionsr+   r+   r,   _check_datetime_componentsD  s    

   $
 
 r~  c                  C   sp   ddddddddd	d
dddddg} ddddddg}t |  tjdkrXt sXtd n|D ]}t | | q\d S )N1970-01-01T00:00:59.1234567892000-02-29T23:23:23.9999999992033-05-18T03:33:20.0000000002020-01-01T01:05:05.0012019-12-31T02:10:10.0022019-12-30T03:15:15.0032009-12-31T04:20:20.0041322010-01-01T05:25:25.0053212010-01-03T06:30:30.0061632010-01-04T07:35:35.02006-01-01T08:40:40.02005-12-31T09:45:45.02008-12-28T00:00:00.02008-12-29T00:00:00.02012-01-01T01:02:03.0rP   
US/CentralAsia/Kolkata	Etc/GMT-4	Etc/GMT+4zAustralia/Broken_Hillrw   rH  )r~  r   r   r   r   r<   rk  )r}  rU  rW  r+   r+   r,    test_extract_datetime_components  s4      r  c                  C   s  t d} tdddddddd	d
ddddddg}tddg}tdddg}t j|| d}t j|| d}dD ]}t|}t j|| d}||}	tj||d}
|
	t |	st
t||}
|
	t |	st
t j|t d|d}tjt jdd tj||d W 5 Q R X qptd}tjtdd tj||d W 5 Q R X d}t|}tj|ddd }tj|dd!d }tjtd"| d#d tj||d W 5 Q R X 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 5 Q R X |j|d(d(d(gd)}	tj||d}
|
	t |	 |j|d*d*d*gd)}	tj||d}
|
	t |	 d S )+NrL  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z2015-03-29 02:30:00z2015-03-29 03:30:00z2018-10-28 01:20:00z2018-10-28 02:36:00z2018-10-28 03:46:00ry   )rP   r  r  r  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 'T)r  F)r   rE  rP  rQ  r   r0   r|   rR  Zassume_timezoner   r9   r<   r=   r   r  )Zts_typer}  r  r  Zambiguous_arrayZnonexistent_arrayrW  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   s.  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 krFtj||d }	| | j|| }
t	j
|	|
 tj||d }	| | j|| }
t	j
|	|
 tj||d }	| | j|| }
t	j
|	|
 |dkr4tj||d }	| j|}
t	j
|	|
 tj||d }	| j|}
t	j
|	|
 tj||d }	| j|}
t	j
|	|
 q4|jjd krtj||dd}tj||d}	| j|}
t	|
| k|
t|||  |
}
t	j
|	|
 |dkr*d}t| }	| j|}
t	j
|	|
 t| }	| j|}
t	j
|	|
 t| }	| j|}
t	j
|	|
 d S )NrL  rK  Lrq   r  Hr  rn  rm  ry  rh   rw  rv  rg  rJ  rh  )rn  rm  ry  rh   rw  rv  r  rg  T)Zcalendar_based_originr  )Zceil_is_strictly_greaterZ1D)r   r   r,  r0   r   Zceil_temporalr[  rl  r;  r   r  r  Zfloor_temporalr9  Zround_temporalr  r/   r]  whererP  Z	Timedelta)rX  rI   r@  Zunit_shorthandZgreater_unitr  valueZ	frequencyr   r   r   originr+   r+   r,   _check_temporal_rounding	  s    



    
r  r@  r  c                 C   s   d}dddddddd	d
ddddg}t dd |D }t|||  ddddddddg}|D ]$}|jdj|}t|||  qZd S )N)r   r    r   r!   r	   r"   r   r   r  r5  <      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 )rL  rC  )rP  	Timestamp)r(   rd  r+   r+   r,   r-   	  s     z'test_round_temporal.<locals>.<listcomp>r  zAmerica/New_Yorkr  r  r  zPacific/Marquesasr  rP   )rP  ZSeriesr  rl  rR  rk  )r@  rI   r}  rX  rU  rW  Zts_zonedr+   r+   r,   test_round_temporal{	  s4       r  c               	   C   s   t dddd d g} t|  dks*ttj| dd dksDttj| dd dks^ttj| dd dksxtt| d dksttjtd	d
 t| d W 5 Q R X d S )Nr   r    r   
only_validr   	only_nullr   r	   z*"something else" is not a valid count moder5   zsomething else)	r   r   r0   r   r   r9   r<   r=   r  r   r+   r+   r,   
test_count	  s    r  c                  C   s  t jddd ddgt  d} t| t d dks:tt| t jdt  d dks`tt| d dksxt| jddd dkst| d  dkstt j	ddgddggt  d} | d dkst| jddd dkst| jdddd	 dkstd S )
Nr   r   r   r!   ry   r    rV   ra   )ra   end)
r   r   r   r0   indexr   r   r9   r
   r   r   r+   r+   r,   
test_index	  s    &r  c                    s4    tt ksttttt ks8t fddt|D } fddt|t D } |  d kr|dkrtdd |D stntdd |D stnv|dkrtfdd|D sttfd	d|D stn8tfd
d|D sttfdd|D s0td S )Nc                    s   g | ]} |  qS r+   r+   r  r   rs   r+   r,   r-   	  s     z'check_partition_nth.<locals>.<listcomp>c                    s   g | ]} |  qS r+   r+   r  r  r+   r,   r-   	  s     r]   c                 s   s   | ]}|d kV  qd S r   r+   r(   r,  r+   r+   r,   r   	  s     z&check_partition_nth.<locals>.<genexpr>c                 s   s   | ]}|d kV  qd S r   r+   r  r+   r+   r,   r   	  s     c                 3   s   | ]}|d kp| kV  qd S r   r+   r  pr+   r,   r   	  s     c                 3   s   | ]}| kV  qd S r   r+   r  r  r+   r,   r   	  s     c                 3   s   | ]}| kV  qd S r   r+   r  r  r+   r,   r   	  s     c                 3   s   | ]}|d kp| kV  qd S r   r+   r  r  r+   r,   r   	  s     )r   r8   r9   sortedlistr  r   )r   rs   pivotr_   Zuntil_pivotZafter_pivotr+   )r   rs   r  r,   check_partition_nth	  s    r  c               	   C   st   t tdd} t|  d}tj| |d}t| ||d t| ||ksLttj	t
dd t|  W 5 Q R X d S )Nrj      r   )r  at_endz8'partition_nth_indices' cannot be called without optionsr5   )r  r  r0  shuffler0   partition_nth_indicesr  r9   r<   r=   r  )r   r  rs   r+   r+   r,   test_partition_nth	  s    
r  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   rB     )r]   r  )r  r_   )r  r  r0  r  r0   r  r  )r   r  r_   rs   r+   r+   r,   !test_partition_nth_null_placement	  s    
r  c                  C   s
  ddd} t ddd dg}dD ]d}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stt|ddg|kstd S )NFc                 S   s^   t j|d|fgd}|dt| }|r6| |ksZtn$t ||}t || }||ksZtd S )Nrn   rl   r   r0   sort_indicesslicer8   r9   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_kr   r    r   r   r    r!   )ro   rb   rn   r   re   )r   ro   rb   rm   r  rn   rb   rl   )F)r   r   r0   select_k_unstabletop_k_unstablebottom_k_unstabler   r9   )r  r   r   r  r   r+   r+   r,   test_select_k_array	  sB    

     r  c               	   C   s  ddd} t dddgdddgd}dD ]}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 5 Q R X tjt	dd tj|dd	gd
 W 5 Q R X tjt	dd tj|dg d
 W 5 Q R X tjt	dd tj||dgd
 W 5 Q R X tjt	dd tj||dgd
 W 5 Q R X d S )NFc                 S   sX   t j||d}|dt| }|r0| |ksTtn$t ||}t || }||ksTtd S )Nrl   r   r  )r  tblre   r  r  r  r   r]  r+   r+   r,   r  
  s    z.test_select_k_table.<locals>.validate_select_kr   r    r   r%   r  r   rb   r  rl   r   rb   rk   r   ro   r   z4'select_k_unstable' cannot be called without optionsr5   z,select_k_unstable requires a nonnegative `k`rV   z2select_k_unstable requires a non-empty `sort_keys`not a valid sort orderr   nonscending.Invalid sort key column: No match for.*unknownunknownrb   )F)
r   r  r0   r  rW   r  r  r<   r=   r  )r  r  r   r   r+   r+   r,   test_select_k_table
  s\    

        r  c               	   C   s   t ddd dg} t| }| ddddgks4ttj| dd}| ddddgksZttj| dd}| ddddgksttj| ddd	}| ddddgksttj| ddd
}| ddddgksttjtdd tj| dd W 5 Q R X d S )Nr   r    r   r   rb   )r  ro   r]   )r  r_   r^   r  r5   r  )	r   r   r0   Zarray_sort_indicesr   r9   r<   r=   r  r   r   r+   r+   r,   test_array_sort_indicesA
  s"    
r  c                  C   sB  t ddd dg} t| }| ddddgks4ttj| dgd}| ddddgks\ttj| dgd}| ddddgksttj| dgdd	}| ddddgksttj| dgdd
}| ddddgksttj| tjdgdd}| ddddgks
ttj| tjdgdd	d}| ddddgks>td S )Nr   r    r   r   r  rl   rm   r]   re   r_   r^   r  )r   r   r0   r  r   r9   r   r  r+   r+   r,   test_sort_indices_arrayT
  s6    


  r  c               	   C   sz  t ddd dgddddgd} tj| dgd}| ddddgksHttj| tdd	fgd
d}| ddddgks|ttj| ddgd}| ddddgksttj| ddgd
d}| ddddgksttj| ddgd
d}| ddddgksttjt	dd t|  W 5 Q R X tjt	dd tj| dgd W 5 Q R X tjt	dd tj| dgd W 5 Q R X d S )Nr   r   r%   r  rl   r   r    r   rb   r]   r  r  rk   r^   z"Must specify one or more sort keysr5   r  r  r  r  )
r   r  r0   r  r   r9   rW   r<   r=   r  )r  r   r+   r+   r,   test_sort_indices_tableo
  s@        r  c                  C   s   t ddd dddg} tj| t ddd gd}| ddddddgksLttj| t ddd gdd}| ddddddgksttj| t ddgd}| ddddddgksttj| t ddgdd}| ddddddgkstd S )Nr   r    r   	value_setTFr  rT   )r   r   r0   Zis_inr   r9   r  r+   r+   r,   
test_is_in
  s    r  c                  C   s*  t ddd dddg} tj| t ddd gd}| dd ddd dgksLttj| t ddd gdd}| dd d dd dgksttj| t ddgd}| dd d dd dgksttj| t ddgdd}| dd d dd dgksttj| t ddgdd}| dd d dd dgks&td S )	Nr   r    r   r  r   Tr  rS   )r   r   r0   Zindex_inr   r9   r  r+   r+   r,   test_index_in
  s    r  c               	   C   sp  t ddddg} t| }| dgks.ttj| dd}| dgksNttj| dd}| dgksnttj| d	d}| dgksttj| d
d}| dgksttj| dd}| dgkstt ddg} tj| dddgd}| dddgksttj| dddgdd}| dddgks6ttj| dddgdd}| dddgksdttj| dddgd
d}| dddgksttj| dddgd	d}| dddgksttj| dddgdd}| dddgksttj| dddgdd}| dddgksttjtdd tj| dd W 5 Q R X tjtdd tj| dd W 5 Q R X d S )Nr   r    r   r!         @lower)interpolationZhigherZnearestZmidpointZlinearg      ?r   g      ?q      ?      ?g      ?)r  r  z Quantile must be between 0 and 1r5   皙?z"not a valid quantile interpolationzzz)	r   r   r0   r-  r   r9   r<   r=   r  r  r+   r+   r,   test_quantile
  s@    
r  c                  C   s   t ddddg} t| }| dgks.tt t ddgt ddgg} t| }| dgksltt ddddg} tj| dddgd}| dddgkstt t ddgt ddgg} t| dddg}| dddgkstd S )	Nr   r    r   r!   r  r   r   r  )r   r   r0   Ztdigestr   r9   r   r  r+   r+   r,   test_tdigest
  s    
"
"r  c                  C   sD   t d gt  d} | t  }|t dgt  ks@td S )NFr   )r   r   bool_r  r  r
   r9   r  r+   r+   r,   test_fill_null_segfault
  s    r  c                  C   s  t dddg} t dddg}t ddd g}t| |}|t dddgksTtt| |}|t dddgksxtt| ||}|t dddgkstt| ||}|t dddgksttj| |dd}|t dddgksttj| |dd}|t dddgksttj| |t d}|t dddgksDttj| |t d}|t dddgksrttj| |dd}|t ddd gksttj| |dd}|t ddd gkstd S )Nr   r    r   TrS   r  F)r   r   r0   max_element_wiser9   r)  r   )r  r  Zarr3r   r+   r+   r,   test_min_max_element_wise
  s>        r  ra   )r  g      %@g      %rT   )TFc                 C   s  t | }d |tj|t dtj|t dg}|D ]}tdddgtdd ddgtdd gddggg}tdddg|rtdd dd	gntdd d d g|rtdd dd	ggntdd d d ggg}t|D ]D\}}tj	|||d
}	t
|| |d k	r|nd}
|	|
stqq4d | tj| t dtj| t dg}|D ]}tdddgtdtjddddgtdtjd dd dgg}tdddg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 ]V\}}tj	|||d
}	t
|| |d k	r0|nd}
tj|	jdd|
jdd q qLdtddfD ]2}ttj tj	dddg|d W 5 Q R X qld S )Nry   r   r    r   r   r     r"   2   r`   g      ?g      @g     @@r   r!   r	   g      @g     @FZzero_copy_onlyr   arrowr  r  )r  r   r   r
   r   r   r   r8  r0   Zcumulative_sumr   r   r9   rs  rt  r   r  r  assert_array_almost_equalto_numpyr<   r=   r   ra   rT   Z	start_intZstartsZstrtarraysZexpected_arraysr=  r   r   r   r+   r+   r,   test_cumulative_sum  sd    
 

r  c                 C   s  t | }d |tj|t dtj|t dg}|D ]}tdddgtdd ddgtdd gddggg}tdddg|rtdd ddgntdd d d g|rtdd ddggntdd d d ggg}t|D ]D\}}tj	|||d	}	t
|| |d k	r|nd}
|	|
stqq4d | tj| t dtj| t dg}|D ]}td
ddgtdtjddddgtdtjd dd dgg}td
ddg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 ]V\}}tj	|||d	}	t
|| |d k	r0|nd}
tj|	jdd|
jdd q qLdtddfD ]2}ttj tj	dddg|d W 5 Q R X qld S )Nry   r   r    r   r  r	   r"   rj   r`   r  r  r  r   r!   g      @g     @*@Fr  r   r  r  r  )r  r   r   r
   r   r   r   r8  r0   Zcumulative_prodr  r   r9   rs  rt  r   r  r  r  r  r<   r=   r   r  r+   r+   r,   test_cumulative_prodT  sd    
 

r  )r   r  g      @c                 C   s  t | }d |tj|t dtj|t dg}|D ]}tddddddgtddd ddd gtddd gddd ggg}tddddddg|rtddd ddd gntddd d d d g|rtddd ddd ggntddd d d d ggg}t|D ]L\}}tj	|||d}	tj
|| |d k	r.|nt d	d
d}
|	|
stqq4d | tj| t dtj| t dg}|D ]
}tddddddgtdddtjddgtddd tjdd gg}tddddddgtddddddg|rtddd ddd gntddd d d d gg}t|D ]Z\}}tj	|||d}	tj
|| |d k	rX|nd	d
d}
tj|	jd
d|
jd
d q(qzdtddfD ]2}ttj tj	dddg|d W 5 Q R X qd S )Nry   r    r   r   r	   r!   r"   r`   g    eFrS   r  g?r  gffffff@g@g@r  r   r  r  r  )r  r   r   r
   r   r   r   r8  r0   cumulative_maxr  r   r9   rs  rt  r   r  r  r  r  r<   r=   r   r  r+   r+   r,   test_cumulative_max  sl    
 
 

r  c                 C   s  t | }d |tj|t dtj|t dg}|D ]}tddddddgtddd ddd gtddd gddd ggg}tddddddg|rtddd ddd gntddd d d d g|rtddd ddd ggntddd d d d ggg}t|D ]L\}}tj	|||d}	tj
|| |d k	r.|nt d	d
d}
|	|
stqq4d | tj| t dtj| t dg}|D ]
}tddddddgtdddtjddgtddd tjdd gg}tddddddgtddddddg|rtddd ddd gntddd d d d gg}t|D ]Z\}}tj	|||d}	tj
|| |d k	rX|nd	d
d}
tj|	jd
d|
jd
d q(qzdtddfD ]2}ttj tjdddg|d W 5 Q R X qd S )Nry   r	   r"   r!   r    r   r   r`   g    eAFrS   g      @g333333@g@g @g333333@333333?r  r   r  r  r  )r  r   r   r
   r   r   r   r8  r0   Zcumulative_minr)  r   r9   rs  rt  r   r  r  r  r  r<   r=   r   r  r  r+   r+   r,   test_cumulative_min  sl    
 
 

r  c                	   C   s   t dd dddkstt jddddgd dddksDtt ddd	gd
 tjjddd	gd
 gd dksttj	t
dd t ddd	dgd
  W 5 Q R X tj	t
dd t jddgd W 5 Q R X d S )Nr   r   )0rY   r=  rq   )field_names)r=  rq   r    r   za b cz0 1r  r  r5   r!   z0 arguments but 2 field namesonetwo)r0   make_structr   r9   splitr   rq  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dd d dd gt  d}t jdd d d	d gt  d}t jdgd d dd	gd gt t  d}t|d
d|kstt|t j	d
t  dd|kstt|t j	d
t  dd|kstt|t j	d
t  dd|kstd S )N)r  r   )r   r    )noner   )r  r	   )r  r   ry   r   r	   r   r  r[   lastr   )
r   Zmap_rM  r   r   ri  r0   Z
map_lookupr9   r   )r   r   Zresult_firstZresult_lastZ
result_allr+   r+   r,   test_map_lookup  sL      
 
 
 r  c               	   C   s  t jdddgt  d} t dd dg}t j| |gddg}t j| |gdd	g}t|d
|kshtt|d|ks|tt|d	dg|kstt|ddg|kstt|d|kstt|td|kstt|d| kstt|dg| kstt|d| kstt|td| ks8ttj|ddgd|ksTtt|d|ksjtt|dg| kstt|g |kstt	j
t jdd t|d W 5 Q R X t	j
t jdd t|d W 5 Q R X t	j
t jdd t|d W 5 Q R X d S )Nr!   r	   r"   ry   r   r   r   r   r   z.c.bs   .c.br   )r   r   )r   r   z.a)r   rr   )r   r   r   zNo match for FieldRefr5   r   z.c.fooz.a.foo)r   r   r   rq  r}  r0   Zstruct_fieldr9   rW   r<   r=   r   )r   r   r   r   r+   r+   r,   test_struct_fields_options!  s0    r  c                   C   sF   t t ddd gddd gdddgdddgtddd gksBtd S )	NTFr   r    r      rA  rB  )r0   Z	case_whenr  r   r   r9   r+   r+   r+   r,   test_case_whenF  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| }||st	d}t j||}t dd	ddddg| }||st	d S )Nr   r   g?r    r%   g?r!   gffffff@r"   gp=
ף?r   gffffff?g333333?r   r   )
r   re  rt  r
   ri  r   computeZlist_elementr   r9   )Zelement_type	list_typel1l2listsr  r   r   r+   r+   r,   test_list_elementM  s    
  r  c                     s\   t j    fddtddD } t| td}t|tjt	| t
 dksXtd S )Nc                    s   g | ]} j |d qS ))re  )rO  )r(   yseedr+   r,   r-   a  s     z'test_count_distinct.<locals>.<listcomp>i  i,  rL  ry   )r  nowr  r   r   rE  r0   count_distinctr   r8   r   r9   )Zsamplesr   r+   r  r,   test_count_distinct_  s    
r  c                  C   s   t dddd d g} t|  dks*ttj| dd dksDttj| dd dks^ttj| dd dksxtt| d dkstd S )	Nr   r    r   r  r  r  r   r!   )r   r   r0   r  r   r9   r   r+   r+   r,   test_count_distinct_optionsf  s    r  c               	   C   s   t dg} tj| dd| ks"ttj| ddt dgks@tt| d| ksTtt| dt dgkspttjtdd	 tj| d
d W 5 Q R X d S )Nu   01²3NFC)formru   Z0123ZNFDZNFKDz/"NFZ" is not a valid Unicode normalization formr5   ZNFZ)r   r   r0   Zutf8_normalizer9   r<   r=   r  r   r+   r+   r,   test_utf8_normalizeo  s    r  c               	   C   s   dD ](} t jd| dtjg t dkstqdd tdD }tt|t|ksXtdd tdd	D }tt|d
kstt	 ddg}|
dd tdD  dd |D }tt|t|ksttjtdd t jd	g d W 5 Q R X d S )N)systemr  is   abcdefr   initializerry   c                 S   s   g | ]}t td  qS )rj   tupler0   r0  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 )rj   r   r  r  r  r+   r+   r,   r-     s   rj   r   )r!   r	   r"   r   c                 s   s   | ]}t d V  qdS )r   N)osurandomr  r+   r+   r,   r     s     ztest_random.<locals>.<genexpr>c                 S   s"   g | ]}t tjd |d qS )rj   r  r  r  r+   r+   r,   r-     s   zJinitializer should be 'system', an integer, or a hashable object; got \[\]r5   )r0   r0  r   r   rt  r9   r  r8   r7  r;   rO  r<   r=   r>   )r  r  Zinitializersr+   r+   r,   test_random{  s(    
r!  ztiebreaker,expected_valuesr  rc   r   r[   Zdensec              	   C   sZ   t dddd dd dg}tjdd| d}tj||d}t j|t  d}||sVtd S )	Nr  r  333333@rb   r  rd   r  ry   )r   r   r0   r   rankr   r   r9   )rf   Zexpected_valuesr   Zrank_optionsr   r   r+   r+   r,   test_rank_options_tiebreaker  s    r$  c               	   C   s>  t dddd dd dg} t jdddddd	d
gt  d}t| }||sPttj| t d}||spttj| tjdgdd}||sttj| dd}t jddddd	d
dgt  d}||sttj| dd}t jddddd
d	dgt  d}||sttj	t
dd tjdddd W 5 Q R X d S )Nr  r  r"  r   r   r!   r"   r	   r   r    ry   r  rk   rl   r]   r^   ro   z'"NonExisting" is not a valid tiebreakerr5   r  ZNonExistingrd   )r   r   r   r0   r#  r   r9   r   r<   r=   r  )r   r   r   Zexpected_at_startZexpected_descendingr+   r+   r,   test_rank_options  s.     


  r%  c                  C   sP  t d} t d}t d}t d}t d }t ddi}t td}t td}| |||||||| |k| |k| |@ | |B | | | jt dd| jt dd| ddd	gt 	d
dkt 	d
dkt 	d
dkt 	d

 t 	ddkt 	dddkg}|D ]8}	t|	t js(ttt|	}
|	|
stqd S )Nr   r  Tr   r   r    Fr  r   Zi64r	   r   )r   r   r  r   r   )r0   r   r   r   r   r$  r  r   isinrW   r  r.   
Expressionr9   r   r   r   r   )r   r   r   rh  rv  rw  rx  ry  Z	all_exprsexprZrestoredr+   r+   r,   test_expression_serialization  s0    




,    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 q|ddg |ddg |ddg |ddg tt	 |d W 5 Q R X ttj
 |t k W 5 Q R X d S )Nr   r   TFr   rW   r   r   )nestedrW   r*  r   r    r   r   )r0   r   rW   r   r  r  r&  r<   r=   r>   r   r;   )
zeror  truefalser   rW   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 5 Q R X tjtdd | pL| W 5 Q R X tjtdd t|  W 5 Q R X tjtdd |   W 5 Q R X 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 ttt | dks6ttt j| dddksPttt | ddkshttt | tddkstd}t	j
t|d	 t | t W 5 Q R X d S )
NrW   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 argumentsr5   )r0   rW   r,  rv  r9   r  r   r   r   r<   r=   r>   r;   )rW   r   r+   r+   r,   test_expression_call_function  s    
r0  c               	   C   s@   t dddgi} tt jj t| t   W 5 Q R X d S )Nr   r   r    )	r   r  r<   r=   r  r   r0   r  r   )r  r+   r+   r,   test_cast_table_raises#  s    r1  zstart,stop,expectedr  r   r    r  fixedc              	      s  |dkrLt dddgddd gdd d gd gt t  dt | d}n6t dddgddgdgd gt t  || }|| | df}|d kr|dkrd	}tjt j|d
 tj	|  W 5 Q R X nDtj	| }	|	t t  |	j
j }
|
 fdd|D kstd S )Nr3  r   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(   rv  r  r+   r,   r-   G  s     z0test_list_slice_output_fixed.<locals>.<listcomp>)r   r   ri  r
   r  r<   r=   r   r0   
list_slicer/   Z	list_sizer   r9   )ra   r  r  r   r  r  r   r@   r   r   pylistr+   r4  r,   test_list_slice_output_fixed*  s*     

r7  z
start,stop))r   N)r   r   )r   r    r2  )r    r!   c           
         s   |dkrPdddgddd gdd d gd g}t |t t  dt | d}n:dddgddgdgd g}t |t t  || }|dkrt j}tj| dd	}|j|| kst|t t  	 } fd
d|D }	||	kstd S )Nr3  r   r    r   r!   r	   r"   FZreturn_fixed_size_listc                    s&   g | ]}|d k	r|  nd qS r   r+   )r(   rh  r   r+   r,   r-   j  s     z3test_list_slice_output_variable.<locals>.<listcomp>)
r   r   ri  r
   r  r0   r5  r/   r9   r   )
ra   r  r  r  r  r   r   r   r6  r   r+   r   r,   test_list_slice_output_variableJ  s.    r9  return_fixed_size)TFNr/   c                   C   s   t t dt  S Ncolr   ri  rW   r
   r+   r+   r+   r,   r-  p  r	  c                   C   s   t t dt  dS )Nr<  r   r=  r+   r+   r+   r,   r-  q  r	  c                   C   s   t t dt  S r;  )r   r  rW   r
   r+   r+   r+   r,   r-  r  r	  c                 C   s`   t dgg| }tj|dd| d}|jdj|jdjksDt| d kr\|j|jks\td S )Nr   r   r8  )r   r   r0   r5  r/   rW   r)   r9   )r:  r/   r   outr+   r+   r,   $test_list_slice_field_names_retainedn  s
     r?  c               	   C   s
  t dggt t  d} d}tjt j|d t| dd W 5 Q R X tjt j|d t| dd W 5 Q R X tjt j|d t| dd W 5 Q R X d}tjt j|d d tj| dddd	 W 5 Q R X tjt j|d
 d tj| dddd	 W 5 Q R X d S )Nr   z@`start`(.*) should be greater than 0 and smaller than `stop`(.*)r5   rV   r    r   z`step` must be >= 1, got: r  r4  z-1)	r   r   ri  r
   r<   r=   r   r0   r5  )r   r   r+   r+   r,   test_list_slice_bad_parameters}  s    r@  c                 C   sj   t dddddddddddddddddddg}tj|| d}t|}|j|jksXt||sftd S )Nr   r    r   r  )r   r   r0   Zrun_end_encodeZrun_end_decoder/   r9   r   )Zrun_end_encode_optsr   encodeddecodedr+   r+   r,   check_run_end_encode_decode  s
    0
rC  c                   C   s<   t   t tt  t td t tt  d S )Nr   )rC  r0   r   r   r   r   r+   r+   r+   r,   test_run_end_encode  s    rD  c               	   C   s  t dddd ddg} t d ddd d dg}t jj| dd}||sJtt dddd ddg} t d d dd dd g}t jj| dd}||stt jdddd ddgt  d} t jddd d dd gt  d}t jj| dd}||stt jdddd ddgt  d} t jd	d	d d d	d gt  d}t jj| dd}||sJtt jdddd ddgt  d} tj	t j
d
d t jj| dd W 5 Q R X d S )Nr   r    r   r!   r	   r\   ry   rV      overflowr5   )r   r   r
  Zpairwise_diffr   r9   r
   r   r<   r=   r   Zpairwise_diff_checkedr  r+   r+   r,   test_pairwise_diff  s*    rG  )r   )N)N)collectionsr   r  r  	functoolsr   r   rF   r  r8  r  r   r<   r0  r   r'  numpyr   ZpandasrP  ImportErrorZpyarrowr   Zpyarrow.computer
  r0   Zpyarrow.libr   Zpyarrow.testsr   Zaranger   ri  r
   r  r   re  Zall_array_typesr  __dict__r  r7   rE   r   r   r   r   rs  rt  Znumerical_arrow_typesrA   rD   rO   r   r   r   r   r   r   r   r   r   r   r   r   markZparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r"  r#  r%  r+  r1  r>  Zunknown_issue_is_alphaZutf8proc_issue_is_lowerZnumeric_info_missingZdigit_info_missingrP  rT  rY  r^  ra  rb  rf  rj  rn  rr  ru  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  Zdecimal_type_traitsr  r  r  r  r   r)  r,  r2  r>  rG  Zskipifr   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/  r0  r1  r   r7  r9  r?  r@  rC  rD  rG  r+   r+   r+   r,   <module>   s  
**    X



"	e"
                                                                                                                                                                                                                                                                                                                                       
    	&
	$#'

	 
9JSZh)3$+"4477%	
!
"




