o
    h1                    @   s6  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
m	Z	mZmZmZ d dlZd dlmZ d dlZz!d dlZd dlmZ zejZW n eyY   d dlmZ Y nw W n eyf   dZY nw d dlmZm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&  mZ' d dl!m&  m(Z) d dl*m+Z+ d dl,Z-zd dl,m.Z/ W n	 ey   Y nw zd dl0Z1d dl2mZ3 d	d
l4m5Z5m6Z6 W n	 ey   Y nw ej7j0Z8dddZ9					dddZ:dddZ;		d	ddZ<d
ddZ=G dd dZ>G dd dZ?ej7@dg ddd ZAej7@dg dd d! ZBG d"d# d#ZCG d$d% d%ZDG d&d' d'ZEG d(d) d)ZFG d*d+ d+ZGG d,d- d-ZHd.d/ ZId0d1 ZJG d2d3 d3ZKd4d5 ZLd6d7 ZMej7@d8d9gd:gfd;d< ZNd=d> ZOd?d@ ZPdAdB ZQeRe'Se'jTdCdD ZUdEdF ZVdGdH ZWdIdJ ZXdKdL ZYdMdN ZZdOdP Z[dQdR Z\dSdT Z]dUdV Z^dWdX Z_dYdZ Z`d[d\ Zad]d^ Zbd_d` Zcdadb Zddcdd Zededf Zfdgdh Zgdidj Zhej7@dke-i dlfe-j dmfe-k dnfe-l dofe-m dpfe-n dqfe-o drfe-p dsfe-q dtfe-r dufe-s dvfe-t dwfe-u dxfe-v dyfe-w dyfe-x dzfe-jxd{d|dzfe-y d}fe-ze-ze-l d~fe-{dddfe-|ddfe-|dddfe-}ddfe-~ddfgdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdddZdd Zdd Zdd Zdd Zdd Zdd ZG dd de-jZd
ddZdd Zdd Zdd ZG dd de-jZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zej7@ddddggddф Zddӄ Zej7j0ddՄ Zddׄ Zddل Zddۄ Zdd݄ Zdd߄ Zej7j.ej7ddd Zdd Zej7@dg dej7@dddgej7@de	dd	d	e	dd	d	gdd Zdd Zej7jdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d Zej7jdd Zej7jdd ZdS (      N)OrderedDict)datedatetimetime	timedeltatimezone)VisibleDeprecationWarning)get_logical_type_pandas_api)invoke_scriptrandom_asciirands)Version)parquet   )dataframe_with_arraysdataframe_with_listsd   c                 C   s  t i dtj| tjddtj| tjddtj| tjddtj| tjddtj| tjddtj| tjddtj| tj	dd	tj| tj
dd
tj| tjddtj| tjddtj| dkdtjd| dddtjd| dddtjd| dddtjd| dddtjd| dddtjd| ddtjd| ddtjd| dddd t| D d gdd t| d D  d g dg|  d S )!Nuint8dtypeuint16uint32uint64int8int16int32int64float32float64boolr   zdatetime[s]2016-01-01T00:00:00.001datetime64[s]zdatetime[ms]datetime64[ms]zdatetime[us]datetime64[us]zdatetime[ns]datetime64[ns]ztimedelta64[s]ztimedelta64[ms]timedelta64[us]timedelta64[ns]c                 S      g | ]}t |qS  str.0xr)   r)   M/var/www/vscode/kcb/lib/python3.10/site-packages/pyarrow/tests/test_pandas.py
<listcomp>\       z%_alltypes_example.<locals>.<listcomp>c                 S   r(   r)   r*   r,   r)   r)   r/   r0   ]   r1       )r&   r'   r+   str_with_nulls	empty_str)pd	DataFramenparanger   r   r   r   r   r   r   r   r   randomrandnrangesizer)   r)   r/   _alltypes_exampleC   sb   	




 
r?   FTc                 C   s   |rt jnt j}|j| |||rdndd}	|	j|d}
|r%|	j|s%J |d u rD| }|jD ]}|| jdkrC|| 	t
jd i||< q.t  tddt tj|
|||rYdnd	d
 W d    d S 1 shw   Y  d S )Nr2   r   )schemapreserve_indexnthreadsuse_threadsobjectignoreelementwise comparison failedequivF)check_dtypecheck_index_type)paRecordBatchTablefrom_pandas	to_pandasr@   equalscolumnsr   replacer8   nanwarningscatch_warningsfilterwarningsDeprecationWarningtmassert_frame_equal)dfexpectedrD   expected_schemarI   r@   rA   as_batchklasstableresultcolr)   r)   r/   _check_pandas_roundtripb   s.   



"rb   c                 C   s^   t j| d|d}|d ur|d u r|}|d ur|j|ksJ tj| | jd}t| | d S )NTrN   typename)	rK   arrayrd   r6   SeriesrO   rf   rX   assert_series_equal)stype_expected_pa_typearrr`   r)   r)   r/   _check_series_roundtrip   s   rn   c                 C   s   t j| d||d}| }t| }|d u r |j| ksJ n|j||B  ks+J |d u rS|d u r9t| }nt|  }d || < |j	dkrS|
tjd i}tjt||dd d S )NT)rN   maskrd   rE   Fcheck_names)rK   rg   rO   r6   isnull
null_countsumrh   copyr   rR   r8   rS   rX   ri   )valuesr[   ro   rd   rm   r`   values_nullsr)   r)   r/   _check_array_roundtrip   s   

rx   c                 C   s(   t j| d|d}| }t||  d S )NTrc   rK   rg   rO   nptassert_array_equal)np_arrayrd   rm   r`   r)   r)   r/   "_check_array_from_pandas_roundtrip   s   r}   c                   @   sT  e Zd Z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 Zdd Zdd Zdd Zdd Zdd Zd d! Zejd"d#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Z d7d8 Z!d9d: Z"d;d< Z#d=d> Z$d?d@ Z%dAdB Z&dCdD Z'dEdF Z(dGdH Z)dIdJ Z*dKdL Z+dMdN Z,dOdP Z-dQS )RTestConvertMetadataz9
    Conversion tests for Pandas metadata & indices.
    c                 C   s6   t dg di}tj|}|djdksJ d S )Nr   r   r2      0)r6   r7   rK   rM   rN   fieldrf   selfrZ   r_   r)   r)   r/   test_non_string_columns   s   z+TestConvertMetadata.test_non_string_columnsc                 C   s   t g dg dd}|d}tt tj|}|	dj
dks'J W d    n1 s1w   Y  | }t|jj
|j_
tt t||dd W d    d S 1 sZw   Y  d S )N      ?       @      @)      @      @      @)r   r   r   1Tr[   rA   )r6   r7   	set_indexpytestwarnsUserWarningrK   rM   rN   r   rf   ru   r+   indexrb   )r   rZ   r_   r[   r)   r)   r/   "test_non_string_columns_with_index   s   
"z6TestConvertMetadata.test_non_string_columns_with_indexc                 C   s   t jg dg dg ddddgd}tjj|ddgd}tj|ddg }||s.J tjj|ddgd}tj|ddg }||sIJ d S )Nr   )r   r   r   )r2         r   r   r2   r   r   rQ   )r6   r7   rK   rM   rN   rP   rL   )r   rZ   r_   r[   record_batch_tablerecord_batch_expectedr)   r)   r/   test_from_pandas_with_columns   s   z1TestConvertMetadata.test_from_pandas_with_columnsc                 C   s,   t dg di}dg|j_t|dd d S )Ndatar   aTrA   )r6   r7   rQ   namesrb   r   rZ   r)   r)   r/   %test_column_index_names_are_preserved   s   
z9TestConvertMetadata.test_column_index_names_are_preservedc                 C   s6   t jtjddt jdddddd}t|dd	 d S )
Nr   r   z
2021-01-0150DCET)periodsfreqtzr   Tr   )r6   r7   r8   r:   r;   
date_rangerb   r   r)   r)   r/   test_column_index_names_with_tz   s
   z3TestConvertMetadata.test_column_index_names_with_tzc              	   C   s^   t jtdtdggt jtdgtdtdggtdgd}t|dd	 d S )
Nr      r   r2   r   r   )rQ   r   Tr   )r6   r7   decimalDecimal
MultiIndexfrom_productrb   r   r)   r)   r/   $test_column_index_names_with_decimal   s   
z8TestConvertMetadata.test_column_index_names_with_decimalc                 C   s  d}t jdg dit jddd|dd}t jdg d	it dd
d}tj|}tj|}t|jdks8J | }t	
|| t|jt jsKJ t|jddksVJ |jj|ks^J | }t	
|| t|jt jsqJ t|jddks|J |jjd u sJ d S )Nfoor   r   r2   r   r   r      r2   steprf   r   r   r   r      r   r   r   )r6   r7   
RangeIndexrK   rM   rN   lenr@   rO   rX   rY   
isinstancer   r
   get_rangeindex_attributerf   )r   
index_namerZ   df2r_   table_no_index_namer`   result2r)   r)   r/   test_range_index_shortcut   s(   
z-TestConvertMetadata.test_range_index_shortcutc                 C   sh   t jdg dit jdddddd}tjj|d	d
}|jdks!J d|jv s(J | }t	
|| d S )Nr   r   r   r   r2   r   r   r   Tr   )r6   r7   r   rK   rM   rN   num_columnscolumn_namesrO   rX   rY   )r   rZ   r_   restoredr)   r)   r/   $test_range_index_force_serialization  s   z8TestConvertMetadata.test_range_index_force_serializationc                 C   sp   t jtjddddgd}t  tjdd tdd	t	 t
|d
d W d    d S 1 s1w   Y  d S )Nr   r2   r   br   erroractionrF   make_block is deprecatedTr   )r6   r7   r8   r:   r;   rT   rU   simplefilterrV   rW   rb   r   r)   r)   r/   test_rangeindex_doesnt_warn  s   
"z/TestConvertMetadata.test_rangeindex_doesnt_warnc                 C   :   t jddgddgg}t jg d|d}t|dd d S )	NonetwoXYr   r   r2   r   )r   cr   Tr   r6   r   from_arraysr7   rb   r   rQ   rZ   r)   r)   r/   test_multiindex_columns$  s
   z+TestConvertMetadata.test_multiindex_columnsc                 C   sH   t jjddgt ddggddgd}t jg d|d	}t|d
d d S )Nr   r   z
2017-08-01z
2017-08-02level_1level_2r   r   r   Tr   )r6   r   r   DatetimeIndexr7   rb   r   r)   r)   r/   #test_multiindex_columns_with_dtypes+  s   z7TestConvertMetadata.test_multiindex_columns_with_dtypesc                 C   s   t jdgt jdgtdd}t|dd t jdgt jdgtdd}t|dd t jdgt jtdddgddd}t|dd d S )	Nr   r   r   Tr   皙?  rE   )r6   r7   IndexrE   rb   r   r   r)   r)   r/   (test_multiindex_with_column_dtype_object6  s   
z<TestConvertMetadata.test_multiindex_with_column_dtype_objectc                 C   r   )	N   あ   いr   r   r   r   Tr   r   r   r)   r)   r/   test_multiindex_columns_unicodeH  s   z3TestConvertMetadata.test_multiindex_columns_unicodec                 C   s~   t jddgddgg}t jg d|d}t  tjdd td	d
t t	|dd W d    d S 1 s8w   Y  d S )Nr   r   r   r   r   r   r   r   rF   r   Tr   )
r6   r   r   r7   rT   rU   r   rV   rW   rb   r   r)   r)   r/   test_multiindex_doesnt_warnM  s   
"z/TestConvertMetadata.test_multiindex_doesnt_warnc                 C   s   t g d}t|dd d S )Nr   Tr   r6   r7   rb   r   r)   r)   r/   test_integer_index_column\  s   z-TestConvertMetadata.test_integer_index_columnc                 C   s(   t jg ddtjgd}t|dd d S )Nr         ?r   Tr   )r6   r7   r8   rS   rb   r   r)   r)   r/   $test_float_column_index_with_missing`  s   z8TestConvertMetadata.test_float_column_index_with_missingz?ignore:The DataFrame has column names of mixed type:UserWarningc                 C   s&   t jg ddd gd}t|dd d S )Nr   Ar   Tr   r   r   r)   r)   r/   %test_string_column_index_with_missingd  s   z9TestConvertMetadata.test_string_column_index_with_missingc                 C   s  t jg dt jjg dg dgd dgdg dd}t r'tjj|dd	}nt	
t tjj|dd	}W d    n1 s?w   Y  |jj}|d
 \}}}}}|d dksYJ |d |d kscJ t ryt|d spJ |d dksxJ n|d d u sJ |d dksJ |d dksJ |d |d ksJ |d \}	}
|	dksJ |d |	ksJ |d d u sJ |
dksJ |d |
ksJ |d |
ksJ d S )N))r   r   @)r2   r   g@)r   r   g?)r   r   r   )r   r2   r   r   r   )r   N__index_level_0__)r   rQ   Tr   rQ   rf   r   
field_namerS   Noner   index_columns)r6   r7   r   r   r
   uses_string_dtyperK   rM   rN   r   r   r   r@   pandas_metadatar8   isnan)r   rZ   tjscol1col2col3idx0r   
idx0_descr	foo_descrr)   r)   r/   test_index_metadata_field_namek  s>   z2TestConvertMetadata.test_index_metadata_field_namec                 C   s   t jg dt jtdddd}tjj|dd}|jj}|d \}|d	 d u s)J |d
 dks1J |d dks9J |d }|d dksEJ |d du sMJ d S )N)r   r   r   )r2   r   r   )r   r   r   defcategoryr   r   Tr   column_indexesrf   pandas_typecategorical
numpy_typer   metadatanum_categoriesr   orderedF)	r6   r7   r   listrK   rM   rN   r@   r   r   rZ   r   r   r   mdr)   r)   r/   test_categorical_column_index  s   
z1TestConvertMetadata.test_categorical_column_indexc                 C   s   t jg dt jtdddd}tjj|dd}|jj}|d \}|d	 dks)J |d	 |d
 ks3J |d t	
 r<dndksAJ |d dksIJ |d }t|dksUJ |d dks]J d S )Nr   r   stringzre   r   Tr   r   rf   r   r  r+   rE   r   unicoder  r   encodingUTF-8)r6   r7   r   r  rK   rM   rN   r@   r   r
   r   r   r  r)   r)   r/   test_string_column_index  s    
z,TestConvertMetadata.test_string_column_indexc                 C   s   t jg dt jddddd}tjj|dd}|jj}|d	 \}|d
 d u s(J |d dks0J |d dks8J |d }|d dksDJ d S )Nr   
2017-01-01r   America/New_Yorkstartr   r   r   Tr   r   rf   r   
datetimetzr  r%   r  r   )r6   r7   r   rK   rM   rN   r@   r   r  r)   r)   r/   test_datetimetz_column_index  s   
z0TestConvertMetadata.test_datetimetz_column_indexc                 C   s4   t dt jddddi}|d}t|dd d S )Nr   r  r   r  r  Tr   )r6   r7   r   r   rb   r   r)   r)   r/   test_datetimetz_row_index  s   
z-TestConvertMetadata.test_datetimetz_row_indexc                 C   sB   t g dg dd}|jd|d< |d}t|dd d S )Nr   r   r   r   r   Tr   )r6   r7   r   astyper   rb   r   r)   r)   r/   test_categorical_row_index  s   
z.TestConvertMetadata.test_categorical_row_indexc                 C   sR   t jddgtdd}tt tj| W d    d S 1 s"w   Y  d S )Nr   r   aar   )	r6   r7   r  r   raises
ValueErrorrK   rM   rN   r   r)   r)   r/   *test_duplicate_column_names_does_not_crash  s   "z>TestConvertMetadata.test_duplicate_column_names_does_not_crashc              	   C   s   ddgddgg}|D ]P}t jj|dgdd}t j|gdg}t j|||g}tt |	  W d    n1 s<w   Y  tt |	  W d    n1 sUw   Y  q
d S )Nr   r   r   Fsafer   )
rK   DictionaryArrayr   rL   rM   from_batchesr   r  
IndexErrorrO   )r   indicesindsrm   batchr_   r)   r)   r/   #test_dictionary_indices_boundscheck  s   

z7TestConvertMetadata.test_dictionary_indices_boundscheckc                 C   s&   t jddgidgd}t|dd d S )Nr   r   u   うr   Tr   r   r   r)   r)   r/   *test_unicode_with_unicode_column_and_index  s   z>TestConvertMetadata.test_unicode_with_unicode_column_and_indexc              	   C   s   t ddgddgd}ddgddgdd	gfD ]M}t j|td
|_tt tj	
| W d    n1 s7w   Y  | }|jjt|_tt t||dd W d    n1 s_w   Y  qd S )Nr   r2   r   r   r  r      a2r   r   Tr   )r6   r7   r   rE   rQ   r   r   r   rK   rM   rN   ru   rv   r  r+   rb   )r   rZ   colsr[   r)   r)   r/   test_mixed_column_names  s   z+TestConvertMetadata.test_mixed_column_namesc                 C   s   t dt tj  krt dk rn ntd dg}d }||i}t|}tjj	|dd}|
 }|jd |jd ks@J |jjd |jjd ksNJ |jd |ksWJ d S )	N2.0.03.0.0Regression in pandas 2.0.0r   r   Tr   r   )r   r6   __version__r   skipencoder7   rK   rM   rN   rO   rv   r   rQ   )r   column_datakeyr   rZ   r   r   r)   r)   r/   test_binary_column_name  s   &

z+TestConvertMetadata.test_binary_column_namec                 C   sN   d}t t|}tjjg d|gddgd}tjd|i|d}t|dd	 d S )
Nr   )r   r   barfoobarsome_numbersr   numbersr   Tr   )r  r<   r6   r   r   r7   rb   )r   num_rowsr8  r   rZ   r)   r)   r/    test_multiindex_duplicate_values  s   
z4TestConvertMetadata.test_multiindex_duplicate_valuesc                 C   sb   t dddgi}tj|}|jj}d|vsJ |d d }|d dks'J |d	 d
ks/J d S )Nr   s
   some_bytessome_unicodemixedrQ   r   r   bytesr  rE   r6   r7   rK   rM   rN   r@   r   )r   rZ   r_   r   data_columnr)   r)   r/   test_metadata_with_mixed_types&  s   z2TestConvertMetadata.test_metadata_with_mixed_typesc                 C   s\   t jg dg ddg dd}tj|}|jdd}||j  }t	
|| d S )Nr   r   r5  bazr  )r   r   threer   T)ignore_metadata)r6   r7   rK   rM   rN   rO   castr@   remove_metadatarX   rY   )r   rZ   r_   r`   r[   r)   r)   r/   test_ignore_metadata/  s   z(TestConvertMetadata.test_ignore_metadatac                 C   s   t ddgg ddgd gi}ttjdtt dg}tjj||d}|jj	}d|vs2J |d	 d
 }|d dks@J |d dksHJ d S )Nr   r   r2   r   r   r   r   rd   r@   r<  rQ   r   r   zlist[int64]r  rE   )
r6   r7   rK   r@   r   list_r   rM   rN   r   )r   rZ   r@   r_   r   r?  r)   r)   r/   test_list_metadata:  s     z&TestConvertMetadata.test_list_metadatac                 C   sN   t dddddddgi}tj|}|jj}|d d d	 d
ks%J d S )Ndictsr   r2   r  r   r   rQ   r   r   rE   r>  )r   rZ   r_   r   r)   r)   r/   test_struct_metadataD  s   z(TestConvertMetadata.test_struct_metadatac                 C   s   t dtdtd gi}tj|}|jj}d|vs J |d d }|d dks.J |d	 d
ks6J |d dddksAJ d S )Ndecimals394092382910493.12341234678z314292388910493.12343437128r<  rQ   r   r   r   r  rE   r        )	precisionscale)	r6   r7   r   r   rK   rM   rN   r@   r   )r   r[   r_   r   r?  r)   r)   r/   test_decimal_metadataJ  s   
z)TestConvertMetadata.test_decimal_metadatac                 C   s   t jg dddt jddddfD ]K}t jg dg d	d
|d}tj|}|d}| }|dg }t	|j
t jr@d |j
_t|| |d}| }t||dg jdd qd S )Nr   r   r   r   re   r  r   Europe/Brusselsr   r   r   皙?皙?g333333?r  r   r   r   Tdrop)r6   r   r   r7   rK   rM   rN   remove_columnrO   r   r   r   r   rX   rY   reset_index)r   r   rZ   r_   table_subsetr`   r[   table_subset2r)   r)   r/   !test_table_column_subset_metadataY  s&   



z5TestConvertMetadata.test_table_column_subset_metadatac                 C   sv   t ttdttdtdd}tj|	ddg}|
ddg}| }|ddg 	d}t|| d S )Nr   )firstsecondvaluerc  rd  re  )r6   r7   r  r<   r8   r9   rK   rM   rN   r   selectrO   rX   rY   )r   rZ   r_   subsetr`   r[   r)   r)   r/   'test_to_pandas_column_subset_multiindexn  s   

z;TestConvertMetadata.test_to_pandas_column_subset_multiindexc              	   C   s   dgddgd g}g g g g}t dtj|tt dfdtj|tt dfg}tjt| t|	 }tj
|g}| }tj
|}|jj}| }	tt d|fd|fg}
t|	|
 |d ddd dd	d
ddd ddd
gks|J d S )Ntestr   r   c1rI  c2rQ   rE   zlist[unicode])rf   r   r  r  r   zlist[empty])r   rK   rg   rK  stringrL   r   r  rv   keysrM   r!  rO   rN   r@   r   r6   r7   rX   rY   )r   rj  rk  arraysrbtblrZ   tbl2md2r   r[   r)   r)   r/   test_empty_list_metadata|  s>   


z,TestConvertMetadata.test_empty_list_metadatac                 C   s<   t g dg dd}tj|}|jjd d usJ d S )Nr   r  pandas_versionr>  r   r)   r)   r/   test_metadata_pandas_version  s   z0TestConvertMetadata.test_metadata_pandas_versionc           
      C   s   t dt jdddi}tj|}|d tjddd}|dt	d|j
|}tdtjdddfg}tjj||d	}| }|d jd|d< ||fD ]}|jjd us[J | }	t|	| qQd S )
Nr   z
2020-01-01r   r   nsUTCr   r   rJ  )r6   r7   r   rK   rM   rN   rE  	timestamp
set_columnr   rd   r@   ru   dttz_localizer   rO   rX   rY   )
r   rZ   r_   new_col
new_table1r@   
new_table2r[   	new_tabler`   r)   r)   r/   test_mismatch_metadata_schema  s   z1TestConvertMetadata.test_mismatch_metadata_schemaN).__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markrV   r   r   r	  r  r  r  r  r  r&  r'  r+  r4  r:  r@  rG  rL  rN  rU  rb  rh  rs  ru  r  r)   r)   r)   r/   r~      sX    

)
	
,r~   c                   @   s   e Zd Z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 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+ Zd,d- Zd.S )/TestConvertPrimitiveTypesz>
    Conversion tests for primitive (e.g. numeric) types.
    c           
      C   s   i }g }dt  fdt  fdt  fg}d}|D ]\}}tj|}||||< |t 	|| qt
|}t |}	t||	d d S )Nf2f4f8r   r\   )rK   float16r   r   r8   r:   r;   r  appendr   r6   r7   r@   rb   )
r   r   fieldsdtypes
num_valuesnumpy_dtypearrow_dtyperv   rZ   r@   r)   r)   r/   test_float_no_nulls  s   




z-TestConvertPrimitiveTypes.test_float_no_nullsc                 C   s  d}t jjdd|ddk }dt fdt fdt fg}g d	}g }g }g }|D ]-\}}	t j||}
tj	|
d
|d}|
| |
t||	 t j|
|< |
|
 q*tjtt|||d}tj||}|jt|svJ | }t|| d S )Nr   r   
   r=   r   r  r  r  )r  r  r  T)rN   ro   r   )r8   r:   randintrK   r  r   r   r;   r  rg   r  r   rS   r6   r7   dictziprM   r   r@   rP   rO   rX   rY   )r   r  	null_maskr  r   expected_colsrn  r  rf   r  rv   rm   ex_framer_   r`   r)   r)   r/   test_float_nulls  s0   




z*TestConvertPrimitiveTypes.test_float_nullsc                 C   sp   t dddtjgi}ttjdt ddg}tjj	||dd}|d 
 g d	ks.J t||  d S )
Nr   r   r   TnullableFr@   r  r   r   r2   N)r6   r7   r8   rS   rK   r@   r   r   rM   rN   	to_pylistrX   rY   rO   r   rZ   r@   r_   r)   r)   r/   test_float_nulls_to_ints  s
   z2TestConvertPrimitiveTypes.test_float_nulls_to_intsc                 C   s2   t g d}t g d}t||t d d S )N)        r   r   Ng      )FTTNTr[   rd   )r6   rh   rx   rK   bool_r   rj   r[   r)   r)   r/   test_float_nulls_to_boolean  s   z5TestConvertPrimitiveTypes.test_float_nulls_to_booleanc                 C   sF   t dtjg}tj|dd}|jdksJ t|d  s!J d S )Nr  FrN   r   r   )	r6   rh   r8   rS   rK   rg   rs   r   as_py)r   rj   rm   r)   r)   r/   'test_series_from_pandas_false_respected  s   zATestConvertPrimitiveTypes.test_series_from_pandas_false_respectedc                 C   s
  t  }g }dt fdt fdt fdt fdt fdt fdt fdt	 fd	t fd
t	 fg
}d}|D ]5\}}t
|}t
jjt|jt
t
jjt|jt
t
jj||d}||||< |t|| q=t|}	t|}
t|	|
d d S )Ni1i2i4i8u1u2u4u8longlong	ulonglongr   r>   r   r  )r   rK   r   r   r   r   r   r   r   r   r8   iinfor:   r  maxminint_r  r  r   r6   r7   r@   rb   )r   r   r  numpy_dtypesr  r   r  inforv   rZ   r@   r)   r)   r/   test_integer_no_nulls  s(   


z/TestConvertPrimitiveTypes.test_integer_no_nullsc                 C   sl   t  }g d}|D ]}tjd|d||< q	t|}t| | D ]}t|}|	 |
 ks3J q"d S )N)r  r  r  r  r  r  r  r  byteubyteshortushortintcuintcr  uintr  r     r   )r   r8   r9   r6   r7   rb   rv   rK   rg   r  tolist)r   r   r  r   rZ   np_arrrm   r)   r)   r/   test_all_integer_types,  s   

z0TestConvertPrimitiveTypes.test_all_integer_typesc                 C   s   g d}|D ]L}dD ]G}t jg d|| d}||d d d fD ]0}|jjr6t|}| | ks5J q tt	 t|}W d    n1 sKw   Y  q q
qd S )Nr  r  r  r  r  r  r  r  z=<>)r   r2   *   r   r2   )
r8   rg   r   isnativerK   r  r  r   r  NotImplementedError)r   
int_dtypesr|  orderr   r  rm   r)   r)   r/   test_integer_byteorder=  s   
z0TestConvertPrimitiveTypes.test_integer_byteorderc                 C   s   g d}d}t jjdd|ddk }g }g }|D ]&}t jjdd|d}tj||d}|| |d}	t j|	|< ||	 qtj	t
t|||d	}
tj||}| }t||
 d S )
Nr  r   r   r  r=   r   ro   r  r   )r8   r:   r  rK   rg   r  r  rS   r6   r7   r  r  rM   r   rO   rX   rY   )r   r  r  r  r  rn  rf   rv   rm   r[   r  r_   r`   r)   r)   r/   test_integer_with_nullsK  s$   


z1TestConvertPrimitiveTypes.test_integer_with_nullsc                 C   sF   t jddd}t }tj||d}t|d}||s!J d S )Nr  r   r   rI  r   )r8   r9   rK   r   rg   r  rP   )r   rm   target_typer`   r[   r)   r)   r/    test_array_from_pandas_type_casth  s
   z:TestConvertPrimitiveTypes.test_array_from_pandas_type_castc                 C   sV   d}t jd tdt j|dki}tdt }t	|g}t
||d d S )Nr   r   boolsr  )r8   r:   seedr6   r7   r;   rK   r   r  r@   rb   )r   r  rZ   r   r@   r)   r)   r/   test_boolean_no_nullsq  s   z/TestConvertPrimitiveTypes.test_boolean_no_nullsc                 C   s   d}t jd t jjdd|ddk }t jjdd|ddk }tj||d}|t}d ||< tdt	 }t
|g}td|i}tj|gdg}	|	j
|sTJ |	 }
t|
| d S )	Nr   r   r  r=   r   r   r  r  )r8   r:   r  r  rK   rg   r  rE   r   r  r@   r6   r7   rM   r   rP   rO   rX   rY   )r   r  ro   rv   rm   r[   r   r@   r  r_   r`   r)   r)   r/   test_boolean_nulls{  s   
z,TestConvertPrimitiveTypes.test_boolean_nullsc                 C   :   t g dd }t g dd }t||t d d S )NTTFTTr2   r   r   r   r   r   r  )r6   rh   rx   rK   r   r  r)   r)   r/   test_boolean_to_int     z-TestConvertPrimitiveTypes.test_boolean_to_intc                 C   st   t jg dd td}t g dd }d}tjtj|d t||t d W d    d S 1 s3w   Y  d S )Nr  r2   r   r  zExpected integer, got boolmatchr  )	r6   rh   rE   r   r  rK   ArrowTypeErrorrx   r   )r   rj   r[   expected_msgr)   r)   r/   test_boolean_objects_to_int  s   "z5TestConvertPrimitiveTypes.test_boolean_objects_to_intc                 C   r  )N)TTFNTr2   )r   r   r  Nr   r  )r6   rh   rx   rK   r   r  r)   r)   r/   test_boolean_nulls_to_float  r  z5TestConvertPrimitiveTypes.test_boolean_nulls_to_floatc                 C   s(   t jtjdddddgd}t| d S )N)r   r2   r    r   r   r   r   )r6   r7   r8   onesrb   r   r)   r)   r/   test_boolean_multiple_columns  s   z7TestConvertPrimitiveTypes.test_boolean_multiple_columnsc                 C   n   t jd dt dgd td}td|i}tdt|i}tdt }t	|g}t
|||d d S )Nr   g      @r   r   floatsr[   r\   )r8   rg   r   rE   r6   r7   
to_numericrK   r   r@   rb   r   rm   rZ   r[   r   r@   r)   r)   r/   test_float_object_nulls     
z1TestConvertPrimitiveTypes.test_float_object_nullsc              	   C   s   t tjddtjg}t t t t t	 t
 t t g}|D ]?}tj||d}tjg d|d}||s@J t d|i}ttd|g}tjj||dd}|d d|sfJ q'd S )	Nr   r   rI  )Nr   r2   N	has_nullsFr@   rA   r   )r6   rh   r8   rS   rK   r   r   r   r   r   r   r   r   rg   rP   r7   r@   r   rM   rN   chunk)r   rj   typestyr`   r[   rZ   r@   r)   r)   r/   test_float_with_null_as_integer  s   
z9TestConvertPrimitiveTypes.test_float_with_null_as_integerc                 C   r  )Nr   r   r   r   intsr  )r8   rg   r   rE   r6   r7   r  rK   r   r@   rb   r  r)   r)   r/   test_int_object_nulls  r  z/TestConvertPrimitiveTypes.test_int_object_nullsc                 C   sP   t jg dd td}td|i}tdt }t|g}t	||d d S )N)FNTr   r   r  r  )
r8   rg   rE   r6   r7   rK   r   r  r@   rb   )r   rm   rZ   r   r@   r)   r)   r/   test_boolean_object_nulls  s
   z3TestConvertPrimitiveTypes.test_boolean_object_nullsc                    s8   t jd gtd  fdd}|t  |t  d S )Nr   c                    s4   t j | d}|j| ksJ |d  d u sJ d S )NrI  r   )rK   rg   rd   r  )r   a2rm   r)   r/   _check_type  s   zJTestConvertPrimitiveTypes.test_all_nulls_cast_numeric.<locals>._check_type)r8   rg   rE   rK   r   r   )r   r  r)   r  r/   test_all_nulls_cast_numeric  s   z5TestConvertPrimitiveTypes.test_all_nulls_cast_numericc                 C   s   t jdt jgt jd}tj|t d}| \}}t|t js"J |dks(J t|t js0J t |s7J tj|t dd}| \}}t|t jsOJ |dksUJ |d u s[J d S )Nr   r   rI  Trd   rN   )r8   rg   rS   r  rK   r  r   r   )r   rm   r   r.   yr)   r)   r/   test_half_floats_from_numpy  s   z5TestConvertPrimitiveTypes.test_half_floats_from_numpyN)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    s0    	
		r  r   r  c                 C   sz   d}t jjdd|ddk }t jjdd|| d}tj||d}| r,|d}d ||< n|}|jd	d
}t j	|| d S Nr   r   r  r=   r   r  r  OTinteger_object_nulls)
r8   r:   r  rK   rg   anyr  rO   testingassert_equal)r   r  r  rv   rg   r[   r`   r)   r)   r/   &test_array_integer_object_nulls_option  s   

r  c                 C   s   d}t jjdd|ddk }t jjdd|| d}tj||d}| r,|d}d ||< n|}t| |i}tj	
|g| g}|jd	d
}t|| d S r  )r8   r:   r  rK   rg   r   r  r6   r7   rM   r   rO   rX   rY   )r   r  r  rv   rg   r[   r_   r`   r)   r)   r/   &test_table_integer_object_nulls_option  s   

r  c                   @   s  e Zd ZdZdd Zdd Zejdg ddd	 Z	d
d Z
dd Zee ejB ejdddd Zdd Zdd Zdd Zdd Zejddg dgdd Zejddd gd!d" Zejd#dd gd$d% Zejd&e e ed'ed(ed)ed*ed'd+ed(d+ed)d+ed*d+g
d,d- Zejd&e e ed'ed(ed)ed*ed'd+ed(d+ed)d+ed*d+g
d.d/ Z d0d1 Z!d2d3 Z"d4d5 Z#d6d7 Z$d8d9 Z%d:d; Z&d<d= Z'd>d? Z(d@dA Z)dBdC Z*dDdE Z+ejdFe e gdGdH Z,dIdJ Z-ejj.e/duo6e0dKe0e/j1  ko4e0dLk n  dMdNdOdP Z2ejdg ddQdR Z3ejdg ddSdT Z4dUdV Z5dS )WTestConvertDateTimeLikeTypeszQ
    Conversion tests for datetime- and timestamp-like types (date64, etc.).
    c                 C   J   t dtjg dddi}tdtd}t|g}t||d d S )N
datetime64)2007-07-13T01:23:34.1234567892006-01-13T12:34:56.4325397842010-08-13T05:46:57.437699912r%   r   rw  r  	r6   r7   r8   rg   rK   r   rz  r@   rb   r   rZ   r   r@   r)   r)   r/   #test_timestamps_notimezone_no_nulls"     
z@TestConvertDateTimeLikeTypes.test_timestamps_notimezone_no_nullsc                 C   r  )Nr  )r  Nr
  r%   r   rw  r  r  r  r)   r)   r/    test_timestamps_notimezone_nulls1  r  z=TestConvertDateTimeLikeTypes.test_timestamps_notimezone_nullsunit)rj   msusrw  c                 C   s   t tjt dk r|dkrtd tdtjg dd| ddi}|d j	d	|d< t
| t|d  tdtjg d
d| ddi}|d j	d	|d< t
| d S )Nr,  rw  z0pandas < 2.0 only supports nanosecond datetime64r  )2007-07-13T01:23:34.1232006-01-13T12:34:56.4322010-08-13T05:46:57.437zdatetime64[]r   
US/Easternr  Nr	  r
  )r   r6   r/  r   r0  r7   r8   rg   r|  r}  rb   rn   )r   r  rZ   r)   r)   r/   test_timestamps_with_timezone@  s"   


z:TestConvertDateTimeLikeTypes.test_timestamps_with_timezonec                 C   s   dd t dD }tdtj|tdi}tj|}t|d 	dtj
s(J | }tdtj|ddi}t|| d S )Nc                 S   s   g | ]}t  t|d  qS ))days)r   todayr   r,   r)   r)   r/   r0   _  s    zETestConvertDateTimeLikeTypes.test_python_datetime.<locals>.<listcomp>r  r   r   r   r$   )r<   r6   r7   rh   rE   rK   rM   rN   r   r  TimestampArrayrO   rX   rY   )r   
date_arrayrZ   r_   r`   expected_dfr)   r)   r/   test_python_datetime]  s   z1TestConvertDateTimeLikeTypes.test_python_datetimec              
   C   sZ   t d}|j|d|dfD ]}tdddddd|dg}td	|i}t| qd S )
Npytzr  r   r   r     -   tzinfor   )	r   importorskiputcr   FixedOffsetr   r6   r7   rb   )r   r   r   rv   rZ   r)   r)   r/   %test_python_datetime_with_pytz_tzinfop  s   

zBTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_tzinfoN)deadlinec              	   C   sL   t |dv rtd tdddddd|dg}td	|i}t|d
d d S )N)zbuild/etc/localtimeFactoryz Localtime timezone not supportedr   r   r  r!  r"  r#  r   FrI   )r+   r   r0  r   r6   r7   rb   )r   r   rv   rZ   r)   r)   r/   'test_python_datetime_with_pytz_timezonex  s
   
zDTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_timezonec           
   	   C   s   t d}ddlm} tdddddd|jd	g}tjd
|i|d}t|dd d}|t|d}|	|d }tdddddd|d	g}tdddddd|d	g}tjd
|i|d}tjd
|i|d}	t||	dd d S )Nr   r   )r   r   r   r  r!  r"  r#  r   r   Tr   )hours<   r   )
r   r%  r   r   r&  r6   r7   rb   r   r'  )
r   r   r   rv   rZ   r-  tz_timezonetz_pytz
values_expdf_expr)   r)   r/   )test_python_datetime_with_timezone_tzinfo  s   
zFTestConvertDateTimeLikeTypes.test_python_datetime_with_timezone_tzinfoc                 C   s   G dd dt }|ddddddg}tdtj|tdi}tj|}t|d 	dtj
s1J | }tdtj|ddi}t|d |d< t|| d S )	Nc                   @   s   e Zd ZdZdS )zNTestConvertDateTimeLikeTypes.test_python_datetime_subclass.<locals>.MyDatetimer  N)r  r  r  
nanosecondr)   r)   r)   r/   
MyDatetime  s    r5    r   r   r   r   r$   )r   r6   r7   rh   rE   rK   rM   rN   r   r  r  rO   to_datetimerX   rY   )r   r5  r  rZ   r_   r`   r  r)   r)   r/   test_python_datetime_subclass  s   z:TestConvertDateTimeLikeTypes.test_python_datetime_subclassc                 C   s   G dd dt }|dddg}tdtj|tdi}tj|}t|d 	dtj
s.J | }tdtjt dddgtdi}t|| d S )Nc                   @      e Zd ZdS )zFTestConvertDateTimeLikeTypes.test_python_date_subclass.<locals>.MyDateNr  r  r  r)   r)   r)   r/   MyDate      r;  r6  r   r   r   r   )r   r6   r7   rh   rE   rK   rM   rN   r   r  Date32ArrayrO   r8   rg   rX   rY   )r   r;  r  rZ   r_   r`   r  r)   r)   r/   test_python_date_subclass  s   z6TestConvertDateTimeLikeTypes.test_python_date_subclassc                 C   sV   t tdddd g}t |g}| }t jj|t  d}||	ds)J d S )N  r  r!  rI  date32)
rK   rg   r   chunked_arrayrO   ArrayrN   r@  rP   rE  )r   rm   r   rj   arr2r)   r)   r/   test_datetime64_to_date32  s
   z6TestConvertDateTimeLikeTypes.test_datetime64_to_date32ro   )TFFTFFc                 C   s   |rt |}tg d}tjj|t |d}t tdddtdddtdddtdddtdddtdddg}tj||t d}|	|sMJ d S )	N)z2018-05-10T00:00:00z2018-05-11T00:00:00z2018-05-12T00:00:00z2018-05-10T10:24:01z2018-05-11T10:24:01z2018-05-12T10:24:01rd   ro   r   r   r  rR  r  ro   rd   )
r8   rg   r6   r7  rK   rB  rN   date64r   rP   )r   ro   rj   rm   r   r[   r)   r)   r/   test_pandas_datetime_to_date64  s   






z;TestConvertDateTimeLikeTypes.test_pandas_datetime_to_date64zcoerce_to_ns,expected_dtype)Fr#   )Tr%   c           
      C   s   t dddd t dddt dddg}tjg ddd	}ttjtd
k r&d}tjg d|d	}t|t|gg}|D ]0}|j|d}|	t
}	|j|	jksQJ t||	 |jd|d}|j|jksfJ t|| q<d S )Nr6  r       r2   rQ  )
2000-01-01Nz
1970-01-01z
2040-02-26datetime64[D]r   r,  r%   coerce_temporal_nanosecondsFdate_as_objectrN  )r   r8   rg   r   r6   r/  rK   rA  rO   r  rE   r   rz   r{   )
r   coerce_to_nsexpected_dtyper   expected_daysr[   objectsobjr`   expected_objr)   r)   r/   test_array_types_date_as_object  s6   






z<TestConvertDateTimeLikeTypes.test_array_types_date_as_objectzcoerce_to_ns,expected_typec              
   C   s~   t dtdddd tdddtdddgi}tjj|dd	}|jd|d
}| }tj|	||dd tj||dd d S )Nr   r6  r   rI  rJ  r2   rQ  Fr   rO  Tr+  )
r6   r7   r   rK   rM   rN   rO   rX   rY   r  )r   rQ  expected_typerZ   r_   df_datetime	df_objectr)   r)   r/   !test_table_convert_date_as_object  s    

z>TestConvertDateTimeLikeTypes.test_table_convert_date_as_object
arrow_typerj   r  r  rw  rx  c                 C   s   t dddtdddg}t|}t||}|jddd}d }t|dr.|j	d ur.d}t
d	| }t||| d S )
Nr6  r     TFrN  rP  r   rx  rw  )r   r   r6   rh   rK   rg   rE  rO   hasattrr   rz  to_pandas_dtyperX   ri   r  )r   r\  r   r[   rm   r`   expected_tzrX  r)   r)   r/   &test_array_coerce_temporal_nanoseconds  s   
zCTestConvertDateTimeLikeTypes.test_array_coerce_temporal_nanosecondsc           	      C   s   t dddtdddg}ttd|g}td|i}tjt|g|d}|j	ddd}d }t
|d	r=|jd ur=d
}td| }t||| d S )Nr6  r   r]  r   rJ  TFr^  r   rx  rw  )r   r   rK   r@   r   r6   r7   r_   rg   rO   r_  r   rz  r`  rX   rY   r  )	r   r\  r   r@   r  r_   	result_dfra  rX  r)   r)   r/   &test_table_coerce_temporal_nanoseconds+  s   zCTestConvertDateTimeLikeTypes.test_table_coerce_temporal_nanosecondsc              
   C   s   t dtdddd tdddtdddgi}tjj|dd	}tdt }tj|g|jj	d
}|j
|s9J | }t|| d S )Nr   r6  r   rI  rJ  r2   rQ  Fr   r  )r6   r7   r   rK   rM   rN   r   r@  r@   r  rP   rO   rX   rY   )r   rZ   r_   r   r\   r`   r)   r)   r/   test_date_infer>  s   

z,TestConvertDateTimeLikeTypes.test_date_inferc                 C   sx   t jtdddtdddgdd}ddg}tj|t |d}t jd tdddgdd}tj|dd	}||s:J d S )
Nr?  r   r   rL  r   TFr  r  )r8   rg   r   rK   rP   )r   rm   ro   r`   r[   r)   r)   r/   test_date_maskN  s   z+TestConvertDateTimeLikeTypes.test_date_maskc                 C   sh  t jtdddd tdddtdddgtd}t jg ddd}|dd	 }t g d
}t }t }tj||d}tj||d}tj|||d}	tj|||d}
||	s[J ||
sbJ ddg}tj	
||g|}t jg ddd}tjj|d< |d}tj||d|d}|jdd}t|| | }|d}tj||d|d}t|| d S )Nr?  r   r   r   r   )kC  r  lC  mC  r   r    \&)FTFFrI  rF  r@  rG  )z
2017-04-03
2017-04-04rl  z
2017-04-05rL  r   r#   )r@  rG  r   F)rP  rE   )r8   rg   r   rE   r  rK   r@  rG  rP   rM   r   r6   NaTre  r7   rO   rX   rY   )r   rm   arr_i4arr_i8ro   t32t64a32a64a32_expecteda64_expectedcolnamesr_   	ex_valuesex_datetime64msexpected_pandastable_pandastable_pandas_objects
ex_objectsexpected_pandas_objectsr)   r)   r/   test_date_objects_typedW  sV   





z4TestConvertDateTimeLikeTypes.test_date_objects_typedc                 C   s   t tdd }tjtdddtj|gtd}tjtdddd d gtd}tj|dd}tj|dd}||s8J |j	dks?J tjtjgddj
t ksOJ tj|gddj
t ks^J d S )NNAr6  r   r   Tr  r2   )getattrr6   r8   rg   r   rm  rE   rK   rP   rs   rd   null)r   pd_NArv   values_with_noner`   r[   r)   r)   r/   test_pandas_null_values  s    "z4TestConvertDateTimeLikeTypes.test_pandas_null_valuesc                 C   s   t  }t  }tjg ddd}|dd }t j||d}t j||d}tddd	}|d
  |ks6J |d
  |ks@J d S )N)rh  ri  rj  r   r   r   rk  rI  r?  r   r   r   )rK   r@  rG  r8   rg   r  r   r  )r   t1t2rm   rC  a1r  r[   r)   r)   r/   test_dates_from_integers  s   z5TestConvertDateTimeLikeTypes.test_dates_from_integersc                 C   s  t ddddt ddddg}td}tj|d g td	}t|}|j|ks)J |d
  |d
 ks5J |d  |d ksAJ |d  d u sKJ t	d|i}tj
|}|d
 |saJ tjdd |D dd	}tj|tdd}|d
  |d
 ksJ tj|d tdd}	|	d
  |d
 ksJ tj|d dtdd}
|
d
  |d
 jddksJ tj|d dtdd}|d
  |d
 jd
dksJ d S )Nr   r2   r   L  r   r   r   r  r   r   timesc                 S   r(   r)   _pytime_to_microsr-   vr)   r)   r/   r0     r1   zHTestConvertDateTimeLikeTypes.test_pytime_from_pandas.<locals>.<listcomp>r   rI    rw  r  r  microsecond@B rj   )r   rK   time64r8   rg   rE   rd   r  r6   r7   rL   rN   rP   r  time32rR   )r   pytimesr  aobjsparrrZ   r%  rm   r  r  a3a4r)   r)   r/   test_pytime_from_pandas  s8   

 $z4TestConvertDateTimeLikeTypes.test_pytime_from_pandasc                 C   s  t ddddt ddddt dddg}t|d d d g }td	d
 |d d D d g }tdd
 |d d D d g }tjdd
 |D dd}tjdd
 |D dd}tjg dtd}tj||tdd}tj|d |tdd}tj|d d|tdd}	tj|d d|tdd}
g d}tj	|||	|
g|}||f||f|	|f|
|ffD ]\}}|
 }|j|k sJ q|
 }tj||||d|d}t|| d S )Nr   r2   r   r  r   r   r   r   c                 S      g | ]}|j d dqS )r  r  rR   r,   r)   r)   r/   r0         zJTestConvertDateTimeLikeTypes.test_arrow_time_to_pandas.<locals>.<listcomp>c                 S   r  )r   r  r  r,   r)   r)   r/   r0     r  c                 S   r(   r)   r  r  r)   r)   r/   r0     r1   r   r   c                 S   r(   r)   r  r  r)   r)   r/   r0     r1   FFTr  rF  r  rw  r  r  r  rj   )
time64[us]z
time64[ns]
time32[ms]z	time32[s]r   )r   r8   rg   r    rK   r  r  r  rL   r   rO   rv   allr6   r7   rX   rY   )r   r  r[   expected_ms
expected_srm   r  r  r  r  r  r   r%  expected_valuesresult_pandasrZ   r  r)   r)   r/   test_arrow_time_to_pandas  sd   




z6TestConvertDateTimeLikeTypes.test_arrow_time_to_pandasc                 C   sl   t jg ddd}t| t jg ddd}t| t jg ddd}t| t jg dd	d}t| d S )
Nr  r%   r   )z2007-07-13T01:23:34.123456Nz2006-01-13T12:34:56.432539z2010-08-13T05:46:57.437699r$   )r  Nr  r  r#   )z2007-07-13T01:23:34Nz2006-01-13T12:34:56z2010-08-13T05:46:57r"   r8   rg   r}   )r   datetime64_nsdatetime64_usdatetime64_msdatetime64_sr)   r)   r/   test_numpy_datetime64_columns  s    



z:TestConvertDateTimeLikeTypes.test_numpy_datetime64_columnsc                 C   s   t tjt dkrtd tg dtd}ttj	g ddd}|
 }t|| t|g}|
 }t|| d S )Nr,  z0pandas >= 2.0 supports non-nanosecond datetime64r   r  )r  )r   r6   r/  r   r0  rK   rg   rz  rh   r7  rO   rX   ri   rA  )r   rm   r[   rj   r)   r)   r/   &test_timestamp_to_pandas_coerces_to_ns  s   
zCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_coerces_to_nsc              
   C   s.  dD ]}dD ]}t tdddgt j||d}t d|i}d}tjt|d |jdd	 W d    n1 s9w   Y  tjt|d |jdd	 W d    n1 sVw   Y  tjt|d |	djdd	 W d    n1 svw   Y  |jd
dd |jd
dd |	djd
dd qqd S )Nrj   r  r  )Nr  r   ry  r   z'would result in out of bounds timestampr  TrM  F)r  rN  )
rK   rg   r   rz  r_   r   r  r  rO   column)r   r  r   rm   r_   msgr)   r)   r/   &test_timestamp_to_pandas_out_of_bounds(  s*    
zCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_out_of_boundsc                 C   sN   t dt jg t ddi}| }tdtjg ddi}t	|| d S )Nr   r  rI  r$   r   )
rK   r_   rA  rz  rO   r6   r7   rh   rX   rY   )r   r_   r`   r[   r)   r)   r/   &test_timestamp_to_pandas_empty_chunkedC  s   zCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_empty_chunkedr   c                 C   s"   t jg ddd}t||d d S )N)
2007-07-13Nz
2006-01-15z
2010-08-19rL  r   rI  r  )r   r   datetime64_dr)   r)   r/   test_numpy_datetime64_day_unitJ  s   
z;TestConvertDateTimeLikeTypes.test_numpy_datetime64_day_unitc                 C   sx   t g d}ttdddtdddtdddg}tjj||d}td tdddd g}tj||s:J d S )NTFTi  r   i  i  r  )	r8   rg   r6   rh   r   rK   rB  rN   rP   )r   mr   r`   r[   r)   r)   r/   %test_array_from_pandas_date_with_maskT  s   


zBTestConvertDateTimeLikeTypes.test_array_from_pandas_date_with_maskz1.16.0z1.16.1z#Until numpy/numpy#12745 is resolved)reasonc                 C   s*   t dt dt jgi}t|dd d S )Nr   z2012-11-11 00:00:00+01:00Fr+  )r6   r7   	Timestamprm  rb   r   r)   r)   r/   test_fixed_offset_timezonea  s   
z7TestConvertDateTimeLikeTypes.test_fixed_offset_timezonec                 C   h   t tjt dk rd}tdtjg dd| ddi}tdt|}t	|g}t
||d d S )	Nr,  rw  timedelta64)r   l     qa    @B1timedelta64[r  r   r  r   r6   r/  r7   r8   rg   rK   r   durationr@   rb   r   r  rZ   r   r@   r)   r)   r/   test_timedeltas_no_nullsr     

z5TestConvertDateTimeLikeTypes.test_timedeltas_no_nullsc                 C   r  )	Nr,  rw  r  )r   Nr  r  r  r   r  r  r  r)   r)   r/   test_timedeltas_nulls  r  z2TestConvertDateTimeLikeTypes.test_timedeltas_nullsc              
   C   sN   ddl m} tdd |dddddgi}tdt fg}t||d d S )	Nr   )
DateOffsetdate_offseti  r   iX  )r  monthsmicrosecondsnanosecondsr  )pandas.tseries.offsetsr  r6   r7   rK   r@   month_day_nano_intervalrb   )r   r  rZ   r@   r)   r)   r/   test_month_day_nano_interval  s   
z9TestConvertDateTimeLikeTypes.test_month_day_nano_interval)6r  r  r  r  r  r  r   r  parametrizer  r  r(  hgivenstnonepast	timezonessettingsr,  r3  r8  r>  rD  rH  rW  r[  rK   r@  rG  rz  rb  rd  rf  rg  r~  r  r  r  r  r  r  r  r  r  r  skipifr8   r   r/  r  r  r  r  r)   r)   r)   r/   r    s    









	1%0!
	


r  c                   @   s  e Zd Zdd Zdd Zejjdd Zejjej	ddd	g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 Zd d! Zd"d# Zej	d$e e e gd%d& Zej	d$e e e gd'd( Zd)d* Zd+d, Zd-d. Zd/S )0TestConvertStringLikeTypesc                 C   s~   d}dd ddt jg}td|| i}tdt rt nt	 }t
|g}g d}td|| i}t|||d d S )Nr  r   r5     mañanastrings)r   Nr5  r  Nr  )r8   rS   r6   r7   rK   r   r
   r   large_stringrl  r@   rb   )r   repeatsrv   rZ   r   r@   rw  r[   r)   r)   r/   test_pandas_unicode  s   z.TestConvertStringLikeTypes.test_pandas_unicodec                 C   sj   ddd t ddtjg}td|i}tj|}|d jt	 ks#J g d}td|i}t
|| d S )Nqux   foo   barzr  r   )   quxr  Nr  r  N)	bytearrayr8   rS   r6   r7   rK   rM   rN   rd   binaryrb   )r   rv   rZ   r_   values2r[   r)   r)   r/   test_bytes_to_binary  s   z/TestConvertStringLikeTypes.test_bytes_to_binaryc                 C   s   dd }dd }t d|gd |g dgd  i}t|d }t|tjs)J |jdks0J d }tj|}|d jdksAJ d S )	N   x kr     r.   r2   r   )	r6   r7   rK   rg   r   ChunkedArray
num_chunksrM   rN   )r   v1v2rZ   rm   r_   r)   r)   r/   test_bytes_exceed_2gb  s   z0TestConvertStringLikeTypes.test_bytes_exceed_2gbcharr.   r  c                 C   s   |d }|d }t d|ggd |gg dgg i}tj|d dd}|jdd t|tjs2J |jd	ks9J t|	d
dksDJ t|	ddksOJ d S )Nr  r  r  r  r  Tr  fullr2   r      r   )
r6   r7   rK   rg   validater   r  r  r   r  )r   r  r  r  rZ   rm   r)   r)   r/   +test_auto_chunking_pandas_series_of_strings  s   zFTestConvertStringLikeTypes.test_auto_chunking_pandas_series_of_stringsc                 C   s   dd t dd d dg}td|i}ttdtdg}tjj||d}|jd j	|d j	ks3J |jd j
|d j
ks@J | }t|| d S )Nr     bar   heyr  r   rJ  r   )r  r6   r7   rK   r@   r   r  rM   rN   rd   rf   rO   rX   rY   )r   rv   rZ   r@   r_   r`   r)   r)   r/   test_fixed_size_bytes  s   z0TestConvertStringLikeTypes.test_fixed_size_bytesc                 C   sr   g d}t d|i}ttdtdg}ttj tj	j
||d W d    d S 1 s2w   Y  d S )N)r  Ns   baNNr  r  r   rJ  )r6   r7   rK   r@   r   r  r   r  ArrowInvalidrM   rN   )r   rv   rZ   r@   r)   r)   r/   5test_fixed_size_bytes_does_not_accept_varying_lengths  s   "zPTestConvertStringLikeTypes.test_fixed_size_bytes_does_not_accept_varying_lengthsc                 C   s"   t g d}t|t d d S )N   123    r(  Nrk   )r6   rh   rn   rK   r  r   rj   r)   r)   r/   test_variable_size_bytes  s   z3TestConvertStringLikeTypes.test_variable_size_bytesc                 C   sB   t tdtdtdd g}t|t d t|t d d S )Nr  r  r(  r  rl   )r6   rh   r  rn   rK   r  r  r)   r)   r/   test_binary_from_bytearray  s
   z5TestConvertStringLikeTypes.test_binary_from_bytearrayc                 C   L   t g d}t|t d t d|i}t|tdt fgd d S Nr  r  r   rJ  )r6   rh   rn   rK   large_binaryr7   rb   r@   r   rj   rZ   r)   r)   r/   test_large_binary     
z,TestConvertStringLikeTypes.test_large_binaryc                 C   r  N)123r3   r   Nr  r   rJ  )r6   rh   rn   rK   r  r7   rb   r@   r  r)   r)   r/   test_large_string  r  z,TestConvertStringLikeTypes.test_large_stringc                 C   r  r  )r6   rh   rn   rK   binary_viewr7   rb   r@   r  r)   r)   r/   test_binary_view	  r  z+TestConvertStringLikeTypes.test_binary_viewc                 C   r  r  )r6   rh   rn   rK   string_viewr7   rb   r@   r  r)   r)   r/   test_string_view  r  z+TestConvertStringLikeTypes.test_string_viewc           
      C   s   g d}t d|i}tdt }t|g}tjj||d}|jdd}t d|i}t	j
||dd |jdd}t dt |i}	t	j
||	dd d S )Nr3   r3   r3   r3   r3   r  rJ  Fstrings_to_categoricalTr+  )r6   r7   rK   r   rl  r@   rM   rN   rO   rX   rY   Categorical)
r   rv   rZ   r   r@   r_   result1	expected1r   	expected2r)   r)   r/   test_table_empty_str  s   z/TestConvertStringLikeTypes.test_table_empty_strc                 C   s   g d}t d|i}tdt }t|g}tjj||d}t d|i}t dt |i}|j	dgd}t
j||dd |j	g d}	t
j|	|dd |j	dd}
t
j|
|dd |j	t d}t
j||dd d S )Nr  r  rJ  
categoriesTr+  )r  )r6   r7   rK   r   rl  r@   rM   rN   r  rO   rX   rY   tuple)r   rv   rZ   r   r@   r_   expected_strexpected_catr  r   result3result4r)   r)   r/   test_selective_categoricals&  s   z6TestConvertStringLikeTypes.test_selective_categoricalsc                 C   s8   t jg t  d}t jj|gdgd}|jdgd d S )NrI  ra   rn  r   r  )rK   rg   r   rM   r   rO   )r   rg   r_   r)   r)   r/   &test_to_pandas_categorical_zero_length8  s   zATestConvertStringLikeTypes.test_to_pandas_categorical_zero_lengthc                 C   sJ   t g d }t jj|gdgd}|jdgd}| |s#J d S )N)r   r   r   r5  ra   r  r  )rK   rg   dictionary_encoderM   r   rO   rP   )r   rg   r_   r`   r)   r)   r/   ,test_to_pandas_categories_already_dictionary?  s   zGTestConvertStringLikeTypes.test_to_pandas_categories_already_dictionarystring_typec           	      C   s  g d}t d|i}td|}t|g}tjj||d}|jdd}t dt |i}t	j
||dd ttj |jddd W d    n1 sOw   Y  |d jdd}t jt |dd}t	|| ttj |d jddd W d    d S 1 sw   Y  d S )	N)r   r   r   r   r   r  rJ  Tr  r+  r  zero_copy_onlyre   )r6   r7   rK   r   r@   rM   rN   rO   r  rX   rY   r   r  r  rh   ri   	r   r"  rv   rZ   r   r@   r_   r`   r[   r)   r)   r/   (test_table_str_to_categorical_without_naF  s*   
"zCTestConvertStringLikeTypes.test_table_str_to_categorical_without_nac           	      C   s"  d ddt jg}td|i}td|}t|g}tjj||d}|j	dd}tdt
|i}tj||dd ttj |j	ddd W d    n1 sRw   Y  |d j	dd}tjt
|dd	}t|| ttj |d j	ddd W d    d S 1 sw   Y  d S )
Nr   r   r  rJ  Tr  r+  r#  re   )r8   rS   r6   r7   rK   r   r@   rM   rN   rO   r  rX   rY   r   r  r  rh   ri   r%  r)   r)   r/   %test_table_str_to_categorical_with_naa  s*   
"z@TestConvertStringLikeTypes.test_table_str_to_categorical_with_nac                 C   s2   t tjdgtdt  }|jt  ksJ d S )Nr  r   )rK   rg   r8   rE   rl  rd   )r   	convertedr)   r)   r/   test_array_of_bytes_to_strings}  s   z9TestConvertStringLikeTypes.test_array_of_bytes_to_stringsc                 C   sT   t jtjjdd ttjdgtdt  W d    d S 1 s#w   Y  d S )Nzwas not a utf8 stringr  s   r   )	r   r  rK   libr  rg   r8   rE   rl  r   r)   r)   r/   'test_array_of_bytes_to_strings_bad_data  s   "zBTestConvertStringLikeTypes.test_array_of_bytes_to_strings_bad_datac                 C   sL  t jg ddd}tj|tdd}tjt|tdd}||s&J t g d}tj|td|d}tjg dtdd}||sKJ tjtjj	d	d
 t jg ddd}tj|tdd W d    n1 srw   Y  tjtjj	dd
 t jg ddd}tj|tdd W d    d S 1 sw   Y  d S )N)r  r     bazz|S3r   r   rI  FTFrE  )r  Nr-  z)Got bytestring of length 3 \(expected 4\)r  r   z*Got bytestring of length 12 \(expected 3\)z|U3)
r8   rg   rK   r  r  rP   r   r  r*  r  )r   rm   r(  r[   ro   r)   r)   r/   ,test_numpy_string_array_to_fixed_size_binary  s*   
"zGTestConvertStringLikeTypes.test_numpy_string_array_to_fixed_size_binaryN) r  r  r  r  r  r   r  large_memoryr  r  r  r  r  r  r   r  r	  r  r  r  r  r  r!  rK   rl  r  r  r&  r'  r)  r,  r/  r)   r)   r)   r/   r    s>    



r  c                   @   s  e Zd ZdZededgZededgZededgZe	j
de	jeed	d
dde	jeedddde	jeeddddgdd Ze	j
de	jedde	jedde	jeddgdd Zdd Zdd Zdd Zdd Zd d! Zd"S )#TestConvertDecimalTypesz,
    Conversion test for decimal types.
    z	-1234.123z1234.439z-129934.123331z129534.123731rP  z-314292388910493.12343437128)rv   rX  r   r   	decimal32idr  r   	decimal64rQ  rR  
decimal128c                 C   sR   t d|i}tjj|dd}td|}tj|g|jjd}|j|s'J d S )NrO  Fr   re  )	r6   r7   rK   rM   rN   r   r@   r  rP   )r   rv   rX  r[   r_   r   r\   r)   r)   r/   test_decimal_from_pandas  s
   z0TestConvertDecimalTypes.test_decimal_from_pandasrv   c                 C   s2   t d|i}tj|}| }t|| d S )NrO  )r6   r7   rK   rM   rN   rO   rX   rY   )r   rv   r[   r(  rZ   r)   r)   r/   test_decimal_to_pandas  s   z.TestConvertDecimalTypes.test_decimal_to_pandasc                 C   s   t dg}tdd}ttj tj||d W d    n1 s$w   Y  t dg}tdd}ttj tj||d W d    d S 1 sNw   Y  d S )Nz1.234r  r2   rI  z1.2345r   )r   r   rK   r6  r   r  r  rg   )r   data1type1data2type2r)   r)   r/   "test_decimal_fails_with_truncation  s   "z:TestConvertDecimalTypes.test_decimal_fails_with_truncationc                 C   s   t dt dg}t|}t|}| |ksJ |jtddks'J tj|tddd}t dt dg}| |ksDJ d S )	Nz0.01z0.001r   r  r   rI  z0.01000z0.00100)	r   r   r6   rh   rK   rg   r  rd   r6  )r   r   seriesrg   r[   r)   r)   r/   &test_decimal_with_different_precisions  s   

z>TestConvertDecimalTypes.test_decimal_with_different_precisionsc                 C   sP   t tdd g}t|tddd t d gd }t|tddd d S )N3.14r  r   r  r2   r6   rh   r   r   rn   rK   r6  r   r>  r)   r)   r/   $test_decimal_with_None_explicit_type  s   z<TestConvertDecimalTypes.test_decimal_with_None_explicit_typec                 C   s,   t tdd g}t|tddd d S )Nr@  r   r2   r  rA  rB  r)   r)   r/   !test_decimal_with_None_infer_type  s   z9TestConvertDecimalTypes.test_decimal_with_None_infer_typec                 C   s0   ddidt did}tj|}t| d S )Nr   r   z0.0r  )r   r   r6   r7   	from_dictrb   )r   tmpdirr   rZ   r)   r)   r/   test_strided_objects  s
   z,TestConvertDecimalTypes.test_strided_objectsN)r  r  r  r  r   r   r2  r5  r6  r   r  r  paramrK   r7  r8  r=  r?  rC  rD  rG  r)   r)   r)   r/   r1    s8    
	
r1  c                
   @   s&  e Zd Z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 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+ Zejd,ejd-d.gd/gd0gd0d/gd0gfejd1d2gd3gd0gd0d3gd0gfejd0d0gd0gd0gd0d0gd0gfgd4d5 Z d6d7 Z!d8d9 Z"d:d; Z#d<d= Z$d>d? Z%ejj&d@dA Z'dBdC Z(dDdE Z)dFdG Z*dHdI Z+dJdK Z,dLdM Z-ejdNej.ej/gdOdP Z0ejdNej.ej/gdQdR Z1ejdNej.ej/gdSdT Z2ejdNej.ej/gdUdV Z3ejdNej.ej/gdWdX Z4d0S )YTestConvertListTypesz,
    Conversion tests for list<> types.
    c                 C   t   t  \}}t|||d tjj||dd}||jj}|j|s$J |j	D ]}|
|}t|| |jd q'd S Nr@   r\   Fr  rI  )r   rb   rK   rM   rN   with_metadatar@   r  rP   rQ   r   rx   rd   r   rZ   r@   r_   r\   r  r   r)   r)   r/   test_column_of_arrays     


z*TestConvertListTypes.test_column_of_arraysc                 C   s   d}t jt jd|dt jd|dd t jd|dgtd}tt }tj||d}|d  tt	dks8J |d  tt	dksFJ |d  d u sPJ |d	  dgks[J d S )
Nr  r  r   r   r   rI  r   r2   r   )
r8   rg   r9   rE   rK   rK  r   r  r  r<   )r   r   rm   rk   r  r)   r)   r/   test_column_of_arrays_to_py  s   z0TestConvertListTypes.test_column_of_arrays_to_pyc                 C   s   t jddgdggt t  d}t jj|gdgd}| }tdddgdggi}t	
|| |d  }t	jt||d dd d S )NTFrI  r   r   r   rp   )rK   rg   rK  r  rM   r   rO   r6   r7   rX   rY   ri   rh   )r   rg   r_   rZ   r  rj   r)   r)   r/   test_column_of_boolean_list   s   "z0TestConvertListTypes.test_column_of_boolean_listc                 C   s   t jtdtdgtdggt t ddd}t jj|gdgd}| }t	
dtdtdgtdggi}t|| d S )	Nr   r)  z3.3r2   r   rI  r   r   )rK   rg   r   r   rK  r6  rM   r   rO   r6   r7   rX   rY   )r   rg   r_   rZ   r  r)   r)   r/   test_column_of_decimal_list,  s   

z0TestConvertListTypes.test_column_of_decimal_listc              	   C   s   t tjtjtjgtd}tt t	t t
tddgfD ]6}tj||d}tjd d g|d}||s>J tt tj|j|d W d    n1 sVw   Y  q%d S )Nr   f0r   rI  )r6   rh   r8   rg   rS   rE   rK   rK  r   
large_liststructr   rP   r   r  	TypeErrorrv   )r   rj   r  r`   r[   r)   r)   r/   +test_nested_types_from_ndarray_null_entries8  s   z@TestConvertListTypes.test_nested_types_from_ndarray_null_entriesc                 C   rJ  rK  )r   rb   rK   rM   rN   rM  r@   r  rP   rQ   r   rx   rd   rN  r)   r)   r/   test_column_of_listsF  rP  z)TestConvertListTypes.test_column_of_listsc                 C   sT   g g dg dg dgg}t dd |D }t|}t | }t|| d S )NrH  )r   r   r   r   r2   c                 S   s   g | ]	}t j|td qS )r   )r8   rg   float)r-   rj   r)   r)   r/   r0   V      zITestConvertListTypes.test_column_of_lists_first_empty.<locals>.<listcomp>)r6   rh   rK   rg   rO   rX   ri   )r   	num_listsr>  rm   r`   r)   r)   r/    test_column_of_lists_first_emptyS  s
   
z5TestConvertListTypes.test_column_of_lists_first_emptyc                 C   s   t dtjddgd ddgddgddgd	d
ggtdi}ttdtt	 g}tj
j|d d |d}tj
j|dd  |d}t||g}| }t|| d S )Nlistsr   r2   r   r   r   r   r   r   	   r   rJ  )r6   r7   r8   rg   rE   rK   r@   r   rK  r   rM   rN   concat_tablesrO   rX   rY   )r   rZ   r@   r  r  r_   r`   r)   r)   r/   test_column_of_lists_chunked[  s(   z1TestConvertListTypes.test_column_of_lists_chunkedc              	   C   s^   t dtjg tdi}ttdtt	 g}tj
j||d}| }t|| d S )Nr^  r   rJ  )r6   r7   r8   rg   rE   rK   r@   r   rK  r   rM   rN   rO   rX   rY   )r   rZ   r@   r_   r`   r)   r)   r/   "test_empty_column_of_lists_chunkedt  s   z7TestConvertListTypes.test_empty_column_of_lists_chunkedc           
   	   C   s   ddgddgddgddgd	d
gddgddgddgg}ddgddgg}t |}t |}t jj|gdgd}t jj|gdgd}t ||g}| }td|| i}	t	||	 d S )Nr   r   r2   r   r   r   r   r   r  rR  r                 r   r_        r   r   )
rK   rg   rM   r   r`  rO   r6   r7   rX   rY   )
r   r9  r;  r  r  r  r  concatenatedr`   r[   r)   r)   r/   test_column_of_lists_chunked2  s   

z2TestConvertListTypes.test_column_of_lists_chunked2c                 C   sP   t  \}}tj|gd dd}|d jd d d }|jd dks"J t| d S )Nr   T)ignore_indexr   r   r   r   )r   r6   concatrv   stridesrx   )r   rZ   r@   rm   r)   r)   r/   test_column_of_lists_strided  s
   
z1TestConvertListTypes.test_column_of_lists_stridedc                 C   s   t jd d gd gtd}t|}tt|}||sJ |jtt ks*J t jd d d d gt jd d gtdgtd}t|}td d d d gd d gg}||sWJ d S )Nr   )	r8   rg   rE   rK   r  rP   rd   rK  r  )r   r   rm   r[   r;  r)   r)   r/   test_nested_lists_all_none  s   

z/TestConvertListTypes.test_nested_lists_all_nonec                 C   sR   t g g g g}t|}tt|}||sJ |jtt ks'J d S N)	r6   rh   rK   rg   r  rP   rd   rK  r  r   r   rm   r[   r)   r)   r/   test_nested_lists_all_empty  
   
z0TestConvertListTypes.test_nested_lists_all_emptyc                 C   sR   t g dgg}t|}tt|}||sJ |jtt ks'J d S )Nr   )	r6   rh   rK   rg   r  rP   rd   rK  rl  rr  r)   r)   r/   test_nested_list_first_empty  rt  z1TestConvertListTypes.test_nested_list_first_emptyc                 C   s   t tjg dddd g}t|}t|j}tjg dd gtt d}||s0J ||s7J t tjg dddd g}t|}tjg dd gtt	 d}||saJ d S )Nr   r  r   rI  r  )
r6   rh   r8   rg   rK   rv   rK  r   rP   r   )r   r   r`   r   r[   data3r  	expected3r)   r)   r/   test_nested_smaller_ints  s   
 
 z-TestConvertListTypes.test_nested_smaller_intsc                 C   s   t dtjdgddggfdddgddggfdd dgd	d
ggfdd dgd	d
ggd gfg}t|}ttdtt	 tdtt	 tdtt
 tdttt
 g}t||d d S )Nnan_intsr   r2   r   r  r   strsr   r   dnested_strsr  )r   r8   rS   r6   r7   rK   r@   r   rK  r   rl  rb   r   r   rZ   r\   r)   r)   r/   test_infer_lists  s   
z%TestConvertListTypes.test_infer_listsc           
      C   s   t jt  dd}t t  }g dd g dg dg}t j||d}t j||d}| }| }t||D ]\}}	|d u rE|	d u sEJ t||	 q7d S )Nr   )	list_size)r   r   r2   r   r   )r   r_  r  rR  rI  )rK   rK  r   rg   rO   r  rz   r{   )
r   fixed_tyvariable_tyr   	fixed_arrvariable_arrr`   r[   leftrightr)   r)   r/   test_fixed_size_list  s   z)TestConvertListTypes.test_fixed_size_listc              	   C   sj   t dtjddgtjdtjddgtjdgfg}t|}ttdt	t g}t
||d d S )Nr  r   r   r   r2   r   r  )r   r8   rg   r   r6   r7   rK   r@   r   rK  rb   r}  r)   r)   r/   test_infer_numpy_array  s   
z+TestConvertListTypes.test_infer_numpy_arrayc                 C   s   t g dt  }t ddgddgddggt t  }t j||gdd	g}t jg d
|}t	dddgdgdddgddddgdgg}t	|
 }t  tddt t|| W d    d S 1 sow   Y  d S )Nr   r   r   r   r{  eff1r  )r   r   r   r   )r  r  r2   r   rF   rG   )rK   rg   r   rK  rl  StructArrayr   	ListArrayr6   rh   rO   rT   rU   rV   rW   rX   ri   )r   r  r  structsr   r[   r>  r)   r)   r/   test_to_list_of_structs_pandas  s&   
"z3TestConvertListTypes.test_to_list_of_structs_pandasc                 C   s   t tjt dkrt tjt dk rtd dddgfddd	gfggd
g fddd dgfgdddgfggg}t|tt	t
 tt
 }| }t|}t  tddt t|| W d    d S 1 spw   Y  d S )N1.25.0.dev0r,  $Regression in pandas with numpy 1.25r   r   r   r5  r   r{  rB  r  Nquuxr  quzr  grF   rG   )r   r8   r/  r6   r   r0  rK   rg   rK  map_utf8rO   rh   rT   rU   rV   rW   rX   ri   )r   r   rm   r>  r[   r)   r)   r/   test_to_list_of_maps_pandas	  s   
"(

"z0TestConvertListTypes.test_to_list_of_maps_pandasc           	   
   C   sV  t tjt dkrt tjt dk rtd tg ddd}tdgdgdd	gd
dgg dddggt	t
 dd}tjg d||}tjg d|}| }tddd	gfdd
dgfggdg fdggg}|dd }tdg fdggg}t  tddt t|| t|| W d   dS 1 sw   Y  dS )zL
        A slightly more rigorous test for chunk/slice combinations
        r  r,  r  )rF   r   r5  rB  r  r  rF   r   r   rF   r   r   r   r{  Nr  r2   r   r2   r   r   r   r5  rB  r  rG   )r   r8   r/  r6   r   r0  rK   rg   slicerK  rl  MapArrayr   r  rO   rh   rT   rU   rV   rW   rX   ri   )	r   rm  itemsmaprm   r>  r[   series_slicedexpected_slicedr)   r)   r/   "test_to_list_of_maps_pandas_sliced'	  s<   
 
"z7TestConvertListTypes.test_to_list_of_maps_pandas_slicedzt,data,expectedr   r2   r   Naaabbr   c                 C   sX   t g d}t|}tjj||t| d}tjj|t| d|s*J d S )Nr  rF  rI  )	r8   rg   r6   rh   rK   rB  rN   rK  rP   )r   r   r   r[   r  rj   r`   r)   r)   r/   ,test_array_from_pandas_typed_array_with_maskN	  s   


zATestConvertListTypes.test_array_from_pandas_typed_array_with_maskc                 C   sV   t jdtd}|g  tt g d|d}tj	|}|
 }t|| d S )N)r   r   )r   r)  3r  )r8   emptyrE   fillr6   r7   rg   rK   rM   rN   rO   rX   rY   )r   empty_list_arrayrZ   rp  r`   r)   r)   r/   test_empty_list_roundtriph	  s   
z.TestConvertListTypes.test_empty_list_roundtripc                 C   s`   t  \}}|D ]&}||j j}tjt||jd}t|}|j|jks&J ||s-J qd S )NrI  )r   rf   rv   rK   rg   r  rd   rP   )r   rZ   r@   r   rm   r[   r`   r)   r)   r/   test_array_from_nested_arrayst	  s   

z2TestConvertListTypes.test_array_from_nested_arraysc                 C   s   t jg ddggd gt t t  d }t + tddt tddt	 t
j|tjg ddggd gtddd	 W d    d S 1 sJw   Y  d S )
Nr   r   rI  rF   z&Creating an ndarray from ragged nestedrG   r   Frp   )rK   rg   rU  r   rO   rT   rU   rV   _np_VisibleDeprecationWarningrW   rX   ri   r6   rh   rE   r  r)   r)   r/   test_nested_large_list}	  s$   
"z+TestConvertListTypes.test_nested_large_listc              	   C   s   t jt jfD ]N}t jddgd dgg g|t  d }tj|t	ddgd dgg gdd	 t jddgd dgg g|t 
 d }tj|t	ddgd dgg gdd	 qd S )
Nr  r  ccrI  s   aas   bbs   ccFrp   )rK   rK  rU  rg   r  rO   rX   ri   r6   rh   r  )r   list_type_factoryrj   r)   r)   r/   test_large_binary_list	  s(   

z+TestConvertListTypes.test_large_binary_listc                 C   sl   t g d }t jg d|}t| }t	|
 | |g d}d |d< t	|
 | d S )N)r   r5  Nr   )r   r   r   r   r   )r   r   Nr   r2   )rK   rg   r   r  r   r6   rh   r  rX   ri   rO   take)r   childrm   r[   r)   r)   r/   test_list_of_dictionary	  s   z,TestConvertListTypes.test_list_of_dictionaryc                 C   s   d}t jttj|dfddt|d}tj	|}|j
dd |d }|jd	ks-J t|dd
ks8J t|ddksCJ d S )Ni    i   r   r   r  Tr  r   r2   i r   )r6   r7   rE  r  r8   zerosr<   rK   rM   rN   r  r  r   r  )r   nrZ   r_   column_ar)   r)   r/   #test_auto_chunking_on_list_overflow	  s   z8TestConvertListTypes.test_auto_chunking_on_list_overflowc                 C   sV   ddgdgg ddgg}t d|i}tdtt t fg}t||d d S )Nr(  r      br2      cr      dr      er   )   fr      gr   r  rJ  )r6   r7   rK   r@   r  r  r   rb   )r   r   rZ   r@   r)   r)   r/   test_map_array_roundtrip	  s    z-TestConvertListTypes.test_map_array_roundtripc                 C   s   ddgdgg ddgg}dd |D }t j|t t  t  d}t j|t t  t  d}t ||g}t|| }| }t	j
||d	d
 d S )Nr  r  r  r  r  c                 S   s   g | ]	}d d |D qS )c                 S   s   g | ]
\}}||d  fqS )r2   r)   r-   kr  r)   r)   r/   r0   	  s    zJTestConvertListTypes.test_map_array_chunked.<locals>.<listcomp>.<listcomp>r)   r-   rowr)   r)   r/   r0   	  r[  z?TestConvertListTypes.test_map_array_chunked.<locals>.<listcomp>rI  Frp   )rK   rg   r  r  r   rA  r6   rh   rO   rX   ri   )r   r9  r;  arr1rC  rm   r[   actualr)   r)   r/   test_map_array_chunked	  s   z+TestConvertListTypes.test_map_array_chunkedc                 C   sh   ddgd g ddgg}dd |D }t |}tj|tt t d}| }tj	||dd	 d S )
Nr  r  )r  r  )r  Nr  c                 S   s&   g | ]}|d urdd |D nd qS )Nc                 S   s(   g | ]\}}||d urt |nd fqS rq  )rZ  r  r)   r)   r/   r0   	  s   ( zMTestConvertListTypes.test_map_array_with_nulls.<locals>.<listcomp>.<listcomp>r)   r  r)   r)   r/   r0   	  s
    
zBTestConvertListTypes.test_map_array_with_nulls.<locals>.<listcomp>rI  Frp   )
r6   rh   rK   rg   r  r  r   rO   rX   ri   )r   r   r[   rm   r  r)   r)   r/   test_map_array_with_nulls	  s   
z.TestConvertListTypes.test_map_array_with_nullsc                 C   sx   t g d}t g d }t ttt|}t j|||}t	g dddgg}|
 }tj||dd d S )Nr   r   r   )r   r   r   r   r{  ))r   r   )r   r   )r2   r   )r   r   )r   r{  Frp   )rK   rg   r   r  r<   r   r  r   r6   rh   rO   rX   ri   )r   offsetsr  rm  rm   r[   r  r)   r)   r/   !test_map_array_dictionary_encoded	  s   z6TestConvertListTypes.test_map_array_dictionary_encodedc           	   	   C   sd  t ddgg dd dd gddgg}t |dd|ddg}| }tjd	d
gg dd dtjggdd}t||D ]\}}|d u rK||ksJJ q<t	|| q<td	d
ddddtjgg}t	|d j
| |dd }tjg dd dtjggdd}t||D ]\}}|d u r||ksJ qt	|| qtddddtjgg}t	|d j
| d S )Nr   r2   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   rE   r   r   r   r   )rK   rg   rA  r  to_numpyr8   rS   r  rz   r{   base)	r   rm   chunked_arrr  r[   r  r  expected_basenp_arr_slicedr)   r)   r/   test_list_no_duplicate_base	  s,   $z0TestConvertListTypes.test_list_no_duplicate_basec                 C   s   t jjt g dt g dt g dd}|jdd}tjddgd d	tjggd
d}t||D ]\}}|d u rA||ks@J q2t	|| q2d S )Nr   r2   r   r   )r   r2   c   r  r   Nr.  )r  rv   ro   Fr$  r   r   r   rE   r   )
rK   r  r   rg   r  r8   rS   r  rz   r{   )r   rm   r  r[   r  r  r)   r)   r/   test_list_values_behind_null
  s   z1TestConvertListTypes.test_list_values_behind_nullr^   c                 C   b   |j tg dtg dtg dd}| }tddgddgd	d
gg}t|| d S )Nr  r2   r2   r2   r   r2   r   r   r   r   r  sizesrv   r   r2   r   r   r   r   r   rK   rg   rO   r6   rh   rX   ri   r   r^   rm   r  r[   r)   r)   r/   .test_list_view_to_pandas_with_in_order_offsets
     zCTestConvertListTypes.test_list_view_to_pandas_with_in_order_offsetsc                 C   r  )N)r2   r   r   r  r  r  r   r   r   r   r   r2   r  r  r)   r)   r/   2test_list_view_to_pandas_with_out_of_order_offsets(
  r  zGTestConvertListTypes.test_list_view_to_pandas_with_out_of_order_offsetsc                 C   sb   |j tg dtg dtg dd}| }tg dg dg dg}t|| d S )Nr   )r   r   r   r  r  r   )r2   r   r   r   )r   r   r   r   r  r  r)   r)   r/   1test_list_view_to_pandas_with_overlapping_offsets5
  r  zFTestConvertListTypes.test_list_view_to_pandas_with_overlapping_offsetsc                 C   sh   |j tg dtg dtdd gtg dd}| }tdtjgg d g}t	|| d S )N)r   r2   r2   )r2   r   r   r   r  r  r  rv   ro   )
r   rK   rg   rO   r6   rh   r8   rS   rX   ri   r  r)   r)   r/   )test_list_view_to_pandas_with_null_valuesB
  s   z>TestConvertListTypes.test_list_view_to_pandas_with_null_valuesc           	   	   C   s   t   t }|jtg dtg dtg dd}|jtg dtg dtg dtg dd	}t||g}| }t	d
dgdd
gddgg dddt
jgd g}t|| ~~~~t }||ksrJ d S )N)r2   r   r   r  r   r  )r   r   r   )r   r   r   )r   r   r   Nr  r  r   r   r2   r   )r   r   r   r   r   )gccollectrK   total_allocated_bytesr   rg   rA  rO   r6   rh   r8   rS   rX   ri   )	r   r^   bytes_startr  rC  rm   r  r[   	bytes_endr)   r)   r/   (test_list_view_to_pandas_multiple_chunksP
  s.   .z=TestConvertListTypes.test_list_view_to_pandas_multiple_chunks)5r  r  r  r  rO  rQ  rR  rS  rX  rY  r]  ra  rb  rk  ro  rp  rs  ru  rx  r~  r  r  r  r  r  r   r  r  rK   r   rl  r  r  r  r  r  r  r  r0  r  r  r  r  r  r  r  ListViewArrayLargeListViewArrayr  r  r  r  r  r)   r)   r)   r/   rI    sz    	'



		




rI  c                   @   sh   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	j
je	j
jdd Zdd Zdd Zdd ZdS )TestConvertStructTypesz,
    Conversion tests for struct types.
    c              	   C   sf   t dddddddgi}tdtdt fdt fgfg}t||d	 t|||d
 d S )NrM  r   r2   r  r   r   r   r   r  rL  )r6   r7   rK   r@   rV  r   rb   )r   rZ   r\   r)   r)   r/   test_pandas_roundtrips
  s    
z,TestConvertStructTypes.test_pandas_roundtripc                 C   s   t jg dt  d}t jg dt  d}t jg dt  d}t j|||gg d}td ddddd d	dd
dd dg}t|	 }t
|| d S )N)Nr2   r   rI  )r   Nr   )TFN)r  rz  r  r   Tr2   Fr   r   )rK   rg   r   rl  r  r  r   r6   rh   rO   rX   ri   )r   r  rz  r  rm   r[   r>  r)   r)   r/   test_to_pandas
  s   


z%TestConvertStructTypes.test_to_pandasc           
      C   s   t   t }tjdgt d}tjdgt d}tj|gdg}tj|gdg}t||g}t	
ddiddig}t	
| }t|| ~~~~~~t }	|	|ks]J d S )Nr   rI  r2   r  )r  r  rK   r  rg   r   r  r   rA  r6   rh   rO   rX   ri   )
r   r  ints1ints2r  rC  rm   r[   r>  r  r)   r)   r/   test_to_pandas_multiple_chunks
  s*   z5TestConvertStructTypes.test_to_pandas_multiple_chunksc                 C   sX  t dt jfdt jfg}ttdt tdt g}t jg |d}tj||d}| g ks6J t jddg|d}tj||d}| dd	d
ddd
gksVJ tj|t dd	g|d}| dd	d
d gkspJ t g }tg }t jg |d}tj||d}| g ksJ t jddg|d}tj||d}| i i gksJ d S )Nr.   )y_titler  r  r   rI  )r  T)+   Fr  T)r.   r  r  FrF  r)   )	r8   r   r   r  rK   rV  r   rg   r  r   r|  r  r   rm   r)   r)   r/   test_from_numpy
  s0   


z&TestConvertStructTypes.test_from_numpyc                 C   s$  t dt dt jfdt jfgfdt jfdt jfg}|jtjdkr$dndks)J t	
t	dt	
t	dt	 t	dt	 gt	dt	 t	dt	 g}t jg |d	}t	j||d
}| g kshJ t jddg|d	}t	j||d
}| ddddddddddddgksJ d S )Nr.   xxyyr  zl        r  r   r   rI  ))r   Tr2   r   ))r   Fr   r5  r   T)r  r  r2   r   )r.   r  r  r   Fr   r5  )r8   r   r   r  r   object_itemsizesysmaxsizerK   rV  r   rl  rg   r  r  r)   r)   r/   test_from_numpy_nested
  s6   z-TestConvertStructTypes.test_from_numpy_nestedc                    s4  d}t dt jfdg}d|j }d| }|||j  }t j||d}t j||d< ||d< t j|d |d dk < t	t
dt t
dt g}tj||d	d
}|jd	d |jdksbJ dd  d fdd	}	|	|| ~t j|dk }
tj|||
d	d}|jd	d |jdksJ |	|||
 ~d S )Nl        r.   )r  rE   i      .r   r  r[  Tr  r  r2   c                 s   s    |   D ]}|E d H  qd S rq  )
iterchunks)rm   r  r)   r)   r/   iter_chunked_array
  s   zHTestConvertStructTypes.test_from_numpy_large.<locals>.iter_chunked_arrayc           	   	      s   t | t |ks
J |d }|d }t | D ]J\}}z9| }|d ur0|| r0|d u s/J n$|| }t|rB|d d u sAJ n|d |ksJJ |d || ksTJ W q tyb   td|  w d S )Nr.   r  zFailed at index)r   	enumerater  r8   r   	Exceptionprint)	rm   r   ro   xsysirU  r{  r.   r  r)   r/   check
  s&   

z;TestConvertStructTypes.test_from_numpy_large.<locals>.check)rd   ro   rN   rq  )r8   r   r   r  r  r:   random_samplerS   rK   rV  r   r  rg   r  r  )r   target_sizer|  bsblockr  r   r  rm   r	  ro   r)   r  r/   test_from_numpy_large
  s2   

z,TestConvertStructTypes.test_from_numpy_largec                 C   s   t t dt  t dt  g}tdtjfdtjfg}tjg |d}tj	t
dd t j||d W d    n1 s@w   Y  tg }tj	tdd t j||d W d    d S 1 sdw   Y  d S )	Nr.   r  r  r   zMissing field 'y'r  rI  zExpected struct array)rK   rV  r   r   r  r8   r   rg   r   r  r  rW  )r   r  r|  r   r)   r)   r/   test_from_numpy_bad_input  s$   
"z0TestConvertStructTypes.test_from_numpy_bad_inputc                 C   s   t dddgi}t dddddddgi}td	t fd
t fg}t|d }t||d |d td|fg}t	||||d d S )Ntuples)r   r2   r   r   r   r2   r  r   r   r   r   r  )r[   r@   r\   )
r6   r7   rK   rV  r   r8   asarrayrx   r@   rb   )r   rZ   r  struct_typerm   r\   r)   r)   r/   test_from_tuples-  s   

z'TestConvertStructTypes.test_from_tuplesc                    s   ddg t g d t g d g}t jj| d}tdd |D  } fdd	|D }t|}t	|
 | |g d
}d |d< t	|
 | d S )Nr  rz  )  i  r  )r   r   Nr   c                 s   s    | ]}|  V  qd S rq  )r  )r-   r  r)   r)   r/   	<genexpr>E  s    zCTestConvertStructTypes.test_struct_of_dictionary.<locals>.<genexpr>c                    s   g | ]	}t t |qS r)   )r  r  r  r   r)   r/   r0   F  r[  zDTestConvertStructTypes.test_struct_of_dictionary.<locals>.<listcomp>)r   Nr2   r   )rK   rg   r   r  r   r  r6   rh   rX   ri   rO   r  )r   childrenrm   rows_as_tuplesrows_as_dictsr[   r)   r   r/   test_struct_of_dictionary>  s   
z0TestConvertStructTypes.test_struct_of_dictionaryN)r  r  r  r  r  r  r  r  r  r   r  slowr0  r  r  r  r  r)   r)   r)   r/   r  n
  s    7r  c                   @   sp   e Zd Z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 Zdd Zdd ZdS )TestZeroCopyConversionz@
    Tests that zero-copy conversion works with some types.
    c                 C   s*   t g djdd}t|g d d S )Nr   Tr  ry   )r   r`   r)   r)   r/   test_zero_copy_successV  s   z-TestZeroCopyConversion.test_zero_copy_successc                 C   s^   t jtddgtjdgdd}|jdd}tddg}tj	t
|t
|dd d S )	Nr   r   r   r   Tr  Frp   )rK   r   r   r8   rg   rO   r6   r  rX   ri   rh   )r   rm   r`   rv   r)   r)   r/   test_zero_copy_dictionariesZ  s   
z2TestZeroCopyConversion.test_zero_copy_dictionariesc                 C   2   t jdgdd}t|jdd}t|| d S )Nr  r%   r   Tr  r8   rg   rK   rO   rz   r{   r   rm   r`   r)   r)   r/   test_zero_copy_timestampf     z/TestZeroCopyConversion.test_zero_copy_timestampc                 C   r  )Nr   r'   r   Tr  r   r!  r)   r)   r/   test_zero_copy_durationk  r#  z.TestZeroCopyConversion.test_zero_copy_durationc                 C   s>   t tj |jdd W d    d S 1 sw   Y  d S )NTr  )r   r  rK   r  rO   r   rm   r)   r)   r/   check_zero_copy_failurep  s   "z.TestZeroCopyConversion.check_zero_copy_failurec                 C      |  tg d d S )N)r   BCr&  rK   rg   r+  r)   r)   r/   &test_zero_copy_failure_on_object_typest     z=TestZeroCopyConversion.test_zero_copy_failure_on_object_typesc                 C   r'  )N)r   r   Nr*  r+  r)   r)   r/   *test_zero_copy_failure_with_int_when_nullsw  r,  zATestZeroCopyConversion.test_zero_copy_failure_with_int_when_nullsc                 C   r'  )N)r  r   Nr*  r+  r)   r)   r/   ,test_zero_copy_failure_with_float_when_nullsz  r,  zCTestZeroCopyConversion.test_zero_copy_failure_with_float_when_nullsc                 C   s   |  tddg d S )NTFr*  r+  r)   r)   r/   $test_zero_copy_failure_on_bool_types}  r,  z;TestZeroCopyConversion.test_zero_copy_failure_on_bool_typesc                 C   s2   t jddgddggt t  d}| | d S )Nr   r2   r   r_  rI  )rK   rg   rK  r   r&  r%  r)   r)   r/   $test_zero_copy_failure_on_list_types  s   $z;TestZeroCopyConversion.test_zero_copy_failure_on_list_typesc                 C   &   t jdd gdd}| t| d S )Nr   r%   r   r8   rg   r&  rK   r%  r)   r)   r/   .test_zero_copy_failure_on_timestamp_with_nulls     zETestZeroCopyConversion.test_zero_copy_failure_on_timestamp_with_nullsc                 C   r1  )Nr   r'   r   r2  r%  r)   r)   r/   -test_zero_copy_failure_on_duration_with_nulls  r4  zDTestZeroCopyConversion.test_zero_copy_failure_on_duration_with_nullsN)r  r  r  r  r  r  r"  r$  r&  r+  r-  r.  r/  r0  r3  r5  r)   r)   r)   r/   r  Q  s    r  c                  C   s$   t  } t| dd t| ddd d S )NFrC   TrD   r]   r?   rb   rZ   r)   r)   r/   _non_threaded_conversion     r9  c                  C   s$   t  } t| dd t| ddd d S )NTrC   r6  r7  r8  r)   r)   r/   _threaded_conversion  r:  r;  c                   @   s  e Zd ZdZde fde fde fde fde	 fde
 fde fd	e fd
e fde fde fde fde fdedfdee fgZdd Zdd Zdd Zdd Zejjejjdd Zdd Zdd Zdd Zdd  Z ej!d!d"g d#iej"fd"g d#iej"fd"d$d%giej"fd"d%d"giej#fd"d$d"giej#fd"d&d"giej#fgd'd( Z$d)d* Z%d+d, Z&d-d. Z'd/d0 Z(d1d2 Z)d3d4 Z*d5d6 Z+d7d8 Z,d9d: Z-d;S )<TestConvertMiscz)
    Miscellaneous conversion tests.
    r   r   r   r   r   r   r   r   r  r   r   rE   r  c                 C   s   t dg di}t| d S )Nr   NNNr   r   r)   r)   r/   test_all_none_objects  s   z%TestConvertMisc.test_all_none_objectsc                 C   s0   t dg di}|d d|d< t| d S )Nr   r=  r   )r6   r7   r  rb   r   r)   r)   r/   test_all_none_category  s   z&TestConvertMisc.test_all_none_categoryc                 C   s4   | j D ]\}}tjg t|d}t||d qd S )Nr   rI  )
type_pairsr8   rg   r   rx   )r   	dtype_strpa_typerm   r)   r)   r/   test_empty_arrays  s   z!TestConvertMisc.test_empty_arraysc                 C   s
   t   d S rq  )r9  r+  r)   r)   r/   test_non_threaded_conversion  s   
z,TestConvertMisc.test_non_threaded_conversionc                 C   s>   t d}z|t W |  |  d S |  |  w )Nr2   )mpPoolapplyr;  closejoin)r   poolr)   r)   r/   %test_threaded_conversion_multiprocess  s   

z5TestConvertMisc.test_threaded_conversion_multiprocessc                 C   s   d}dd ddt jg}g d}dd ddt jg}t|| tj|| ddgd	t|| t|| tj|| g d
dd|| || || || || d
}t|}t| |D ]}t||  qZd S )Nr   r   r5  r  )r   r   r   r   r   r  r  r  r  )r5  r  r   Tr  r  )
cat_stringscat_strings_with_nacat_ints
cat_binarycat_strings_orderedr  r  r  strings2strings3)r8   rS   r6   r  r7   rb   rx   )r   r  r  r  v3rn  rZ   r  r)   r)   r/   test_category  s2   

zTestConvertMisc.test_categoryc                 C   sL   dd }t jg dddgdt jg dddgddg}|D ]}|| qd S )	Nc                 S   s.   t | }| }tt|t|  d S rq  )rK   rg   rO   rX   ri   r6   rh   )r  rm   r`   r)   r)   r/   _check  s   
zBTestConvertMisc.test_category_implicit_from_pandas.<locals>._checkrV  r   r   r  TrL  )r6   r  )r   rV  rn  rm   r)   r)   r/   "test_category_implicit_from_pandas  s   
z2TestConvertMisc.test_category_implicit_from_pandasc                 C   s    t dt g i}t| d S )Ncat)r6   r7   r  rb   r   r)   r)   r/   test_empty_category  s   z#TestConvertMisc.test_empty_categoryc                 C   s   t  dft  dffD ]D\}}t g t t  |}| }tjg t	j
g |dd}tt|t| t d|i}| }td|i}t|| qd S )NrE   r   r   r  r   )rK   rl  r   rA  
dictionaryr   rO   r6   r  r8   rg   rX   ri   rh   r_   r7   rY   )r   rB  r   r   r`   r[   r_   r)   r)   r/   test_category_zero_chunks  s    z)TestConvertMisc.test_category_zero_chunkszdata,error_typer   )r   r   r   r   Tr   c                 C   sN   t |}d}tj||d tj| W d    d S 1 s w   Y  d S )N/Conversion failed for column a with type objectr  )r6   r7   r   r  rK   rM   rN   )r   r   
error_typerZ   r  r)   r)   r/   test_mixed_types_fails	  s
   
"z&TestConvertMisc.test_mixed_types_failsc              	   C   sd  g }g d}d\}}t j|| d }g d}|D ]#}t  td ||| W d    n1 s9w   Y  q|t j	dd t
|| D td||  t j	g d	| td|| }d |d
< || |t jd|| dd||  |dktd d df }	|D ]}
tj|
|d}|d }t| t| t||	d qd S )NrV  )r   r   r   )
r  r  r  r  r  r  r  r  r  r  rF   c                 S      g | ]}t d qS r  r   r-   r  r)   r)   r/   r0   +  r1   z<TestConvertMisc.test_strided_data_import.<locals>.<listcomp>r   r  r   r!   r#   r   r   r   r  )r8   r:   r;   ru   rT   rU   r   r  r  rg   r<   rE   reshaper9   r    r6   r7   rb   rx   )r   casesrQ   NKrandom_numbersnumeric_dtypes	type_nameboolean_objectsstrided_maskcaserZ   ra   r)   r)   r/   test_strided_data_import  sD   


z(TestConvertMisc.test_strided_data_importc                 C   sX   dd }|t jd gd td |t jtjgd td |t jd tjd gtd d S )Nc                 S   sT   t | }t|t jsJ t|dksJ |jdksJ |D ]	}|t ju s'J qd S )Nr   )rK   rg   r   	NullArrayr   rs   r  )rj   r(  itemr)   r)   r/   _check_seriesF  s   
z5TestConvertMisc.test_all_nones.<locals>._check_seriesr   r   )r6   rh   rE   r8   rS   )r   rp  r)   r)   r/   test_all_nonesE  s   zTestConvertMisc.test_all_nonesc                 C   s~   t dg dfdtjg dtjdfdg dfg}t|}ttdt	 tdt	 g}t
|||ddg |d d S )Nr   )r   r   r2   r   r   r   )ir   r   r  r   r   )r@   r[   r\   )r   r8   rg   r   r6   r7   rK   r@   r   r   rb   )r   r   rZ   partial_schemar)   r)   r/   test_partial_schemaR  s   




z#TestConvertMisc.test_partial_schemac                 C   s   t i }t|d d t|d dd t jt g d}t||dd t||ddd t ji g dd}t|dd t|ddd d S )	Nr   T)rA   r]   r   Fr   r   )r]   rA   )r6   r7   rb   r   )r   rZ   r[   r   r)   r)   r/    test_table_batch_empty_dataframec  s   
z0TestConvertMisc.test_table_batch_empty_dataframec              	   C   s   t jg t  d}ttjg td}t|	 ttjg tjd t jg t 
 d}t|	 | t jg t t  d}t|	 | t jg t t dt  gd}t|	 | d S )NrI  r   r   )rK   rg   r   r6   rh   r8   rE   rX   ri   rO   rl  rK  rV  r   )r   rm   empty_objectsr)   r)   r/   test_convert_empty_tablep  s   
"z(TestConvertMisc.test_convert_empty_tablec                 C   s   t dt jfdt jfg}t jddg|d}|jdksJ tj|d t d}| dd	gks2J tj|d t d}| d
dgksGJ dS )zt
        ARROW-2172: converting from a Numpy array with a stride that's
        not a multiple of itemsize.
        r.   r  )r  r  )r2   r   )r   rI  r  rx  r  r2   N)r8   r   r   r   rg   rn  rK   r  )r   r   r   rm   r)   r)   r/   test_non_natural_stride|  s   z'TestConvertMisc.test_non_natural_stridec                 C   sR   t jddt jdddd }tj|t d}tjg dt d}|| d S )	Nr   r  r   r   r  r2   rI  )r   r   r   g      @)r8   r9   r   rK   rg   r   rP   )r   r  pa_arrr[   r)   r)   r/   #test_array_from_strided_numpy_array  s   z3TestConvertMisc.test_array_from_strided_numpy_arrayc                 C   s   t tdtdddd}ttdt tdt	 g}t
t tjj||d W d    n1 s:w   Y  tjj||d	d
}|djt	 ksTJ d S )Nabcr   r   r   )r   r(  r   r(  rJ  Fr  )r6   r7   r  r8   linspacerK   r@   r   rl  r   r   r  r  rM   rN   r  rd   r  r)   r)   r/   test_safe_unsafe_casts  s   z&TestConvertMisc.test_safe_unsafe_castsc                 C   s   zt dt jdtjdgi}W n ty(   t dt dtjdgi}Y nw tjt	dd t
j| W d    d S 1 sBw   Y  d S )Nr   r   r   zSparse pandas datar  )r6   r7   rn  SparseArrayr8   rS   AttributeErrorr   r  rW  rK   rM   rN   r   r)   r)   r/   test_error_sparse  s   " "z!TestConvertMisc.test_error_sparseN).r  r  r  r  rK   r   r   r   r   r   r   r   r   r  r   r   rl  r  rK  r@  r>  r?  rC  rD  r   r  	processes	threadingrK  rU  rW  rY  r[  r  r  r  r^  rm  rq  rt  ru  rw  ry  r{  r~  r  r)   r)   r)   r/   r<    sb    












	
+r<  c                  C   sL   t g d} tjj| t dd}tjg dt d}||s$J d S )N)r   r2   Nr   Trd   r  rI  )r6   rh   rK   rB  rN   r   rg   rP   )rv   rm   r[   r)   r)   r/   *test_safe_cast_from_float_with_nans_to_int  s   r  c                  C   s   t jt jddddttjddgtddg} t jddd}||	d	|	d
|d d d 	d	d
dddgd t ddgd 
djddgd tjdtjjddddt jddddt jddddd}t j|| dS )NrK  r   rv  r2   r   r5  r   r  r&  r  r   TFr   r   r=   2013Mr   r   r   )r  r   r   )r   r   r2   r   r   r   r   r   r   r_  r  r   )r6   r   r   r   repeatr8   tilerg   rE   r}  r  rh   rv   r:   r;   r  period_rangeinterval_ranger7   )r   rj  r   r)   r)   r/   _fully_loaded_dataframe_example  s$   


r  rQ   r  r   c                 C   s   t dt tj  krt dk rn ntd tj| d}tj|}tj|	 }|
|s3J |j
|js<J |jj|jjksFJ d S )Nr,  r-  r.  r   )r   r6   r/  r   r0  r7   rK   rM   rN   rO   rP   r@   r  )rQ   rZ   table1table2r)   r)   r/   !test_roundtrip_with_bytes_unicode  s   &
r  c                 C   s>   | d }| d } | d }| d } | d }| d }t ||||S )Nr  r.  )r   )valr  secondsminutesr-  r)   r)   r/   _pytime_from_micros  s   r  c                 C   s$   | j d | jd  | jd  | j S )Nl    $'- i r  )hourminuterd  r  )pytimer)   r)   r/   r    s   r  c                  C   sh   G dd d} t d|  |  gi}d}tjt|d tj| W d    d S 1 s-w   Y  d S )Nc                   @   r9  )z6test_convert_unsupported_type_error_message.<locals>.ANr:  r)   r)   r)   r/   r     r<  r   r   r\  r  )r6   r7   r   r  r  rK   rM   rN   )r   rZ   r  r)   r)   r/   +test_convert_unsupported_type_error_message  s   "r  c                 C   s,   |   }tj|| jdd}|| sJ d S )NTr  )rO   rK   rg   rd   rP   )rm   rj   r   r)   r)   r/   test_array_to_pandas_roundtrip   s   r  c                 C   s   dd t | D }|| S )Nc                 S   r_  r`  )r   rb  r)   r)   r/   r0     r1   z+_generate_dedup_example.<locals>.<listcomp>)r<   )nuniquer  unique_valuesr)   r)   r/   _generate_dedup_example  s   r  c                 C   s   t dd | D |ksJ d S )Nc                 S   s   h | ]}t |qS r)   r3  r,   r)   r)   r/   	<setcomp>  r1   z"_assert_nunique.<locals>.<setcomp>)r   )rU  r[   r)   r)   r/   _assert_nunique  s   r  c                  C   s   t  r	td d} d}t| |}tj|t dtj|t dt	||gfD ]}t
| |  t
|jddt| q*d S )NDpandas uses string dtype and not object dtype, keyword has no effectr   r  rI  Fdeduplicate_objects)r
   r   r   r0  r  rK   rg   r  r  rA  r  rO   r   )r  r  rv   rm   r)   r)   r/   .test_to_pandas_deduplicate_strings_array_types  s   
r  c                  C   s   t  r	td d} d}t| |}t|}tj|gdg}tj	
|g}||fD ]}t| d |  t|jddd t| q+d S )Nr  r   r  r   Fr  )r
   r   r   r0  r  rK   rg   rL   r   rM   r!  r  rO   r   )r  r  rv   rm   ro  rp  rU  r)   r)   r/   .test_to_pandas_deduplicate_strings_table_types$  s    

r  c                  C   sn   d} d}t tjjdd| d}d || d < t|| }t|jdd|  t|jdd	d
| d | d  d S )Nr   r  i i ʚ;r=   r2   Tr  F)r  r  r   )r  r8   r:   r  rK   rg   r  rO   )r  r  r  rm   r)   r)   r/   .test_to_pandas_deduplicate_integers_as_objects7  s   r  c            	      C   s   d} d}t t| }ddddifddddifdd	i fdd
i fg}|D ]-\}}}tj|| |d}||}t|jdi ||  t|jdddi|t| q"d S )Nr   r  r   r@  rP  Tr   rG  r  r  rI  r  Fr)   )r  r<   rK   rg   rE  r  rO   r   )	r  r  r  rd  raw_type
array_typepandas_optionsraw_arr
casted_arrr)   r)   r/   $test_to_pandas_deduplicate_date_timeH  s(   
r  c                  C   s   t g dtjddgd} ttjdt ddtjdt ddg}t	
t tjj| |d	 W d    d S 1 s>w   Y  d S )
N)333333?g @r   rl  r   r  r   Fr  r   rJ  )r6   r7   r8   rS   rK   r@   r   r   r  r   r  r  rM   rN   )rZ   r@   r)   r)   r/   /test_table_from_pandas_checks_field_nullabilityc  s   

"r  c               	   C   s   t tdg dfdg dddgd d gfdg dfg} | g d	 }tdt fdtt fdt fg}tdt fdt fdtt fg}tjj	| d
d}tjj	|d
d}|j
|shJ |j
|spJ d S )N	partitionr   r   r   r   rn  r   r   r   r  NNr   gffffff
@r  r  rn  Fr   )r6   r7   r   rK   r@   r   rK  r   rM   rN   rP   )df1r   schema1schema2r  r  r)   r)   r/   6test_table_from_pandas_keeps_column_order_of_dataframen  s(   





r  c               	   C   s   t tdg dfdg dddgd d gfdg dfg} tdt fdtt fdt fg}| | jd	k }| | jd
k g d }tj	j
||dd}tj	j
||dd}|j|s_J |j|jshJ d S )Nr  r  rn  r   r   r   r  r  r   r   r  Fr  )r6   r7   r   rK   r@   r   rK  r   r  rM   rN   rP   )rZ   r@   r  r   r  r  r)   r)   r/   3test_table_from_pandas_keeps_column_order_of_schema  s    



r  c               	   C   s   t tdg dfdg dddgd d gfdg dfg} g d	}tdtt fdt fdt fg}ddg}tdt fdt fg}tjj	| |d
d}tjj	| |d
d}|j
|sdJ |j
|slJ d S )Nr  r  rn  r   r   r   r  r  )rn  r  r  F)rQ   rA   )r6   r7   r   rK   r@   rK  r   r   rM   rN   rP   )rZ   columns1r  columns2r  r  r  r)   r)   r/   ;test_table_from_pandas_columns_argument_only_does_filtering  s(   





r  c               	   C   s   t tdg dfdg dddgd d gfdg dfg} tdt fdtt fdt fg}ddg}t	t
 tjj| ||d	 W d    d S 1 sQw   Y  d S )
Nr  r  rn  r   r   r   r  r  )r@   rQ   )r6   r7   r   rK   r@   r   rK  r   r   r  r  rM   rN   )rZ   r@   rQ   r)   r)   r/   @test_table_from_pandas_columns_and_schema_are_mutually_exclusive  s   



"r  c                  C   sz   t dg di} ttjdt ddg}tj| }|jdjdu s(J tjj| |d}|jdjdu s;J d S )Nr   r   Fr  TrJ  )	r6   r7   rK   r@   r   r   rM   rN   r  rZ   r@   r_   r)   r)   r/   /test_table_from_pandas_keeps_schema_nullability  s   r  c                  C   s  t g dg dd} tdt fdt fdt fg}tjtdd tj	j
| |d	 W d    n1 s:w   Y  d| j_t| |d
|d tjtdd tj	j
| |dd W d    n1 sfw   Y  tjtdd tj	j
| |d d W d    n1 sw   Y  t jg ddd| _t| |d |d t| |d
|d tdt fdt fdt fg}t| |d |d t| |d
|d tdt fdt fg}|  }|jd
d}t| |d ||d t| |d
||d t jjg dddgd| _tdt fdt fdt fdt fg}t| |d
|d t| |d |d tdt fdt fdt fg}|  }|jdd
d}t| |d
||d t| |d ||d d S )Nr   rY  r  r   r   r   zname 'index' present in ther  rJ  T)r@   rA   r\   z'preserve_index=False' wasFr  z=name 'index' is present in the schema, but it is a RangeIndexr   re   r\  )r@   rA   r\   r[   ))r   r   )r   r2   )r   r   level1level2r   )r6   r7   rK   r@   r   r   r   r  KeyErrorrM   rN   r   rf   rb   r  r   ru   r_  r   from_tuplesrl  )rZ   r@   r[   r)   r)   r/   +test_table_from_pandas_schema_index_columns  s   















r  c                  C   s   t g dg dd} tdt fdt fdt fg}tjj| dd}tjj| d|d	}|j	 
|s;J t jg dg ddg d
d} tj| }tjj| |d}|j	 
|scJ d S )Nr   rY  r  r   r   r   Tr   )rA   r@   r   r   rJ  )r6   r7   rK   r@   r   r   SchemarN   rM   rF  rP   )rZ   r\   r@   r_   r)   r)   r/   :test_table_from_pandas_schema_index_columns__unnamed_index4  s   


 r  c                  C   sH   t  } tj| ddi}tjj| |d}|jj	ddks"J d S )NmetaTruerJ  s   metas   True)
r6   r7   rK   r  rN   rM  rM   r@   r  getr  r)   r)   r/   2test_table_from_pandas_schema_with_custom_metadataI  s   r  c               	   C   s(  t t jddddtjdd} ttjdt	 ddtjd	tj
d
ddddg}tjj| |d}|j|s<J |jjd d }|d dksLJ |d d u sTJ |jjd d }|d d	ksdJ |d ddiksnJ | }ddi}tt jtdkrd|d	< | dd	g |}t|| d S )Nz2020-01-01T00:00:00Zr  r2   )r   r   )r   rZ  rZ  Tr  r   rj   rx  ry  FrJ  rQ   r   rf   r  r   r   r   r,  zdatetime64[s, UTC])r6   r7   r   r8   r:   r;   rK   r@   r   r   rz  rM   rN   rP   r   rO   r   r/  r  rX   rY   )rZ   r@   r_   metadata_floatmetadata_datetimer`   coerce_cols_to_typesr[   r)   r)   r/   2test_table_from_pandas_schema_field_order_metadataQ  s,   
r  c                  C   sf   t tjg dddtjg dddtjdg dg dd} tj| }|	 }t
| | d S )	Nr   r2   r   r   r   r   r   r   r   )r   r5  NrB  r  )FTFTF)rj  rk  c3c4c5)r6   r7   r8   rg   r:   r;   rK   rL   rN   rO   rX   rY   )r   r%  r`   r)   r)   r/   test_recordbatch_from_to_pandasv  s   
r  c                  C   s   t tjg dddtjg dddg dg dd} t tjd	d
gddtjddgddddgddgd}tj| }tj|}tj||g}|	 }t 
| |gjdd}t|| d S )N)r   r   r2   r   r   r   r   )TNF)r   r5  N)rj  rk  r  r  r   r   r   r   TrB  r  r\  )r6   r7   r8   rg   rK   rL   rN   rM   r!  rO   rm  r_  rX   rY   )r9  r;  batch1batch2r_   r`   r   r)   r)   r/   test_recordbatchlist_to_pandas  s$   r  c                  C   sh   t jt g dgdgd} t jt g dgdgd}| d  jdks'J |d  jdks2J d S )Nr   a0r   r   )rK   record_batchrg   r_   rO   rf   )ro  r   r)   r)   r/   *test_recordbatch_table_pass_name_to_pandas  s   r  rd   r[   r  r    r   r   r   r   r   r   r   r   r  r   r   r   r=  r   )lengthr  zlist[list[int16]]rh  r   r   r  r   r  rx  r  rj   r   c                 C   s   t | |ksJ d S rq  )r	   r  r)   r)   r/   test_logical_type  s   r  c                  C   s   d} t jtj| tjdtjjdd| dtjd}t	
  t  }| }t  || d  ks2J d }t	
  t  |ks@J t tj| tjd}t  }| }t  |ks[J d S )N'  r   r   r2   r=   r  r   )rK   rg   r8   r9   r   r:   r  r  r  r  r  r  rO   )re  rm   prior_allocationr.   r)   r)   r/   test_array_uses_memory_pool  s   r  c                  C   sd   t t tjdtjdgdg} t| dd t  }|  }|d j	j
js(J t  |ks0J d S )Nr  r   rT  Tsplit_blocks)rK   r_   rg   r8   r9   r   !_check_to_pandas_memory_unchangedr  rO   _valuesflags	writeable)r   r  r`   r)   r)   r/   test_singleton_blocks_zero_copy  s   "r  c                 K   s^   t  }| jdi |}t r%td|jjd }t  || ks#J d S t  |ks-J d S )N   r2   r)   )rK   r  rO   r
   r   r  rQ   nbytes)rU  kwargsr  r.   max_index_allocationr)   r)   r/   r    s   r  c                  C   s   t t jg dd ddt jg dd ddt jg dd ddt jg dd ddt jg dd ddt jg dd ddt jg dd ddt jg dd ddgd	d
 tdD } t| d t| dd d S )Nr  r   r  rI  r  r  r  r  c                 S      g | ]}d  |qS zf{}formatrb  r)   r)   r/   r0         z/test_to_pandas_split_blocks.<locals>.<listcomp>r   Tr  )rK   r_   rg   r<   _check_blocks_createdr  )r   r)   r)   r/   test_to_pandas_split_blocks  s   	
r  c                 C   s   t tjt dk r| jS | jS )Nz1.1.0)r   r6   r/  _data_mgrr8  r)   r)   r/   _get_mgr  s   r  c                 C   s&   | j dd}tt|j|ksJ d S )NTr  )rO   r   r  blocks)r   numberr.   r)   r)   r/   r    s   r  c                     s:   d  fdd} |  }t |ddd |  }t |dd d S )N2   c                      s(   t dd t D dd t D S )Nc                 S   s(   g | ]}t tjd ddd qS )r  Nr2   )rK   rg   r8   r:   r;   rb  r)   r)   r/   r0   "  s    zEtest_to_pandas_self_destruct.<locals>._make_table.<locals>.<listcomp>c                 S   r  r  r  rb  r)   r)   r/   r0   &  r  )rK   r_   r<   r)   rf  r)   r/   _make_table!  s
   
z1test_to_pandas_self_destruct.<locals>._make_tableT)r  self_destruct)r  )r  )r  r   r)   r  r/   test_to_pandas_self_destruct  s   r  c                  C   s   d} t tj| tjd}t |||gg d}t  }| }d|  d }t	 r.|d7 }t  || ks8J d }t
  t  |ksFJ d S )Nr  r   )rT  r  r  r   r      )rK   rg   r8   r9   r   r_   r  rO   r
   r   r  r  )re  rm   r   r  r.   new_allocationr)   r)   r/   test_table_uses_memory_pool0  s   r  c                  C   sl   t ddig} |  }|jtdksJ |d }t|}t||ks(J ~t||d ks4J d S )Nr   r   rE   r   )rK   rg   rO   r   r8   r  getrefcount)rm   r  rU  refcountr)   r)   r/   test_object_leak_in_numpy_arrayE  s   
r  c                  C   s   t ddig} t | gdg}| d }|jtdks J |d }t|}t||ks2J ~t||d ks>J d S )Nr   r   rT  rE   r   )rK   rg   r_   rO   r   r8   r  r  )rm   r_   ra   rU  r  r)   r)   r/   test_object_leak_in_dataframeQ  s   
r  c                  C   s   ddgddgg} t  }t j| d |d}t j| t |d}tj| d tjd}ttj| d tjdtj| d tjdg}|j|ksGJ |t |sQJ |t |s[J d S )	Nr  g333333@g      "@g      E@r   rI  r   r   )	rK   r   rg   rK  r8   r6   rh   rd   rP   )r   r   r  rC  r  r  r)   r)   r/   test_array_from_py_float32b  s   r  c            
      C   sR  t  } t| g}|jdjd}tjddd}tj	j
||d}|j|ks*J tj	j
|tdd}|d  |d  ksCJ |d  |d  ksQJ tjdgddtd	}tjd
gddtd}|jtd	kswJ td}tt || W d    n1 sw   Y  |j|dd}||sJ ttdtdtdg}	tjg dtdd}tt tj|	tdd W d    n1 sw   Y  tt tj	j
|	tdd W d    n1 sw   Y  tj	j
|	tddd}||sJ tj|	tddd}||s'J d S )Nz	tzlocal()r  r  ry  rI  r   i r   r  {   rj   Fr  r   r  r  )r   r   r   r  )r   nowr6   rh   r|  r}  
tz_convertrK   rz  rB  rN   rd   r  to_pydatetimerg   rE  r   r  r  rP   r  )
r  rj   s_nyc
us_with_tzrm   rC  r[   targetr`   r>  r)   r)   r/   test_cast_timestamp_unitw  s<   
"r  c                  C   sf   t j } |  }tj|gtjdddd}tj||gddg}|	 }t|}|
|s1J d S )Nr  r  ry  rI  r  stop)r6   r  r  r  rK   rg   rz  r  r   rO   rP   )tsts_dtrm   rV  r`   r   r)   r)   r/   (test_nested_with_timestamp_tz_round_trip  s   

r  c            
      C   s  t j } |  }dD ]3}|dv rdd }ndd }tj| gt|d}tj| gtj|ddd}tj||gd	d
g}tj||gd	d
g}|	 }t
|d d	 tsXJ |d d	 jd u scJ t
|d d
 tsnJ |d d
 jd u syJ |	 }t
|d d	 tsJ |d d	 jd usJ |d d	 tj}	||	jd d||ksJ t
|d d
 tsJ |d d
 jd usJ td|i	 }t
|d d d	 tsJ |d d d	 jd u sJ t
|d d d
 tsJ |d d d
 jd u sJ td|i	 }t
|d d d	 tsJ |d d d	 jd us#J t
|d d d
 ts1J |d d d
 jd us?J qd S )Nr  )rj   r  c                 S   s   | j ddS )Nr   r  r  r.   r)   r)   r/   truncate  s    z/test_nested_with_timestamp_tz.<locals>.truncatec                 S   s   | S rq  r)   r  r)   r)   r/   r    s    rI  r  ry  r  r  r   r#  r   )r6   r  r  r  rK   rg   rz  r  r   rO   r   r   r$  
astimezoner   r&  rR   r_   )
r	  r
  r  r  rm   rC  arr3arr4r`   utc_dtr)   r)   r/   test_nested_with_timestamp_tz  sB   


r  c               	   C   sH  t g dd} t jg dtd}t g d}dD ]}| |}tj||}tjj|||d}|d d	krQt	t
 |  W d    n1 sKw   Y  q| }tjj||d
}tt|t| | }	|	  dkswJ |}
|d d	kr||dd  }
tjjt |d|
|d
}tt|	t| qd S )Nr   r2   rA  r   )FFTFFF)r   r   r   r   r   r   r   r   r  r   ur  r   r  )r8   r  rg   rE   r  rK   r   r   r   r  rW  rO   r6   r  
from_codesrX   ri   rh   rr   rt   where)src_indicesrZ  ro   
index_typer#  d1d2pandas1
ex_pandas1pandas2signed_indices
ex_pandas2r)   r)   r/   test_dictionary_with_pandas  s6   

r  c                    sd   |d ur|t jjdt|| d }nt j fddt| D td}|dkr0d |t j| |k < |S )Nr   r=   c                    s   g | ]}t  qS r)   ra  rb  	item_sizer)   r/   r0     r1   z"random_strings.<locals>.<listcomp>r   )r8   r:   r  r   rg   r<   rE   rand)r  r!  pct_nullrZ  r`   r)   r   r/   random_strings  s   r$  c                  C   s  t jd tjtdddd} tjtdddd}tjtdddd}tjt jjd	t	| d
dd| }tjt jjd	t	|d
dd|}tjt jjd	t	|d
dd|}tjt jjd	t	|d
ddt j
d
dk d}tj||}t| ||g}t||||g}	t|d|d|d|dg}
|	 }|
 }|jj| k sJ |d}d || < t|| d S )Ni90  r       rl  rI  rf  r  r  r   r  r  r  rZ  r  r+   )r8   r:   r  rK   rg   r$  r   r   r  r   r"  concat_arraysrA  rE  rO   rX  r  r  r  rr   rX   ri   )r  r  d3r  r  r  r  r  expected_dictr   a_denser`   result_denseexpected_denser)   r)   r/   "test_variable_dictionary_to_pandas  sB   
r,  c                  C   sf   t g d } t jg d| }| }ttjg dt	dtjddgt	dg}t
|| d S )N)r   r   r   r   r   r  )r   r   r   r   r   )rK   rg   r   r  r   rO   r6   rh   r8   rE   rX   ri   )r  rm   r`   r[   r)   r)   r/   (test_dictionary_encoded_nested_to_pandasD  s   r-  c                  C   s   t g d} tt t rt nt }t	| }|
 g dks(J |j|s0J t g d} t	| }|
 g dksFJ |j|sNJ tj	| t	g dd}|
 g dksdJ |j|slJ d S )N)r   r   r   )r   r   Nr   )FFFTr  )r   r   NN)r6   r  rK   rZ  r   r
   r   r  rl  rg   r  rd   rP   r8   )rX  rX  r`   r)   r)   r/   test_dictionary_from_pandasQ  s   

r.  c                  C   sx  t jtjddgddtjddgtd} tjt t	 d}tj| |d}|j
|s/J | ddgks9J tjt t d}ttj tj| |d}W d    n1 s\w   Y  tjt t	 d	d
}d}tjt|d tj| |d}W d    n1 sw   Y  | ddgksJ tjt t	 d}tj| |tdd	gd}|j
|sJ | dd gksJ t g } tjt t	 d}tj| |d}|j
|sJ | g ksJ tjt t d}tj| |d}|j
|sJ | g ksJ t ddg} tj| t	 d}tjddgt	 d}||s/J | ddgks:J d S )Nr   r   r   r   r   r   )r  
value_typerI  T)r  r/  r  z4The 'ordered' flag of the passed categorical values r  FrE  )r6   r  r  r8   rg   rE   rK   rZ  r   rl  rd   rP   r  r   r   r   r  r  r  )rX  typr`   r  r[   r)   r)   r/   *test_dictionary_from_pandas_specified_typei  sJ    
r1  c                  C   s   t tjt dk rtd tjdg didd} | d} t| d j	j
}t| d j	jj}t|tjs9J tj| d }tj||}||ksNJ d S )Nz1.3.0z:PyArrow backed string data type introduced in pandas 1.3.0r.   r   r5  r   zstring[pyarrow]r   r   )r   r6   r/  r   r0  r7   r  rK   rg   rX  codesr  rv   r   rB  rN   r   r   )rZ   r#  rZ  r[   r`   r)   r)   r/   :test_convert_categories_to_array_with_string_pyarrow_dtype  s   

r4  c                  C   s(  t dt jg dddi} t| }tg dt }|d d|s)J t	dt
 fg}tj| |d}tg dt
 }|d d|sPJ t| d }||s^J tj| d t
 d}||spJ t| d j}||sJ tj| d jt
 d}||sJ d S )Nr   r  Int64r   r   rJ  rI  )r6   r7   rh   rK   r_   rg   r   r  rP   r@   r   rv   )rZ   r`   r[   r@   r  r)   r)   r/   test_array_protocol  s    
r6  c                       s0   e Zd Z fddZdd Zedd Z  ZS )DummyExtensionTypec                       t  t d d S )Nz,pyarrow.tests.test_pandas.DummyExtensionTypesuper__init__rK   r   r+  	__class__r)   r/   r;       zDummyExtensionType.__init__c                 C      dS Nr  r)   r+  r)   r)   r/   __arrow_ext_serialize__     z*DummyExtensionType.__arrow_ext_serialize__c                 C   s"   |dksJ |t  ksJ |  S r@  )rK   r   )clsstorage_type
serializedr)   r)   r/   __arrow_ext_deserialize__  s   z,DummyExtensionType.__arrow_ext_deserialize__)r  r  r  r;  rA  classmethodrF  __classcell__r)   r)   r<  r/   r7    s
    r7  c                 C   s&   t jg dt  d}t jt |S )Nr   rI  )rK   rg   r   ExtensionArrayfrom_storager7  )r   rd   storager)   r)   r/   PandasArray__arrow_array__  s   rL  c                 C   s   t jg dt  d}t jt |}| jtjj	dt
dd | jtjjdt
dd tjdddd	jtd
djfD ]C}t |}||sGJ t t|}||sVJ t t|}||seJ t td|idd}||s|J q9d S )Nr   rI  __arrow_array__F)raising
2012-01-01r   Dr  r   r   r   r   )rK   rg   r   rI  rJ  r7  setattrr6   rn  PeriodArrayrL  IntervalArrayr  r  rP   rh   r   r_   r7   r  r  )monkeypatchrK  r[   rm   r`   r)   r)   r/   *test_array_protocol_pandas_extension_types  s(   
 rU  c                 C   s   t |tjr	|}n|d}| }tj|d dd|j|jt|  }|d }|d urAtj	
t t|d |g}t|}n	tjt|td}tjj| | dd}|S )Nr   r  r   r   F)ru   )r   rK   rB  r  buffersr8   
frombufferoffsetr   BooleanArrayfrom_buffersr  r  r  r    r6   rn  IntegerArrayru   )r   rg   rm   buflistr   bitmaskro   int_arrr)   r)   r/   _Int64Dtype__from_arrow__   s    
r_  c                 C   sZ  t g dt jg dddg dd}t|}| }t|jd jj	t
	dks-J t|jd	 jj	t  ks<J t|| t d
t jg dddi}t|}| }t|jd jj	t  kshJ t|| tt jtdk r| t jjjjd n
| t jjjjd | }tt|jd	ksJ t|jd jj	t
	dksJ d S )Nr   rH  r5  r   )r   r   r   rV  r   r   r   r   r  	1.3.0.dev__from_arrow__)r6   r7   rg   rK   r_   rO   r  r  rv   r   r8   
Int64DtyperX   rY   r   r/  delattrcorern  integer_IntegerDtypeNumericDtyper   )rT  rZ   r_   r`   r   r  r)   r)   r/   test_convert_to_extension_array  s2   
 
$rh  c                       s,   e Zd Z fddZdd Zdd Z  ZS )MyCustomIntegerTypec                    r8  )Nz-pyarrow.tests.test_pandas.MyCustomIntegerTyper9  r+  r<  r)   r/   r;  ;  r>  zMyCustomIntegerType.__init__c                 C   r?  r@  r)   r+  r)   r)   r/   rA  ?  rB  z+MyCustomIntegerType.__arrow_ext_serialize__c                 C   s   t  S rq  )r6   rb  r+  r)   r)   r/   r`  B  s   z#MyCustomIntegerType.to_pandas_dtype)r  r  r  r;  rA  r`  rH  r)   r)   r<  r/   ri  9  s    ri  c                 C   sz  t g dt  }t jt |}t d|i}| }t|j	d j
jt ks,J tjg ddd}t|| | }t|j	d j
jt ksNJ tdtjg dddi}t|| ttjtdk rv| tjjjjd n
| tjjjjd | }t|j	d j
jtdksJ tg d}t|| tt |  W d    d S 1 sw   Y  d S )	Nr   r   r   r5  r   r`  ra  r   )rK   rg   r   rI  rJ  ri  r_   rO   r  r  rv   r   r6   rb  rh   rX   ri   r7   rY   r   r/  rc  rd  rn  re  rf  rg  r8   r   r  r  )rT  rK  rm   r_   r`   r[   r)   r)   r/   /test_conversion_extensiontype_to_extensionarrayF  s2    
"rj  c               	   C   s4  t dt g dt  i} |  }|d jtdksJ | jt  t ij	d}t
|d jtjs7J t dt g dt  i} | jt  t ij	d}|d jtdks_J t tdtjg dddi} |  }t
|d jtjsJ | jt  tdij	d}t
|d jtjsJ d S )	Nr   r   r   types_mapperr   r5  r   rP  )rK   r_   rg   r   rO   r   r8   r6   rb  r  r   r   r7   PeriodDtype)r_   r`   r)   r)   r/   'test_to_pandas_extension_dtypes_mappingj  s   "rn  c                  C   s   t tjt dk rtd ttjdt ddtjdt	 ddg} t
| }ttd| g}tddt	d	d
iddd d
igd|i}tjj||d}|jtj
d}tj|| d S )Nz1.5.2zTest relies on pd.ArrowDtyper5  Fr  rB  Tr   r   )r5  rB  rJ  rk  )r   r6   r/  r   r0  rK   rV  r   r  r   
ArrowDtyper@   r7   r8   r  rM   rN   rO   r  rY   )rB  pd_typer@   df0r_   r  r)   r)   r/   4test_to_pandas_extension_dtypes_mapping_complex_type  s&   


rr  c                  C   s   t tjt dk rtd tjddddjtddjfD ],} t| 	 }t
| }t|| td	| id	 	 }tj
| d	d
}t|| qd S )Nz1.1z'ExtensionDtype to_pandas method missingrO  r   rP  r  r   r   ra   re   )r   r6   r/  r   r0  r  rg   r  rK   rO   rh   rX   ri   r_   )rm   r`   r[   r)   r)   r/   test_array_to_pandas  s   

rs  c               	   C   s   t jt jdddd} t| }tt jtdkr%t|	 j
| j
 d S t|	 j
t jdddddddddgd	d
 d S )Nr   r   )r  endr   z1.0r   )r  r  r2   rE   r   )r6   r7   r  rK   r_   r   r/  rX   assert_index_equalrO   r   r   )rZ   r_   r)   r)   r/   5test_roundtrip_empty_table_with_extension_dtype_index  s   
rv  r   r   r   c                 C   s~   t tjt dk rtd tjddgddgddgd	tt d
	| }|
 }t|}|jtjd}t|| d S )Nz1.5.0zArrowDtype missingr   r2   r   r   r   r   rV  r   rk  )r   r6   r/  r   r0  r7   ro  rK   r   r   ru   r_   rO   rX   rY   )r   rZ   r[   r_   r`   r)   r)   r/   !test_to_pandas_types_mapper_index  s   

rw  c                  C   s   t tjt dk rtd tg dt } t t ij	}| j
|d}|jt ks0J t d ij	}| j
|d}|jtdksGJ t t ij	}| j
|d}|jtdks`J d S Nz1.2.0z$Float64Dtype extension dtype missingr   rk  r   )r   r6   r/  r   r0  rK   rg   r   rb  r  rO   r   r8   r   Float64Dtyper   rl  r`   r)   r)   r/   !test_array_to_pandas_types_mapper  s   
r{  c                  C   s   t tjt dk rtd ttg dt g} t	| tj
s$J t t ij}| j|d}|jt ks<J t d ij}| j|d}|jtdksSJ t t ij}| j|d}|jtdkslJ d S rx  )r   r6   r/  r   r0  rK   rA  rg   r   r   r  rb  r  rO   r   r8   r   ry  rz  r)   r)   r/   )test_chunked_array_to_pandas_types_mapper  s   
r|  c                  C   s|  g d} g d}t j| dd}t j|dd}t jg ddd}d}d}tjd	| itjd
ddddd}t jj||gd	dgd}|dt	dgd d ddddidgd	d	ddd dddddd dgddi}|
 }	t|	| tjd| itjd
ddddd}
t jj||gd|gd}|dt	|gd d ddddidgd	d	ddd dd|ddd dgddi}|
 }t||
 tjd	| itjd
ddd dd}t jj||gd	|gd}|dt	|gd d ddddidgd	d	ddd dd |ddd dgddi}|
 }t|| tjd	| itjd
dddd|gd}t jj|||gd	d|gd}|dt	d|gd d ddddidgd	d	ddd dddddd dd |ddd dgddi}|
 }t|| tjd	| itjd
ddd d|gd}t jj|||gd	||gd}|dt	||gd d ddddidgd	d	ddd dd |ddd dd |ddd dgddi}|
 }t|| d S )N)r   r5  NrB  )r   r   r   r   r  rI  r  r   r   __index_level_1__r   r   r   r2   r  r   r   r      pandasr  rE   r  r  )rf   r   r   r  r  z0.23.4)r   r   rQ   rt  )rK   rg   r6   r7   r   rM   r   replace_schema_metadatajsondumpsrO   rX   rY   )a_valuesb_valuesa_arrowb_arrowrng_index_arrow
gen_name_0
gen_name_1e1r  r1e2r  r2e3t3r3e4t4r4e5t5r5r)   r)   r/   )test_metadata_compat_range_index_pre_0_12  s  


r  c                  C   s   g d} g d}t j| dd}t j|dd}tj| |dtjddd	d
dd}t ||d}|dtd d d dddgd ddddd ddddgdd
dd	ddgddi}|	 }t
|| d S )Nr   )r   r   r   r{  r   rI  r  r  r   r   r2   r  r   r   r~  rE   zmixed-integer)r   r  rf   r  r   r   )r  rf   r  r   r   r  r<   )kindrf   r  r   r  z0.25.0)r   rQ   r   rt  )rK   rg   r6   r7   r   r_   r  r  r  rO   rX   rY   )r  r  r  r  r[   r_   r`   r)   r)   r/   'test_metadata_compat_missing_field_name  sV   r  c                  C   sL   t d} ttjtjdd| dd}|jj}|d d d dks$J d S )	Nr   r   r   re   r   r   rf   6)	r8   r   rK   r_   r6   r7   r   r@   r   rf   r_   r  r)   r)   r/   .test_metadata_index_name_not_json_serializable  s   
r  c                  C   sF   d} t tjtjdd| dd}|jj}|d d d dks!J d S )Nr   r   r   re   r   r   rf   )rK   r_   r6   r7   r   r@   r   r  r)   r)   r/   -test_metadata_index_name_is_json_serializable  s   r  c               
   C   s   t tddtddtddtddgtddtddtddtddgd	} | d
 d| d
< | jj| jjftdtdfksMJ | S )Nz0001-01-01 00:00r  z2012-05-02 12:35z2012-05-03 15:42z3000-05-03 15:42z1991-01-01 00:00rw  z2050-05-03 15:42)
dateTimeMs
dateTimeNsr  rE   r  zM8[ns])r6   r7   r8   r  r  r  r   r  r8  r)   r)   r/   make_df_with_timestamps  s"   








r  z)ignore:Parquet format '2.0':FutureWarningc                 C   sP   t  }tj|}| d }tj||dd t|}|jdd}t	|| d S )Nztimestamps_from_pandas.parquetz2.0)versionTtimestamp_as_object)
r  rK   rM   rN   pqwrite_table
read_tablerO   rX   rY   )tempdirrZ   r_   filenamer`   r   r)   r)   r/    test_timestamp_as_object_parquet  s   
r  c                  C   s.   t  } tj| }|jdd}t| | d S )NTr  )r  rK   rM   rN   rO   rX   rY   )rZ   r_   r   r)   r)   r/   %test_timestamp_as_object_out_of_range  s   r  
resolutionr  r   r  r|  i  i  c                 C   s   t j|gt j| |dd}t d|i}|jdd|jddd fD ]9}|jtks+J t|d ts4J |rH|d j	d us?J |d j	
|}n|d j	d u sQJ |}|d |ks[J q"d S )Nry  rI  r   Tr  r   )rK   rg   rz  r_   rO   r   rE   r   r   r$  fromutc)r  r   r|  rm   r_   r`   r[   r)   r)   r/   'test_timestamp_as_object_non_nanosecond  s   
r  c               	   C   sl   t d} dd l}| d}||ddddd}td	t|gi}|jd
d}t||ks4J d S )Nr   r   x   i  r   r  rf  9   timestamp_colTr  )	r   r%  r   r'  localizerK   r_   rg   rO   )r   r   r   r|  r_   r`   r)   r)   r/   %test_timestamp_as_object_fixed_offset3  s   

r  c                   C   s   t d d S )Nzpandas_threaded_import.py)r   r)   r)   r)   r/   test_threaded_pandas_import?  s   r  c                  C   s^   t d} t t j| ksJ tdt  gi}tj|}|  t t j| ks-J d S )Nm8r   )	r8   r   r  r6   r7   rK   rM   rN   rO   )r[   rZ   r   r)   r)   r/   $test_does_not_mutate_timedelta_dtypeD  s   
r  c                  C   sf   ddl m}  d| dddig}| ddd	d
g}t||d}| }|d d  |d ks1J d S )Nr   )r   timedelta_1r  r   )r  r  r   (   r!  )r-  r  r  )r  timedelta_2r  )r   r   rK   r_   rO   to_pytimedelta)r   r  r  r_   rZ   r)   r)   r/   %test_does_not_mutate_timedelta_nestedP  s    r  c                  C   sP  t t dt t t  t t dt  gg} t jdggd dddifgddd ifdddifgggg| d	}t	
ddggd dddifgddd ifdddifgggi}t	
dd
d igd dddiidd iddidggi}| }|jdd}t|| t|| t jj|| d	}||sJ t jj|| d	}||sJ d S )Nr   r   )r   Nr2   s   abcr   r   s   defrJ  r   r  strictmaps_as_pydicts)rK   r@   r   rK  r  r   rV  r  r_   r6   r7   rO   rX   rY   rM   rN   rP   )r@   r_   expected_default_dfexpected_as_pydicts_df
default_dfas_pydicts_dftable_default_roundtriptable_as_pydicts_roundtripr)   r)   r/   ,test_roundtrip_nested_map_table_with_pydicts]  sJ   "r  c               	      s  t ddg} t g d}t g t  }t ddgddggt t  }t g ddd	gd
dggt t  }t g t t  }t jddg| |}t jg d||}t jddg||}t t jddg|dt jddg|ddt jddg|dg}	|		 }
t
dddgfdddgfggdd
dgfggg g}|	j	dd}t
ddgddgdgdd
dgigg g}|	dd}|	 }t
dd
dgfggg g}|j	dd}t
dd
dgigg g}t ' tddt t|
| t|| t|| t|| W d   n	1 sw   Y  t t t  t t   dt
jddf fdd}||
|	 |||	 ||| ||| dS )z=
    Slightly more robust test with chunking and slicing
    r   r5  )rB  r  r  r  r   r   r   r{  Nr  r  r  r   r2   )r   r   r   r   r  r  r  r   r5  r   rF   rG   r>  returnc                    s4   t t jj|  d}|jdd ||sJ d S )NrI  Tr  )rK   rA  rB  rN   r  rP   )r>  r   array_roundtripr  r)   r/   assert_roundtrip  s   zMtest_roundtrip_nested_map_array_with_pydicts_sliced.<locals>.assert_roundtrip)rK   rg   rl  rK  r  r   rA  r  r  rO   r6   rh   rT   rU   rV   rW   rX   ri   r  )keys_1keys_2keys_3items_1items_2items_3map_chunk_1map_chunk_2map_chunk_3rA  series_defaultexpected_series_defaultseries_pydictsexpected_series_pydictsslicedseries_default_slicedexpected_series_default_slicedseries_pydicts_slicedexpected_series_pydicts_slicedr  r)   r  r/   3test_roundtrip_nested_map_array_with_pydicts_sliced  sz   
 


r  c                  C   s6  t g d} t ddgddgddggt t  }dd	g}t j|| |}t t  t t  }tt j	j
 |jd
d W d    n1 sLw   Y  |jdd}tddgddgdg}|t jj||drqJ | }tdddgfdddgfdddgfgg}|t jj||dsJ t|t|ksJ t||D ]2\}	}
t|	t|
ksJ t|	 |
 D ]\}}|d |d ksJ t|d |d sJ qqt|t|ksJ t||D ]0\}	}
t|	t|
ksJ t|	|
D ]\}}|d |d ks
J t|d |d sJ qqd S )Nr2  r   r   r   r{  r   r)  r   r   r  r  lossyr  rI  r   r5  r   )rK   rg   rK  rl  r  r   r  r   r  r*  ArrowExceptionrO   r6   rh   rP   rB  rN   r   r  r  r8   array_equal)rm  r  r  mapsr  r  r  r  r  row1row2tup1tup2r)   r)   r/   4test_roundtrip_map_array_with_pydicts_duplicate_keys  sH    r  c            
   	   C   s\  t ddgddgg dgd dgddggt t  } t g d	}g d
}t j|| |}tt |j	dd W d    n1 sCw   Y  |	 }t
ddgdfddgdfgg dfdgdfd dgdfddgdfgg}t|t|ksxJ t||D ].\}}t|t|ksJ t||D ]\}}	t|d |	d sJ |d |	d ksJ qq}d S )Nr   r   r   r{  r  r  r  r  )r   r5  rB  r  r  r  )r   r2   r   r  r  r   r5  rB  r  r  r  r   r   )rK   rg   rK  rl  r  r   r   r  rW  rO   r6   rh   r   r  r8   r  )
rm  r  r  r  r>  r  r  r  r  r  r)   r)   r/   %test_unhashable_map_keys_with_pydicts  s.    $r  c                  C   s^   t jt jdddddd} tdt| i}|d}| }|jdks'J t	
||  d S )N2012r2   rW  rX  datetime_columnre   )r6   rh   r   rK   r_   rg   r  rO   rf   rX   ri   )r>  r_   	table_colr`   r)   r)   r/   )test_table_column_conversion_for_datetime-  s   
r  c                  C   s8   t t jdddd} t| }| }t||  d S )Nr  r2   rW  rX  )r6   rh   r   rK   rg   rO   rX   ri   )r>  rm   r`   r)   r)   r/   "test_array_conversion_for_datetime<  s   
r  c            	   
   C   s  ddd} dd }| t d|||gi d|i}| t d|||gi |g}| t d|||gi |g}| t d	|||gi d|i}| t d
|||gi d|i}tt ttdt fg}td|fg}| t d|||gi|d d S )Nc                 S   sN   t jj| |d}|jdd |dj}|dksJ t|jddd|  d S )NrJ  Tr  r   r   r  )r  r  )	rK   rM   rN   r  r  r  rX   rY   rO   )rZ   r@   tabr  r)   r)   r/   	roundtripN  s   
z-test_nested_chunking_valid.<locals>.roundtrip   0i T*r  struct_fieldr  r^  lossolr   r  rJ  rq  )	r6   r7   rK   r  rl  rK  rV  r  r@   )	r  r.   rV  r^  r  r  
map_of_losmap_typer@   r)   r)   r/   test_nested_chunking_validH  s&   



r  c                   C   s   t d d S )Nzarrow_39313.py)	test_utilr   r)   r)   r)   r/   !test_is_data_frame_race_conditiono  s   r  )r   )NFNTNFF)NNr=  rq  )r   N)r  r   r  multiprocessingrE  r  rT   collectionsr   r   r   r   r   r   
hypothesisr  hypothesis.strategies
strategiesr  r   numpyr8   numpy.testingr  rz   r   r  r  numpy.exceptionsImportErrorpyarrow.pandas_compatr	   r
   pyarrow.tests.utilr   r   r   pyarrow.tests.strategiestestsr  utilr  pyarrow.vendored.versionr   pyarrowrK   r   r  pandasr6   pandas.testingrX   pandas_examplesr   r   r  
pytestmarkr?   rb   rn   rx   r}   r~   r  r  r  r  r  r  r1  rI  r  r  r9  r;  r<  r  r  r  r  r  r  r  rn  pandas_compatible_typesr  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@  rG  r  rl  rK  r6  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r,  r-  r.  r1  r4  r6  ExtensionTyper7  rL  rU  r_  rh  ri  rj  rn  rr  rs  rv  rw  r{  r|  r  r  r  r  r  rV   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r  r  r)   r)   r)   r/   <module>   s  
    #  '

     	  [    u d<  	



Z%

















14$,5#$

 *3
	 
-N4!&